PageSourceSearch

https://www.voetbalshirtskoning.nl/

html voetbalshirtskoning.nl collected 2026-10-05 07:59:33 UTC 402,895 bytes, 5,626 lines download raw bytes

1<!doctype html>
2<html lang="nl">
3<head >
4    <meta charset="utf-8"/>
5<meta name="title" content="Goedkope Voetbalshirts - Voetbalshirtskoning.nl"/>
6<meta name="description" content="VoetbalshirtsKoning - Het Betaalbare Alternatief ✓Kids en Senior ✓Voor 22u besteld, morgen thuis ✓Barcelona, Real Madrid, Ajax en meer!"/>
7<meta name="robots" content="INDEX,FOLLOW"/>
8<meta name="viewport" content="width=device-width, initial-scale=1"/>
9<title>Goedkope Voetbalshirts - Voetbalshirtskoning.nl</title>
10        <link rel="stylesheet" type="text/css" media="all" href="https://www.voetbalshirtskoning.nl/static/version20261002143139/frontend/Vendic/voetbalshirtskoning/nl_NL/Anowave_Ec/css/ec.css" />
11<link rel="stylesheet" type="text/css" media="all" href="https://www.voetbalshirtskoning.nl/static/version20261002143139/frontend/Vendic/voetbalshirtskoning/nl_NL/css/styles.css" />
12<script type="text/javascript" src="https://www.voetbalshirtskoning.nl/static/version20261002143139/frontend/Vendic/voetbalshirtskoning/nl_NL/Bol_CheckoutViaBol/js/view/button.js"></script>
vendor: 1 bytes, line 12
12
13<script type="text/javascript" src="https://www.voetbalshirtskoning.nl/static/version20261002143139/frontend/Vendic/voetbalshirtskoning/nl_NL/Smile_ElasticsuiteTracker/js/tracking.js"></script>
13
14<link rel="canonical" href="https://www.voetbalshirtskoning.nl" />
15<link rel="icon" type="image/x-icon" href="https://www.voetbalshirtskoning.nl/media/favicon/default/favicon.ico" />
16<link rel="shortcut icon" type="image/x-icon" href="https://www.voetbalshirtskoning.nl/media/favicon/default/favicon.ico" />
17<meta name="google-site-verification" content="_d9RdZPEmSQINGH98is3As9B6nqoX4aZXjL_Nkc4Kus">
18<!--50d90768e93ab6bcbeecf5fa8a520642-->
19<meta name="msvalidate.01" content="61E1B93E916FAE8A20E7DBA6C8E5E362">
20
21<!-- Varify.io® code for Voetbalshirtkoning-->
22<script>
23  window.varify = window.varify || {};
24  window.varify.iid = 2414;
25</script>
vendor: 2 bytes, line 25
25
26<script src="https://app.varify.io/varify.js"></script>
26
27    <meta property="twitter:card" content="summary_large_image" />
28<meta property="twitter:title" content="Goedkope Voetbalshirts - Voetbalshirtskoning.nl" />
29<meta property="twitter:description" content="VoetbalshirtsKoning - Het Betaalbare Alternatief ✓Kids en Senior ✓Voor 22u besteld, morgen thuis ✓Barcelona, Real Madrid, Ajax en meer!" />
30<meta property="twitter:url" content="https://www.voetbalshirtskoning.nl/" />
31
32<meta property="og:type" content="website" />
33<meta property="og:title" content="Goedkope Voetbalshirts - Voetbalshirtskoning.nl" />
34<meta property="og:description" content="VoetbalshirtsKoning - Het Betaalbare Alternatief ✓Kids en Senior ✓Voor 22u besteld, morgen thuis ✓Barcelona, Real Madrid, Ajax en meer!" />
35<meta property="og:url" content="https://www.voetbalshirtskoning.nl/" />
36<meta property="og:locale" content="nl_NL" />
37<script data-ommit="true" nonce="NXM3aDNrNzgxOXZ1cmU2YmNoZjNkZjRndG9wcDhlb2M=">var AEC = (function(){return {add: function(context, dataLayer){let element = context, qty = 1, variants = [], variant = [], variant_attribute_option = [], items = [];document.querySelectorAll('input[name=qty]:checked, [name=qty]').forEach(element => {qty = element.value;});qty = Math.abs(qty);if (isNaN(qty)){qty = 1;}function closestForm(element) {while (element) {if (element.tagName === 'FORM') {return element;}element = element.parentElement;}return null;}const form = closestForm(context);if (form && typeof form.checkValidity === 'function') {if (!form.checkValidity()) {return true;}}if (!AEC.gtm()){if (element.dataset.click){AEC.Time.track(dataLayer, AEC.Const.TIMING_CATEGORY_ADD_TO_CART, element.dataset.name, element.dataset.category);(click => {new Function(click)();})(element.dataset.click);}return true;}if(element.dataset.configurable){document.querySelectorAll('[name^="super_attribute"]').forEach(attribute => {if (attribute.matches('select')){var name = attribute.getAttribute('name'), id = name.substring(name.indexOf('[') + 1, name.lastIndexOf(']'));if (attribute.selectedIndex){var option = attribute.options[attribute.selectedIndex];if (option){variants.push({id: id,option: option.label,text: option.text});}}}if (attribute.matches('input') && -1 != attribute.type.indexOf('radio')){if (attribute.parentNode.classList.contains('swatch-option-selected') || attribute.checked){Object.entries(AEC.SUPER).forEach(([key, super_attribute]) => {if (-1 != attribute.name.indexOf("super_attribute[" + super_attribute.id + "]")){let variant = {id: super_attribute.id,text:super_attribute.label,option: attribute.value};variants.push(variant);}});}}});/** * Colour Swatch support */if (!variants.length){Object.entries(AEC.SUPER).forEach(([key, attribute]) => {var swatch = document.querySelectorAll('div[attribute-code="' + attribute.code + '"], div[data-attribute-code="' + attribute.code + '"]');swatch.forEach(element => {let variant = {id: attribute.id,text:'',option: null};var select = element.querySelector('select');if (select){if (select.selectedIndex){var option = select.options[select.selectedIndex];if (option){variant.text = option.text;variant.option = option.value;}}}else {var span = element.querySelector('span.swatch-attribute-selected-option');if (span){variant.text = span.innerHTML;variant.option = span.parentNode.dataset.optionSelected;}}variants.push(variant);});});}if (!variants.length){AEC.EventDispatcher.trigger('ec.variants', variants);}var SUPER_SELECTED = [];for (var i = 0, l = variants.length; i < l; i++){for (var a = 0, b = AEC.SUPER.length; a < b; a++){if (AEC.SUPER[a].id == variants[i].id){var text = variants[i].text;if (AEC.useDefaultValues){AEC.SUPER[a].options.forEach(option => {if (parseInt(option.value_index) == parseInt(variants[i].option)){if (option.hasOwnProperty('admin_label')){text = option.admin_label;}else if (option.hasOwnProperty('store_label')){text = option.store_label;}}});}variant.push([AEC.SUPER[a].label,text].join(AEC.Const.VARIANT_DELIMITER_ATT));let tier_price = Number.parseFloat(element.dataset.price).toFixed(2);Object.entries(AEC.CONFIGURABLE_SIMPLES).forEach(([key, simple]) => {    if (simple.hasOwnProperty('configurations'))    {    Object.entries(simple.configurations).forEach(([key, configuration]) => {if (configuration.label === variants[i].option){let prices = [];Object.entries(simple.price_tier).forEach(([key, tier]) => {if (parseInt(qty) >= parseInt(tier.price_qty)){prices.push(Number.parseFloat(tier.price));}});if (prices.length){tier_price = prices.sort(function(a,b) { return a < b; }).pop();}}});    }});variant_attribute_option.push({attribute: variants[i].id,option: variants[i].option,price:tier_price});}}}if (!variant.length){if (element.dataset.click){AEC.Time.track(dataLayer, AEC.Const.TIMING_CATEGORY_ADD_TO_CART, element.dataset.name, element.dataset.category);(click => {new Function(click)();})(element.dataset.click);}return true;}}if (element.dataset.grouped){for (var u = 0, y = window.G.length; u < y; u++){let field = document.querySelector('[name="super_group[' + window.G[u].id + ']"]');if (field){(qty => {if (qty){let item = {'item_name': window.G[u].item_name,'item_id':     window.G[u].item_id,'price': window.G[u].price,'category': window.G[u].category,'item_brand':window.G[u].item_brand,'quantity': qty};Object.assign(item, item, AEC.GA4.transformCategories(element.dataset.category));items.push(item);}})(Math.abs(field.value));}}}else{let price = Number.parseFloat(element.dataset.price);if (element.dataset.hasOwnProperty('selection')){let selection = parseInt(element.dataset.selection);
37Object.entries(AEC.CONFIGURABLE_SIMPLES).forEach(([key, simple]) => {if (key == selection){if (simple.hasOwnProperty('price_tier')){Object.entries(simple.configurations).forEach(([key, configuration]) => {let prices = [];Object.entries(simple.price_tier).forEach(([key, tier]) => {if (parseInt(qty) >= parseInt(tier.price_qty)){prices.push(Number.parseFloat(tier.price));}});if (prices.length){price = prices.sort(function(a,b) { return a < b; }).pop();}});}}});}let item = {'item_name': element.dataset.name,'item_id':     1 === parseInt(element.dataset.useSimple) ? element.dataset.simpleId : element.dataset.id,'price': price,'item_brand':element.dataset.brand,'item_variant':variant.join(AEC.Const.VARIANT_DELIMITER),'variants':variants,'category':element.dataset.category,'quantity': qty,'currency':AEC.currencyCode,'google_business_vertical':element.dataset.googleBusinessVertical,'index': 0};Object.assign(item, item, AEC.GA4.transformCategories(element.dataset.category));items.push(item);}let value_combined = 0;for (var i = 0, l = items.length; i < l; i++){value_combined += (Number.parseFloat(items[i].price) * Number.parseInt(items[i].quantity));(function(item){Object.entries(AEC.parseJSON(element.dataset.attributes)).forEach(([key, value]) => {item[key] = value;});let options = [];Object.entries(AEC.parseJSON(element.dataset.options)).forEach(([key, name]) => {let option = document.querySelector('[name="options[' + key + ']"]'), value = null;if (!option){option = document.querySelector('[name="options[' + key + '][]"]');}switch(true){case option instanceof HTMLInputElement: case option instanceof HTMLTextAreaElement: value = option.value;break;case option instanceof HTMLSelectElement: value = option.options[option.selectedIndex].text;break;}if (value){options.push({ name: name, value: value });}});if (options.length){item['options'] = options;}})(items[i]);}var data = {'event':'add_to_cart','eventLabel': element.dataset.name,'ecommerce': {'currency': AEC.currencyCode,'value':value_combined,'item_list_id': element.dataset.list,'item_list_name': element.dataset.list,'items': items,'options': variant_attribute_option},'currentStore': element.dataset.store};if (AEC.useDefaultValues){data['currentStore'] = AEC.storeName;}/** * Notify listeners */this.EventDispatcher.trigger('ec.add.data', data);/** * Track event */AEC.CookieConsent.queue(() => {AEC.Cookie.add(data).push(dataLayer);/** * Track time  */AEC.Time.track(dataLayer, AEC.Const.TIMING_CATEGORY_ADD_TO_CART, element.dataset.name, element.dataset.category);}).process();/** * Save backreference */if (AEC.localStorage){(function(items){for (var i = 0, l = items.length; i < l; i++){AEC.Storage.reference().set({id: items[i].item_id,category: items[i].category});}})(items);}if (AEC.facebook){if ("function" === typeof fbq){(function(product, items, fbq){var content_ids = [], price = 0;for (var i = 0, l = items.length; i < l; i++){content_ids.push(items[i].item_id);price += parseFloat(items[i].price);}(function(callback){if (AEC.Const.COOKIE_DIRECTIVE){AEC.CookieConsent.queue(callback).process();}else {callback.apply(window,[]);}})((function(product, content_ids, price){return function(){if ('undefined' === typeof variants){variants = [];}fbq('track', 'AddToCart', {content_name: product,content_ids: content_ids,content_type: !variants.length ? 'product' : 'product_group',value: price,currency: AEC.currencyCode}, { eventID: AEC.UUID.generate({ event: 'AddToCart'})});};})(product, content_ids, price));})(element.dataset.name, items, fbq);}}if (AEC.tiktok){if ('undefined' !== typeof ttq){(function(product, items, ttq){var contents = [], price = 0;for (var i = 0, l = items.length; i < l; i++){contents.push({content_id: items[i].item_id,content_name: items[i].item_name,quantity: items[i].quantity,brand:     items[i].item_brand,price: items[i].price});price += parseFloat(items[i].price);}(function(callback){if (AEC.Const.COOKIE_DIRECTIVE){AEC.CookieConsent.queue(callback).process();}else {callback.apply(window,[]);}})((function(product, content_ids, price){return function(){AEC.TikTok.event('AddToCart', {contents: contents,content_type:'product',value: price,currency: AEC.currencyCode,}, { event_id: AEC.UUID.generate({ event: 'AddToCart'})});};})(product, contents, price));})(element.dataset.name, items, ttq);}}if (element.dataset.click){(click => {new Function(click)();})(element.dataset.click);}return true;},addSwatch: function(context,dataLayer){var element = context;if (window.jQuery) {  jQuery(document).on('ajax:addToCart', function(){var attributes = [];
37Object.entries(AEC.parseJSON(element.dataset.swatch)).forEach(([key, value]) => {attributes.push(value);});var option = document.querySelector('.swatch-option.selected');if (!option){let form = jQuery(element).parents('form:first');if (form){let selected = [];Object.entries(attributes).forEach(([key, value]) => {let e = form.find('input[name="super_attribute[' + value.attribute_id + ']"]');if (e.length > 0){if (e.get(0).dataset.hasOwnProperty('label')){let a = e.get(0).dataset.label;let b = value.attribute_label;selected.push([b,a].join(AEC.Const.VARIANT_DELIMITER_ATT));}else if(e.get(0).dataset.hasOwnProperty('attrName')){let a = e.get(0).value;let b = value.attribute_label;selected.push([b,a].join(AEC.Const.VARIANT_DELIMITER_ATT));}}});variant = [selected].join(AEC.Const.VARIANT_DELIMITER);}}else {variant = [[attributes[0].attribute_label, option.getAttribute('aria-label')].join(AEC.Const.VARIANT_DELIMITER_ATT)].join(AEC.Const.VARIANT_DELIMITER);}let item =  {'item_name': element.dataset.name,'item_id':     element.dataset.id,'price': element.dataset.price,'category': element.dataset.category,'item_brand':element.dataset.brand,'item_variant':variant,'item_list_name': element.dataset.list,'item_list_id': element.dataset.list,'quantity': 1,'index':element.dataset.position};Object.assign(item, item, AEC.GA4.transformCategories(element.dataset.category));/** * Track event */AEC.Cookie.add({'event': 'add_to_cart','currency':AEC.currencyCode,'eventLabel': element.dataset.name,'item_list_id': element.dataset.list,'item_list_name': element.dataset.list,'ecommerce': {'items': [item]},'currentStore': element.dataset.store}).push(dataLayer);/** * Track time  */AEC.Time.track(dataLayer, AEC.Const.TIMING_CATEGORY_ADD_TO_CART, element.dataset.name, element.dataset.category);});}return true;},click: function(context,dataLayer){var element = context;if (!AEC.gtm()){AEC.Time.track(dataLayer, AEC.Const.TIMING_CATEGORY_PRODUCT_CLICK, element.dataset.name, element.dataset.category);return true;}var item = {'item_name': element.dataset.name,'item_id': element.dataset.id,'price': element.dataset.price,'item_brand':element.dataset.brand,'quantity': element.dataset.quantity,'index':element.dataset.position,'category':element.dataset.category,'currency':AEC.currencyCode};Object.entries(AEC.parseJSON(element.dataset.attributes)).forEach(([key, value]) => {item[key] = value;});Object.assign(item, item, AEC.GA4.augmentCategories(item));var data = {'event': 'select_item','eventLabel': element.dataset.name,'item_list_id': element.dataset.list, 'item_list_name': element.dataset.list,'ecommerce': {'items': [item]},         'currentStore': element.dataset.store};/** * Push data */AEC.CookieConsent.queue(() => {AEC.Cookie.click(data).push(dataLayer);}).process();/** * Track time  */AEC.Time.track(dataLayer, AEC.Const.TIMING_CATEGORY_PRODUCT_CLICK, element.dataset.name, element.dataset.category);if (element.dataset.click){(click => {new Function(click)();})(element.dataset.click);}return true;},remove: function(context, dataLayer, event){var element = context;if (!AEC.gtm()){AEC.Time.track(dataLayer, AEC.Const.TIMING_CATEGORY_REMOVE_FROM_CART, element.dataset.name, element.dataset.category);}var item = {'item_name': element.dataset.name,'item_id': element.dataset.id,'price': parseFloat(element.dataset.price),'category': element.dataset.category,'item_brand':element.dataset.brand,'quantity': element.dataset.quantity,'currency': AEC.currencyCode};Object.entries(AEC.parseJSON(element.dataset.attributes)).forEach(([key, value]) => {item[key] = value;});Object.assign(item, item, AEC.GA4.augmentCategories(item));var data = {'event': 'remove_from_cart','eventLabel': element.dataset.name,'ecommerce': {'item_list_id':  element.dataset.list,'item_list_name':  element.dataset.list,'items': [item]}};AEC.EventDispatcher.trigger('ec.remove.data', data);let executor = element =>{let params = {action:null};if (element.dataset.hasOwnProperty('post')){params = AEC.parseJSON(element.dataset.post);}else if (element.dataset.hasOwnProperty('postAction')){params = AEC.parseJSON(element.dataset.postAction);}async function getFormKey() {if ('cookieStore' in window) {const cookie = await cookieStore.get('form_key');return cookie?.value || null;}const cookies = Object.fromEntries(document.cookie.split('; ').map(cookie => {const [name, value] = cookie.split('=');
37return [decodeURIComponent(name), decodeURIComponent(value)];}));return cookies['form_key'] || null;}getFormKey().then(formKey => {let form = document.createElement("form");form.setAttribute('method', 'post');form.setAttribute('action', params.action);if (params.hasOwnProperty('data')){params.data['form_key'] = formKey;Object.entries(params.data).forEach(([name, value]) => {let input = document.createElement('input');input.setAttribute('type', 'text');input.setAttribute('name',  name);input.setAttribute('value', value);form.append(input);});}document.querySelector("body").appendChild(form);form.submit();});};if (AEC.Message.confirm){if (typeof require !== "undefined" && typeof require === "function") {require(['Magento_Ui/js/modal/confirm'], function(confirmation) {confirmation({title: AEC.Message.confirmRemoveTitle,content: AEC.Message.confirmRemove,actions: {confirm: function(){/** * Track event */AEC.Cookie.remove(data).push(dataLayer);/** * Track time  */AEC.Time.track(dataLayer, AEC.Const.TIMING_CATEGORY_REMOVE_FROM_CART, element.dataset.name);/** * Execute standard data-post */executor(element);},cancel: function(){return false;},always: function(){return false;}}});});}else {if (typeof Alpine !== "undefined") {return true;}}}else {/** * Track event */AEC.Cookie.remove(data).push(dataLayer);/** * Track time  */AEC.Time.track(dataLayer, AEC.Const.TIMING_CATEGORY_REMOVE_FROM_CART, element.dataset.name);executor(element);}return false;},wishlist: function(context, dataLayer){var element = context;if (!AEC.gtm()){/** * Track time  */AEC.Time.track(dataLayer, AEC.Const.TIMING_CATEGORY_PRODUCT_WISHLIST, element.dataset.name,'Wishlist');return true;}let attributes = JSON.parse(element.dataset.eventAttributes);/** * Track event */AEC.Cookie.wishlist({event: element.dataset.event,eventLabel: element.dataset.eventLabel,ecommerce: {items: attributes.items}}).push(dataLayer);return true;},wishlistRemove: function(context, dataLayer){var element = context;if (!AEC.gtm()){/** * Track time  */AEC.Time.track(dataLayer, AEC.Const.TIMING_CATEGORY_PRODUCT_WISHLIST, element.dataset.name,'Wishlist');return true;}let attributes = JSON.parse(element.dataset.eventAttributes);/** * Track event */AEC.Cookie.wishlistRemove({event: element.dataset.event,eventLabel: element.dataset.eventLabel,ecommerce: {items: attributes.items}}).push(dataLayer);return true;},compare: function(context, dataLayer){var element = context;if (!AEC.gtm()){/** * Track time  */AEC.Time.track(dataLayer, AEC.Const.TIMING_CATEGORY_PRODUCT_COMPARE, element.dataset.name,'Compare');return true;}let attributes = JSON.parse(element.dataset.eventAttributes);AEC.Cookie.compare({event: element.dataset.event,eventLabel: element.dataset.eventLabel,ecommerce: {items: attributes.items}}).push(dataLayer);return true;},Bind: (function(){return {apply: function(parameters){/** * Merge persistent storage */AEC.Persist.merge();/** * Push private data */AEC.Cookie.pushPrivate();document.addEventListener('DOMContentLoaded',() => {document.body.addEventListener('catalogCategoryAddToCartRedirect', () => {dataLayer.push({event: AEC.Const.CATALOG_CATEGORY_ADD_TO_CART_REDIRECT_EVENT});});});if (parameters){if (parameters.performance){if (window.performance){window.onload = function(){setTimeout(function(){    var time = performance.timing.loadEventEnd - performance.timing.responseEnd;        var timePayload =     {    'event':'performance',    'performance':    {    'timingCategory':'Load times',    'timingVar':'load',    'timingValue': (time % 60000)    }    };        switch(window.google_tag_params.ecomm_pagetype)    {    case 'home':        timePayload.performance.timingLabel = 'Home';        AEC.CookieConsent.queue(() =>             {            dataLayer.push(timePayload);            }).process();        break;    case 'product':        timePayload.performance.timingLabel = 'Product';        AEC.CookieConsent.queue(() =>             {            dataLayer.push(timePayload);            }).process();        break;        case 'category':        timePayload.performance.timingLabel = 'Category';        AEC.CookieConsent.queue(() =>             {            dataLayer.push(timePayload);            }).process();        break;    }    }, 0);};}}}return this;}};})(),Time: (function(){var T = {event: 'trackTime',timingCategory:'',timingVar:'',timingValue:-1,timingLabel:''};var time = new Date().getTime();return {track: function(dataLayer, category, variable, label){T.timingValue = (new Date().getTime()) - time;if (category){T.timingCategory = category;}if (variable){T.timingVar = variable;}if (label){T.timingLabel = label;}dataLayer.push(T);},trackContinue: function(dataLayer, category, variable, label){this.track(dataLayer, category, variable, label);time = new Date().getTime();}};})(),Persist:(function(){var DATA_KEY = 'persist'; var proto = 'undefined' != typeof Storage ? {push: function(key, entity){/** * Get data */var data = this.data();/** * Push data */data[key] = entity;/** * Save to local storage */localStorage.setItem(DATA_KEY, JSON.stringify(data));return this;},data: function(){var data = localStorage.getItem(DATA_KEY);if (null !== data){return JSON.parse(data);}return {};},merge: function(){var data = this.data();var push = {persist: {}};for (var i in data){push.persist[i] = data[i];}dataLayer.push(push);return this;},clear: function(){/** * Reset private local storage */localStorage.setItem(DATA_KEY,JSON.stringify({}));return this;}} : {push: function(){}, merge: function(){},clear: function(){}};/** * Constants */proto.CONST_KEY_PROMOTION = 'persist_promotion';return proto;})(),Checkout: (function(){return {init: false,data: {},tracked: {},getData: function(){return this.data;},getPayload: function(){if (this.data && this.data.hasOwnProperty('payload')){return this.data.payload;}return {error: 'Missing checkout payload data'};},step: function(previous, current, currentCode){if (!this.init){return this.fail('Step tracking requires a checkout page.');}if (this.data && this.data.hasOwnProperty('ecommerce')){this.data.ecommerce['step'] = ++current;/** * Notify listeners */AEC.EventDispatcher.trigger('ec.checkout.step.data', this.data);/** * Track checkout step */AEC.Cookie.checkout(this.data).push(dataLayer);}return this;},stepOption: function(step, option){if (!option){return this;}if (!this.init){return this.fail('Step option tracking requires a checkout page.');}if (!option.toString().length){return this;}
37var data = {    'event': 'checkoutOption',    'ecommerce':     {    'checkout_option':     {    'actionField':     {    'step': step,    'option': option    }    }    }        };/** * Notify listeners */AEC.EventDispatcher.trigger('ec.checkout.step.option.data', data);/** * Track checkout option */AEC.CookieConsent.queue(() => {AEC.Cookie.checkoutOption(data).push(dataLayer);}).process();return this;},fail: function(message){console.log(message);return this;}};})(),Cookie: (function(){return {data: null,privateData: null,reset: function(){if (AEC.reset){dataLayer.push({ ecommerce: null });}return dataLayer;},push: function(dataLayer, consent){consent = typeof consent !== 'undefined' ? consent : true;if (this.data){this.reset().push(this.data);/** * Reset data to prevent further push */this.data = null;}return this;},pushPrivate: function(){var data = this.getPrivateData();if (data){dataLayer.push({privateData: data});}return this;},augment: function(products){/** * Parse data & apply local reference */var reference = AEC.Storage.reference().get();if (reference){for (var i = 0, l = products.length; i < l; i++){for (var a = 0, b = reference.length; a < b; a++){if (products[i].item_id.toString().toLowerCase() === reference[a].id.toString().toLowerCase()){products[i].category = reference[a].category;}}}}products.forEach(product => {if (product.hasOwnProperty('category')){let categories = product.category.split(/\//);if (categories.length){let index = 2;categories.forEach(category => {product['item_category' + index] = category;});}}});return products;},click: function(data){AEC.EventDispatcher.trigger('ec.cookie.click.data', data);this.data = data;return this;},add: function(data){AEC.EventDispatcher.trigger('ec.cookie.add.data', data);this.data = data;return this;},remove: function(data){AEC.EventDispatcher.trigger('ec.cookie.remove.item.data', data);this.data = data;if (AEC.localStorage){this.data.ecommerce.items = this.augment(this.data.ecommerce.items);}return this;},compare: function(data){AEC.EventDispatcher.trigger('ec.cookie.compare.data', data);this.data = data;return this;},wishlist: function(data){AEC.EventDispatcher.trigger('ec.cookie.wishlist.data', data);this.data = data;return this;},wishlistRemove: function(data){AEC.EventDispatcher.trigger('ec.cookie.wishlist.remove.data', data);this.data = data;return this;},update: function(data){AEC.EventDispatcher.trigger('ec.cookie.update.item.data', data);this.data = data;return this;},visitor: function(data){AEC.EventDispatcher.trigger('ec.cookie.visitor.data', data);this.data = (function(data, privateData){if (privateData){if (privateData.hasOwnProperty('visitor')){data.visitorId    = privateData.visitor.visitorId;data.visitorLoginState = privateData.visitor.visitorLoginState;}}return data;})(data, AEC.Cookie.getPrivateData());return this;},detail: function(data){AEC.EventDispatcher.trigger('ec.cookie.detail.data', data);this.data = data;return this;},purchase: function(data){AEC.EventDispatcher.trigger('ec.cookie.purchase.data', data);this.data = data;if (AEC.localStorage){this.data.ecommerce.purchase.items = this.augment(this.data.ecommerce.purchase.items);}return this;},impressions: function(data){AEC.EventDispatcher.trigger('ec.cookie.impression.data', data);this.data = data;return this;},checkout: function(data){AEC.EventDispatcher.trigger('ec.cookie.checkout.step.data', data);this.data = data;if (AEC.localStorage){this.data.ecommerce.items = this.augment(this.data.ecommerce.items);}return this;},checkoutOption: function(data){AEC.EventDispatcher.trigger('ec.cookie.checkout.step.option.data', data);this.data = data;return this;},promotion: function(data){AEC.EventDispatcher.trigger('ec.cookie.promotion.data', data);this.data = data;return this;},promotionClick: function(data, element){AEC.EventDispatcher.trigger('ec.cookie.promotion.click', data,    {element: element   });this.data = data;return this;},remarketing: function(data){AEC.EventDispatcher.trigger('ec.cookie.remarketing.data', data);this.data = data;return this;},getPrivateData: function(){if (!this.privateData){var cookie = this.get('privateData');if (cookie){this.privateData = this.parse(cookie);}}return this.privateData;},set: function(name, value, days){if (!days){days = 30;} let date = new Date();                        date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));        document.cookie = name + "=" + encodeURIComponent(value) + "; expires=" + date.toGMTString() + "; path=/; domain=" + AEC.Const.COOKIE_DOMAIN;                return this;},get: function(name){var start = document.cookie.indexOf(name + "="), len = start + name.length + 1;if ((!start) && (name != document.cookie.substring(0, name.length))) {    return null;}if (start == -1) {return null;}var end = document.cookie.indexOf(String.fromCharCode(59), len);if (end == -1) {end = document.cookie.length;}return decodeURIComponent(document.cookie.substring(len, end));},unset: function(name) {                   document.cookie = name + "=" + "; path=/; expires=" + (new Date(0)).toUTCString();                                return this;            },parse: function(json){var json = decodeURIComponent(json.replace(/\+/g, ' '));                return JSON.parse(json);}};})(),CookieConsent: (function(){return {scripts: [],chain: {},endpoints:{},cookies: {},consent: [],config: {},nonce: {},widget: {display: false,color: 'rgba(0,0,0,1)',colorEnd: 'rgba(0,0,0,1)'},queue: function(callback, event){event = typeof event !== 'undefined' ? event : AEC.Const.COOKIE_DIRECTIVE_CONSENT_GRANTED_EVENT;if (!this.chain.hasOwnProperty(event)){this.chain[event] = [];}switch(AEC.Const.COOKIE_DIRECTIVE_ENGINE){case 4:callback = (callback => {return function(){/** * Chnage to dispatch event only when Onetrust is loaded */if (false){if ('undefined' !== typeof OneTrust){OneTrust.OnConsentChanged(() => {callback.apply(this);});if (window.OnetrustActiveGroups){let groups = window.OptanonActiveGroups.split(',').filter(String);
37if (groups.includes('C0001','C0002','C0003','C0004','C0005')){callback.apply(this);}}}}else {callback.apply(this);}}})(callback);break;}this.chain[event].push(callback);return this;},dispatch: function(consent){/** * Essential cookies */AEC.Const.COOKIE_DIRECTIVE_CONSENT_GRANTED = true;/** * Push consent to dataLayer */dataLayer.push(consent);return this.process(consent.event);},process: function(event){event = typeof event !== 'undefined' ? event : AEC.Const.COOKIE_DIRECTIVE_CONSENT_GRANTED_EVENT;if (this.getConsent(event)){this.dequeue(event);}else if (AEC.Const.COOKIE_DIRECTIVE_OVERRIDE_DECLINE){this.dequeue(event);}else {if (4 === AEC.Const.COOKIE_DIRECTIVE_ENGINE){/** * Chnage to dispatch event only when Onetrust is loaded */if (false){(event => {window.addEventListener('onetrust_loaded', e => {if (this.getConsent(event)){this.dequeue(event);}});})(event);}else {this.dequeue(event);}}}return this;},dequeue: function(event){if (this.chain.hasOwnProperty(event)){try {let response;this.chain[event].forEach(fn => {response = fn.apply(this,[]);});}catch (e){console.debug(e);}this.chain[event] = [];}return this;},getConsent: function(event){switch(AEC.Const.COOKIE_DIRECTIVE_ENGINE){case 0:if (!AEC.Const.COOKIE_DIRECTIVE){return true;}break;case 1: if (1 == AEC.Cookie.get(event)){return true;}if (this.consent.includes(event)){return true;}break;case 4:if (window.OnetrustActiveGroups){let groups = window.OptanonActiveGroups.split(',').filter(String);if (groups.includes('C0001','C0002','C0003','C0004','C0005')){return true;}}break;default: return true;}return false;},updateConsent: function(){(segments => {let grant = [];for (var i = 0, l = segments.length; i < l;i++){if (1 == AEC.Cookie.get(segments[i])){grant.push(segments[i]);}}if (grant.length){AEC.CookieConsent.acceptGoogleConsent(grant).getWidget();grant.forEach(segment => {AEC.CookieConsent.acceptConsent(segment);});}})(AEC.Const.COOKIE_DIRECTIVE_SEGMENT_MODE_EVENTS);return this;},acceptGoogleConsent: function(segments){if ('function' === typeof gtag){const consentMode = true === AEC.Const.COOKIE_DIRECTIVE_SEGMENT_MODE ? {ad_storage: -1 !== segments.indexOf('cookieConsentMarketingGranted')? 'granted' : 'denied',security_storage:-1 !== segments.indexOf('cookieConsentGranted')? 'granted' : 'denied',functionality_storage:-1 !== segments.indexOf('cookieConsentGranted')   ? 'granted' : 'denied',personalization_storage:-1 !== segments.indexOf('cookieConsentPreferencesGranted') ? 'granted' : 'denied',analytics_storage:-1 !== segments.indexOf('cookieConsentAnalyticsGranted')? 'granted' : 'denied',ad_user_data:    -1 !== segments.indexOf('cookieConsentUserdata')? 'granted' : 'denied',ad_personalization:    -1 !== segments.indexOf('cookieConsentPersonalization')? 'granted' : 'denied'} : {ad_storage: 'granted',security_storage:'granted',functionality_storage:'granted',personalization_storage:'granted',analytics_storage:'granted',ad_user_data:'granted',ad_personalization:'granted'};/** * Update consent */gtag('consent','update',consentMode);/** * Update localStorage */        localStorage.setItem('consentMode', JSON.stringify(consentMode));                /**         * Dispatch custom event         */        window.dispatchEvent(new CustomEvent("consent_accept", { detail: { consentMode: consentMode, segments: segments } }));}return this;},finish: function(){let segments = [];AEC.Const.COOKIE_DIRECTIVE_SEGMENT_MODE_EVENTS.forEach(segment => {if (this.getConsent(segment)){segments.push(segment);}});this.pickup({detail: {segments: segments}});},acceptConsent: function(event){return this.dispatch({ event:event });},declineConsent: function(event){return this.dispatch({ event:event });},declineGoogleConsent: function(){if ('function' === typeof gtag){const consentMode = {ad_storage: 'denied',security_storage:'denied',functionality_storage:'denied',personalization_storage:'denied',analytics_storage:'denied',ad_user_data:'denied',ad_personalization:'denied'};/** * Update consent */gtag('consent','update',consentMode);/** * Update localStorage */        localStorage.setItem('consentMode', JSON.stringify(consentMode));
37        /**         * Dispatch custom event         */        window.dispatchEvent(new CustomEvent("consent_decline",{ detail: { consentMode: consentMode } }));}return this;},setEndpoints: function(endpoints){this.endpoints = endpoints;return this;},getConsentDialog: function(dataLayer){if (1 == AEC.Cookie.get(AEC.Const.COOKIE_DIRECTIVE_CONSENT_DECLINE_EVENT)){AEC.CookieConsent.declineGoogleConsent([AEC.Const.COOKIE_DIRECTIVE_CONSENT_DECLINE_EVEN]).getWidget();return true;}if (1 != AEC.Cookie.get(AEC.Const.COOKIE_DIRECTIVE_CONSENT_GRANTED_EVENT)){this.renderConsentDialog(dataLayer);}else {AEC.CookieConsent.getWidget();}return this;},closeConsentDialog: function(directive){directive.remove();this.getWidget();return this;},renderConsentDialog: function(dataLayer){let template = document.querySelector('template[data-consent]');(endpoints => {var directive = (body => {body.insertAdjacentHTML('beforeend', template.innerHTML);return body.lastElementChild;})(document.body);let uuid = AEC.Cookie.get('cookieUuid');if (uuid){directive.querySelector('[data-consent-uuid').innerHTML = uuid;}let check_default = Number(directive.dataset.check);directive.querySelectorAll('input[type=checkbox][data-consent]').forEach(checkbox => {checkbox.checked = AEC.CookieConsent.getConsent(checkbox.dataset.consent) ? true : (!uuid && check_default ? true : false);});directive.querySelector('[data-consent-uuid-wrapper]').style.display = uuid ? 'block' : 'none';(directive => {let listener = event => {if (event.key === 'Escape')         {        AEC.CookieConsent.closeConsentDialog(directive).acquireProxyCookies();        }};document.addEventListener('keydown', event => {listener(event);document.removeEventListener('keydown', listener);});})(directive);directive.querySelectorAll('a.customize').forEach(element => {let customize = directive.querySelector('.ec-gtm-cookie-directive-customize');element.addEventListener('click', event => {if ('block' === customize.style.display){directive.querySelector('a.action.accept').style.display = 'none';customize.style.display = 'none';}else {directive.querySelector('a.action.accept').style.display = 'block';customize.style.display = 'block';}event.target.innerHTML = 'block' === customize.style.display ? event.target.dataset.hide : event.target.dataset.show;});});directive.querySelectorAll('a.ec-gtm-cookie-directive-note-toggle').forEach(element => {element.addEventListener('click', event => {if ('block' === event.target.nextElementSibling.style.display){event.target.nextElementSibling.style.display = 'none';}else {directive.querySelectorAll('.ec-gtm-cookie-directive-note').forEach(note => {note.previousElementSibling.innerHTML = note.previousElementSibling.dataset.show;note.style.display = 'none';});event.target.nextElementSibling.style.display = 'block';}event.target.innerHTML = 'block' === event.target.nextElementSibling.style.display ? event.target.dataset.hide : event.target.dataset.show;});});directive.querySelectorAll('a.accept').forEach(element => {element.addEventListener('click', event => {event.target.text = event.target.dataset.confirm;var grant = [...directive.querySelectorAll('[name="cookie[]"]:checked')].map(element => { return element.value });grant.unshift('cookieConsentGranted');AEC.CookieConsent.acceptGoogleConsent(grant);AEC.Request.post(endpoints.cookie, { cookie: grant }, response => {Object.keys(response).forEach(event => {AEC.CookieConsent.acceptConsent(event);});AEC.CookieConsent.closeConsentDialog(directive).acquireProxyCookies();});});});directive.querySelectorAll('a.accept-all').forEach(element => {element.addEventListener('click', event => {event.target.text = event.target.dataset.confirm;[...directive.querySelectorAll('[name="cookie[]"]')].forEach(element => {element.checked = true;});var grant = [...directive.querySelectorAll('[name="cookie[]"]:checked')].map(element => { return element.value });grant.unshift('cookieConsentGranted');AEC.CookieConsent.acceptGoogleConsent(grant);AEC.Request.post(endpoints.cookie, { cookie: grant }, response => {Object.keys(response).forEach(event => {AEC.CookieConsent.acceptConsent(event);});AEC.CookieConsent.closeConsentDialog(directive).acquireProxyCookies();});});});directive.querySelectorAll('a.decline').forEach(element => {element.addEventListener('click', event =>
37 {[...directive.querySelectorAll('[name="cookie[]"]')].forEach(element => {element.checked = false;});AEC.CookieConsent.declineGoogleConsent();AEC.Request.post(endpoints.cookie, { decline: true }, response => {Object.keys(response).forEach(event => {AEC.CookieConsent.declineConsent(event);});AEC.CookieConsent.closeConsentDialog(directive).acquireProxyCookies();});});});directive.querySelectorAll('a.close').forEach(element => {element.style.display = AEC.Const.COOKIE_DIRECTIVE_CONSENT_GRANTED ? 'block' : 'none';element.addEventListener('click', event => {AEC.CookieConsent.closeConsentDialog(directive).acquireProxyCookies();});});})(this.endpoints);return this;},acquireProxyCookies: function(){if (!this.config.acquire){return this;}const acquire = localStorage.getItem("acquire");if (!acquire){(context => {setTimeout(() => {const cookies = Object.fromEntries(document.cookie.split(';').map(s => s.trim()).filter(Boolean).map(pair => {const i = pair.indexOf('=');const k = i > -1 ? pair.slice(0, i) : pair;const v = i > -1 ? pair.slice(i + 1) : '';try { return [decodeURIComponent(k), decodeURIComponent(v)]; }catch { return [k, v]; }}));Object.entries(cookies).forEach(([name, value]) => {if (!context.cookies.hasOwnProperty(name)){context.cookies[name] = true;}});AEC.Request.post(context.endpoints.cookieConsent, { cookies: context.cookies }, response => {return true;});},1000);})(this);localStorage.setItem("acquire", true);}return this;},setProxy: function(){(context =>{new MutationObserver((mutations) => {mutations.forEach((mutation) => {[...mutation.addedNodes].forEach(node => {if (node.nodeType !== 1) {return;}if (node.matches('script') && node.dataset && node.dataset.hasOwnProperty('consent')) {context.scripts.push({script:  node,parent:  node.parentNode ? node.parentNode : document.head,segment: node.dataset.consent});[...node.attributes].forEach((attr) => {if (attr.name.startsWith('defer')) {node.removeAttribute(attr.name);}});node.remove();}});});}).observe(document.documentElement, { childList: true, subtree: true });})(this);    return this;},setReflect: function(fn, strategy){(function() {const proto = Document.prototype;const descriptor = Object.getOwnPropertyDescriptor(proto, "cookie");if (!descriptor || !descriptor.set) {console.warn("Cookie setter not found on Document.prototype");return;}Object.defineProperty(proto, "cookie", {configurable: true,enumerable: descriptor.enumerable,get: function() {return descriptor.get.call(this);},set: function(value) {try {const name = value.split("=")[0];window.dispatchEvent(new CustomEvent("captured_cookie", {detail: { cookie: { name, value } }}));} catch (e) {console.warn("Cookie observer error:", e);}return descriptor.set.call(this, value);}});})();if (1 == strategy){const originalSetAttribute = HTMLScriptElement.prototype.setAttribute;Object.defineProperties(HTMLScriptElement.prototype,{src: {set: function(value) {if (!AEC.CookieConsent.getConsent(AEC.Const.COOKIE_DIRECTIVE_CONSENT_GRANTED_EVENT) && !this.dataset.hasOwnProperty('materialize') && -1 === value.indexOf(BASE_URL)){this.setAttribute('type',   'text/template');this.setAttribute('data-consent', AEC.Const.COOKIE_DIRECTIVE_CONSENT_GRANTED_EVENT);}this.setAttribute('src', value);},get: function() {return this.getAttribute('src');}},setAttribute: {value: function(name, value) {if (name === 'src') {if (!AEC.CookieConsent.getConsent(AEC.Const.COOKIE_DIRECTIVE_CONSENT_GRANTED_EVENT) && !this.dataset.hasOwnProperty('materialize') && -1 === value.indexOf(BASE_URL)){this.setAttribute('type',   'text/template');this.setAttribute('data-consent', AEC.Const.COOKIE_DIRECTIVE_CONSENT_GRANTED_EVENT);}}return originalSetAttribute.call(this, name, value);},writable: true,configurable: true}});}window.addEventListener('captured_cookie', event => {this.cookies[event.detail.cookie.name] = event.detail.cookie.value;});fn.apply(this,[this]);},setAsses: function(asses){asses = asses || [];if (asses.length){setTimeout(() => {let cookies = Object.fromEntries(document.cookie.split('; ').map(c => c.split('=')));let result = [];
37Object.entries(cookies).forEach(([name, value]) => {if(!asses.includes(name)){result.push(name);}});let debug = document.createElement('div');Object.assign(debug.style, {position: 'fixed',width: '85%',maxWidth: '600px',bottom: '30px',left: '20px',padding: '20px',borderRadius: '2px',color: 'rgba(0,0,0,1)',background: 'rgba(255, 198, 75, 0.95)',dropShadow: '0px 0px 2px',zIndex: 9999});if (result.length){result.unshift('');result.unshift('We have identified the following cookies that might be set prior to consent.');}else {result.push('No NON-ESSENTIAL cookies found.');}result.push('');result.push('<small>Once done, remember to disable Test mode in Stores -> Configuration -> Anowave -> Cookie Consent Mode V2 -> Test Mode OR delete <strong>asses</strong> cookie manually.</small>');debug.innerHTML = result.join('<br />');document.body.appendChild(debug);},1000);}return this;},pickup: function(event){document.querySelectorAll('script[data-consent]').forEach(script => {let segment = script.dataset.consent;if (-1 != event.detail.segments.indexOf(segment)){delete script.dataset.consent;this.materialize(script, this.nonce, event.detail.segments);}});this.scripts.forEach(script => {if (-1 != event.detail.segments.indexOf(script.segment)){this.materialize(script.script, this.nonce, event.detail.segments);}});return this;},materialize: function(script, nonce, segments){let tag = document.createElement('script');tag.type = "text/javascript";tag.innerHTML = script.innerHTML;tag.dataset.materialize = true;if (script.getAttribute('src')){tag.src = script.src;}tag.setAttribute('nonce', nonce);if (script.parentNode){script.parentNode.appendChild(tag);script.parentNode.removeChild(script);}else {document.body.appendChild(tag);}},setNonce: function(nonce){this.nonce = nonce;return this;},setWidget: function(config){config = config || {};this.config = config;this.setAsses(config.asses).setProxy().setNonce(config.nonce).setEndpoints(config.endpoints);    (context =>     {    let block = {};        window.addEventListener('consent_accept', event =>     {context.consent = event.detail.segments;    context.pickup(event);new MutationObserver((mutations) => {mutations.forEach((mutation) => {[...mutation.addedNodes].forEach(node => {if (node.nodeType !== 1) {return;}if (node.matches('script') && -1 != node.type.indexOf('text/template')) {                        let segment = node.dataset.consent;if (-1 != event.detail.segments.indexOf(segment)){delete node.dataset.consent;context.materialize(node, this.nonce. event.detail.segments);}}});});}).observe(document.documentElement, { childList: true, subtree: true });    });    })(this);    this.widget = {...this.widget, ...config.options };return this;}
37,getWidget: function(){if (this.widget.display){let svg = (node => {return (text => {let styles = {position: 'fixed', bottom: '10px', left: '10px','z-index': '9999', cursor: 'pointer' };let style = Object.entries(styles).map(([key, value]) => {return [key,value].join(':');});let svg = node('svg', { id: 'consentWidget', width:52, height: 50, style: style.join(';') });let gradient = node('linearGradient', { id: 'gradient', gradientTransform: 'rotate(90)'});let filter = node('filter', { id: 'shadow' });[node('feDropShadow', { dx: '0',   dy: '0',  stdDeviation: '0.7','flood-opacity': 0.5 }),].forEach(element => {filter.appendChild(element);});            let count = parseInt(text);[node('stop', { offset: '0%',   'stop-color': this.widget.color }),node('stop', { offset: '100%', 'stop-color': this.widget.colorEnd })].forEach(element => {gradient.appendChild(element);});if (0){svg.appendChild(filter);}svg.appendChild(gradient);let transform = 'scale(1.5 1.5) translate(0 10)';[node('path', { id: 'a', d: 'M22.6004 0H7.40039C3.50039 0 0.400391 3.1 0.400391 7C0.400391 10.9 3.50039 14 7.40039 14H22.6004C26.5004 14 29.6004 10.9 29.6004 7C29.6004 3.1 26.4004 0 22.6004 0ZM1.60039 7C1.60039 3.8 4.20039 1.2 7.40039 1.2H17.3004L14.2004 12.8H7.40039C4.20039 12.8 1.60039 10.2 1.60039 7Z', filter: 'url(#shadow)', fill: 'url(#gradient)', transform: transform }),node('path', { id: 'b', d: 'M24.6012 4.0001C24.8012 4.2001 24.8012 4.6001 24.6012 4.8001L22.5012 7.0001L24.7012 9.2001C24.9012 9.4001 24.9012 9.8001 24.7012 10.0001C24.5012 10.2001 24.1012 10.2001 23.9012 10.0001L21.7012 7.8001L19.5012 10.0001C19.3012 10.2001 18.9012 10.2001 18.7012 10.0001C18.5012 9.8001 18.5012 9.4001 18.7012 9.2001L20.8012 7.0001L18.6012 4.8001C18.4012 4.6001 18.4012 4.2001 18.6012 4.0001C18.8012 3.8001 19.2012 3.8001 19.4012 4.0001L21.6012 6.2001L23.8012 4.0001C24.0012 3.8001 24.4012 3.8001 24.6012 4.0001Z',  fill: 'rgba(255,255,255,1)', transform: transform }),node('path', { id: 'c', d: 'M12.7 4.1002C12.9 4.3002 13 4.7002 12.8 4.9002L8.6 9.8002C8.5 9.9002 8.4 10.0002 8.3 10.0002C8.1 10.1002 7.8 10.1002 7.6 9.9002L5.4 7.7002C5.2 7.5002 5.2 7.
371002 5.4 6.9002C5.6 6.7002 6 6.7002 6.2 6.9002L8 8.6002L11.8 4.1002C12 3.9002 12.4 3.9002 12.7 4.1002Z', fill: 'url(#gradient)', transform: transform })].forEach(element => {svg.appendChild(element);});let loader = node('circle', { id: 'd', cx: 13, cy:25.5, r: 6, fill:'transparent', stroke:'url(#gradient)', 'stroke-width':2, 'stroke-dasharray':'60 40', 'stroke-dashoffset': 40, filter: 'url(#shadow)', style: 'display:none'  });[node('animateTransform', { attributeName: "transform",        attributeType:"XML",        type:"rotate",        dur:"1s",        from:"0 13 25.5",        to:"360 13 25.5",        repeatCount:"indefinite" })].forEach(element => {loader.appendChild(element);});svg.appendChild(loader);return svg;});})((n, v) => {  n = document.createElementNS("http://www.w3.org/2000/svg", n);    for (var p in v)   {  n.setAttributeNS(null, p, v[p]);  }    return n;});let widget = svg();/** * Remove widget */this.deleteWidget();/** * Add widget */document.body.appendChild(widget);/** * Render widget */document.body.querySelectorAll('[id=consentWidget]').forEach(element => {element.addEventListener('click', event => {AEC.CookieConsent.renderConsentDialog(dataLayer);});});return widget;}return null;},deleteWidget: function(){document.body.querySelectorAll('[id=consentWidget]').forEach(element => {element.parentNode.removeChild(element);});return this;},loader: (function(){return {show: function(){document.querySelectorAll('[id=c]').forEach(e => { e.style.display = 'none' });document.querySelectorAll('[id=d]').forEach(e => { e.style.display = 'block' });},hide: function(){document.querySelectorAll('[id=c]').forEach(e => { e.style.display = 'block' });document.querySelectorAll('[id=d]').forEach(e => { e.style.display = 'none' });}}})()}})(),Storage: (function(){return {set: function(property, value){if ('undefined' !== typeof(Storage)){localStorage.setItem(property, JSON.stringify(value));}return this;},get: function(property){if ('undefined' !== typeof(Storage)){return JSON.parse(localStorage.getItem(property));}return null;},reference: function(){return (function(storage){return {set: function(reference){var current = storage.get('category.add') || [];var exists = (function(current, reference){for (var i = 0, l = current.length; i < l; i++){if (current[i].id.toString().toLowerCase() === reference.id.toString().toLowerCase()){/** * Update category */current[i].category = reference.category;return true;}}return false;})(current, reference);if (!exists){current.push(reference);}storage.set('category.add', current);return this;},get: function(){return storage.get('category.add');}}})(this);}}})(),gtm: function(){if ("undefined" === typeof google_tag_manager){/** * Log error to console */console.log('Unable to detect Google Tag Manager. Please verify if GTM install snippet is available.');return false;}return true;},parseJSON: function(content){if ('object' === typeof content){return content;}if ('string' === typeof content){try {return JSON.parse(content);}catch (e){}}return {};}, getPayloadSize: function(object){var objects = [object], size = 0;    for (var index = 0; index < objects.length; index++)     {        switch (typeof objects[index])         {            case 'boolean':                size += 4;                break;            case 'number':                size += 8;                break;            case 'string':                size += 2 * objects[index].length;                break;            case 'object':                if (Object.prototype.toString.call(objects[index]) != '[object Array]')                 {                    for (var key in objects[index]) size += 2 * key.length;                }                for (var key in objects[index])                 {                    var processed = false;                                        for (var search = 0; search < objects.length; search++)                     {                        if (objects[search] === objects[index][key]) {                            processed = true;                            break;                        }                    }                    if (!processed) objects.push(objects[index][key]);                }        }    }    return size;},getPayloadChunks: function(arr, len){var chunks = [],i = 0, n = arr.length;while (i < n) {    chunks.push(arr.slice(i, i += len));};return chunks;},url: function(url){return [AEC.Const.URL, url].join('');},EventDispatcher: (function(){return {events: {},    on: function(event, callback)     {        var handlers = this.events[event] || [];                handlers.push(callback);                this.events[event] = handlers;    },    trigger: function()     {    /**     * Cast arguments to array     */    let args = [...arguments];        /**     * Get event     */    let event = args ? args.shift() : null;        /**     * Get handlers     */    let handlers = this.events[event] || [];        /**     * Get data     */    let data = args ? args.shift() : {};        /**     * Get options     */    let options = args ? args.shift() : {};    /**     * Quit if no handler     */        if (!handlers || handlers.length < 1)        {            return;        }                console.log(event + '(' + handlers.length + ' listeners)');
37                handlers.forEach(function(handler)        {        handler(data, options);        });    }}})(),Request: (function(){return {get: function(url, params, callback){this.execute('GET', [url,this.serialize(params)].join('?'), callback).send(null);},post: function(url, params, callback) {this.execute('POST', url, callback).send(this.serialize(params));},execute: function(method, url, callback){try {var request = new XMLHttpRequest();request.open(method, url, true);request.setRequestHeader('Content-Type','application/x-www-form-urlencoded');request.setRequestHeader('X-Requested-With','XMLHttpRequest');request.addEventListener('load', () => {let response;if ('application/json' === request.getResponseHeader("Content-Type")){response = JSON.parse(request.responseText);}else{response = request.responseText;}if ('function' === typeof callback){callback(response);}});}catch (e){console.log(e.message);return null;}return request;},serialize: function(entity, prefix) {                var query = [];                Object.keys(entity).map(key =>                  {                var k = prefix ? prefix + "[" + key + "]" : key, value = entity[key];                query.push((value !== null && typeof value === "object") ? this.serialize(value, k) : encodeURIComponent(k) + "=" + encodeURIComponent(value));              });                return query.join("&");            }}})(),UUID: (() => {return {generate: event => {event = event || {};let uuid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {    var r = Math.random() * 16 | 0, v = c == 'x' ? r : (r & 0x3 | 0x8);    return v.toString(16);});if (-1 == ['AddToCart'].indexOf(event)){try {let current = AEC.Cookie.get('facebook_latest_uuid');if (current){current = JSON.parse(current);if (current.hasOwnProperty('uuid') && current.hasOwnProperty('event')){if (event.event === current.event){uuid = current.uuid;}}}}catch (e){}}event['uuid'] = uuid;/** * Set facebook uuid cookie */if (AEC.Const.COOKIE_DIRECTIVE){if (AEC.Const.COOKIE_DIRECTIVE_CONSENT_GRANTED){AEC.Cookie.set('facebook_latest_uuid', JSON.stringify(event));}}else {AEC.Cookie.set('facebook_latest_uuid', JSON.stringify(event));}return uuid;}}})(),Proxy: (() => {function proxyFactory(worker)             {                const handler =                 {                    get(target, method)                     {                        return function (...args)                        {                            return new Promise((resolve, reject) =>                             {                                const id = Date.now() + Math.random().toString(36).substr(2);                                worker.onmessage = function (event)                                 {                                    const { id: responseId, result, error } = event.data;                                                                        if (responseId === id)                                     {                                        if (error)                                         {                                            reject(new Error(error));                                        }                                         else                                         {                                            resolve(result);                                        }                                    }                                };                                worker.postMessage({ id, method, args });                            });                        };                    }                };                return new Proxy({}, handler);            };return {get: worker => {return proxyFactory(new Worker(worker))}}})(),TikTok: (() => {return {event: (event, dataset, event_identifier) => {if ('undefined' !== typeof ttq){ttq.track(event, dataset, event_identifier);}}}})()}})();if ('undefined' !== typeof AEC && 'undefined' !== typeof AEC.EventDispatcher){AEC.GA4 = (() => {return {enabled: false,transformCategories: function(category){if (null === category){return {};}let map = {}, categories = category.toString().split('/');if (categories){map['item_category'] = categories.shift();if (categories.length){let index = 1;
37categories.forEach(category => {map['item_category' + (++index)] = category;});}}return map;},augmentCategories: function(product) {if (product.hasOwnProperty('category')){AEC.Cookie.augment([product]);}return this.transformCategories(product.category);},augmentItem: function(product){let map = {};map['google_business_vertical'] = 'retail';Object.entries(product).forEach(([key, value]) => {if (-1 === ['id','name','price','category','currency','variant','brand'].indexOf(key)){map[key] = value;}});return map;}}})();/** * Modify checkout step option payloasd */AEC.EventDispatcher.on('ec.checkout.step.option.data', data => {if (!AEC.GA4.enabled){return true;}switch(parseInt(data.ecommerce.checkout_option.actionField.step)){case AEC.Const.CHECKOUT_STEP_SHIPPING:data['event'] = 'add_shipping_info';if (AEC.GA4.quote.hasOwnProperty('coupon')){data.ecommerce['coupon'] = AEC.GA4.quote.coupon;}data.ecommerce['currency'] = AEC.GA4.currency;data.ecommerce['items'] = AEC.Checkout.getPayload().ecommerce.items;data.ecommerce['shipping_tier'] = data.ecommerce.checkout_option.actionField.option;(data => {let value = 0;data.ecommerce['items'].forEach(item => {value += Number(item.price) * Number(item.quantity);});data.ecommerce['value'] = value;})(data);delete data.ecommerce.checkout_option;break;case AEC.Const.CHECKOUT_STEP_PAYMENT:data['event'] = 'add_payment_info';if (AEC.GA4.quote.hasOwnProperty('coupon')){data.ecommerce['coupon'] = AEC.GA4.quote.coupon;}data.ecommerce['currency'] = AEC.GA4.currency;data.ecommerce['items'] = AEC.Checkout.getPayload().ecommerce.items;data.ecommerce['payment_type'] = data.ecommerce.checkout_option.actionField.option;(data => {let value = 0;data.ecommerce['items'].forEach(item => {value += Number(item.price) * Number(item.quantity);});data.ecommerce['value'] = value;})(data);delete data.ecommerce.checkout_option;break;}});}</script>
37<script data-ommit="true" nonce="NXM3aDNrNzgxOXZ1cmU2YmNoZjNkZjRndG9wcDhlb2M=">
38
39	window.dataLayer = window.dataLayer || [];
40
41	window.AEC = window.AEC || {};
42
43	AEC.Const = {"URL":"https://www.voetbalshirtskoning.nl/","TIMING_CATEGORY_ADD_TO_CART":"Add To Cart Time","TIMING_CATEGORY_REMOVE_FROM_CART":"Remove From Cart Time","TIMING_CATEGORY_PRODUCT_CLICK":"Product Detail Click Time","TIMING_CATEGORY_CHECKOUT":"Checkout Time","TIMING_CATEGORY_CHECKOUT_STEP":"Checkout Step Tim","TIMING_CATEGORY_PRODUCT_WISHLIST":"Add to Wishlist Time","TIMING_CATEGORY_PRODUCT_COMPARE":"Add to Compare Time","VARIANT_DELIMITER":"-","VARIANT_DELIMITER_ATT":":","CHECKOUT_STEP_SHIPPING":1,"CHECKOUT_STEP_PAYMENT":2,"CHECKOUT_STEP_ORDER":3,"DIMENSION_SEARCH":18,"COOKIE_DIRECTIVE":false,"COOKIE_DIRECTIVE_ENGINE":0,"COOKIE_DIRECTIVE_SEGMENT_MODE":false,"COOKIE_DIRECTIVE_SEGMENT_MODE_EVENTS":["cookieConsentGranted"],"COOKIE_DIRECTIVE_CONSENT_GRANTED_EVENT":"cookieConsentGranted","COOKIE_DIRECTIVE_CONSENT_DECLINE_EVENT":"cookieConsentDeclined","COOKIE_DIRECTIVE_OVERRIDE_DECLINE":false,"COOKIE_DOMAIN":"www.voetbalshirtskoning.nl","CATALOG_CATEGORY_ADD_TO_CART_REDIRECT_EVENT":"catalogCategoryAddToCartRedirect"};
44
45	AEC.Const.COOKIE_DIRECTIVE_CONSENT_GRANTED = AEC.CookieConsent.getConsent("cookieConsentGranted");
46
47	Object.entries({"Message":{"confirm":true,"confirmRemoveTitle":"Weet u het zeker?","confirmRemove":"Weet u zeker dat u dit product wilt verwijderen uit uw winkelwagen?"},"storeName":"NL","currencyCode":"EUR","useDefaultValues":false,"facebook":false,"tiktok":false,"SUPER":[],"CONFIGURABLE_SIMPLES":[],"BUNDLE":{"bundles":[],"options":[]},"localStorage":"true","summary":false,"reset":false,"tax":1,"simples":false}).forEach(([key,value]) => { AEC[key] = value; });</script>
47  
47<script data-ommit="true" nonce="NXM3aDNrNzgxOXZ1cmU2YmNoZjNkZjRndG9wcDhlb2M=">
48
49    (summary => 
50    {
51    	if (summary)
52    	{
53        	let getSummary = (event) => 
54        	{
55            	AEC.Request.post("https:\/\/www.voetbalshirtskoning.nl\/datalayer\/index\/cart\/",{ event:event }, (response) => 
56            	{
57                	dataLayer.push(response);
58               	});
59            };
60
61            ['ec.cookie.remove.item.data','ec.cookie.update.item.data','ec.cookie.add.data'].forEach(event => 
62            {
63            	AEC.EventDispatcher.on(event, (event => 
64            	{
65                	return () => 
66                	{
67                    	setTimeout(() => { getSummary(event); }, 2000);
68                    };
69                })(event));
70            });
71    	}
72    })(AEC.summary);</script>
72<script data-ommit="true" nonce="NXM3aDNrNzgxOXZ1cmU2YmNoZjNkZjRndG9wcDhlb2M=">
73
74    if ('undefined' !== typeof AEC && AEC.GA4)
75    {
76    	AEC.GA4.enabled = true;
77
78    	 AEC.GA4.conversion_event = "purchase";
79
80    	 AEC.GA4.currency = "EUR";
81
82    	 AEC.GA4.quote = [];
83    }</script>
83<script data-ommit="true" nonce="NXM3aDNrNzgxOXZ1cmU2YmNoZjNkZjRndG9wcDhlb2M=">
84
85	 window.dataLayer = window.dataLayer || [];
86
87	   var dataLayerTransport = (function()
88	{
89		var data = [];
90		
91		return {
92			data:[],
93			push: function(data)
94			{
95				this.data.push(data);
96				
97				return this;
98			},
99			serialize: function()
100			{
101				return this.data;
102			}
103		}	
104	})();</script>
104 
104<script data-ommit="true" nonce="NXM3aDNrNzgxOXZ1cmU2YmNoZjNkZjRndG9wcDhlb2M=">
105
106		(endpoints => 
107		{
108			let engines = 
109			{
110				0: () => {},
111				1: () => {},
112				2: () => 
113				{
114					window.addEventListener('CookiebotOnAccept', event => 
115					{
116						return true;
117					}, 
118					false);
119				},
120				3: () => {},
121				4: () => 
122				{
123					(() =>  
124					{
125						let wait = 0, interval = 100;
126
127						let otc = () => 
128						{
129							return 'undefined' !== typeof window.OneTrust;
130						};
131
132						window.ot = setInterval(end => 
133						{
134							wait += interval;
135
136							if (wait > end)
137							{
138								if (window.ot)
139								{
140									clearInterval(window.ot);
141								}
142							}
143
144							if (otc())
145							{
146								window.dispatchEvent(new CustomEvent("onetrust_loaded", 
147								{
148									detail: 
149									{
150										groups: window.OptanonActiveGroups
151									}
152								}));
153
154								clearInterval(window.ot);
155								
156								let uuid = AEC.Cookie.get('cookieUuid');
157
158								let map = {"C0001":["cookieConsentGranted"],"C0002":["cookieConsentGranted","cookieConsentAnalyticsGranted"],"C0003":["cookieConsentGranted","cookieConsentPreferencesGranted"],"0":["cookieConsentGranted","cookieConsentUserdata","cookieConsentPersonalization","cookieConsentMarketingGranted"]};
159
160								OneTrust.OnConsentChanged(() => 
161								{
162									let groups = window.OptanonActiveGroups.split(',').filter(String);
163
164									let grant = [], consent = {};
165
166									groups.forEach(group => 
167									{
168										if (map.hasOwnProperty(group))
169										{
170											map[group].forEach(signal => 
171											{
172												consent[signal] = true;
173											});
174										}
175									});
176									
177									Object.keys(consent).forEach(key => 
178									{
179										grant.push(key);
180									});
181
182									let params = 
183									{
184										cookie: grant
185									};
186
187									if (!grant.length)
188									{
189										params['decline'] = true;
190									}
191
192									AEC.Request.post(endpoints.cookie, params , response => 
193									{
194										return true;
195									});
196
197									return true;
198								});
199							}
200						},
201						interval);
202						
203					})(2000);
204				},
205				5: () => 
206				{
207					let grant = [];
208
209					grant.push("cookieConsentGranted");
210
211					let uuid = AEC.Cookie.get('cookieUuid');
212
213					if (!uuid)
214					{
215						AEC.Request.post(endpoints.cookie, { cookie: grant }, response => 
216						{
217							return true;
218						});
219					}
220					return true;
221				},
222				6: () => 
223				{
224					return true;
225				}
226			};
227
228			engines[AEC.Const.COOKIE_DIRECTIVE_ENGINE].apply(this,[]);
229
230		})({"type":"json","cookie":"https:\/\/www.voetbalshirtskoning.nl\/datalayer\/index\/cookie\/","cookieContent":"https:\/\/www.voetbalshirtskoning.nl\/datalayer\/index\/cookieContent\/","cookieConsent":"https:\/\/www.voetbalshirtskoning.nl\/datalayer\/index\/cookieConsent\/"});</script>
230  
230<script data-ommit="true" nonce="NXM3aDNrNzgxOXZ1cmU2YmNoZjNkZjRndG9wcDhlb2M=">
231
232	/* Dynamic remarketing */
233	window.google_tag_params = window.google_tag_params || {};
234
235	/* Default pagetype */
236	window.google_tag_params.ecomm_pagetype = "home";
237
238	/* Grouped products collection */
239	window.G = [];
240
241	/**
242	 * Global revenue 
243	 */
244	window.revenue = 0;
245
246	/**
247	 * DoubleClick
248	 */
249	window.DoubleClick = 
250	{
251		DoubleClickRevenue:	 	0,
252		DoubleClickTransaction: 0,
253		DoubleClickQuantity: 	0
254	};
255	
256	 AEC.Cookie.visitor({"pageType":"home","pageName":"Goedkope Voetbalshirts - Voetbalshirtskoning.nl","websiteCountry":"NL","websiteLanguage":"nl_NL","visitorLoginState":"Logged out","visitorLifetimeValue":0,"visitorExistingCustomer":"Nee","clientStatus":"Not client","visitorType":"NOT LOGGED IN","currentStore":"NL"}).push(dataLayer, false);</script>
256    
256<script nonce="NXM3aDNrNzgxOXZ1cmU2YmNoZjNkZjRndG9wcDhlb2M=">(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
257new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
258j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.nonce='NXM3aDNrNzgxOXZ1cmU2YmNoZjNkZjRndG9wcDhlb2M=';j.src=
259'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
260})(window,document,'script','dataLayer','GTM-NH3PC7PC');</script>
260
261<!-- End Google Tag Manager -->
262   
262<script data-ommit="true" nonce="NXM3aDNrNzgxOXZ1cmU2YmNoZjNkZjRndG9wcDhlb2M=">
263
264    </script>
264 
264<script data-ommit="true" nonce="NXM3aDNrNzgxOXZ1cmU2YmNoZjNkZjRndG9wcDhlb2M=">AEC.Bind.apply({"performance":false})</script>
264<script type="application/ld+json">{"@context":"https:\/\/schema.org\/","@type":"WebSite","url":"https:\/\/www.voetbalshirtskoning.nl\/","potentialAction":{"@type":"SearchAction","target":"https:\/\/www.voetbalshirtskoning.nl\/catalogsearch\/result\/index\/?q={search_term_string}","query-input":"required name=search_term_string"},"name":"Voetbalshirtskoning.nl"}</script>
264<script type="application/ld+json">{"@context":"https:\/\/schema.org\/","@type":"Organization","image":"","name":"Voetbalshirtskoning.nl","url":"https:\/\/www.voetbalshirtskoning.nl\/","address":{"@type":"PostalAddress","addressCountry":"NL","addressLocality":"Deventer","addressRegion":"","postalCode":"7412AC","streetAddress":"Zwolseweg 75"},"email":"[email protected]","telephone":"0207861855"}</script>
264<script>
265    var BASE_URL = 'https://www.voetbalshirtskoning.nl/';
266    var THEME_PATH = 'https://www.voetbalshirtskoning.nl/static/version20261002143139/frontend/Vendic/voetbalshirtskoning/nl_NL';
267    var COOKIE_CONFIG = {
268        "expires": null,
269        "path": "\u002F",
270        "domain": ".www.voetbalshirtskoning.nl",
271        "secure": true,
272        "lifetime": "86400",
273        "cookie_restriction_enabled": false    };
274    var CURRENT_STORE_CODE = 'nl';
275    var CURRENT_WEBSITE_ID = '1';
276
277    window.hyva = window.hyva || {}
278
279    window.cookie_consent_groups = window.cookie_consent_groups || {}
280    window.cookie_consent_groups['necessary'] = true;
281
282    window.cookie_consent_config = window.cookie_consent_config || {};
283    window.cookie_consent_config['necessary'] = [].concat(
284        window.cookie_consent_config['necessary'] || [],
285        [
286            'user_allowed_save_cookie',
287            'form_key',
288            'mage-messages',
289            'private_content_version',
290            'mage-cache-sessid',
291            'last_visited_store',
292            'section_data_ids'
293        ]
294    );</script>
294<script>
295    'use strict';
296    (function( hyva, undefined ) {
297
298        function lifetimeToExpires(options, defaults) {
299
300            const lifetime = options.lifetime || defaults.lifetime;
301
302            if (lifetime) {
303                const date = new Date;
304                date.setTime(date.getTime() + lifetime * 1000);
305                return date;
306            }
307
308            return null;
309        }
310
311        function generateRandomString() {
312
313            const allowedCharacters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ',
314                length = 16;
315
316            let formKey = '',
317                charactersLength = allowedCharacters.length;
318
319            for (let i = 0; i < length; i++) {
320                formKey += allowedCharacters[Math.round(Math.random() * (charactersLength - 1))]
321            }
322
323            return formKey;
324        }
325
326        const sessionCookieMarker = {noLifetime: true}
327
328        const cookieTempStorage = {};
329
330        const internalCookie = {
331            get(name) {
332                const v = document.cookie.match('(^|;) ?' + name + '=([^;]*)(;|$)');
333                return v ? v[2] : null;
334            },
335            set(name, value, days, skipSetDomain) {
336                let expires,
337                    path,
338                    domain,
339                    secure,
340                    samesite;
341
342                const defaultCookieConfig = {
343                    expires: null,
344                    path: '/',
345                    domain: null,
346                    secure: false,
347                    lifetime: null,
348                    samesite: 'lax'
349                };
350
351                const cookieConfig = window.COOKIE_CONFIG || {};
352
353                expires = days && days !== sessionCookieMarker
354                    ? lifetimeToExpires({lifetime: 24 * 60 * 60 * days, expires: null}, defaultCookieConfig)
355                    : lifetimeToExpires(window.COOKIE_CONFIG, defaultCookieConfig) || defaultCookieConfig.expires;
356
357                path = cookieConfig.path || defaultCookieConfig.path;
358                domain = !skipSetDomain && (cookieConfig.domain || defaultCookieConfig.domain);
359                secure = cookieConfig.secure || defaultCookieConfig.secure;
360                samesite = cookieConfig.samesite || defaultCookieConfig.samesite;
361
362                document.cookie = name + "=" + encodeURIComponent(value) +
363                    (expires && days !== sessionCookieMarker ? '; expires=' + expires.toGMTString() : '') +
364                    (path ? '; path=' + path : '') +
365                    (domain ? '; domain=' + domain : '') +
366                    (secure ? '; secure' : '') +
367                    (samesite ? '; samesite=' + samesite : 'lax');
368            },
369            isWebsiteAllowedToSaveCookie() {
370                const allowedCookies = this.get('user_allowed_save_cookie');
371                if (allowedCookies) {
372                    const allowedWebsites = JSON.parse(unescape(allowedCookies));
373
374                    return allowedWebsites[CURRENT_WEBSITE_ID] === 1;
375                }
376                return false;
377            },
378            getGroupByCookieName(name) {
379                const cookieConsentConfig = window.cookie_consent_config || {};
380                let group = null;
381                for (let prop in cookieConsentConfig) {
382                    if (!cookieConsentConfig.hasOwnProperty(prop)) continue;
383                    if (cookieConsentConfig[prop].includes(name)) {
384                        group = prop;
385                        break;
386                    }
387                }
388                return group;
389            },
390            isCookieAllowed(name) {
391                const cookieGroup = this.getGroupByCookieName(name);
392                return cookieGroup
393                    ? window.cookie_consent_groups[cookieGroup]
394                    : this.isWebsiteAllowedToSaveCookie();
395            },
396            saveTempStorageCookies() {
397                for (const [name, data] of Object.entries(cookieTempStorage)) {
398                    if (this.isCookieAllowed(name)) {
399                        this.set(name, data['value'], data['days'], data['skipSetDomain']);
400                        delete cookieTempStorage[name];
401                    }
402                }
403            }
404        };
405
406        hyva.getCookie = (name) => {
407            const cookieConfig = window.COOKIE_CONFIG || {};
408
409            if (cookieConfig.cookie_restriction_enabled && ! internalCookie.isCookieAllowed(name)) {
410                return cookieTempStorage[name] ? cookieTempStorage[name]['value'] : null;
411            }
412
413            return internalCookie.get(name);
414        }
415
416        hyva.setCookie = (name, value, days, skipSetDomain) => {
417            const cookieConfig = window.COOKIE_CONFIG || {};
418
419            if (cookieConfig.cookie_restriction_enabled && ! internalCookie.isCookieAllowed(name)) {
420                cookieTempStorage[name] = {value, days, skipSetDomain};
421                return;
422            }
423            return internalCookie.set(name, value, days, skipSetDomain);
424        }
425
426
427        hyva.setSessionCookie = (name, value, skipSetDomain) => {
428            return hyva.setCookie(name, value, sessionCookieMarker, skipSetDomain)
429        }
430
431        hyva.getBrowserStorage = () => {
432            const browserStorage = window.localStorage || window.sessionStorage;
433            if (!browserStorage) {
434                console.warn('Browser Storage is unavailable');
435                return false;
436            }
437            try {
438                browserStorage.setItem('storage_test', '1');
439                browserStorage.removeItem('storage_test');
440            } catch (error) {
441                console.warn('Browser Storage is not accessible', error);
442                return false;
443            }
444            return browserStorage;
445        }
446
447        hyva.postForm = (postParams) => {
448            const form = document.createElement("form");
449
450            let data = postParams.data;
451
452            if (! postParams.skipUenc && ! data.uenc) {
453                data.uenc = btoa(window.location.href);
454            }
455            form.method = "POST";
456            form.action = postParams.action;
457
458            Object.keys(postParams.data).map(key => {
459                const field = document.createElement("input");
460                field.type = 'hidden'
461                field.value = postParams.data[key];
462                field.name = key;
463                form.appendChild(field);
464            });
465
466            const form_key = document.createElement("input");
467            form_key.type = 'hidden';
468            form_key.value = hyva.getFormKey();
469            form_key.name="form_key";
470            form.appendChild(form_key);
471
472            document.body.appendChild(form);
473
474            form.submit();
475        }
476
477        hyva.getFormKey = function () {
478            let formKey = hyva.getCookie('form_key');
479
480            if (!formKey) {
481                formKey = generateRandomString();
482                hyva.setCookie('form_key', formKey);
483            }
484
485            return formKey;
486        }
487
488        hyva.formatPrice = (value, showSign, options = {}) => {
489            const groupSeparator = options.groupSeparator;
490            const decimalSeparator = options.decimalSeparator
491            delete options.groupSeparator;
492            delete options.decimalSeparator;
493            const formatter = new Intl.NumberFormat(
494                'nl\u002DNL',
495                Object.assign({
496                    style: 'currency',
497                    currency: 'EUR',
498                    signDisplay: showSign ? 'always' : 'auto'
499                }, options)
500            );
501            return (typeof Intl.NumberFormat.prototype.formatToParts === 'function') ?
502                formatter.formatToParts(value).map(({type, value}) => {
503                    switch (type) {
504                        case 'currency':
505                            return '\u20AC' || value;
506                        case 'minusSign':
507                            return '- ';
508                        case 'plusSign':
509                            return '+ ';
510                        case 'group':
511                            return groupSeparator !== undefined ? groupSeparator : value;
512                        case 'decimal':
513                            return decimalSeparator !== undefined ? decimalSeparator : value;
514                        default :
515                            return value;
516                    }
517                }).reduce((string, part) => string + part) :
518                formatter.format(value);
519        }
520
521 const formatStr = function (str, nStart) {
522            const args = Array.from(arguments).slice(2);
523
524            return str.replace(/(%+)([0-9]+)/g, (m, p, n) => {
525                const idx = parseInt(n) - nStart;
526
527                if (args[idx] === null || args[idx] === void 0) {
528                    return m;
529                }
530                return p.length % 2
531                    ? p.slice(0, -1).replace('%%', '%') + args[idx]
532                    : p.replace('%%', '%') + n;
533            })
534        }
535
536 hyva.str = function (string) {
537            const args = Array.from(arguments);
538            args.splice(1, 0, 1);
539
540            return formatStr.apply(undefined, args);
541        }
542
543 hyva.strf = function () {
544            const args = Array.from(arguments);
545            args.splice(1, 0, 0);
546
547            return formatStr.apply(undefined, args);
548        }
549
550        /**
551         * Take a html string as `content` parameter and
552         * extract an element from the DOM to replace in
553         * the current page under the same selector,
554         * defined by `targetSelector`
555         */
556        hyva.replaceDomElement = (targetSelector, content) => {
557            
558            const parser = new DOMParser();
559            const doc = parser.parseFromString(content, 'text/html');
560            const contentNode = doc.querySelector(targetSelector);
561
562            
563            if (!contentNode || !document.querySelector(targetSelector)) {
564                return;
565            }
566
567             hyva.activateScripts(contentNode);
568             document.querySelector(targetSelector).replaceWith(contentNode);
569
570            
571            window.dispatchEvent(new CustomEvent("reload-customer-section-data"));
572            hyva.initMessages();
573        }
574
575        hyva.removeScripts = (contentNode) => {
576            const scripts = contentNode.getElementsByTagName('script');
577            for (let i = 0; i < scripts.length; i++) {
578                scripts[i].parentNode.removeChild(scripts[i]);
579            }
580            const templates = contentNode.getElementsByTagName('template');
581            for (let i = 0; i < templates.length; i++) {
582                const container = document.createElement('div');
583                container.innerHTML = templates[i].innerHTML;
584                hyva.removeScripts(container);
585                templates[i].innerHTML = container.innerHTML;
586            }
587        }
588
589        hyva.activateScripts = (contentNode) => {
590 const scripts = Array.from(contentNode.getElementsByTagName('script'));
591
592            
593            for (const original of scripts) {
594                const script = document.createElement('script');
595                original.type && (script.type = original.type);
596                script.innerHTML = original.innerHTML;
597
598                
599                original.parentNode.removeChild(original)
600
601                
602                document.head.appendChild(script);
603            }
604
605            return contentNode;
606        }
607
608 const replace = {['+']: '-', ['/']: '_', ['=']: ','};
609        hyva.getUenc = () => btoa(window.location.href).replace(/[+/=]/g, match => replace[match]);
610
611        let currentTrap;
612
613        const focusableElements = (rootElement) => {
614            const selector = 'button, [href], input, select, textarea, details, [tabindex]:not([tabindex="-1"]';
615            return Array.from(rootElement.querySelectorAll(selector))
616                .filter(el => {
617                    return el.style.display !== 'none'
618                        && !el.disabled
619                        && el.tabIndex !== -1
620                        && (el.offsetWidth || el.offsetHeight || el.getClientRects().length)
621                })
622        }
623
624        const focusTrap = (e) => {
625            const isTabPressed = e.key === 'Tab' || e.keyCode === 9;
626            if (!isTabPressed) return;
627
628            const focusable = focusableElements(currentTrap)
629            const firstFocusableElement = focusable[0]
630            const lastFocusableElement = focusable[focusable.length - 1]
631
632            e.shiftKey
633                ? document.activeElement === firstFocusableElement && (lastFocusableElement.focus(), e.preventDefault())
634                : document.activeElement === lastFocusableElement && (firstFocusableElement.focus(), e.preventDefault())
635        };
636
637        hyva.releaseFocus = (rootElement) => {
638            if (currentTrap && (!rootElement || rootElement === currentTrap)) {
639                currentTrap.removeEventListener('keydown', focusTrap)
640                currentTrap = null
641            }
642        }
643        hyva.trapFocus = (rootElement) => {
644            if (!rootElement) return;
645            hyva.releaseFocus()
646            currentTrap = rootElement
647            rootElement.addEventListener('keydown', focusTrap)
648            const firstElement = focusableElements(rootElement)[0]
649            firstElement && firstElement.focus()
650        }
651
652 hyva.safeParseNumber = (rawValue) => {
653            const number = rawValue ? parseFloat(rawValue) : null;
654
655            return Array.isArray(number) || isNaN(number) ? rawValue : number;
656        }
657
658 const toCamelCase = s => s.split('_').map(word => word.charAt(0).toUpperCase() + word.slice(1)).join('');
659        hyva.createBooleanObject = (name, value = false, additionalMethods = {}) => {
660
661            const camelCase = toCamelCase(name);
662 const key = '__hyva_bool_' + name
663
664            return new Proxy(Object.assign(
665                additionalMethods,
666                {
667                    [key]: !!value,
668                    [name]() {return !!this[key]},
669                    ['!' + name]() {return !this[key]}, 
670                    ['not' + camelCase]() {return !this[key]},
671                    ['toggle' + camelCase]() {this[key] = !this[key]},
672                    [`set${camelCase}True`]() {this[key] = true},
673                    [`set${camelCase}False`]() {this[key] = false},
674                }
675            ), {
676                set(target, prop, value) {
677                    return prop === name
678                        ? (target[key] = !!value)
679                        : Reflect.set(...arguments);
680                }
681            })
682        }
683
684                hyva.alpineInitialized = (fn) => window.addEventListener('alpine:initialized', fn, {once: true})
685        window.addEventListener('alpine:init', () => Alpine.data('{}', () => ({})), {once: true});
686         window.addEventListener('user-allowed-save-cookie', () => internalCookie.saveTempStorageCookies())
687
688    }( window.hyva = window.hyva || {} ));</script>
688<script>
689    'use strict';
690    (function(hyva, undefined) {
691        hyva.formatPrice = (value, showSign = false, options = {}) => {
692            value = Math.round(value * 100) / 100;
693
694            const formatter = new Intl.NumberFormat(
695                'nl\u002DNL',
696                Object.assign({
697                    style: 'currency',
698                    currency: 'EUR',
699                    signDisplay: showSign ? 'always' : 'auto'
700                }, options)
701            );
702
703            let formattedPrice;
704
705            if (typeof Intl.NumberFormat.prototype.formatToParts === 'function') {
706                formattedPrice = formatter.formatToParts(value).map(({type, value}) => {
707                    switch (type) {
708                        case 'currency': return '';
709                        default: return value;
710                    }
711                }).reduce((string, part) => string + part, '');
712            } else {
713                formattedPrice = formatter.format(value);
714            }
715
716            return formattedPrice.trim();
717        };
718    }(window.hyva = window.hyva || {}));
719</script>
719<script>
720    if (!window.IntersectionObserver) {
721        window.IntersectionObserver = function (callback) {
722            this.observe = el => el && callback(this.takeRecords());
723            this.takeRecords = () => [{isIntersecting: true, intersectionRatio: 1}];
724            this.disconnect = () => {};
725            this.unobserve = () => {};
726        }
727    }</script>
727
728<link rel="alternate" hreflang="es" href="https://www.reydelfutbol.es/" />
729<link rel="alternate" hreflang="fr" href="https://www.roidufoot.fr/" />
730<link rel="alternate" hreflang="nl-be" href="https://www.voetbalshirtskoning.be/" />
731<link rel="alternate" hreflang="nl-nl" href="https://www.voetbalshirtskoning.nl/" /><style> .ec-gtm-cookie-directive > div { background: #ffffff; color: #000000; -webkit-border-radius: 8px; -moz-border-radius: 8px; -ms-border-radius: 8px; -o-border-radius: 8px; border-radius: 8px; } .ec-gtm-cookie-directive > div > div > div { padding-left: 0px; } .ec-gtm-cookie-directive > div > div > div a.action.accept, .ec-gtm-cookie-directive > div > div > div a.action.accept-all { color: #8bc53f; } .ec-gtm-cookie-directive > div > div > div a.action.refuse, .ec-gtm-cookie-directive > div > div > div a.action.customize { color: #000000; } .ec-gtm-cookie-directive > div > div > div .ec-gtm-cookie-directive-note-toggle { color: #8bc53f; } .ec-gtm-cookie-directive-segments { background: #ffffff; } .ec-gtm-cookie-directive-segments > div input[type="checkbox"] + label:before { border:1px solid #000000; } .ec-gtm-cookie-directive .consent-logo { width: 0px; } </style></head>
732<body class="hide-mobile-arrows cms-home vendic-poscodenl-enabled cms-index-index page-layout-1column" id="html-body">
733<!-- Google Tag Manager (noscript) -->
vendor: 69 bytes, lines 733-734
733
734<noscript><iframe src="https://www.googletagmanager.com/ns.html?id=
734GTM-NH3PC7PC
vendor: 85 bytes, lines 734-735
734"
735height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
736<!-- End Google Tag Manager (noscript) --><input name="form_key" type="hidden" value="kg814vNZzfNGE6fR" /><noscript>
737        <section class="message global noscript border-b-2 border-blue-500 bg-blue-50 shadow-none m-0 px-0 rounded-none font-normal">
738            <div class="container text-center">
739                <p>
740                    <strong>JavaScript lijkt te zijn uitgeschakeld in uw browser.</strong>
741                    <span>
742                        Voor de beste gebruikerservaring, zorg ervoor dat javascript ingeschakeld is voor uw browser.                    </span>
743                </p>
744            </div>
745        </section>
746    </noscript>
746<script>
747    document.body.addEventListener('touchstart', () => {}, {passive: true})
748</script>
748<div class="page-wrapper"><header class="page-header"><a class="action skip sr-only focus:not-sr-only focus:absolute focus:z-40 focus:bg-white
749   contentarea"
750   href="#contentarea">
751    <span>
752        Ga naar de inhoud    </span>
753</a>
753<script>
754    'use_strict';
755    (() => {
756        function initKlaviyo() {
757            return new Promise((resolve, reject) => {
758                const script = document.createElement('script');
759                script.src = 'https://static.klaviyo.com/onsite/js/klaviyo.js?company_id=Xkd5iU';
760                script.type = 'text/javascript';
761                script.async = true;
762
763                
764                script.onload = () => resolve();
765                script.onerror = () => reject(new Error('Script loading failed'));
766
767                document.head.append(script);
768            });
769        }
770
771        function initKlaviyoCustomerTracking() {
772            const magentoCacheStorage = JSON.parse(window.localStorage.getItem('mage-cache-storage'));
773            const customer = magentoCacheStorage ? magentoCacheStorage.customer : null;
774
775            let _learnq = window._learnq || [];
776
777            if (!customer || !customer.email) {
778                return;
779            }
780
781            _learnq.push(['identify', {
782                '$email': customer.email,
783                '$first_name': customer.firstname ? customer.firstname : '',
784                '$last_name': customer.lastname ? customer.lastname : ''
785            }]);
786        };
787
788        window.addEventListener('init-external-scripts', () => {
789            initKlaviyo().then(() => {
790                initKlaviyoCustomerTracking();
791                window.dispatchEvent(new Event('klaviyo-initialized'));
792            }).catch((error) => {
793                console.error('Error loading Klaviyo script:', error);
794            });
795        }, {once: true, passive: true});
796    })
797    ();</script>
797<script>
798    function initHeader () {
799        return {
800            searchOpen: false,
801            cart: {},
802            getData(data) {
803                if (data.cart) { this.cart = data.cart }
804            }
805        }
806    }
807</script>
807
808<div id="header"
809     class="header-content-wrapper"
810     x-data="initHeader()"
811          @keydown.window.escape="searchOpen = false; document.getElementById('search-overlay').classList.add('hidden')"
812          @private-content-loaded.window="getData(event.detail.data)"
813>
814    <div class="header-content">
815        <!--Mobile menu-->
816        <button x-data="initMenuMobileToggler()" id="mobile-menu-toggler" @click.stop="!isTouch && onClick()" @touchstart.prevent="isTouch = true; onClick()" class="mobile-menu-toggler pointer" aria-controls="mobile-menu" aria-expanded="false"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" width="28" height="28" role="img">
817  <path stroke-linecap="round" stroke-linejoin="round" d="M4 6h16M4 12h16M4 18h16"/>
818<title>menu</title></svg>
819</button> <section id="mobile-menu" class="hidden mobile-menu" x-data="initMenuMobile()" x-init="$nextTick(() => { $root.classList.remove('hidden'); $watch('open', value => { value ? document.body.classList.add('overflow-hidden') : document.body.classList.remove('overflow-hidden'); value ? document.querySelector('main').setAttribute('aria-hidden', 'true') : document.querySelector('main').removeAttribute('aria-hidden'); }) })" @toggle-mobile-menu.window="open=true"><div role="dialog" aria-labelledby="mobile-menu-title" aria-modal="true" @click.outside="open=false" class="mobile-menu-inner-wrapper"><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" @click="open=false" aria-label="Close&#x20;panel"></div><div class="mobile-menu-inner" x-show="open" x-transition:enter="transform transition ease-in-out duration-500" x-transition:enter-start="-translate-x-full" x-transition:enter-end="translate-x-0" x-transition:leave="transform transition ease-in-out duration-500" x-transition:leave-start="translate-x-0" x-transition:leave-end="-translate-x-full"><div class="flex items-center justify-center mobile-menu-top relative px-2 py-3 xxs:px-4 bg-container-lighter"><a x-ref="closeButton" class="flex items-center justify-center btn-icon absolute left-4" @click.prevent.stop="open=false" href="#" aria-label="Close&#x20;mobile&#x20;menu"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" class="p-2" width="40" height="40" role="img">
820  <path stroke-linecap="round" stroke-linejoin="round" d="M6 18L18 6M6 6l12 12"/>
821<title>x</title></svg>
822</a> <div class="logo-wrapper mx-auto md:m-0 max-md:w-auto">
823    <a class="logo font-title"
824       href="https://www.voetbalshirtskoning.nl/"
825       title="Goedkope&#x20;voetbalshirts&#x20;-&#x20;Voetbalshirtskoning.nl"
826       aria-label="store logo">
827        <img class="max-h-8 md:max-h-full max-md:w-auto" src="https://www.voetbalshirtskoning.nl/img/anuN-is17UZ-InkLKMKEuB6fMqhgrmqt1lfz33jS8Hk/resize:fit:0:0/aHR0cHM6Ly93d3cudm9ldGJhbHNoaXJ0c2tvbmluZy5ubC9zdGF0aWMvdmVyc2lvbjIwMjYxMDAyMTQzMTM5L2Zyb250ZW5kL1ZlbmRpYy92b2V0YmFsc2hpcnRza29uaW5nL25sX05ML2ltYWdlcy9sb2dvLnN2Zw.svg"
828             title="Goedkope&#x20;voetbalshirts&#x20;-&#x20;Voetbalshirtskoning.nl"
829             alt="Goedkope&#x20;voetbalshirts&#x20;-&#x20;Voetbalshirtskoning.nl"
830             width="112"
831             width="32"
832                            loading="lazy"
833                    />
834    </a>
835</div></div><h2 id="mobile-menu-title" class="sr-only">Mobile menu</h2><div class="mobile-menu-wrapper"><!--Do not remove empty container below, it's required for fetching menu html--><div id="mobile-menu-container" aria-live="polite"><template x-if="isLoading"><div class="mobile-menu-loader-wrapper"><svg class="animate-spin h-7 w-7 p-1" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24"><circle class="opacity-25" cx="12" cy="12" r="10" stroke="currentColor" stroke-width="4"></circle><path class="opacity-75" fill="currentColor" d="M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"></path></svg></div></template></div><div class="mobile-nav-additional">  </div></div></div></div></section>
835<script>
836    function initMenuMobileToggler() {
837        return {
838            isTouch: false,
839            onClick: function () {
840                this.$dispatch('toggle-mobile-menu', {});
841            }
842        }
843    }
844
845    function initMenuMobile() {
846        return {
847            menuHeight: null,
848            level: 0,
849            open: false,
850            isLoading: false,
851            isMobileMenuLoaded: false,
852            init() {
853                var self = this;
854
855                const toggler = document.getElementById('mobile-menu-toggler');
856                const menuInner = this.$root.querySelector('.mobile-menu-inner');
857
858                this.$watch('open', function (value) {
859                    if (!self.isMobileMenuLoaded) {
860                        self.fetchMobileMenuHtml();
861                    }
862
863                    toggler.setAttribute('aria-expanded', value.toString());
864
865                    if (value) {
866                        self.$nextTick(() => {
867                            hyva.trapFocus(menuInner);
868                            self.$refs.closeButton.focus();
869                        });
870                    } else {
871                        hyva.releaseFocus(menuInner);
872                        self.$nextTick(() => {
873                            toggler.focus();
874                        });
875                    }
876                });
877
878                this.$root.addEventListener('keydown', function (e) {
879                    if (e.key === 'Enter' || e.key === ' ') {
880                        const target = e.target.closest('.back-link');
881                        if (target) {
882                            target.click();
883                            e.preventDefault();
884                        }
885                    } else if (e.key === 'Escape' && self.open) {
886                        self.open = false;
887                    }
888                });
889
890                this.$root.addEventListener('click', function (e) {
891                    if (self.open && !menuInner.contains(e.target)) {
892                        self.open = false;
893                    }
894                });
895            },
896            height: function () {
897                if (this.level === 0) {
898                    return '';
899                }
900
901                return this.menuHeight ? 'height: ' + this.menuHeight + 'px' : '';
902            },
903            showSubmenu: function (event, level) {
904                var menuItem = event.target.closest('.menu-item');
905
906                if (menuItem.parentElement.querySelector('.menu-item.active')) {
907                    menuItem.parentElement.querySelector('.menu-item.active').classList.remove('active');
908                }
909                menuItem.classList.add('active');
910                this.level = level;
911
912                this.menuHeight = menuItem.querySelector('.submenu.submenu-level-' + this.level).offsetHeight;
913                setTimeout(() => {
914                    this.$refs.closeButton.focus();
915                }, 200);
916            },
917
918            back: function (event, level) {
919                var self = this,
920                    menuItem = event.target.closest('.menu-item');
921
922                this.level = level;
923                self.menuHeight = menuItem.closest('.mobile-nav').offsetHeight;
924
925                setTimeout(function () {
926                    menuItem.parentElement.querySelector('.menu-item.active').classList.remove('active');
927                    self.$refs.closeButton.focus();
928                }, 500);
929            },
930            fetchMobileMenuHtml: function () {
931                let self = this,
932                    getUrl = BASE_URL + 'theme-module/block/mobileMenu';
933
934                this.isLoading = true;
935
936                fetch(getUrl, {
937                    method: 'GET',
938                    headers: {
939                        'X-Requested-With': 'XMLHttpRequest'
940                    }
941                })
942                    .then(response => response.json())
943                    .then(result => {
944                        if (result.error) {
945                            console.warn(result.errors);
946                        } else if (result.menuHtml) {
947                            document.getElementById('mobile-menu-container').innerHTML = result.menuHtml;
948                            self.isMobileMenuLoaded = true;
949                            setTimeout(() => {
950                                self.$refs.closeButton.focus();
951                            }, 50);
952                        }
953                        self.isLoading = false;
954                    });
955            }
956        }
957    }</script>
957
958        <!--Logo-->
959        <div class="logo-wrapper mx-auto md:m-0 max-md:w-auto">
960    <a class="logo font-title"
961       href="https://www.voetbalshirtskoning.nl/"
962       title="Goedkope&#x20;voetbalshirts&#x20;-&#x20;Voetbalshirtskoning.nl"
963       aria-label="store logo">
964        <img class="max-h-8 md:max-h-full max-md:w-auto" src="https://www.voetbalshirtskoning.nl/img/anuN-is17UZ-InkLKMKEuB6fMqhgrmqt1lfz33jS8Hk/resize:fit:0:0/aHR0cHM6Ly93d3cudm9ldGJhbHNoaXJ0c2tvbmluZy5ubC9zdGF0aWMvdmVyc2lvbjIwMjYxMDAyMTQzMTM5L2Zyb250ZW5kL1ZlbmRpYy92b2V0YmFsc2hpcnRza29uaW5nL25sX05ML2ltYWdlcy9sb2dvLnN2Zw.svg"
965             title="Goedkope&#x20;voetbalshirts&#x20;-&#x20;Voetbalshirtskoning.nl"
966             alt="Goedkope&#x20;voetbalshirts&#x20;-&#x20;Voetbalshirtskoning.nl"
967             width="200"
968             width="45"
969                    />
970    </a>
971</div>
972        <!--Search-->
973        <div class="hidden         md:mx-auto md:px-4 md:static md:flex-1 md:max-w-[512px] md:shadow-none md:bg-transparent md:border-0"
974             id="search-content"
975                          :class="{
976                'block absolute z-10 w-full top-full left-0 bg-header shadow-sm': searchOpen,
977                'hidden': !searchOpen
978             }"
979                          x-show="searchOpen"
980                         @click.outside="searchOpen = false; document.getElementById('search-overlay').classList.add('hidden')"
981             @toggle-search.window="searchOpen=!searchOpen; document.getElementById('search-overlay').classList.toggle('hidden')"
982                     >
983            
983<script>
984    function initMiniSearchComponent() {
985        "use strict";
986
987        return {
988            show:false,
989            formSelector: "#search_mini_form",
990            url: "https://www.voetbalshirtskoning.nl/search/ajax/suggest/",
991            destinationSelector: "#search_autocomplete",
992            templates: {"term":{"title":"Termen zoeken","template":"Hyva_SmileElasticsuite::core\/autocomplete\/term.phtml"},"product":{"title":"Producten","template":"Hyva_SmileElasticsuite::catalog\/autocomplete\/product.phtml"},"category":{"title":"Categorie\u00ebn","template":"Hyva_SmileElasticsuite::catalog\/autocomplete\/category.phtml"},"product_attribute":{"title":"Attributen","template":"Hyva_SmileElasticsuite::catalog\/autocomplete\/product_attribute.phtml","titleRenderer":"renderEsAutocompleteTitleAttribute"},"cms_page":{"title":"Cms page","template":"Hyva_SmileElasticsuite::cms-search\/autocomplete\/cms.phtml"}},
993            priceFormat: {"pattern":"%s","precision":2,"requiredPrecision":2,"decimalSymbol":",","groupSymbol":".","groupLength":3,"integerRequired":false},
994            minSearchLength: 1,
995            searchResultsByType: {},
996            currentRequest: null,
997            searchRequest: '',
998            searchUrl: "https://www.voetbalshirtskoning.nl/catalogsearch/result/?q=",
999            showSearchOverlay: false,
1000
1001            /**
1002             * Get search results.
1003             */
1004            getSearchResults: function () {
1005                let value = document.querySelector('#search').value.trim();
1006
1007                if (value.length < parseInt(this.minSearchLength, 10)) {
1008                    this.searchResultsByType = [];
1009
1010                    return false;
1011                }
1012
1013                let url = this.url + '?' + new URLSearchParams({
1014                    q: document.querySelector('#search').value,
1015                    _: Date.now()
1016                }).toString();
1017
1018                if (this.currentRequest !== null) {
1019                    this.currentRequest.abort();
1020                }
1021                this.currentRequest = new AbortController();
1022
1023                fetch(url, {
1024                    method: 'GET',
1025                    signal: this.currentRequest.signal,
1026                }).then((response) => {
1027                    if (response.ok) {
1028                        return response.json();
1029                    }
1030                }).then((data)  => {
1031                    this.show = data.length > 0;
1032
1033                    this.searchResultsByType = data.reduce((acc, result) => {
1034                        if (! acc[result.type]) acc[result.type] = [];
1035                        acc[result.type].push(result);
1036                        return acc;
1037                    }, {});
1038
1039                    if (this.show) {
1040                        document.getElementById('search-overlay').classList.remove('hidden');
1041
1042                                            }
1043                }).catch((error) => {});
1044            }
1045        }
1046    }
1047</script>
1047
1048<div id="search-content" x-show="true">
1049    <div class="relative pb-3 pt-2 px-4 md:p-0 "
1050         x-data="initMiniSearchComponent()"
1051         :class="{ 'z-40': show || showSearchOverlay }"
1052         @click.outside="show = false; document.getElementById('search-overlay').classList.add('hidden')"
1053         @focusout="if ($event.relatedTarget && !$el.contains($event.relatedTarget)) show = false"
1054         @close-search-autocomplete.window="show = false"
1055         x-effect="document.getElementById('search-overlay').classList.toggle('hidden', !show && !showSearchOverlay)"
1056    >
1057        <form class="form minisearch" id="search_mini_form" action="https://www.voetbalshirtskoning.nl/catalogsearch/result/" method="get">
1058            <div class="relative">
1059                <label for="search" class="sr-only">Zoek</label>
1060                <input id="search"
1061                       aria-label="Zoek"
1062                       class="rounded-full py-[9px] bg-search-field shadow-none
1063                       focus:!shadow-none w-full pr-11 text-[1rem] text-search-field
1064                       placeholder:text-elements-black-400 !border-search-field md:text-[0.875rem]"
1065                       x-on:input.debounce="getSearchResults()"
1066                       x-on:focus="showSearchOverlay = true"
1067                       x-on:blur="showSearchOverlay = false"
1068                       x-model="searchRequest"
1069                       x-ref="searchInput"
1070                       type="text"
1071                       autocapitalize="off" autocomplete="off" autocorrect="off"
1072                       name="q"
1073                       value=""
1074                       placeholder="Waar&#x20;ben&#x20;je&#x20;naar&#x20;op&#x20;zoek&#x3F;"
1075                       maxlength="128"
1076                       data-testid="search-input"
1077                />
1078                <button class="absolute right-1 top-0 flex w-10 h-10 items-center justify-center text-search-field-icon"
1079                        data-testid="search-button"
1080                >
1081                    <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" width="20" height="20" role="img">
1082  <path stroke-linecap="round" stroke-linejoin="round" d="M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z"/>
1083<title>search</title></svg>
1084                </button>
1085            </div>
1086            <div id="search_autocomplete" class="search-autocomplete relative w-full" x-show="show" style="display:none;">
1087                <div class="absolute bg-white z-50 w-full shadow-2xl rounded-sm px-4 pb-2 top-2">
1088                    <template x-for="searchResultByType in Object.values(searchResultsByType)">
1089                        <div>
1090                            <template x-if="searchResultByType.hasOwnProperty(0) && templates[searchResultByType[0].type].title && templates[searchResultByType[0].type].titleRenderer === undefined">
1091                                <div class="font-semibold mt-4" x-text="templates[searchResultByType[0].type].title"></div>
1092                            </template>
1093                            <template x-if="searchResultByType.hasOwnProperty(0) && templates[searchResultByType[0].type].titleRenderer !== undefined">
1094                                <div class="font-bold pt-2 pl-2 text-center" x-text="window[templates[searchResultByType[0].type].titleRenderer](searchResultByType)"></div>
1095                            </template>
1096
1097                            <template x-for="searchResult in searchResultByType">
1098                                <div class="border-b border-primary last-of-type:border-b-0">
1099                                                                            <template x-if="searchResult.type == 'term'">
1100    <a class="search-autocomplete-category-link"
1101       x-bind:href="'https://www.voetbalshirtskoning.nl/catalogsearch/result/?q=' + searchResult.title"
1102       :title="searchResult.title">
1103        <span class="text-sm" x-text="searchResult.title"></span>
1104        <span class="text-sm" x-text="'(' + searchResult.num_results + ')'"></span>
1105        <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" width="16" height="16" role="img">
1106  <path stroke-linecap="round" stroke-linejoin="round" d="M9 5l7 7-7 7"/>
1107<title>chevron-right</title></svg>
1108    </a>
1109</template>                                                                            <template x-if="searchResult.type == 'product'">
1110    <a class="w-full block py-4" :href="searchResult.url" :title="searchResult.title">
1111        <div class="flex">
1112            <div class="overflow-hidden rounded max-h-17 w-12 relative">
1113                <img :src="searchResult.image" class="object-contain object-center inline-block max-w-full h-full" width="48" height="68"/>
1114            </div>
1115            <div class="flex-1 pl-4">
1116                <div class="text-sm font-semibold mb-1" x-text="searchResult.title"></div>
1117                            </div>
1118        </div>
1119    </a>
1120</template>                                                                            <template x-if="searchResult.type == 'category'">
1121    <a class="search-autocomplete-category-link"
1122       :href="searchResult.url" :title="searchResult.title">
1123        <span class="text-sm" x-text="searchResult.title"></span>
1124        <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" width="16" height="16" role="img">
1125  <path stroke-linecap="round" stroke-linejoin="round" d="M9 5l7 7-7 7"/>
1126<title>chevron-right</title></svg>
1127    </a>
1128</template>                                                                            <template x-if="searchResult.type == 'product_attribute'"><a class="w-full block p-2" :href="searchResult.url" :title="searchResult.title"><span class="text-sm" x-text="searchResult.title"></span> <span class="text-xs uppercase text-gray-500" x-text="searchResult.attribute_label" style="vertical-align: super;"></span></a></template>
1128<script>
1129    function renderEsAutocompleteTitleAttribute(data)
1130    {
1131        data = data.filter(function(item) {
1132            return item.type === 'product_attribute';
1133        }).map(function(item) {
1134            return item['attribute_label']
1135        }).reduce(function(prev, item) {
1136            if (item in prev) {
1137                prev[item]++;
1138            } else {
1139                prev[item] = 1;
1140            }
1141            return prev;
1142        }, {});
1143
1144        data = Object.entries(data).sort(function(item1, item2) {
1145            return item2[1] - item1[1]
1146        }).map(function(item) {return item[0]});
1147
1148        if (data.length > 2) {
1149            data = data.slice(0, 2);
1150            data.push('...');
1151        }
1152
1153        return data.join(', ');
1154    }</script>
1154                                                                            <template x-if="searchResult.type == 'cms_page'"><a class="w-full block p-2" :href="searchResult.url" :title="searchResult.title"><span class="text-sm" x-text="searchResult.title"></span></a></template>                                                                    </div>
1155                            </template>
1156
1157                            <template x-if="searchResultByType[0].type === 'product'">
1158                                <div class="search-autocomplete-show-all-wrapper text-center">
1159                                    <a :href="searchUrl + searchRequest" class="search-autocomplete-show-all">
1160                                        Toon&#x20;alle&#x20;resultaten                                    </a>
1161                                </div>
1162                            </template>
1163                        </div>
1164                    </template>
1165                </div>
1166            </div>
1167                    </form>
1168    </div>
1169</div>        </div>
1170
1171        <div class="hidden md:block mx-5 lg:mr-10 lg:ml-auto">
1172            <p class="thuiswinkel-header-logo"><a href="https://www.thuiswinkel.org/leden/voetbalshirtskoning.nl/certificaat" target="_blank" rel="nofollow noopener"><img class="thuiswinkel-logo" src="https://www.voetbalshirtskoning.nl/img/JfaXKao-H5n1WgxWvlT2WQmLY6nQKEvF7KoSsXab5gM/resize:fit:0:0/aHR0cHM6Ly93d3cudm9ldGJhbHNoaXJ0c2tvbmluZy5ubC9tZWRpYS93eXNpd3lnL1RodWlzd2lua2VsX1dhYXJib3JnX0tsZXVyX0hvcml6b250YWFsLnBuZw.png" alt="Thuiswinkel Waarborg" width="147" height="45" /></a></p>        </div>
1173
1174        <div class="flex items-center order-3 gap-2 lg:gap-6">
1175            <!--Search Icon-->
1176                            <button id="menu-search-icon"
1177                        class="inline-block no-underline btn-icon p-2"
1178                        @click.prevent="
1179                        searchOpen = !searchOpen;
1180                        document.getElementById('search-overlay').classList.toggle('hidden');
1181                        if (searchOpen) {
1182                            const tmp = document.createElement('input');
1183                            tmp.style.cssText = 'position:absolute;opacity:0;height:0;font-size:16px;';
1184                            document.body.appendChild(tmp);
1185                            tmp.focus();
1186                            $nextTick(() => {
1187                                const searchInput = document.querySelector('#search');
1188                                if (searchInput) { searchInput.focus(); searchInput.select(); }
1189                                tmp.remove();
1190                            });
1191                        }
1192                    "
1193                >
1194                <span class="sr-only label">
1195                    Zoek                </span>
1196
1197                    <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">
1198  <path stroke-linecap="round" stroke-linejoin="round" d="M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z"/>
1199<title>search</title></svg>
1200                </button>
1201            
1202            <!--Customer Icon & Dropdown-->
1203            <!-- BLOCK header.customer --><div class="elements-customer-menu relative inline-block md:ml-3 lg:ml-0">
1204    <a
1205        href="https&#x3A;&#x2F;&#x2F;www.voetbalshirtskoning.nl&#x2F;customer&#x2F;account&#x2F;"
1206        id="customer-menu"
1207        class="block btn-icon p-2"
1208        aria-label="Aanmelden"
1209        title="Aanmelden"
1210    >
1211        <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">
1212  <path stroke-linecap="round" stroke-linejoin="round" d="M5.121 17.804A13.937 13.937 0 0112 16c2.5 0 4.847.655 6.879 1.804M15 10a3 3 0 11-6 0 3 3 0 016 0zm6 2a9 9 0 11-18 0 9 9 0 0118 0z"/>
1213</svg>
1214    </a>
1215</div><!-- /BLOCK header.customer -->
1216                                        
1217            <!--Cart Icon-->
1218            <a id="menu-cart-icon"
1219                              class="relative inline-block no-underline btn-icon p-2"
1220               href="https://www.voetbalshirtskoning.nl/checkout/cart/index/"
1221            >
1222                <span class="sr-only label">
1223                    Cart                </span>
1224
1225                <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">
1226  <path stroke-linecap="round" stroke-linejoin="round" d="M3 3h2l.4 2M7 13h10l4-8H5.4M7 13L5.4 5M7 13l-2.293 2.293c-.63.63-.184 1.707.707 1.707H17m0 0a2 2 0 100 4 2 2 0 000-4zm-8 2a2 2 0 11-4 0 2 2 0 014 0z"/>
1227<title>shopping-cart</title></svg>
1228
1229                <span x-text="cart.summary_count"
1230                      class="minicart-summary-count"
1231                      :class="{
1232                        'hidden': !cart.summary_count,
1233                        'block': cart.summary_count }"
1234                ></span>
1235            </a>
1236
1237            <!--Cart Alert Popup-->
1238            
1238<script>
1239    function initCartAlert() {
1240        return {
1241            visible: false,
1242            cart: {},
1243            initialLoadProcessed: false,
1244            getData(data) {
1245                if (data.cart) {
1246                    this.cart = data.cart;
1247
1248                    if (!this.initialLoadProcessed) {
1249                        this.initialLoadProcessed = true;
1250                        this.checkShouldShow();
1251                    }
1252                }
1253            },
1254            checkShouldShow() {
1255                if (sessionStorage.getItem('cart_alert_session')) {
1256                    return;
1257                }
1258
1259                sessionStorage.setItem('cart_alert_session', '1');
1260
1261                if (!this.cart.summary_count || this.cart.summary_count < 1) {
1262                    return;
1263                }
1264
1265                document.body.classList.add('overflow-hidden');
1266                this.visible = true;
1267            },
1268            close() {
1269                document.body.classList.remove('overflow-hidden');
1270                this.visible = false;
1271            }
1272        }
1273    }
1274</script>
1274
1275<div x-data="initCartAlert()"
1276     @private-content-loaded.window="getData($event.detail.data)"
1277     x-cloak
1278     x-show="visible"
1279>
1280    <div class="backdrop top-[64px] md:top-[68px] cursor-pointer" @click="close()"></div>
1281    <div class="fixed md:absolute border-t-2 md:border-0 border-[#00B700] z-50
1282        w-full max-md:left-0 max-md:right-0 max-md:bottom-0 md:right-1
1283        md:top-[62px] rounded bg-container-background pt-8 px-6 pb-12
1284        md:pb-0 md:px-3 md:pt-3 md:max-w-[448px]">
1285        <div class="hidden md:block absolute bottom-full right-[50px] w-0 h-0
1286            border-l-8 border-l-transparent border-r-8 border-r-transparent
1287            border-b-[14px] border-b-[#F8FAFC]"></div>
1288        <div class="md:hidden absolute top-2 right-1.5 flex items-center
1289            justify-center w-[30px] h-[30px] rounded border
1290            border-[#E5E5E5] shadow" @click="close()">
1291            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" class="h-4 w-4 text-[#444]" width="12" height="12" role="img">
1292  <path fill-rule="evenodd" d="M4.293 4.293a1 1 0 011.414 0L10 8.586l4.293-4.293a1 1 0 111.414 1.414L11.414 10l4.293 4.293a1 1 0 01-1.414 1.414L10 11.414l-4.293 4.293a1 1 0 01-1.414-1.414L8.586 10 4.293 5.707a1 1 0 010-1.414z" clip-rule="evenodd"/>
1293<title>x</title></svg>
1294
1295        </div>
1296        <h3 class="text-xl text-primary-title mb-2 font-bold">Hey, welkom terug!</h3>
1297        <p class="text-primary mb-6">
1298            We hebben je producten bewaard van je vorige bezoek.        </p>
1299        <div class="flex justify-between items-center gap-2.5 max-md:flex-col-reverse">
1300            <button class="flex items-center gap-3 text-[#565454]" @click="close()">
1301                <svg xmlns="http://www.w3.org/2000/svg" width="12" height="24" viewBox="0 0 12 24" fill="none" class="h-6 w-3" role="img">
1302    <path d="M9.54801 6.58023L8.48701 5.52023L2.70801 11.2972C2.61486 11.3898 2.54093 11.4999 2.49048 11.6211C2.44003 11.7424 2.41406 11.8724 2.41406 12.0037C2.41406 12.1351 2.44003 12.2651 2.49048 12.3863C2.54093 12.5076 2.61486 12.6177 2.70801 12.7102L8.48701 18.4902L9.54701 17.4302L4.12301 12.0052L9.54801 6.58023Z" fill="currentColor"/>
1303<title>chevron-left</title></svg>
1304                <span>Verder winkelen</span>
1305            </button>
1306            <div class="gotocart-btn-wrapper py-3 w-full md:max-w-[256px]">
1307                <a href="https://www.voetbalshirtskoning.nl/checkout/cart/"
1308                   class="btn btn-primary action p-3 gap-3 w-full font-bold"
1309                        aria-label="Go&#x20;to&#x20;Cart&#x20;Page"
1310                >
1311                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" class="h-6 w-6" width="24" height="24" role="img">
1312  <path d="M3 1a1 1 0 000 2h1.22l.305 1.222a.997.997 0 00.01.042l1.358 5.43-.893.892C3.74 11.846 4.632 14 6.414 14H15a1 1 0 000-2H6.414l1-1H14a1 1 0 00.894-.553l3-6A1 1 0 0017 3H6.28l-.31-1.243A1 1 0 005 1H3zM16 16.5a1.5 1.5 0 11-3 0 1.5 1.5 0 013 0zM6.5 18a1.5 1.5 0 100-3 1.5 1.5 0 000 3z"/>
1313<title>shopping-cart</title></svg>
1314                    <span>Bekijk winkelwagen</span>
1315                </a>
1316            </div>
1317        </div>
1318    </div>
1319</div>
1320        </div>
1321    </div>
1322
1323    <!--Cart Drawer-->
1324    
1325    <!--Main Navigation-->
1326    </div>
1327<div id="search-overlay" class="search-overlay hidden cursor-pointer" @click="$dispatch('toggle-search',{});"></div><div class="nav-sections navigation "
1328     x-data="initMenuDesktop_6ac34b2eb349c()"
1329>
1330    <div class="nav-sections-container">
1331        <!-- desktop -->
1332        <div x-ref="nav-desktop" @load.window="setActiveMenu($root)">
1333            <nav
1334                class="w-full duration-150 ease-in-out transform relative min-h-0 transition-display text-[15px] desktop-nav
1335                flex justify-start"
1336            >
1337                                                        <div class="relative level-0 level-top group"
1338                                                  @mouseleave="level = 0; menuHeight = null; maxMenuHeight = null;">
1339                        <span class="flex items-center">
1340                            <a class="level-top-link level-0"
1341                               href="https://www.voetbalshirtskoning.nl/voetbaltenues/"
1342                               title="Voetbaltenues"
1343                               data-testid="desktop-menu-category-item-link"
1344                            >
1345                                <span class="py-1 block level-top-link-text">
1346                                    Voetbaltenues                                </span>
1347                            </a>
1348                        </span>
1349                                            </div>
1350                                                        <div class="relative level-0 level-top group"
1351                                                  @mouseleave="level = 0; menuHeight = null; maxMenuHeight = null;">
1352                        <span class="flex items-center">
1353                            <a class="level-top-link level-0"
1354                               href="https://www.voetbalshirtskoning.nl/voetbalshirts/"
1355                               title="Voetbalshirts"
1356                               data-testid="desktop-menu-category-item-link"
1357                            >
1358                                <span class="py-1 block level-top-link-text">
1359                                    Voetbalshirts                                </span>
1360                            </a>
1361                        </span>
1362                                            </div>
1363                                                        <div class="relative level-0 level-top group"
1364                                                  @mouseleave="level = 0; menuHeight = null; maxMenuHeight = null;">
1365                        <span class="flex items-center">
1366                            <a class="level-top-link level-0"
1367                               href="https://www.voetbalshirtskoning.nl/trainingspakken/"
1368                               title="Trainingspakken"
1369                               data-testid="desktop-menu-category-item-link"
1370                            >
1371                                <span class="py-1 block level-top-link-text">
1372                                    Trainingspakken                                </span>
1373                            </a>
1374                        </span>
1375                                            </div>
1376                                                        <div class="relative level-0 level-top group"
1377                                                  @mouseleave="level = 0; menuHeight = null; maxMenuHeight = null;">
1378                        <span class="flex items-center">
1379                            <a class="level-top-link level-0"
1380                               href="https://www.voetbalshirtskoning.nl/fanshop/"
1381                               title="Fanshop"
1382                               data-testid="desktop-menu-category-item-link"
1383                            >
1384                                <span class="py-1 block level-top-link-text">
1385                                    Fanshop                                </span>
1386                            </a>
1387                        </span>
1388                                            </div>
1389                                                        <div class="relative level-0 level-top group"
1390                                                  @mouseleave="level = 0; menuHeight = null; maxMenuHeight = null;">
1391                        <span class="flex items-center">
1392                            <a class="level-top-link level-0"
1393                               href="https://www.voetbalshirtskoning.nl/voetbaldoelen/"
1394                               title="Voetbaldoelen"
1395                               data-testid="desktop-menu-category-item-link"
1396                            >
1397                                <span class="py-1 block level-top-link-text">
1398                                    Voetbaldoelen                                </span>
1399                            </a>
1400                        </span>
1401                                            </div>
1402                                                        <div class="relative level-0 level-top group"
1403                                                  @mouseleave="level = 0; menuHeight = null; maxMenuHeight = null;">
1404                        <span class="flex items-center">
1405                            <a class="level-top-link level-0"
1406                               href="https://www.voetbalshirtskoning.nl/voetbalsokken/"
1407                               title="Voetbalsokken"
1408                               data-testid="desktop-menu-category-item-link"
1409                            >
1410                                <span class="py-1 block level-top-link-text">
1411                                    Voetbalsokken                                </span>
1412                            </a>
1413                        </span>
1414                                            </div>
1415                                                        <div class="relative level-0 level-top group"
1416                                                  @mouseleave="level = 0; menuHeight = null; maxMenuHeight = null;">
1417                        <span class="flex items-center">
1418                            <a class="level-top-link level-0"
1419                               href="https://www.voetbalshirtskoning.nl/voetballen/"
1420                               title="Voetballen"
1421                               data-testid="desktop-menu-category-item-link"
1422                            >
1423                                <span class="py-1 block level-top-link-text">
1424                                    Voetballen                                </span>
1425                            </a>
1426                        </span>
1427                                            </div>
1428                                                        <div class="relative level-0 level-top group"
1429                                                  @mouseleave="level = 0; menuHeight = null; maxMenuHeight = null;">
1430                        <span class="flex items-center">
1431                            <a class="level-top-link level-0"
1432                               href="https://www.voetbalshirtskoning.nl/voetbalshirt-bedrukken/"
1433                               title="Bedrukken"
1434                               data-testid="desktop-menu-category-item-link"
1435                            >
1436                                <span class="py-1 block level-top-link-text">
1437                                    Bedrukken                                </span>
1438                            </a>
1439                        </span>
1440                                            </div>
1441                                                        <div class="relative level-0 level-top group"
1442                                                  @mouseleave="level = 0; menuHeight = null; maxMenuHeight = null;">
1443                        <span class="flex items-center">
1444                            <a class="level-top-link level-0"
1445                               href="https://www.voetbalshirtskoning.nl/voetbalshirts-outlet/"
1446                               title="Sale"
1447                               data-testid="desktop-menu-category-item-link"
1448                            >
1449                                <span class="py-1 block level-top-link-text">
1450                                    Sale                                </span>
1451                            </a>
1452                        </span>
1453                                            </div>
1454                            </nav>
1455        </div>
1456    </div>
1457</div>
1458<script>
1459    'use strict';
1460
1461    const initMenuDesktop_6ac34b2eb349c = () => {
1462        return {
1463            
1464            setActiveMenu(menuNode) {
1465                const clean = (url) => url.replace(/\/$/, '').replace(/\.html$/, '');
1466                const currentUrl = clean(window.location.href.split('?')[0]);
1467
1468                let breadcrumbCategoryUrl = '';
1469                let blogUrl = '';
1470
1471                const breadcrumbItems = document.querySelectorAll('.breadcrumbs .item');
1472
1473                breadcrumbItems.forEach((item) => {
1474                    const link = item.querySelector('a');
1475                    const isProduct = item.classList.contains('product');
1476                    const isHome = item.classList.contains('home');
1477                    const isBlog = item.classList.contains('blog');
1478
1479                    if (link) {
1480                        const href = clean(link.href);
1481                        if (isBlog && !blogUrl) {
1482                            blogUrl = href;
1483                        }
1484                        if (!isHome && !isProduct) {
1485                            breadcrumbCategoryUrl = href;
1486                        }
1487                    }
1488                });
1489
1490                if (blogUrl) {
1491                    breadcrumbCategoryUrl = blogUrl;
1492                }
1493
1494                Array.from(menuNode.querySelectorAll('a')).forEach(link => {
1495                    const href = clean(link.href);
1496
1497                    if (href === currentUrl || (breadcrumbCategoryUrl && href === breadcrumbCategoryUrl)) {
1498                        const topLevel = link.closest('.level-0');
1499                        if (topLevel) {
1500                            const textSpan = topLevel.querySelector('.level-top-link-text');
1501                            if (textSpan) {
1502                                textSpan.classList.add('!border-b-desktop-nav-item-hover');
1503                            }
1504                        }
1505                    }
1506                });
1507            }
1508        }
1509    }
1510</script>
1510</header><main id="maincontent" class="page-main"><div id="contentarea" tabindex="-1"></div><div class="columns"><div class="column main"><div class="page messages">
1510<script>
1511        window.defaultSuccessMessageTimeout = 5000;
1512        function initMessages() {
1513        "use strict";
1514        return {
1515            messages: window.mageMessages || [],
1516            isEmpty() {
1517                return this.messages.reduce(
1518                    function (isEmpty, message) {
1519                        return isEmpty && message === undefined
1520                    }, true
1521                )
1522            },
1523            removeMessage(messageIndex) {
1524                this.messages[messageIndex] = undefined;
1525            },
1526            addMessages(messages, hideAfter) {
1527                messages.map((message) => {
1528                    this.messages = this.messages.concat(message);
1529                    if (hideAfter === undefined && message.type === 'success' && window.defaultSuccessMessageTimeout) {
1530                        hideAfter = window.defaultSuccessMessageTimeout;
1531                    }
1532                    if (hideAfter) {
1533                        this.setHideTimeOut(this.messages.length -1, hideAfter);
1534                    }
1535                });
1536            },
1537            setHideTimeOut(messageIndex, hideAfter) {
1538                setTimeout((messageIndex) => {
1539                    this.removeMessage(messageIndex);
1540                }, hideAfter, messageIndex);
1541            },
1542            eventListeners: {
1543                ['@messages-loaded.window'](event) {
1544                    this.addMessages(event.detail.messages, event.detail.hideAfter)
1545                },
1546                ['@private-content-loaded.window'](event) {
1547                    const data = event.detail.data;
1548                    if (
1549                        data.messages &&
1550                        data.messages.messages &&
1551                        data.messages.messages.length
1552                    ) {
1553                        this.addMessages(data.messages.messages);
1554                    }
1555                },
1556                ['@clear-messages.window']() {
1557                    this.messages = [];
1558                }
1559            }
1560        }
1561    }
1562</script>
1562
1563<section id="messages"
1564         x-data="initMessages()"
1565         x-bind="eventListeners"
1566         aria-live="assertive"
1567         role="alert"
1568>
1569    <template x-if="!isEmpty()">
1570        <div class="w-full">
1571            <div class="messages container mx-auto py-3">
1572                <template x-for="(message, index) in messages" :key="index">
1573                    <div>
1574                        <template x-if="message">
1575                            <div class="message flex items-center justify-between w-full py-3 px-4 bg-gray-600 text-white mb-2 font-normal gap-4" :class="message.type"
1576                                 :ui-id="'message-' + message.type"
1577                            >
1578                                <div class="flex items-center gap-2">
1579                                    <span class="shrink-0">
1580                                        <span x-show="message.type === 'success'">
1581                                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" width="24" height="24" role="img">
1582  <path fill-rule="evenodd" d="M10 18a8 8 0 100-16 8 8 0 000 16zm3.707-9.293a1 1 0 00-1.414-1.414L9 10.586 7.707 9.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4z" clip-rule="evenodd"/>
1583<title>check-circle</title></svg>
1584                                        </span>
1585                                        <span x-show="message.type === 'error'">
1586                                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" width="24" height="24" role="img">
1587  <path fill-rule="evenodd" d="M10 18a8 8 0 100-16 8 8 0 000 16zM8.707 7.293a1 1 0 00-1.414 1.414L8.586 10l-1.293 1.293a1 1 0 101.414 1.414L10 11.414l1.293 1.293a1 1 0 001.414-1.414L11.414 10l1.293-1.293a1 1 0 00-1.414-1.414L10 8.586 8.707 7.293z" clip-rule="evenodd"/>
1588<title>x-circle</title></svg>
1589                                        </span>
1590                                        <span x-show="message.type === 'notice'">
1591                                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor" class="text-[#C07600]" width="24" height="24" role="img">
1592    <path fill-rule="evenodd" d="M9.401 3.003c1.155-2 4.043-2 5.197 0l7.355 12.748c1.154 2-.29 4.5-2.599 4.5H4.645c-2.309 0-3.752-2.5-2.598-4.5L9.4 3.003ZM12 8.25a.75.75 0 0 1 .75.75v3.75a.75.75 0 0 1-1.5 0V9a.75.75 0 0 1 .75-.75Zm0 8.25a.75.75 0 1 0 0-1.5.75.75 0 0 0 0 1.5Z" clip-rule="evenodd"/>
1593<title>exclamation-triangle</title></svg>
1594                                        </span>
1595                                    </span>
1596                                    <span x-html="message.text"></span>
1597                                </div>
1598                                <button
1599                                    type="button"
1600                                    class="text-gray-600"
1601                                    aria-label="Close message"
1602                                    @click.prevent="removeMessage(index)"
1603                                >
1604                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" class="stroke-current" width="18" height="18" aria-hidden="true">
1605  <path fill-rule="evenodd" d="M4.293 4.293a1 1 0 011.414 0L10 8.586l4.293-4.293a1 1 0 111.414 1.414L11.414 10l4.293 4.293a1 1 0 01-1.414 1.414L10 11.414l-4.293 4.293a1 1 0 01-1.414-1.414L8.586 10 4.293 5.707a1 1 0 010-1.414z" clip-rule="evenodd"/>
1606</svg>
1607                                </button>
1608                            </div>
1609                        </template>
1610                    </div>
1611                </template>
1612            </div>
1613        </div>
1614    </template>
1615</section></div><div>
1616            <h3 class="title-font text-xl my-4">Welkom bij Voetbalshirtskoning</h3>
1617    
1618    <div class="grid grid-cols-2 sm:grid-cols-2&#x20;md&#x3A;grid-cols-4 my-2 gap-4">
1619                    <a href="https://www.voetbalshirtskoning.nl/voetbaltenues/"
1620    class="relative">
1621    <img class="w-full h-full object-cover hidden md:block"
1622                    alt="Voetbaltenues"
1623                 src="https://www.voetbalshirtskoning.nl/img/ednhmMuMHcN0xJp2pyzRW5dqV-dwBuDwfzOiMUKwLVQ/resize:fit:300:300/aHR0cHM6Ly93d3cudm9ldGJhbHNoaXJ0c2tvbmluZy5ubC9tZWRpYS93eXNpd3lnL3ZvZXRiYWx0ZW51ZXNfMS5qcGc.jpg"
1624         width="300"
1625         height="300"
1626                    loading="lazy"
1627            />
1628    <img class="w-full h-full object-cover md:hidden"
1629                    alt="Voetbaltenues"
1630                 src="https://www.voetbalshirtskoning.nl/img/JlvmUwbns8YGS48ghv--KGSDP43b79LHEBT0CfYtM8w
1630/resize:fit:200:200/aHR0cHM6Ly93d3cudm9ldGJhbHNoaXJ0c2tvbmluZy5ubC9tZWRpYS93eXNpd3lnL3ZvZXRiYWx0ZW51ZXNfMS5qcGc.jpg"
1631         width="200"
1632         height="200"
1633                    loading="lazy"
1634            />
1635            <div class="absolute bottom-0 w-full p-7 pt-11 bg-gradient-to-t to-transparent from-gray-800/75">
1636            <div
1637                class="block text-white text-lg leading-7 font-bold text-center flex items-center gap-1"
1638            >
1639                <span>Voetbaltenues</span>
1640                <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" width="16" height="16" role="img">
1641  <path stroke-linecap="round" stroke-linejoin="round" d="M14 5l7 7m0 0l-7 7m7-7H3"/>
1642<title>arrow-right</title></svg>
1643            </div>
1644        </div>
1645        </a>                    <a href="https://www.voetbalshirtskoning.nl/voetbalshirts/"
1646    class="relative">
1647    <img class="w-full h-full object-cover hidden md:block"
1648                    alt="Voetbalshirts"
1649                 src="https://www.voetbalshirtskoning.nl/img/_mx-1sq5NJ5eOS2lWafnNo4sZ98SgEQ46BudGC6q7TQ/resize:fit:300:300/aHR0cHM6Ly93d3cudm9ldGJhbHNoaXJ0c2tvbmluZy5ubC9tZWRpYS93eXNpd3lnL3ZvZXRiYWxzaGlydHMuanBn.jpg"
1650         width="300"
1651         height="300"
1652                    loading="lazy"
1653            />
1654    <img class="w-full h-full object-cover md:hidden"
1655                    alt="Voetbalshirts"
1656                 src="https://www.voetbalshirtskoning.nl/img/69kXj5JZcOIvZWlha3wAB3pdtXSm7YWbbuIpqV2ea_Y/resize:fit:200:200/aHR0cHM6Ly93d3cudm9ldGJhbHNoaXJ0c2tvbmluZy5ubC9tZWRpYS93eXNpd3lnL3ZvZXRiYWxzaGlydHMuanBn.jpg"
1657         width="200"
1658         height="200"
1659                    loading="lazy"
1660            />
1661            <div class="absolute bottom-0 w-full p-7 pt-11 bg-gradient-to-t to-transparent from-gray-800/75">
1662            <div
1663                class="block text-white text-lg leading-7 font-bold text-center flex items-center gap-1"
1664            >
1665                <span>Voetbalshirts</span>
1666                <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" width="16" height="16" role="img">
1667  <path stroke-linecap="round" stroke-linejoin="round" d="M14 5l7 7m0 0l-7 7m7-7H3"/>
1668<title>arrow-right</title></svg>
1669            </div>
1670        </div>
1671        </a>                    <a href="https://www.voetbalshirtskoning.nl/trainingspakken/"
1672    class="relative">
1673    <img class="w-full h-full object-cover hidden md:block"
1674                    alt="Voetbal Trainingspak"
1675                 src="https://www.voetbalshirtskoning.nl/img/YmfyQb-Re-iyaGIyHWTsuNNVEfZVSjd6xr53Vpet4WM/resize:fit:300:300/aHR0cHM6Ly93d3cudm9ldGJhbHNoaXJ0c2tvbmluZy5ubC9tZWRpYS93eXNpd3lnL3RyYWluaW5nc3Bha2tlbi5qcGc.jpg"
1676         width="300"
1677         height="300"
1678                    loading="lazy"
1679            />
1680    <img class="w-full h-full object-cover md:hidden"
1681                    alt="Voetbal Trainingspak"
1682                 src="https://www.voetbalshirtskoning.nl/img/uFt7JLLy7am_1sajE6WySXVw84IHwEn4eC2dRKdfhEQ/resize:fit:200:200/aHR0cHM6Ly93d3cudm9ldGJhbHNoaXJ0c2tvbmluZy5ubC9tZWRpYS93eXNpd3lnL3RyYWluaW5nc3Bha2tlbi5qcGc.jpg"
1683         width="200"
1684         height="200"
1685                    loading="lazy"
1686            />
1687            <div class="absolute bottom-0 w-full p-7 pt-11 bg-gradient-to-t to-transparent from-gray-800/75">
1688            <div
1689                class="block text-white text-lg leading-7 font-bold text-center flex items-center gap-1"
1690            >
1691                <span>Trainingspakken</span>
1692                <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" width="16" height="16" role="img">
1693  <path stroke-linecap="round" stroke-linejoin="round" d="M14 5l7 7m0 0l-7 7m7-7H3"/>
1694<title>arrow-right</title></svg>
1695            </div>
1696        </div>
1697        </a>                    <a href="https://www.voetbalshirtskoning.nl/voetbalshirts-outlet/"
1698    class="relative">
1699    <img class="w-full h-full object-cover hidden md:block"
1700                    alt="Voetbalshirts outlet"
1701                 src="https://www.voetbalshirtskoning.nl/img/7hG-3Q5JR8pVDZq2boqmVZIrDGioNjuSEgp0TesLJM0/resize:fit:300:300/aHR0cHM6Ly93d3cudm9ldGJhbHNoaXJ0c2tvbmluZy5ubC9tZWRpYS93eXNpd3lnL3ZvZXRiYWxzaGlydHMtb3V0bGV0LnBuZw.png"
1702         width="300"
1703         height="300"
1704                    loading="lazy"
1705            />
1706    <img class="w-full h-full object-cover md:hidden"
1707                    alt="Voetbalshirts outlet"
1708                 src="https://www.voetbalshirtskoning.nl/img/sTzkhmGwBYqGnGgVY3PHMic0Kq4w60ymY4BJcoawIbQ/resize:fit:200:200/aHR0cHM6Ly93d3cudm9ldGJhbHNoaXJ0c2tvbmluZy5ubC9tZWRpYS93eXNpd3lnL3ZvZXRiYWxzaGlydHMtb3V0bGV0LnBuZw.png"
1709         width="200"
1710         height="200"
1711                    loading="lazy"
1712            />
1713            <div class="absolute bottom-0 w-full p-7 pt-11 bg-gradient-to-t to-transparent from-gray-800/75">
1714            <div
1715                class="block text-white text-lg leading-7 font-bold text-center flex items-center gap-1"
1716            >
1717                <span>Sale</span>
1718                <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" width="16" height="16" role="img">
1719  <path stroke-linecap="round" stroke-linejoin="round" d="M14 5l7 7m0 0l-7 7m7-7H3"/>
1720<title>arrow-right</title></svg>
1721            </div>
1722        </div>
1723        </a>            </div>
1724</div>
1724<script>
1725        'use strict';
1726
1727        function initSliderComponent() {
1728            return {
1729                active: 0,
1730                itemCount: 0,
1731                getSlider() {
1732                    return this.$root.querySelector('.js_slides');
1733                },
1734                pageSize: 4,
1735                pageFillers: 0,
1736                isScrollPreviousButtonVisible: false,
1737                isScrollNextButtonVisible: false,
1738                calcPageSize() {
1739                    const slider = this.getSlider();
1740                    if (slider) {
1741                        this.itemCount = slider.querySelectorAll('.js_slide').length;
1742                        this.pageSize = Math.round(slider.clientWidth / slider.querySelector('.js_slide').clientWidth);
1743                        this.pageFillers = (
1744                            this.pageSize * Math.ceil(this.itemCount / this.pageSize)
1745                        ) - this.itemCount;
1746                        this.isScrollPreviousButtonVisible = slider.scrollLeft !== 0;
1747                        this.isScrollNextButtonVisible = slider.scrollLeft + slider.clientWidth < slider.scrollWidth;
1748                    } else {
1749                        this.isScrollPreviousButtonVisible = false;
1750                        this.isScrollNextButtonVisible = false;
1751                    }
1752                },
1753                calcActive() {
1754                    const slider = this.getSlider();
1755                    if (slider) {
1756                        const sliderItems = this.itemCount + this.pageFillers;
1757                        const calculatedActiveSlide = slider.scrollLeft / (slider.scrollWidth / sliderItems);
1758                        this.active = Math.round(calculatedActiveSlide / this.pageSize) * this.pageSize;
1759                        this.isScrollPreviousButtonVisible = slider.scrollLeft !== 0;
1760                        this.isScrollNextButtonVisible = slider.scrollLeft + slider.clientWidth < slider.scrollWidth;
1761                    } else {
1762                        this.isScrollPreviousButtonVisible = false;
1763                        this.isScrollNextButtonVisible = false;
1764                    }
1765                },
1766                scrollPrevious() {
1767                    this.scrollTo(this.active - this.pageSize);
1768                },
1769                scrollNext() {
1770                    this.scrollTo(this.active + this.pageSize);
1771                },
1772                scrollTo(idx) {
1773                    const slider = this.getSlider();
1774                    if (slider) {
1775                        const slideWidth = slider.scrollWidth / (this.itemCount + this.pageFillers);
1776                        slider.scrollLeft = Math.floor(slideWidth) * idx;
1777                        this.active = idx;
1778                    }
1779                }
1780            }
1781        }
1782    </script>
1782
1783    <section class=" mb-10 lg:mb-20 product-slider-wrapper" x-data="initSliderComponent()" x-init="calcPageSize();" @resize.window.debounce="calcPageSize(); $nextTick( function() { calcActive() })">
1784                    <div class="relative">
1785                                    <h2 class="text-lg font-semibold mb-2 text-dark md:text-center py-6">
1786                        Populair                    </h2>
1787                                <div class="relative w-full overflow-x-hidden products mode-grid mobile-mode-grid">
1788                    <div class="relative flex flex-nowrap overflow-auto transition-all js_slides snap" @scroll.debounce="calcActive">
1789                                                    <div class="flex shrink-0 js_slide w-1/2 sm:w-1/3 lg:w-1/4">
1790                                <div class="mx-1 product-item w-full" data-product-sku="P1003">
1791                                     <form method="post" action="https://www.voetbalshirtskoning.nl/checkout/cart/add/uenc/aHR0cHM6Ly93d3cudm9ldGJhbHNoaXJ0c2tvbmluZy5ubC8~/product/17766/" data-testid="product-item" class="item product product-item group product_addtocart_form product-item flex flex-col w-full h-full
1792            " data-product-sku="P1003">
1793    <input name="form_key" type="hidden" value="i9tjDByFy1Iir9hF">    <input type="hidden" name="product" value="17766">
1794            <div class="product-item-info">
1795            <div class="product-item-left">
1796                                                                    
1797                                <a href="https://www.voetbalshirtskoning.nl/nederlands-elftal-voetbaltenue-eigen-naam-oranje-zwart.html" class="product photo product-item-photo block mx-auto" tabindex="-1" data-testid="salable-product-item">
1798                                            <span class="block product-image-container product-image-container-">
1799    <span class="block relative product-image-wrapper overflow-hidden rounded-lg">
1800        <img class="object-contain absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2
1801        rounded-lg product-image-photo" x-data="" @update-gallery-17766.window="$root.src = $event.detail" src="https://www.voetbalshirtskoning.nl/img/wPhhpyXzgYcWWwmCTW6V4MGX6RStH0cooHaB8Xh9q8Q/resize:fit:300:300/aHR0cHM6Ly93d3cudm9ldGJhbHNoaXJ0c2tvbmluZy5ubC9tZWRpYS9jYXRhbG9nL3Byb2R1Y3Qvbi9lL25lZGVybGFuZHMtZWxmdGFsLXZvZXRiYWx0ZW51ZS10aHVpcy1laWdlbi1uYWFtLW9yYW5qZS16d2FydC1raW5kLXNlbmlvci5qcGc_d2lkdGg9MzAwJmhlaWdodD0zMDA.jpg" loading="lazy" width="300" height="300" alt="Nederlands Elftal Voetbaltenue - Eigen Naam - Oranje-Zwart - Kind en Volwassenen" title="Nederlands Elftal Voetbaltenue - Eigen Naam - Oranje-Zwart - Kind en Volwassenen">
1802    </span>
1803</span>
1804
1805<style>
1806    .product-image-container- span.product-image-wrapper {
1807        padding-bottom: 100%;
1808    }
1809
1810    @media (min-width: 768px) {
1811        .product-image-container- .product-image-photo {
1812            height: 300px;
1813        }
1814    }
1815</style>                                    </a>
1816                            </div>
1817            <div class="product-item-right ">
1818                <div class="product-info flex flex-col grow">
1819                    <div class="product-details md:bg-white md:group-hover:-mt-12">
1820                                                <div class="product name product-item-name">
1821                            <a class="product-item-link" href="https://www.voetbalshirtskoning.nl/nederlands-elftal-voetbaltenue-eigen-naam-oranje-zwart.html" data-testid="salable-product-name-link">
1822                                Nederlands Elftal Voetbaltenue - Eigen Naam - Oranje-Zwart - Kind en Volwassenen                            </a>
1823                        </div>
1824
1825                                                    <div class="product-reviews-summary">
1826        <div class="rating-summary flex">
1827                                                                <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 20 20" fill="currentColor" class="text-secondary w-5 h-5" width="24" height="24" role="img">
1828  <path d="M9.049 2.927c.3-.921 1.603-.921 1.902 0l1.07 3.292a1 1 0 00.95.69h3.462c.969 0 1.371 1.24.588 1.81l-2.8 2.034a1 1 0 00-.364 1.118l1.07 3.292c.3.921-.755 1.688-1.54 1.118l-2.8-2.034a1 1 0 00-1.175 0l-2.8 2.034c-.784.57-1.838-.197-1.539-1.118l1.07-3.292a1 1 0 00-.364-1.118L2.98 8.72c-.783-.57-.38-1.81.588-1.81h3.461a1 1 0 00.951-.69l1.07-3.292z"></path>
1829<title>star</title></svg>
1830                                                        <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 20 20" fill="currentColor" class="text-secondary w-5 h-5" width="24" height="24" role="img">
1831  <path d="M9.049 2.927c.3-.921 1.603-.921 1.902 0l1.07 3.292a1 1 0 00.95.69h3.462c.969 0 1.371 1.24.588 1.81l-2.8 2.034a1 1 0 00-.364 1.118l1.07 3.292c.3.921-.755 1.688-1.54 1.118l-2.8-2.034a1 1 0 00-1.175 0l-2.8 2.034c-.784.57-1.838-.197-1.539-1.118l1.07-3.292a1 1 0 00-.364-1.118L2.98 8.72c-.783-.57-.38-1.81.588-1.81h3.461a1 1 0 00.951-.69l1.07-3.292z"></path>
1832<title>star</title></svg>
1833                                                        <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 20 20" fill="currentColor" class="text-secondary w-5 h-5" width="24" height="24" role="img">
1834  <path d="M9.049 2.927c.3-.921 1.603-.921 1.902 0l1.07 3.292a1 1 0 00.95.69h3.462c.969 0 1.371 1.24.588 1.81l-2.8 2.034a1 1 0 00-.364 1.118l1.07 3.292c.3.921-.755 1.688-1.54 1.118l-2.8-2.034a1 1 0 00-1.175 0l-2.8 2.034c-.784.57-1.838-.197-1.539-1.118l1.07-3.292a1 1 0 00-.364-1.118L2.98 8.72c-.783-.57-.38-1.81.588-1.81h3.461a1 1 0 00.951-.69l1.07-3.292z"></path>
1835<title>star</title></svg>
1836                                                        <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 20 20" fill="currentColor" class="text-secondary w-5 h-5" width="24" height="24" role="img">
1837  <path d="M9.049 2.927c.3-.921 1.603-.921 1.902 0l1.07 3.292a1 1 0 00.95.69h3.462c.969 0 1.371 1.24.588 1.81l-2.8 2.034a1 1 0 00-.364 1.118l1.07 3.292c.3.921-.755 1.688-1.54 1.118l-2.8-2.034a1 1 0 00-1.175 0l-2.8 2.034c-.784.57-1.838-.197-1.539-1.118l1.07-3.292a1 1 0 00-.364-1.118L2.98 8.72c-.783-.57-.38-1.81.588-1.81h3.461a1 1 0 00.951-.69l1.07-3.292z"></path>
1838<title>star</title></svg>
1839                                                        <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 20 20" fill="currentColor" class="text-secondary w-5 h-5" width="24" height="24" role="img">
1840  <path d="M9.049 2.927c.3-.921 1.603-.921 1.902 0l1.07 3.292a1 1 0 00.95.69h3.462c.969 0 1.371 1.24.588 1.81l-2.8 2.034a1 1 0 00-.364 1.118l1.07 3.292c.3.921-.755 1.688-1.54 1.118l-2.8-2.034a1 1 0 00-1.175 0l-2.8 2.034c-.784.57-1.838-.197-1.539-1.118l1.07-3.292a1 1 0 00-.364-1.118L2.98 8.72c-.783-.57-.38-1.81.588-1.81h3.461a1 1 0 00.951-.69l1.07-3.292z"></path>
1841<title>star</title></svg>
1842                                                                                                            </div>
1843        <div class="reviews-actions">
1844            <a class="action view" href="https://www.voetbalshirtskoning.nl/nederlands-elftal-voetbaltenue-eigen-naam-oranje-zwart.html#reviews">4                 <span>Reviews                </span>
1845            </a>
1846        </div>
1847    </div>                        
1848                        
1849                        
1850                        <div class="product-price-wrapper" x-data="initPriceBox__6ac34b468ffc3()" x-defer="intersect" @update-prices-17766.window="updatePrice($event.detail);">
1851                            <div class="price-box price-final_price" data-role="priceBox" data-product-id="17766" data-price-box="product-id-17766"><span class="normal-price">
1852    <span x-data x-id="['product\u002Dprice\u002D17766']" class="price-container price-final_price tax weee">
1853            <span class="price-label">Voor</span>
1854        <span :id="$id('product\u002Dprice\u002D17766')" data-price-amount="39.95" data-price-type="finalPrice" class="price-wrapper "><span class="price">39,95</span></span>
1855        </span></span></div>                        </div>
1856
1857                                            </div>
1858
1859                    
1859<script>
1860                        function initPriceBox__6ac34b468ffc3()
1861                        {
1862                            return {
1863                                updatePrice(priceData) {
1864                                    const regularPriceLabel = this.$root.querySelector('.normal-price .price-label');
1865                                    const regularPriceElement = this.$root.querySelector('.normal-price .price-wrapper .price');
1866                                    if (priceData.finalPrice.amount < priceData.oldPrice.amount) {
1867                                        regularPriceLabel.classList.add('hidden');
1868                                    } else {
1869                                        regularPriceLabel.classList.remove('hidden');
1870                                    }
1871                                    regularPriceElement.innerText = hyva.formatPrice(priceData.finalPrice.amount);
1872                                }
1873                            }
1874                        }
1875                    </script>
1875
1876
1877                    <div class="product-item-inner">
1878                        
1879                                                    <div class="addtocart-btn-wrapper md:h-0 md:group-hover:h-12">
1880                                <button class="btn btn-primary action tocart px-6 md:px-2" data-testid="add-to-cart-btn" aria-label="In winkelwagen">
1881                                    <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 20 20" fill="currentColor" class="h-5 w-5" width="20" height="20" role="img">
1882  <path d="M3 1a1 1 0 000 2h1.22l.305 1.222a.997.997 0 00.01.042l1.358 5.43-.893.892C3.74 11.846 4.632 14 6.414 14H15a1 1 0 000-2H6.414l1-1H14a1 1 0 00.894-.553l3-6A1 1 0 0017 3H6.28l-.31-1.243A1 1 0 005 1H3zM16 16.5a1.5 1.5 0 11-3 0 1.5 1.5 0 013 0zM6.5 18a1.5 1.5 0 100-3 1.5 1.5 0 000 3z"></path>
1883<title>shopping-cart</title></svg>
1884                                    <span>In winkelwagen</span>
1885                                </button>
1886                            </div>
1887                                                                                                                                                </div>
1888                </div>
1889            </div>
1890        </div>
1891        </form>                                </div>
1892                            </div>
1893                                                    <div class="flex shrink-0 js_slide w-1/2 sm:w-1/3 lg:w-1/4">
1894                                <div class="mx-1 product-item w-full" data-product-sku="spain-set-yamal">
1895                                     <form method="post" action="https://www.voetbalshirtskoning.nl/checkout/cart/add/uenc/aHR0cHM6Ly93d3cudm9ldGJhbHNoaXJ0c2tvbmluZy5ubC8~/product/16831/" data-testid="product-item" class="item product product-item group product_addtocart_form product-item flex flex-col w-full h-full
1896            " data-product-sku="spain-set-yamal">
1897    <input name="form_key" type="hidden" value="i9tjDByFy1Iir9hF">    <input type="hidden" name="product" value="16831">
1898            <div class="product-item-info">
1899            <div class="product-item-left">
1900                                                                    
1901                                <a href="https://www.voetbalshirtskoning.nl/spanje-voetbaltenue-yamal-kind-en-volwassenen.html" class="product photo product-item-photo block mx-auto" tabindex="-1" data-testid="salable-product-item">
1902                                            <span class="block product-image-container product-image-container-">
1903    <span class="block relative product-image-wrapper overflow-hidden rounded-lg">
1904        <img class="object-contain absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2
1905        rounded-lg product-image-photo" x-data="" @update-gallery-16831.window="$root.src = $event.detail" src="https://www.voetbalshirtskoning.nl/img/m6rPqt0S-qnRmBkcubA6zLeIRn4XnWzj-K13KCkIgks/resize:fit:300:300/aHR0cHM6Ly93d3cudm9ldGJhbHNoaXJ0c2tvbmluZy5ubC9tZWRpYS9jYXRhbG9nL3Byb2R1Y3Qvcy9wL3NwYW5qZS15YW1hbC12b2V0YmFsdGVudWUta2luZGVyZW4tdm9sd2Fzc2VuZW4uanBnP3dpZHRoPTMwMCZoZWlnaHQ9MzAw.jpg" loading="lazy" width="300" height="300" alt="Lamine Yamal Spanje Voetbaltenue - Kind en Volwassenen" title="Lamine Yamal Spanje Voetbaltenue - Kind en Volwassenen">
1906    </span>
1907</span>
1908
1909<style>
1910    .product-image-container- span.product-image-wrapper {
1911        padding-bottom: 100%;
1912    }
1913
1914    @media (min-width: 768px) {
1915        .product-image-container- .product-image-photo {
1916            height: 300px;
1917        }
1918    }
1919</style>                                    </a>
1920                            </div>
1921            <div class="product-item-right ">
1922                <div class="product-info flex flex-col grow">
1923                    <div class="product-details md:bg-white md:group-hover:-mt-12">
1924                                                <div class="product name product-item-name">
1925                            <a class="product-item-link" href="https://www.voetbalshirtskoning.nl/spanje-voetbaltenue-yamal-kind-en-volwassenen.html" data-testid="salable-product-name-link">
1926                                Lamine Yamal Spanje Voetbaltenue - Kind en Volwassenen                            </a>
1927                        </div>
1928
1929                                                    <div class="product-reviews-summary">
1930        <div class="rating-summary flex">
1931                                                                <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 20 20" fill="currentColor" class="text-secondary w-5 h-5" width="24" height="24" role="img">
1932  <path d="M9.049 2.927c.3-.921 1.603-.921 1.902 0l1.07 3.292a1 1 0 00.95.69h3.462c.969 0 1.371 1.24.588 1.81l-2.8 2.034a1 1 0 00-.364 1.118l1.07 3.292c.3.921-.755 1.688-1.54 1.118l-2.8-2.034a1 1 0 00-1.175 0l-2.8 2.034c-.784.57-1.838-.197-1.539-1.118l1.07-3.292a1 1 0 00-.364-1.118L2.98 8.72c-.783-.57-.38-1.81.588-1.81h3.461a1 1 0 00.951-.69l1.07-3.292z"></path>
1933<title>star</title></svg>
1934                                                        <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 20 20" fill="currentColor" class="text-secondary w-5 h-5" width="24" height="24" role="img">
1935  <path d="M9.049 2.927c.3-.921 1.603-.921 1.902 0l1.07 3.292a1 1 0 00.95.69h3.462c.969 0 1.371 1.24.588 1.81l-2.8 2.034a1 1 0 00-.364 1.118l1.07 3.292c.3.921-.755 1.688-1.54 1.118l-2.8-2.034a1 1 0 00-1.175 0l-2.8 2.034c-.784.57-1.838-.197-1.539-1.118l1.07-3.292a1 1 0 00-.364-1.118L2.98 8.72c-.783-.57-.38-1.81.588-1.81h3.461a1 1 0 00.951-.69l1.07-3.292z"></path>
1936<title>star</title></svg>
1937                                                        <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 20 20" fill="currentColor" class="text-secondary w-5 h-5" width="24" height="24" role="img">
1938  <path d="M9.049 2.927c.3-.921 1.603-.921 1.902 0l1.07 3.292a1 1 0 00.95.69h3.462c.969 0 1.371 1.24.588 1.81l-2.8 2.034a1 1 0 00-.364 1.118l1.07 3.292c.3.921-.755 1.688-1.54 1.118l-2.8-2.034a1 1 0 00-1.175 0l-2.8 2.034c-.784.57-1.838-.197-1.539-1.118l1.07-3.292a1 1 0 00-.364-1.118L2.98 8.72c-.783-.57-.38-1.81.588-1.81h3.461a1 1 0 00.951-.69l1.07-3.292z"></path>
1939<title>star</title></svg>
1940                                                        <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 20 20" fill="currentColor" class="text-secondary w-5 h-5" width="24" height="24" role="img">
1941  <path d="M9.049 2.927c.3-.921 1.603-.921 1.902 0l1.07 3.292a1 1 0 00.95.69h3.462c.969 0 1.371 1.24.588 1.81l-2.8 2.034a1 1 0 00-.364 1.118l1.07 3.292c.3.921-.755 1.688-1.54 1.118l-2.8-2.034a1 1 0 00-1.175 0l-2.8 2.034c-.784.57-1.838-.197-1.539-1.118l1.07-3.292a1 1 0 00-.364-1.118L2.98 8.72c-.783-.57-.38-1.81.588-1.81h3.461a1 1 0 00.951-.69l1.07-3.292z"></path>
1942<title>star</title></svg>
1943                                                        <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 20 20" fill="currentColor" class="text-secondary w-5 h-5" width="24" height="24" role="img">
1944  <path d="M9.049 2.927c.3-.921 1.603-.921 1.902 0l1.07 3.292a1 1 0 00.95.69h3.462c.969 0 1.371 1.24.588 1.81l-2.8 2.034a1 1 0 00-.364 1.118l1.07 3.292c.3.921-.755 1.688-1.54 1.118l-2.8-2.034a1 1 0 00-1.175 0l-2.8 2.034c-.784.57-1.838-.197-1.539-1.118l1.07-3.292a1 1 0 00-.364-1.118L2.98 8.72c-.783-.57-.38-1.81.588-1.81h3.461a1 1 0 00.951-.69l1.07-3.292z"></path>
1945<title>star</title></svg>
1946                                                                                                            </div>
1947        <div class="reviews-actions">
1948            <a class="action view" href="https://www.voetbalshirtskoning.nl/spanje-voetbaltenue-yamal-kind-en-volwassenen.html#reviews">5                 <span>Reviews                </span>
1949            </a>
1950        </div>
1951    </div>                        
1952                        
1953                        
1954                        <div class="product-price-wrapper" x-data="initPriceBox__6ac34b469e228()" x-defer="intersect" @update-prices-16831.window="updatePrice($event.detail);">
1955                            <div class="price-box price-final_price" data-role="priceBox" data-product-id="16831" data-price-box="product-id-16831"><span class="normal-price">
1956    <span x-data x-id="['product\u002Dprice\u002D16831']" class="price-container price-final_price tax weee">
1957            <span class="price-label">Voor</span>
1958        <span :id="$id('product\u002Dprice\u002D16831')" data-price-amount="39.95" data-price-type="finalPrice" class="price-wrapper "><span class="price">39,95</span></span>
1959        </span></span></div>                        </div>
1960
1961                                            </div>
1962
1963                    
1963<script>
1964                        function initPriceBox__6ac34b469e228()
1965                        {
1966                            return {
1967                                updatePrice(priceData) {
1968                                    const regularPriceLabel = this.$root.querySelector('.normal-price .price-label');
1969                                    const regularPriceElement = this.$root.querySelector('.normal-price .price-wrapper .price');
1970                                    if (priceData.finalPrice.amount < priceData.oldPrice.amount) {
1971                                        regularPriceLabel.classList.add('hidden');
1972                                    } else {
1973                                        regularPriceLabel.classList.remove('hidden');
1974                                    }
1975                                    regularPriceElement.innerText = hyva.formatPrice(priceData.finalPrice.amount);
1976                                }
1977                            }
1978                        }
1979                    </script>
1979
1980
1981                    <div class="product-item-inner">
1982                        
1983                                                    <div class="addtocart-btn-wrapper md:h-0 md:group-hover:h-12">
1984                                <button class="btn btn-primary action tocart px-6 md:px-2" data-testid="add-to-cart-btn" aria-label="In winkelwagen">
1985                                    <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 20 20" fill="currentColor" class="h-5 w-5" width="20" height="20" role="img">
1986  <path d="M3 1a1 1 0 000 2h1.22l.305 1.222a.997.997 0 00.01.042l1.358 5.43-.893.892C3.74 11.846 4.632 14 6.414 14H15a1 1 0 000-2H6.414l1-1H14a1 1 0 00.894-.553l3-6A1 1 0 0017 3H6.28l-.31-1.243A1 1 0 005 1H3zM16 16.5a1.5 1.5 0 11-3 0 1.5 1.5 0 013 0zM6.5 18a1.5 1.5 0 100-3 1.5 1.5 0 000 3z"></path>
1987<title>shopping-cart</title></svg>
1988                                    <span>In winkelwagen</span>
1989                                </button>
1990                            </div>
1991                                                                                                                                                </div>
1992                </div>
1993            </div>
1994        </div>
1995        </form>                                </div>
1996                            </div>
1997                                                    <div class="flex shrink-0 js_slide w-1/2 sm:w-1/3 lg:w-1/4">
1998                                <div class="mx-1 product-item w-full" data-product-sku="portugal-kit-ronaldo-b">
1999                                     <form method="post" action="https://www.voetbalshirtskoning.nl/checkout/cart/add/uenc/aHR0cHM6Ly93d3cudm9ldGJhbHNoaXJ0c2tvbmluZy5ubC8~/product/16187/" data-testid="product-item" class="item product product-item group product_addtocart_form product-item flex flex-col w-full h-full
2000            " data-product-sku="portugal-kit-ronaldo-b">
2001    <input name="form_key" type="hidden" value="0VZcE6MvMuJt2fW3">    <input type="hidden" name="product" value="16187">
2002            <div class="product-item-info">
2003            <div class="product-item-left">
2004                                                                    
2005                                <a href="https://www.voetbalshirtskoning.nl/portugal-voetbaltenue-ronaldo-thuis-kind-en-volwassenen.html" class="product photo product-item-photo block mx-auto" tabindex="-1" data-testid="salable-product-item">
2006                                            <span class="block product-image-container product-image-container-">
2007    <span class="block relative product-image-wrapper overflow-hidden rounded-lg">
2008        <img class="object-contain absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2
2009        rounded-lg product-image-photo" x-data="" @update-gallery-16187.window="$root.src = $event.detail" src="https://www.voetbalshirtskoning.nl/img/utiYQEvR_OzTLONoOYWF4sPmgA7hvIgk6Ns0zbMOlso/resize:fit:300:300/aHR0cHM6Ly93d3cudm9ldGJhbHNoaXJ0c2tvbmluZy5ubC9tZWRpYS9jYXRhbG9nL3Byb2R1Y3QvcC9vL3BvcnR1Z2FsLXZvZXRiYWx0ZW51ZS1yb25hbGRvLWtpbmQtdm9sd2Fzc2VuZW4uanBnP3dpZHRoPTMwMCZoZWlnaHQ9MzAw.jpg" loading="lazy" width="300" height="300" alt="Ronaldo Portugal Voetbaltenue Thuis - Kind en Volwassenen" title="Ronaldo Portugal Voetbaltenue Thuis - Kind en Volwassenen">
2010    </span>
2011</span>
2012
2013<style>
2014    .product-image-container- span.product-image-wrapper {
2015        padding-bottom: 100%;
2016    }
2017
2018    @media (min-width: 768px) {
2019        .product-image-container- .product-image-photo {
2020            height: 300px;
2021        }
2022    }
2023</style>                                    </a>
2024                            </div>
2025            <div class="product-item-right ">
2026                <div class="product-info flex flex-col grow">
2027                    <div class="product-details md:bg-white md:group-hover:-mt-12">
2028                                                <div class="product name product-item-name">
2029                            <a class="product-item-link" href="https://www.voetbalshirtskoning.nl/portugal-voetbaltenue-ronaldo-thuis-kind-en-volwassenen.html" data-testid="salable-product-name-link">
2030                                Ronaldo Portugal Voetbaltenue Thuis - Kind en Volwassenen                            </a>
2031                        </div>
2032
2033                                                    <div class="product-reviews-summary">
2034        <div class="rating-summary flex">
2035                                                                <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 20 20" fill="currentColor" class="text-secondary w-5 h-5" width="24" height="24" role="img">
2036  <path d="M9.049 2.927c.3-.921 1.603-.921 1.902 0l1.07 3.292a1 1 0 00.95.69h3.462c.969 0 1.371 1.24.588 1.81l-2.8 2.034a1 1 0 00-.364 1.118l1.07 3.292c.3.921-.755 1.688-1.54 1.118l-2.8-2.034a1 1 0 00-1.175 0l-2.8 2.034c-.784.57-1.838-.197-1.539-1.118l1.07-3.292a1 1 0 00-.364-1.118L2.98 8.72c-.783-.57-.38-1.81.588-1.81h3.461a1 1 0 00.951-.69l1.07-3.292z"></path>
2037<title>star</title></svg>
2038                                                        <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 20 20" fill="currentColor" class="text-secondary w-5 h-5" width="24" height="24" role="img">
2039  <path d="M9.049 2.927c.3-.921 1.603-.921 1.902 0l1.07 3.292a1 1 0 00.95.69h3.462c.969 0 1.371 1.24.588 1.81l-2.8 2.034a1 1 0 00-.364 1.118l1.07 3.292c.3.921-.755 1.688-1.54 1.118l-2.8-2.034a1 1 0 00-1.175 0l-2.8 2.034c-.784.57-1.838-.197-1.539-1.118l1.07-3.292a1 1 0 00-.364-1.118L2.98 8.72c-.783-.57-.38-1.81.588-1.81h3.461a1 1 0 00.951-.69l1.07-3.292z"></path>
2040<title>star</title></svg>
2041                                                        <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 20 20" fill="currentColor" class="text-secondary w-5 h-5" width="24" height="24" role="img">
2042  <path d="M9.049 2.927c.3-.921 1.603-.921 1.902 0l1.07 3.292a1 1 0 00.95.69h3.462c.969 0 1.371 1.24.588 1.81l-2.8 2.034a1 1 0 00-.364 1.118l1.07 3.292c.3.921-.755 1.688-1.54 1.118l-2.8-2.034a1 1 0 00-1.175 0l-2.8 2.034c-.784.57-1.838-.197-1.539-1.118l1.07-3.292a1 1 0 00-.364-1.118L2.98 8.72c-.783-.57-.38-1.81.588-1.81h3.461a1 1 0 00.951-.69l1.07-3.292z"></path>
2043<title>star</title></svg>
2044                                                        <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 20 20" fill="currentColor" class="text-secondary w-5 h-5" width="24" height="24" role="img">
2045  <path d="M9.049 2.927c.3-.921 1.603-.921 1.902 0l1.07 3.292a1 1 0 00.95.69h3.462c.969 0 1.371 1.24.588 1.81l-2.8 2.034a1 1 0 00-.364 1.118l1.07 3.292c.3.921-.755 1.688-1.54 1.118l-2.8-2.034a1 1 0 00-1.175 0l-2.8 2.034c-.784.57-1.838-.197-1.539-1.118l1.07-3.292a1 1 0 00-.364-1.118L2.98 8.72c-.783-.57-.38-1.81.588-1.81h3.461a1 1 0 00.951-.69l1.07-3.292z"></path>
2046<title>star</title></svg>
2047                                                                        <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 20 20" fill="currentColor" class="w-5 h-5">
2048                        <defs>
2049                            <lineargradient id="partialFill16187">
2050                                <stop offset="0%" stop-color="#FF6600"></stop>
2051                                <stop offset="95%" stop-color="#FF6600"></stop>
2052                                <stop offset="95%" stop-color="#D1D5DB"></stop>
2053                                <stop offset="100%" stop-color="#D1D5DB"></stop>
2054                            </lineargradient>
2055                        </defs>
2056                        <g fill="url(#partialFill16187)">
2057                            <path d="M9.049 2.927c.3-.921 1.603-.921 1.902 0l1.07 3.292a1 1 0 00.95.69h3.462c.969
2058                                0 1.371 1.24.588 1.81l-2.8 2.034a1 1 0 00-.364 1.118l1.07 3.292c.3.921-.755 1.688-1.54
2059                                1.118l-2.8-2.034a1 1 0 00-1.175 0l-2.8 2.034c-.784.57-1.838-.197-1.539-1.118l1.07-3.292a1 1
2060                                0 00-.364-1.118L2.98 8.72c-.783-.57-.38-1.81.588-1.81h3.461a1 1 0 00.951-.69l1.07-3.292z"></path>
2061                        </g>
2062                    </svg>
2063                                                                        </div>
2064        <div class="reviews-actions">
2065            <a class="action view" href="https://www.voetbalshirtskoning.nl/portugal-voetbaltenue-ronaldo-thuis-kind-en-volwassenen.html#reviews">23                 <span>Reviews                </span>
2066            </a>
2067        </div>
2068    </div>                        
2069                        
2070                        
2071                        <div class="product-price-wrapper" x-data="initPriceBox__6ac350e65ce90()" x-defer="intersect" @update-prices-16187.window="updatePrice($event.detail);">
2072                            <div class="price-box price-final_price" data-role="priceBox" data-product-id="16187" data-price-box="product-id-16187"><p class="minimal-price">
2073        <span x-data x-id="['from\u002D16187']" class="price-container price-final_price tax weee">
2074            <span class="price-label">Voor</span>
2075        <span :id="$id('from\u002D16187')" data-price-amount="39.95" data-price-type="" class="price-wrapper "><span class="price">39,95</span></span>
2076        </span>            </p></div>                        </div>
2077
2078                                            </div>
2079
2080                    
2080<script>
2081                        function initPriceBox__6ac350e65ce90()
2082                        {
2083                            return {
2084                                updatePrice(priceData) {
2085                                    const regularPriceLabel = this.$root.querySelector('.normal-price .price-label');
2086                                    const regularPriceElement = this.$root.querySelector('.normal-price .price-wrapper .price');
2087                                    if (priceData.finalPrice.amount < priceData.oldPrice.amount) {
2088                                        regularPriceLabel.classList.add('hidden');
2089                                    } else {
2090                                        regularPriceLabel.classList.remove('hidden');
2091                                    }
2092                                    regularPriceElement.innerText = hyva.formatPrice(priceData.finalPrice.amount);
2093                                }
2094                            }
2095                        }
2096                    </script>
2096
2097
2098                    <div class="product-item-inner">
2099                        
2100                                                    <div class="addtocart-btn-wrapper md:h-0 md:group-hover:h-12">
2101                                <button class="btn btn-primary action tocart px-6 md:px-2" data-testid="add-to-cart-btn" aria-label="In winkelwagen">
2102                                    <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 20 20" fill="currentColor" class="h-5 w-5" width="20" height="20" role="img">
2103  <path d="M3 1a1 1 0 000 2h1.22l.305 1.222a.997.997 0 00.01.042l1.358 5.43-.893.892C3.74 11.846 4.632 14 6.414 14H15a1 1 0 000-2H6.414l1-1H14a1 1 0 00.894-.553l3-6A1 1 0 0017 3H6.28l-.31-1.243A1 1 0 005 1H3zM16 16.5a1.5 1.5 0 11-3 0 1.5 1.5 0 013 0zM6.5 18a1.5 1.5 0 100-3 1.5 1.5 0 000 3z"></path>
2104<title>shopping-cart</title></svg>
2105                                    <span>In winkelwagen</span>
2106                                </button>
2107                            </div>
2108                                                                                                                                                </div>
2109                </div>
2110            </div>
2111        </div>
2112        </form>                                </div>
2113                            </div>
2114                                                    <div class="flex shrink-0 js_slide w-1/2 sm:w-1/3 lg:w-1/4">
2115                                <div class="mx-1 product-item w-full" data-product-sku="nl-kit-blue-away-22-24">
2116                                     <form method="post" action="https://www.voetbalshirtskoning.nl/checkout/cart/add/uenc/aHR0cHM6Ly93d3cudm9ldGJhbHNoaXJ0c2tvbmluZy5ubC8~/product/16038/" data-testid="product-item" class="item product product-item group product_addtocart_form product-item flex flex-col w-full h-full
2117            " enctype="multipart/form-data" data-product-sku="nl-kit-blue-away-22-24">
2118    <input name="form_key" type="hidden" value="i9tjDByFy1Iir9hF">    <input type="hidden" name="product" value="16038">
2119            <div class="product-item-info">
2120            <div class="product-item-left">
2121                                                                    
2122                                <a href="https://www.voetbalshirtskoning.nl/nederlands-elftal-voetbaltenue-uit-kind-en-volwassenen.html" class="product photo product-item-photo block mx-auto" tabindex="-1" data-testid="salable-product-item">
2123                                            <span class="block product-image-container product-image-container-">
2124    <span class="block relative product-image-wrapper overflow-hidden rounded-lg">
2125        <img class="object-contain absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2
2126        rounded-lg product-image-photo" x-data="" @update-gallery-16038.window="$root.src = $event.detail" src="https://www.voetbalshirtskoning.nl/img/YRKaBGa7aa1Me0E1gUjihQwPg-u8UxV-ZRUracr-71k/resize:fit:300:300/aHR0cHM6Ly93d3cudm9ldGJhbHNoaXJ0c2tvbmluZy5ubC9tZWRpYS9jYXRhbG9nL3Byb2R1Y3Qvbi9lL25lZGVybGFuZHMtZWxmdGFsLXZvZXRiYWx0ZW51ZS11aXQta2luZC12b2x3YXNzZW5lbi5qcGc_d2lkdGg9MzAwJmhlaWdodD0zMDA.jpg" loading="lazy" width="300" height="300" alt="Nederlands Elftal Voetbaltenue Uit - Eigen Naam - Kind en Volwassenen" title="Nederlands Elftal Voetbaltenue Uit - Eigen Naam - Kind en Volwassenen">
2127    </span>
2128</span>
2129
2130<style>
2131    .product-image-container- span.product-image-wrapper {
2132        padding-bottom: 100%;
2133    }
2134
2135    @media (min-width: 768px) {
2136        .product-image-container- .product-image-photo {
2137            height: 300px;
2138        }
2139    }
2140</style>                                    </a>
2141                            </div>
2142            <div class="product-item-right ">
2143                <div class="product-info flex flex-col grow">
2144                    <div class="product-details md:bg-white md:group-hover:-mt-12">
2145                                                <div class="product name product-item-name">
2146                            <a class="product-item-link" href="https://www.voetbalshirtskoning.nl/nederlands-elftal-voetbaltenue-uit-kind-en-volwassenen.html" data-testid="salable-product-name-link">
2147                                Nederlands Elftal Voetbaltenue Uit - Eigen Naam - Kind en Volwassenen                            </a>
2148                        </div>
2149
2150                                                    <div class="product-reviews-summary">
2151        <div class="rating-summary flex">
2152                                                                <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 20 20" fill="currentColor" class="text-secondary w-5 h-5" width="24" height="24" role="img">
2153  <path d="M9.049 2.927c.3-.921 1.603-.921 1.902 0l1.07 3.292a1 1 0 00.95.69h3.462c.969 0 1.371 1.24.588 1.81l-2.8 2.034a1 1 0 00-.364 1.118l1.07 3.292c.3.921-.755 1.688-1.54 1.118l-2.8-2.034a1 1 0 00-1.175 0l-2.8 2.034c-.784.57-1.838-.197-1.539-1.118l1.07-3.292a1 1 0 00-.364-1.118L2.98 8.72c-.783-.57-.38-1.81.588-1.81h3.461a1 1 0 00.951-.69l1.07-3.292z"></path>
2154<title>star</title></svg>
2155                                                        <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 20 20" fill="currentColor" class="text-secondary w-5 h-5" width="24" height="24" role="img">
2156  <path d="M9.049 2.927c.3-.921 1.603-.921 1.902 0l1.07 3.292a1 1 0 00.95.69h3.462c.969 0 1.371 1.24.588 1.81l-2.8 2.034a1 1 0 00-.364 1.118l1.07 3.292c.3.921-.755 1.688-1.54 1.118l-2.8-2.034a1 1 0 00-1.175 0l-2.8 2.034c-.784.57-1.838-.197-1.539-1.118l1.07-3.292a1 1 0 00-.364-1.118L2.98 8.72c-.783-.57-.38-1.81.588-1.81h3.461a1 1 0 00.951-.69l1.07-3.292z"></path>
2157<title>star</title></svg>
2158                                                        <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 20 20" fill="currentColor" class="text-secondary w-5 h-5" width="24" height="24" role="img">
2159  <path d="M9.049 2.927c.3-.921 1.603-.921 1.902 0l1.07 3.292a1 1 0 00.95.69h3.462c.969 0 1.371 1.24.588 1.81l-2.8 2.034a1 1 0 00-.364 1.118l1.07 3.292c.3.921-.755 1.688-1.54 1.118l-2.8-2.034a1 1 0 00-1.175 0l-2.8 2.034c-.784.57-1.838-.197-1.539-1.118l1.07-3.292a1 1 0 00-.364-1.118L2.98 8.72c-.783-.57-.38-1.81.588-1.81h3.461a1 1 0 00.951-.69l1.07-3.292z"></path>
2160<title>star</title></svg>
2161                                                        <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 20 20" fill="currentColor" class="text-secondary w-5 h-5" width="24" height="24" role="img">
2162  <path d="M9.049 2.927c.3-.921 1.603-.921 1.902 0l1.07 3.292a1 1 0 00.95.69h3.462c.969 0 1.371 1.24.588 1.81l-2.8 2.034a1 1 0 00-.364 1.118l1.07 3.292c.3.921-.755 1.688-1.54 1.118l-2.8-2.034a1 1 0 00-1.175 0l-2.8 2.034c-.784.57-1.838-.197-1.539-1.118l1.07-3.292a1 1 0 00-.364-1.118L2.98 8.72c-.783-.57-.38-1.81.588-1.81h3.461a1 1 0 00.951-.69l1.07-3.292z"></path>
2163<title>star</title></svg>
2164                                                                        <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 20 20" fill="currentColor" class="w-5 h-5">
2165                        <defs>
2166                            <lineargradient id="partialFill16038">
2167                                <stop offset="0%" stop-color="#FF6600"></stop>
2168                                <stop offset="75%" stop-color="#FF6600"></stop>
2169                                <stop offset="75%" stop-color="#D1D5DB"></stop>
2170                                <stop offset="100%" stop-color="#D1D5DB"></stop>
2171                            </lineargradient>
2172                        </defs>
2173                        <g fill="url(#partialFill16038)">
2174                            <path d="M9.049 2.927c.3-.921 1.603-.921 1.902 0l1.07 3.292a1 1 0 00.95.69h3.462c.969
2175                                0 1.371 1.24.588 1.81l-2.8 2.034a1 1 0 00-.364 1.118l1.07 3.292c.3.921-.755 1.688-1.54
2176                                1.118l-2.8-2.034a1 1 0 00-1.175 0l-2.8 2.034c-.784.57-1.838-.197-1.539-1.118l1.07-3.292a1 1
2177                                0 00-.364-1.118L2.98 8.72c-.783-.57-.38-1.81.588-1.81h3.461a1 1 0 00.951-.69l1.07-3.292z"></path>
2178                        </g>
2179                    </svg>
2180                                                                        </div>
2181        <div class="reviews-actions">
2182            <a class="action view" href="https://www.voetbalshirtskoning.nl/nederlands-elftal-voetbaltenue-uit-kind-en-volwassenen.html#reviews">22                 <span>Reviews                </span>
2183            </a>
2184        </div>
2185    </div>                        
2186                        
2187                        
2188                        <div class="product-price-wrapper" x-data="initPriceBox__6ac34b46b4af8()" x-defer="intersect" @update-prices-16038.window="updatePrice($event.detail);">
2189                            <div class="price-box price-final_price" data-role="priceBox" data-product-id="16038" data-price-box="product-id-16038"><p class="minimal-price">
2190        <span x-data x-id="['from\u002D16038']" class="price-container price-final_price tax weee">
2191            <span class="price-label">Voor</span>
2192        <span :id="$id('from\u002D16038')" data-price-amount="39.95" data-price-type="" class="price-wrapper "><span class="price">39,95</span></span>
2193        </span>            </p></div>                        </div>
2194
2195                                            </div>
2196
2197                    
2197<script>
2198                        function initPriceBox__6ac34b46b4af8()
2199                        {
2200                            return {
2201                                updatePrice(priceData) {
2202                                    const regularPriceLabel = this.$root.querySelector('.normal-price .price-label');
2203                                    const regularPriceElement = this.$root.querySelector('.normal-price .price-wrapper .price');
2204                                    if (priceData.finalPrice.amount < priceData.oldPrice.amount) {
2205                                        regularPriceLabel.classList.add('hidden');
2206                                    } else {
2207                                        regularPriceLabel.classList.remove('hidden');
2208                                    }
2209                                    regularPriceElement.innerText = hyva.formatPrice(priceData.finalPrice.amount);
2210                                }
2211                            }
2212                        }
2213                    </script>
2213
2214
2215                    <div class="product-item-inner">
2216                        
2217                                                    <div class="addtocart-btn-wrapper md:h-0 md:group-hover:h-12">
2218                                <button class="btn btn-primary action tocart px-6 md:px-2" data-testid="add-to-cart-btn" aria-label="In winkelwagen">
2219                                    <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 20 20" fill="currentColor" class="h-5 w-5" width="20" height="20" role="img">
2220  <path d="M3 1a1 1 0 000 2h1.22l.305 1.222a.997.997 0 00.01.042l1.358 5.43-.893.892C3.74 11.846 4.632 14 6.414 14H15a1 1 0 000-2H6.414l1-1H14a1 1 0 00.894-.553l3-6A1 1 0 0017 3H6.28l-.31-1.243A1 1 0 005 1H3zM16 16.5a1.5 1.5 0 11-3 0 1.5 1.5 0 013 0zM6.5 18a1.5 1.5 0 100-3 1.5 1.5 0 000 3z"></path>
2221<title>shopping-cart</title></svg>
2222                                    <span>In winkelwagen</span>
2223                                </button>
2224                            </div>
2225                                                                                                                                                </div>
2226                </div>
2227            </div>
2228        </div>
2229        </form>                                </div>
2230                            </div>
2231                                            </div>
2232                </div>
2233                <template x-if="itemCount > pageSize">
2234                    <div class="slider-nav">
2235                        <button aria-label="Vorige" tabindex="-1" class="slider-btn btn-prev" :class="{ 'opacity-0 pointer-events-none' : !isScrollPreviousButtonVisible }" @click="scrollPrevious">
2236                            <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 20 20" fill="currentColor" width="20" height="20" role="img">
2237  <path fill-rule="evenodd" d="M9.707 16.707a1 1 0 01-1.414 0l-6-6a1 1 0 010-1.414l6-6a1 1 0 011.414 1.414L5.414 9H17a1 1 0 110 2H5.414l4.293 4.293a1 1 0 010 1.414z" clip-rule="evenodd"></path>
2238<title>arrow-left</title></svg>
2239                        </button>
2240                        <button aria-label="Volgende" tabindex="-1" class="slider-btn btn-next" :class="{ 'opacity-0 pointer-events-none' : !isScrollNextButtonVisible }" @click="scrollNext">
2241                            <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 20 20" fill="currentColor" width="20" height="20" role="img">
2242  <path fill-rule="evenodd" d="M10.293 3.293a1 1 0 011.414 0l6 6a1 1 0 010 1.414l-6 6a1 1 0 01-1.414-1.414L14.586 11H3a1 1 0 110-2h11.586l-4.293-4.293a1 1 0 010-1.414z" clip-rule="evenodd"></path>
2243<title>arrow-right</title></svg>
2244                        </button>
2245                    </div>
2246                </template>
2247            </div>
2248            </section>
2249<script> /* e.g. hyva theme */ document.addEventListener('DOMContentLoaded', function(){ var items = document.getElementsByClassName('mfblogunveil'); var el, url; if (items.length) { for (var i=0; i<items.length;i++) { el = items[i]; url = el.getAttribute('data-original'); if (!url) { continue; }; if ('IMG' == el.tagName) { el.src = url; } else { el.style.backgroundImage = "url('" + url + "')"; } } } }); </script>
2249<div class="new-products-wrapper">
2249<script>
2250        'use strict';
2251
2252        function initSliderComponent() {
2253            return {
2254                active: 0,
2255                itemCount: 0,
2256                getSlider() {
2257                    return this.$root.querySelector('.js_slides');
2258                },
2259                pageSize: 4,
2260                pageFillers: 0,
2261                isScrollPreviousButtonVisible: false,
2262                isScrollNextButtonVisible: false,
2263                calcPageSize() {
2264                    const slider = this.getSlider();
2265                    if (slider) {
2266                        this.itemCount = slider.querySelectorAll('.js_slide').length;
2267                        this.pageSize = Math.round(slider.clientWidth / slider.querySelector('.js_slide').clientWidth);
2268                        this.pageFillers = (
2269                            this.pageSize * Math.ceil(this.itemCount / this.pageSize)
2270                        ) - this.itemCount;
2271                        this.isScrollPreviousButtonVisible = slider.scrollLeft !== 0;
2272                        this.isScrollNextButtonVisible = slider.scrollLeft + slider.clientWidth < slider.scrollWidth;
2273                    } else {
2274                        this.isScrollPreviousButtonVisible = false;
2275                        this.isScrollNextButtonVisible = false;
2276                    }
2277                },
2278                calcActive() {
2279                    const slider = this.getSlider();
2280                    if (slider) {
2281                        const sliderItems = this.itemCount + this.pageFillers;
2282                        const calculatedActiveSlide = slider.scrollLeft / (slider.scrollWidth / sliderItems);
2283                        this.active = Math.round(calculatedActiveSlide / this.pageSize) * this.pageSize;
2284                        this.isScrollPreviousButtonVisible = slider.scrollLeft !== 0;
2285                        this.isScrollNextButtonVisible = slider.scrollLeft + slider.clientWidth < slider.scrollWidth;
2286                    } else {
2287                        this.isScrollPreviousButtonVisible = false;
2288                        this.isScrollNextButtonVisible = false;
2289                    }
2290                },
2291                scrollPrevious() {
2292                    this.scrollTo(this.active - this.pageSize);
2293                },
2294                scrollNext() {
2295                    this.scrollTo(this.active + this.pageSize);
2296                },
2297                scrollTo(idx) {
2298                    const slider = this.getSlider();
2299                    if (slider) {
2300                        const slideWidth = slider.scrollWidth / (this.itemCount + this.pageFillers);
2301                        slider.scrollLeft = Math.floor(slideWidth) * idx;
2302                        this.active = idx;
2303                    }
2304                }
2305            }
2306        }
2307    </script>
2307
2308    <section class=" mb-10 lg:mb-20 product-slider-wrapper" x-data="initSliderComponent()" x-init="calcPageSize();" @resize.window.debounce="calcPageSize(); $nextTick( function() { calcActive() })">
2309                    <div class="relative">
2310                                    <h2 class="text-lg font-semibold mb-2 text-dark md:text-center py-6">
2311                        Nieuw binnen                    </h2>
2312                                <div class="relative w-full overflow-x-hidden products mode-grid mobile-mode-grid">
2313                    <div class="relative flex flex-nowrap overflow-auto transition-all js_slides snap" @scroll.debounce="calcActive">
2314                                                    <div class="flex shrink-0 js_slide w-1/2 sm:w-1/3 lg:w-1/4">
2315                                <div class="mx-1 product-item w-full" data-product-sku="eng-set-bham-26-28">
2316                                     <div class="item product product-item flex flex-col w-full " data-product-sku="eng-set-bham-26-28">
2317                <div class="product-item-info">
2318            <div class="product-item-left">
2319                                                                    
2320                                <a href="https://www.voetbalshirtskoning.nl/engeland-voetbaltenue-bellingham-thuis.html" class="product photo product-item-photo block mx-auto" tabindex="-1">
2321                                            <span class="block product-image-container product-image-container-">
2322    <span class="block relative product-image-wrapper overflow-hidden rounded-lg">
2323        <img class="object-contain absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2
2324        rounded-lg product-image-photo" x-data="" @update-gallery-18038.window="$root.src = $event.detail" src="https://www.voetbalshirtskoning.nl/img/VKjOvnkocJQVV7_ACCaOc2L864DnR6Ym3t4K65JVpyg/resize:fit:300:300/aHR0cHM6Ly93d3cudm9ldGJhbHNoaXJ0c2tvbmluZy5ubC9tZWRpYS9jYXRhbG9nL3Byb2R1Y3QvYi9lL2JlbGxpbmdoYW0tZW5nZWxhbmQtdGVudWUtdGh1aXMta2luZC12b2x3YXNzZW5lbi5qcGc_d2lkdGg9MzAwJmhlaWdodD0zMDA.jpg" loading="lazy" width="300" height="300" alt="Engeland Voetbaltenue Bellingham Thuis - Kind en Volwassenen" title="Engeland Voetbaltenue Bellingham Thuis - Kind en Volwassenen">
2325    </span>
2326</span>
2327
2328<style>
2329    .product-image-container- span.product-image-wrapper {
2330        padding-bottom: 100%;
2331    }
2332
2333    @media (min-width: 768px) {
2334        .product-image-container- .product-image-photo {
2335            height: 300px;
2336        }
2337    }
2338</style>                                    </a>
2339                            </div>
2340            <div class="product-item-right no-reviews">
2341                <div class="product-info flex flex-col grow">
2342                    <div class="product-details md:bg-white md:group-hover:-mt-12">
2343                                                <div class="product name product-item-name">
2344                            <a class="product-item-link" href="https://www.voetbalshirtskoning.nl/engeland-voetbaltenue-bellingham-thuis.html">
2345                                Engeland Voetbaltenue Bellingham Thuis - Kind en Volwassenen                            </a>
2346                        </div>
2347
2348                                                                            
2349                        
2350                        
2351                        <div class="product-price-wrapper" x-data="initPriceBox__6ac34b46c1578()" x-defer="intersect" @update-prices-18038.window="updatePrice($event.detail);">
2352                                                    </div>
2353
2354                                            </div>
2355
2356                    
2356<script>
2357                        function initPriceBox__6ac34b46c1578()
2358                        {
2359                            return {
2360                                updatePrice(priceData) {
2361                                    const regularPriceLabel = this.$root.querySelector('.normal-price .price-label');
2362                                    const regularPriceElement = this.$root.querySelector('.normal-price .price-wrapper .price');
2363                                    if (priceData.finalPrice.amount < priceData.oldPrice.amount) {
2364                                        regularPriceLabel.classList.add('hidden');
2365                                    } else {
2366                                        regularPriceLabel.classList.remove('hidden');
2367                                    }
2368                                    regularPriceElement.innerText = hyva.formatPrice(priceData.finalPrice.amount);
2369                                }
2370                            }
2371                        }
2372                    </script>
2372
2373
2374                    <div class="product-item-inner">
2375                        
2376                                                                                                                                                </div>
2377                </div>
2378            </div>
2379        </div>
2380            </div>                                </div>
2381                            </div>
2382                                                    <div class="flex shrink-0 js_slide w-1/2 sm:w-1/3 lg:w-1/4">
2383                                <div class="mx-1 product-item w-full" data-product-sku="BD19E-YAMA">
2384                                     <form method="post" action="https://www.voetbalshirtskoning.nl/checkout/cart/add/uenc/aHR0cHM6Ly93d3cudm9ldGJhbHNoaXJ0c2tvbmluZy5ubC8~/product/18020/" data-testid="product-item" class="item product product-item group product_addtocart_form product-item flex flex-col w-full h-full
2385            " data-product-sku="BD19E-YAMA">
2386    <input name="form_key" type="hidden" value="i9tjDByFy1Iir9hF">    <input type="hidden" name="product" value="18020">
2387            <div class="product-item-info">
2388            <div class="product-item-left">
2389                                                                    
2390                                <a href="https://www.voetbalshirtskoning.nl/lamine-yamal-fc-barcelona-voetbaltenue-thuis-2026-2027-kind.html" class="product photo product-item-photo block mx-auto" tabindex="-1" data-testid="salable-product-item">
2391                                            <span class="block product-image-container product-image-container-">
2392    <span class="block relative product-image-wrapper overflow-hidden rounded-lg">
2393        <img class="object-contain absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2
2394        rounded-lg product-image-photo" x-data="" @update-gallery-18020.window="$root.src = $event.detail" src="https://www.voetbalshirtskoning.nl/img/bN2SCcQCD_yJmcXfMdasfvCsmnIHATBAGoVRLtonDAA/resize:fit:300:300/aHR0cHM6Ly93d3cudm9ldGJhbHNoaXJ0c2tvbmluZy5ubC9tZWRpYS9jYXRhbG9nL3Byb2R1Y3QvbC9hL2xhbWluZS15YW1hbC1mYy1iYXJjZWxvbmEtdGVudWUta2luZC5qcGc_d2lkdGg9MzAwJmhlaWdodD0zMDA.jpg" loading="lazy" width="300" height="300" alt="Lamine Yamal FC Barcelona Voetbaltenue Thuis - 2026-2027 - Kind" title="Lamine Yamal FC Barcelona Voetbaltenue Thuis - 2026-2027 - Kind">
2395    </span>
2396</span>
2397
2398<style>
2399    .product-image-container- span.product-image-wrapper {
2400        padding-bottom: 100%;
2401    }
2402
2403    @media (min-width: 768px) {
2404        .product-image-container- .product-image-photo {
2405            height: 300px;
2406        }
2407    }
2408</style>                                    </a>
2409                            </div>
2410            <div class="product-item-right ">
2411                <div class="product-info flex flex-col grow">
2412                    <div class="product-details md:bg-white md:group-hover:-mt-12">
2413                                                <div class="product name product-item-name">
2414                            <a class="product-item-link" href="https://www.voetbalshirtskoning.nl/lamine-yamal-fc-barcelona-voetbaltenue-thuis-2026-2027-kind.html" data-testid="salable-product-name-link">
2415                                Lamine Yamal FC Barcelona Voetbaltenue Thuis - 2026-2027 - Kind                            </a>
2416                        </div>
2417
2418                                                    <div class="product-reviews-summary">
2419        <div class="rating-summary flex">
2420                                                                <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 20 20" fill="currentColor" class="text-secondary w-5 h-5" width="24" height="24" role="img">
2421  <path d="M9.049 2.927c.3-.921 1.603-.921 1.902 0l1.07 3.292a1 1 0 00.95.69h3.462c.969 0 1.371 1.24.588 1.81l-2.8 2.034a1 1 0 00-.364 1.118l1.07 3.292c.3.921-.755 1.688-1.54 1.118l-2.8-2.034a1 1 0 00-1.175 0l-2.8 2.034c-.784.57-1.838-.197-1.539-1.118l1.07-3.292a1 1 0 00-.364-1.118L2.98 8.72c-.783-.57-.38-1.81.588-1.81h3.461a1 1 0 00.951-.69l1.07-3.292z"></path>
2422<title>star</title></svg>
2423                                                        <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 20 20" fill="currentColor" class="text-secondary w-5 h-5" width="24" height="24" role="img">
2424  <path d="M9.049 2.927c.3-.921 1.603-.921 1.902 0l1.07 3.292a1 1 0 00.95.69h3.462c.969 0 1.371 1.24.588 1.81l-2.8 2.034a1 1 0 00-.364 1.118l1.07 3.292c.3.921-.755 1.688-1.54 1.118l-2.8-2.034a1 1 0 00-1.175 0l-2.8 2.034c-.784.57-1.838-.197-1.539-1.118l1.07-3.292a1 1 0 00-.364-1.118L2.98 8.72c-.783-.57-.38-1.81.588-1.81h3.461a1 1 0 00.951-.69l1.07-3.292z"></path>
2425<title>star</title></svg>
2426                                                        <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 20 20" fill="currentColor" class="text-secondary w-5 h-5" width="24" height="24" role="img">
2427  <path d="M9.049 2.927c.3-.921 1.603-.921 1.902 0l1.07 3.292a1 1 0 00.95.69h3.462c.969 0 1.371 1.24.588 1.81l-2.8 2.034a1 1 0 00-.364 1.118l1.07 3.292c.3.921-.755 1.688-1.54 1.118l-2.8-2.034a1 1 0 00-1.175 0l-2.8 2.034c-.784.57-1.838-.197-1.539-1.118l1.07-3.292a1 1 0 00-.364-1.118L2.98 8.72c-.783-.57-.38-1.81.588-1.81h3.461a1 1 0 00.951-.69l1.07-3.292z"></path>
2428<title>star</title></svg>
2429                                                        <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 20 20" fill="currentColor" class="text-secondary w-5 h-5" width="24" height="24" role="img">
2430  <path d="M9.049 2.927c.3-.921 1.603-.921 1.902 0l1.07 3.292a1 1 0 00.95.69h3.462c.969 0 1.371 1.24.588 1.81l-2.8 2.034a1 1 0 00-.364 1.118l1.07 3.292c.3.921-.755 1.688-1.54 1.118l-2.8-2.034a1 1 0 00-1.175 0l-2.8 2.034c-.784.57-1.838-.197-1.539-1.118l1.07-3.292a1 1 0 00-.364-1.118L2.98 8.72c-.783-.57-.38-1.81.588-1.81h3.461a1 1 0 00.951-.69l1.07-3.292z"></path>
2431<title>star</title></svg>
2432                                                        <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 20 20" fill="currentColor" class="text-secondary w-5 h-5" width="24" height="24" role="img">
2433  <path d="M9.049 2.927c.3-.921 1.603-.921 1.902 0l1.07 3.292a1 1 0 00.95.69h3.462c.969 0 1.371 1.24.588 1.81l-2.8 2.034a1 1 0 00-.364 1.118l1.07 3.292c.3.921-.755 1.688-1.54 1.118l-2.8-2.034a1 1 0 00-1.175 0l-2.8 2.034c-.784.57-1.838-.197-1.539-1.118l1.07-3.292a1 1 0 00-.364-1.118L2.98 8.72c-.783-.57-.38-1.81.588-1.81h3.461a1 1 0 00.951-.69l1.07-3.292z"></path>
2434<title>star</title></svg>
2435                                                                                                            </div>
2436        <div class="reviews-actions">
2437            <a class="action view" href="https://www.voetbalshirtskoning.nl/lamine-yamal-fc-barcelona-voetbaltenue-thuis-2026-2027-kind.html#reviews">1                 <span>Je beoordeling over het product                </span>
2438            </a>
2439        </div>
2440    </div>                        
2441                        
2442                        
2443                        <div class="product-price-wrapper" x-data="initPriceBox__6ac34b46c7925()" x-defer="intersect" @update-prices-18020.window="updatePrice($event.detail);">
2444                            <div class="price-box price-final_price" data-role="priceBox" data-product-id="18020" data-price-box="product-id-18020"><span class="normal-price">
2445    <span x-data x-id="['product\u002Dprice\u002D18020']" class="price-container price-final_price tax weee">
2446            <span class="price-label">Voor</span>
2447        <span :id="$id('product\u002Dprice\u002D18020')" data-price-amount="54.95" data-price-type="finalPrice" class="price-wrapper "><span class="price">54,95</span></span>
2448        </span></span></div>                        </div>
2449
2450                                            </div>
2451
2452                    
2452<script>
2453                        function initPriceBox__6ac34b46c7925()
2454                        {
2455                            return {
2456                                updatePrice(priceData) {
2457                                    const regularPriceLabel = this.$root.querySelector('.normal-price .price-label');
2458                                    const regularPriceElement = this.$root.querySelector('.normal-price .price-wrapper .price');
2459                                    if (priceData.finalPrice.amount < priceData.oldPrice.amount) {
2460                                        regularPriceLabel.classList.add('hidden');
2461                                    } else {
2462                                        regularPriceLabel.classList.remove('hidden');
2463                                    }
2464                                    regularPriceElement.innerText = hyva.formatPrice(priceData.finalPrice.amount);
2465                                }
2466                            }
2467                        }
2468                    </script>
2468
2469
2470                    <div class="product-item-inner">
2471                        
2472                                                    <div class="addtocart-btn-wrapper md:h-0 md:group-hover:h-12">
2473                                <button class="btn btn-primary action tocart px-6 md:px-2" data-testid="add-to-cart-btn" aria-label="In winkelwagen">
2474                                    <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 20 20" fill="currentColor" class="h-5 w-5" width="20" height="20" role="img">
2475  <path d="M3 1a1 1 0 000 2h1.22l.305 1.222a.997.997 0 00.01.042l1.358 5.43-.893.892C3.74 11.846 4.632 14 6.414 14H15a1 1 0 000-2H6.414l1-1H14a1 1 0 00.894-.553l3-6A1 1 0 0017 3H6.28l-.31-1.243A1 1 0 005 1H3zM16 16.5a1.5 1.5 0 11-3 0 1.5 1.5 0 013 0zM6.5 18a1.5 1.5 0 100-3 1.5 1.5 0 000 3z"></path>
2476<title>shopping-cart</title></svg>
2477                                    <span>In winkelwagen</span>
2478                                </button>
2479                            </div>
2480                                                                                                                                                </div>
2481                </div>
2482            </div>
2483        </div>
2484        </form>                                </div>
2485                            </div>
2486                                                    <div class="flex shrink-0 js_slide w-1/2 sm:w-1/3 lg:w-1/4">
2487                                <div class="mx-1 product-item w-full" data-product-sku="RM26B2MB">
2488                                     <form method="post" action="https://www.voetbalshirtskoning.nl/checkout/cart/add/uenc/aHR0cHM6Ly93d3cudm9ldGJhbHNoaXJ0c2tvbmluZy5ubC8~/product/18014/" data-testid="product-item" class="item product product-item group product_addtocart_form product-item flex flex-col w-full h-full
2489            " data-product-sku="RM26B2MB">
2490    <input name="form_key" type="hidden" value="i9tjDByFy1Iir9hF">    <input type="hidden" name="product" value="18014">
2491            <div class="product-item-info">
2492            <div class="product-item-left">
2493                                                                    
2494                                <a href="https://www.voetbalshirtskoning.nl/mbappe-real-madrid-voetbaltenue-uit-2026-2027-kind.html" class="product photo product-item-photo block mx-auto" tabindex="-1" data-testid="salable-product-item">
2495                                            <span class="block product-image-container product-image-container-">
2496    <span class="block relative product-image-wrapper overflow-hidden rounded-lg">
2497        <img class="object-contain absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2
2498        rounded-lg product-image-photo" x-data="" @update-gallery-18014.window="$root.src = $event.detail" src="https://www.voetbalshirtskoning.nl/img/jJU_I9ECcbnfRf-OaaYnyDx25WIyLsc5tUWm2Zkv2HQ/resize:fit:300:300/aHR0cHM6Ly93d3cudm9ldGJhbHNoaXJ0c2tvbmluZy5ubC9tZWRpYS9jYXRhbG9nL3Byb2R1Y3QvbS9iL21iYXBwZS1yZWFsLW1hZHJpZC11aXR0ZW51ZS0yMDI2LTIwMjcta2luZC5qcGc_d2lkdGg9MzAwJmhlaWdodD0zMDA.jpg" loading="lazy" width="300" height="300" alt="Mbappe Real Madrid Voetbaltenue Uit - 2026-2027 - Kind" title="Mbappe Real Madrid Voetbaltenue Uit - 2026-2027 - Kind">
2499    </span>
2500</span>
2501
2502<style>
2503    .product-image-container- span.product-image-wrapper {
2504        padding-bottom: 100%;
2505    }
2506
2507    @media (min-width: 768px) {
2508        .product-image-container- .product-image-photo {
2509            height: 300px;
2510        }
2511    }
2512</style>                                    </a>
2513                            </div>
2514            <div class="product-item-right no-reviews">
2515                <div class="product-info flex flex-col grow">
2516                    <div class="product-details md:bg-white md:group-hover:-mt-12">
2517                                                <div class="product name product-item-name">
2518                            <a class="product-item-link" href="https://www.voetbalshirtskoning.nl/mbappe-real-madrid-voetbaltenue-uit-2026-2027-kind.html" data-testid="salable-product-name-link">
2519                                Mbappe Real Madrid Voetbaltenue Uit - 2026-2027 - Kind                            </a>
2520                        </div>
2521
2522                                                                            
2523                        
2524                        
2525                        <div class="product-price-wrapper" x-data="initPriceBox__6ac34b46cfc54()" x-defer="intersect" @update-prices-18014.window="updatePrice($event.detail);">
2526                            <div class="price-box price-final_price" data-role="priceBox" data-product-id="18014" data-price-box="product-id-18014"><span class="normal-price">
2527    <span x-data x-id="['product\u002Dprice\u002D18014']" class="price-container price-final_price tax weee">
2528            <span class="price-label">Voor</span>
2529        <span :id="$id('product\u002Dprice\u002D18014')" data-price-amount="54.95" data-price-type="finalPrice" class="price-wrapper "><span class="price">54,95</span></span>
2530        </span></span></div>                        </div>
2531
2532                                            </div>
2533
2534                    
2534<script>
2535                        function initPriceBox__6ac34b46cfc54()
2536                        {
2537                            return {
2538                                updatePrice(priceData) {
2539                                    const regularPriceLabel = this.$root.querySelector('.normal-price .price-label');
2540                                    const regularPriceElement = this.$root.querySelector('.normal-price .price-wrapper .price');
2541                                    if (priceData.finalPrice.amount < priceData.oldPrice.amount) {
2542                                        regularPriceLabel.classList.add('hidden');
2543                                    } else {
2544                                        regularPriceLabel.classList.remove('hidden');
2545                                    }
2546                                    regularPriceElement.innerText = hyva.formatPrice(priceData.finalPrice.amount);
2547                                }
2548                            }
2549                        }
2550                    </script>
2550
2551
2552                    <div class="product-item-inner">
2553                        
2554                                                    <div class="addtocart-btn-wrapper md:h-0 md:group-hover:h-12">
2555                                <button class="btn btn-primary action tocart px-6 md:px-2" data-testid="add-to-cart-btn" aria-label="In winkelwagen">
2556                                    <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 20 20" fill="currentColor" class="h-5 w-5" width="20" height="20" role="img">
2557  <path d="M3 1a1 1 0 000 2h1.22l.305 1.222a.997.997 0 00.01.042l1.358 5.43-.893.892C3.74 11.846 4.632 14 6.414 14H15a1 1 0 000-2H6.414l1-1H14a1 1 0 00.894-.553l3-6A1 1 0 0017 3H6.28l-.31-1.243A1 1 0 005 1H3zM16 16.5a1.5 1.5 0 11-3 0 1.5 1.5 0 013 0zM6.5 18a1.5 1.5 0 100-3 1.5 1.5 0 000 3z"></path>
2558<title>shopping-cart</title></svg>
2559                                    <span>In winkelwagen</span>
2560                                </button>
2561                            </div>
2562                                                                                                                                                </div>
2563                </div>
2564            </div>
2565        </div>
2566        </form>                                </div>
2567                            </div>
2568                                                    <div class="flex shrink-0 js_slide w-1/2 sm:w-1/3 lg:w-1/4">
2569                                <div class="mx-1 product-item w-full" data-product-sku="RM26B2">
2570                                     <form method="post" action="https://www.voetbalshirtskoning.nl/checkout/cart/add/uenc/aHR0cHM6Ly93d3cudm9ldGJhbHNoaXJ0c2tvbmluZy5ubC8~/product/18008/" data-testid="product-item" class="item product product-item group product_addtocart_form product-item flex flex-col w-full h-full
2571            " data-product-sku="RM26B2">
2572    <input name="form_key" type="hidden" value="i9tjDByFy1Iir9hF">    <input type="hidden" name="product" value="18008">
2573            <div class="product-item-info">
2574            <div class="product-item-left">
2575                                                                    
2576                                <a href="https://www.voetbalshirtskoning.nl/real-madrid-voetbaltenue-uit-eigen-naam-2026-2027-kind.html" class="product photo product-item-photo block mx-auto" tabindex="-1" data-testid="salable-product-item">
2577                                            <span class="block product-image-container product-image-container-">
2578    <span class="block relative product-image-wrapper overflow-hidden rounded-lg">
2579        <img class="object-contain absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2
2580        rounded-lg product-image-photo" x-data="" @update-gallery-18008.window="$root.src = $event.detail" src="https://www.voetbalshirtskoning.nl/img/vyornNK7Uwtxyocqrrn-O_hVp4B3lcbghcENl4yuXlo/resize:fit:300:300/aHR0cHM6Ly93d3cudm9ldGJhbHNoaXJ0c2tvbmluZy5ubC9tZWRpYS9jYXRhbG9nL3Byb2R1Y3Qvci9lL3JlYWwtbWFkcmlkLXRlbnVlLXVpdC0yMDI2LTIwMjcta2luZC5qcGc_d2lkdGg9MzAwJmhlaWdodD0zMDA.jpg" loading="lazy" width="300" height="300" alt="Real Madrid Voetbaltenue Uit - Eigen Naam - 2026-2027 - Kind" title="Real Madrid Voetbaltenue Uit - Eigen Naam - 2026-2027 - Kind">
2581    </span>
2582</span>
2583
2584<style>
2585    .product-image-container- span.product-image-wrapper {
2586        padding-bottom: 100%;
2587    }
2588
2589    @media (min-width: 768px) {
2590        .product-image-container- .product-image-photo {
2591            height: 300px;
2592        }
2593    }
2594</style>                                    </a>
2595                            </div>
2596            <div class="product-item-right no-reviews">
2597                <div class="product-info flex flex-col grow">
2598                    <div class="product-details md:bg-white md:group-hover:-mt-12">
2599                                                <div class="product name product-item-name">
2600                            <a class="product-item-link" href="https://www.voetbalshirtskoning.nl/real-madrid-voetbaltenue-uit-eigen-naam-2026-2027-kind.html" data-testid="salable-product-name-link">
2601                                Real Madrid Voetbaltenue Uit - Eigen Naam - 2026-2027 - Kind                            </a>
2602                        </div>
2603
2604                                                                            
2605                        
2606                        
2607                        <div class="product-price-wrapper" x-data="initPriceBox__6ac34b46d82d4()" x-defer="intersect" @update-prices-18008.window="updatePrice($event.detail);">
2608                            <div class="price-box price-final_price" data-role="priceBox" data-product-id="18008" data-price-box="product-id-18008"><span class="normal-price">
2609    <span x-data x-id="['product\u002Dprice\u002D18008']" class="price-container price-final_price tax weee">
2610            <span class="price-label">Voor</span>
2611        <span :id="$id('product\u002Dprice\u002D18008')" data-price-amount="49.95" data-price-type="finalPrice" class="price-wrapper "><span class="price">49,95</span></span>
2612        </span></span></div>                        </div>
2613
2614                                            </div>
2615
2616                    
2616<script>
2617                        function initPriceBox__6ac34b46d82d4()
2618                        {
2619                            return {
2620                                updatePrice(priceData) {
2621                                    const regularPriceLabel = this.$root.querySelector('.normal-price .price-label');
2622                                    const regularPriceElement = this.$root.querySelector('.normal-price .price-wrapper .price');
2623                                    if (priceData.finalPrice.amount < priceData.oldPrice.amount) {
2624                                        regularPriceLabel.classList.add('hidden');
2625                                    } else {
2626                                        regularPriceLabel.classList.remove('hidden');
2627                                    }
2628                                    regularPriceElement.innerText = hyva.formatPrice(priceData.finalPrice.amount);
2629                                }
2630                            }
2631                        }
2632                    </script>
2632
2633
2634                    <div class="product-item-inner">
2635                        
2636                                                    <div class="addtocart-btn-wrapper md:h-0 md:group-hover:h-12">
2637                                <button class="btn btn-primary action tocart px-6 md:px-2" data-testid="add-to-cart-btn" aria-label="In winkelwagen">
2638                                    <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 20 20" fill="currentColor" class="h-5 w-5" width="20" height="20" role="img">
2639  <path d="M3 1a1 1 0 000 2h1.22l.305 1.222a.997.997 0 00.01.042l1.358 5.43-.893.892C3.74 11.846 4.632 14 6.414 14H15a1 1 0 000-2H6.414l1-1H14a1 1 0 00.894-.553l3-6A1 1 0 0017 3H6.28l-.31-1.243A1 1 0 005 1H3zM16 16.5a1.5 1.5 0 11-3 0 1.5 1.5 0 013 0zM6.5 18a1.5 1.5 0 100-3 1.5 1.5 0 000 3z"></path>
2640<title>shopping-cart</title></svg>
2641                                    <span>In winkelwagen</span>
2642                                </button>
2643                            </div>
2644                                                                                                                                                </div>
2645                </div>
2646            </div>
2647        </div>
2648        </form>                                </div>
2649                            </div>
2650                                                    <div class="flex shrink-0 js_slide w-1/2 sm:w-1/3 lg:w-1/4">
2651                                <div class="mx-1 product-item w-full" data-product-sku="spain-sh-yamal">
2652                                     <form method="post" action="https://www.voetbalshirtskoning.nl/checkout/cart/add/uenc/aHR0cHM6Ly93d3cudm9ldGJhbHNoaXJ0c2tvbmluZy5ubC8~/product/17997/" data-testid="product-item" class="item product product-item group product_addtocart_form product-item flex flex-col w-full h-full
2653            " data-product-sku="spain-sh-yamal">
2654    <input name="form_key" type="hidden" value="i9tjDByFy1Iir9hF">    <input type="hidden" name="product" value="17997">
2655            <div class="product-item-info">
2656            <div class="product-item-left">
2657                                                                    
2658                                <a href="https://www.voetbalshirtskoning.nl/lamine-yamal-spanje-voetbalshirt-kind-en-volwassenen.html" class="product photo product-item-photo block mx-auto" tabindex="-1" data-testid="salable-product-item">
2659                                            <span class="block product-image-container product-image-container-">
2660    <span class="block relative product-image-wrapper overflow-hidden rounded-lg">
2661        <img class="object-contain absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2
2662        rounded-lg product-image-photo" x-data="" @update-gallery-17997.window="$root.src = $event.detail" src="https://www.voetbalshirtskoning.nl/img/WhqOKr4DPbtd9PIMwk_tq-t5x2sTqcu6CVHX7tAplk8/resize:fit:300:300/aHR0cHM6Ly93d3cudm9ldGJhbHNoaXJ0c2tvbmluZy5ubC9tZWRpYS9jYXRhbG9nL3Byb2R1Y3QvbC9hL2xhbWluZS15YW1hbC1zaGlydC1raW5kLXZvbHdhc3NlbmVuLmpwZz93aWR0aD0zMDAmaGVpZ2h0PTMwMA.jpg" loading="lazy" width="300" height="300" alt="Lamine Yamal Spanje Voetbalshirt - Kind en Volwassenen" title="Lamine Yamal Spanje Voetbalshirt - Kind en Volwassenen">
2663    </span>
2664</span>
2665
2666<style>
2667    .product-image-container- span.product-image-wrapper {
2668        padding-bottom: 100%;
2669    }
2670
2671    @media (min-width: 768px) {
2672        .product-image-container- .product-image-photo {
2673            height: 300px;
2674        }
2675    }
2676</style>                                    </a>
2677                            </div>
2678            <div class="product-item-right no-reviews">
2679                <div class="product-info flex flex-col grow">
2680                    <div class="product-details md:bg-white md:group-hover:-mt-12">
2681                                                <div class="product name product-item-name">
2682                            <a class="product-item-link" href="https://www.voetbalshirtskoning.nl/lamine-yamal-spanje-voetbalshirt-kind-en-volwassenen.html" data-testid="salable-product-name-link">
2683                                Lamine Yamal Spanje Voetbalshirt - Kind en Volwassenen                            </a>
2684                        </div>
2685
2686                                                                            
2687                        
2688                        
2689                        <div class="product-price-wrapper" x-data="initPriceBox__6ac34b46e1b4a()" x-defer="intersect" @update-prices-17997.window="updatePrice($event.detail);">
2690                            <div class="price-box price-final_price" data-role="priceBox" data-product-id="17997" data-price-box="product-id-17997"><span class="normal-price">
2691    <span x-data x-id="['product\u002Dprice\u002D17997']" class="price-container price-final_price tax weee">
2692            <span class="price-label">Voor</span>
2693        <span :id="$id('product\u002Dprice\u002D17997')" data-price-amount="34.95" data-price-type="finalPrice" class="price-wrapper "><span class="price">34,95</span></span>
2694        </span></span></div>                        </div>
2695
2696                                            </div>
2697
2698                    
2698<script>
2699                        function initPriceBox__6ac34b46e1b4a()
2700                        {
2701                            return {
2702                                updatePrice(priceData) {
2703                                    const regularPriceLabel = this.$root.querySelector('.normal-price .price-label');
2704                                    const regularPriceElement = this.$root.querySelector('.normal-price .price-wrapper .price');
2705                                    if (priceData.finalPrice.amount < priceData.oldPrice.amount) {
2706                                        regularPriceLabel.classList.add('hidden');
2707                                    } else {
2708                                        regularPriceLabel.classList.remove('hidden');
2709                                    }
2710                                    regularPriceElement.innerText = hyva.formatPrice(priceData.finalPrice.amount);
2711                                }
2712                            }
2713                        }
2714                    </script>
2714
2715
2716                    <div class="product-item-inner">
2717                        
2718                                                    <div class="addtocart-btn-wrapper md:h-0 md:group-hover:h-12">
2719                                <button class="btn btn-primary action tocart px-6 md:px-2" data-testid="add-to-cart-btn" aria-label="In winkelwagen">
2720                                    <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 20 20" fill="currentColor" class="h-5 w-5" width="20" height="20" role="img">
2721  <path d="M3 1a1 1 0 000 2h1.22l.305 1.222a.997.997 0 00.01.042l1.358 5.43-.893.892C3.74 11.846 4.632 14 6.414 14H15a1 1 0 000-2H6.414l1-1H14a1 1 0 00.894-.553l3-6A1 1 0 0017 3H6.28l-.31-1.243A1 1 0 005 1H3zM16 16.5a1.5 1.5 0 11-3 0 1.5 1.5 0 013 0zM6.5 18a1.5 1.5 0 100-3 1.5 1.5 0 000 3z"></path>
2722<title>shopping-cart</title></svg>
2723                                    <span>In winkelwagen</span>
2724                                </button>
2725                            </div>
2726                                                                                                                                                </div>
2727                </div>
2728            </div>
2729        </div>
2730        </form>                                </div>
2731                            </div>
2732                                                    <div class="flex shrink-0 js_slide w-1/2 sm:w-1/3 lg:w-1/4">
2733                                <div class="mx-1 product-item w-full" data-product-sku="P25125">
2734                                     <form method="post" action="https://www.voetbalshirtskoning.nl/checkout/cart/add/uenc/aHR0cHM6Ly93d3cudm9ldGJhbHNoaXJ0c2tvbmluZy5ubC8~/product/17991/" data-testid="product-item" class="item product product-item group product_addtocart_form product-item flex flex-col w-full h-full
2735            " data-product-sku="P25125">
2736    <input name="form_key" type="hidden" value="i9tjDByFy1Iir9hF">    <input type="hidden" name="product" value="17991">
2737            <div class="product-item-info">
2738            <div class="product-item-left">
2739                                                                    
2740                                <a href="https://www.voetbalshirtskoning.nl/psg-trainingspak-thuis-volwas.html" class="product photo product-item-photo block mx-auto" tabindex="-1" data-testid="salable-product-item">
2741                                            <span class="block product-image-container product-image-container-">
2742    <span class="block relative product-image-wrapper overflow-hidden rounded-lg">
2743        <img class="object-contain absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2
2744        rounded-lg product-image-photo" x-data="" @update-gallery-17991.window="$root.src = $event.detail" src="https://www.voetbalshirtskoning.nl/img/3qQ7WHUKmO7H7VjBPN03MoSjx1U9U5PT83S3vOLJdsU/resize:fit:300:300/aHR0cHM6Ly93d3cudm9ldGJhbHNoaXJ0c2tvbmluZy5ubC9tZWRpYS9jYXRhbG9nL3Byb2R1Y3QvcC9zL3BzZy10cmFpbmluZ3NwYWsta2luZC0yMDI2LTIwMjdfMS5qcGc_d2lkdGg9MzAwJmhlaWdodD0zMDA.jpg" loading="lazy" width="300" height="300" alt="PSG Trainingspak Thuis - Eigen Naam - 2026-2027 - Volwassenen" title="PSG Trainingspak Thuis - Eigen Naam - 2026-2027 - Volwassenen">
2745    </span>
2746</span>
2747
2748<style>
2749    .product-image-container- span.product-image-wrapper {
2750        padding-bottom: 100%;
2751    }
2752
2753    @media (min-width: 768px) {
2754        .product-image-container- .product-image-photo {
2755            height: 300px;
2756        }
2757    }
2758</style>                                    </a>
2759                            </div>
2760            <div class="product-item-right no-reviews">
2761                <div class="product-info flex flex-col grow">
2762                    <div class="product-details md:bg-white md:group-hover:-mt-12">
2763                                                <div class="product name product-item-name">
2764                            <a class="product-item-link" href="https://www.voetbalshirtskoning.nl/psg-trainingspak-thuis-volwas.html" data-testid="salable-product-name-link">
2765                                PSG Trainingspak Thuis - Eigen Naam - 2026-2027 - Volwassenen                            </a>
2766                        </div>
2767
2768                                                                            
2769                        
2770                        
2771                        <div class="product-price-wrapper" x-data="initPriceBox__6ac34b46e99dd()" x-defer="intersect" @update-prices-17991.window="updatePrice($event.detail);">
2772                            <div class="price-box price-final_price" data-role="priceBox" data-product-id="17991" data-price-box="product-id-17991"><span class="normal-price">
2773    <span x-data x-id="['product\u002Dprice\u002D17991']" class="price-container price-final_price tax weee">
2774            <span class="price-label">Voor</span>
2775        <span :id="$id('product\u002Dprice\u002D17991')" data-price-amount="69.95" data-price-type="finalPrice" class="price-wrapper "><span class="price">69,95</span></span>
2776        </span></span></div>                        </div>
2777
2778                                            </div>
2779
2780                    
2780<script>
2781                        function initPriceBox__6ac34b46e99dd()
2782                        {
2783                            return {
2784                                updatePrice(priceData) {
2785                                    const regularPriceLabel = this.$root.querySelector('.normal-price .price-label');
2786                                    const regularPriceElement = this.$root.querySelector('.normal-price .price-wrapper .price');
2787                                    if (priceData.finalPrice.amount < priceData.oldPrice.amount) {
2788                                        regularPriceLabel.classList.add('hidden');
2789                                    } else {
2790                                        regularPriceLabel.classList.remove('hidden');
2791                                    }
2792                                    regularPriceElement.innerText = hyva.formatPrice(priceData.finalPrice.amount);
2793                                }
2794                            }
2795                        }
2796                    </script>
2796
2797
2798                    <div class="product-item-inner">
2799                        
2800                                                    <div class="addtocart-btn-wrapper md:h-0 md:group-hover:h-12">
2801                                <button class="btn btn-primary action tocart px-6 md:px-2" data-testid="add-to-cart-btn" aria-label="In winkelwagen">
2802                                    <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 20 20" fill="currentColor" class="h-5 w-5" width="20" height="20" role="img">
2803  <path d="M3 1a1 1 0 000 2h1.22l.305 1.222a.997.997 0 00.01.042l1.358 5.43-.893.892C3.74 11.846 4.632 14 6.414 14H15a1 1 0 000-2H6.414l1-1H14a1 1 0 00.894-.553l3-6A1 1 0 0017 3H6.28l-.31-1.243A1 1 0 005 1H3zM16 16.5a1.5 1.5 0 11-3 0 1.5 1.5 0 013 0zM6.5 18a1.5 1.5 0 100-3 1.5 1.5 0 000 3z"></path>
2804<title>shopping-cart</title></svg>
2805                                    <span>In winkelwagen</span>
2806                                </button>
2807                            </div>
2808                                                                                                                                                </div>
2809                </div>
2810            </div>
2811        </div>
2812        </form>                                </div>
2813                            </div>
2814                                                    <div class="flex shrink-0 js_slide w-1/2 sm:w-1/3 lg:w-1/4">
2815                                <div class="mx-1 product-item w-full" data-product-sku="P25172">
2816                                     <form method="post" action="https://www.voetbalshirtskoning.nl/checkout/cart/add/uenc/aHR0cHM6Ly93d3cudm9ldGJhbHNoaXJ0c2tvbmluZy5ubC8~/product/17985/" data-testid="product-item" class="item product product-item group product_addtocart_form product-item flex flex-col w-full h-full
2817            " data-product-sku="P25172">
2818    <input name="form_key" type="hidden" value="i9tjDByFy1Iir9hF">    <input type="hidden" name="product" value="17985">
2819            <div class="product-item-info">
2820            <div class="product-item-left">
2821                                                                    
2822                                <a href="https://www.voetbalshirtskoning.nl/psg-trainingspak-thuis-kind.html" class="product photo product-item-photo block mx-auto" tabindex="-1" data-testid="salable-product-item">
2823                                            <span class="block product-image-container product-image-container-">
2824    <span class="block relative product-image-wrapper overflow-hidden rounded-lg">
2825        <img class="object-contain absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2
2826        rounded-lg product-image-photo" x-data="" @update-gallery-17985.window="$root.src = $event.detail" src="https://www.voetbalshirtskoning.nl/img/CxZTHqyuE0uSE_1IIYNbRBQaLF6icN0FAWvSErJN7ZA/resize:fit:300:300/aHR0cHM6Ly93d3cudm9ldGJhbHNoaXJ0c2tvbmluZy5ubC9tZWRpYS9jYXRhbG9nL3Byb2R1Y3QvcC9zL3BzZy10cmFpbmluZ3NwYWsta2luZC0yMDI2LTIwMjcuanBnP3dpZHRoPTMwMCZoZWlnaHQ9MzAw.jpg" loading="lazy" width="300" height="300" alt="PSG Trainingspak Thuis - Eigen Naam - 2026-2027 - Kind" title="PSG Trainingspak Thuis - Eigen Naam - 2026-2027 - Kind">
2827    </span>
2828</span>
2829
2830<style>
2831    .product-image-container- span.product-image-wrapper {
2832        padding-bottom: 100%;
2833    }
2834
2835    @media (min-width: 768px) {
2836        .product-image-container- .product-image-photo {
2837            height: 300px;
2838        }
2839    }
2840</style>                                    </a>
2841                            </div>
2842            <div class="product-item-right no-reviews">
2843                <div class="product-info flex flex-col grow">
2844                    <div class="product-details md:bg-white md:group-hover:-mt-12">
2845                                                <div class="product name product-item-name">
2846                            <a class="product-item-link" href="https://www.voetbalshirtskoning.nl/psg-trainingspak-thuis-kind.html" data-testid="salable-product-name-link">
2847                                PSG Trainingspak Thuis - Eigen Naam - 2026-2027 - Kind                            </a>
2848                        </div>
2849
2850                                                                            
2851                        
2852                        
2853                        <div class="product-price-wrapper" x-data="initPriceBox__6ac34b46f188e()" x-defer="intersect" @update-prices-17985.window="updatePrice($event.detail);">
2854                            <div class="price-box price-final_price" data-role="priceBox" data-product-id="17985" data-price-box="product-id-17985"><span class="normal-price">
2855    <span x-data x-id="['product\u002Dprice\u002D17985']" class="price-container price-final_price tax weee">
2856            <span class="price-label">Voor</span>
2857        <span :id="$id('product\u002Dprice\u002D17985')" data-price-amount="64.95" data-price-type="finalPrice" class="price-wrapper "><span class="price">64,95</span></span>
2858        </span></span></div>                        </div>
2859
2860                                            </div>
2861
2862                    
2862<script>
2863                        function initPriceBox__6ac34b46f188e()
2864                        {
2865                            return {
2866                                updatePrice(priceData) {
2867                                    const regularPriceLabel = this.$root.querySelector('.normal-price .price-label');
2868                                    const regularPriceElement = this.$root.querySelector('.normal-price .price-wrapper .price');
2869                                    if (priceData.finalPrice.amount < priceData.oldPrice.amount) {
2870                                        regularPriceLabel.classList.add('hidden');
2871                                    } else {
2872                                        regularPriceLabel.classList.remove('hidden');
2873                                    }
2874                                    regularPriceElement.innerText = hyva.formatPrice(priceData.finalPrice.amount);
2875                                }
2876                            }
2877                        }
2878                    </script>
2878
2879
2880                    <div class="product-item-inner">
2881                        
2882                                                    <div class="addtocart-btn-wrapper md:h-0 md:group-hover:h-12">
2883                                <button class="btn btn-primary action tocart px-6 md:px-2" data-testid="add-to-cart-btn" aria-label="In winkelwagen">
2884                                    <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 20 20" fill="currentColor" class="h-5 w-5" width="20" height="20" role="img">
2885  <path d="M3 1a1 1 0 000 2h1.22l.305 1.222a.997.997 0 00.01.042l1.358 5.43-.893.892C3.74 11.846 4.632 14 6.414 14H15a1 1 0 000-2H6.414l1-1H14a1 1 0 00.894-.553l3-6A1 1 0 0017 3H6.28l-.31-1.243A1 1 0 005 1H3zM16 16.5a1.5 1.5 0 11-3 0 1.5 1.5 0 013 0zM6.5 18a1.5 1.5 0 100-3 1.5 1.5 0 000 3z"></path>
2886<title>shopping-cart</title></svg>
2887                                    <span>In winkelwagen</span>
2888                                </button>
2889                            </div>
2890                                                                                                                                                </div>
2891                </div>
2892            </div>
2893        </div>
2894        </form>                                </div>
2895                            </div>
2896                                                    <div class="flex shrink-0 js_slide w-1/2 sm:w-1/3 lg:w-1/4">
2897                                <div class="mx-1 product-item w-full" data-product-sku="RM26B1MB">
2898                                     <form method="post" action="https://www.voetbalshirtskoning.nl/checkout/cart/add/uenc/aHR0cHM6Ly93d3cudm9ldGJhbHNoaXJ0c2tvbmluZy5ubC8~/product/17979/" data-testid="product-item" class="item product product-item group product_addtocart_form product-item flex flex-col w-full h-full
2899            " data-product-sku="RM26B1MB">
2900    <input name="form_key" type="hidden" value="i9tjDByFy1Iir9hF">    <input type="hidden" name="product" value="17979">
2901            <div class="product-item-info">
2902            <div class="product-item-left">
2903                                                                    
2904                                <a href="https://www.voetbalshirtskoning.nl/mbappe-real-madrid-voetbaltenue-thuis-2026-2027-kind.html" class="product photo product-item-photo block mx-auto" tabindex="-1" data-testid="salable-product-item">
2905                                            <span class="block product-image-container product-image-container-">
2906    <span class="block relative product-image-wrapper overflow-hidden rounded-lg">
2907        <img class="object-contain absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2
2908        rounded-lg product-image-photo" x-data="" @update-gallery-17979.window="$root.src = $event.detail" src="https://www.voetbalshirtskoning.nl/img/cm73kJLFZGZB13BZvGC9awuBXPoGbraABfd1_U_hMV0/resize:fit:300:300/aHR0cHM6Ly93d3cudm9ldGJhbHNoaXJ0c2tvbmluZy5ubC9tZWRpYS9jYXRhbG9nL3Byb2R1Y3Qvci9lL3JlYWwtbWFkcmlkLXZvZXRiYWx0ZW51ZS1tYmFwcGUtYWNodGVya2FudC1raW5kXzEuanBnP3dpZHRoPTMwMCZoZWlnaHQ9MzAw.jpg" loading="lazy" width="300" height="300" alt="Mbappe Real Madrid Voetbaltenue Thuis - 2026-2027 - Kind" title="Mbappe Real Madrid Voetbaltenue Thuis - 2026-2027 - Kind">
2909    </span>
2910</span>
2911
2912<style>
2913    .product-image-container- span.product-image-wrapper {
2914        padding-bottom: 100%;
2915    }
2916
2917    @media (min-width: 768px) {
2918        .product-image-container- .product-image-photo {
2919            height: 300px;
2920        }
2921    }
2922</style>                                    </a>
2923                            </div>
2924            <div class="product-item-right no-reviews">
2925                <div class="product-info flex flex-col grow">
2926                    <div class="product-details md:bg-white md:group-hover:-mt-12">
2927                                                <div class="product name product-item-name">
2928                            <a class="product-item-link" href="https://www.voetbalshirtskoning.nl/mbappe-real-madrid-voetbaltenue-thuis-2026-2027-kind.html" data-testid="salable-product-name-link">
2929                                Mbappe Real Madrid Voetbaltenue Thuis - 2026-2027 - Kind                            </a>
2930                        </div>
2931
2932                                                                            
2933                        
2934                        
2935                        <div class="product-price-wrapper" x-data="initPriceBox__6ac34b4706b0a()" x-defer="intersect" @update-prices-17979.window="updatePrice($event.detail);">
2936                            <div class="price-box price-final_price" data-role="priceBox" data-product-id="17979" data-price-box="product-id-17979"><span class="normal-price">
2937    <span x-data x-id="['product\u002Dprice\u002D17979']" class="price-container price-final_price tax weee">
2938            <span class="price-label">Voor</span>
2939        <span :id="$id('product\u002Dprice\u002D17979')" data-price-amount="54.95" data-price-type="finalPrice" class="price-wrapper "><span class="price">54,95</span></span>
2940        </span></span></div>                        </div>
2941
2942                                            </div>
2943
2944                    
2944<script>
2945                        function initPriceBox__6ac34b4706b0a()
2946                        {
2947                            return {
2948                                updatePrice(priceData) {
2949                                    const regularPriceLabel = this.$root.querySelector('.normal-price .price-label');
2950                                    const regularPriceElement = this.$root.querySelector('.normal-price .price-wrapper .price');
2951                                    if (priceData.finalPrice.amount < priceData.oldPrice.amount) {
2952                                        regularPriceLabel.classList.add('hidden');
2953                                    } else {
2954                                        regularPriceLabel.classList.remove('hidden');
2955                                    }
2956                                    regularPriceElement.innerText = hyva.formatPrice(priceData.finalPrice.amount);
2957                                }
2958                            }
2959                        }
2960                    </script>
2960
2961
2962                    <div class="product-item-inner">
2963                        
2964                                                    <div class="addtocart-btn-wrapper md:h-0 md:group-hover:h-12">
2965                                <button class="btn btn-primary action tocart px-6 md:px-2" data-testid="add-to-cart-btn" aria-label="In winkelwagen">
2966                                    <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 20 20" fill="currentColor" class="h-5 w-5" width="20" height="20" role="img">
2967  <path d="M3 1a1 1 0 000 2h1.22l.305 1.222a.997.997 0 00.01.042l1.358 5.43-.893.892C3.74 11.846 4.632 14 6.414 14H15a1 1 0 000-2H6.414l1-1H14a1 1 0 00.894-.553l3-6A1 1 0 0017 3H6.28l-.31-1.243A1 1 0 005 1H3zM16 16.5a1.5 1.5 0 11-3 0 1.5 1.5 0 013 0zM6.5 18a1.5 1.5 0 100-3 1.5 1.5 0 000 3z"></path>
2968<title>shopping-cart</title></svg>
2969                                    <span>In winkelwagen</span>
2970                                </button>
2971                            </div>
2972                                                                                                                                                </div>
2973                </div>
2974            </div>
2975        </div>
2976        </form>                                </div>
2977                            </div>
2978                                                    <div class="flex shrink-0 js_slide w-1/2 sm:w-1/3 lg:w-1/4">
2979                                <div class="mx-1 product-item w-full" data-product-sku="RM26B1">
2980                                     <form method="post" action="https://www.voetbalshirtskoning.nl/checkout/cart/add/uenc/aHR0cHM6Ly93d3cudm9ldGJhbHNoaXJ0c2tvbmluZy5ubC8~/product/17973/" data-testid="product-item" class="item product product-item group product_addtocart_form product-item flex flex-col w-full h-full
2981            " data-product-sku="RM26B1">
2982    <input name="form_key" type="hidden" value="i9tjDByFy1Iir9hF">    <input type="hidden" name="product" value="17973">
2983            <div class="product-item-info">
2984            <div class="product-item-left">
2985                                                                    
2986                                <a href="https://www.voetbalshirtskoning.nl/real-madrid-voetbaltenue-thuis-eigen-naam-2026-2027-kind.html" class="product photo product-item-photo block mx-auto" tabindex="-1" data-testid="salable-product-item">
2987                                            <span class="block product-image-container product-image-container-">
2988    <span class="block relative product-image-wrapper overflow-hidden rounded-lg">
2989        <img class="object-contain absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2
2990        rounded-lg product-image-photo" x-data="" @update-gallery-17973.window="$root.src = $event.detail" src="https://www.voetbalshirtskoning.nl/img/ZbDvQ6m0kulSkqtgqKAS3ArDz7fIHf6kx21q2xGD_vo/resize:fit:300:300/aHR0cHM6Ly93d3cudm9ldGJhbHNoaXJ0c2tvbmluZy5ubC9tZWRpYS9jYXRhbG9nL3Byb2R1Y3Qvci9lL3JlYWwtbWFkcmlkLXRlbnVlLXRodWlzLWtpbmQuanBnP3dpZHRoPTMwMCZoZWlnaHQ9MzAw.jpg" loading="lazy" width="300" height="300" alt="Real Madrid Voetbaltenue Thuis - Eigen Naam - 2026-2027 - Kind" title="Real Madrid Voetbaltenue Thuis - Eigen Naam - 2026-2027 - Kind">
2991    </span>
2992</span>
2993
2994<style>
2995    .product-image-container- span.product-image-wrapper {
2996        padding-bottom: 100%;
2997    }
2998
2999    @media (min-width: 768px) {
3000        .product-image-container- .product-image-photo {
3001            height: 300px;
3002        }
3003    }
3004</style>                                    </a>
3005                            </div>
3006            <div class="product-item-right no-reviews">
3007                <div class="product-info flex flex-col grow">
3008                    <div class="product-details md:bg-white md:group-hover:-mt-12">
3009                                                <div class="product name product-item-name">
3010                            <a class="product-item-link" href="https://www.voetbalshirtskoning.nl/real-madrid-voetbaltenue-thuis-eigen-naam-2026-2027-kind.html" data-testid="salable-product-name-link">
3011                                Real Madrid Voetbaltenue Thuis - Eigen Naam - 2026-2027 - Kind                            </a>
3012                        </div>
3013
3014                                                                            
3015                        
3016                        
3017                        <div class="product-price-wrapper" x-data="initPriceBox__6ac34b471088a()" x-defer="intersect" @update-prices-17973.window="updatePrice($event.detail);">
3018                            <div class="price-box price-final_price" data-role="priceBox" data-product-id="17973" data-price-box="product-id-17973"><span class="normal-price">
3019    <span x-data x-id="['product\u002Dprice\u002D17973']" class="price-container price-final_price tax weee">
3020            <span class="price-label">Voor</span>
3021        <span :id="$id('product\u002Dprice\u002D17973')" data-price-amount="49.95" data-price-type="finalPrice" class="price-wrapper "><span class="price">49,95</span></span>
3022        </span></span></div>                        </div>
3023
3024                                            </div>
3025
3026                    
3026<script>
3027                        function initPriceBox__6ac34b471088a()
3028                        {
3029                            return {
3030                                updatePrice(priceData) {
3031                                    const regularPriceLabel = this.$root.querySelector('.normal-price .price-label');
3032                                    const regularPriceElement = this.$root.querySelector('.normal-price .price-wrapper .price');
3033                                    if (priceData.finalPrice.amount < priceData.oldPrice.amount) {
3034                                        regularPriceLabel.classList.add('hidden');
3035                                    } else {
3036                                        regularPriceLabel.classList.remove('hidden');
3037                                    }
3038                                    regularPriceElement.innerText = hyva.formatPrice(priceData.finalPrice.amount);
3039                                }
3040                            }
3041                        }
3042                    </script>
3042
3043
3044                    <div class="product-item-inner">
3045                        
3046                                                    <div class="addtocart-btn-wrapper md:h-0 md:group-hover:h-12">
3047                                <button class="btn btn-primary action tocart px-6 md:px-2" data-testid="add-to-cart-btn" aria-label="In winkelwagen">
3048                                    <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 20 20" fill="currentColor" class="h-5 w-5" width="20" height="20" role="img">
3049  <path d="M3 1a1 1 0 000 2h1.22l.305 1.222a.997.997 0 00.01.042l1.358 5.43-.893.892C3.74 11.846 4.632 14 6.414 14H15a1 1 0 000-2H6.414l1-1H14a1 1 0 00.894-.553l3-6A1 1 0 0017 3H6.28l-.31-1.243A1 1 0 005 1H3zM16 16.5a1.5 1.5 0 11-3 0 1.5 1.5 0 013 0zM6.5 18a1.5 1.5 0 100-3 1.5 1.5 0 000 3z"></path>
3050<title>shopping-cart</title></svg>
3051                                    <span>In winkelwagen</span>
3052                                </button>
3053                            </div>
3054                                                                                                                                                </div>
3055                </div>
3056            </div>
3057        </div>
3058        </form>                                </div>
3059                            </div>
3060                                                    <div class="flex shrink-0 js_slide w-1/2 sm:w-1/3 lg:w-1/4">
3061                                <div class="mx-1 product-item w-full" data-product-sku="UCL26010-yam">
3062                                     <form method="post" action="https://www.voetbalshirtskoning.nl/checkout/cart/add/uenc/aHR0cHM6Ly93d3cudm9ldGJhbHNoaXJ0c2tvbmluZy5ubC8~/product/17956/" data-testid="product-item" class="item product product-item group product_addtocart_form product-item flex flex-col w-full h-full
3063            " data-product-sku="UCL26010-yam">
3064    <input name="form_key" type="hidden" value="i9tjDByFy1Iir9hF">    <input type="hidden" name="product" value="17956">
3065            <div class="product-item-info">
3066            <div class="product-item-left">
3067                                                                    
3068                                <a href="https://www.voetbalshirtskoning.nl/lamine-yamal-champions-league-voetbaltenue-kind.html" class="product photo product-item-photo block mx-auto" tabindex="-1" data-testid="salable-product-item">
3069                                            <span class="block product-image-container product-image-container-">
3070    <span class="block relative product-image-wrapper overflow-hidden rounded-lg">
3071        <img class="object-contain absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2
3072        rounded-lg product-image-photo" x-data="" @update-gallery-17956.window="$root.src = $event.detail" src="https://www.voetbalshirtskoning.nl/img/GgKJ7vXO5mc_Ki69SnPFu0SaEyOLxundRRxt3-4ggOQ/resize:fit:300:300/aHR0cHM6Ly93d3cudm9ldGJhbHNoaXJ0c2tvbmluZy5ubC9tZWRpYS9jYXRhbG9nL3Byb2R1Y3QvbC9hL2xhbWluZS15YW1hbC12b2V0YmFsdGVudWUtY2hhbXBpb25zLWxlYWd1ZS1raW5kLmpwZz93aWR0aD0zMDAmaGVpZ2h0PTMwMA.jpg" loading="lazy" width="300" height="300" alt="Lamine Yamal Champions League Voetbaltenue - Kind" title="Lamine Yamal Champions League Voetbaltenue - Kind">
3073    </span>
3074</span>
3075
3076<style>
3077    .product-image-container- span.product-image-wrapper {
3078        padding-bottom: 100%;
3079    }
3080
3081    @media (min-width: 768px) {
3082        .product-image-container- .product-image-photo {
3083            height: 300px;
3084        }
3085    }
3086</style>                                    </a>
3087                            </div>
3088            <div class="product-item-right no-reviews">
3089                <div class="product-info flex flex-col grow">
3090                    <div class="product-details md:bg-white md:group-hover:-mt-12">
3091                                                <div class="product name product-item-name">
3092                            <a class="product-item-link" href="https://www.voetbalshirtskoning.nl/lamine-yamal-champions-league-voetbaltenue-kind.html" data-testid="salable-product-name-link">
3093                                Lamine Yamal Champions League Voetbaltenue - Kind                            </a>
3094                        </div>
3095
3096                                                                            
3097                        
3098                        
3099                        <div class="product-price-wrapper" x-data="initPriceBox__6ac34b4718e0f()" x-defer="intersect" @update-prices-17956.window="updatePrice($event.detail);">
3100                            <div class="price-box price-final_price" data-role="priceBox" data-product-id="17956" data-price-box="product-id-17956"><span class="normal-price">
3101    <span x-data x-id="['product\u002Dprice\u002D17956']" class="price-container price-final_price tax weee">
3102            <span class="price-label">Voor</span>
3103        <span :id="$id('product\u002Dprice\u002D17956')" data-price-amount="49.95" data-price-type="finalPrice" class="price-wrapper "><span class="price">49,95</span></span>
3104        </span></span></div>                        </div>
3105
3106                                            </div>
3107
3108                    
3108<script>
3109                        function initPriceBox__6ac34b4718e0f()
3110                        {
3111                            return {
3112                                updatePrice(priceData) {
3113                                    const regularPriceLabel = this.$root.querySelector('.normal-price .price-label');
3114                                    const regularPriceElement = this.$root.querySelector('.normal-price .price-wrapper .price');
3115                                    if (priceData.finalPrice.amount < priceData.oldPrice.amount) {
3116                                        regularPriceLabel.classList.add('hidden');
3117                                    } else {
3118                                        regularPriceLabel.classList.remove('hidden');
3119                                    }
3120                                    regularPriceElement.innerText = hyva.formatPrice(priceData.finalPrice.amount);
3121                                }
3122                            }
3123                        }
3124                    </script>
3124
3125
3126                    <div class="product-item-inner">
3127                        
3128                                                    <div class="addtocart-btn-wrapper md:h-0 md:group-hover:h-12">
3129                                <button class="btn btn-primary action tocart px-6 md:px-2" data-testid="add-to-cart-btn" aria-label="In winkelwagen">
3130                                    <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 20 20" fill="currentColor" class="h-5 w-5" width="20" height="20" role="img">
3131  <path d="M3 1a1 1 0 000 2h1.22l.305 1.222a.997.997 0 00.01.042l1.358 5.43-.893.892C3.74 11.846 4.632 14 6.414 14H15a1 1 0 000-2H6.414l1-1H14a1 1 0 00.894-.553l3-6A1 1 0 0017 3H6.28l-.31-1.243A1 1 0 005 1H3zM16 16.5a1.5 1.5 0 11-3 0 1.5 1.5 0 013 0zM6.5 18a1.5 1.5 0 100-3 1.5 1.5 0 000 3z"></path>
3132<title>shopping-cart</title></svg>
3133                                    <span>In winkelwagen</span>
3134                                </button>
3135                            </div>
3136                                                                                                                                                </div>
3137                </div>
3138            </div>
3139        </div>
3140        </form>                                </div>
3141                            </div>
3142                                            </div>
3143                </div>
3144                <template x-if="itemCount > pageSize">
3145                    <div class="slider-nav">
3146                        <button aria-label="Vorige" tabindex="-1" class="slider-btn btn-prev" :class="{ 'opacity-0 pointer-events-none' : !isScrollPreviousButtonVisible }" @click="scrollPrevious">
3147                            <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 20 20" fill="currentColor" width="20" height="20" role="img">
3148  <path fill-rule="evenodd" d="M9.707 16.707a1 1 0 01-1.414 0l-6-6a1 1 0 010-1.414l6-6a1 1 0 011.414 1.414L5.414 9H17a1 1 0 110 2H5.414l4.293 4.293a1 1 0 010 1.414z" clip-rule="evenodd"></path>
3149<title>arrow-left</title></svg>
3150                        </button>
3151                        <button aria-label="Volgende" tabindex="-1" class="slider-btn btn-next" :class="{ 'opacity-0 pointer-events-none' : !isScrollNextButtonVisible }" @click="scrollNext">
3152                            <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 20 20" fill="currentColor" width="20" height="20" role="img">
3153  <path fill-rule="evenodd" d="M10.293 3.293a1 1 0 011.414 0l6 6a1 1 0 010 1.414l-6 6a1 1 0 01-1.414-1.414L14.586 11H3a1 1 0 110-2h11.586l-4.293-4.293a1 1 0 010-1.414z" clip-rule="evenodd"></path>
3154<title>arrow-right</title></svg>
3155                        </button>
3156                    </div>
3157                </template>
3158            </div>
3159            </section>
3160</div><div class="footer-usp-title-wrapper">
3161            <h4 class="block-title">
3162                Bij ons zit je goed            </h4>
3163        </div>
3164        <div class="footer-usp-wrapper grid-cols-4">
3165                    <div class="footer-usp-item">
3166                <div class="footer-usp-icon">
3167                                        <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" class="stroke-current" width="32" height="32" role="img">
3168  <path stroke-linecap="round" stroke-linejoin="round" d="M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z"/>
3169<title>check-circle</title></svg>
3170                </div>
3171                <div class="footer-usp-text">
3172                    Op werkdagen voor 22.00 besteld, <strong>morgen in huis!*</strong>                </div>
3173            </div>
3174                    <div class="footer-usp-item">
3175                <div class="footer-usp-icon">
3176                                        <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" class="stroke-current" width="32" height="32" role="img">
3177  <path stroke-linecap="round" stroke-linejoin="round" d="M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z"/>
3178<title>check-circle</title></svg>
3179                </div>
3180                <div class="footer-usp-text">
3181                    <strong>Gratis verzending</strong> vanaf 30 euro                </div>
3182            </div>
3183                    <div class="footer-usp-item">
3184                <div class="footer-usp-icon">
3185                                        <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" class="stroke-current" width="32" height="32" role="img">
3186  <path stroke-linecap="round" stroke-linejoin="round" d="M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z"/>
3187<title>check-circle</title></svg>
3188                </div>
3189                <div class="footer-usp-text">
3190                    <strong>Gratis retourneren</strong> binnen 30 dagen                </div>
3191            </div>
3192                    <div class="footer-usp-item">
3193                <div class="footer-usp-icon">
3194                                        <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" class="stroke-current" width="32" height="32" role="img">
3195  <path stroke-linecap="round" stroke-linejoin="round" d="M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z"/>
3196<title>check-circle</title></svg>
3197                </div>
3198                <div class="footer-usp-text">
3199                    <strong>Thuiswinkel waarborg</strong>                </div>
3200            </div>
3201            </div><div class="home-cms-content mt-10 md:mt-20"><h1>Goedkope Voetbalshirts</h1>
3202<p class="normal">Ben jij op zoek naar goedkope voetbalshirts? Voetbalshirtskoning.nl is dé voetbal webshop van Nederland met goedkope voetbalshirts. Wij zijn liefhebbers van <a href="/voetbalshirts/">voetbalshirts</a> en delen onze voetbalpassie graag met jou, de voetbalfan. Dit betekent goedkope voetbalshirts van een hoogwaardige kwaliteit, maar te koop voor een voordelige prijs. Ons assortiment is met zorg samengesteld en bestaat daarom uit een divers aanbod van goedkope voetbal producten. Zo hebben we officiële voetbalshirts, maar ook fanshirts. Voetbalshirts bestellen is bij ons gemakkelijk en loopt altijd via een beveiligde verbinding.</p>
3203<h2>Shirts, tenues, trainingspakken en fanartikelen</h2>
3204<p class="normal">Voetbalshirts zijn op alle posities sterk vertegenwoordigd, met zowel thuisshirts als uitshirts en in zowel korte als lange mouwen. Compleet en nieuw <a title="Voetbaltenue" href="/voetbaltenues/">voetbaltenue</a> bestaande uit een voetbalshirt, voetbalbroekje en voetbalsokken mogen uiteraard niet ontbreken in een uitgebalanceerde selectie. Ook hebben we aan de onmisbare schakel gedacht met een ruim aanbod aan keeperskleding, zoals keepersshirts en volwaardige keeperstenues. Naast de gevarieerde collectie goedkope voetbalshirts, kun je in de voetbal fanshop terecht voor andere producten zoals <a title="voetbal trainingspakken" href="https://www.voetbalshirtskoning.nl/trainingspakken/">voetbal trainingspakken</a>, voetbalpetten en overige gave merchandising.</p>
3205<h2>Eredivisie, Europese topclubs en landenteams</h2>
3206<p class="normal">Onze collectie goedkope voetbalshirts bestaat uit artikelen van Nederlandse clubs en Europese grootmachten zoals het Ajax shirt,&nbsp;<a title="barcelona shirt" href="/voetbalshirts/barcelona/">Barcelona&nbsp;shirt</a>, <a title="real madrid shirt" href="/voetbalshirts/real-madrid/">Real Madrid&nbsp;shirt</a>&nbsp;en&nbsp;Bayern München&nbsp;shirt. Ook voor de trouwe Oranje supporters hebben we vele Oranje fanartikelen zoals het&nbsp;<a title="nederlands elftal shirt" href="/voetbalshirts/landen/nederlands-elftal/">Nederlands Elftal&nbsp;shirt</a> naar de overwinning schreeuwt. Een landen voetbalshirt haal je ook van populaire landenteams zoals Spanje, Brazilië en België kan natuurlijk ook, de keuze is reuze.&nbsp;</p>
3207<h2>Shirt bedrukking van je favoriete speler</h2>
3208<p class="normal">Bijna alles is mogelijk in onze voetbalshop. Wil je graag de naam van je favoriete speler op het replica voetbal shirt? Kies dan voor de optie <a title="Voetbalshirt bedrukken" href="/voetbalshirt-bedrukken/" target="_self">voetbalshirt bedrukken</a> en ga voor het spelersshirt van bijvoorbeeld <a title="Messi shirt" href="/spelers
3208/messi-voetbalshirt/" target="_self">Messi</a>, <a title="Ronaldo shirt" href="/spelers/ronaldo-voetbalshirt/" target="_self">Ronaldo</a>, <a href="https://www.voetbalshirtskoning.nl/spelers/mbappe/">Mbappe</a>, <a title="Lamine Yamal" href="/spelers/lamine-yamal/">Lamine Yamal</a> of <a title="Haaland" href="/spelers/haaland/">Haaland</a>. Ook kun je natuurlijk kiezen voor je eigen naam en favoriete rugnummer. Wij bedrukken de voetbalshirts altijd&nbsp;met het juiste lettertype zodat het mooi bij het shirt past. Bestel je een bedrukt shirt al voor 14.00? Dan is het morgen in huis. Helemaal een eigen design nodig? Kijk voor meer informatie op onze voetbalshirt ontwerpen pagina.</p>
3209<h2>Goedkope voetbalshirts voor alle leeftijden, voor elk budget</h2>
3210<p class="normal">Voetbal is voor alle leeftijden, kinderen en volwassenen. Voor de junioren is er daarom volop keuze aan goedkope <a title="Voetbalshirts kids" href="/voetbalshirts-kids/">voetbalshirts kids</a>. Kies uit verschillende kleuren en maten en profiteer dankzij de vele aanbiedingen van aantrekkelijke kortingen. De voetbalfan is onze nummer één, daarom kun je binnen 30 dagen gratis ruilen of retourneren. In onze voetbalwinkel kun je betalen met iDEAL, Creditcard, Paypal, Bancontact, Apple Pay of Google Pay. Ook kun je ervoor kiezen om je voetbalshirt achteraf te betalen via Klarna. Wij verzenden gratis vanaf 30 euro. Kom je niet aan dat bedrag? Koop er dan nog een leuk paar voetbalsokken of een voetbalbroekje bij. Goedkope voetbalshirts en andere voetbalkleding bestel je via Voetbalshirtskoning. Veel winkelplezier!</p></div></div></div></main><div class="kiyoh-shop-snippets kiyoh-schema border-t py-3 lg:py-6"
3211     itemscope="itemscope" itemtype="http://schema.org/Organization" style="display&#x3A;block&#x3B;">
3212    <meta itemprop="name" content="Voetbalshirtskoning.nl"/>
3213    <div class="flex justify-center flex-col items-center"
3214         itemprop="aggregateRating" itemscope="itemscope" itemtype="http://schema.org/AggregateRating">
3215        <meta itemprop="bestRating" content="10">
3216        <h2 class="block-title !text-2xl font-bold mb-3 lg:mb-4">Klantbeoordeling            <span itemprop="ratingValue">8.5</span>
3217        </h2>
3218        <div class="rating-box flex mb-2">
3219                                                                <svg xmlns="http://www.w3.org/2000/svg" width="36" height="36" viewBox="0 0 18 18" fill="currentColor" class="text-secondary" role="img">
3220    <path d="M9.049 2.927c.3-.921 1.603-.921 1.902 0l1.07 3.292a1 1 0 00.95.69h3.462c.969 0 1.371 1.24.588 1.81l-2.8 2.034a1 1 0 00-.364 1.118l1.07 3.292c.3.921-.755 1.688-1.54 1.118l-2.8-2.034a1 1 0 00-1.175 0l-2.8 2.034c-.784.57-1.838-.197-1.539-1.118l1.07-3.292a1 1 0 00-.364-1.118L2.98 8.72c-.783-.57-.38-1.81.588-1.81h3.461a1 1 0 00.951-.69l1.07-3.292z"/>
3221<title>star-xl</title></svg>
3222                                                        <svg xmlns="http://www.w3.org/2000/svg" width="36" height="36" viewBox="0 0 18 18" fill="currentColor" class="text-secondary" role="img">
3223    <path d="M9.049 2.927c.3-.921 1.603-.921 1.902 0l1.07 3.292a1 1 0 00.95.69h3.462c.969 0 1.371 1.24.588 1.81l-2.8 2.034a1 1 0 00-.364 1.118l1.07 3.292c.3.921-.755 1.688-1.54 1.118l-2.8-2.034a1 1 0 00-1.175 0l-2.8 2.034c-.784.57-1.838-.197-1.539-1.118l1.07-3.292a1 1 0 00-.364-1.118L2.98 8.72c-.783-.57-.38-1.81.588-1.81h3.461a1 1 0 00.951-.69l1.07-3.292z"/>
3224<title>star-xl</title></svg>
3225                                                        <svg xmlns="http://www.w3.org/2000/svg" width="36" height="36" viewBox="0 0 18 18" fill="currentColor" class="text-secondary" role="img">
3226    <path d="M9.049 2.927c.3-.921 1.603-.921 1.902 0l1.07 3.292a1 1 0 00.95.69h3.462c.969 0 1.371 1.24.588 1.81l-2.8 2.034a1 1 0 00-.364 1.118l1.07 3.292c.3.921-.755 1.688-1.54 1.118l-2.8-2.034a1 1 0 00-1.175 0l-2.8 2.034c-.784.57-1.838-.197-1.539-1.118l1.07-3.292a1 1 0 00-.364-1.118L2.98 8.72c-.783-.57-.38-1.81.588-1.81h3.461a1 1 0 00.951-.69l1.07-3.292z"/>
3227<title>star-xl</title></svg>
3228                                                        <svg xmlns="http://www.w3.org/2000/svg" width="36" height="36" viewBox="0 0 18 18" fill="currentColor" class="text-secondary" role="img">
3229    <path d="M9.049 2.927c.3-.921 1.603-.921 1.902 0l1.07 3.292a1 1 0 00.95.69h3.462c.969 0 1.371 1.24.588 1.81l-2.8 2.034a1 1 0 00-.364 1.118l1.07 3.292c.3.921-.755 1.688-1.54 1.118l-2.8-2.034a1 1 0 00-1.175 0l-2.8 2.034c-.784.57-1.838-.197-1.539-1.118l1.07-3.292a1 1 0 00-.364-1.118L2.98 8.72c-.783-.57-.38-1.81.588-1.81h3.461a1 1 0 00.951-.69l1.07-3.292z"/>
3229
3230<title>star-xl</title></svg>
3231                                                                        <svg xmlns="http://www.w3.org/2000/svg" width="36" height="36"  viewBox="0 0 18 18" fill="currentColor">
3232                        <defs>
3233                            <linearGradient id="partialFill-6ac3510c934c9">
3234                                <stop offset="0%" stop-color="#FF6600"/>
3235                                <stop offset="25%" stop-color="#FF6600"/>
3236                                <stop offset="25%" stop-color="#D1D5DB"/>
3237                                <stop offset="100%" stop-color="#D1D5DB"/>
3238                            </linearGradient>
3239                        </defs>
3240                        <g fill="url(#partialFill-6ac3510c934c9)">
3241                            <path d="M9.049 2.927c.3-.921 1.603-.921 1.902 0l1.07 3.292a1 1 0 00.95.69h3.462c.969 0 1.371 1.24.588 1.81l-2.8 2.034a1 1 0 00-.364 1.118l1.07 3.292c.3.921-.755 1.688-1.54 1.118l-2.8-2.034a1 1 0 00-1.175 0l-2.8 2.034c-.784.57-1.838-.197-1.539-1.118l1.07-3.292a1 1 0 00-.364-1.118L2.98 8.72c-.783-.57-.38-1.81.588-1.81h3.461a1 1 0 00.951-.69l1.07-3.292z"/>
3242                        </g>
3243                    </svg>
3244                                                                    </div>
3245        <p>
3246            <a href="https://www.kiyoh.com/reviews/1047312/voetbalshirtskoning_nl" target="_blank" class="kiyoh-link">
3247                <span itemprop="ratingCount">16659</span>
3248                reviews            </a>
3249        </p>
3250    </div>
3251</div><footer class="page-footer"><div class="footer container overflow-hidden"><div class="footer-usp-wrapper">
3252                                <a class="footer-usp-item" href="/klantenservice/"
3253                aria-label="Meer&#x20;informatie">
3254                            <div class="footer-usp-icon">
3255                                <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" class="stroke-current" width="24" height="24" role="img">
3256  <path stroke-linecap="round" stroke-linejoin="round" d="M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z"/>
3257<title>check-circle</title></svg>
3258            </div>
3259                <div class="footer-usp-text">
3260            <strong>Klantenservice</strong> - we staan voor je klaar        </div>
3261                    </a>
3262                                        <a class="footer-usp-item" href="/klantenservice/verzenden/onze-verzendservice/"
3263                aria-label="Meer&#x20;informatie">
3264                            <div class="footer-usp-icon">
3265                                <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" class="stroke-current" width="24" height="24" role="img">
3266  <path stroke-linecap="round" stroke-linejoin="round" d="M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z"/>
3267<title>check-circle</title></svg>
3268            </div>
3269                <div class="footer-usp-text">
3270            <strong>Morgen bezorgd</strong> - bestel op werkdagen voor 22.00 uur*        </div>
3271                    </a>
3272                                        <a class="footer-usp-item" href="/klantenservice/verzenden/onze-verzendservice/"
3273                aria-label="Meer&#x20;informatie">
3274                            <div class="footer-usp-icon">
3275                                <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" class="stroke-current" width="24" height="24" role="img">
3276  <path stroke-linecap="round" stroke-linejoin="round" d="M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z"/>
3277<title>check-circle</title></svg>
3278            </div>
3279                <div class="footer-usp-text">
3280            <strong>Gratis verzending</strong> - vanaf 30 euro        </div>
3281                    </a>
3282                                        <a class="footer-usp-item" href="https://www.thuiswinkel.org/leden/voetbalshirtskoning-nl/certificaat"
3283                aria-label="Meer&#x20;informatie">
3284                            <div class="footer-usp-icon">
3285                                <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" class="stroke-current" width="24" height="24" role="img">
3286  <path stroke-linecap="round" stroke-linejoin="round" d="M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z"/>
3287<title>check-circle</title></svg>
3288            </div>
3289                <div class="footer-usp-text">
3290            Thuiswinkel waarborg        </div>
3291                    </a>
3292                </div><div class="footer-middle-wrapper md:flex flex-col lg:flex-row-reverse md:gap-y-10 md:pb-10 lg:pt-10 md:border-b md:border-footer-columns-border-color md:gap-x-8"><div class="footer-links-columns" role="navigation"
3293     aria-label=Footer&#x20;Links>
3294                                    <div class="footer-links-col" x-data="{open: false}" :class="{active: open}"
3295                 aria-labelledby="footer-col-1-toggle">
3296                <button
3297                    type="button"
3298                    id="footer-col-1-toggle"
3299                    class="block-title inline-flex w-full items-center justify-between gap-2"
3300                    @click="open = !open"
3301                    @keydown.enter.prevent="open = !open"
3302                    @keydown.space.prevent="open = !open"
3303                    :aria-expanded="open.toString()"
3304                    aria-controls="footer-col-1-content"
3305                >
3306                    <span>Over Voetbalshirtskoning</span>
3307                    <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">
3308  <path stroke-linecap="round" stroke-linejoin="round" d="M19 9l-7 7-7-7"/>
3309</svg>
3310                </button>
3311                <div id="footer-col-1-content"
3312                     class="block-content hidden" :class="{hidden: !open}">
3313                                            <ul class="footer-links">
3314                                                            <li>
3315                                    <a href="/klantenservice/over-ons/"
3316                                        aria-label="Go&#x20;to&#x20;Over&#x20;ons">
3317                                        Over ons                                    </a>
3318                                </li>
3319                                                            <li>
3320                                    <a href="/klantenservice/veilig-winkelen/keurmerk/"
3321                                        aria-label="Go&#x20;to&#x20;Thuiswinkel&#x20;waarborg">
3322                                        Thuiswinkel waarborg                                    </a>
3323                                </li>
3324                                                            <li>
3325                                    <a href="/klantenservice/veilig-winkelen/cookies/"
3326                                        aria-label="Go&#x20;to&#x20;Cookies">
3327                                        Cookies                                    </a>
3328                                </li>
3329                                                            <li>
3330                                    <a href="/ontwerpen/voetbalshirt/"
3331                                        aria-label="Go&#x20;to&#x20;Voetbalshirt&#x20;ontwerpen">
3332                                        Voetbalshirt ontwerpen                                    </a>
3333                                </li>
3334                                                            <li>
3335                                    <a href="/blog/"
3336                                        aria-label="Go&#x20;to&#x20;Blog">
3337                                        Blog                                    </a>
3338                                </li>
3339                                                            <li>
3340                                    <a href="/reviews"
3341                                        aria-label="Go&#x20;to&#x20;Reviews">
3342                                        Reviews                                    </a>
3343                                </li>
3344                                                    </ul>
3345                                    </div>
3346            </div>
3347                                            <div class="footer-links-col" x-data="{open: false}" :class="{active: open}"
3348                 aria-labelledby="footer-col-2-toggle">
3349                <button
3350                    type="button"
3351                    id="footer-col-2-toggle"
3352                    class="block-title inline-flex w-full items-center justify-between gap-2"
3353                    @click="open = !open"
3354                    @keydown.enter.prevent="open = !open"
3355                    @keydown.space.prevent="open = !open"
3356                    :aria-expanded="open.toString()"
3357                    aria-controls="footer-col-2-content"
3358                >
3359                    <span>Klantenservice</span>
3360                    <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">
3361  <path stroke-linecap="round" stroke-linejoin="round" d="M19 9l-7 7-7-7"/>
3362</svg>
3363                </button>
3364                <div id="footer-col-2-content"
3365                     class="block-content hidden" :class="{hidden: !open}">
3366                                            <ul class="footer-links">
3367                                                            <li>
3368                                    <a href="/klantenservice/"
3369                                        aria-label="Go&#x20;to&#x20;Klantenservice">
3370                                        Klantenservice                                    </a>
3371                                </li>
3372                                                            <li>
3373                                    <a href="/klantenservice/bestellen/"
3374                                        aria-label="Go&#x20;to&#x20;Bestellen">
3375                                        Bestellen                                    </a>
3376                                </li>
3377                                                            <li>
3378                                    <a href="/klantenservice/betalen/"
3379                                        aria-label="Go&#x20;to&#x20;Betalen">
3380                                        Betalen                                    </a>
3381                                </li>
3382                                                            <li>
3383                                    <a href="/klantenservice/verzenden/"
3384                                        aria-label="Go&#x20;to&#x20;Verzending">
3385                                        Verzending                                    </a>
3386                                </li>
3387                                                            <li>
3388                                    <a href="/klantenservice/ruilen-en-retouren/"
3389                                        aria-label="Go&#x20;to&#x20;Ruilen&#x20;en&#x20;retourneren">
3390                                        Ruilen en retourneren                                    </a>
3391                                </li>
3392                                                            <li>
3393                                    <a href="/klantenservice/ruilen-en-retouren/bedenktijd/"
3394                                        aria-label="Go&#x20;to&#x20;30&#x20;dagen&#x20;bedenktijd">
3395                                        30 dagen bedenktijd                                    </a>
3396                                </li>
3397                                                            <li>
3398                                    <a href="/contact/"
3399                                        aria-label="Go&#x20;to&#x20;Contact">
3400                                        Contact                                    </a>
3401                                </li>
3402                                                    </ul>
3403                                    </div>
3404            </div>
3405                                            <div class="footer-links-col" x-data="{open: false}" :class="{active: open}"
3406                 aria-labelledby="footer-col-3-toggle">
3407                <button
3408                    type="button"
3409                    id="footer-col-3-toggle"
3410                    class="block-title inline-flex w-full items-center justify-between gap-2"
3411                    @click="open = !open"
3412                    @keydown.enter.prevent="open = !open"
3413                    @keydown.space.prevent="open = !open"
3414                    :aria-expanded="open.toString()"
3415                    aria-controls="footer-col-3-content"
3416                >
3417                    <span>Ons Assortiment</span>
3418                    <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">
3419  <path stroke-linecap="round" stroke-linejoin="round" d="M19 9l-7 7-7-7"/>
3420</svg>
3421                </button>
3422                <div id="footer-col-3-content"
3423                     class="block-content hidden" :class="{hidden: !open}">
3424                                            <ul class="footer-links">
3425                                                            <li>
3426                                    <a href="/voetbaltenues/"
3427                                        aria-label="Go&#x20;to&#x20;Voetbaltenues">
3428                                        Voetbaltenues                                    </a>
3429                                </li>
3430                                                            <li>
3431                                    <a href="/voetbalshirts/"
3432                                        aria-label="Go&#x20;to&#x20;Voetbalshirts">
3433                                        Voetbalshirts                                    </a>
3434                                </li>
3435                                                            <li>
3436                                    <a href="/trainingspakken/"
3437                                        aria-label="Go&#x20;to&#x20;Trainingspakken">
3438                                        Trainingspakken                                    </a>
3439                                </li>
3440                                                            <li>
3441                                    <a href="/fanshop/"
3442                                        aria-label="Go&#x20;to&#x20;Fanshop">
3443                                        Fanshop                                    </a>
3444                                </li>
3445                                                            <li>
3446                                    <a href="/voetbalsokken/"
3447                                        aria-label="Go&#x20;to&#x20;Voetbalsokken">
3448                                        Voetbalsokken                                    </a>
3449                                </li>
3450                                                            <li>
3451                                    <a href="/keeperskleding/"
3452                                        aria-label="Go&#x20;to&#x20;Keepers">
3453                                        Keepers                                    </a>
3454                                </li>
3455                                                    </ul>
3456                                    </div>
3457            </div>
3458                                        </div></div><div class="footer-bottom-wrapper md:flex md:flex-col md:py-10 gap-6 items-center"><ul class="footer-icons py-4 border-b border-footer-columns-border-color flex flex-wrap gap-x-6 gap-y-4
3459    md:border-b-0 md:p-0 justify-center">
3460                    <li class="footer-icon">
3461                <svg xmlns="http://www.w3.org/2000/svg" width="32" height="24" viewBox="0 0 33 24" fill="none" role="img">
3462<g clip-path="url(#clip0_296_12967)">
3463<path d="M28.4062 0H4.66419C2.38379 0 0.535156 1.86872 0.535156 4.17391V19.8261C0.535156 22.1313 2.38379 24 4.66419 24H28.4062C30.6866 24 32.5352 22.1313 32.5352 19.8261V4.17391C32.5352 1.86872 30.6866 0 28.4062 0V0Z" fill="#0095FF"/>
3464<path d="M16.5352 24C23.1626 24 28.5352 18.6274 28.5352 12C28.5352 5.37258 23.1626 0 16.5352 0C9.90774 0 4.53516 5.37258 4.53516 12C4.53516 18.6274 9.90774 24 16.5352 24Z" fill="#0095FF"/>
3465<path fill-rule="evenodd" clip-rule="evenodd" d="M0.535156 8.7966L1.73472 6H3.80922L4.48999 7.56654V6H7.06879L7.47405 7.13225L7.86694 6H19.4432V6.56923C19.4432 6.56923 20.0516 6 21.0518 6L24.8078 6.01313L25.4768 7.55917V6H27.635L28.2289 6.88807V6H30.4068V11.0239H28.2289L27.6597 10.133V11.0239H24.4889L24.1701 10.232H23.3177L23.004 11.0239H20.8537C19.9932 11.0239 19.4432 10.4664 19.4432 10.4664V11.0239H16.201L15.5575 10.232V11.0239H3.5019L3.18327 10.232H2.33358L2.0172 11.0239H0.535156V8.7966ZM2.15923 6.61934L0.541292 10.3811H1.59465L1.89318 9.62779H3.62868L3.92567 10.3811H5.00224L3.38583 6.61934H2.15923ZM2.75784 7.49482L3.28684 8.81114H2.22729L2.75784 7.49482ZM5.11371 6.6187V10.3805H6.05415V7.60863L7.05384 10.3805H7.8786L8.87547 7.60863V10.3805H9.81594V6.6187H8.33103
3465L7.48124 9.04961L6.6106 6.62426L5.11371 6.6187ZM10.4594 10.3805V6.6187H13.5282V7.46015H11.4098V8.10361H13.4788V8.89556H11.4098V9.56377H13.5282V10.3805H10.4594ZM14.0726 10.3811V6.61934H16.1654C16.8589 6.61934 17.4803 7.04814 17.4803 7.83976C17.4803 8.51648 16.9563 8.95234 16.4485 8.99521L17.686 10.3811H16.5368L15.4092 9.04469H15.0131V10.3811H14.0726ZM16.0882 7.46079H15.0131V8.25274H16.1021C16.2905 8.25274 16.5337 8.10669 16.5337 7.85677C16.5337 7.66252 16.346 7.46079 16.0882 7.46079ZM18.8243 10.3805H17.8642V6.6187H18.8243V10.3805ZM20.894 10.3805H21.1013L21.4972 9.55882H21.2498C20.6508 9.55882 20.235 9.25286 20.235 8.52434C20.235 7.91085 20.5986 7.50964 21.1128 7.50964H22.1901V6.6187H21.1507C19.8843 6.6187 19.2822 7.41316 19.2822 8.51506C19.2822 9.59037 19.8911 10.3805 20.894 10.3805ZM23.1477 6.61934L21.5297 10.3811H22.5831L22.8816 9.62779H24.6171L24.9141 10.3811H25.9906L24.3742 6.61934H23.1477ZM23.7463 7.49482L24.2753 8.81114H23.2157L23.7463 7.49482ZM26.1005 6.6187V10.3805H27.041V7.95512L28.6063 10.3805H29.7633V6.6187H28.8229V8.98219L27.2961 6.6187H26.1005Z" fill="white"/>
3466<path fill-rule="evenodd" clip-rule="evenodd" d="M6.74609 12.5831V17.607H12.0322L12.6109 16.847L13.1807 17.607H16.3733V16.4439H17.0911C17.7137 16.4439 18.0017 16.2552 18.0017 16.2552V17.607H20.1104V16.8151L20.7539 17.607H31.4452C32.0292 17.602 32.5342 17.2606 32.5342 17.2606V16.2434C32.3804 16.6662 32.0024 16.9636 31.3872 16.9636H29.3829V16.1469H31.2651C31.5435 16.
34661469 31.664 15.9964 31.664 15.8313C31.664 15.6732 31.5439 15.5133 31.2651 15.5133H30.4145C29.6752 15.5133 29.2634 15.0629 29.2634 14.3866C29.2634 13.7834 29.6405 13.2018 30.7391 13.2018H32.5342V12.5831H13.2259L12.6363 13.3271L12.0655 12.5831H6.74609ZM32.5342 13.2794L32.1745 14.0482H30.5906C30.2878 14.0482 30.1947 14.2071 30.1947 14.3588C30.1947 14.5147 30.3098 14.6867 30.5411 14.6867H31.432C32.0347 14.6867 32.3878 14.9367 32.5342 15.3104V13.2794ZM7.38948 13.2018V16.9636H10.4583V16.1469H8.33983V15.4787H10.4089V14.6867H8.33983V14.0433H10.4583V13.2018H7.38948ZM25.4957 16.9636H22.4268V13.2018H25.4957V14.0433H23.3772V14.6867H25.4363V15.4787H23.3772V16.1469H25.4957V16.9636ZM12.0717 15.1059L10.5774 16.9636H11.7453L12.6083 15.8051L13.4929 16.9636H14.6776L13.1807 15.0826L14.6903 13.2018H13.5519L12.6377 14.3789L11.7267 13.2018H10.5419L12.0717 15.1059ZM14.7893 13.2024V16.9642H15.7545V15.7762H16.7445C17.5821 15.7762 18.2171 15.3319 18.2171 14.4676C18.2171 13.7519 17.719 13.2024 16.8666 13.2024H14.7893ZM15.7545 14.0531H16.7971C17.0677 14.0531 17.2611 14.219 17.2611 14.4862C17.2611 14.7374 17.0686 14.9194 16.7941 14.9194H15.7545V14.0531ZM19.5659 16.9636H18.6254V13.2018H20.7182C21.4117 13.2018 22.0331 13.6306 22.0331 14.4222C22.0331 15.0989 21.5092 15.5348 21.0013 15.5777L22.2388 16.9636H21.0895L19.9619 15.6272H19.5659V16.9636ZM20.6409 14.0433H19.5659V14.8352H20.6548C20.8433 14.8352 21.0865 14.6891 21.0865 14.4392C21.0865 14.245 20.8988 14.0433 20.6409 14.0433ZM25.9311 16.9636V16.1469H27.8133C28.0918 16.1469 28.2124 15.9964 28.2124 15.8313C28.2124 15.6732 28.0922 15.5133 27.8133 15.5133H26.9628C26.2235 15.5133 25.8118 15.0629 25.8118 14.3866C25.8118 13.7834 26.1889 13.2018 27.2874 13.2018H29.1188L28.7229 14.0482H27.1389C26.8362 14.0482 26.7429 14.2071 26.7429 14.3588C26.7429 14.5147 26.8581 14.6867 27.0895 14.6867H27.9804C28.8046 14.6867 29.1621 15.1542 29.1621 15.7663C29.1621 16.4245 28.7636 16.9636 27.9355 16.9636H25.9311Z" fill="white"/>
3467</g>
3468<defs>
3469<clipPath id="clip0_296_12967">
3470<rect width="32" height="24" fill="white" transform="translate(0.535156)"/>
3471</clipPath>
3472</defs>
3473<title>amex</title></svg>
3474            </li>
3475                    <li class="footer-icon">
3476                <svg xmlns="http://www.w3.org/2000/svg" width="32" height="24" viewBox="0 0 33 24" fill="none" role="img">
3477<g clip-path="url(#clip0_296_12767)">
3478<path d="M4.66419 0.5H28.4062C30.4053 0.5 32.0352 2.13976 32.0352 4.17391V19.8261C32.0352 21.8602 30.4053 23.5 28.4062 23.5H4.66419C2.66502 23.5 1.03516 21.8602 1.03516 19.8261V4.17391C1.03516 2.13976 2.66502 0.5 4.66419 0.5Z" fill="white" stroke="#E6E6E6"/>
3479<path fill-rule="evenodd" clip-rule="evenodd" d="M9.20488 8.97799C9.45988 8.66099 9.63188 8.23499 9.58588 7.79999C9.21488 7.81799 8.76188 8.04499 8.49988 8.36199C8.26388 8.63399 8.05588 9.07799 8.10988 9.49499C8.52688 9.53099 8.94288 9.28599 9.20588 8.97799H9.20488ZM9.58088 9.57699C8.97588 9.53999 8.46088 9.91999 8.17188 9.91999C7.88288 9.91999 7.44088 9.59499 6.96188 9.60399C6.33888 9.61299 5.76088 9.96399 5.44488 10.525C4.79488 11.645 5.27288 13.308 5.90488 14.221C6.21288 14.673 6.58288 15.17 7.06988 15.152C7.52988 15.134 7.71188 14.854 8.27188 14.854C8.83188 14.854 8.99388 15.152 9.48188 15.144C9.98688 15.134 10.3039 14.691 10.6109 14.239C10.9629 13.724 11.1069 13.227 11.1159 13.2C11.1069 13.19 10.1409 12.82 10.1319 11.709C10.1219 10.779 10.8909 10.336 10.9269 10.309C10.4929 9.66699 9.81588 9.59499 9.58088 9.57699ZM14.1249 11.897H15.3319C16.2479 11.897 16.7689 11.404 16.7689 10.549C16.7689 9.69399 16.2479 9.20499 15.3359 9.20499H14.1249V11.897ZM15.6129 8.31699C16.9289 8.31699 17.8449 9.22399 17.8449 10.544C17.8449 11.869 16.9099 12.78 15.5809 12.78H14.1239V15.096H13.0719V8.31699H15.6129ZM21.2999 13.254V12.874L20.1299 12.949C19.4719 12.991 19.1299 13.235 19.1299 13.663C19.1299 14.076 19.4859 14.344 20.0449 14.344C20.7589 14.344 21.2999 13.888 21.2999 13.254ZM18.1049 13.691C18.1049 12.822 18.7679 12.324 19.9889 12.249L21.2989 12.169V11.793C21.2989 11.243 20.9379 10.943 20.2939 10.943C19.7639 10.943 19.3779 11.215 19.2979 11.633H18.3489C18.3779 10.755 19.2039 10.116 20.3229 10.116C21.5249 10.116 22.3099 10.746 22.3099 11.723V15.096H21.3369V14.283H21.3139C21.0369 14.813 20.4259 15.147 19.7639 15.147C18.7869 15.147 18.1049 14.565 18.1049 13.691ZM23.2049 16.91V16.097C23.2709 16.106 23.4309 16.115 23.5149 16.115C23.9799 16.115 24.2429 15.918 24.4029 15.411L24.4969 15.111L22.7169 10.178H23.8159L25.0559 14.18H25.0799L26.3199 10.178H27.3899L25.5449 15.359C25.1219 16.548 24.6379 16.938 23.6139 16.938C23.5339 16.938 23.2759 16.928 23.2049 16.909V16.91Z" fill="#111111"/>
3480</g>
3481<defs>
3482<clipPath id="clip0_296_12767">
3483<rect width="32" height="24" fill="white" transform="translate(0.535156)"/>
3484</clipPath>
3485</defs>
3486<title>apple-pay</title></svg>
3487            </li>
3488                    <li class="footer-icon">
3489                <svg xmlns="http://www.w3.org/2000/svg" width="32" height="24" viewBox="0 0 33 24" fill="none" role="img">
3490<g clip-path="url(#clip0_296_12770)">
3491<path d="M4.63116 0.5H28.4392C30.4214 0.5 32.0352 2.12098 32.0352 4.12903V19.871C32.0352 21.879 30.4214 23.5 28.4392 23.5H4.63116C2.64892 23.5 1.03516 21.879 1.03516 19.871V4.12903C1.03516 2.12098 2.64892 0.5 4.63116 0.5Z" fill="white" stroke="#E6E6E6"/>
3492<path fill-rule="evenodd" clip-rule="evenodd" d="M6.60938 13.3636C6.60938 12.8407 7.02845 12.4168 7.54399 12.4168H10.3903L8.97246 13.8461
3492H14.6438L17.4796 10.5111H23.6236L19.525 15.0559C19.1784 15.4402 18.4886 15.7518 17.9738 15.7518H7.53297C7.02288 15.7518 6.60938 15.3294 6.60938 14.805L6.60938 13.3636Z" fill="#00549D"/>
3493<path fill-rule="evenodd" clip-rule="evenodd" d="M26.4004 11.0577C26.4004 11.5781 25.977 11.9999 25.4774 11.9999H22.1469L23.5647 10.5706H17.4207L15.0576 13.9056H8.91359L13.0412 8.91255C13.3718 8.51265 14.0644 8.18847 14.5781 8.18847H25.4621C25.9803 8.18847 26.4004 8.61092 26.4004 9.13062V11.0577Z" fill="#FFD800"/>
3494</g>
3495<defs>
3496<clipPath id="clip0_296_12770">
3497<rect width="32" height="24" fill="white" transform="translate(0.535156)"/>
3498</clipPath>
3499</defs>
3500<title>bancontact</title></svg>
3501            </li>
3502                    <li class="footer-icon">
3503                <svg xmlns="http://www.w3.org/2000/svg" width="32" height="24" viewBox="0 0 33 24" fill="none" role="img">
3504<g clip-path="url(#clip0_296_12790)">
3505<path d="M28.5352 0H4.53516C2.32602 0 0.535156 1.79086 0.535156 4V20C0.535156 22.2091 2.32602 24 4.53516 24H28.5352C30.7443 24 32.5352 22.2091 32.5352 20V4C32.5352 1.79086 30.7443 0 28.5352 0Z" fill="#D50043"/>
3506<path fill-rule="evenodd" clip-rule="evenodd" d="M11.2852 8.53118C11.2852 7.54746 12.0744 6.75 13.0663 6.75H20.004C20.9877 6.75 21.7852 7.53921 21.7852 8.53118V17.25H13.0663C12.0826 17.25 11.2852 16.4608 11.2852 15.4688V8.53118ZM13.5352 10.4123V10.5877C13.5352 10.9608 13.8329 11.25 14.2002 11.25H18.8701C19.2458 11.25 19.5352 10.9535 19.5352 10.5877V10.4123C19.5352 10.0392 19.2374 9.75 18.8701 9.75H14.2002C13.8245 9.75 13.5352 10.0465 13.5352 10.4123ZM13.5352 13.4123V13.5877C13.5352 13.9608 13.8329 14.25 14.2002 14.25H18.8701C19.2458 14.25 19.5352 13.9535 19.5352 13.5877V13.4123C19.5352 13.0392 19.2374 12.75 18.8701 12.75H14.2002C13.8245 12.75 13.5352 13.0465 13.5352 13.4123Z" fill="white"/>
3507</g>
3508<defs>
3509<clipPath id="clip0_296_12790">
3510<rect width="32" height="24" fill="white" transform="translate(0.535156)"/>
3511</clipPath>
3512</defs>
3513<title>belfius</title></svg>
3514            </li>
3515                    <li class="footer-icon">
3516                <svg xmlns="http://www.w3.org/2000/svg" width="32" height="24" viewBox="0 0 33 24" fill="none" role="img">
3517<mask id="mask0_296_12793" style="mask-type:alpha" maskUnits="userSpaceOnUse" x="0" y="0" width="33" height="24">
3518<path d="M28.5352 0H4.53516C2.32602 0 0.535156 1.79086 0.535156 4V20C0.535156 22.2091 2.32602 24 4.53516 24H28.5352C30.7443 24 32.5352 22.2091 32.5352 20V4C32.5352 1.79086 30.7443 0 28.5352 0Z" fill="white"/>
3519</mask>
3520<g mask="url(#mask0_296_12793)">
3521<path d="M28.5352 0H4.53516C2.32602 0 0.535156 1.79086 0.535156 4V20C0.535156 22.2091 2.32602 24 4.53516 24H28.5352C30.7443 24 32.5352 22.2091 32.5352 20V4C32.5352 1.79086 30.7443 0 28.5352 0Z" fill="url(#paint0_linear_296_12793)"/>
3522<path opacity="0.1" d="M38.0352 69C55.4322 69 69.5352 54.897 69.5352 37.5C69.5352 20.103 55.4322 6 38.0352 6C20.6382 6 6.53516 20.103 6.53516 37.5C6.53516 54.897 20.6382 69 38.0352 69Z" fill="url(#paint1_linear_296_12793)"/>
3523<path opacity="0.1" d="M7.03516 45C16.1479 45 23.5352 37.6127 23.5352 28.5C23.5352 19.3873 16.1479 12 7.03516 12C-2.07754 12 -9.46484 19.3873 -9.46484 28.5C-9.46484 37.6127 -2.07754 45 7.03516 45Z" fill="url(#paint2_linear_296_12793)"/>
3524<path opacity="0.1" d="M43.0352 22C57.6707 22 69.5352 10.1355 69.5352 -4.5C69.5352 -19.1355 57.6707 -31 43.0352 -31C28.3997 -31 16.5352 -19.1355 16.5352 -4.5C16.5352 10.1355 28.3997 22 43.0352 22Z" fill="url(#paint3_linear_296_12793)"/>
3525<path d="M10.5352 7H5.53516C4.98287 7 4.53516 7.44771 4.53516 8V11C4.53516 11.5523 4.98287 12 5.53516 12H10.5352C11.0874 12 11.5352 11.5523 11.5352 11V8C11.5352 7.44771 11.0874 7 10.5352 7Z" fill="black"/>
3526<path d="M10.5352 7H5.53516C4.98287 7 4.53516 7.44771 4.53516 8V11C4.53516 11.5523 4.98287 12 5.53516 12H10.5352C11.0874 12 11.5352 11.5523 11.5352 11V8C11.5352 7.44771 11.0874 7 10.5352 7Z" fill="url(#paint4_linear_296_12793)"/>
3527<path opacity="0.3" d="M6.53516 8H5.53516V11H6.53516V8Z" fill="#7A3802"/>
3528<path opacity="0.3" d="M8.53516 8H7.53516V11H8.53516V8Z" fill="#7A3802"/>
3529<path opacity="0.3" d="M10.5352 8H9.53516V11H10.5352V8Z" fill="#7A3802"/>
3530<path d="M9.53516 15H4.53516V16H9.53516V15Z" fill="white" fill-opacity="0.8"/>
3531<path d="M7.53516 17H4.53516V18H7.53516V17Z" fill="white" fill-opacity="0.8"/>
3532<path d="M11.5352 17H8.53516V18H11.5352V17Z" fill="white" fill-opacity="0.8"/>
3533<path d="M15.5352 17H12.5352V18H15.5352V17Z" fill="white" fill-opacity="0.8"/>
3534<path d="M15.5352 15H10.5352V16H15.5352V15Z" fill="white" fill-opacity="0.8"/>
3535<path d="M21.5352 15H16.5352V16H21.5352V15Z" fill="white" fill-opacity="0.8"/>
3536<path d="M27.5352 15H22.5352V16H27.5352V15Z" fill="white" fill-opacity="0.8"/>
3537</g>
3538<defs>
3539<linearGradient id="paint0_linear_296_12793" x1="-15.4648" y1="12" x2="7.57514" y2="-18.72" gradientUnits="userSpaceOnUse">
3540<stop stop-color="#060B0E"/>
3541<stop offset="1" stop-color="#254764"/>
3542</linearGradient>
3543<linearGradient id="paint1_linear_296_12793" x1="19.5909" y1="23.6392" x2="16.4121" y2="14.9302" gradientUnits="userSpaceOnUse">
3544<stop stop-color="white" stop-opacity="0"/>
3545<stop offset="1" stop-color="white"/>
3546</linearGradient>
3547<linearGradient id="paint2_linear_296_12793" x1="-0.302775" y1="46.8244" x2="-3.95155" y2="32.1485" gradientUnits="userSpaceOnUse">
3548<stop stop-color="white" stop-opacity="0"/>
3549<stop offset="1" stop-color="white"/>
3550</linearGradient>
3551<linearGradient id="paint3_linear_296_12793" x1="48.96" y1="-4.5005" x2="54.8203" y2="19.0698" gradientUnits="userSpaceOnUse">
3552<stop stop-color="white" stop-opacity="0"/>
3553<stop offset="1" stop-color="white"/>
3554</linearGradient>
3555<linearGradient id="paint4_linear_296_12793" x1="11.5352" y1="7" x2="11.5352" y2="12" gradientUnits="userSpaceOnUse">
3556<stop stop-color="#FAD961"/>
3557<stop offset="1" stop-color="#F7955D"/>
3558</linearGradient>
3559</defs>
3560<title>credit_card</title></svg>
3561            </li>
3562                    <li class="footer-icon">
3563                <svg xmlns="http://www.w3.org/2000/svg" width="32" height="24" viewBox="0 0 33 24" fill="none" role="img">
3564<g clip-path="url(#clip0_296_12997)">
3565<path d="M28.5352 0H4.53516C2.32602 0 0.535156 1.79086 0.535156 4V20C0.535156 22.2091 2.32602 24 4.53516 24H28.5352C30.7443 24 32.5352 22.2091 32.5352 20V4C32.5352 1.79086 30.7443 0 28.5352 0Z" fill="#FECC00"/>
3566<g clip-path="url(#clip1_296_12997)">
3567<path d="M32.5352 8V15.0621H0.535156V8H32.5352Z" fill="#FECC00"/>
3568<path d="M10.8527 10.9508C10.7128 11.1401 10.4788 11.4693 10.3365 11.6616C10.2642 11.7594 10.1336 11.9369 10.5664 11.9369C11.0244 11.9369 12.8451 11.9369 12.8451 11.9369C12.8451 11.9369 13.2124 11.4373 13.5203 11.0194C13.9391 10.451 13.5565 9.26819 12.0593 9.26819C10.7192 9.26819 6.16285 9.26819 6.16285 9.26819L5.14048 10.6573C5.14048 10.6573 10.4406 10.6573 10.7126 10.6573C10.9939 10.6573 10.9901 10.7643 10.8527 10.9508ZM9.17862 12.2796C8.74582 12.2796 8.87637 12.1017 8.94866 12.0039C9.09104 11.8116 9.32884 11.4859 9.46867 11.2965C9.60633 11.1101 9.60997 11.003 9.32829 11.003C9.05645 11.003 6.77992 11.003 6.77992 11.003L4.72661 13.7936C4.72661 13.7936 8.39386 13.7936 9.73396 13.7936C11.3878 13.7936 12.3086 12.6687 12.5924 12.2798C12.5924 12.2796 9.63637 12.2796 9.17862 12.2796ZM12.436 13.7936H15.3735L16.4871 12.2794L13.55 12.2798C13.5491 12.2796 12.436 13.7936 12.436 13.7936ZM20.015 9.26819L18.8883 10.7986H17.5774L18.7035 9.26819H15.767L13.8023 11.9369H20.9872L22.9513 9.26819H20.015ZM16.6845 13.7936H19.6208L20.735 12.2798H17.7986C17.7975 12.2796 16.6845 13.7936 16.6845 13.7936ZM0.535156 12.8768V13.1984H4.6261L4.86244 12.8768H0.535156ZM5.30216 12.2796H0.535156V12.6008H5.06528L5.30216 12.2796ZM0.535156 13.7936H4.18784L4.42309 13.4738H0.535156V13.7936ZM28.2243 13.1982H32.5352V12.8766H28.461L28.2243 13.1982ZM27.7864 13.7936H32.5352V13.4738H28.0214L27.7864 13.7936ZM28.9 12.2796L28.6638 12.6011H32.5352V12.2796H28.9ZM25.0537 11.9369L27.0182 9.26819H23.9081C23.907 9.26819 21.9422 11.9369 21.9422 11.9369H25.0537ZM21.6904 12.2796C21.6904 12.2796 21.4757 12.5729 21.3714 12.7142C21.0026 13.2124 21.3287 13.7936 22.5323 13.7936C23.9226 13.7936 27.2483 13.7936 27.2483 13.7936L28.3625 12.2798H21.6904V12.2796Z" fill="#D50029"/>
3569</g>
3570</g>
3571<defs>
3572<clipPath id="clip0_296_12997">
3573<rect width="32" height="24" fill="white" transform="translate(0.535156)"/>
3574</clipPath>
3575<clipPath id="clip1_296_12997">
3576<rect width="32" height="7.06211" fill="white" transform="translate(0.535156 8)"/>
3577</clipPath>
3578</defs>
3579<title>dhl</title></svg>
3580            </li>
3581                    <li class="footer-icon">
3582                <?xml version="1.0" encoding="UTF-8"?>
3583<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 480 320" width="32" height="24" role="img">
3584  <defs>
3585    <linearGradient id="linear-gradient" x1="352.72" y1="95.3" x2="330.2" y2="67.73" gradientTransform="translate(0 184) scale(1 -1)" gradientUnits="userSpaceOnUse">
3586      <stop offset=".02" stop-color="#1d1c1c" stop-opacity="0"/>
3587      <stop offset=".68" stop-color="#1d1c1c"/>
3588    </linearGradient>
3589    <linearGradient id="linear-gradient-2" x1="313.44" y1="89.45" x2="336.52" y2="112.26" gradientTransform="translate(0 184) scale(1 -1)" gradientUnits="userSpaceOnUse">
3590      <stop offset=".02" stop-color="#1d1c1c" stop-opacity="0"/>
3591      <stop offset=".68" stop-color="#1d1c1c"/>
3592    </linearGradient>
3593  </defs>
3594
3595  <rect fill="#fff48d" stroke-width="0" x="0" width="480" height="320" rx="60" ry="60"/>
3596
3597  <g transform="translate(0 69)">
3598    <path fill="#fff" stroke-width="0" d="M11.02,22.87v136.4c0,6.53,5.37,11.87,11.93,11.87h81.89c61.91,0,88.74-34.49,88.74-80.25S166.74,11,104.83,11H22.94c-6.56,0-11.93,5.34-11.93,11.87Z"/>
3599    <path fill="#c06" stroke-width="0" d="M65.83,44.48v100.79h44.07c40.02,0,57.37-22.5,57.37-54.31s-17.36-54.07-57.37-54.07h-36.44c-4.23,0-7.63,3.44-7.63,7.6Z"/>
3600    <path fill="#232323" fill-rule="evenodd" stroke-width="0" d="M33.62,160.28h71.21c50.04,0,77.65-24.63,77.65-69.33,0-25.76-10.08-69.03-77.65-69.03H33.62c-6.32,0-11.45,5.1-11.45,11.4v115.57c0,6.29,5.13,11.4,11.45,11.4ZM25.98,33.32c0-4.21,3.4-7.6,7.63-7.6h71.21c27.55,0,73.83,8.49,73.83,65.23,0,42.26-26.24,65.53-73.83,65.53H33.62c-4.23,0-7.63-3.38-7.63
3600-7.6V33.32Z"/>
3601    <path fill="#fff" fill-rule="evenodd" stroke-width="0" d="M87.51,76.3c-1.34-.48-2.74-.72-4.26-.72v-.06h-10.09v24.34h10.21c1.81,0,3.38-.36,4.73-.96,1.34-.66,2.45-1.5,3.33-2.58.88-1.08,1.52-2.4,1.98-3.9.41-1.5.64-3.12.64-4.92,0-2.04-.29-3.78-.82-5.28-.58-1.44-1.34-2.7-2.27-3.72-.99-.96-2.1-1.74-3.44-2.22ZM85.12,95.07c-.76.24-1.46.36-2.22.36v.06h-4.61v-15.35h3.73c1.28,0,2.33.18,3.21.54.88.36,1.58.96,2.1,1.62.52.66.93,1.56,1.17,2.52.23.96.35,2.1.35,3.3,0,1.38-.18,2.46-.52,3.42-.35.96-.82,1.68-1.34,2.28-.52.6-1.17,1.02-1.87,1.26Z"/>
3602    <path fill="#fff" stroke-width="0" d="M115.11,75.59v4.5h-12.49v5.22h11.49v4.14h-11.49v5.94h12.78v4.5h-17.97v-24.34h17.68v.06Z"/>
3603    <path fill="#fff" fill-rule="evenodd" stroke-width="0" d="M141.83,99.93l-8.87-24.34h-5.42l-8.93,24.34h5.25l1.87-5.4h8.87l1.81,5.4h5.43ZM130.27,81.58l2.98,8.93h-6.12l3.09-8.93h.06Z"/>
3604    <path fill="#fff" stroke-width="0" d="M150.29,75.58v19.85h11.55v4.5h-16.74v-24.34h5.19Z"/>
3605    <path fill="#232323" stroke-width="0" d="M45.35,100.29c6.32,0,11.44-5.12,11.44-11.45s-5.12-11.45-11.44-11.45-11.44,5.12-11.44,11.45,5.12,11.45,11.44,11.45Z"/>
3606    <path fill="#232323" stroke-width="0" d="M52.16,146.08c-8.86,0-15.96-7.65-15.96-17.05v-13.31c0-4.7,3.55-8.56,8.01-8.56s8.01,3.8,8.01,8.56v30.36h-.06Z"/>
3607  </g>
3608
3609  <g transform="translate(0 69)">
3610    <path fill="#1d1c1c" stroke-width="0" d="M405.6,91.62c0-13.38,9.52-25.57,25.96-25.57s26.03,12.2,26.03,25.57-9.52,25.57-26.03,25.57c-16.44,0-25.96-12.2-25.96-25.57ZM443.14,91.62c0-6.45-4.25-12.4-11.58-12.4s-11.58,5.96-11.58,12.4,4.32,12.41,11.58,12.41,11.58-5.96,11.58-12.41Z"/>
3611    <path fill="#1d1c1c" stroke-width="0" d="M395.49,101.12c5.48-3.12,8.77-9.08,8.77-15.66,0-9.77-7.06-18.09-18.02-18.09h-23.01v48.51h14.25v-12.4h2.67l8.15,12.4h16.78l-9.59-14.76ZM383.37,92.31h-5.89v-13.72h5.96c3.84,0,6.3,3.12,6.3,6.86s-2.54,6.86-6.37,6.86Z"/>
3612    <path fill="#1d1c1c" stroke-width="0" d="M298.18,67.31l-8.55,28.91-8.34-28.91h-11.35l-8.41,28.91-8.48-28.91h-15.04l17.23,48.42h12.37l8-26.36,7.93,26.36h12.44l17.23-48.42h-15.04Z"/>
3613    <path fill="#1d1c1c" stroke-width="0" d="M334.78,103.91h-.03c-5.33,0-9.07-3.22-10.67-7.48h36.21c.29-1.6.44-3.24.44-4.9,0-13.34-9.49-25.51-25.95-25.52v13.14c5.36.01,9.06,3.23,10.65,7.48h-36.16c-.29,1.6-.44,3.24-.44,4.9,0,13.35,9.5,25.53,25.91,25.53h.03v-13.15Z"/>
3614    <path fill="url(#linear-gradient)" stroke-width="0" d="M334.75,117.05c.56,0,1.11-.02,1.65-.04,3.33-.17,6.36-.85,9.06-1.94,2.7-1.09,5.07-2.6,7.08-4.42,2.02-1.82,3.68-3.95,4.97-6.3,1.17-2.14,2.03-4.45,2.57-6.86h-15.09c-.31.64-.67,1.26-1.08,1.83-.56.79-1.22,1.5-1.97,2.11-.75.62-1.59,1.14-2.51,1.54-.92.4-1.93.68-3.02.83-.53.07-1.08.11-1.65.11-3.39,0-6.14-1.31-8.11-3.36l-9.81,9.92c4.36,4.03,10.41,6.57,17.91,6.57Z"/>
3615    <path fill="url(#linear-gradient-2)" stroke-width="0" d="M334.75,66c-13.92,0-22.87,8.76-25.26,19.56h15.04c1.8-3.72,5.34-6.42,10.22-6.42,3.89,0,6.91,1.68,8.88,4.22l9.9-10.01c-4.42-4.48-10.78-7.35-18.77-7.35Z"/>
3616  </g>
3617
3618  <path transform="translate(0 69)" fill="#1d1c1c" stroke-width="0" d="M215.61,145c-1.1,0-2-.9-2-2V39c0-1.1.9-2,2-2s2,.9,2,2v104c0,1.1-.9,2-2,2Z"/>
3619<title>ideal</title></svg>
3620            </li>
3621                    <li class="footer-icon">
3622                <svg xmlns="http://www.w3.org/2000/svg" width="32" height="24" viewBox="0 0 33 24" fill="none" role="img">
3623<g clip-path="url(#clip0_296_12858)">
3624<path d="M4.66419 0.499878H28.4062C30.4053 0.499878 32.0352 2.13964 32.0352 4.17379V19.826C32.0352 21.8601 30.4053 23.4999 28.4062 23.4999H4.66419C2.66502 23.4999 1.03516 21.8601 1.03516 19.826V4.17379C1.03516 2.13964 2.66502 0.499878 4.66419 0.499878Z" fill="white" stroke="#E6E6E6"/>
3625<path fill-rule="evenodd" clip-rule="evenodd" d="M16.6187 10.8766C18.2398 10.8766 19.5539 9.56346 19.5539 7.94369C19.5539 6.32404 18.2398 5.01086 16.6187 5.01086C14.9977 5.01086 13.6836 6.32404 13.6836 7.94369C13.6836 9.56346 14.9977 10.8766 16.6187 10.8766Z" fill="#019ACC"/>
3626<path fill-rule="evenodd" clip-rule="evenodd" d="M15.9719 11.5282C14.9902 11.5282 14.1449 11.147 13.6073 10.7233C10.4027 11.0593 8.01953 11.5356 8.01953 11.5356V12.7826H25.0518C25.0518 11.0322 25.0518 10.157 25.0518 10.157C25.0518 10.157 22.1068 10.139 18.7824 10.3167C18.2233 10.9224 17.2371 11.5282 15.9719 11.5282Z" fill="#019ACC"/>
3627<path fill-rule="evenodd" clip-rule="evenodd" d="M10.0391 18.2608H8.01953V13.5652H10.0391V15.6783L11.2393 13.5652H13.6607L11.8876 15.9918L13.5606 18.2608H11.2498L10.053 16.496L10.0391 18.2608Z" fill="#003466"/>
3628<path fill-rule="evenodd" clip-rule="evenodd" d="M25.0187 18.0115C24.5421 18.1682 23.9158 18.2608 23.3553 18.2608C21.3574 18.2608 19.8906 17.6493 19.8906 15.8708C19.8906 14.2635 21.3123 13.5652 23.2558 13.5652C23.796 13.5652 24.482 13.6294 25.0187 13.8139L25.018 15.3707C24.6203 15.1113 24.2225 14.9496 23.6529 14.9496C22.9117 14.9496 22.1708 15.3427 22.1708 15.9133C22.1708 16.4853 22.9084 16.8771 23.6529 16.8771C24.2134 16.8771 24.6203 16.71 25.018 16.4625L25.0187 18.0115Z" fill="#003466"/>
3629<path fill-rule="evenodd" clip-rule="evenodd" d="M16.0097 15.5552H17.0155C17.4042 15.5552 17.5565 15.3794 17.5565 15.1098C17.5565 14.8008 17.4029 14.6465 17.0436 14.6465H16.0096L16.0097 15.5552ZM16.0097 17.3062H17.0626C17.4573 17.3062 17.5917 17.1237 17.5917 16.8543C17.5917 16.5846 17.4559 16.3909 17.0671 16.3909H16.0096L16.0097 17.3062ZM13.9902 13.5652H18.0725C19.133 13.5652 19.4805 14.0256 19.4805 14.7423C19.4805 15.5446 18.8383 15.8933 18.1786 15.9326V15.9458C18.8559 16.0051 19.5158 16.0904 19.5158 17.0374C19.5158 17.6558 19.1682 18.2608 18.0018 18.2608H13.9902V13.5652Z" fill="#003466"/>
3630</g>
3631<defs>
3632<clipPath id="clip0_296_12858">
3633<rect width="32" height="24" fill="white" transform="translate(0.535156)"/>
3634</clipPath>
3635</defs>
3636<title>kbc</title></svg>
3637            </li>
3638                    <li class="footer-icon">
3639                <svg xmlns="http://www.w3.org/2000/svg" width="32" height="24" viewBox="0 0 33 24" fill="none" role="img">
3640<g clip-path="url(#clip0_296_12866)">
3641<path d="M28.5352 0H4.53516C2.32602 0 0.535156 1.79086 0.535156 4V20C0.535156 22.2091 2.32602 24 4.53516 24H28.5352C30.7443 24 32.5352 22.2091 32.5352 20V4C32.5352 1.79086 30.7443 0 28.5352 0Z" fill="#F4B6C7"/>
3642<path fill-rule="evenodd" clip-rule="evenodd" d="M12.7852 17.25H10.5352V6.75H12.7852V17.25ZM13.2019 12.0222C15.1983 11.039 16.4886 9.05237 16.5351 6.75088H18.8984C18.8663 8.93615 17.9644 10.9634 16.3767 12.4672L19.5351 17.25H16.5351L13.2019 12.0222Z" fill="black"/>
3643<path fill-rule="evenodd" clip-rule="evenodd" d="M19.5352 15.7501C19.5352 16.5784 20.2068 17.25 21.0353 17.25C21.8636 17.25 22.5352 16.5784 22.5352 15.7501C22.5352 14.9216 21.8636 14.25 21.0353 14.25C20.2068 14.25 19.5352 14.9216 19.5352 15.7501Z" fill="black"/>
3644</g>
3645<defs>
3646<clipPath id="clip0_296_12866">
3647<rect width="32" height="24" fill="white" transform="translate(0.535156)"/>
3648</clipPath>
3649</defs>
3650<title>klarna</title></svg>
3651            </li>
3652                    <li class="footer-icon">
3653                <svg xmlns="http://www.w3.org/2000/svg" width="32" height="24" viewBox="0 0 33 24" fill="none" role="img">
3654<g clip-path="url(#clip0_296_12880)">
3655<path d="M28.4392 0H4.63116C2.369 0 0.535156 1.84863 0.535156 4.12903V19.871C0.535156 22.1514 2.369 24 4.63116 24H28.4392C30.7014 24 32.5352 22.1514 32.5352 19.871V4.12903C32.5352 1.84863 30.7014 0 28.4392 0V0Z" fill="#0071C0"/>
3656<path d="M20.7768 8.87006C20.7661 8.94158 20.7538 9.01471 20.74 9.08983C20.265 11.6276 18.6399 12.5043 16.5644 12.5043H15.5076C15.2538 12.5043 15.0399 12.6961 15.0003 12.9566L14.4593 16.5273L14.3061 17.5394C14.2803 17.7104 14.4071 17.8647 14.5729 17.8647H16.4472C16.6692 17.8647 16.8577 17.6969 16.8927 17.4691L16.9111 17.37L17.264 15.0396L17.2867 14.9118C17.3212 14.6832 17.5102 14.5154 17.7321 14.5154H18.0124C19.8284 14.5154 21.2499 13.7482 21.6654 11.5281C21.839 10.6007 21.7491 9.82626 21.2899 9.28163C21.1509 9.1174 20.9784 8.98114 20.7768 8.87006V8.87006Z" fill="#99C6E5"/>
3657<path d="M20.2816 8.66387C20.209 8.64189 20.1341 8.62191 20.0573 8.60393C19.9801 8.58635 19.901 8.57076 19.8196 8.55718C19.5347 8.50923 19.2225 8.48645 18.888 8.48645H16.0649C15.9954 8.48645 15.9293 8.50283 15.8702 8.5324C15.74 8.59753 15.6432 8.7258 15.6198 8.88284L15.0192 12.8411L15.002 12.9566C15.0415 12.6961 15.2554 12.5043 15.5092 12.5043H16.566C18.6415 12.5043 20.2666 11.6272 20.7416 9.08982C20.7558 9.0147 20.7677 8.94158 20.7785 8.87005C20.6583 8.80372 20.5281 8.74698 20.3879 8.69863C20.3534 8.68664 20.3177 8.67505 20.2816 8.66387Z" fill="#CCE2F2"/>
3658<path d="M15.6195 8.88286C15.6429 8.72582 15.7397 8.59755 15.8699 8.53282C15.9294 8.50325 15.9951 8.48687 16.0646 8.48
3658687H18.8877C19.2222 8.48687 19.5344 8.50964 19.8193 8.55759C19.9007 8.57118 19.9798 8.58676 20.057 8.60435C20.1338 8.62233 20.2087 8.64231 20.2813 8.66428C20.3174 8.67547 20.3531 8.68706 20.388 8.69865C20.5282 8.747 20.6584 8.80414 20.7785 8.87007C20.9199 7.93225 20.7774 7.29371 20.2901 6.71551C19.7529 6.07897 18.7833 5.80646 17.5426 5.80646H13.9407C13.6872 5.80646 13.471 5.99826 13.4319 6.25919L11.9316 16.1549C11.902 16.3507 12.0472 16.5273 12.2369 16.5273H14.4606L15.0189 12.8411L15.6195 8.88286Z" fill="white"/>
3659</g>
3660<defs>
3661<clipPath id="clip0_296_12880">
3662<rect width="32" height="24" fill="white" transform="translate(0.535156)"/>
3663</clipPath>
3664</defs>
3665<title>paypal</title></svg>
3666            </li>
3667            </ul><div class="footer-bottom pt-4 pb-6 text-xs md:p-0">
3668    <ul class="footer-bottom-links flex flex-wrap gap-x-2 gap-y-6 md:gap-x-8 justify-center">
3669        <li>
3670            <a href="/algemene-voorwaarden">
3671                Algemene voorwaarden            </a>
3672        </li>
3673        <li>
3674            <a href="/klantenservice/veilig-winkelen/cookies/">
3675                Privacy policy            </a>
3676        </li>
3677        <li class="copyright w-full md:w-auto text-center md:order-first">
3678            © 2012-2026 Kingdo B.V. Alle prijzen zijn inclusief 21% btw        </li>
3679    </ul>
3680</div></div></div></footer>
3680<script data-ommit="true" nonce="NXM3aDNrNzgxOXZ1cmU2YmNoZjNkZjRndG9wcDhlb2M=">
3681
3682    document.addEventListener("DOMContentLoaded", () => 
3683    {
3684    	let bind = () => 
3685    	{
3686    		Object.entries(
3687	    	{
3688	    		add_to_cart: event => 
3689	    		{
3690	    			AEC.add(event.currentTarget, dataLayer, event);
3691	    		},
3692	    		remove_from_cart:event => 
3693	    		{
3694	    			AEC.remove(event.currentTarget, dataLayer, event);
3695	    		},
3696	    		select_item:event => 
3697	    		{	
3698	    			AEC.click(event.currentTarget, dataLayer, event);	
3699	    		},
3700	    		add_to_wishlist:event => 
3701	    		{
3702	    			AEC.wishlist(event.currentTarget, dataLayer, event);
3703	    		},
3704	    		remove_from_wishlist:event => 
3705	    		{
3706	    			AEC.wishlistRemove(event.currentTarget, dataLayer, event);
3707	    		},
3708	    		add_to_compare:event => 
3709	    		{
3710	    			AEC.compare(event.currentTarget, dataLayer, event);
3711	    		},
3712	    		add_to_cart_swatch:event => 
3713	    		{
3714	    			AEC.addSwatch(event.currentTarget, dataLayer, event);
3715	    		}
3716	        }).forEach(([event, callback]) => 
3717	    	{
3718	    	    [...document.querySelectorAll('[data-event]:not([data-bound])')].filter(element => { return element.dataset.event === event; }
3718).forEach(element => 
3719	        	{
3720	            	element.addEventListener('click', callback);
3721
3722	            	element.dataset.bound = true;
3723	        	});
3724		  	});
3725        };
3726
3727        bind();
3728
3729        if("PerformanceObserver" in window)
3730        {
3731        	const observer = new PerformanceObserver((items) => 
3732        	{
3733                items.getEntries().filter(({ initiatorType }) => initiatorType === "xmlhttprequest").forEach((entry) => 
3734                {
3735                    bind();
3736                });
3737      		});
3738
3739      		observer.observe(
3740      		{
3741          		entryTypes: ["resource"]
3742      		});
3743        }
3744    });</script>
3744<script data-ommit="true" nonce="NXM3aDNrNzgxOXZ1cmU2YmNoZjNkZjRndG9wcDhlb2M=">
3745
3746    document.addEventListener("DOMContentLoaded", () => 
3747    {
3748    	var PromotionTrack = ((dataLayer) => 
3749	    {
3750	        return {
3751	            apply: () => 
3752	            {
3753	                var promotions = [], position = 0;
3754	
3755	                document.querySelectorAll('[data-promotion]').forEach(promotion => 
3756	                {
3757						let entity =
3758						{
3759							promotion_id: 	promotion.dataset.promotionId,
3760							promotion_name: promotion.dataset.promotionName,
3761							creative_name:	promotion.dataset.promotionCreative,
3762							creative_slot:	promotion.dataset.promotionPosition
3763                        };
3764
3765	                	AEC.EventDispatcher.trigger('ec.cookie.promotion.entity', entity, 
3766	    	            {
3767		    	            element: promotion
3768		    	        });
3769
3770	                    promotions.push(entity);
3771
3772	                    promotion.addEventListener('click', (event) => 
3773	                    {
3774	                    	var data = 
3775	                        {
3776                       			'event': 'select_promotion',
3777                                'ecommerce': 
3778                                {
3779                                    'items':
3780                                    [
3781                                    	{
3782                                    		promotion_id: 	event.target.dataset.promotionId,
3783                							promotion_name: event.target.dataset.promotionName,
3784                							creative_name:	event.target.dataset.promotionCreative,
3785                							creative_slot:	event.target.dataset.promotionPosition
3786                                    	}
3787                                    ]
3788                                }
3789			                };
3790			                
3791                            AEC.Cookie.promotionClick(data, promotion).push(dataLayer);
3792
3793                            /**
3794                             * Save persistent data
3795                             */
3796                            AEC.Persist.push(AEC.Persist.CONST_KEY_PROMOTION,
3797	                        {
3798    	                        'promotion': data.ecommerce.items[0]
3799    	                    });
3800		                });
3801	                });
3802	
3803	                if (promotions.length)
3804	                {
3805		                AEC.Cookie.promotion(
3806				        {
3807	                        'event':'view_promotion',
3808                            'ecommerce':
3809                            {
3810                                'items': promotions
3811                            }
3812                        }).push(dataLayer);
3813	                }
3814	
3815	                return this;
3816	            }
3817	        }
3818	    })(dataLayer).apply();
3819    });</script>
3819<script data-ommit="true" nonce="NXM3aDNrNzgxOXZ1cmU2YmNoZjNkZjRndG9wcDhlb2M=">
3820
3821    document.addEventListener("DOMContentLoaded", () => 
3822    {
3823    	(() => 
3824    	{
3825    		let map = {}, trace = {};
3826    
3827    		document.querySelectorAll('[data-widget]').forEach((element) => 
3828            {
3829                let widget = element.dataset.widget;
3830
3831                let entity = 
3832    			{
3833    					
3834    				item_id: 		element.dataset.id,
3835    				item_name: 		element.dataset.name,
3836    				item_list_name: element.dataset.list,
3837    				item_list_id:	element.dataset.list,
3838    				item_brand: 	element.dataset.brand,
3839    				category:		element.dataset.category,
3840    				price: 			parseFloat(element.dataset.price),
3841    				index: 			parseFloat(element.dataset.position),
3842    				currency:		AEC.GA4.currency,
3843    				quantity: 		1,
3844    				google_business_vertical: 'retail'
3845    			};
3846
3847                Object.assign(entity, entity, AEC.GA4.augmentCategories(entity));
3848
3849            	let attributes = element.dataset.attributes;
3850                
3851            	if (attributes)
3852    	        {
3853        	        Object.entries(JSON.parse(attributes)).forEach(([key, value]) => 
3854        	        {
3855            	        entity[key] = value;
3856        	        });
3857        	    }
3858
3859        	    if (!map.hasOwnProperty(widget))
3860        	    {
3861            	    map[widget] = [];
3862            	    
3863            	    map[widget].trace = {};
3864            	    map[widget].entry = [];
3865            	    map[widget].item_list_id = '';
3866            	    map[widget].item_list_name = '';
3867        	    }
3868
3869        	    if (!map[widget].trace.hasOwnProperty(element.dataset.id))
3870        	    {
3871        	    	map[widget].trace[element.dataset.id] = true;
3872            	    
3873            	    map[widget].entry.push(entity);
3874
3875            	    map[widget].item_list_id 	= entity.item_list_id;
3876            	    map[widget].item_list_name 	= entity.item_list_name;
3877        	    } 
3878            });
3879
3880    		Object.entries(map).forEach(([key, value]) => 
3881	        {
3882		        if (value.entry.length)
3883		        {
3884    		        let data = 
3885    			    {
3886    					event: 'view_item_list',
3887    					ecommerce:
3888    					{
3889    						item_list_id: 	value.item_list_id,
3890    						item_list_name: value.item_list_name,
3891    						items: 			value.entry
3892    					}
3893    				};
3894
3895    		        if ('undefined' !== typeof dataLayer)
3896    				{
3897    					(function(callback)
3898    					{
3899    						if (AEC.Const.COOKIE_DIRECTIVE)
3900    						{
3901    							AEC.CookieConsent.queue(callback).process();
3902    						}
3903    						else 
3904    						{
3905    							callback.apply(window,[]);
3906    						}
3907    					})
3908    					(
3909    						(function(dataLayer, data)
3910    						{
3911    							return function()
3912    							{
3913    								AEC.EventDispatcher.trigger('ec.widget.view.data', data);
3914
3915    								if (AEC.reset)
3916    								{
3917    									dataLayer.push({ ecommerce: null });
3918    								}
3919    								
3920    								dataLayer.push(data);
3921    							}
3922    						})(dataLayer, data)
3923    					);
3924    				}
3925		        }
3926	        });
3927    	})();
3928    });</script>
3928<script data-ommit="true" nonce="NXM3aDNrNzgxOXZ1cmU2YmNoZjNkZjRndG9wcDhlb2M=">
3929
3930	if (typeof dataLayer !== "undefined")
3931	{
3932		 
3933			AEC.Request.get(AEC.url('datalayer/index/events'), {}, response => 
3934			{
3935				Object.entries(response.events).forEach(([key, event]) => 
3936				{
3937					dataLayer.push(event);
3938				});
3939			});
3940			
3941		  AEC.EventDispatcher.on('ec.facebook.loaded', () => 
3942		{
3943			 });
3944
3945		 if (window.google_tag_params)
3946		{
3947			(function(callback)
3948			{
3949				if (AEC.Const.COOKIE_DIRECTIVE)
3950				{
3951					AEC.CookieConsent.queue(callback, "cookieConsentGranted").process();
3952				}
3953				else 
3954				{
3955					callback.apply(window,[]);
3956				}
3957			})
3958			(
3959				(function(dataLayer)
3960				{
3961					return () => 
3962					{
3963						AEC.Cookie.remarketing({ event:'fireRemarketingTag', google_tag_params: window.google_tag_params }).push(dataLayer);
3964					}
3965				})(dataLayer)
3966			);
3967		}
3968
3969		  }
3970	else
3971	{
3972		console.log('dataLayer[] is not intialized. Check if GTM is installed properly');
3973	}</script>
3973<!-- Start of Clerk.io E-commerce Personalisation tool - www.clerk.io -->
3973<script>
3974        (function (w, d) {
3975            var e = d.createElement('script');
3976            e.type = 'text/javascript';
3977            e.async = true;
3978            e.src = (d.location.protocol == 'https:' ? 'https' : 'http') + '://custom.clerk.io/nl.js';
3979            var s = d.getElementsByTagName('script')[0];
3980            s.parentNode.insertBefore(e, s);
3981            w.__clerk_q = w.__clerk_q || [];
3982            w.Clerk = w.Clerk || function () {
3983                w.__clerk_q.push(arguments)
3984            };
3985        })(window, document);
3986
3987        Clerk('config', {
3988            key: 'vObVwfC8kragEI44c0JSsnFDfjdRWpZi',
3989            collect_email: true,
3990                        globals: {
3991                uenc: 'aHR0cHM6Ly93d3cudm9ldGJhbHNoaXJ0c2tvbmluZy5ubC8~',
3992                formkey: 'kg814vNZzfNGE6fR',
3993                currency_symbol: '€',
3994                currency_iso: 'EUR'
3995            },
3996            formatters: {
3997                convert_currency: function (price) {
3998                    const ex_rate = parseFloat('1') ?? null;
3999                    if (ex_rate) {
4000                        return price * ex_rate;
4001                    }
4002                    return price;
4003                },
4004                convert_currency_from_iso: function (price, currency_iso) {
4005                    const ex_rates = JSON.parse('{"AFN":false,"ALL":false,"DZD":false,"AOA":false,"ARS":false,"AMD":false,"AWG":false,"AUD":false,"AZN":false,"AZM":false,"BSD":false,"BHD":false,"BDT":false,"BBD":false,"BYR":false,"BZD":false,"BMD":false,"BTN":false,"BOB":false,"BAM":false,"BWP":false,"BRL":false,"GBP":false,"BND":false,"BGN":false,"BUK":false,"BIF":false,"XPF":false,"KHR":false,"CAD":false,"CVE":false,"KYD":false,"CLP":false,"CNY":false,"COP":false,"KMF":false,"CDF":false,"CRC":false,"HRK":false,"CUP":false,"CZK":false,"DKK":false,"DJF":false,"DOP":false,"XCD":false,"EGP":false,"GQE":false,"ERN":false,"EEK":false,"ETB":false,"EUR":1,"FKP":false,"FJD":false,"GMD":false,"GEK":false,"GEL":false,"GHS":false,"GIP":false,"GTQ":false,"GNF":false,"GYD":false,"HTG":false,"HNL":false,"HKD":false,"HUF":false,"ISK":false,"INR":false,"IDR":false,"IRR":false,"IQD":false,"ILS":false,"JMD":false,"JPY":false,"JOD":false,"KZT":false,"KES":false,"KWD":false,"KGS":false,"LAK":false,"LVL":false,"LBP":false,"LSL":false,"LRD":false,"LYD":false,"LTL":false,"MOP":false,"MKD":false,"MGA":false,"MWK":false,"MYR":false,"MVR":false,"MRO":false,"MUR":false,"MXN":false,"MDL":false,"MNT":false,"MAD":false,"MZN":false,"MMK":false,"NAD":false,"NPR":false,"ANG":false,"TWD":false,"NZD":false,"NIC":false,"NGN":false,"KPW":false,"NOK":false,"OMR":false,"PKR":false,"PAB":false,"PGK":false,"PYG":false,"PEN":false,"PHP":false,"PLN":false,"QAR":false,"RHD":false,"RON":false,"ROL":false,"RUB":false,"RWF":false,"SVC":false,"WST":false,"SAR":false,"RSD":false,"SCR":false,"SLL":false,"SGD":false,"SKK":false,"SBD":false,"SOS":false,"ZAR":false,"KRW":false,"LKR":false,"SHP":false,"SDG":false,"SRD":false,"SZL":false,"SEK":false,"CHF":false,"SYP":false,"STD":false,"TJS":false,"TZS":false,"THB":false,"TOP":false,"TTD":false,"TND":false,"TRY":false,"TRL":false,"TMM":false,"USD":"1.415000000000","UGX":false,"UAH":false,"AED":false,"UYU":false,"UZS":false,"VUV":false,"VEB":false,"VEF":false,"VND":false,"CHE":false,"CHW":false,"XOF":false,"YER":false,"ZMK":false,"ZWD":false}');
4006                    if (ex_rates[currency_iso] !== undefined) {
4007                        return price * ex_rates[currency_iso];
4008                    }
4009                    return price;
4010                },
4011                currency_symbol_from_iso: function (symbol, iso) {
4012                    const ex_symbols = JSON.parse('{"AFN":"\u060b","ALL":"Lek\u00eb","DZD":"\u062f.\u062c.\u200f","AOA":"Kz","ARS":"$","AMD":"\u058f","AWG":"Afl.","AUD":"$","AZN":"\u20bc","AZM":"AZM","BSD":"$","BHD":"\u062f.\u0628.\u200f","BDT":"\u09f3","BBD":"$","BYR":"BYR","BZD":"$","BMD":"$","BTN":"Nu.","BOB":"Bs","BAM":"KM","BWP":"P","BRL":"R$","GBP":"\u00a3","BND":"$","BGN":"\u043b\u0432.","BUK":"BUK","BIF":"FBu","XPF":"XPF","KHR":"\u17db","CAD":"$","CVE":"CVE","KYD":"$","CLP":"$","CNY":"CN\u00a5","COP":"$","KMF":"CF","CDF":"FC","CRC":"\u20a1","HRK":"kn","CUP":"$","CZK":"K\u010d","DKK":"kr.","DJF":"DJF","DOP":"RD$","XCD":"$","EGP":"\u062c.\u0645.\u200f","GQE":"GQE","ERN":"Nfk","EEK":"EEK","ETB":"ETB","EUR":"\u20ac","FKP":"\u
401200a3","FJD":"FJD","GMD":"D","GEK":"GEK","GEL":"\u20be","GHS":"GH\u20b5","GIP":"\u00a3","GTQ":"Q","GNF":"FG","GYD":"$","HTG":"HTG","HNL":"L","HKD":"HK$","HUF":"Ft","ISK":"kr.","INR":"\u20b9","IDR":"Rp","IRR":"\u0631\u06cc\u0627\u0644","IQD":"\u062f.\u0639.\u200f","ILS":"\u20aa","JMD":"$","JPY":"\uffe5","JOD":"\u062f.\u0623.\u200f","KZT":"\u20b8","KES":"Ksh","KWD":"\u062f.\u0643.\u200f","KGS":"\u0441\u043e\u043c","LAK":"\u20ad","LVL":"LVL","LBP":"\u0644.\u0644.\u200f","LSL":"LSL","LRD":"$","LYD":"\u062f.\u0644.\u200f","LTL":"LTL","MOP":"MOP$","MKD":"\u0434\u0435\u043d.","MGA":"Ar","MWK":"MWK","MYR":"RM","MVR":"MVR","MRO":"MRO","MUR":"MUR","MXN":"$","MDL":"L","MNT":"\u20ae","MAD":"\u062f.\u0645.\u200f","MZN":"MTn","MMK":"K","NAD":"NAD","NPR":"\u0928\u0947\u0930\u0942","ANG":"ANG","TWD":"$","NZD":"NZ$","NIC":"NIC","NGN":"\u20a6","KPW":"KPW","NOK":"NOK","OMR":"\u0631.\u0639.\u200f","PKR":"Rs","PAB":"B\/.","PGK":"PGK","PYG":"PYG","PEN":"S\/","PHP":"\u20b1","PLN":"z\u0142","QAR":"\u0631.\u0642.\u200f","RHD":"RHD","RON":"RON","ROL":"ROL","RUB":"\u20bd","RWF":"RF","SVC":"SVC","WST":"WST","SAR":"\u0631.\u0633.\u200f","RSD":"RSD","SCR":"SCR","SLL":"SLL","SGD":"$","SKK":"SKK","SBD":"$","SOS":"SOS","ZAR":"R","KRW":"\u20a9","LKR":"\u0dbb\u0dd4.","SHP":"\u00a3","SDG":"\u062c.\u0633.","SRD":"SRD","SZL":"E","SEK":"kr","CHF":"CHF","SYP":"\u0644.\u0633.\u200f","STD":"STD","TJS":"\u0441\u043e\u043c.","TZS":"TSh","THB":"\u0e3f","TOP":"T$","TTD":"$","TND":"\u062f.\u062a.\u200f","TRY":"\u20ba","TRL":"TRL","TMM":"TMM","USD":"$","UGX":"USh","UAH":"\u20b4","AED":"\u062f.\u0625.\u200f","UYU":"$","UZS":"\u0441\u045e\u043c","VUV":"VUV","VEB":"VEB","VEF":"VEF","VND":"\u20ab","CHE":"CHE","CHW":"CHW","XOF":"F\u202fCFA","YER":"\u0631.\u064a.\u200f","ZMK":"ZMK","ZWD":"ZWD"}');
4013                    if (ex_symbols[currency_iso] !== undefined) {
4014                        return ex_symbols[currency_iso];
4015                    }
4016                    return symbol;
4017                }
4018            }
4019        });
4020
4021         var collectbaskets = false;
4022
4023        if (collectbaskets) {
4024
4025            let open = XMLHttpRequest.prototype.open;
4026            XMLHttpRequest.prototype.open = function () {
4027                this.addEventListener("load", function () {
4028
4029                    if (this.responseURL.includes("=cart")) {
4030
4031                        if (this.readyState === 4 && this.status === 200) {
4032                            var response = JSON.parse(this.responseText);
4033
4034                            var clerk_productids = [];
4035                            if (response && response.hasOwnProperty('cart') && response.cart.hasOwnProperty('items')) {
4036                                for (var i = 0, len = response.cart.items.length; i < len; i++) {
4037                                    clerk_productids.push(response.cart.items[i].product_id);
4038                                }
4039                            }
4040
4041                            clerk_productids = clerk_productids.map(Number);
4042                            var clerk_last_productids = [];
4043                            if (localStorage.getItem('clerk_productids') !== null) {
4044                                clerk_last_productids = localStorage.getItem('clerk_productids').split(",");
4045                                clerk_last_productids = clerk_last_productids.map(Number);
4046                            }
4047                            clerk_productids = clerk_productids.sort((a, b) => a - b);
4048                            clerk_last_productids = clerk_last_productids.sort((a, b) => a - b);
4049                            if (JSON.stringify(clerk_productids) == JSON.stringify(clerk_last_productids)) {
4050                                
4051                            } else {
4052                                if (JSON.stringify(clerk_productids) === "[0]") {
4053                                    Clerk('cart', 'set', []);
4054                                } else {
4055                                    Clerk('cart', 'set', clerk_productids);
4056                                }
4057                            }
4058                            localStorage.setItem("clerk_productids", clerk_productids);
4059                        }
4060                    }
4061
4062                    if (this.responseURL.includes("/cart/add/")) {
4063                        if (this.readyState === 4 && this.status === 200) {
4064                            const urlParts = this.responseURL.split('/');
4065                            const product_id = urlParts[urlParts.length - 2];
4066                            Clerk('basket', 'add', product_id);
4067                        }
4068                    }
4069
4070                }, false);
4071                open.apply(this, arguments);
4072            };
4073
4074        }</script>
4074<!-- End of Clerk.io E-commerce Personalisation tool - www.clerk.io -->
4074<script>document.addEventListener("DOMContentLoaded", function() { if (document.querySelectorAll('.mf-ytw-wrapper').length || document.querySelectorAll('[data-mf-ytw-youtube-link]').length) { !function (f, b, e, v, t, s) { if(f.mfytwcss)return; f.mfytwcss=1; t = b.createElement(e); t.rel = 'stylesheet'; t.type = 'text/css'; t.href = v; s = b.getElementsByTagName('HEAD')[0]; s.appendChild(t) }(window, document, 'link', 'https://www.voetbalshirtskoning.nl/static/version20261002143139/frontend/Vendic/voetbalshirtskoning/nl_NL/Magefan_YouTubeWidget/css/youtubewidget.css'); } if (document.querySelectorAll('.mf-ytw-wrapper').length) { !function (f, b, e, v, t, s) { if(f.mfytwjs)return; f.mfytwjs=1; t = b.createElement(e); t.type = 'text/javascript'; t.src = v; s = b.getElementsByTagName('HEAD')[0]; s.appendChild(t) }(window, document, 'script', 'https://www.voetbalshirtskoning.nl/static/version20261002143139/frontend/Vendic/voetbalshirtskoning/nl_NL/Magefan_YouTubeWidget/js/iframe.js'); } if (document.querySelectorAll('[data-mf-ytw-youtube-link]').length) { !function (f, b, e, v, t) { if(f.mflinkjs)return; f.mflinkjs=1; t = b.createElement(e); t.type = 'text/javascript'; t.src = v; s = b.getElementsByTagName('HEAD')[0]; s.appendChild(t) }(window, document, 'script', 'https://www.voetbalshirtskoning.nl/static/version20261002143139/frontend/Vendic/voetbalshirtskoning/nl_NL/Magefan_YouTubeWidget/js/link.js'); } });</script>
4074<!-- TikTok Pixel Code Start --> 
4074<script>        !function (w, d, t) {
4075            w.TiktokAnalyticsObject=t;var ttq=w[t]=w[t]||[];ttq.methods=["page","track","identify","instances","debug",
4076            "on","off","once","ready","alias","group","enableCookie","disableCookie","holdConsent","revokeConsent",
4077            "grantConsent"],ttq.setAndDefer=function(t,e){t[e]=function(){t.push([e].concat(Array.prototype.slice.call
4078            (arguments,0)))}};for(var i=0;i<ttq.methods.length;i++)ttq.setAndDefer(ttq,ttq.methods[i]);ttq.instance=
4079            function(t){for(
4080                var e=ttq._i[t]||[],n=0;n<ttq.methods.length;n++)ttq.setAndDefer(e,ttq.methods[n]);return e},ttq.load=
4081                function(e,n){var r="https://analytics.tiktok.com/i18n/pixel/events.js",o=n&&n.partner;ttq._i=ttq._i||
4082                {},ttq._i[e]=[],ttq._i[e]._u=r,ttq._t=ttq._t||{},ttq._t[e]=+new Date,ttq._o=ttq._o||{},ttq._o[e]=n||{};
4083                n=document.createElement("script")
4084            ;n.type="text/javascript",n.async=!0,n.src=r+"?sdkid="+e+"&lib="+t;e=document.getElementsByTagName("script")
4085            [0];e.parentNode.insertBefore(n,e)};
4086
4087
4088            ttq.load('D4FG09RC77UCJ0N6CF2G');
4089            ttq.page();
4090        }(window, document, 'ttq');</script>
4090  <!-- TikTok Pixel Code End -->
4090<script>
4091    if (HTMLScriptElement.supports &&
4092        HTMLScriptElement.supports('speculationrules')) {
4093        const specScript = document.createElement('script');
4094        specScript.type = 'speculationrules';
4095        specRules = {
4096            "prerender": [{
4097                "source": "document",
4098                "where": {
4099                    "and": [
4100                           {"href_matches":"/*"},    {"not":{"href_matches":"https://www.voetbalshirtskoning.nl/customer*"}},    {"not":{"href_matches":"https://www.voetbalshirtskoning.nl/checkout*"}},    {"not":{"href_matches":"https://www.voetbalshirtskoning.nl/download*"}},    {"not":{"href_matches":"https://www.voetbalshirtskoning.nl/redirect*"}},    {"not":{"href_matches":"https://www.voetbalshirtskoning.nl/store*"}},    {"not":{"href_matches":"https://www.voetbalshirtskoning.nl/rewrite*"}},    {"not":{"href_matches":"https://www.voetbalshirtskoning.nl/switch*"}},    {"not":{"href_matches":"https://www.voetbalshirtskoning.nl/.pdf"}},    {"not":{"selector_matches":".do-not-prerender"}},    {"not":{"selector_matches":"[rel=nofollow]"}}  ]
4101                },
4102                "eagerness": "moderate"
4103            }]
4104        };
4105        specScript.textContent = JSON.stringify(specRules);
4106        document.body.append(specScript);
4107    }</script>
4107<script>
4108    (() => {
4109        function src_default(Alpine) {
4110            Alpine.directive("intersect", Alpine.skipDuringClone((el, { value, expression, modifiers }, { evaluateLater, cleanup }) => {
4111                let evaluate = evaluateLater(expression);
4112                let options = {
4113                    rootMargin: getRootMargin(modifiers),
4114                    threshold: getThreshold(modifiers)
4115                };
4116                let observer = new IntersectionObserver((entries) => {
4117                    entries.forEach((entry) => {
4118                        if (entry.isIntersecting === (value === "leave"))
4119                            return;
4120                        evaluate();
4121                        modifiers.includes("once") && observer.disconnect();
4122                    });
4123                }, options);
4124                observer.observe(el);
4125                cleanup(() => {
4126                    observer.disconnect();
4127                });
4128            }));
4129        }
4130        function getThreshold(modifiers) {
4131            if (modifiers.includes("full"))
4132                return 0.99;
4133            if (modifiers.includes("half"))
4134                return 0.5;
4135            if (!modifiers.includes("threshold"))
4136                return 0;
4137            let threshold = modifiers[modifiers.indexOf("threshold") + 1];
4138            if (threshold === "100")
4139                return 1;
4140            if (threshold === "0")
4141                return 0;
4142            return Number(`.${threshold}`);
4143        }
4144        function getLengthValue(rawValue) {
4145            let match = rawValue.match(/^(-?[0-9]+)(px|%)?$/);
4146            return match ? match[1] + (match[2] || "px") : void 0;
4147        }
4148        function getRootMargin(modifiers) {
4149            const key = "margin";
4150            const fallback = "0px 0px 0px 0px";
4151            const index = modifiers.indexOf(key);
4152            if (index === -1)
4153                return fallback;
4154            let values = [];
4155            for (let i = 1; i < 5; i++) {
4156                values.push(getLengthValue(modifiers[index + i] || ""));
4157            }
4158            values = values.filter((v) => v !== void 0);
4159            return values.length ? values.join(" ").trim() : fallback;
4160        }
4161
4162        document.addEventListener("alpine:init", () => {
4163            window.Alpine.plugin(src_default);
4164        });
4165    })();</script>
4165<script>
4166    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"})) {
4167        document.querySelectorAll(selector).forEach(el => el.setAttribute('x-defer', `${deferUntil}`));
4168    }</script>
4168 
4168<script>
4169    (function () {
4170        "use strict";
4171
4172        const hasAlpine = new Promise(resolve => {
4173            window.addEventListener('alpine:initialized', resolve, {once: true, passive: true});
4174        });
4175
4176        const hasInteract = new Promise(resolve => {
4177            (events => {
4178                const onInteract = () => {
4179                    resolve();
4180                    events.forEach(type => window.removeEventListener(type, onInteract));
4181                }
4182                events.forEach(type => window.addEventListener(type, onInteract, {once: true, passive: true}))
4183            })(['touchstart', 'mouseover', 'wheel', 'scroll', 'keydown'])
4184        });
4185
4186        const onIntersect = (el) => {
4187            return new Promise(resolve => {
4188                const observer = new IntersectionObserver(entries => {
4189                    for (const entry of entries) {
4190                        if (entry.isIntersecting) {
4191                            observer.disconnect()
4192                            resolve();
4193                        }
4194                    }
4195                }, {});
4196                observer.observe(el);
4197            });
4198        }
4199
4200        function runComponent(el) {
4201            hasAlpine.then(() => {
4202                el.removeAttribute('x-ignore');
4203                queueMicrotask(() => Alpine.initTree(el));
4204            });
4205        }
4206
4207        function initDeferredComponents() {
4208            document.querySelectorAll('[x-data][x-defer]').forEach(el => {
4209                el.setAttribute('x-ignore', '');
4210                const deferUntil = (el.getAttribute('x-defer') || '').trim();
4211                switch (deferUntil) {
4212                    case 'interact':
4213                        hasInteract.then(() => runComponent(el));
4214                        break;
4215                    case 'intersect':
4216                        onIntersect(el).then(() => runComponent(el))
4217                        break;
4218                    case 'idle':
4219                        window.requestIdleCallback
4220                            ? window.requestIdleCallback(() => runComponent(el), {timeout: 4000})
4221                            : setTimeout(() => runComponent(el), 4000);
4222                        break;
4223                    case 'eager':
4224                        runComponent(el);
4225                        break;
4226                    default:
4227                        if (deferUntil.startsWith('event:') && deferUntil.length > 6) {
4228                            window.addEventListener(deferUntil.substring(6), () => runComponent(el), {once: true, passive: true});
4229                        }
4230                }
4231            });
4232        }
4233
4234        window.addEventListener('alpine:init', initDeferredComponents, {once: true, passive: true});
4235    })()</script>
vendor: 4,405 bytes, lines 4235-4342
4235<script>
4236    (() => {
4237        // packages/collapse/src/index.js
4238        function src_default(Alpine) {
4239            Alpine.directive("collapse", collapse);
4240            collapse.inline = (el, {
4241                modifiers
4242            }) => {
4243                if (!modifiers.includes("min"))
4244                    return;
4245                el._x_doShow = () => {};
4246                el._x_doHide = () => {};
4247            };
4248
4249            function collapse(el, {
4250                modifiers
4251            }) {
4252                let duration = modifierValue(modifiers, "duration", 250) / 1e3;
4253                let floor = modifierValue(modifiers, "min", 0);
4254                let fullyHide = !modifiers.includes("min");
4255                if (!el._x_isShown)
4256                    el.style.height = `${floor}px`;
4257                if (!el._x_isShown && fullyHide)
4258                    el.hidden = true;
4259                if (!el._x_isShown)
4260                    el.style.overflow = "hidden";
4261                let setFunction = (el2, styles) => {
4262                    let revertFunction = Alpine.setStyles(el2, styles);
4263                    return styles.height ? () => {} : revertFunction;
4264                };
4265                let transitionStyles = {
4266                    transitionProperty: "height",
4267                    transitionDuration: `${duration}s`,
4268                    transitionTimingFunction: "cubic-bezier(0.4, 0.0, 0.2, 1)"
4269                };
4270                el._x_transition = {
4271                    in(before = () => {}, after = () => {}) {
4272                        if (fullyHide)
4273                            el.hidden = false;
4274                        if (fullyHide)
4275                            el.style.display = null;
4276                        let current = el.getBoundingClientRect().height;
4277                        el.style.height = "auto";
4278                        let full = el.getBoundingClientRect().height;
4279                        if (current === full) {
4280                            current = floor;
4281                        }
4282                        Alpine.transition(el, Alpine.setStyles, {
4283                            during: transitionStyles,
4284                            start: {
4285                                height: current + "px"
4286                            },
4287                            end: {
4288                                height: full + "px"
4289                            }
4290                        }, () => el._x_isShown = true, () => {
4291                            if (Math.abs(el.getBoundingClientRect().height - full) < 1) {
4292                                el.style.overflow = null;
4293                            }
4294                        });
4295                    },
4296                    out(before = () => {}, after = () => {}) {
4297                        let full = el.getBoundingClientRect().height;
4298                        Alpine.transition(el, setFunction, {
4299                            during: transitionStyles,
4300                            start: {
4301                                height: full + "px"
4302                            },
4303                            end: {
4304                                height: floor + "px"
4305                            }
4306                        }, () => el.style.overflow = "hidden", () => {
4307                            el._x_isShown = false;
4308                            if (el.style.height == `${floor}px` && fullyHide) {
4309                                el.style.display = "none";
4310                                el.hidden = true;
4311                            }
4312                        });
4313                    }
4314                };
4315            }
4316        }
4317
4318        function modifierValue(modifiers, key, fallback) {
4319            if (modifiers.indexOf(key) === -1)
4320                return fallback;
4321            const rawValue = modifiers[modifiers.indexOf(key) + 1];
4322            if (!rawValue)
4323                return fallback;
4324            if (key === "duration") {
4325                let match = rawValue.match(/([0-9]+)ms/);
4326                if (match)
4327                    return match[1];
4328            }
4329            if (key === "min") {
4330                let match = rawValue.match(/([0-9]+)px/);
4331                if (match)
4332                    return match[1];
4333            }
4334            return rawValue;
4335        }
4336
4337        // packages/collapse/builds/cdn.js
4338        document.addEventListener("alpine:init", () => {
4339            window.Alpine.plugin(src_default);
4340        });
4341    })();
4342</script>
4342 
4342<script type="module"
4343        src="https://www.voetbalshirtskoning.nl/static/version20261002143139/frontend/Vendic/voetbalshirtskoning/nl_NL/Hyva_Theme/js/alpine3.min.js"
4344        defer
4345        crossorigin
4346></script>
4346<script>
4347    'use strict';
4348    function dispatchMessages(messages, hideAfter) {
4349        const messagesEvent = new CustomEvent("messages-loaded", {
4350            detail: {
4351                messages: messages,
4352                hideAfter: hideAfter
4353            }
4354        });
4355        window.dispatchEvent(messagesEvent);
4356    }
4357
4358 if (typeof hyva === 'undefined' || (!hyva.getBrowserStorage || !hyva.getCookie || !hyva.setCookie)) {
4359        console.warn("Hyvä helpers are not loaded yet. Make sure they are included before this script");
4360    }
4361
4362    (function( hyva, undefined ) {
4363
4364        hyva.initFormKey = () => {
4365            const inputSelector = 'input[name="form_key"]',
4366                formKey = hyva.getFormKey();
4367
4368            Array.from(document.querySelectorAll(inputSelector)).map(function (input) {
4369                input.value = formKey
4370            });
4371        }
4372
4373        hyva.initMessages = () => {
4374            try {
4375                const messages = hyva.getCookie('mage-messages');
4376                window.mageMessages = messages ? JSON.parse(decodeURIComponent(messages).replace(/\+/g, ' ')) : [];
4377
4378                dispatchMessages(window.mageMessages);
4379
4380                 const skipSetDomain = true;
4381                hyva.setCookie('mage-messages','', -1, skipSetDomain);
4382
4383            } catch (error) {
4384                console.warn('Error parsing Cookie Messages:', error);
4385            }
4386        }
4387
4388        window.addEventListener('DOMContentLoaded', hyva.initFormKey);
4389        hyva.alpineInitialized(hyva.initMessages)
4390
4391    }( window.hyva = window.hyva || {} ));</script>
4391<script>
4392    'use strict';
4393    {
4394        const private_content_key = 'mage-cache-storage';
4395        const private_content_expire_key = 'mage-cache-timeout';
4396        const private_content_version_key = 'private_content_version';
4397        const section_data_ids_key = 'section_data_ids';
4398        const mage_cache_session_id_key = 'mage-cache-sessid';
4399        const last_visited_store_key = 'last_visited_store';
4400
4401        const ttl = 86400;
4402
4403 if (typeof hyva === 'undefined' || (!hyva.getBrowserStorage || !hyva.getCookie || !hyva.setCookie)) {
4404            console.warn("Hyvä helpers are not loaded yet. Make sure they are included before this script");
4405        }
4406
4407        function loadSectionData () {
4408            const browserStorage = hyva.getBrowserStorage();
4409            if (!browserStorage) {
4410                typeof window.dispatchMessages !== "undefined" && window.dispatchMessages(
4411                    [{
4412                        type: "warning",
4413                        text: "Please enable LocalStorage in your browser."
4414                    }]
4415                );
4416                return;
4417            }
4418            try {
4419                let isInvalid = false;
4420
4421 if (hyva.getCookie(last_visited_store_key) !== CURRENT_STORE_CODE) {
4422                    isInvalid = true;
4423                }
4424                hyva.setCookie(last_visited_store_key, CURRENT_STORE_CODE, false, false);
4425
4426 if (!hyva.getCookie(mage_cache_session_id_key)) {
4427                    isInvalid = true;
4428                    browserStorage.removeItem(private_content_key);
4429                    const skipSetDomain = true;
4430                    const days = false;
4431                    hyva.setCookie(mage_cache_session_id_key, true, days, skipSetDomain)
4432                }
4433
4434                const cookieVersion = hyva.getCookie(private_content_version_key);
4435                const storageVersion = browserStorage.getItem(private_content_version_key);
4436
4437                if (cookieVersion && !storageVersion || cookieVersion !== storageVersion) {
4438                    isInvalid = true;
4439                }
4440
4441                const privateContentExpires = browserStorage.getItem(private_content_expire_key);
4442                if (privateContentExpires && new Date(privateContentExpires) < new Date()) {
4443                    browserStorage.removeItem(private_content_key);
4444                }
4445
4446                if (isInvalid && cookieVersion) {
4447                    fetchPrivateContent([]);
4448                } else if (cookieVersion && storageVersion && cookieVersion === storageVersion) {
4449                    const privateContent = JSON.parse(browserStorage.getItem(private_content_key));
4450                    if (
4451                        privateContent &&
4452                        privateContentExpires &&
4453                        privateContent.cart &&
4454                        privateContent.customer
4455                    ) {
4456                        dispatchPrivateContent(privateContent);
4457                    } else {
4458                        fetchPrivateContent([]);
4459                    }
4460                } else {
4461                    if (document.getElementById('default-section-data')) {
4462                        const privateContent = JSON.parse(document.getElementById('default-section-data').innerText.trim());
4463                        dispatchPrivateContent(privateContent);
4464                    } else {
4465                        dispatchPrivateContent({});
4466                    }
4467                }
4468
4469            } catch (error) {
4470                console.warn('Error retrieving Private Content:', error);
4471            }
4472        }
4473
4474        hyva.alpineInitialized(loadSectionData)
4475        window.addEventListener('reload-customer-section-data', loadSectionData);
4476
4477 window.processSectionDataBeforeDispatch = window.processSectionDataBeforeDispatch || (data => data);
4478
4479        function dispatchPrivateContent(data) {
4480
4481            const privateContentEvent = new CustomEvent("private-content-loaded", {
4482                detail: {
4483                    data: window.processSectionDataBeforeDispatch(data)
4484                }
4485            });
4486            window.dispatchEvent(privateContentEvent);
4487        }
4488
4489 function fetchPrivateContent(sections) {
4490            fetch(`${BASE_URL}customer/section/load/?sections=${encodeURIComponent(sections.join(','))}`, {
4491                method: 'GET',
4492                headers: {
4493                    'Content-Type': 'application/json',
4494                    'X-Requested-With': 'XMLHttpRequest'
4495                }
4496            })
4497                .then(response => response.ok && response.json())
4498                .then(
4499                    data => {
4500                        if (data) {
4501                            try {
4502                                const browserStorage = hyva.getBrowserStorage();
4503
4504                                
4505                                const oldSectionData = JSON.parse(browserStorage.getItem(private_content_key) || '{}') || {};
4506
4507 if ((! data.cart || ! data.cart.cartId) && oldSectionData['checkout-data']) {
4508                                    delete oldSectionData['checkout-data'];
4509                                }
4510                                const newSectionData = Object.assign(oldSectionData, data);
4511
4512                                dispatchPrivateContent(newSectionData);
4513
4514                                
4515                                if (newSectionData.messages && newSectionData.messages.messages ) {
4516                                    newSectionData.messages.messages = [];
4517                                }
4518
4519                                browserStorage.setItem(private_content_key, JSON.stringify(newSectionData));
4520
4521                                const expiresAt = new Date(Date.now() + (ttl * 1000)).toISOString();
4522                                browserStorage.setItem(private_content_expire_key, expiresAt);
4523
4524                                const newCookieVersion = hyva.getCookie(private_content_version_key);
4525                                browserStorage.setItem(private_content_version_key, newCookieVersion);
4526
4527                                
4528                                
4529                                hyva.setCookie(
4530                                    section_data_ids_key,
4531                                    JSON.stringify(
4532                                        Object.keys(data).reduce((sectionDataIds, sectionKey) => {
4533                                            sectionDataIds[sectionKey] = data[sectionKey]['data_id'];
4534                                            return sectionDataIds;
4535                                        }, {})
4536                                    ),
4537                                    false,
4538                                    true
4539                                );
4540                            } catch (error) {
4541                                console.warn("Couldn't store privateContent", error);
4542                            }
4543                        }
4544                    }
4545                );
4546        }
4547    }</script>
4547<script>
4548    (() => {
4549        document.addEventListener('submit', event => event.target.action = event.target.action.replace('%25uenc%25', hyva.getUenc()));
4550    })()</script>
4550<script>
4551    (events => {
4552        const dispatchUserInteractionEvent = () => {
4553            events.forEach(type => window.removeEventListener(type, dispatchUserInteractionEvent))
4554            window.dispatchEvent(new Event('init-external-scripts'))
4555        };
4556        events.forEach(type => window.addEventListener(type, dispatchUserInteractionEvent, {once: true, passive: true}))
4557    })(['touchstart', 'mousemove', 'wheel', 'scroll', 'keydown'])</script>
4557<script>
4558    'use strict';
4559
4560    const grecaptchaV2LoadCallbacks = [];
4561
4562    function executeRecaptchaLoadCallbacks () {
4563        while (window.grecaptcha && grecaptchaV2LoadCallbacks.length > 0) {
4564            const callback = grecaptchaV2LoadCallbacks.pop();
4565            typeof callback === 'string' ? window[callback]() : callback();
4566        }
4567    }
4568
4569    (function() {
4570        const loadRecaptchaScript = (event) => {
4571
4572            if (window.grecaptcha || !event.target.form) {
4573                return;
4574            }
4575
4576            const url = 'https://www.google.com/recaptcha/api.js?onload=executeRecaptchaLoadCallbacks';
4577            const siteKey = '6Lc5UQosAAAAADAu53_Ic8JHzWhlDLO8HTaO5Qve';
4578            const script = document.createElement('script');
4579            script.type = 'text/javascript';
4580            script.src = siteKey ? `${url}&render=${siteKey}` : `${url}&render=explicit`;
4581            script.async = true;
4582            document.head.appendChild(script);
4583
4584            script.addEventListener('load', () => {
4585                Array.from(document.querySelectorAll('button[data-recaptcha-btn]:disabled')).forEach(btn => btn.removeAttribute('disabled'));
4586            });
4587        }
4588
4589        window.forceLoadRecaptchaScript = (form) => {
4590            loadRecaptchaScript({target: {form: form || 'dummy'}});
4591            executeRecaptchaLoadCallbacks();
4592        };
4593
4594        document.body.addEventListener('input', loadRecaptchaScript, { once: true });
4595        document.body.addEventListener('focus', loadRecaptchaScript, { once: true });
4596
4597    }());
4598
4599</script>
4599<script>
4600    'use strict';
4601
4602    (function () {
4603        const modals = [];
4604        const excludedFromFocusTrapping = new Set();
4605
4606        function trapFocusInNextModalWithOverlay() {
4607            for (let idx = modals.length -1; idx >= 0; idx--) {
4608                const nextOnStack = modals[idx];
4609                const nextDialogElement = nextOnStack.instance.$refs[nextOnStack.name];
4610                if (! isOverlayDisabled(nextDialogElement)) {
4611                    hyva.trapFocus(nextDialogElement);
4612                    break;
4613                }
4614            }
4615        }
4616
4617        function focusables(dialogElement) {
4618            const selector = 'button, [href], input, textarea, select, details, [tabindex]:not([tabindex="-1"])';
4619            return Array.from(dialogElement.querySelectorAll(selector))
4620                .filter(el => !el.hasAttribute('disabled'));
4621        }
4622
4623        function firstVisible(elements) {
4624            const a = Array.from(elements);
4625            for (let i = 0; i < a.length; i++) {
4626                if (a[i].offsetWidth || a[i].offsetHeight || a[i].getClientRects().length) return a[i];
4627            }
4628            return null;
4629        }
4630
4631        function isInViewport(element) {
4632            const rect = element && element.getBoundingClientRect();
4633            return rect &&
4634                rect.top >= 0 &&
4635                rect.left >= 0 &&
4636                rect.right <= window.innerWidth &&
4637                rect.bottom <= window.innerHeight;
4638        }
4639
4640        function setFocusAfterTransition(dialogElement, duration) {
4641             const nested = Array.from(dialogElement.querySelectorAll('[role="dialog"]'));
4642            const candidates = Array.from(dialogElement.querySelectorAll('[x-focus-first]'));
4643            next: for (let candidate of candidates) {
4644                for (let child of nested) {
4645                    if (child.contains(candidate)) continue next;
4646                }
4647                setTimeout(() => candidate.focus(), 50);
4648                break;
4649            }
4650            window.setTimeout(() => {
4651                const focusElement = firstVisible(dialogElement.querySelectorAll('[x-focus-first]')) ||
4652                    focusables(dialogElement)[0] ||
4653                    null;
4654                focusElement && isInViewport(focusElement) && focusElement.focus();
4655            }, Math.max(1, duration));
4656        }
4657
4658        function determineTrigger($refs, dialog, trigger) {
4659             if (typeof trigger === 'undefined' && typeof dialog === 'object' && dialog.target instanceof HTMLElement) {
4660                return dialog.target;
4661            }
4662             if (typeof dialog === 'string' && typeof trigger === 'object' && trigger.target instanceof HTMLElement) {
4663                return trigger.target;
4664            }
4665             if (typeof trigger === 'string') {
4666                try {
4667                    return $refs[trigger] || document.querySelector(trigger)
4668                } catch (e) {}
4669            }
4670             if (trigger instanceof Element) {
4671                return trigger;
4672            }
4673
4674             return null;
4675        }
4676
4677        function isOverlayDisabled(dialog) {
4678            return dialog && dialog.hasAttribute('x-no-overlay')
4679        }
4680
4681        function areRemainingModalsWithoutOverlay(modals)
4682        {
4683            const overflowDisabled = modals.map(modal => modal.instance.$refs[modal.name]).filter(isOverlayDisabled);
4684
4685            return overflowDisabled.length === modals.length;
4686        }
4687
4688        window.hyva.modal = function(options = {}) {
4689             if (this.$el && this.$el.dataset && this.$el.dataset.options) {
4690                try {
4691                    options = Object.assign(options, JSON.parse(this.$el.dataset.options || '{}'));
4692                } catch (e) {
4693                    throw new Error('Cannot read the dialog options from the data-options attribute: not valid JSON');
4694                }
4695            }
4696
4697            const config = Object.assign({
4698                dialog: 'dialog',  duration: 300,  transitionEnter: 'transition ease-out duration-300',
4699                transitionEnterStart: 'opacity-0',
4700                transitionEnterEnd: 'opacity-100',
4701                transitionLeave: 'transition ease-in duration-300',
4702                transitionLeaveStart: 'opacity-100',
4703                transitionLeaveEnd: 'opacity-0',
4704            }, options);
4705            let lastHide = 0;
4706
4707            return {
4708                opened: {},
4709                show(dialog, trigger) {
4710                    const focusTargetAfterHide = determineTrigger(this.$refs, dialog, trigger);
4711                    const name = typeof dialog === 'string' ? dialog : config.dialog;
4712                    const dialogElement = this.$refs[name];
4713                    if (! dialogElement) {
4714                         return;
4715                    }
4716                    const useOverlay = ! dialogElement.hasAttribute('x-no-overlay');
4717
4718                    dialogElement.scrollTop = 0;
4719
4720                     if (this.opened[name]) {
4721                        return;
4722                    }
4723
4724                    if (focusTargetAfterHide) {
4725                        focusTargetAfterHide.setAttribute('aria-expanded', 'true');
4726                    }
4727
4728                    this.opened[name] = true;
4729                    useOverlay && this.$nextTick(() => hyva.trapFocus(dialogElement));
4730                    setFocusAfterTransition(dialogElement, config.duration);
4731
4732                    const frame = {name, instance: this, focusTarget: focu
4732sTargetAfterHide, time: Date.now()};
4733
4734                    modals.push(frame);
4735                    if (useOverlay) {
4736                        document.body.classList.add('overflow-hidden');
4737                    }
4738                    return new Promise(resolve => frame.resolve = resolve);
4739                },
4740                cancel() {
4741                    this.hide(false);
4742                },
4743                ok() {
4744                    this.hide(true);
4745                },
4746                hide(value) {
4747                     if (Date.now() - lastHide < config.duration) {
4748                        return;
4749                    }
4750                    lastHide = Date.now();
4751
4752                    const modal = modals.pop() || {};
4753                    if (! modal.instance) {
4754                        return;
4755                    }
4756
4757                    const name = modal.name;
4758                    this.opened[name] = false;
4759                    hyva.releaseFocus(modal.instance.$refs[modal.name])
4760                    trapFocusInNextModalWithOverlay();
4761
4762                    const nextFocusAfterHide = modal.focusTarget;
4763                    nextFocusAfterHide && setTimeout(() => {
4764                        nextFocusAfterHide.setAttribute('aria-expanded', 'false');
4765                        nextFocusAfterHide.focus()
4766                    }, config.duration);
4767
4768                    if (modals.length === 0 || areRemainingModalsWithoutOverlay(modals)) {
4769                        document.body.classList.remove('overflow-hidden');
4770                    }
4771
4772                    modal.resolve(value);
4773                },
4774                overlay(dialog) {
4775                    dialog = this.$el.dataset.dialogRefName || dialog;
4776                    const name = typeof dialog === 'string' ? dialog : config.dialog;
4777                    return {
4778                        ['x-show']() {
4779                            return this.opened[name]
4780                        },
4781                        ['x-transition:enter']: config.transitionEnter,
4782                        ['x-transition:enter-start']: config.transitionEnterStart,
4783                        ['x-transition:enter-end']: config.transitionEnterEnd,
4784                        ['x-transition:leave']: config.transitionLeave,
4785                        ['x-transition:leave-start']: config.transitionLeaveStart,
4786                        ['x-transition:leave-end']: config.transitionLeaveEnd,
4787                        ['@hyva-modal-show.window'](event) {
4788                            event.detail && event.detail.dialog === name && this.show(name, event.detail.focusAfterHide)
4789                        }
4790                    };
4791                },
4792                showDialogOnInit() {
4793                    const parent = this.$el.closest('[data-dialog-ref-name]');
4794                    if (parent && parent.dataset.dialogRefName) {
4795                        this.$dispatch('hyva-modal-show', {dialog: parent.dataset.dialogRefName})
4796                    }
4797                }
4798            };
4799        }
4800
4801        window.hyva.modal.peek = () => modals.length > 0 && modals[modals.length -1]
4802
4803        window.hyva.modal.pop = function () {
4804            if (modals.length > 0) {
4805                const modal = modals[modals.length -1];
4806                modal.instance.hide();
4807            }
4808        }
4809
4810        window.hyva.modal.excludeSelectorsFromFocusTrap = function (selectors) {
4811            typeof selectors === 'string' || selectors instanceof String
4812                ? excludedFromFocusTrapping.add(selectors)
4813                : selectors.map(selector => excludedFromFocusTrapping.add(selector));
4814        }
4815
4816        window.hyva.modal.eventListeners = {
4817            keydown: event => {
4818                if (event.key === 'Escape') {
4819                    window.hyva.modal.pop();
4820                }
4821            },
4822             click: event => {
4823                if (modals.length > 0) {
4824                    const modal = modals[modals.length -1];
4825                    const dialog = modal.instance.$refs[modal.name];
4826                    if (modal.time + 50 < Date.now() && 
4827                        ! isOverlayDisabled(dialog) && 
4828                        ! dialog.contains(event.target)) { 
4829                        modal.instance.hide();
4830                    }
4831                }
4832            }
4833        };
4834
4835        document.addEventListener('keydown', window.hyva.modal.eventListeners.keydown);
4836
4837        document.addEventListener('click', window.hyva.modal.eventListeners.click);
4838    })();
4839    window.addEventListener('alpine:init', () => {
4840        Alpine.data('hyvaModal', window.hyva.modal);
4841    }, {once: true});</script>
4841<div class="thuiswinkel-badge fixed bottom-4 right-4 z-30 transition-all">
4842    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 13.23 25.1" width="48" height="48" role="img"><defs><style>.cls-1{fill:#fff;}.cls-2{fill:#1e1e1e;}.cls-3{fill:#bdea18;}.cls-4{fill:#fc3f4d;}.cls-5{fill:#eee;}</style></defs><rect class="cls-1" x="0.35" y="10.74" width="12.53" height="14" rx="1.15" ry="1.15"/><path class="cls-2" d="M11.73,11.1a.79.79,0,0,1,.8.79V23.6a.8.8,0,0,1-.8.8H1.5a.8.8,0,0,1-.8-.8V11.89a.79.79,0,0,1,.8-.79H11.73m0-.71H1.5A1.5,1.5,0,0,0,0,11.89V23.6a1.5,1.5,0,0,0,1.5,1.5H11.73a1.5,1.5,0,0,0,1.5-1.5V11.89a1.5,1.5,0,0,0-1.5-1.5Z"/><path class="cls-2" d="M6.62,0,0,3.82v7.66H13.23V3.82Zm5.91,10.77H7V7.84l5.56-3.2Zm-6.27,0H.71V4.64l5.55,3.2Zm.36-3.54L1.06,4,6.62.82,12.17,4Z"/><polygon class="cls-3" points="12.53 4.64 6.97 7.84 6.97 10.77 12.53 10.77 12.53 4.64"/><polygon class="cls-4" points="0.71 10.77 6.26 10.77 6.26 7.84 0.71 4.64 0.71 10.77"/><polygon class="cls-1" points="1.06 4.02 6.62 7.23 12.17 4.02 6.62 0.82 1.06 4.02"/><rect class="cls-5" x="3.38" y="14.37" width="6.47" height="6.47"/><path d="M8.57,16.76a.2.2,0,0,1-.06.14L7,18.39l-.28.29a.24.24,0,0,1-.14.05.2.2,0,0,1-.14-.05l-.29-.29-.74-.74a.2.2,0,0,1-.06-.14.17.17,0,0,1,.06-.14l.28-.28A.18.18,0,0,1,5.85,17a.2.2,0,0,1,.14.06l.61.6L8,16.34a.2.2,0,0,1,.14-.06.18.18,0,0,1,.14.06l.28.28A.18.18,0,0,1,8.57,16.76Z"/><title>thuiswinkel</title></svg>
4843</div>
4843<script>
4844    function initConfigurableOptions(productId, optionConfig) {
4845
4846        function findPathParam(key) {
4847                        const baseUrl = (BASE_URL.substring(0, 2) === '//' ? 'http:' : '') + BASE_URL;
4848            const baseUrlParts = (new URL(baseUrl)).pathname.replace(/\/$/, '').split('/');
4849            const pathParts = window.location.pathname.split('/').slice(baseUrlParts.length + 3);
4850            for (let i = 0; i < pathParts.length; i += 2) {
4851                if (pathParts[i] === key && pathParts.length > i) {
4852                    return pathParts[i + 1];
4853                }
4854            }
4855        }
4856
4857        return {
4858            optionConfig,
4859            productId,
4860            itemId: (new URLSearchParams(window.location.search)).get('id') || findPathParam('id'),
4861            allowedAttributeOptions: [],
4862            selectedValues: [],
4863            init() {
4864                this.findAllowedAttributeOptions();
4865                this.$nextTick(() => {
4866                    if (typeof this.optionConfig.defaultValues === 'object') {
4867                        for (const [attributeId, value] of Object.entries(this.optionConfig.defaultValues)) {
4868                            this.changeOption(attributeId, value + '');
4869                        }
4870                    }
4871                    this.preselectQuerystringItems();
4872                    this.preselectLocationHashItems();
4873                });
4874            },
4875            productIndex: 0,
4876            productIndexForPrice: 0,
4877            optionIsActive(attributeId, optionId) {
4878                                return !!this.getAllowedAttributeOptions(attributeId).find(
4879                    option => option.id === optionId
4880                )
4881            },
4882            optionIsEnabled(attributeId, optionId) {
4883                                for (const productId in this.optionConfig.index) {
4884                    if (this.optionConfig.index[productId][attributeId] === optionId) {
4885                        return true;
4886                    }
4887                }
4888                return false;
4889            },
4890            findSimpleIndex() {
4891                                this.productIndex = this.calculateSimpleIndexForPartialSelection(this.selectedValues);
4892                this.productIndexForPrice = this.findCheapestProductForPartialSelection(this.selectedValues);
4893            },
4894            calculateSimpleIndexForPartialSelection(selectedValues) {
4895                if (selectedValues.length === 0) return 0;
4896                return this.findProductIdsForPartialSelection(selectedValues)[0];
4897            },
4898            calculateSimpleIndexForFullSelection(selectedValues) {
4899                if (! this.isFullSelection(selectedValues)) return false;
4900
4901                const productIndexes = this.optionConfig.index;
4902                return Object.keys(productIndexes).find(productIndex => {
4903                    const productCandidateOptions = productIndexes[productIndex];
4904
4905                    for (const productOption in productCandidateOptions) {
4906                        if (
4907                            !selectedValues[productOption] ||
4908                            selectedValues[productOption] !== productCandidateOptions[productOption]
4909                        ) {
4910                            return false;
4911                        }
4912                    }
4913                    return productIndex;
4914                });
4915            },
4916            findAllowedAttributeOptions() {
4917                                this.allowedAttributeOptions = this.calculateAllowedAttributeOptions(this.selectedValues);
4918            },
4919            calculateAllowedAttributeOptions(selectedValues) {
4920                const allAttributes = this.optionConfig.attributes;
4921                const allAttributesSorted = Object.values(allAttributes).sort((a,b) => {
4922                    return a.position - b.position
4923                });
4924
4925                const newAllowedAttributeOptions = [];
4926
4927                allAttributesSorted.forEach(attribute => {
4928                    const selectionWithoutAttr = Object.assign({}, this.removeAttrFromSelection(selectedValues, attribute.id));
4929                    const availableIndexes = this.calculateAvailableProductIndexes(selectionWithoutAttr);
4930                    newAllowedAttributeOptions[attribute.id] = allAttributes[attribute.id].options.filter(option => {
4931                        return !!option.products.find(product => {
4932                            return availableIndexes.includes(product);
4933                        })
4934                    });
4935                });
4936                return newAllowedAttributeOptions;
4937            },
4938            calculateAvailableProductIndexes(selectedOptions) {
4939                if (Object.keys(selectedOptions).length === 0) {
4940                                        if (Object.values(this.optionConfig.salable || {}).length) {
4941                                                return [].concat.apply([], [].concat.apply([], Object.values(this.optionConfig.salable).map(Object.values))).filter((x, i, a) => a.indexOf(x) === i)
4942                    }
4943                                        return Object.keys(this.optionConfig.index);
4944                }
4945
4946                                const selectedIds = Object.keys(selectedOptions);
4947                if (Object.values(this.optionConfig.salable || {}).length) {
4948                                        const selectedOptionIndexes = selectedIds.map(attrId => {
4949                        const optionValue = selectedOptions[attrId];
4950                        return this.optionConfig.salable[attrId] && this.optionConfig.salable[attrId][optionValue] || []
4951                    })
4952                                        return selectedOptionIndexes.reduce((acc, optionIndexes) => {
4953                        return acc.filter(index => optionIndexes.includes(index));
4954                    });
4955                } else {
4956                                        const productIndexes = this.optionConfig.index;
4957                    return Object.keys(productIndexes).filter(index => {
4958                                                for (const attrId of selectedIds) {
4959                            if (productIndexes[index][attrId] !== `${selectedOptions[attrId]}`) return false
4960                        }
4961                        return true
4962                    });
4963                }
4964            },
4965            findAttributeByOptionId(optionId) {
4966                for (const attributeId in this.optionConfig.attributes) {
4967                    const attributeOptions = this.optionConfig.attributes[attributeId].options || [];
4968                    if (attributeOptions.find(option => option.id === optionId)) {
4969                        return attributeId;
4970                    }
4971                }
4972            },
4973            getAllowedAttributeOptions(attributeId) {
4974                return this.allowedAttributeOptions[attributeId] || []
4975            },
4976            getAllAttributeOptions(attributeId) {
4977                return (
4978                    this.optionConfig.attributes[attributeId] &&
4979                    this.optionConfig.attributes[attributeId].options
4980                ) || []
4981            },
4982            getProductIdsForOption(option) {
4983                const attributeId = this.findAttributeByOptionId(option.id);
4984                const allOptions = this.optionConfig.attributes[attributeId];
4985                const opt = (allOptions && allOptions.options || []).find(o => o.id === option.id);
4986                return opt && opt.products
4987                    ? opt.products
4988                    : [];
4989            },
4990            findProductIdsForPartialSelection(optionSelection) {
4991                const candidateProducts = Object.values(optionSelection).reduce((candidates, optionId) => {
4992                    const newCandidates = this.getProductIdsForOption({id: optionId});
4993                    return candidates === null
4994                        ? newCandidates
4995                        : candidates.filter(productId => newCandidates.includes(productId));
4996                }, null);
4997                return candidateProducts || [];
4998            },
4999            findCheapestProductForPartialSelection(optionSelection) {
5000                const candidateProducts = this.findProductIdsForPartialSelection(optionSelection);
5001                return candidateProducts.reduce((cheapest, simpleIdx) => {
5002                    // in the first iteration we start with simpleIdx as the currently cheapest product
5003                    if (! this.optionConfig.optionPrices[cheapest]) return simpleIdx;
5004                    const knownCheapestPrice = this.optionConfig.optionPrices[cheapest].finalPrice.amount;
5005                    return knownCheapestPrice > this.optionConfig.optionPrices[simpleIdx].finalPrice.amount
5006                        ? simpleIdx
5007                        : cheapest;
5008                }, 0)
5009            },
5010            findProductIdToUseForOptionPrice(option) {
5011                // try to find a product for a complete selection
5012                const attributeId = this.findAttributeByOptionId(option.id);
5013                const optionSelection = Object.assign({}, this.selectedValues, {[attributeId]: option.id});
5014                const matchingSimpleIndex = this.calculateSimpleIndexForFullSelection(optionSelection);
5015                // if there is no complete selection, use the cheapest product for the option
5016                return matchingSimpleIndex || this.findCheapestProductForPartialSelection(optionSelection);
5017            },
5018            getAttributeOptionLabel(option) {
5019                const optionProduct = this.findProductIdToUseForOptionPrice(option);
5020
5021                if ((! optionProduct) || (optionProduct === this.productIndexForPrice)) {
5022                    return option.label;
5023                }
5024
5025                const currentPrice = this.getOptionPriceAdjustmentBasePrice();
5026
5027                if (this.optionConfig.optionPrices[optionProduct]) {
5028                    const optionPrice = this.optionConfig.optionPrices[optionProduct].finalPrice.amount;
5029                    if (optionPrice !== currentPrice){
5030                        return option.label + ' ' + hyva.formatPrice(optionPrice - currentPrice, true);
5031                    }
5032                }
5033                return option.label;
5034            },
5035            getOptionPriceAdjustmentBasePrice() {
5036                if (this.optionConfig.optionPrices[this.productIndexForPrice]) {
5037                    return this.optionConfig.optionPrices[this.productIndexForPrice].finalPrice.amount
5038                }
5039                return this.optionConfig.prices.finalPrice.amount; // default price if no option selection
5040            },
5041            clearOptionIfActive(optionId, value) {
5042                if (this.selectedValues[optionId] === value) {
5043                    this.blurLabel()
5044                    this.changeOption(optionId, '')
5045                }
5046            },
5047            removeAttrFromSelection(selectedValues, attributeId) {
5048                                attributeId = parseInt(attributeId);
5049                return selectedValues.reduce((newSelection, val, attr) => {
5050                    if (attr !== attributeId) {
5051                        newSelection[attr] = val;
5052                    }
5053                    return newSelection;
5054                }, []);
5055            },
5056            changeOption(attributeId, value) {
5057                if (value === '') {
5058                    this.selectedValues = this.removeAttrFromSelection(this.selectedValues, attributeId)
5059                } else if (value && this.getAllowedAttributeOptions(attributeId).find(option => option.id === value)) {
5060                                        this.selectedValues[attributeId] = value;
5061                }
5062                this.findSimpleIndex();
5063                this.findAllowedAttributeOptions();
5064                this.updatePrices();
5065                this.updateGallery();
5066
5067                const candidates = this.findProductIdsForPartialSelection(this.selectedValues);
5068
5069                                window.dispatchEvent(
5070                    new CustomEvent(
5071                        'configurable-selection-changed',
5072                        {
5073                            detail: {
5074                                productId: this.productId,
5075                                optionId: attributeId,
5076                                value: value,
5077                                productIndex: this.productIndex,
5078                                selectedValues: this.selectedValues,
5079                                candidates: candidates,
5080                                skuCandidates: Object.values(candidates).map(id =>
5080 this.optionConfig.sku?.[id] ?? null).filter(Boolean),
5081                            }
5082                        }
5083                    )
5084                );
5085            },
5086            calculateIsMinimalPrice() {
5087                return ! this.isFullSelection(this.selectedValues);
5088            },
5089            isFullSelection(selectedValues) {
5090                return Object.values(selectedValues).length === Object.keys(this.optionConfig.attributes).length;
5091            },
5092            updatePrices() {
5093                const value = this.optionConfig.optionPrices[this.productIndexForPrice] || this.optionConfig.prices;
5094                window.dispatchEvent(
5095                    new CustomEvent(
5096                        "update-prices-" + this.productId,
5097                        {
5098                            detail: Object.assign(
5099                                value,
5100                                { isMinimalPrice: this.calculateIsMinimalPrice() }
5101                            )
5102                        }
5103                    )
5104                );
5105            },
5106            updateGallery () {
5107                if (this.productIndex) {
5108                    const images = this.optionConfig.images[this.productIndex];
5109                    images && window.dispatchEvent(new CustomEvent(
5110                        "update-gallery",
5111                        { detail: this.sortImagesByPosition(images) }
5112                    ));
5113                } else {
5114                    window.dispatchEvent(new Event("reset-gallery"));
5115                }
5116            },
5117            sortImagesByPosition(images) {
5118                return images.sort((x, y) => {
5119                    return x.position === y.position ? 0 : (parseInt(x.position) > parseInt(y.position) ? 1 : -1)
5120                });
5121            },
5122            onGetCartData(data) {
5123                            },
5124            preselectCartItems(data) {
5125                // pre-select options based on cart data for current (quote) itemId
5126                const cart = data && data.cart;
5127                if (cart && cart.items) {
5128                    const cartItem = cart.items.find((item) => {
5129                        return (
5130                            item.item_id === this.itemId
5131                            && item.product_id === this.productId
5132                        )
5133                    });
5134                    if (cartItem && cartItem.options && cartItem.options.length) {
5135                        cartItem.options.map(option => {
5136                            this.changeOption(option.option_id, option.option_value);
5137                        })
5138                    }
5139                }
5140            },
5141            preselectQuerystringItems() {
5142                // pre-select option like ?size=167
5143                const urlQueryParams = new URLSearchParams(window.location.search.replace('?',''));
5144                this.preselectItemsBasedOnLocation(attribute => urlQueryParams.get(attribute.code));
5145            },
5146            preselectLocationHashItems() {
5147                // pre-select option like #144=167
5148                const urlHashParams = new URLSearchParams(window.location.hash.replace('#',''));
5149                this.preselectItemsBasedOnLocation(attribute => urlHashParams.get(attribute.id));
5150            },
5151            preselectItemsBasedOnLocation(getLocationValue) {
5152                Object.values(this.optionConfig.attributes).map(attribute => {
5153                    const v = getLocationValue(attribute);
5154                    v && this.changeOption(attribute.id, v)
5155                });
5156            }
5157        }
5158    }
5159</script>
5159<script>
5160    function initSwatchOptions(swatchConfig) {
5161        return {
5162            swatchConfig,
5163            getAttributeSwatchData(attributeId) {
5164                const swatchConfig = Object.assign({}, this.swatchConfig[attributeId]);
5165                swatchConfig['details'] = JSON.parse(swatchConfig['additional_data']);
5166
5167                return swatchConfig;
5168            },
5169            mapSwatchTypeNumberToTypeCode(typeNumber) {
5170                switch ("" + typeNumber) {
5171                    case "1":
5172                        return "color"
5173                    case "2":
5174                        return "image"
5175                    case "3":
5176                        return "empty"
5177                    case "0":
5178                    default:
5179                        return "text"
5180                }
5181            },
5182            getTypeOfFirstOption(attributeId) {
5183                for (const optionId in this.swatchConfig[attributeId]) {
5184                    const option = this.swatchConfig[attributeId][optionId];
5185                    if (typeof option.type !== 'undefined') {
5186                        return this.mapSwatchTypeNumberToTypeCode(option.type);
5187                    }
5188                }
5189            },
5190            getVisualSwatchType(attributeId, targetOptionId) {
5191                // If a type configuration is present for the given option id, use it
5192                const config = this.swatchConfig[attributeId];
5193                if (config[targetOptionId] && typeof config[targetOptionId].type !== 'undefined') {
5194                    return this.mapSwatchTypeNumberToTypeCode(config[targetOptionId].type);
5195                }
5196
5197                // Otherwise - if no config is present for the target option - use the type of the first option
5198                // with a type property from the attribute, thus assuming its the same type as the target option.
5199                // (This edge case condition can occur on single swatch products if some options are not salable)
5200                return this.getTypeOfFirstOption(attributeId);
5201            },
5202            getSwatchType(attributeId, optionId) {
5203                // Deserialize the attribute details the first time they are used
5204                if (this.swatchConfig[attributeId] && ! this.swatchConfig[attributeId].details) {
5205                    this.swatchConfig[attributeId] = this.getAttributeSwatchData(attributeId);
5206                }
5207                const type =  this.swatchConfig[attributeId] &&
5208                    this.swatchConfig[attributeId].details &&
5209                    this.swatchConfig[attributeId].details.swatch_input_type ||
5210                    "empty";
5211                return type === 'visual' ? this.getVisualSwatchType(attributeId, optionId) : type;
5212            },
5213            isTextSwatch(attributeId, optionId) {
5214                return this.getSwatchType(attributeId, optionId) === 'text';
5215            },
5216            isVisualSwatch(attributeId, optionId) {
5217                const type = this.getSwatchType(attributeId, optionId);
5218
5219                return ['image', 'color'].includes(type);
5220            },
5221            getSwatchBackgroundStyle(attributeId, optionId) {
5222                const config = this.getSwatchConfig(attributeId, optionId);
5223                const type = this.getSwatchType(attributeId, optionId);
5224
5225                if (type === "color") {
5226                        return 'background-color:' + config.value;
5227                } else if (type === "image") {
5228                        return "background: #fff url('" + config.value + "') no-repeat center";
5229                } else {
5230                    return '';
5231                }
5232            },
5233            getSwatchText(attributeId, optionId) {
5234                const config = this.getSwatchConfig(attributeId, optionId);
5235                return config.label || config.value || this.getOptionLabelFromOptionConfig(attributeId, optionId);
5236            },
5237            getOptionLabelFromOptionConfig(attributeId, optionId) {
5238                // Fallback if no value is present in swatchConfig data
5239                // Reference issue https://gitlab.hyva.io/hyva-themes/magento2-default-theme/-/issues/190
5240                const option = this.getAllAttributeOptions(attributeId).filter(option => option.id === optionId);
5241                return option && option[0] && option[0].label ||'';
5242            },
5243            getSwatchConfig(attributeId, optionId) {
5244                return this.swatchConfig[attributeId] && this.swatchConfig[attributeId][optionId]
5245                    ? this.swatchConfig[attributeId][optionId]
5246                    : false;
5247            },
5248            activeTooltipItem: false,
5249            tooltipPositionElement: false,
5250            isTooltipVisible() {
5251                return this.activeTooltipItem &&
5252                    this.getSwatchConfig(
5253                        this.activeTooltipItem.attribute,
5254                        this.activeTooltipItem.item
5255                    );
5256            },
5257            isFirstItemCol() {
5258                return this.activeTooltipItem.index === 0;
5259            },
5260            getTooltipImageStyle(attributeId, optionId) {
5261                const config = this.getSwatchConfig(attributeId, optionId);
5262                const type = this.getSwatchType(attributeId, optionId);
5263
5264                if (type === "color") {
5265                    return 'background-color:' + config.value + '; width: 110px; height: 90px;';
5266                } else if (type === "image") {
5267                    return "background: #ffffff url('" + config.thumb +
5268                        "') center center no-repeat; width: 110px; height: 90px;";
5269                } else {
5270                    return 'display:none';
5271                }
5272            },
5273            getTooltipPosition() {
5274                return this.tooltipPositionElement ?
5275                    `top: ${this.tooltipPositionElement.offsetTop}px;` +
5276                    `left: ${
5277                        this.tooltipPositionElement.offsetLeft - (
5278                            this.tooltipPositionElement.closest('.snap') &&
5279                            this.tooltipPositionElement.closest('.snap').scrollLeft ||
5280                            0
5281                        )
5282                    }px;` : ''
5283            },
5284            getTooltipLabel() {
5285                return this.getSwatchConfig(this.activeTooltipItem.attribute, this.activeTooltipItem.item).label
5286            },
5287            focusedLabel: false,
5288            focusLabel(optionId) {
5289                this.focusedLabel = optionId;
5290            },
5291            blurLabel() {
5292                this.focusedLabel = false;
5293            }
5294        }
5295    }
5296</script>
5296<script nonce="NXM3aDNrNzgxOXZ1cmU2YmNoZjNkZjRndG9wcDhlb2M=">
5297
5298	(() => 
5299	{
5300		const { fetch: originalFetch } = window;
5301
5302		window.fetch = async (...args) => 
5303		{
5304		    let [resource, config ] = args;
5305
5306		    let targetUrl = (resource instanceof Request) ? resource.url : resource.toString();
5307
5308		    const response = await originalFetch(resource, config);
5309
5310		    const json = () => response.clone().json().then((data) => 
5311            {
5312                switch (true)
5313                {
5314                	case -1 !== targetUrl.indexOf('removeItem'):
5315
5316                    	if (data.hasOwnProperty('dataLayer') && 'undefined' !== typeof dataLayer)
5317                		{
5318                			AEC.Cookie.remove(data.dataLayer).push(dataLayer);
5319                		}
5320            		
5321                    	break;
5322
5323                	case -1 !== targetUrl.indexOf('graphql'):
5324
5325						if (!AEC?.Checkout?.data?.payload) 
5326						{
5327						 	break;
5328						}
5329
5330                    	if (data.hasOwnProperty('data') && data.data.hasOwnProperty('setPaymentMethodOnCart') && 'undefined' !== typeof dataLayer)
5331                    	{
5332                        	let method = data.data.setPaymentMethodOnCart.cart.selected_payment_method.title;
5333
5334                        	((payload, method) => 
5335                        	{
5336                        		payload['payment_type'] = method;
5337
5338                        		dataLayer.push({ ecommerce: null });
5339                        		dataLayer.push(
5340                               	{
5341                                   	event: 'add_payment_info',
5342                                   	ecommerce: payload
5343                                });
5344                            	
5345                            })(AEC.Checkout.data.payload, method);
5346                    	}
5347
5348                    	if (data.hasOwnProperty('data') && data.data.hasOwnProperty('cart') && 'undefined' !== typeof dataLayer)
5349                    	{
5350                        	let methods = [];
5351                        	
5352                        	data.data.cart.shipping_addresses.forEach(address => 
5353                        	{
5354                            	methods.push(address.selected_shipping_method);
5355                            });
5356
5357                            if (methods.length)
5358                            {
5359                                methods.forEach(method => 
5360                                {
5361                                	((payload, method) => 
5362                                	{
5363                                		payload['shipping_tier'] = method.carrier_code;
5364
5365                                		dataLayer.push({ ecommerce: null });
5366                                		dataLayer.push(
5367                                       	{
5368                                           	event: 'add_shipping_info',
5369                                           	ecommerce: payload
5370                                        });
5371                                    	
5372                                    })(AEC.Checkout.data.payload.ecommerce, method);
5373                                });
5374                            }
5375                    	}
5376
5377                    	if (data.hasOwnProperty('data') && data.data.hasOwnProperty('setShippingMethodsOnCart') && 'undefined' !== typeof dataLayer)
5378                    	{
5379                        	let methods = [];
5380                        	
5381                        	data.data.setShippingMethodsOnCart.cart.shipping_addresses.forEach(address => 
5382                        	{
5383                            	methods.push(address.selected_shipping_method);
5384                            });
5385
5386                            if (methods.length)
5387                            {
5388                                methods.forEach(method => 
5389                                {
5390                                	((payload, method) => 
5391                                	{
5392                                		payload['shipping_tier'] = method.carrier_code;
5393
5394                                		dataLayer.push({ ecommerce: null });
5395                                		dataLayer.push(
5396                                       	{
5397                                           	event: 'add_shipping_info',
5398                                           	ecommerce: payload
5399                                        });
5400                                    	
5401                                    })(AEC.Checkout.data.payload.ecommerce, method);
5402                                });
5403                            }
5404                    	}
5405            		
5406                    	break;
5407                }
5408                
5409                return data;
5410            });
5411
5412		  response.json = json;
5413		  
5414		  return response;
5415		};
5416
5417		
5418		/**
5419		 * Custom variants
5420		 */
5421		AEC.EventDispatcher.on('ec.variants', variants => 
5422		{
5423			if (!variants.length)
5424			{
5425				[...document.querySelectorAll('[name^="super_attribute"')].forEac
5425h(input => 
5426				{
5427					if (input.parentNode.classList.contains('border-primary'))
5428					{
5429						var name = input.getAttribute('name'), id = name.substring(name.indexOf('[') + 1, name.lastIndexOf(']'));
5430						
5431						Object.entries(AEC.SUPER).forEach(([key, attribute]) => 
5432						{
5433							if (attribute.id == id)
5434							{
5435								attribute.options.forEach(option => 
5436								{
5437									if (option.value_index == input.value)
5438									{
5439										variants.push(
5440										{
5441											id: 	id,
5442											option: option.value_index,
5443											text: 	option.label
5444										});
5445									}
5446								});
5447							}
5448						});
5449					}
5450				});
5451			}
5452		});
5453		
5454		window.addEventListener('add-to-cart', event => 
5455		{
5456			let element = [...document.querySelectorAll('[data-event=add_to_cart]')].filter(node => 
5457			{
5458				return node.dataset.id === event.detail.product_sku;
5459			});
5460
5461			if (element)
5462			{
5463				AEC.add(element[0], dataLayer);
5464			}
5465		});
5466
5467		window.addEventListener('cart-data-updated', event => 
5468		{
5469			dataLayer.push(
5470			{
5471				event: 'update_cart',
5472				payload: event.detail.cart
5473			});
5474		});
5475
5476		window.addEventListener('checkout:payment:method-activate', event => 
5477		{
5478			((payload, method) => 
5479			{
5480				document.querySelectorAll('label[for="payment-method-' + method + '"]').forEach(label => 
5481				{
5482					let title = label.textContent.trim(), method_code = event.detail.method;
5483
5484					(title => 
5485					{
5486						payload['payment_type'] = title;
5487
5488						dataLayer.push({ ecommerce: null });
5489						dataLayer.push(
5490						{
5491							event: 'add_payment_info',
5492							ecommerce: payload
5493						});
5494						
5495					})(title);
5496
5497
5498				});
5499
5500			})(AEC.Checkout.data.payload, event.detail.method);
5501		});
5502
5503		window.addEventListener('checkout:payment:method-activate', event => 
5504		{
5505			((payload, method) => 
5506			{
5507				document.querySelectorAll('label[for="payment-method-' + method + '"]').forEach(label => 
5508				{
5509					let title = label.textContent.trim(), method_code = event.detail.method;
5510
5511					(title => 
5512					{
5513						payload['payment_type'] = title;
5514
5515						dataLayer.push({ ecommerce: null });
5516						dataLayer.push(
5517						{
5518							event: 'add_payment_info',
5519							ecommerce: payload
5520						});
5521						
5522					})(title);
5523
5524
5525				});
5526
5527			})(AEC.Checkout.data.payload, event.detail.method);
5528		});
5529
5530		window.addEventListener('checkout:shipping:method-activate', event => 
5531		{
5532			((payload, method) => 
5533			{
5534				(title => 
5535				{
5536					payload['shipping_tier'] = title;
5537
5538					dataLayer.push({ ecommerce: null });
5539					dataLayer.push(
5540					{
5541						event: 'add_shipping_info',
5542						ecommerce: payload
5543					});
5544					
5545				})(method);
5546
5547			})(AEC.Checkout.data.payload, event.detail.method);
5548		});
5549
5550		window.addEventListener('load', event => 
5551		{
5552			let observer_payment = new MutationObserver(function(mutations) 
5553			{
5554			    mutations.forEach(mutationRecord => 
5555			    {
5556			        if (mutationRecord.target.classList.contains('active'))
5557			        {
5558			        	((payload, method) => 
5559                    	{
5560                    		payload['event'] = 'add_payment_info';
5561                    		payload['payment_type'] = method;
5562
5563                    		dataLayer.push({ ecommerce: null });
5564                    		dataLayer.push(payload);
5565                        	
5566                        })(AEC.Checkout.data.payload, mutationRecord.target.id);
5567			        }
5568			    })
5569			});
5570
5571			let observer_shipping = new MutationObserver(function(mutations) 
5572			{
5573			    mutations.forEach(mutationRecord => 
5574			    {
5575			        if (mutationRecord.target.classList.contains('active'))
5576			        {
5577			        	((payload, method) => 
5578                    	{
5579                        	payload['event'] = 'add_shipping_info';
5580                    		payload['shipping_tier'] = method;
5581
5582                    		dataLayer.push({ ecommerce: null });
5583                    		dataLayer.push(payload);
5584                        	
5585                        })(AEC.Checkout.data.payload, mutationRecord.target.id);
5586			        }
5587			    })
5588				});
5589
5590			document.querySelectorAll("ol[id=payment-method-list] li").forEach(target => 
5591			{
5592				observer_payment.observe(target, 
5593				{
5594					 attributes:true,
5595					 attributeFilter:['style', 'class']
5596				});
5597			});
5598
5599			document.querySelectorAll("ol[id=shipping-method-list] li").forEach(target => 
5600			{
5601				observer_shipping.observe(target, 
5602				{
5603					 attributes:true,
5604					 attributeFilter:['style', 'class']
5605				});
5606			});
5607		});
5608		
5609	})();</script>
5609<script type="text/json" id="default-section-data">
5610    {"messages":[],"customer":[],"compare-products":[],"last-ordered-items":[],"cart":[],"directory-data":{"AT":{"name":"Oostenrijk","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":"Voralberg"},"95":{"code":"WI","name":"Wien"}}},"BE":{"name":"Belgi\u00eb","regions":{"913":{"code":"VAN","name":"Antwerpen"},"914":{"code":"WBR","name":"Brabant wallon"},"915":{"code":"BRU","name":"Brussels-Capital Region"},"916":{"code":"WHT","name":"Hainaut"},"918":{"code":"WLG","name":"Li\u00e8ge"},"917":{"code":"VLI","name":"Limburg"},"919":{"code":"WLX","name":"Luxembourg"},"920":{"code":"WNA","name":"Namur"},"921":{"code":"VOV","name":"Oost-Vlaanderen"},"922":{"code":"VBR","name":"Vlaams-Brabant"},"923":{"code":"VWV","name":"West-Vlaanderen"}}},"CH":{"name":"Zwitserland","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"}}},"DE":{"name":"Duitsland","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"}}},"FR":{"name":"Frankrijk","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"},"743":{"code":"GP","name":"Guadeloupe"},"744":{"code":"GF","name":"Guyane"},"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"}
5610,"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"},"747":{"code":"RE","name":"La R\u00e9union"},"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"},"745":{"code":"MQ","name":"Martinique"},"235":{"code":"53","name":"Mayenne"},"746":{"code":"YT","name":"Mayotte"},"236":{"code":"54","name":"Meurthe-et-Moselle"},"237":{"code":"55","name":"Meuse"},"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"},"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"}}},"NL":{"name":"Nederland"},"data_id":1791185164},"loggedAsCustomer":[],"captcha":[],"persistent":[],"review":[],"wishlist":{"items":[]},"hyva_checkout":[],"recently_viewed_product":[],"recently_compared_product":[],"product_data_storage":[]}</script>
5610<script>
5611    window.rumv = window.rumv || function() { (window.rumv.q = window.rumv.q || []).push(arguments) };
5612    (function(rum, vi,si,on) {
5613        var s = JSON.parse( sessionStorage.getItem('rumv') || '{"pageviews":0}' ); s.pageviews++;
5614        if ( s.urls && s.regex && ( s.page = eval('('+s.regex+')')( s.urls, vi.location.pathname ) ) && !s.page.type ) {
5615            return sessionStorage.setItem('rumv', JSON.stringify( s ) );
5616        }
5617
5618        vi.rumv.storage = s;
5619        var head = si.querySelector('head'), js = si.createElement('script');
5620        js.src = 'https://d5yoctgpv4cpx.cloudfront.net/'+rum+'/v4-'+vi.location.hostname+'.js';
5621        head.appendChild(js);
5622    })( 'RUM\u002DB0723E5AFA', window, document, 'voetbalshirtskoning.nl' );</script>
5622</div>
5622<script type="text/x-magento-init">{"*":
5623            {"Magento_Persistent/js/remember-me-config": {
5624            "config": {"persistenceConfig":{"isRememberMeCheckboxVisible":true,"isRememberMeCheckboxChecked":true}}
5625            }}}</script>
5625</body>
5626</html>

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.