1<!doctype html> 2<html lang="en"> 3<head > 4 <meta charset="utf-8"/>
4<script type="text/javascript">(window.NREUM||(NREUM={})).init={privacy:{cookies_enabled:true},ajax:{deny_list:["bam.nr-data.net"]},session_trace:{sampling_rate:0.0,mode:"FIXED_RATE",enabled:true,error_sampling_rate:0.0},distributed_tracing:{enabled:true}};(window.NREUM||(NREUM={})).loader_config={agentID:"250829665",accountID:"2513310",trustKey:"1322840",xpid:"VgMGUlVSCBACVVNXAAIEU1Y=",licenseKey:"389bb90676",applicationID:"212573352",browserID:"250829665"};;/*! For license information please see nr-loader-spa-1.322.0.min.js.LICENSE.txt */ 5(()=>{var e={8122(e,t,r){"use strict";r.d(t,{a:()=>i});var n=r(944);function i(e,t){try{if(!e||"object"!=typeof e)return(0,n.R)(3);if(!t||"object"!=typeof t)return(0,n.R)(4);const r=Object.create(Object.getPrototypeOf(t),Object.getOwnPropertyDescriptors(t)),s=0===Object.keys(r).length?e:r;for(let a in s)if(void 0!==e[a])try{if(null===e[a]){r[a]=null;continue}Array.isArray(e[a])&&Array.isArray(t[a])?r[a]=Array.from(new Set([...e[a],...t[a]])):e[a]instanceof Map||e[a]instanceof Set||e[a]instanceof Date||e[a]instanceof RegExp?r[a]=e[a]:"object"==typeof e[a]&&null!==t[a]&&"object"==typeof t[a]?r[a]=i(e[a],t[a]):r[a]=e[a]}catch(e){r[a]||(0,n.R)(1,e)}return r}catch(e){(0,n.R)(2,e)}}},2555(e,t,r){"use strict";r.d(t,{f:()=>a});var n=r(384),i=r(8122);const s={beacon:n.NT.beacon,errorBeacon:n.NT.errorBeacon,licenseKey:void 0,applicationID:void 0,sa:void 0,queueTime:void 0,applicationTime:void 0,ttGuid:void 0,user:void 0,account:void 0,product:void 0,extra:void 0,jsAttributes:{},userAttributes:void 0,atts:void 0,transactionName:void 0,tNamePlain:void 0};function a(e){try{return!!e.licenseKey&&!!e.errorBeacon&&!!e.applicationID}catch(e){return!1}}r.d(t,["D",0,e=>(0,i.a)(e,s)])},7699(e,t,r){"use strict";var n=r(860);const i={[n.K7.logging]:!0,[n.K7.genericEvents]:!0,[n.K7.jserrors]:!0,[n.K7.ajax]:!0};r.d(t,["It",0,1e6,"KC",0,i,"qh",0,"SESSION_ERROR"])},9324(e,t,r){"use strict";r.d(t,["A",0,"@newrelic/rrweb","x",0,"1.322.0"])},981(e,t,r){"use strict";r.d(t,["R",0,{AJAX:"AjaxRequest",PA:"PageAction",UA:"UserAction",BP:"BrowserPerformance",WS:"WebSocket",SPV:"SecurityPolicyViolation",JSE:"JavaScriptError",LOG:"Log",PVE:"PageView",PVT:"PageViewTiming",SR:"SessionReplay",ST:"SessionTrace",BI:"BrowserInteraction"}])},9752(e,t,r){"use strict";const n="newrelic-iframe-",i=n+"timing-update",s=n+"api",a=n+"api-response",o=n+"vitals-update",c=n+"ajax";r.d(t,["$8",0,o,"Gi",0,a,"KU",0,c,"Pl",0,n,"cS",0,s,"cr",0,i])},6154(e,t,r){"use strict";var n=r(1863);const i="undefined"!=typeof window&&!!window.document,s="undefined"!=typeof WorkerGlobalScope&&("undefined"!=typeof self&&self instanceof WorkerGlobalScope&&self.navigator instanceof WorkerNavigator||"undefined"!=typeof globalThis&&globalThis instanceof WorkerGlobalScope&&globalThis.navigator instanceof WorkerNavigator),a=i?window:"undefined"!=typeof WorkerGlobalScope&&("undefined"!=typeof self&&self instanceof WorkerGlobalScope&&self||"undefined"!=typeof globalThis&&globalThis instanceof WorkerGlobalScope&&globalThis),o=Boolean("hidden"===a?.document?.visibilityState),c=""+a?.location,d=/iPad|iPhone|iPod/.test(a.navigator?.userAgent),u=d&&"undefined"==typeof SharedWorker,l=(()=>{const e=a.navigator?.userAgent?.match(/Firefox[/\s](\d+\.\d+)/);return Array.isArray(e)&&e.length>=2?+e[1]:0})(),f=Date.now()-(0,n.t)();r.d(t,["OF",0,d,"RI",0,i,"WN",0,f,"bv",0,s,"gm",0,a,"lR",0,l,"m",0,c,"mw",0,o,"sb",0,u,"zk",0,()=>{const e=a?.performance?.getEntriesByType?.("navigation")?.[0];if(e&&e.responseStart>0&&e.responseStart<a.performance.now())return e}])},7295(e,t,r){"use strict";r.d(t,{Xv:()=>a,gX:()=>i,iW:()=>s});var n=[];function i(e){if(!e||s(e))return!1;if(0===n.length)return!0;if("*"===n[0].hostname)return!1;for(var t=0;t<n.length;t++){var r=n[t];if(r.hostname.test(e.hostname)&&r.pathname.test(e.pathname))return!1}return!0}function s(e){return void 0===e.hostname}function a(e){if(n=[],e&&e.length)for(var t=0;t<e.length;t++){let r=e[t];if(!r)continue;if("*"===r)return void(n=[{hostname:"*"}]);0===r.indexOf("http://")?r=r.substring(7):0===r.indexOf("https://")&&(r=r.substring(8));const i=r.indexOf("/");let s,a;i>0?(s=r.substring(0,i),a=r.substring(i)):(s=r,a="*");let[c]=s.split(":");n.push({hostname:o(c),pathname:o(a,!0)})}}function o(e,t=!1){const r=e.replace(/[.+?^${}()|[\]\\]/g,e=>"\\"+e).replace(/\*/g,".*?");return new RegExp((t?"^":"")+r+"$")}},3241(e,t,r){"use strict";r.d(t,{W:()=>i});var n=r(6154);function i(e={}){try{n.gm.dispatchEvent(new CustomEvent("newrelic",{detail:e}))}catch(e){}}},1687(e,t,r){"use strict";r.d(t,{Ak:()=>o,Ze:()=>d,x3:()=>c});var n=r(3241),i=r(3606),s=r(860),a=r(2646);function o(e,t){if(!e)return;const r={staged:!1,priority:s.P3[t]||0};
5e.runtime.drainRegistry.get(t)||e.runtime.drainRegistry.set(t,r)}function c(e,t){if(!e)return;const r=e.runtime.drainRegistry;r&&(r.get(t)&&r.delete(t),l(e,t,!1),r.size&&u(e))}function d(e,t="feature",r=!1){if(e){if(!e.runtime.drainRegistry.get(t)||r)return l(e,t);e.runtime.drainRegistry.get(t).staged=!0,u(e)}}function u(e){if(!e)return;const t=Array.from(e.runtime.drainRegistry);t.every(([e,t])=>t.staged)&&(t.sort((e,t)=>e[1].priority-t[1].priority),t.forEach(([t])=>{e.runtime.drainRegistry.delete(t),l(e,t)}))}function l(e,t,r=!0){if(!e)return;const s=e.ee,o=i.i.handlers;if(s&&!s.aborted&&s.backlog&&o){if((0,n.W)({type:"lifecycle",name:"drain",feature:t}),r){const e=s.backlog[t],r=o[t];if(r){for(let t=0;e&&t<e.length;++t)f(e[t],r);Object.entries(r).forEach(([e,t])=>{Object.values(t||{}).forEach(t=>{t[0]?.on&&t[0].context()instanceof a.y&&!t[0].listeners(e).includes(t[1])&&t[0].on(e,t[1])})})}}s.isolatedBacklog||delete o[t],s.backlog[t]=null,s.emit("drain-"+t,[])}}function f(e,t){var r=e[1];Object.values(t[r]||{}).forEach(t=>{var r=e[0];if(t[0]===r){var n=t[1],i=e[3],s=e[2];n.apply(i,s)}})}},7836(e,t,r){"use strict";var n=r(384),i=r(8990),s=r(2646),a=r(5607);const o="nr@context:".concat(a.W),c=function e(t,r){var n={},a={},u={},l=!1;try{l=16===r.length&&d.initializedAgents?.[r]?.runtime.isolatedBacklog}catch(e){}var f={on:p,addEventListener:p,removeEventListener:function(e,t){var r=n[e];if(!r)return;for(var i=0;i<r.length;i++)r[i]===t&&r.splice(i,1)},emit:function(e,r,n,i,s){!1!==s&&(s=!0);if(c.aborted&&!i)return;t&&s&&t.emit(e,r,n);var o=h(n);g(e).forEach(e=>{e.apply(o,r)});var d=v()[a[e]];d&&d.push([f,e,r,o]);return o},get:m,listeners:g,context:h,buffer:function(e,t){const r=v();if(t=t||"feature",f.aborted)return;Object.entries(e||{}).forEach(([e,n])=>{a[n]=t,t in r||(r[t]=[])})},abort:function(){f._aborted=!0,Object.keys(f.backlog).forEach(e=>{delete f.backlog[e]})},isBuffering:function(e){return!!v()[a[e]]},debugId:r,backlog:l?{}:t&&"object"==typeof t.backlog?t.backlog:{},isolatedBacklog:l};return Object.defineProperty(f,"aborted",{get:()=>{let e=f._aborted||!1;return e||(t&&(e=t.aborted),e)}}),f;function h(e){return e&&e instanceof s.y?e:e?(0,i.I)(e,o,()=>new s.y(o)):new s.y(o)}function p(e,t){n[e]=g(e).concat(t)}function g(e){return n[e]||[]}function m(t){return u[t]=u[t]||e(f,t)}function v(){return f.backlog}}(void 0,"globalEE"),d=(0,n.Zm)();d.ee||(d.ee=c),r.d(t,["P",0,o,"ee",0,c])},2646(e,t,r){"use strict";r.d(t,{y:()=>n});class n{constructor(e){this.contextId=e}}},9908(e,t,r){"use strict";r.d(t,{d:()=>n,p:()=>i});var n=r(7836).ee.get("handle");function i(e,t,r,i,s){s?(s.buffer([e],i),s.emit(e,t,r)):(n.buffer([e],i),n.emit(e,t,r))}},3606(e,t,r){"use strict";r.d(t,{i:()=>s});var n=r(9908);s.on=a;var i=s.handlers={};function s(e,t,r,s){a(s||n.d,i,e,t,r)}function a(e,t,r,i,s){s||(s="feature"),e||(e=n.d);var a=t[s]=t[s]||{};(a[r]=a[r]||[]).push([e,i])}},3878(e,t,r){"use strict";function n(e,t){return{capture:e,passive:!1,signal:t}}function i(e,t,r=!1,i){window.addEventListener(e,t,n(r,i))}function s(e,t,r=!1,i){document.addEventListener(e,t,n(r,i))}r.d(t,{DD:()=>s,jT:()=>n,sp:()=>i})},5607(e,t,r){"use strict";const n=(0,r(9566).bz)();r.d(t,["W",0,n])},9566(e,t,r){"use strict";r.d(t,{LA:()=>a,ZF:()=>o,bz:()=>s,el:()=>c});var n=r(6154);function i(e,t){return e?15&e[t]:16*Math.random()|0}function s(){const e=n.gm?.crypto||n.gm?.msCrypto;let t,r=0;return e&&e.getRandomValues&&(t=e.getRandomValues(new Uint8Array(30))),"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".split("").map(e=>"x"===e?i(t,r++).toString(16):"y"===e?(3&i()|8).toString(16):e).join("")}function a(e){const t=n.gm?.crypto||n.gm?.msCrypto;let r,s=0;t&&t.getRandomValues&&(r=t.getRandomValues(new Uint8Array(e)));const a=[];for(var o=0;o<e;o++)a.push(i(r,s++).toString(16));return a.join("")}function o(){return a(16)}function c(){return a(32)}},2614(e,t,r){"use strict";r.d(t,["BB",0,18e5,"Wt",0,"NRBA_SESSION::","g",0,{OFF:0,FULL:1,ERROR:2},"iL",0,{SAME_TAB:"same-tab",CROSS_TAB:"cross-tab"},"tS",0,{STARTED:"session-started",PAUSE:"session-pause",RESET:"session-reset",RESUME:"session-resume",UPDATE:"session-update"},"wk",0,144e5])},733(e,t,r){"use strict";function n(e,t){return function(e){let t=2166136261;for(let r=0;r<e.length;r++)t^=e.charCodeAt(r),t=Math.imul(t,16777619);return(t>>>0).toString(16).padStart(8,"0")}("".concat(String(e),":").concat(String(t)))}r.d(t,{Y:()=>n})},1863(e,t,r){"use strict";function n(){return Math.floor(performance.now())}r.d(t,{t:()=>n})},9119(e,t,r){"use strict";r.d(t,{L:()=>s});var n=/([^?#]*)[^#]*(#[^?]*|$).*/,i=/([^?#]*)().*/;function s(e,t){return e?e.replace(t?n:i,"$1$2"):e}},7485(e,t,r){"use strict";r.d(t,{D:()=>i});var n=r(6154);function i(e){if(0===(e||"").indexOf("data:"))return{protocol:"data"};try{const t=new URL(e,location.href),r={port:t.port,hostname:t.hostname,pathname:t.pathname,search:t.search,protocol:t.protocol.slice(0,t.protocol.indexOf(":")),sameOrigin:t.protocol===n.gm?.location?.protocol&&t.host===n.gm?.location?.host};return r.port&&""!==r.port||("http:"===t.protocol&&(r.port="80"),"https:"===t.protocol&&(r.port="443")),r.pathname&&""!==r.pathname?r.pathname.startsWith("/")||(r.pathname="/".concat(r.pathname)):r.pathname="/",r}catch(e){return{}}}},7866(e,t,r){"use strict";r.d(t,["Nc",0,/^\s*at Function code \(Function code:\d+:\d+\)\s*/i,"cn",0,/^\s*(?:([^@]*)(?:\(.*?\))?@)?((?:file|http|https|chrome|safari-extension).*?):(\d+)(?::(\d+))?\s*$/i,"fL",0,/^\s*at .+ \(eval at \S+ \((?:(?:file|http|https):[^)]+)?\)(?:, [^:]*:\d+:\d+)?\)$/i,"h3",0,/function (.+?)\s*\(/,"hB",0,/^\s*at (?:((?:\[object object\])?(?:[^(]*\([^)]*\))*[^()]*(?: \[as \S+\])?) )?\(?((?:file|http|https|chrome-extension):.*?)?:(\d+)(?::(\d+))?\)?\s*$/i])},944(e,t,r){"use strict";r.d(t,{R:()=>i});var n=r(3241);function i(e,t){"function"==typeof console.debug&&(console.debug("New Relic Warning: https://github.com/newrelic/newrelic-browser-agent/blob/main/docs/warning-codes.md#".concat(e),t),(0,n.W)({drained:null,type:"data",name:"warn",feature:"warn",data:{code:e,secondary:t}}))}},8990(e,t,r){"use strict";r.d(t,{I:()=>i});var n=Object.prototype.hasOwnProperty;function i(e,t,r){if(n.call(e,t))return e[t];var i=r();if(Object.defineProperty&&Object.keys)try{return Object.defineProperty(e,t,{value:i,writable:!0,enumerable:!1}),i}catch(e){}return e[t]=i,i}},6389(e,t,r){"use strict";function n(e,t=500,r={}){const n=r?.leading||!1;let i;return(...r)=>{n&&void 0===i&&(e.apply(this,r),i=setTimeout(()=>{i=clearTimeout(i)},t)),n||(clearTimeout(i),i=setTimeout(()=>{e.apply(this,r)},t))}}function i(e){let t=!1;return(...r)=>{t||(t=!0,e.apply(this,r))}}r.d(t,{J:()=>i,s:()=>n})},1910(e,t,r){"use strict";r.d(t,{i:()=>s});var n=r(944);const i=new Map;function s(...e){return e.every(e=>{if(i.has(e))return i.get(e);const t="function"==typeof e?e.toString():"",r=t.includes("[native code]"),s=t.includes("nrWrapper");return r||s||(0,n.R)(64,e?.name||t),i.set(e,r),r})}},3304(e,t,r){"use strict";r.d(t,{A:()=>i});var n=r(7836);function i(e){try{return JSON.stringify(e,(()=>{const e=new WeakSet;return(t,r)=>{if("object"==typeof r&&null!==r){if(e.has(r))return;e.add(r)}return r}})())??""}catch(e){try{n.ee.emit("internal-error",[e])}catch(e){}return""}}},9232(e,t,r){"use strict";r.d(t,["f",0,{MFE:"MFE",BA:"BA"}])},7560(e,t,r){"use strict";r.d(t,{N:()=>a,j:()=>c});var n=r(9119),i=r(944);const s=(0,r(6389).J)(e=>(0,i.R)(80,e));function a(e){if(!Array.isArray(e?.assets)||!e.assets.length)return;
5const t=e.assets.map(o).filter(Boolean);return t.length?{assets:t,scripts:t.filter(e=>e.isScript)}:void 0}function o(e){if(!e||"object"!=typeof e)return;const{matcher:t,type:r}=e;let i="string"==typeof t&&t.endsWith(".js");return void 0!==r&&(!function(e){return"script"===e||"asset"===e}(r)?s(r):i=function(e){return"script"===e}(r)),a=t,"[object RegExp]"===Object.prototype.toString.call(a)?{pattern:t,test:e=>(t.lastIndex=0,t.test((0,n.L)(e))),isScript:i}:"string"==typeof t&&t.length>0?{pattern:t,test:e=>(0,n.L)(e).includes(t),isScript:i}:void s(t);var a}function c(e,t,{scriptsOnly:r=!1}={}){if(!e||!t)return!1;return(r?e.scripts:e.assets).some(e=>e.test(t))}},5718(e,t,r){"use strict";r.d(t,{xo:()=>T,AZ:()=>v,cI:()=>g,Qr:()=>A,QL:()=>y});var n=r(6154),i=r(1863),s=r(9119),a=r(7866);class o{dom=new c;performance=new c;constructor(e){this.url=e,this.claimedBy=new Set}get script(){const e=Math.max(this.dom.start,this.performance.end);return{start:e,end:Math.max(this.dom.end,this.performance.end,e)}}}class c{start=0;end=0;value=void 0}function d(e=()=>{},t){return{get:()=>void 0!==t?t:e(),set:e=>{t=e}}}let u;try{u=v(y())[0]}catch(e){u=v(e)[0]}const l=new Map;let f=[];const h=new WeakMap;function p(e){let t=h.get(e);return t||(t={weighedAssetUrls:new Set,recordManifestScriptWindow:(t,r)=>{t&&(e.scriptStart=e.scriptStart>0?Math.min(e.scriptStart,t):t),r&&(e.scriptEnd=e.scriptEnd>0?Math.max(e.scriptEnd,r):r)}},h.set(e,t)),t}function g(e){return l.get(e)}function m(e){const t=g(e);
5if(t)return t;const r=new o(e);if(l.set(e,r),l.size>1e3){const e=l.keys().next().value;l.delete(e)}return r}if(n.gm.MutationObserver&&n.gm.document){new MutationObserver(e=>{e.forEach(e=>{e.addedNodes.forEach(e=>{if("SCRIPT"===e.nodeName&&e.src){const t=m((0,s.L)(e.src));t.dom.start=(0,i.t)(),t.dom.value=e;const r=()=>{t.dom.end=(0,i.t)()};["load","error"].forEach(t=>e.addEventListener(t,r,{once:!0}))}})})}).observe(n.gm.document,{childList:!0,subtree:!0})}if(n.gm.PerformanceObserver?.supportedEntryTypes.includes("resource")){new PerformanceObserver(e=>{e.getEntries().forEach(e=>{if((e=>"script"===e.initiatorType||["link","fetch"].includes(e.initiatorType)&&(0,s.L)(e.name).endsWith(".js"))(e)){const t=m((0,s.L)(e.name));t.performance.start=Math.floor(e.startTime),t.performance.end=Math.floor(e.responseEnd),t.performance.value=e}if(!f.length)return;const t=[];f.forEach(({test:r,addedAt:n},s)=>{(r(e)||(0,i.t)()-n>1e4)&&t.push(s)}),f=f.filter((e,r)=>!t.includes(r))})}).observe({type:"resource",buffered:!0})}function v(e){if(!e||"string"!=typeof e)return[];const t=new Set,r=e.split("\n");for(const e of r){const r=e.match(a.cn)||e.match(a.hB)||e.match(a.fL);if(r&&r[2])t.add((0,s.L)(r[2]));else{const r=e.match(/\(([^)]+\.js):\d+:\d+\)/)||e.match(/^\s+at\s+([^\s(]+\.js):\d+:\d+/);r&&r[1]&&t.add((0,s.L)(r[1]))}}return[...t]}function y(){let e;try{const t=Error.stackTraceLimit;Error.stackTraceLimit=50,e=(new Error).stack,Error.stackTraceLimit=t}catch(t){e=(new Error).stack}return e}function b(e,t){return(0,s.L)(e.name)===t}function E(e,t){e.fetchStart=Math.floor(t.startTime),e.fetchEnd=Math.floor(t.responseEnd),e.asset=t.name,e.type=t.initiatorType,w(e,t)}function w(e,t){const r=(0,s.L)(t.name),{weighedAssetUrls:n}=p(e);n.has(r)||(n.add(r),e.totalWeight=(e.totalWeight||0)+(t.transferSize||0),"blocking"===t.renderBlockingStatus?e.renderBlocking=!0:"non-blocking"===t.renderBlockingStatus&&!0!==e.renderBlocking&&(e.renderBlocking=!1))}function R(e,t,r,n,i){if(w(e,t),"scripts"!==i&&"all"!==i)return;if("all"===i||r.isScript){const r=Math.floor(t.startTime),n=Math.floor(t.responseEnd);e.fetchStart=e.fetchStart>0?Math.min(e.fetchStart,r):r,e.fetchEnd=e.fetchEnd>0?Math.max(e.fetchEnd,n):n}if(r.isScript){const r=g((0,s.L)(t.name));if(r){const t=()=>{const{start:t,end:n}=r.script;p(e).recordManifestScriptWindow(t,n)};t(),!r.dom.end&&r.dom.value&&["load","error"].forEach(e=>r.dom.value.addEventListener(e,t,{once:!0}))}n.resolved||(e.asset=t.name,e.type=t.initiatorType,n.resolved=!0)}}function T(e,t){const r=t?.manifest;if(!r||!r.assets.length)return;const s={resolved:!1},a=new Set(r.assets);(n.gm.performance?.getEntriesByType("resource")||[]).forEach(r=>{const n=[...a].find(e=>e.test(r.name));n&&(R(e,r,n,s,t.timingMethod),a.delete(n))}),a.size&&function(e,t,r,s){n.gm.PerformanceObserver?.supportedEntryTypes?.includes("resource")&&f.push({addedAt:(0,i.t)(),test:n=>{const i=[...t].find(e=>e.test(n.name));return i&&(R(e,n,i,r,s),t.delete(i)),0===t.size}})}(e,a,s,t.timingMethod)}function A(e){const t=e?.id,r={registeredAt:(0,i.t)(),reportedAt:void 0,fetchStart:0,fetchEnd:0,scriptStart:0,scriptEnd:0,asset:void 0,type:"unknown",totalWeight:0,renderBlocking:void 0},a=y();if(!a)return r;const o=n.gm.performance?.getEntriesByType("navigation")?.[0]?.name||"";try{const e=v(a),c=(e.length>1?e.filter(e=>u!==e):e)[0];if(!c)return r;if(o.includes(c))return r.asset=(0,s.L)(o),r.type="inline",r;r.correlation=g(c);const l=r.correlation?.performance.value||n.gm.performance?.getEntriesByType("resource")?.find(e=>b(e,c));if(l)E(r,l);else{(function(e){if(!e||!n.gm.document)return!1;try{const t=n.gm.document.querySelectorAll('link[rel="preload"][as="script"]');for(const r of t)if((0,s.L)(r.href)===e)return!0}catch(e){}return!1})(c)&&(r.asset=c,r.type="preload"),function(e,t){n.gm.PerformanceObserver?.supportedEntryTypes?.includes("resource")&&f.push({addedAt:(0,i.t)(),test:r=>!!b(r,t)&&(E(e,r),!0)})}(r,c)}const h=r.correlation,m=!!t&&!!h?.claimedBy.has(t);h&&t&&h.claimedBy.add(t);const y=()=>{const e=h?.script.start;if(!m||!e)return!1;return r.registeredAt-e>1e4};let w=0,R=0;p(r).recordManifestScriptWindow=(e,t)=>{e&&(w=w>0?Math.min(w,e):e),t&&(R=R>0?Math.max(R,t):t)},Object.defineProperty(r,"scriptStart",d(()=>{const e=y()?r.registeredAt:h?.script.start??r.fetchEnd;return w>0?Math.min(e,w):e})),Object.defineProperty(r,"scriptEnd",d(()=>{const e=y()?r.registeredAt:h?.script.end??r.registeredAt;return R>0?Math.max(e,R):e}))}catch(e){}return r}},5732(e,t,r){"use strict";r.d(t,{$5:()=>m,B5:()=>g,K6:()=>u,M$:()=>
5o,Ms:()=>d,NG:()=>c,Ux:()=>h,YA:()=>p,yx:()=>l});var n=r(5718),i=r(7560),s=r(9119),a=r(9232);function o(e){return e?.type===a.f.MFE}function c(e,t){if(!y(e,t))return;const r=t.runtime.registeredEntities;return r?.find(t=>t.metadata.target.iframeInterfaceId===e)}function d(e,t){if(!y(e,t))return[];const r=t.runtime.registeredEntities;return r?.filter(t=>String(t.metadata.target.id)===String(e)).map(e=>e.metadata.target)||[]}function u(e,t){if(!y(e,t))return[];const r=t.runtime.registeredEntities,n=(0,s.L)(e),a=r?.filter(t=>{const r=t.metadata.target?.manifest;return r?(0,i.j)(r,e,{scriptsOnly:!1}):!!t.metadata.timings?.asset&&(0,s.L)(t.metadata.timings.asset)===n});return f(a).map(e=>e.metadata.target)}function l(e,t){if(!y(e,t))return[];const r=t.runtime.registeredEntities,n=r?.filter(t=>{const r=t.metadata.target?.manifest;return r?(0,i.j)(r,e,{scriptsOnly:!0}):!!t.metadata.timings?.asset?.endsWith(e)});return f(n).map(e=>e.metadata.target)}function f(e){if(!e?.length)return e||[];const t=new Map,r=[];for(const n of e){const e=n.metadata?.timings?.asset;if(!e){r.push(n);continue}const i="".concat(e,"::").concat(n.metadata?.target?.id),s=t.get(i);if(s){if(s.metadata.target?.blocked&&!n.metadata.target?.blocked){const e=r.indexOf(s);-1!==e&&(r[e]=n),t.set(i,n)}}else t.set(i,n),r.push(n)}return r}function h(e,t){return v(t)?o(e)?e.attributes:t.agentRef.runtime.v2Target.attributes:{}}function p(e,t){return g(e,t)?{"child.id":e.id,"child.type":e.type,...h(void 0,t)}:{}}function g(e,t){return o(e)&&!!v(t)&&t.agentRef.init.api.register.duplicate_data_to_container}function m(e){if(!e?.runtime)return[];if(!y(!0,e)||!e.runtime.registeredEntities?.length)return[e.runtime.v2Target];const t=[];try{var r=(0,n.AZ)((0,n.QL)());let i=r.length-1;for(;r[i];)t.push(...l(r[i--],e))}catch(e){}const i=function(e){const t=new Set,r=[];for(const n of e){const e=n?.instance;t.has(e)||(t.add(e),r.push(n))}return r}(t);return i.length||i.push(e.runtime.v2Target),i}function v(e){return 2===e?.harvestEndpointVersion}function y(e,t){return!!e&&!!t?.init.api.register.enabled}},5289(e,t,r){"use strict";r.d(t,{GG:()=>a,Qr:()=>c,sB:()=>o});var n=r(3878),i=r(6389);function s(){return"undefined"==typeof document||"complete"===document.readyState}function a(e,t){if(s())return e();const r=(0,i.J)(e),a=setInterval(()=>{s()&&(clearInterval(a),r())},500);(0,n.sp)("load",r,t)}function o(e){if(s())return e();(0,n.DD)("DOMContentLoaded",e)}function c(e){if(s())return e();(0,n.sp)("popstate",e)}},384(e,t,r){"use strict";r.d(t,{Zm:()=>c,bQ:()=>u,dV:()=>d,pV:()=>l});var n=r(6154),i=r(1863),s=r(944),a=r(1910);const o={beacon:"bam.nr-data.net",errorBeacon:"bam.nr-data.net"};function c(){return n.gm.NREUM||(n.gm.NREUM={}),void 0===n.gm.newrelic&&(n.gm.newrelic=n.gm.NREUM),n.gm.NREUM}function d(){let e=c();return e.o||(e.o={ST:n.gm.setTimeout,SI:n.gm.setImmediate||n.gm.setInterval,CT:n.gm.clearTimeout,XHR:n.gm.XMLHttpRequest,REQ:n.gm.Request,EV:n.gm.Event,PR:n.gm.Promise,MO:n.gm.MutationObserver,FETCH:n.gm.fetch,WS:n.gm.WebSocket},(0,a.i)(...Object.values(e.o))),e}function u(e,t){let r=c();r.initializedAgents??={},t.initializedAt={ms:(0,i.t)(),date:new Date},r.initializedAgents[e]=t,2===Object.keys(r.initializedAgents).length&&(0,s.R)(69)}function l(){return function(){let e=c();const t=e.info||{};e.info={beacon:o.beacon,errorBeacon:o.errorBeacon,...t}}(),function(){let e=c();const t=e.init||{};e.init={...t}}(),d(),function(){let e=c();const t=e.loader_config||{};e.loader_config={...t}}(),c()}r.d(t,["NT",0,o])},2843(e,t,r){"use strict";r.d(t,{G:()=>s,u:()=>i});var n=r(3878);function i(e,t=!1,r,i){(0,n.DD)("visibilitychange",function(){if(t)return void("hidden"===document.visibilityState&&e());e(document.visibilityState)},r,i)}function s(e,t,r){(0,n.sp)("pagehide",e,t,r)}},8139(e,t,r){"use strict";r.d(t,{u:()=>f});var n=r(7836),i=r(3434),s=r(8990),a=r(6154);const o={},c=a.gm.XMLHttpRequest,d="addEventListener",u="removeEventListener",l="nr@wrapped:".concat(n.P);function f(e,t){var r=function(e){return(e||n.ee).get("events")}(e);if(o[r.debugId]++)return r;o[r.debugId]=1;var f=(0,i.YM)(r,!0,t);function p(e){f.inPlace(e,[d,u],"-",g)}function g(e,t){return e[1]}return"getPrototypeOf"in Object&&(a.RI&&h(document,p),c&&h(c.prototype,p),h(a.gm,p)),r.on(d+"-start",function(e,t){var r=e[1];if(null!==r&&("function"==typeof r||"object"==typeof r)&&"newrelic"!==e[0]){var n=(0,s.I)(r,l,function(){var e={object:function(){if("function"!=typeof r.handleEvent)return;return r.handleEvent.apply(r,arguments)},function:r}[typeof r];return e?f(e,"fn-",null,e.name||"anonymous"):r});this.wrapped=e[1]=n}}),r.on(u+"-start",function(e){e[1]=this.wrapped||e[1]}),r}function h(e,t,...r){let n=e;for(;"object"==typeof n&&!Object.prototype.hasOwnProperty.call(n,d);)n=Object.getPrototypeOf(n);n&&t(n,...r)}},3434(e,t,r){"use strict";r.d(t,{YM:()=>d});var n=r(7836),i=r(5607),s=r(5732);const a="nr@original:".concat(i.W);var o=Object.prototype.hasOwnProperty,c=!1;function d(e,t,r){return e||(e=n.ee),i.inPlace=function(e,t,r,n,s,a){r||(r="");const o="-"===r.charAt(0);for(let c=0;c<t.length;c++){const d=t[c],u=e[d];l(u)||(e[d]=i(u,o?d+r:r,n,d,s,a))}},i.flag=a,i;function i(t,n,i,c,f,h){return l(t)?t:(n||(n=""),nrWrapper[a]=t,function(e,t,r){if(Object.defineProperty&&Object.keys)try{return Object.keys(e).forEach(function(r){Object.defineProperty(t,r,{get:function(){return e[r]},set:function(t){return e[r]=t,t}})}),t}catch(e){u([e],r)}for(var n in e)o.call(e,n)&&(t[n]=e[n])}
5(t,nrWrapper,e),nrWrapper);function nrWrapper(){var a,o,l,p;let g,m;try{o=this,a=[...arguments],m=h?(0,s.$5)(r):[r?.runtime?.v2Target],l="function"==typeof i?i(a,o):i||{}}catch(t){u([t,"",[a,o,c],l],e)}d(n+"start",[a,o,c,m],l,f);const v=performance.now();let y;try{return p=t.apply(o,a),y=performance.now(),p}catch(e){throw y=performance.now(),d(n+"err",[a,o,e,m],l,f),g=e,g}finally{const e=y-v,t={start:v,end:y,duration:e,isLongTask:e>=50,methodName:c,thrownError:g};t.isLongTask&&d("long-task",[t,o,m],l,f),d(n+"end",[a,o,p,m],l,f)}}}function d(r,n,i,s){if(!c||t){var a=c;c=!0;try{e.emit(r,n,i,t,s)}catch(t){u([t,r,n,i],e)}c=a}}}function u(e,t){t||(t=n.ee);try{t.emit("internal-error",e)}catch(e){}}function l(e){return!(e&&"function"==typeof e&&e.apply&&!e[a])}r.d(t,["Jt",0,a])},9300(e,t,r){"use strict";const n=r(860).K7.ajax;r.d(t,["TZ",0,n,"f5",0,"ajaxRequest.id","mo",0,{NONE:"none",FAILURES:"failures",ALL:"all"}])},3333(e,t,r){"use strict";var n=r(981);const i=r(860).K7.genericEvents,s=[n.R.PA,n.R.UA,n.R.BP];r.d(t,["$v",0,{RESOURCES:"experimental.resources",REGISTER:"register"},"TZ",0,i,"Zp",0,["auxclick","click","copy","keydown","paste","scrollend"],"kd",0,s,"qN",0,["focus","blur"]])},6774(e,t,r){"use strict";const n=r(860).K7.jserrors;r.d(t,["T",0,n])},993(e,t,r){"use strict";const n=r(860).K7.logging;r.d(t,["A$",0,{OFF:0,ERROR:1,WARN:2,INFO:3,DEBUG:4,TRACE:5},"TZ",0,n,"p_",0,{ERROR:"ERROR",WARN:"WARN",INFO:"INFO",DEBUG:"DEBUG",TRACE:"TRACE"}])},3785(e,t,r){"use strict";r.d(t,{R:()=>c,b:()=>d});var n=r(9908),i=r(1863),s=r(860),a=r(3969),o=r(993);function c(e,t,r={},c=o.p_.INFO,d=!0,u,l=(0,i.t)()){(0,n.p)(a.xV,["API/logging/".concat(c.toLowerCase(),"/called")],void 0,s.K7.metrics,e),(0,n.p)("log",[l,t,r,c,d,u],void 0,s.K7.logging,e)}function d(e){return"string"==typeof e&&Object.values(o.p_).some(t=>t===e.toUpperCase().trim())}},3969(e,t,r){"use strict";const n=r(860).K7.metrics;r.d(t,["TZ",0,n,"XG",0,"storeEventMetrics","xV",0,"storeSupportabilityMetrics"])},6630(e,t,r){"use strict";const n=r(860).K7.pageViewEvent;r.d(t,["T",0,n])},782(e,t,r){"use strict";const n=r(860).K7.pageViewTiming;r.d(t,["T",0,n])},6344(e,t,r){"use strict";var n=r(2614);const i=r(860).K7.sessionReplay,s={[n.g.ERROR]:15e3,[n.g.FULL]:3e5,[n.g.OFF]:0}
5;r.d(t,["Qb",0,{API:"api",RESUME:"resume",SWITCH_TO_FULL:"switchToFull",INITIALIZE:"initialize",PRELOAD:"preload"},"TZ",0,i,"Vh",0,"errorDuringReplay","_s",0,{DomContentLoaded:0,Load:1,FullSnapshot:2,IncrementalSnapshot:3,Meta:4,Custom:5},"bc",0,{RESET:{message:"Session was reset",sm:"Reset"},IMPORT:{message:"Recorder failed to import",sm:"Import"},TOO_MANY:{message:"429: Too Many Requests",sm:"Too-Many"},TOO_BIG:{message:"Payload was too large",sm:"Too-Big"},CROSS_TAB:{message:"Session Entity was set to OFF on another tab",sm:"Cross-Tab"},ENTITLEMENTS:{message:"Session Replay is not allowed and will not be started",sm:"Entitlement"}},"yP",0,s])},5270(e,t,r){"use strict";r.d(t,{Aw:()=>a,SR:()=>s,rF:()=>o});var n=r(384),i=r(7767);function s(e){return!!(0,n.dV)().o.MO&&(0,i.V)(e)&&!0===e?.session_trace.enabled}function a(e){return!0===e?.session_replay.preload&&s(e)}function o(e,t){try{if("string"==typeof t?.type&&"password"===t.type.toLowerCase())return"*".repeat(e?.length||0);if(void 0!==t?.dataset?.nrUnmask||t?.classList?.contains("nr-unmask"))return e}catch(e){}return"string"==typeof e?e.replace(/[\S]/g,"*"):"*".repeat(e?.length||0)}},3738(e,t,r){"use strict";const n=r(860).K7.sessionTrace,i="-start",s="-end",a="fn"+i,o="fn"+s;r.d(t,["He",0,"bstResource","Kp",0,s,"Lc",0,o,"Rz",0,"pushState","TZ",0,n,"bD",0,"resource","bc",0,{CROSS_TAB:{message:"Session Entity was set to OFF on another tab"},ENTITLEMENTS:{message:"Session Trace is not allowed and will not be started"},RESET:{message:"Session was reset"},SESSION_CHANGED:{message:"Session identifier changed unexpectedly"}},"d3",0,i,"uP",0,a])},3962(e,t,r){"use strict";const n=r(860).K7.softNav;r.d(t,["O2",0,{INITIAL_PAGE_LOAD:"",ROUTE_CHANGE:1,UNSPECIFIED:2},"OV",0,"popstate","Qu",0,{INTERACTION:1,AJAX:2,CUSTOM_END:3,CUSTOM_TRACER:4},"TZ",0,n,"ih",0,{IP:"in progress",PF:"pending finish",FIN:"finished",CAN:"cancelled"},"pP",0,"initialPageLoad","tC",0,["click","keydown","submit"]])},4234(e,t,r){"use strict";r.d(t,{W:()=>i});var n=r(1687);class i{constructor(e,t){this.agentRef=e,this.ee=e?.ee,this.featureName=t,this.blocked=!1}deregisterDrain(){(0,n.x3)(this.agentRef,this.featureName)}}},7767(e,t,r){"use strict";var n=r(6154);r.d(t,["V",0,e=>n.RI&&!0===e?.privacy.cookies_enabled])},8362(e,t,r){"use strict";r.d(t,{d:()=>s});var n=r(9566),i=r(1741);class s extends i.W{agentIdentifier=(0,n.LA)(16)}},1741(e,t,r){"use strict";r.d(t,{W:()=>s});var n=r(944),i=r(4261);class s{#e(e,...t){if(this[e]!==s.prototype[e])return this[e](...t);(0,n.R)(35,e)}addPageAction(e,t){return this.#e(i.hG,e,t)}register(e){return this.#e(i.eY,e)}recordCustomEvent(e,t){return this.#e(i.fF,e,t)}setPageViewName(e,t){return this.#e(i.Fw,e,t)}setCustomAttribute(e,t,r){return this.#e(i.cD,e,t,r)}noticeError(e,t){return this.#e(i.o5,e,t)}setUserId(e,t=!1){return this.#e(i.Dl,e,t)}setApplicationVersion(e){return this.#e(i.nb,e)}setErrorHandler(e){return this.#e(i.bt,e)}addRelease(e,t){return this.#e(i.k6,e,t)}log(e,t){return this.#e("log",e,t)}start(){return this.#e("start")}finished(e){return this.#e(i.BL,e)}recordReplay(){return this.#e(i.CH)}pauseReplay(){return this.#e(i.Tb)}addToTrace(e){return this.#e(i.U2,e)}setCurrentRouteName(e){return this.#e(i.PA,e)}interaction(e){return this.#e(i.dT,e)}wrapLogger(e,t,r){return this.#e(i.Wb,e,t,r)}measure(e,t){return this.#e(i.V1,e,t)}consent(e){return this.#e(i.Pv,e)}}},4261(e,t,r){"use strict";r.d(t,["BL",0,"finished","CH",0,"recordReplay","Dl",0,"setUserId","Fw",0,"setPageViewName","PA",0,"setCurrentRouteName","Pv",0,"consent","Tb",0,"pauseReplay","U2",0,"addToTrace","V1",0,"measure","Wb",0,"wrapLogger","bt",0,"setErrorHandler","cD",0,"setCustomAttribute","dT",0,"interaction","eY",0,"register","fF",0,"recordCustomEvent","hG",0,"addPageAction","hw",0,"api-ixn-","k6",0,"addRelease","nb",0,"setApplicationVersion","o5",0,"noticeError"])},1738(e,t,r){"use strict";r.d(t,{U:()=>l,Y:()=>u});var n=r(3241),i=r(9908),s=r(1863),a=r(944),o=r(3969),c=r(8362),d=r(860);function u(e,t,r,s){const u=s||r;!u||u[e]&&u[e]!==c.d.prototype[e]||(u[e]=function(){(0,i.p)(o.xV,["API/"+e+"/called"],void 0,d.K7.metrics,r.ee),(0,n.W)({drained:!!r.runtime?.activatedFeatures,type:"data",name:"api",feature:"api-"+e,data:{}});try{return t.apply(this,arguments)}catch(e){(0,a.R)(23,e)}})}function l(e,t,r,n,a){const o=e.info;null===r?delete o.jsAttributes[t]:o.jsAttributes[t]=r,(a||null===r)&&(0,i.p)("api-"+n,[(0,s.t)(),t,r],void 0,"session",e.ee)}},8374(e,t,r){r.nc=(()=>{try{return document?.currentScript?.nonce}catch(e){}return""})()},860(e,t,r){"use strict";const n="events",i="jserrors",s="browser/blobs",a="browser/logs",o={ajax:"ajax",genericEvents:"generic_events",jserrors:i,logging:"logging",metrics:"metrics",pageAction:"page_action",pageViewEvent:"page_view_event",pageViewTiming:"page_view_timing",sessionReplay:"session_replay",sessionTrace:"session_trace",softNav:"soft_navigations"},c={[o.pageViewEvent]:1,[o.pageViewTiming]:2,[o.metrics]:3,[o.jserrors]:4,[o.softNav]:5,[o.ajax]:6,[o.sessionTrace]:7,[o.sessionReplay]:8,[o.logging]:9,[o.genericEvents]:10},d={[o.pageViewEvent]:"rum",[o.pageViewTiming]:n,[o.ajax]:n,[o.softNav]:n,[o.metrics]:i,[o.jserrors]:i,[o.sessionTrace]:s,[o.sessionReplay]:s,[o.logging]:a,[o.genericEvents]:"ins"};r.d(t,["$J",0,d,"K7",0,o,"P3",0,c,"XX",0,i,"Yy",0,a,"df",0,s,"hg",0,"connect"])}};const t={};function r(n){const i=t[n];if(void 0!==i)return i.exports;const s=t[n]={exports:{}};return e[n](s,s.exports,r),s.exports}r.m=e,r.d=(e,t)=>{if(Array.isArray(t))for(var n=0;n<t.length;){var i=t[n++],s=t[n++];r.o(e,i)?0===s&&n++:0===s?Object.defineProperty(e,i,{enumerable:!0,value:t[n++]}):Object.defineProperty(e,i,{enumerable:!0,get:s})}else for(var i in t)r.o(t,i)&&!r.o(e,i)&&Object.defineProperty(e,i,{enumerable:!0,get:t[i]})},r.f={},r.e=e=>Promise.all(Object.keys(r.f).reduce((t,n)=>(r.f[n](e,t),t),[])),r.u=e=>({212:"nr-spa-compressor",238:"nr-spa-iframe-message-handler",249:"nr-spa-recorder",478:"nr-spa"}[e]+"-1.322.0.min.js"),r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),(()=>{const e={},t="NRBA-1.322.0.PROD:";r.l=(n,i,s,a)=>
5{if(e[n])return void e[n].push(i);let o,c;if(void 0!==s){const e=document.getElementsByTagName("script");for(var d=0;d<e.length;d++){const r=e[d];if(r.getAttribute("src")==n||r.getAttribute("data-webpack")==t+s){o=r;break}}}if(!o){c=!0;var u={478:"sha512-SARROoir04gFygxlr/+mTI+PyMeFL+epi1vnUA2G5mTQ7s3G44ItQBJKbOaIMdIE5OBzuaKhb4k5JYta0NICxg==",249:"sha512-6DKQo5WP7YlpzX6l9UfYkgGLGK2oITdoaYTcZtgl5Foa22NY63lED/0z1hBBLeD7qZCz/YdlY19/r8drlol1tg==",212:"sha512-CYxuvSpDx6ErqWJwAvpoHn54eY37YdMcFao/axOumlw3BsSL7yioOeB2LWViY/Njs818sQG10dSglUhYCMfLPw==",238:"sha512-mvbMILWa3ohYst+u6TLfNrmtY2swUIB3rbJFN/uzt3W62KhgvUVwB81UEZ1R0/it5bfrQ5EVz864pi/CAmucNQ=="};o=document.createElement("script"),o.charset="utf-8",r.nc&&o.setAttribute("nonce",r.nc),o.setAttribute("data-webpack",t+s),o.src=n,0!==o.src.indexOf(window.location.origin+"/")&&(o.crossOrigin="anonymous"),u[a]&&(o.integrity=u[a])}e[n]=[i];const l=(t,r)=>{o.onerror=o.onload=null,clearTimeout(f);const i=e[n];if(delete e[n],o.parentNode?.removeChild(o),i?.forEach(e=>e(r)),t)return t(r)},f=setTimeout(l.bind(null,void 0,{type:"timeout",target:o}),12e4);o.onerror=l.bind(null,o.onerror),o.onload=l.bind(null,o.onload),c&&document.head.appendChild(o)}})(),r.r=e=>{Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.p="https://js-agent.newrelic.com/",(()=>{const e={38:0,788:0};r.f.j=(t,n)=>{let i=r.o(e,t)?e[t]:void 0;if(0!==i)if(i)n.push(i[2]);else{const s=new Promise((r,n)=>i=e[t]=[r,n]);n.push(i[2]=s);const a=r.p+r.u(t),o=new Error,c=n=>{if(r.o(e,t)&&(i=e[t],0!==i&&(e[t]=void 0),i)){const e=n&&("load"===n.type?"missing":n.type),r=n&&n.target&&n.target.src;o.message="Loading chunk "+t+" failed: ("+e+": "+r+")",o.name="ChunkLoadError",o.type=e,o.request=r,i[1](o)}};r.l(a,c,"chunk-"+t,t)}};const t=(t,n)=>{let[i,s,a]=n;var o,c,d=0;if(i.some(t=>0!==e[t])){for(o in s)r.o(s,o)&&(r.m[o]=s[o]);if(a)a(r)}for(t&&t(n);d<i.length;d++)c=i[d],r.o(e,c)&&e[c]&&e[c][0](),e[c]=0},n=self["webpackChunk:NRBA-1.322.0.PROD"]=self["webpackChunk:NRBA-1.322.0.PROD"]||[];n.forEach(t.bind(null,0)),n.push=t.bind(null,n.push.bind(n))})(),(()=>{"use strict";r(8374);var e=r(8362),t=r(860);const n=Object.values(t.K7);var i=r(384),s=r(1741);var a=r(2555),o=r(3333),c=r(9300);const d=e=>{if(!e||"string"!=typeof e)return!1;try{document.createDocumentFragment().querySelector(e)}catch{return!1}return!0};var u=r(2614),l=r(944),f=r(8122);const h="[data-nr-mask]",p=e=>(0,f.a)(e,(()=>{const e={feature_flags:[],experimental:{register:!1,resources:!1,iframe_bridge:!1,iframe_domains:[]},mask_selector:"*",block_selector:"[data-nr-block]",mask_input_options:{color:!1,date:!1,"datetime-local":!1,email:!1,month:!1,number:!1,range:!1,search:!1,tel:!1,text:!1,time:!1,url:!1,week:!1,textarea:!1,select:!1,password:!0}};return{ajax:{deny_list:void 0,block_internal:!0,enabled:!0,autoStart:!0,capture_payloads:c.mo.NONE},api:{register:{get enabled(){return e.feature_flags.includes(o.$v.REGISTER)||e.experimental.register},set enabled(t){e.experimental.register=t},duplicate_data_to_container:!1,get allow_iframe_bridge(){return e.feature_flags.includes(o.$v.IFRAME_BRIDGE)||e.experimental.iframe_bridge},set allow_iframe_bridge(t){e.experimental.iframe_bridge=t},get iframe_domains(){return e.experimental.iframe_domains},set iframe_domains(t){Array.isArray(t)?e.experimental.iframe_domains=t:(0,l.R)(1,t)}}},browser_consent_mode:{enabled:!1},distributed_tracing:{enabled:void 0,exclude_newrelic_header:void 0,cors_use_newrelic_header:void 0,cors_use_tracecontext_headers:void 0,allowed_origins:void 0},get feature_flags(){return e.feature_flags},set feature_flags(t){e.feature_flags=t},generic_events:{enabled:!0,autoStart:!0},harvest:{interval:30},jserrors:{enabled:!0,autoStart:!0},logging:{enabled:!0,autoStart:!0},metrics:{enabled:!0,autoStart:!0},obfuscate:void 0,page_action:{enabled:!0},page_view_event:{enabled:!0,autoStart:!0},page_view_timing:{enabled:!0,autoStart:!0},performance:{capture_marks:!1,capture_measures:!1,capture_detail:!0,resources:{get enabled(){return e.feature_flags.includes(o.$v.RESOURCES)||e.experimental.resources},set enabled(t){e.experimental.resources=t},asset_types:[],first_party_domains:[],ignore_newrelic:!0}},privacy:{cookies_enabled:!0},proxy:{assets:void 0,beacon:void 0},session:{expiresMs:u.wk,inactiveMs:u.BB},session_replay:{autoStart:!0,enabled:!1,preload:!1,sampling_rate:10,error_sampling_rate:100,collect_fonts:!1,inl
5ine_images:!1,fix_stylesheets:!0,mask_all_inputs:!0,get mask_text_selector(){return e.mask_selector},set mask_text_selector(t){d(t)?e.mask_selector="".concat(t,",").concat(h):""===t||null===t?e.mask_selector=h:(0,l.R)(5,t)},get block_class(){return"nr-block"},get ignore_class(){return"nr-ignore"},get mask_text_class(){return"nr-mask"},get block_selector(){return e.block_selector},set block_selector(t){d(t)?e.block_selector+=",".concat(t):""!==t&&(0,l.R)(6,t)},get mask_input_options(){return e.mask_input_options},set mask_input_options(t){t&&"object"==typeof t?e.mask_input_options={...t,password:!0}:(0,l.R)(7,t)}},session_trace:{enabled:!0,autoStart:!0},soft_navigations:{enabled:!0,autoStart:!0},ssl:void 0,user_actions:{enabled:!0,elementAttributes:["id","className","tagName","type"]},web_sockets:{enabled:!1}}})());var g=r(6154),m=r(9324);let v=0;const y={buildEnv:"PROD",distMethod:"CDN",version:m.x,originTime:g.WN},b={consented:!1},E={activatedFeatures:void 0,appMetadata:{},configured:!1,get consented(){return this.session?.state?.consent||b.consented},set consented(e){b.consented=e},customTransaction:void 0,denyList:[],disabled:!1,drainRegistry:new Map,connector:void 0,harvester:void 0,v2Target:void 0,isolatedBacklog:!1,isRecording:!1,loaderType:void 0,maxBytes:3e4,obfuscator:void 0,onerror:void 0,ptid:void 0,releaseIds:{},session:void 0,timeKeeper:void 0,registeredEntities:[],jsAttributesMetadata:{bytes:0},get harvestCount(){return++v},listeningForIframeMessages:!1};var w=r(9232);var R=r(7836),T=r(3241);const A={accountID:void 0,trustKey:void 0,agentID:void 0,licenseKey:void 0,applicationID:void 0,xpid:void 0};var S=r(9908),x=r(9752);function O(e,t={},n,o){let{init:c,info:d,loader_config:u,runtime:l={},exposed:h=!0}=t;if(!d){const e=(0,i.pV)();c=e.init,d=e.info,u=e.loader_config}var m;e.init=p(c||{}),e.loader_config=(m=u||{},(0,f.a)(m,A)),d.jsAttributes??={},g.bv&&(d.jsAttributes.isWorker=!0),e.info=(0,a.D)(d);const v=e.init;e.runtime??=(e=>{const t=(0,f.a)(e,E),r=Object.keys(y).reduce((e,t)=>(e[t]={value:y[t],writable:!1,configurable:!0,enumerable:!0},e),{});return Object.defineProperties(t,r)})(l),e.runtime.v2Target??={type:w.f.BA,instance:e.agentIdentifier,get id(){return e.runtime.appMetadata?.agents?.[0]?.entityGuid},get attributes(){return{"entity.guid":this.id,appId:e.info.applicationID}}},v.proxy.assets&&(e=>{const t=e.startsWith("http");e+="/",r.p=t?e:"https://"+e})(v.proxy.assets),e.runtime.configured||(Object.defineProperty(e,"beacons",{get:()=>[e.info.beacon,e.info.errorBeacon,e.init.proxy.assets,e.init.proxy.beacon].filter(Boolean)}),Object.defineProperty(e.runtime,"denyList",{get:()=>[...e.init.ajax.deny_list||[],...e.init.ajax.block_internal?e.beacons:[]]}),e.runtime.ptid=e.agentIdentifier,function(e){const t=(0,i.pV)();Object.getOwnPropertyNames(s.W.prototype).forEach(r=>{const n=s.W.prototype[r];if("function"!=typeof n||"constructor"===n)return;let i=t[r];e[r]&&!1!==e.exposed&&"micro-agent"!==e.runtime?.loaderType&&(t[r]=(...t)=>{const n=e[r](...t);return i?i(...t):n})})}(e),e.runtime.loaderType=n,e.ee=R.ee.get(e.agentIdentifier),e.exposed=h,(0,T.W)({drained:!!e.runtime.activatedFeatures,type:"lifecycle",name:"initialize",feature:void 0,data:e.config}),e.init.api.register.allow_iframe_bridge&&g.gm.addEventListener("message",t=>{"string"==typeof t.data?.type&&t.data.type.startsWith(x.Pl)&&(0,S.p)("iframe-message",[t],void 0,"IFRAME",e.ee)}),e.runtime.configured=!0)}var _=r(1863),k=r(4261),N=r(1738);var L=r(1687),M=r(4234),P=r(5289),I=r(5270),j=r(7767),C=r(6389),D=r(7699);const B=new WeakSet,H=new WeakMap;class W extends M.W{constructor(e,t){super(e,t),this.abortHandler=void 0,this.featAggregate=void 0,this.loadedSuccessfully=void 0,this.onAggregateImported=new Promise(e=>{this.loadedSuccessfully=e}),this.deferred=Promise.resolve(),!1===e.init[this.featureName].autoStart?this.deferred=new Promise((t,r)=>{this.ee.on("manual-start-all",(0,C.J)(()=>{(0,L.Ak)(e,this.featureName),t()}))}):(0,L.Ak)(e,t)}importAggregator(e,t,n={}){if(this.featAggregate)return;const i=async()=>{if(await this.deferred,this.#t(e),!(0,a.f)(e.info))return(0,l.R)(43),e.ee.abort(),void this.loadedSuccessfully(!1);try{await async function(e,t,n){if(H.has(e))return H.get(e);const i=(async()=>
5{if((0,j.V)(e.init))try{const{setupAgentSession:t}=await r.e(478).then(r.bind(r,8766));t(e)}catch(e){(0,l.R)(20,e),t.emit("internal-error",[e]),(0,S.p)(D.qh,[e],void 0,n,t)}if(e.init.api.register.allow_iframe_bridge)try{const{setupIframeMFEMessageListener:t}=await r.e(238).then(r.bind(r,6417));t(e)}catch(e){(0,l.R)(23,e)}const[{Connector:i},{Harvester:s}]=await Promise.all([r.e(478).then(r.bind(r,6589)),r.e(478).then(r.bind(r,5237))]);e.runtime.connector=new i(e),e.runtime.harvester=new s(e);const a=Object.values(e.features).filter(t=>e.runtime.drainRegistry.has(t.featureName));Promise.all(a.map(e=>e.onAggregateImported)).then(()=>e.runtime.harvester.startTimer())})();H.set(e,i),await i}(e,this.ee,this.featureName)}catch(e){return(0,l.R)(79,e),this.ee.abort(),void this.loadedSuccessfully(!1)}try{if(!this.#r(this.featureName,e.runtime.session,e.init))return this.abortHandler?.(),(0,L.Ze)(this.agentRef,this.featureName),void this.loadedSuccessfully(!1);const{Aggregate:r}=await t();this.featAggregate=new r(e,n),e.runtime.harvester.initializedAggregates.push(this.featAggregate),this.loadedSuccessfully(!0)}catch(e){(0,l.R)(34,e),this.abortHandler?.(),(0,L.Ze)(this.agentRef,this.featureName,!0),this.loadedSuccessfully(!1)}};g.RI?(0,P.GG)(()=>i(),!0):i()}#r(e,r,n){if(this.blocked)return!1;switch(e){case t.K7.sessionReplay:return(0,I.SR)(n)&&!!r;case t.K7.sessionTrace:return!!r;default:return!0}}#t(e){if(!B.has(e)&&(B.add(e),!(0,a.f)(e.info))){const t=(0,i.pV)();let r={...t.info?.jsAttributes};try{r={...r,...e.info?.jsAttributes}}catch(e){}O(e,{...t,info:{...t.info,jsAttributes:r},runtime:e.runtime},e.runtime.loaderType)}}}var U=r(6630);class K extends W{static featureName=U.T;constructor(e){var t;super(e,U.T),this.setupInspectionEvents(),t=e,(0,N.Y)(k.Fw,function(e,r){"string"==typeof e&&("/"!==e.charAt(0)&&(e="/"+e),t.runtime.customTransaction=(r||"http://custom.transaction")+e,(0,S.p)("api-"+k.Fw,[(0,_.t)()],void 0,void 0,t.ee))},t),this.importAggregator(e,()=>e.init.feature_flags.includes("rum_v2")?r.e(478).then(r.bind(r,908)):r.e(478).then(r.bind(r,7927)))}setupInspectionEvents(){const e=(e,t)=>{e&&(0,T.W)({timeStamp:e.timeStamp,loaded:"complete"===e.target.readyState,type:"window",name:t,data:e.target.location+""})};(0,P.sB)(t=>{e(t,"DOMContentLoaded")}),(0,P.GG)(t=>{e(t,"load")}),(0,P.Qr)(t=>{e(t,"navigate")}),this.ee.on(u.tS.UPDATE,(e,t)=>{(0,T.W)({type:"lifecycle",name:"session",data:t})})}}class F extends e.d{constructor(e){var t;(super(),g.gm)?(this.features={},(0,i.bQ)(this.agentIdentifier,this),this.desiredFeatures=new Set(e.features||[]),this.desiredFeatures.add(K),O(this,e,e.loaderType||"agent"),t=this,(0,N.Y)(k.cD,function(e,r,n=!1){if("string"==typeof e){if(["string","number","boolean"].includes(typeof r)||null===r)return(0,N.U)(t,e,r,k.cD,n);(0,l.R)(40,typeof r)}else(0,l.R)(39,typeof e)},t),function(e){(0,N.Y)(k.Dl,function(t,r=!1){if("string"!=typeof t&&null!==t)return void(0,l.R)(41,typeof t);const n=e.info.jsAttributes["enduser.id"];r&&null!=n&&n!==t?(0,S.p)("api-setUserIdAndResetSession",[t],void 0,"session",e.ee):(0,N.U)(e,"enduser.id",t,k.Dl,!0)},e)}(this),function(e){(0,N.Y)(k.nb,function(t){if("string"==typeof t||null===t)return(0,N.U)(e,"application.version",t,k.nb,!1);(0,l.R)(42,typeof t)},e)}(this),function(e){(0,N.Y)("start",function(){e.ee.emit("manual-start-all")},e)}(this),function(e){(0,N.Y)(k.Pv,function(t=!0){if("boolean"==typeof t){if((0,S.p)("api-"+k.Pv,[t],void 0,"session",e.ee),e.runtime.consented=t,t){const t=e.features.page_view_event;t.onAggregateImported.then(e=>{const r=t.featAggregate;e&&!r.sentRum&&r.sendRum?.()})}}else(0,l.R)(65,typeof t)},e)}(this),this.run()):(0,l.R)(21)}get config(){return{info:this.info,init:this.init,loader_config:this.loader_config,runtime:this.runtime}}get api(){return this}run(){try{const e=function(e){const t={};return n.forEach(r=>{t[r]=!!e[r]?.enabled}),t}(this.init),r=[...this.desiredFeatures],i=this.init.feature_flags.includes("rum_v2");r.sort((e,r)=>t.P3[e.featureName]-t.P3[r.featureName]),r.forEach(r=>{if(!e[r.featureName]&&(i||r.featureName!==t.K7.pageViewEvent))return;const n=function(e){switch(e){case t.K7.ajax:return[t.K7.jserrors];case t.K7.sessionTrace:return[t.K7.ajax,t.K7.pageViewEvent];case t.K7.sessionReplay:return[t.K7.sessionTrace];case t.K7.pageViewTiming:return[t.K7.pageViewEvent];default:return[]}}(r.featureName).filter(e=>!(e in this.features));n.length>0&&(0,l.R)(36,{targetFeature:r.featureName,missingDependencies:n}),this.features[r.featureName]=new r(this)})}catch(e){(0,l.R)(22,e);for(const e in this.features)this.features[e].abortHandler?.();const t=(0,i.Zm)();delete t.initializedAgents[this.agentIdentifier]?.features,delete this.sharedAggregator;return t.ee.get(this.agentIdentifier).abort(),!1}}}var V=r(2843),z=r(782);class G extends W{static featureName=z.T;constructor(e){super(e,z.T),g.RI&&((0,V.u)(()=>(0,S.p)("docHidden",[(0,_.t)()],void 0,z.T,this.ee),!0),(0,V.G)(()=>(0,S.p)("winPagehide",[(0,_.t)()],void 0,z.T,this.ee)),this.importAggregator(e,()=>r.e(478).then(r.bind(r,9917))))}}var q=r(3969);class Y extends W{static featureName=q.TZ;constructor(e){super(e,q.TZ),this.importAggregator(e,()=>r.e(478).then(r.bind(r,6555)))}}var Z=r(6774),J=r(3878),X=r(3304);class Q{constructor(e,t,r,n,i){this.name="UncaughtError",this.message="string"==typeof e?e:(0,X.A)(e),this.sourceURL=t,this.line=r,this.column=n,this.__newrelic=i}}function ee(e){return ne(e)?e:new Q(void 0!==e?.message?e.message:e,e?.filename||e?.sourceURL,e?.lineno||e?.line,e?.colno||e?.col,e?.__newrelic,e?.cause)}function te(e){const t="Unhandled Promise Rejection: ";if(!e?.reason)return;if(ne(e.reason)){try{e.reason.message.startsWith(t)||(e.reason.message=t+e.reason.message)}catch(e){}return ee(e.reason)}const r=ee(e.reason);return(r.message||"").startsWith(t)||(r.message=t+r.message),r}function re(e){if(e.error instanceof SyntaxError&&!/:\d+$/.test(e.error.stack?.trim())){const t=new Q(e.message,e.filename,e.lineno,e.colno,e.error.__newrelic,e.cause);return t.name=SyntaxError.name,t}return ne(e.error)?e.error:ee(e)}function ne(e){return e instanceof Error&&!!e.stack}function ie(e,r,n,i,s=(0,_.t)()){"string"==typeof e&&(e=new Error(e)),(0,S.p)("err",[e,s,!1,r,n.runtime.isRecording,void 0,i],void 0,t.K7.jserrors,n.ee),(0,S.p)("uaErr",[],void 0,t.K7.genericEvents,n.ee)}var se=r(993),ae=r(3785);function oe(e,{customAttributes:t={},level:r=se.p_.INFO}={},n,i,s=(0,_.t)()){(0,ae.R)(n.ee,e,t,r,!1,i,s)}function ce(e,r,n,i,s=(0,_.t)()){(0,S.p)("api-"+k.hG,[s,e,r,i],void 0,t.K7.genericEvents,n.ee)}function de(e,r,n,i,s=(0,_.t)()){const{start:a,end:o,customAttributes:c}=r||{},d={customAttributes:c||{}};if("object"!=typeof d.customAttributes||"string"!=typeof e||0===e.length)return void(0,l.R)(57);const u=(e,t)=>
5null==e?t:"number"==typeof e?e:e instanceof PerformanceMark?e.startTime:Number.NaN;if(d.start=u(a,0),d.end=u(o,s),Number.isNaN(d.start)||Number.isNaN(d.end))(0,l.R)(57);else{if(d.duration=d.end-d.start,!(d.duration<0))return(0,S.p)("api-"+k.V1,[d,e,i],void 0,t.K7.genericEvents,n.ee),d;(0,l.R)(58)}}function ue(e,r={},n,i,s=(0,_.t)()){(0,S.p)("api-"+k.fF,[s,e,r,i],void 0,t.K7.genericEvents,n.ee)}var le=r(5718);const fe=(e,t)=>e?.nrMfeId===t.id&&(!e?.nrMfeObserved||e?.nrMfeObserved===t.instance),he=e=>{try{return g.gm.CSS.escape(e)}catch(t){return e}},pe=(e,t={})=>{const r=t.id,n=t.instance;if(!e||!r||!n)return!1;try{let r=1===e.nodeType?e:e.parentElement;for(;r?.tagName;){if(fe(r.dataset,t))return r.dataset.nrMfeObserved=n,!0;r=r.parentNode}}catch(e){}return!1},ge=(e,t)=>{const r=g.gm.document?.querySelectorAll('[data-nr-mfe-id="'.concat(he(e.id),'"]')),n=(Array.from(r)||[]).find(t=>fe(t.dataset,e));let i=!!n;i&&(n.dataset.nrMfeObserved??=e.instance);const s=new g.gm.MutationObserver(r=>{r.forEach(r=>{r.addedNodes.forEach(r=>{const n=1===r.nodeType?r:null;!i&&fe(n?.dataset,e)&&(s.disconnect(),s.observe(n,{childList:!0,subtree:!0}),i=!0,n.dataset.nrMfeObserved=e.instance),(e=>{try{return e?.textContent?.trim()||["img","video","canvas","svg"].includes(e?.nodeName?.toLowerCase())}catch(e){return!1}})(r)&&(i||pe(r,e))&&t(r,s)})})});return s.observe(n||g.gm.document,{childList:!0,subtree:!0}),s},me=(e,t,r)=>{try{const n=new g.gm.PerformanceObserver(e=>{e.getEntries().forEach(r)});return n.observe(t),e.push(n),n}catch(e){return null}};function ve(e,t){let r,n,i=!1;const s=e=>null==e?e:e-(t?.scriptStart||t?.registeredAt||0),a={fcp:{get value(){const e=s(r);return e>1e4?void 0:e},set value(e){i||(r=e)}},lcp:{get value(){if(void 0!==a.fcp.value)return s(n)},set value(e){i||(n=e)}},cls:{value:void 0},inp:{value:void 0},disconnect:()=>{}};if(!(e&&g.RI&&g.gm.MutationObserver&&g.gm.PerformanceObserver))return a;const o=[];setTimeout(()=>{r||a.disconnect()},1e4);const c=()=>{if(!i){if(null==r){const e=(0,_.t)();if(s(e)>1e4)return void a.disconnect();r=e}n??=(0,_.t)(),a.cls.value??=0}},d=ge(e,(e,t)=>{c(),t.disconnect()});o.push(d);let u=0,l=null;const f=new Set;try{l=new g.gm.ResizeObserver(e=>{i||e.forEach(e=>{try{const t=e.contentRect.width*e.contentRect.height;t>u&&(u=t,a.lcp.value=(0,_.t)()),l.unobserve(e.target)}catch(e){}})})}catch(e){}const h=ge(e,e=>{if(c(),l)try{const t=1===e.nodeType?e:e.parentElement;t&&!f.has(t)&&(f.add(t),"IMG"===t.tagName?t.complete?l.observe(t):t.addEventListener("load",()=>{l.observe(t)},{once:!0}):"VIDEO"===t.tagName?t.readyState>=2?l.observe(t):t.addEventListener("loadeddata",()=>{l.observe(t)},{once:!0}):l.observe(t))}catch(e){}});l&&o.push(l),o.push(h),me(o,{type:"layout-shift",buffered:!0},t=>{i||t.hadRecentInput||(t.sources||[]).some(r=>!!pe(r.node,e)&&(c(),a.cls.value+=t.value,!0))}),me(o,{type:"event",buffered:!0,durationThreshold:40},t=>{!i&&t.interactionId&&pe(t.target,e)&&(void 0===a.inp.value||t.duration>a.inp.value)&&(c(),a.inp.value=t.duration)});const p=["pointerdown","keydown"],m=()=>{p.forEach(e=>{g.gm.removeEventListener(e,v,{passive:!0})})};a.disconnect=()=>{i=!0,o.forEach(e=>{try{e?.disconnect()}catch(e){}}),m(),["visibilitychange","pagehide"].forEach(e=>{g.gm.removeEventListener(e,a.disconnect,{once:!0,passive:!0})})};const v=t=>{pe(t?.target,e)&&((()=>{try{h?.disconnect(),l?.disconnect()}catch(e){}})(),m())};p.forEach(e=>{g.gm.addEventListener(e,v,{passive:!0})}),["visibilitychange","pagehide"].forEach(e=>{g.gm.addEventListener(e,a.disconnect,{once:!0,passive:!0})});const y=g.gm.document?.querySelectorAll('[data-nr-mfe-id="'.concat(he(e.id),'"]'));return Array.from(y||[]).some(t=>fe(t.dataset,e))&&c(),a}var ye=r(9566),be=r(7560),Ee=r(9119);const we=["entry","scripts","all"],Re=["name","id","type"],Te=new Map([[ce,"addPageAction"],[oe,"log"],[de,"measure"],[ie,"noticeError"],[ue,"recordCustomEvent"]]),Ae={experimental:(0,C.J)(()=>(0,l.R)(54,"newrelic.register")),disabled:(0,C.J)(()=>(0,l.R)(55)),invalidTarget:(0,C.J)(e=>(0,l.R)(48,e)),deregistered:(0,C.J)(()=>(0,l.R)(68)),invalidTimingMethod:(0,C.J)(e=>(0,l.R)(80,e)),duplicateName:(0,C.J)(e=>(0,l.R)(81,e)),duplicateId:(0,C.J)(e=>(0,l.R)(82,e))};function Se(e){(0,N.Y)(k.eY,function(t){return xe(e,t)},e)}function xe(e,r){Ae.experimental(),r||={},r.instance=(0,ye.LA)(8),r.type=w.f.MFE,r.licenseKey||=e.info.licenseKey,r.blocked=!1,("object"!=typeof r.tags||null===r.tags||Array.isArray(r.tags))&&(r.tags={}),r.parent??={get id(){return e.runtime.appMetadata.agents?.[0].entityGuid},type:w.f.BA},r.manifest=(0,be.N)(r.manifest),void 0===r.timingMethod||we.includes(r.timingMethod)||(Ae.invali
5dTimingMethod(r.timingMethod),r.timingMethod=void 0);const n=(0,le.Qr)(r);r.manifest&&(0,le.xo)(n,r);const i=ve(r,n),s=(0,Ee.L)(""+location),a={};Object.prototype.hasOwnProperty.call(r,"attributes")||Object.defineProperty(r,"attributes",{get:()=>({...a,"source.id":r.id,"source.name":r.name,"source.type":r.type,"parent.type":r.parent?.type||w.f.BA,"parent.id":r.parent?.id})}),Object.entries(r.tags).forEach(([e,t])=>{Re.includes(e)||(a["source.".concat(e)]=t)});let o=()=>{};const c=e.runtime.registeredEntities,d=e=>{r.blocked=!0,o=e};function u(e){return"string"==typeof e&&!!e.trim()&&e.trim().length<501}e.init.api.register.enabled||d(Ae.disabled),u(r.id)&&u(r.name)||d(()=>Ae.invalidTarget(r)),c.forEach(e=>{try{const{name:t,id:n}=e.metadata.target;t===r.name&&n!==r.id&&Ae.duplicateName(r),n===r.id&&t!==r.name&&Ae.duplicateId(r)}catch(e){}});const f={addPageAction:(t,n={})=>m(ce,[t,{...a,...n},e],r),deregister:()=>{p(),d(Ae.deregistered)},log:(t,n={})=>m(oe,[t,{...n,customAttributes:{...a,...n.customAttributes||{}}},e],r),measure:(t,n={})=>m(de,[t,{...n,customAttributes:{...a,...n.customAttributes||{}}},e],r),noticeError:(t,n={})=>m(ie,[t,{...a,...n},e],r),recordCustomEvent:(t,n={})=>m(ue,[t,{...a,...n},e],r),setApplicationVersion:e=>g("application.version",e),setCustomAttribute:(e,t)=>g(e,t),setUserId:e=>g("enduser.id",e),metadata:{get customAttributes(){return a},target:r,timings:n,vitals:i,events:{latestTimestamp:void 0}}},h=()=>(r.blocked&&o(),r.blocked);function p(){if(n.reportedAt)return;n.reportedAt=(0,_.t)(),i.disconnect(),n.fcp=i.fcp,n.lcp=i.lcp,n.cls=i.cls,n.inp=i.inp;const e=n.fetchEnd-n.fetchStart,t=n.scriptEnd-n.scriptStart,r={assetUrl:n.asset,assetType:n.type,registerUrl:s,deregisterUrl:(0,Ee.L)(""+location),pageUrl:void 0,currentUrl:void 0,timeAlive:n.reportedAt-n.registeredAt,timeToBeRequested:n.fetchStart,timeToExecute:t,timeToFetch:e,timeToLoad:e+t,t
5imeToRegister:n.registeredAt,totalWeight:n.totalWeight,...void 0!==n.renderBlocking&&{renderBlocking:n.renderBlocking},...i.fcp.value>=0&&{"vitals.fcp.value":i.fcp.value},...i.lcp.value>=0&&{"vitals.lcp.value":i.lcp.value},...i.cls.value>=0&&{"vitals.cls.value":i.cls.value},...i.inp.value>=0&&{"vitals.inp.value":i.inp.value}};f.recordCustomEvent("MicroFrontEndTiming",r)}h()||(c.push(f),(0,V.G)(p));const g=(e,t)=>{h()||(a[e]=t)},m=(r,n,i)=>{if(h()&&r!==xe)return;const s=f.metadata.events.latestTimestamp??(0,_.t)();f.metadata.events.latestTimestamp=void 0;const a=Te.get(r)||"unknown";(0,S.p)(q.xV,["API/register/".concat(a,"/called")],void 0,t.K7.metrics,e.ee);try{return r(...n,i,s)}catch(e){(0,l.R)(50,e)}};return f}class Oe extends W{static featureName=Z.T;constructor(e){var t;super(e,Z.T),t=e,(0,N.Y)(k.o5,(e,r)=>ie(e,r,t),t),function(e){(0,N.Y)(k.bt,function(t){e.runtime.onerror=t},e)}(e),function(e){let t=0;(0,N.Y)(k.k6,function(e,r){++t>10||(this.runtime.releaseIds[e.slice(-200)]=(""+r).slice(-200))},e)}(e),Se(e);try{this.removeOnAbort=new AbortController}catch(e){}this.ee.on("internal-error",(t,r)=>{this.abortHandler&&(0,S.p)("ierr",[ee(t),(0,_.t)(),!0,{},e.runtime.isRecording,r],void 0,this.featureName,this.ee)}),g.gm.addEventListener("unhandledrejection",t=>{this.abortHandler&&(0,S.p)("err",[te(t),(0,_.t)(),!1,{unhandledPromiseRejection:1},e.runtime.isRecording],void 0,this.featureName,this.ee)},(0,J.jT)(!1,this.removeOnAbort?.signal)),g.gm.addEventListener("error",t=>{this.abortHandler&&(0,S.p)("err",[re(t),(0,_.t)(),!1,{},e.runtime.isRecording],void 0,this.featureName,this.ee)},(0,J.jT)(!1,this.removeOnAbort?.signal)),this.abortHandler=this.#n,this.importAggregator(e,()=>r.e(478).then(r.bind(r,9377)))}#n(){this.removeOnAbort?.abort(),this.abortHandler=void 0}}var _e=r(8990);let ke=1;function Ne(e){const t=typeof e;return!e||"object"!==t&&"function"!==t?-1:e===g.gm?0:(0,_e.I)(e,"nr@id",function(){return ke++})}function Le(e){if("string"==typeof e)return e.length;if("object"==typeof e){if("undefined"!=typeof ArrayBuffer&&e instanceof ArrayBuffer&&e.byteLength)return e.byteLength;if("undefined"!=typeof Blob&&e instanceof Blob&&e.size)return e.size;if(!("undefined"!=typeof FormData&&e instanceof FormData))try{return(0,X.A)(e).length}catch(e){return}}}var Me=r(8139),Pe=r(3434),Ie=r(5732);const je={},Ce=["open","send","setRequestHeader"];function De(e,t){var r=e||R.ee;const n=function(e){return(e||R.ee).get("xhr")}(r);if(void 0===g.gm.XMLHttpRequest)return n;if(je[n.debugId]++)return n;je[n.debugId]=1,(0,Me.u)(r,t);var i=(0,Pe.YM)(n,void 0,t),s=g.gm.XMLHttpRequest,a=g.gm.MutationObserver,o=g.gm.Promise,c=g.gm.setInterval,d="readystatechange",u=["onload","onerror","onabort","onloadstart","onloadend","onprogress","ontimeout"],f=[],h=g.gm.XMLHttpRequest=function(e){const r=new s(e),a=n.context(r);a.targets=(0,Ie.$5)(t);try{n.emit("new-xhr",[r],a),r.addEventListener(d,(o=a,function(){var e=this;e.readyState>3&&!o.resolved&&(o.resolved=!0,n.emit("xhr-resolved",[],e)),i.inPlace(e,u,"fn-",E)}),(0,J.jT)(!1))}catch(e){(0,l.R)(15,e);try{n.emit("internal-error",[e])}catch(e){}}var o;return r};function p(e,t){i.inPlace(t,["onreadystatechange"],"fn-",E)}if(function(e,t){for(var r in e)t[r]=e[r]}(s,h),h.prototype=s.prototype,i.inPlace(h.prototype,Ce,"-xhr-",E),n.on("send-xhr-start",function(e,t){p(e,t),function(e){f.push(e),a&&(m?m.then(b):c?c(b):(v=-v,y.data=v))}(t)}),n.on("open-xhr-start",p),a){var m=o&&o.resolve();if(!c&&!o){var v=1,y=document.createTextNode(v);new a(b).observe(y,{characterData:!0})}}else r.on("fn-end",function(e){e[0]&&e[0].type===d||b()});function b(){for(var e=0;e<f.length;e++)p(0,f[e]);f.length&&(f=[])}function E(e,t){return t}return n}var Be="fetch-",He=Be+"body-",We=["arrayBuffer","blob","json","text","formData"],Ue=g.gm.Request,Ke=g.gm.Response,Fe="prototype";const Ve={};function ze(e,t){const r=function(e){return(e||R.ee).get("fetch")}(e);if(!(Ue&&Ke&&g.gm.fetch))return r;if(Ve[r.debugId]++)return r;function n(e,n,i){var s=e[n];"function"==typeof s&&(e[n]=function(){var e=[...arguments];const n={},a=(0,Ie.$5)(t);var o;r.emit(i+"before-start",[e],n),n[R.P]&&n[R.P].dt&&(o=n[R.P].dt);var c=s.apply(this,e);return r.emit(i+"start",[e,o],c),c.then(function(e){return r.emit(i+"end",[null,e,a],c),e},function(e){throw r.emit(i+"end",[e,void 0,a],c),e})})}
5return Ve[r.debugId]=1,We.forEach(e=>{n(Ue[Fe],e,He),n(Ke[Fe],e,He)}),n(g.gm,"fetch",Be),r.on(Be+"end",function(e,n,i){var s=this;if(s.targets=i||[t.runtime.v2Target],n){var a=n.headers.get("content-length");null!==a&&(s.rxSize=a),r.emit(Be+"done",[null,n],s)}else r.emit(Be+"done",[e],s)}),r}var Ge=r(7485);class qe{constructor(e){this.agentRef=e}generateTracePayload(e){const t=this.agentRef.loader_config;if(!this.shouldGenerateTrace(e)||!t)return null;var r=(t.accountID||"").toString()||null,n=(t.agentID||"").toString()||null,i=(t.trustKey||"").toString()||null;if(!r||!n)return null;var s=(0,ye.ZF)(),a=(0,ye.el)(),o=Date.now(),c={spanId:s,traceId:a,timestamp:o};return(e.sameOrigin||this.isAllowedOrigin(e)&&this.useTraceContextHeadersForCors())&&(c.traceContextParentHeader=this.generateTraceContextParentHeader(s,a),c.traceContextStateHeader=this.generateTraceContextStateHeader(s,o,r,n,i)),(e.sameOrigin&&!this.excludeNewrelicHeader()||!e.sameOrigin&&this.isAllowedOrigin(e)&&this.useNewrelicHeaderForCors())&&(c.newrelicHeader=this.generateTraceHeader(s,a,o,r,n,i)),c}generateTraceContextParentHeader(e,t){return"00-"+t+"-"+e+"-01"}generateTraceContextStateHeader(e,t,r,n,i){return i+"@nr=0-1-"+r+"-"+n+"-"+e+"----"+t}generateTraceHeader(e,t,r,n,i,s){if(!("function"==typeof g.gm?.btoa))return null;var a={v:[0,1],d:{ty:"Browser",ac:n,ap:i,id:e,tr:t,ti:r}};return s&&n!==s&&(a.d.tk=s),btoa((0,X.A)(a))}shouldGenerateTrace(e){return this.agentRef.init?.distributed_tracing?.enabled&&this.isAllowedOrigin(e)}isAllowedOrigin(e){var t=!1;const r=this.agentRef.init?.distributed_tracing;if(e.sameOrigin)t=!0;else if(r?.allowed_origins instanceof Array)for(var n=0;n<r.allowed_origins.length;n++){var i=(0,Ge.D)(r.allowed_origins[n]);if(e.hostname===i.hostname&&e.protocol===i.protocol&&e.port===i.port){t=!0;break}}return t}excludeNewrelicHeader(){var e=this.agentRef.init?.distributed_tracing;return!!e&&!!e.exclude_newrelic_header}useNewrelicHeaderForCors(){var e=this.agentRef.init?.distributed_tracing;return!!e&&!1!==e.cors_use_newrelic_header}useTraceContextHeadersForCors(){var e=this.agentRef.init?.distributed_tracing;return!!e&&!!e.cors_use_tracecontext_headers}}var Ye=r(7295);function Ze(e){return"string"==typeof e?e:e instanceof(0,i.dV)().o.REQ?e.url:g.gm?.URL&&e instanceof URL?e.href:void 0}function $e(e,t){var r=(0,Ge.D)(t),n=e.params||e;n.hostname=r.hostname,n.port=r.port,n.protocol=r.protocol,n.host=r.hostname+":"+r.port,n.pathname=r.pathname,e.parsedOrigin=r,e.sameOrigin=r.sameOrigin}var Je=["load","error","abort","timeout"],Xe=Je.length,Qe=(0,i.dV)().o.REQ,et=(0,i.dV)().o.XHR;const tt="X-NewRelic-App-Data",rt="internal-error";class nt extends W{static featureName=c.TZ;constructor(e){super(e,c.TZ),this.dt=new qe(e),this.handler=(e,t,r,n)=>(0,S.p)(e,t,r,n,this.ee);try{const e={xmlhttprequest:"xhr",fetch:"fetch",beacon:"beacon"};g.gm?.performance?.getEntriesByType("resource").forEach(r=>{if(r.initiatorType in e&&0!==r.responseStatus){const n={status:r.responseStatus},i={rxSize:r.transferSize,duration:Math.floor(r.duration),cbTime:0};$e(n,r.name),this.handler("xhr",[n,i,r.startTime,r.responseEnd,e[r.initiatorType]],void 0,t.K7.ajax)}})}catch(e){}ze(this.ee,e),De(this.ee,e),function(e,r,n,i){const s=[c.mo.ALL,c.mo.FAILURES].includes(e.init.ajax?.capture_payloads);function a(e){var t=this;t.totalCbs=0,t.called=0,t.cbTime=0,t.end=A,t.ended=!1,t.xhrGuids={},t.lastSize=null,t.loadCaptureCalled=!1,t.params=this.params||{},t.metrics=this.metrics||{},t.latestLongtaskEnd=0,e.addEventListener("load",function(r){O(t,e)},(0,J.jT)(!1)),g.lR||e.addEventListener("progress",function(e){t.lastSize=e.loaded},(0,J.jT)(!1))}function o(e){this.params={method:e[0]},$e(this,e[1]),this.metrics={}}function d(t,r){e.loader_config.xpid&&this.sameOrigin&&r.setRequestHeader("X-NewRelic-ID",e.loader_config.xpid);var n=i.generateTracePayload(this.parsedOrigin);if(n){var s=!1;n.newrelicHeader&&(r.setRequestHeader("newrelic",n.newrelicHeader),s=!0),n.traceContextParentHeader&&(r.setRequestHeader("traceparent",n.traceContextParentHeader),n.traceContextStateHeader&&r.setRequestHeader("tracestate",n.traceContextStateHeader),s=!0),s&&(this.dt=n)}}function u(e,t){s&&e.length>=2&&(this.requestHeaders??={},this.requestHeaders[e[0].toLowerCase()]=e[1])}function l(e,t){var n=this.metrics,i=e[0],s=this;if(n&&i){var a=Le(i);a&&(n.txSize=a)}this.startTime=(0,_.t)(),this.requestBody=i,this.listener=function(e){try{"abort"!==e.type||s.loadCaptureCalled||(s.params.aborted=!0),("load"
5!==e.type||s.called===s.totalCbs&&(s.onloadCalled||"function"!=typeof t.onload)&&"function"==typeof s.end)&&s.end(t)}catch(e){try{r.emit(rt,[e])}catch(e){}}};for(var o=0;o<Xe;o++)t.addEventListener(Je[o],this.listener,(0,J.jT)(!1))}function f(e,t,r){this.cbTime+=e,t?this.onloadCalled=!0:this.called+=1,this.called!==this.totalCbs||!this.onloadCalled&&"function"==typeof r.onload||"function"!=typeof this.end||this.end(r)}function h(e,t){var r=""+Ne(e)+!!t;this.xhrGuids&&!this.xhrGuids[r]&&(this.xhrGuids[r]=!0,this.totalCbs+=1)}function p(e,t){var r=""+Ne(e)+!!t;this.xhrGuids&&this.xhrGuids[r]&&(delete this.xhrGuids[r],this.totalCbs-=1)}function m(){this.endTime=(0,_.t)()}function v(e,t){t instanceof et&&"load"===e[0]&&r.emit("xhr-load-added",[e[1],e[2]],t)}function y(e,t){t instanceof et&&"load"===e[0]&&r.emit("xhr-load-removed",[e[1],e[2]],t)}function b(e,t,r){t instanceof et&&("onload"===r&&(this.onload=!0),("load"===(e[0]&&e[0].type)||this.onload)&&(this.xhrCbStart=(0,_.t)()))}function E(e,t){this.xhrCbStart&&r.emit("xhr-cb-time",[(0,_.t)()-this.xhrCbStart,this.onload,t],t)}function w(e){var t,r=e[1]||{};if("string"==typeof e[0]?0===(t=e[0]).length&&g.RI&&(t=""+g.gm.location.href):e[0]&&e[0].url?t=e[0].url:g.gm?.URL&&e[0]&&e[0]instanceof URL?t=e[0].href:"function"==typeof e[0].toString&&(t=e[0].toString()),"string"==typeof t&&0!==t.length){t&&(this.parsedOrigin=(0,Ge.D)(t),this.sameOrigin=this.parsedOrigin.sameOrigin);var n=i.generateTracePayload(this.parsedOrigin);if(n&&(n.newrelicHeader||n.traceContextParentHeader))if(e[0]&&e[0].headers)o(e[0].headers,n)&&(this.dt=n);else{var s={};for(var a in r)s[a]=r[a];s.headers=new Headers(r.headers||{}),o(s.headers,n)&&(this.dt=n),e.length>1?e[1]=s:e.push(s)}}function o(e,t){var r=!1;return t.newrelicHeader&&(e.set("newrelic",t.newrelicHeader),r=!0),t.traceContextParentHeader&&(e.set("traceparent",t.traceContextParentHeader),t.traceContextStateHeader&&e.set("tracestate",t.traceContextStateHeader),r=!0),r}}function R(e,t){this.params={},this.metrics={},this.startTime=(0,_.t)(),this.dt=t;let[r,n={}]=e;$e(this,Ze(r));const i=(""+(r&&r instanceof Qe&&r.method||n.method||"GET")).toUpperCase();this.params.method=i,this.txSize=Le(n.body||r?.body)||0;try{var a=n.headers||r?.headers;if(s&&a)if(this.requestHeaders??={},a instanceof Headers)a.forEach(function(e,t){this.requestHeaders[t.toLowerCase()]=e}.bind(this));else if("object"==typeof a)for(var o in a)this.requestHeaders[o.toLowerCase()]=a[o]}catch(e){}this.requestBody=n.body||r?.body}function T(e,t){if(this.endTime=(0,_.t)(),this.params||(this.params={}),(0,Ye.iW)(this.params))return;this.params.status=t?t.status:0;const n=()=>{const e=+this.rxSize,t=null==this.rxSize||isNaN(e)?void 0:e,r={txSize:this.txSize,rxSize:t,duration:this.endTime-this.startTime},n=[this.params,r,this.startTime,this.endTime,"fetch"];this.targets.forEach(e=>x(n,this,e))};t&&s?t.clone().text().then(e=>{this.responseBody=e,this.rxSize&&"0"!==this.rxSize&&0!==this.rxSize||void 0===e||0===this.params.status||(this.rxSize=Le(e)),t?.headers&&(this.responseHeaders={},t.headers.forEach(function(e,t){this.responseHeaders[t.toLowerCase()]=e}.bind(this)))}).catch(e=>{r.emit(rt,[e])}).finally(()=>{n()}):n()}function A(e){const t=this.params,n=this.metrics;if(this.ended)return;this.ended=!0;for(let t=0;t<Xe;t++)e.removeEventListener(Je[t],this.listener,!1);if(t.aborted)return;if((0,Ye.iW)(t))return;if(n.duration=this.endTime-this.startTime,this.loadCaptureCalled||4!==e.readyState?null==t.status&&(t.status=0):O(this,e),n.cbTime=this.cbTime,s){try{this.responseBody=e.responseText}catch(t){this.responseBody=e.response}if((!n.rxSize||0===n.rxSize)&&void 0!==this.responseBody&&0!==t.status){const e=Le(this.responseBody);void 0!==e&&(n.rxSize=e)}try{this.responseHeaders=function(e){const t={};return e?(e.split("\r\n").forEach(function(e){const r=e.indexOf(": ");if(r>0){const n=e.substring(0,r),i=e.substring(r+2);t[n.toLowerCase()]=i}}),t):t}(e.getAllResponseHeaders())}catch(e){r.emit(rt,[e])}}const i=[t,n,this.startTime,this.endTime,"xhr"];this.targets.forEach(e=>x(i,this,e))}function x(e,r,i){n("xhr",[...e,i],r,t.K7.ajax)}function O(e,n){e.params.status=n.status;var i=function(e,t){var r=e.responseType;return"json"===r&&null!==t?t:"arraybuffer"===r||"blob"===r||"json"===r?Le(e.response):"text"===r||""===r||void 0===r?Le(e.responseText):void 0}(n,e.lastSize);if(void 0!==i&&0!==n.status&&(e.metrics.rxSize=i),e.sameOrigin&&n.getAllResponseHeaders().indexOf(tt)>=0){var s=n.getResponseHeader(tt);s&&((0,S.p)("sm",["Ajax/CrossApplicationTracing/Header/Seen"],void 0,t.K7.metrics,r),e.params.cat=s.split(", ").pop())}e.loadCaptureCalled=!0}r.on("new-xhr",a),r.on("open-xhr-start",o),r.on("open-xhr-end",d),r.on("send-xhr-start",l),r.on("setRequestHeader-xhr-start",u),r.on("xhr-cb-time",f),r.on("xhr-load-added",h),r.on("xhr-load-removed",p),r.on("xhr-resolved",m),r.on("addEventListener-end",v),r.on("removeEventListener-end",y),r.on("fn-end",E),r.on("fetch-before-start",w),r.on("fetch-start",R),r.on("fn-start",b),r.on("fetch-done",T)}(e,this.ee,this.handler,this.dt),this.importAggregator(e,()=>r.e(478).then(r.bind(r,3845)))}}const it={},st=["pushState","replaceState"];function at(e,t){const r=function(e){return(e||R.ee).get("history")}(e);return!g.RI||it[r.debugId]++||(it[r.debugId]=1,(0,Pe.YM)(r,void 0,t).inPlace(window.history,st,"-")),r}var ot=r(3738);function ct(e){(0,N.Y)(k.BL,function(r=Date.now()){const n=r-g.WN;n<0&&(0,l.R)(62,r),(0,S.p)(q.XG,[k.BL,{time:n}],void 0,t.K7.metrics,e.ee),e.addToTrace({name:k.BL,start:r,origin:"nr"}),(0,S.p)("api-"+k.hG,[n,k.BL],void 0,t.K7.genericEvents,e.ee)},e)}const{He:dt,bD:ut,d3:lt,Kp:ft,TZ:ht,Lc:pt,uP:gt,Rz:mt}=ot;class vt extends W{static featureName=ht;constructor(e){var n;super(e,ht),n=e,(0,N.Y)(k.U2,function(e){if(!(e&&"object"==typeof e&&e.name&&e.start))return;const r={n:e.name,s:e.start-g.WN,e:(e.end||e.start)-g.WN,o:e.origin||"",t:"api"};r.s<0||r.e<0||r.e<r.s?(0,l.R)(61,{start:r.s,end:r.e}):(0,S.p)("bstApi",[r],void 0,t.K7.sessionTrace,n.ee)},n),ct(e);
5if(!(0,j.V)(e.init))return void this.deregisterDrain();const i=this.ee;let s;at(i,e),this.eventsEE=(0,Me.u)(i,e),this.eventsEE.on(gt,function(e,t){this.bstStart=(0,_.t)()}),this.eventsEE.on(pt,function(e,r){(0,S.p)("bst",[e[0],r,this.bstStart,(0,_.t)()],void 0,t.K7.sessionTrace,i)}),i.on(mt+lt,function(e){this.time=(0,_.t)(),this.startPath=location.pathname+location.hash}),i.on(mt+ft,function(e){(0,S.p)("bstHist",[location.pathname+location.hash,this.startPath,this.time],void 0,t.K7.sessionTrace,i)});try{s=new PerformanceObserver(e=>{const r=e.getEntries();(0,S.p)(dt,[r],void 0,t.K7.sessionTrace,i)}),s.observe({type:ut,buffered:!0})}catch(e){}this.importAggregator(e,()=>r.e(478).then(r.bind(r,6974)),{resourceObserver:s})}}var yt=r(733),bt=r(6344);class Et extends W{static featureName=bt.TZ;#i;recorder;constructor(e){var n;let i;super(e,bt.TZ),n=e,(0,N.Y)(k.CH,function(){(0,S.p)(k.CH,[],void 0,t.K7.sessionReplay,n.ee)},n),function(e){(0,N.Y)(k.Tb,function(){(0,S.p)(k.Tb,[],void 0,t.K7.sessionReplay,e.ee)},e)}(e);const s="".concat(u.Wt).concat((0,yt.Y)(e.info.licenseKey,e.info.applicationID));try{i=JSON.parse(localStorage.getItem(s))}catch(e){}(0,I.SR)(e.init)&&this.ee.on(k.CH,()=>this.#s()),this.#a(i)&&this.importRecorder().then(e=>{e.startRecording(bt.Qb.PRELOAD,i?.sessionReplayMode)}),this.abortHandler=this.#n,this.importAggregator(this.agentRef,()=>r.e(478).then(r.bind(r,6167)),this),this.ee.on("err",e=>{this.blocked||this.agentRef.runtime.isRecording&&(this.errorNoticed=!0,(0,S.p)(bt.Vh,[e],void 0,this.featureName,this.ee))})}#a(e){return e&&(e.sessionReplayMode===u.g.FULL||e.sessionReplayMode===u.g.ERROR)||(0,I.Aw)(this.agentRef.init)}importRecorder(){return this.recorder?Promise.resolve(this.recorder):(this.#i??=Promise.all([r.e(478),r.e(249)]).then(r.bind(r,4866)).then(({Recorder:e})=>(this.recorder=new e(this),this.recorder)).catch(e=>{throw this.ee.emit("internal-error",[e]),this.blocked=!0,e}),this.#i)}#s(){this.blocked||(this.featAggregate?this.featAggregate.mode!==u.g.FULL&&this.featAggregate.initializeRecording(u.g.FULL,!0,bt.Qb.API):this.importRecorder().then(()=>{this.recorder.startRecording(bt.Qb.API,u.g.FULL)}))}#n(){this.recorder?.stopRecording()}}var wt=r(3962);class Rt extends W{static featureName=wt.TZ;constructor(e){if(super(e,wt.TZ),function(e){const r=e.ee.get("tracer");function n(){}(0,N.Y)(k.dT,function(e){return(new n).get("object"==typeof e?e:{})},e);const i=n.prototype={createTracer:function(n,i){var s={},a=this,o="function"==typeof i;return(0,S.p)(q.xV,["API/createTracer/called"],void 0,t.K7.metrics,e.ee),function(){if(r.emit((o?"":"no-")+"fn-start",[(0,_.t)(),a,o],s),o)try{return i.apply(this,arguments)}catch(e){const t="string"==typeof e?new Error(e):e;throw r.emit("fn-err",[arguments,this,t],s),t}finally{r.emit("fn-end",[(0,_.t)()],s)}}}};["actionText","setName","setAttribute","save","ignore","onEnd","getContext","end","get"].forEach(r=>{N.Y.apply(this,[r,function(){return(0,S.p)(k.hw+r,[performance.now(),...arguments],this,t.K7.softNav,e.ee),this},e,i])}),(0,N.Y)(k.PA,function(){(0,S.p)(k.hw+"routeName",[performance.now(),...arguments],void 0,t.K7.softNav,e.ee)},e)}(e),!g.RI||!(0,i.dV)().o.MO)return;const n=at(this.ee,e);try{this.removeOnAbort=new AbortController}catch(e){}wt.tC.forEach(e=>{(0,J.sp)(e,e=>{c(e)},!0,this.removeOnAbort?.signal)}
5);const s=()=>(0,S.p)("newURL",[(0,_.t)(),""+window.location],void 0,this.featureName,this.ee);n.on("pushState-end",s),n.on("replaceState-end",s),(0,J.sp)(wt.OV,e=>{c(e),(0,S.p)("newURL",[e.timeStamp,""+window.location],void 0,this.featureName,this.ee)},!0,this.removeOnAbort?.signal);let a=!1;const o=new((0,i.dV)().o.MO)((e,t)=>{a||(a=!0,requestAnimationFrame(()=>{(0,S.p)("newDom",[(0,_.t)()],void 0,this.featureName,this.ee),a=!1}))}),c=(0,C.s)(e=>{"loading"!==document.readyState&&((0,S.p)("newUIEvent",[e],void 0,this.featureName,this.ee),o.observe(document.body,{attributes:!0,childList:!0,subtree:!0,characterData:!0}))},100,{leading:!0});this.abortHandler=function(){this.removeOnAbort?.abort(),o.disconnect(),this.abortHandler=void 0},this.importAggregator(e,()=>r.e(478).then(r.bind(r,4393)),{domObserver:o})}}var Tt=r(981);const At={},St=new Set;function xt(e){return"string"==typeof e?{type:"string",size:(new TextEncoder).encode(e).length}:e instanceof ArrayBuffer?{type:"ArrayBuffer",size:e.byteLength}:e instanceof Blob?{type:"Blob",size:e.size}:e instanceof DataView?{type:"DataView",size:e.byteLength}:ArrayBuffer.isView(e)?{type:"TypedArray",size:e.byteLength}:{type:"unknown",size:0}}class Ot{constructor(e,t){this.timestamp=(0,_.t)(),this.currentUrl=(0,Ee.L)(window.location.href),this.socketId=(0,ye.LA)(8),this.requestedUrl=(0,Ee.L)(e),this.requestedProtocols=Array.isArray(t)?t.join(","):t||"",this.openedAt=void 0,this.protocol=void 0,this.extensions=void 0,this.binaryType=void 0,this.messageOrigin=void 0,this.messageCount=0,this.messageBytes=0,this.messageBytesMin=0,this.messageBytesMax=0,this.messageTypes=void 0,this.sendCount=0,this.sendBytes=0,this.sendBytesMin=0,this.sendBytesMax=0,this.sendTypes=void 0,this.closedAt=void 0,this.closeCode=void 0,this.closeReason="unknown",this.closeWasClean=void 0,this.connectedDuration=0,this.hasErrors=void 0}}class _t extends W{static featureName=o.TZ;constructor(e){super(e,o.TZ);const n=e.init.feature_flags.includes("websockets")||e.init.web_sockets?.enabled,s=!e.init.feature_flags.includes("no_spv"),a=[e.init.page_action.enabled,e.init.performance.capture_marks,e.init.performance.capture_measures,e.init.performance.resources.enabled,e.init.user_actions.enabled,n,s];var c;let d;if(c=e,(0,N.Y)(k.hG,(e,t)=>ce(e,t,c),c),function(e){(0,N.Y)(k.fF,(t,r)=>ue(t,r,e),e)}(e),ct(e),Se(e),function(e){(0,N.Y)(k.V1,(t,r)=>de(t,r,e),e)}(e),this.removeOnAbort=new AbortController,this.abortHandler=()=>{this.removeOnAbort.abort(),this.abortHandler=void 0},n){const u=function(e,t){if(!(0,i.dV)().o.WS)return e;const r=e.get("websockets");if(At[r.debugId]++)return r;At[r.debugId]=1,(0,V.G)(()=>{const e=(0,_.t)();St.forEach(t=>{t.nrData.closedAt=e,t.nrData.closeCode=1001,t.nrData.closeReason="Page navigating away",t.nrData.closeWasClean=!1,t.nrData.openedAt&&(t.nrData.connectedDuration=e-t.nrData.openedAt),r.emit("ws",[t.nrData,t.targets],t)})});
5class n extends WebSocket{static name=Tt.R.WS;static toString(){return"function WebSocket() { [native code] }"}toString(){return"[object WebSocket]"}get[Symbol.toStringTag](){return n.name}#o(e){(e.__newrelic??={}).socketId=this.nrData.socketId,this.nrData.hasErrors??=!0}constructor(...e){super(...e),this.nrData=new Ot(e[0],e[1]),this.targets=(0,Ie.$5)(t),this.addEventListener("open",()=>{this.nrData.openedAt=(0,_.t)(),["protocol","extensions","binaryType"].forEach(e=>{this.nrData[e]=this[e]}),St.add(this)}),this.addEventListener("message",e=>{const{type:t,size:r}=xt(e.data);this.nrData.messageOrigin??=(0,Ee.L)(e.origin),this.nrData.messageCount++,this.nrData.messageBytes+=r,this.nrData.messageBytesMin=Math.min(this.nrData.messageBytesMin||1/0,r),this.nrData.messageBytesMax=Math.max(this.nrData.messageBytesMax,r),(this.nrData.messageTypes??"").includes(t)||(this.nrData.messageTypes=this.nrData.messageTypes?"".concat(this.nrData.messageTypes,",").concat(t):t)}),this.addEventListener("close",e=>{this.nrData.closedAt=(0,_.t)(),this.nrData.closeCode=e.code,e.reason&&(this.nrData.closeReason=e.reason),this.nrData.closeWasClean=e.wasClean,this.nrData.connectedDuration=this.nrData.closedAt-this.nrData.openedAt,St.delete(this),r.emit("ws",[this.nrData,this.targets],this)})}addEventListener(e,t,...r){const n=this,i="function"==typeof t?function(...e){try{return t.apply(this,e)}catch(e){throw n.#o(e),e}}:t?.handleEvent?{handleEvent:function(...e){try{return t.handleEvent.apply(t,e)}catch(e){throw n.#o(e),e}}}:t;return super.addEventListener(e,i,...r)}send(e){if(this.readyState===WebSocket.OPEN){const{type:t,size:r}=xt(e);this.nrData.sendCount++,this.nrData.sendBytes+=r,this.nrData.sendBytesMin=Math.min(this.nrData.sendBytesMin||1/0,r),this.nrData.sendBytesMax=Math.max(this.nrData.sendBytesMax,r),(this.nrData.sendTypes??"").includes(t)||(this.nrData.sendTypes=this.nrData.sendTypes?"".concat(this.nrData.sendTypes,",").concat(t):t)}try{return super.send(e)}catch(e){throw this.#o(e),e}}close(...e){try{super.close(...e)}catch(e){throw this.#o(e),e}}}return g.gm.WebSocket=n,r}(this.ee,e);u.on("ws",(e,t)=>{(0,S.p)("ws-complete",[e,t],void 0,this.featureName,this.ee)})}if(s){if("function"==typeof g.gm.ReportingObserver){const l=new g.gm.ReportingObserver(e=>{e.forEach(e=>{(0,S.p)("spv",[kt(e),(0,_.t)()],void 0,t.K7.genericEvents,this.ee)}),l.disconnect()},{types:["csp-violation"],buffered:!0});l.observe()}g.gm.addEventListener("securitypolicyviolation",e=>{(0,S.p)("spv",[kt(e),e.timeStamp],void 0,t.K7.genericEvents,this.ee)},(0,J.jT)(!1,this.removeOnAbort.signal))}if(g.RI){if(ze(this.ee,e),De(this.ee,e),d=at(this.ee,e),e.init.user_actions.enabled){function f(t){const r=(0,Ge.D)(t);return e.beacons.includes(r.hostname+":"+r.port)}function h(){d.emit("navChange")}o.Zp.forEach(e=>(0,J.sp)(e,e=>(0,S.p)("ua",[e],void 0,this.featureName,this.ee),!0)),o.qN.forEac
5h(e=>{const t=(0,C.s)(e=>{(0,S.p)("ua",[e],void 0,this.featureName,this.ee)},500,{leading:!0});(0,J.sp)(e,t)}),g.gm.addEventListener("error",()=>{(0,S.p)("uaErr",[],void 0,t.K7.genericEvents,this.ee)},(0,J.jT)(!1,this.removeOnAbort.signal)),this.ee.on("open-xhr-start",(e,r)=>{f(e[1])||r.addEventListener("readystatechange",()=>{2===r.readyState&&(0,S.p)("uaXhr",[],void 0,t.K7.genericEvents,this.ee)},(0,J.jT)(void 0,this.removeOnAbort.signal))}),this.ee.on("fetch-start",e=>{e.length>=1&&!f(Ze(e[0]))&&(0,S.p)("uaXhr",[],void 0,t.K7.genericEvents,this.ee)}),d.on("pushState-end",h),d.on("replaceState-end",h),window.addEventListener("hashchange",h,(0,J.jT)(!0,this.removeOnAbort.signal)),window.addEventListener("popstate",h,(0,J.jT)(!0,this.removeOnAbort.signal))}if(e.init.performance.resources.enabled&&g.gm.PerformanceObserver?.supportedEntryTypes.includes("resource")){new PerformanceObserver(e=>{e.getEntries().forEach(e=>{(0,S.p)("browserPerformance.resource",[e],void 0,this.featureName,this.ee)})}).observe({type:"resource",buffered:!0})}}a.some(e=>e)?this.importAggregator(e,()=>r.e(478).then(r.bind(r,8019))):this.deregisterDrain()}}function kt(e){const t=e.body??e;return{blockedUrl:t.blockedURL??e.blockedURI,documentUrl:t.documentURL??e.documentURI,effectiveDirective:t.effectiveDirective,originalPolicy:t.originalPolicy,sourceFile:t.sourceFile,statusCode:t.statusCode,lineNumber:t.lineNumber,columnNumber:t.columnNumber,disposition:"reporting"===t.disposition?"report":t.disposition,sample:t.sample,referrer:t.referrer}}var Nt=r(2646);const Lt=new Map;function Mt(e,t,r,n,i=!0,s){if("object"!=typeof t||!t||"string"!=typeof r||!r||"function"!=typeof t[r])return(0,l.R)(29);const a=function(e){return(e||R.ee).get("logger")}(e),o=(0,Pe.YM)(a,void 0,s),c=new Nt.y(R.P);c.level=n.level,c.customAttributes=n.customAttributes,c.autoCaptured=i;const d=t[r]?.[Pe.Jt]||t[r];return Lt.set(d,c),o.inPlace(t,[r],"wrap-logger-",()=>Lt.get(d),void 0,!0),a}var Pt=r(1910);class It extends W{static featureName=se.TZ;constructor(e){var t;super(e,se.TZ),t=e,(0,N.Y)("log",(e,r)=>oe(e,r,t),t),function(e){(0,N.Y)(k.Wb,(t,r,{customAttributes:n={},level:i=se.p_.INFO}={})=>{Mt(e.ee,t,r,{customAttributes:n,level:i},!1,e)},e)}(e),Se(e);const n=this.ee;["log","error","warn","info","debug","trace"].forEach(t=>{(0,Pt.i)(g.gm.console[t]),Mt(n,g.gm.console,t,{level:"log"===t?"info":t},void 0,e)}),this.ee.on("wrap-logger-end",function([t],r,i,s=[e.runtime.v2Target]){const{level:a,customAttributes:o,autoCaptured:c}=this;s.forEach(e=>{(0,ae.R)(n,t,o,a,c,e)})}),this.importAggregator(e,()=>r.e(478).then(r.bind(r,5288)))}}new F({features:[nt,K,G,vt,Et,Y,Oe,_t,It,Rt],loaderType:"spa"})})()})();</script>
5 6<meta name="title" content="Steiff European Online Shop english - Steiff.com"/> 7<meta name="description" content="Welcome to the major Steiff online shop. The world's largest Steiff assortment, fast delivery, competent service. Discover now!"/> 8<meta name="keywords" content="steiff,teddy,teddys,teddy bears,cuddly toys,plush,kids fashion,baby clothes"/> 9<meta name="robots" content="index, follow"/> 10<meta name="viewport" content="width=device-width, initial-scale=1"/> 11<title>Steiff European Online Shop english - Steiff.com</title> 12<link rel="stylesheet" type="text/css" media="all" href="https://www.steiff.com/static/version1790768634/frontend/Steiff/default/en_GB/css/styles.css" /> 13<link rel="stylesheet" type="text/css" media="all" href="https://www.steiff.com/static/version1790768634/frontend/Steiff/default/en_GB/Adyen_Payment/css/adyen.css" /> 14<link rel="icon" type="image/x-icon" href="https://www.steiff.com/media/favicon/default/faviconNew-96x96.png" /> 15<link rel="shortcut icon" type="image/x-icon" href="https://www.steiff.com/media/favicon/default/faviconNew-96x96.png" /> 16<!--DxANZQXBNVjlkoi4eCSgkJ28ruDYlzpe--> <link rel="canonical" href="https://www.steiff.com/en"/>
17<script async src="https://production.neocomapp.com/neocom.js?id=e7971b36-24c0-4b6f-ac55-e351a6dc1722"></script>
17 18<link rel="alternate" hreflang="de-de" href="https://www.steiff.com/de-de" /> 19<link rel="alternate" hreflang="de-at" href="https://www.steiff.com/de-at" /> 20<link rel="alternate" hreflang="de-ch" href="https://www.steiff.com/de-ch" /> 21<link rel="alternate" hreflang="fr" href="https://www.steiff.com/fr" /> 22<link rel="alternate" hreflang="fr-ch" href="https://www.steiff.com/fr-ch" /> 23<link rel="alternate" hreflang="en" href="https://www.steiff.com/en" /> 24<link rel="alternate" hreflang="en-gb" href="https://www.steiff.com/en-uk" /> 25<link rel="alternate" hreflang="en-us" href="https://www.steiff.com/en-us" /> 26<link rel="alternate" hreflang="x-default" href="https://www.steiff.com/en" /> 27<link rel="preconnect" href="https://api.usercentrics.eu" /> 28<link rel="preconnect" href="https://web.cmp.usercentrics.eu" />
29<script> 30 window.dataLayer = window.dataLayer || []; 31 window.gtag = window.gtag || function() { 32 window.dataLayer.push(arguments); 33 }; 34 window.gtag('consent', 'default', { 35 ad_storage: 'denied', 36 analytics_storage: 'denied', 37 ad_user_data: 'denied', 38 ad_personalization: 'denied', 39 wait_for_update: 500 40 }); 41 window.gtag('set', 'ads_data_redaction', true); 42</script>
vendor: 1 bytes, line 42
42
43<script id="usercentrics-cmp" 44 data-settings-id="r_RFkU5sa" 45 data-language="en" 46 src="https://web.cmp.usercentrics.eu/ui/loader.js" 47 nonce="N3VsYnlzdWEweHE4NGp1ZHFtODVyYzk0MnZjcHlyZ3A=" 48 async></script>
vendor: 1 bytes, line 48
48
49<script> 50 var BASE_URL = 'https://www.steiff.com/en/'; 51 var THEME_PATH = 'https://www.steiff.com/static/version1790768634/frontend/Steiff/default/en_GB'; 52 var COOKIE_CONFIG = { 53 "expires": null, 54 "path": "\u002F", 55 "domain": ".www.steiff.com", 56 "secure": true, 57 "lifetime": "3600", 58 "cookie_restriction_enabled": false }; 59 var CURRENT_STORE_CODE = 'en'; 60 var CURRENT_WEBSITE_ID = '8'; 61 62 window.hyva = window.hyva || {} 63 64 window.cookie_consent_groups = window.cookie_consent_groups || {} 65 window.cookie_consent_groups['necessary'] = true; 66 67 window.cookie_consent_config = window.cookie_consent_config || {}; 68 window.cookie_consent_config['necessary'] = [].concat( 69 window.cookie_consent_config['necessary'] || [], 70 [ 71 'user_allowed_save_cookie', 72 'form_key', 73 'mage-messages', 74 'private_content_version', 75 'mage-cache-sessid', 76 'last_visited_store', 77 'section_data_ids' 78 ] 79 ); 80 //# sourceURL=hyva-variables.js 81</script>
vendor: 1 bytes, line 81
81
82<script> 83 (function( hyva, undefined ) { 84 85 function lifetimeToExpires(options, defaults) { 86 87 const lifetime = options.lifetime || defaults.lifetime; 88 89 if (lifetime) { 90 const date = new Date; 91 date.setTime(date.getTime() + lifetime * 1000); 92 return date; 93 } 94 95 return null; 96 } 97 98 function generateRandomString() { 99 100 const allowedCharacters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ', 101 length = 16; 102 103 let formKey = '', 104 charactersLength = allowedCharacters.length; 105 106 for (let i = 0; i < length; i++) { 107 formKey += allowedCharacters[Math.round(Math.random() * (charactersLength - 1))] 108 } 109 110 return formKey; 111 } 112 113 const sessionCookieMarker = {noLifetime: true} 114 115 const cookieTempStorage = {}; 116 117 const internalCookie = { 118 get(name) { 119 const v = document.cookie.match('(^|;) ?' + name + '=([^;]*)(;|$)'); 120 return v ? v[2] : null; 121 }, 122 set(name, value, days, skipSetDomain) { 123 let expires, 124 path, 125 domain, 126 secure, 127 samesite; 128 129 const defaultCookieConfig = { 130 expires: null, 131 path: '/', 132 domain: null, 133 secure: false, 134 lifetime: null, 135 samesite: 'lax' 136 }; 137 138 const cookieConfig = window.COOKIE_CONFIG || {}; 139 140 expires = days && days !== sessionCookieMarker 141 ? lifetimeToExpires({lifetime: 24 * 60 * 60 * days, expires: null}, defaultCookieConfig) 142 : lifetimeToExpires(window.COOKIE_CONFIG, defaultCookieConfig) || defaultCookieConfig.expires; 143 144 path = cookieConfig.path || defaultCookieConfig.path; 145 domain = !skipSetDomain && (cookieConfig.domain || defaultCookieConfig.domain); 146 secure = cookieConfig.secure || defaultCookieConfig.secure; 147 samesite = cookieConfig.samesite || defaultCookieConfig.samesite; 148 149 document.cookie = name + "=" + encodeURIComponent(value) + 150 (expires && days !== sessionCookieMarker ? '; expires=' + expires.toGMTString() : '') + 151 (path ? '; path=' + path : '') + 152 (domain ? '; domain=' + domain : '') + 153 (secure ? '; secure' : '') + 154 (samesite ? '; samesite=' + samesite : 'lax'); 155 }, 156 isWebsiteAllowedToSaveCookie() { 157 const allowedCookies = this.get('user_allowed_save_cookie'); 158 if (allowedCookies) { 159 const allowedWebsites = JSON.parse(unescape(allowedCookies)); 160 161 return allowedWebsites[CURRENT_WEBSITE_ID] === 1; 162 } 163 return false; 164 }, 165 getGroupByCookieName(name) { 166 const cookieConsentConfig = window.cookie_consent_config || {}; 167 let group = null; 168 for (let prop in cookieConsentConfig) { 169 if (!cookieConsentConfig.hasOwnProperty(prop)) continue; 170 if (cookieConsentConfig[prop].includes(name)) { 171 group = prop; 172 break; 173 } 174 } 175 return group; 176 }, 177 isCookieAllowed(name) { 178 const cookieGroup = this.getGroupByCookieName(name); 179 return cookieGroup 180 ? window.cookie_consent_groups[cookieGroup] 181 : this.isWebsiteAllowedToSaveCookie(); 182 }, 183 saveTempStorageCookies() { 184 for (const [name, data] of Object.entries(cookieTempStorage)) { 185 if (this.isCookieAllowed(name)) { 186 this.set(name, data['value'], data['days'], data['skipSetDomain']); 187 delete cookieTempStorage[name]; 188 } 189 } 190 } 191 }; 192 193 hyva.getCookie = (name) => { 194 const cookieConfig = window.COOKIE_CONFIG || {}; 195 196 if (cookieConfig.cookie_restriction_enabled && ! internalCookie.isCookieAllowed(name)) { 197 return cookieTempStorage[name] ? cookieTempStorage[name]['value'] : null; 198 } 199 200 return internalCookie.get(name); 201 } 202 203 hyva.setCookie = (name, value, days, skipSetDomain) => { 204 const cookieConfig = window.COOKIE_CONFIG || {}; 205 206 if (cookieConfig.cookie_restriction_enabled && ! internalCookie.isCookieAllowed(name)) { 207 cookieTempStorage[name] = {value, days, skipSetDomain}; 208 return; 209 } 210 return internalCookie.set(name, value, days, skipSetDomain); 211 } 212 213 214 hyva.setSessionCookie = (name, value, skipSetDomain) => { 215 return hyva.setCookie(name, value, sessionCookieMarker, skipSetDomain) 216 } 217 218 hyva.getBrowserStorage = () => { 219 const browserStorage = window.localStorage || window.sessionStorage; 220 if (!browserStorage) { 221 console.warn('Browser Storage is unavailable'); 222 return false;
223 } 224 try { 225 browserStorage.setItem('storage_test', '1'); 226 browserStorage.removeItem('storage_test'); 227 } catch (error) { 228 console.warn('Browser Storage is not accessible', error); 229 return false; 230 } 231 return browserStorage; 232 } 233 234 hyva.postForm = (postParams) => { 235 const form = document.createElement("form"); 236 237 let data = postParams.data; 238 239 if (! postParams.skipUenc && ! data.uenc) { 240 data.uenc = btoa(window.location.href); 241 } 242 form.method = "POST"; 243 form.action = postParams.action; 244 245 Object.keys(postParams.data).map(key => { 246 const field = document.createElement("input"); 247 field.type = 'hidden' 248 field.value = postParams.data[key]; 249 field.name = key; 250 form.appendChild(field); 251 }); 252 253 const form_key = document.createElement("input"); 254 form_key.type = 'hidden'; 255 form_key.value = hyva.getFormKey(); 256 form_key.name="form_key"; 257 form.appendChild(form_key); 258 259 document.body.appendChild(form); 260 261 form.submit(); 262 } 263 264 hyva.getFormKey = function () { 265 let formKey = hyva.getCookie('form_key'); 266 267 if (!formKey) { 268 formKey = generateRandomString(); 269 hyva.setCookie('form_key', formKey); 270 } 271 272 return formKey; 273 } 274 275 hyva.formatPrice = (value, showSign, options = {}) => { 276 const groupSeparator = options.groupSeparator; 277 const decimalSeparator = options.decimalSeparator 278 delete options.groupSeparator; 279 delete options.decimalSeparator; 280 const formatter = new Intl.NumberFormat( 281 'en\u002DGB', 282 Object.assign({ 283 style: 'currency', 284 currency: 'EUR', 285 signDisplay: showSign ? 'always' : 'auto' 286 }, options) 287 ); 288 return (typeof Intl.NumberFormat.prototype.formatToParts === 'function') ? 289 formatter.formatToParts(value).map(({type, value}) => { 290 switch (type) { 291 case 'currency': 292 return '\u20AC' || value; 293 case 'minusSign': 294 return '- '; 295 case 'plusSign': 296 return '+ '; 297 case 'group': 298 return groupSeparator !== undefined ? groupSeparator : value; 299 case 'decimal': 300 return decimalSeparator !== undefined ? decimalSeparator : value; 301 default : 302 return value; 303 } 304 }).reduce((string, part) => string + part) : 305 formatter.format(value); 306 } 307 308 const formatStr = function (str, nStart) { 309 const args = Array.from(arguments).slice(2); 310 311 return str.replace(/(%+)([0-9]+)/g, (m, p, n) => { 312 const idx = parseInt(n) - nStart; 313 314 if (args[idx] === null || args[idx] === void 0) { 315 return m; 316 } 317 return p.length % 2 318 ? p.slice(0, -1).replace('%%', '%') + args[idx] 319 : p.replace('%%', '%') + n; 320 }) 321 } 322 323 hyva.str = function (string) { 324 const args = Array.from(arguments); 325 args.splice(1, 0, 1); 326 327 return formatStr.apply(undefined, args); 328 } 329 330 hyva.strf = function () { 331 const args = Array.from(arguments); 332 args.splice(1, 0, 0); 333 334 return formatStr.apply(undefined, args); 335 } 336 337 /** 338 * Take a html string as `content` parameter and 339 * extract an element from the DOM to replace in 340 * the current page under the same selector, 341 * defined by `targetSelector` 342 */ 343 hyva.replaceDomElement = (targetSelector, content) => { 344 // Parse the content and extract the DOM node using the `targetSelector` 345 const parser = new DOMParser(); 346 const doc = parser.parseFromString(content, 'text/html');
347 const contentNode = doc.querySelector(targetSelector); 348 349 // Bail if content or target can't be found 350 if (!contentNode || !document.querySelector(targetSelector)) { 351 return; 352 } 353 354 hyva.activateScripts(contentNode); 355 356 // Replace the old DOM node with the new content 357 document.querySelector(targetSelector).replaceWith(contentNode); 358 359 // Reload customerSectionData and display cookie-messages if present 360 window.dispatchEvent(new CustomEvent("reload-customer-section-data")); 361 hyva.initMessages(); 362 } 363 364 hyva.removeScripts = (contentNode) => { 365 const scripts = contentNode.getElementsByTagName('script'); 366 for (let i = 0; i < scripts.length; i++) { 367 scripts[i].parentNode.removeChild(scripts[i]); 368 } 369 const templates = contentNode.getElementsByTagName('template'); 370 for (let i = 0; i < templates.length; i++) { 371 const container = document.createElement('div'); 372 container.innerHTML = templates[i].innerHTML; 373 hyva.removeScripts(container); 374 templates[i].innerHTML = container.innerHTML; 375 } 376 } 377 378 hyva.activateScripts = (contentNode) => { 379 // Create new array from HTMLCollection to avoid mutation of collection while manipulating the DOM. 380 const scripts = Array.from(contentNode.getElementsByTagName('script')); 381 382 // Iterate over all script tags to duplicate+inject each into the head 383 for (const original of scripts) { 384 const script = document.createElement('script'); 385 original.type && (script.type = original.type); 386 script.innerHTML = original.innerHTML; 387 388 // Remove the original (non-executing) script from the contentNode 389 original.parentNode.removeChild(original) 390 391 // Add script to head 392 document.head.appendChild(script); 393 } 394 395 return contentNode; 396 } 397 398 const replace = {['+']: '-', ['/']: '_', ['=']: ','}; 399 hyva.getUenc = () => btoa(window.location.href).replace(/[+/=]/g, match => replace[match]); 400 401 let currentTrap; 402 403 const focusableElements = (rootElement) => { 404 const selector = 'button, [href], input, select, textarea, details, [tabindex]:not([tabindex="-1"]'; 405 return Array.from(rootElement.querySelectorAll(selector)) 406 .filter(el => { 407 return el.style.display !== 'none' 408 && !el.disabled 409 && el.tabIndex !== -1 410 && (el.offsetWidth || el.offsetHeight || el.getClientRects().length) 411 }) 412 } 413 414 const focusTrap = (e) => { 415 const isTabPressed = e.key === 'Tab' || e.keyCode === 9; 416 if (!isTabPressed) return; 417 418 const focusable = focusableElements(currentTrap) 419 const firstFocusableElement = focusable[0] 420 const lastFocusableElement = focusable[focusable.length - 1] 421 422 e.shiftKey 423 ? document.activeElement === firstFocusableElement && (lastFocusableElement.focus(), e.preventDefault()) 424 : document.activeElement === lastFocusableElement && (firstFocusableElement.focus(), e.preventDefault()) 425 }; 426 427 hyva.releaseFocus = (rootElement) => { 428 if (currentTrap && (!rootElement || rootElement === currentTrap)) { 429 currentTrap.removeEventListener('keydown', focusTrap) 430 currentTrap = null 431 } 432 } 433 hyva.trapFocus = (rootElement) => { 434 if (!rootElement) return; 435 hyva.releaseFocus() 436 currentTrap = rootElement 437 rootElement.addEventListener('keydown', focusTrap) 438 const firstElement = focusableElements(rootElement)[0] 439 firstElement && firstElement.focus() 440 } 441 442 hyva.safeParseNumber = (rawValue) => { 443 const number = rawValue ? parseFloat(rawValue) : null; 444 445 return Array.isArray(number) || isNaN(number) ? rawValue : number; 446 } 447 448 const toCamelCase = s => s.split('_').map(word => word.charAt(0).toUpperCase() + word.slice(1)).join(''); 449 hyva.createBooleanObject = (name, value = false, additionalMethods = {}) => { 450 451 const camelCase = toCamelCase(name);
452 const key = '__hyva_bool_' + name 453 454 return new Proxy(Object.assign( 455 additionalMethods, 456 { 457 [key]: !!value, 458 [name]() {return !!this[key]}, 459 ['!' + name]() {return !this[key]}, // @deprecated This does not work with non-CSP Alpine 460 ['not' + camelCase]() {return !this[key]}, 461 ['toggle' + camelCase]() {this[key] = !this[key]}, 462 [`set${camelCase}True`]() {this[key] = true}, 463 [`set${camelCase}False`]() {this[key] = false}, 464 } 465 ), { 466 set(target, prop, value) { 467 return prop === name 468 ? (target[key] = !!value) 469 : Reflect.set(...arguments); 470 } 471 }) 472 } 473 474 hyva.alpineInitialized = (fn) => window.addEventListener('alpine:initialized', fn, {once: true}) 475 window.addEventListener('alpine:init', () => Alpine.data('{}', () => ({})), {once: true}); 476 window.addEventListener('user-allowed-save-cookie', () => internalCookie.saveTempStorageCookies()) 477 478 }( window.hyva = window.hyva || {} )); 479 //# sourceURL=hyva.js 480</script>
vendor: 1 bytes, line 480
480
481<script type="speculationrules"> 482{ 483 "tag": "Hyva Theme", 484 "prefetch": [{ 485 "source": "document", 486 "where": { 487 "and": [ 488 { "href_matches": "/*" }, 489 { "not": { 490 "href_matches": ["/en/customer/*","/en/search/*","/en/sales/*","/en/wishlist/*","/en/checkout/*","/en/paypal/*","/en/newsletter/*","/en/stores/store/redirect/*"] }}, 491 { "not": { 492 "selector_matches": [".no-preload", ".do-not-prerender", "[download]", "[rel~=nofollow]", "[target]"] 493 }} 494 ] 495 }, 496 "eagerness": "moderate" 497 }] 498} 499</script>
499 500<style data-jit-css data-liveview-style-type="cms_page" data-liveview-style-id="511">.cmsp511-text-left { 501text-align: left 502} 503.cmsp511-text-center { 504text-align: center 505} 506.cmsp511-text-base { 507font-size: 1rem; 508line-height: 1.5rem 509} 510.cmsp511-text-sm { 511font-size: 0.875rem; 512line-height: 1.25rem 513} 514.cmsp511-font-normal { 515font-weight: 400 516}</style></head> 517<body id="html-body" class="cms-home page-layout-1column cms-index-index page-layout-cms-full-width"> 518<input name="form_key" type="hidden" value="A9a4gvqvl1pUQyIo" /> 519 <noscript> 520 <section class="message global noscript border-b-2 border-blueGray bg-blueGray shadow-none m-0 px-0 rounded-none font-normal"> 521 <div class="container text-center"> 522 <p> 523 <strong>JavaScript seems to be disabled in your browser.</strong> 524 <span> 525 For the best experience on our site, be sure to turn on Javascript in your browser. </span> 526 </p> 527 </div> 528 </section> 529 </noscript> 530 531
532<script> 533 document.body.addEventListener('touchstart', () => {}, {passive: true}) 534</script>
534 535
536<script> 537 (function(hyva) { 538 const formValidationRules = { 539 required(value, options, field, context) { 540 const el = field.element.type === 'hidden' ? createTextInputFrom(field.element) : field.element, 541 //fieldName = getFieldName(field), 542 msg = /*fieldName 543 ? hyva.str('\u00251\u0020field\u0020is\u0020required.', fieldName) 544 :*/ 'This\u0020is\u0020a\u0020required\u0020field.'; 545 546 if (el.type === 'radio' || el.type === 'checkbox') { 547 return (value === undefined || value.length === 0) ? msg : true; 548 } 549 550 el.setAttribute('required', ''); 551 el.checkValidity(); 552 553 return el.validity.valueMissing ? msg : true; 554 }, 555 maxlength(value, options, field, context) { 556 const n = Number(options) 557 if (value.length > n) { 558 const fieldName = getFieldName(field); 559 return fieldName 560 ? n === 1 561 ? hyva.str('\u00251\u0020field\u0020cannot\u0020be\u0020longer\u0020than\u00201\u0020character.', fieldName) 562 : hyva.str('\u00251\u0020field\u0020cannot\u0020be\u0020longer\u0020than\u0020\u00252\u0020characters.', fieldName, options) 563 : n === 1 564 ? 'Please\u0020enter\u0020no\u0020more\u0020than\u00201\u0020character.' 565 : hyva.strf('Please\u0020enter\u0020no\u0020more\u0020than\u0020\u00250\u0020characters.', options); 566 } 567 return true; 568 }, 569 minlength(value, options, field, context) { 570 const n = Number(options) 571 if (value.length > 0 && value.length < n) { 572 const fieldName = getFieldName(field); 573 return fieldName 574 ? n === 1 575 ? hyva.str('\u00251\u0020field\u0020must\u0020be\u0020at\u0020least\u00201\u0020character\u0020long.', fieldName) 576 : hyva.str('\u00251\u0020field\u0020must\u0020be\u0020at\u0020least\u0020\u00252\u0020characters\u0020long.', fieldName, options) 577 : n === 1 578 ? 'Please\u0020enter\u0020at\u0020least\u00201\u0020character.' 579 : hyva.strf('Please\u0020enter\u0020at\u0020least\u0020\u00250\u0020characters.', options); 580 } 581 return true; 582 }, 583 max(value, options, field, context) { 584 field.element.setAttribute('max', options); 585 field.element.checkValidity(); 586 if (field.element.validity.rangeOverflow) { 587 const fieldName = getFieldName(field); 588 return fieldName 589 ? hyva.str('\u00251\u0020field\u0020must\u0020contain\u0020a\u0020value\u0020less\u0020than\u0020or\u0020equal\u0020to\u0020\u0022\u00252\u0022.', fieldName, options) 590 : hyva.strf('Please\u0020enter\u0020a\u0020value\u0020less\u0020than\u0020or\u0020equal\u0020to\u0020\u0022\u00250\u0022.', options); 591 } 592 return true; 593 }, 594 min(value, options, field, context) { 595 field.element.setAttribute('min', options); 596 field.element.checkValidity(); 597 if (field.element.validity.rangeUnderflow) { 598 const fieldName = getFieldName(field); 599 return fieldName 600 ? hyva.str('\u00251\u0020field\u0020must\u0020contain\u0020a\u0020value\u0020greater\u0020than\u0020or\u0020equal\u0020to\u0020\u0022\u00252\u0022.', fieldName, options) 601 : hyva.strf('Please\u0020enter\u0020a\u0020value\u0020greater\u0020than\u0020or\u0020equal\u0020to\u0020\u0022\u00250\u0022.', options); 602 } 603 return true; 604 }, 605 step(value, options, field, context) { 606 field.element.setAttribute('step', options); 607 field.element.checkValidity(); 608 if (field.element.validity.stepMismatch) { 609 const val = Number(value), 610 step = Number(options), 611 fieldName = getFieldName(field), 612 nearestLowerValue = Math.floor(val / step) * step,
613 nearestUpperValue = Math.ceil(val / step) * step; 614 return fieldName 615 ? hyva.str('\u00251\u0020field\u0020is\u0020invalid.\u0020The\u0020two\u0020nearest\u0020valid\u0020values\u0020are\u0020\u0022\u00252\u0022\u0020and\u0020\u0022\u00253\u0022.', fieldName, nearestLowerValue, nearestUpperValue) 616 : hyva.strf('Please\u0020enter\u0020a\u0020valid\u0020value.\u0020The\u0020two\u0020nearest\u0020valid\u0020values\u0020are\u0020\u0022\u00250\u0022\u0020and\u0020\u0022\u00251\u0022.', nearestLowerValue, nearestUpperValue); 617 } 618 return true; 619 }, 620 pattern(value, options, field, context) { 621 field.element.setAttribute('pattern', options); 622 field.element.checkValidity(); 623 if (field.element.validity.patternMismatch) { 624 const fieldName = getFieldName(field); 625 return fieldName 626 ? field.element.pattern 627 ? hyva.str('\u00251\u0020field\u0020must\u0020match\u0020the\u0020requested\u0020format\u003A\u0020\u00252.', fieldName, field.element.pattern) 628 : hyva.str('\u00251\u0020field\u0020must\u0020match\u0020the\u0020requested\u0020format.', fieldName) 629 : field.element.pattern 630 ? hyva.strf('Please\u0020match\u0020the\u0020requested\u0020format\u003A\u0020\u00250.', field.element.pattern) 631 : 'Please\u0020match\u0020the\u0020requested\u0020format.'; 632 } 633 return true; 634 }, 635 email(value, options, field, context) { 636 const rule = /^([a-z0-9,!\#\$%&'\*\+\/=\?\^_`\{\|\}~-]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z0-9,!\#\$%&'\*\+\/=\?\^_`\{\|\}~-]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*@([a-z0-9-]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z0-9-]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*\.(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]){2,})$/i; 637 if (value.length > 0 && !rule.test(value)) { 638 const fieldName = getFieldName(field); 639 return fieldName 640 ? hyva.str('\u00251\u0020field\u0020must\u0020contain\u0020a\u0020valid\u0020email\u0020address\u0020\u0028Ex\u003A\u0020johndoe\u0040domain.com\u0029.', fieldName) 641 : 'Please\u0020enter\u0020a\u0020valid\u0020email\u0020address\u0020\u0028Ex\u003A\u0020johndoe\u0040domain.com\u0029.'; 642 } 643 return true; 644 }, 645 password(value, options, field, context) { 646 const rule = /^(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9])(?=.*?[#?!@$%^&*-]).{8,}$/; 647 if (value.length > 0 && !rule.test(value)) { 648 const fieldName = getFieldName(field); 649 return fieldName 650 ? hyva.str('\u00251\u0020field\u0020must\u0020contain\u0020at\u0020least\u0020one\u0020upper\u0020case,\u0020one\u0020lower\u0020case,\u0020one\u0020digit\u0020and\u0020one\u0020special\u0020character\u0020\u0028\u0023\u003F\u0021\u0040\u0024\u0025\u005E\u0026\u002A\u002D\u0029', fieldName) 651 : 'Please\u0020provide\u0020at\u0020least\u0020one\u0020upper\u0020case,\u0020one\u0020lower\u0020case,\u0020one\u0020digit\u0020and\u0020one\u0020special\u0020character\u0020\u0028\u0023\u003F\u0021\u0040\u0024\u0025\u005E\u0026\u002A\u002D\u0029'; 652 } 653 return true; 654 }, 655 equalTo(value, options, field, context) { 656 const dependencyField = context.fields[options].element; 657 if (value !== dependencyField.value) { 658 const dependencyFieldName = 659 dependencyField.label || 660 dependencyField.title || 661 (dependencyField.labels && dependencyField.labels[0] && dependencyField.labels[0].innerText) || 662 dependencyField.name, 663 fieldName = getFieldName(field); 664 return fieldName
665 ? hyva.str('\u0022\u00251\u0022\u0020field\u0020value\u0020must\u0020be\u0020the\u0020same\u0020as\u0020\u0022\u00252\u0022.', fieldName, dependencyFieldName) 666 : hyva.strf('This\u0020field\u0020value\u0020must\u0020be\u0020the\u0020same\u0020as\u0020\u0022\u00250\u0022.', dependencyFieldName); 667 } 668 return true; 669 } 670 }; 671 672 function raceSome(promises, pred) { 673 return new Promise((resolve, reject) => { 674 675 if (promises.length === 0) { 676 return resolve(); 677 } 678 679 let settled = false, nDone = 0; 680 681 const resolveIf = v => { 682 if (!settled && (pred(v) || ++nDone === promises.length)) { 683 settled = true; 684 resolve(v); 685 } 686 return v; 687 } 688 689 promises.map(promise => { 690 promise.then(resolveIf).catch(reason => { 691 settled = true; 692 reject(reason) 693 }); 694 return promise; 695 }); 696 }); 697 } 698 699 const INPUT_ATTRIBUTE_RULES = {min: 'min', max: 'max', required: 'required', minlength: 'minlength', maxlength: 'maxlength', step: 'step', pattern: 'pattern'} 700 const INPUT_TYPE_RULES = {email: 'email'} 701 702 function getRules(element) { 703 let rules = {}; 704 Object.keys(INPUT_ATTRIBUTE_RULES).forEach(attrName => { 705 if (element.hasAttribute(attrName)) { 706 rules[INPUT_ATTRIBUTE_RULES[attrName]] = element.getAttribute(attrName); 707 } 708 }) 709 if (INPUT_TYPE_RULES[element.type]) { 710 rules[INPUT_TYPE_RULES[element.type]] = true; 711 } 712 713 if (element.dataset.validate) { 714 try { 715 Object.assign(rules, JSON.parse(element.dataset.validate)); 716 } catch (error) { 717 console.error('Validator error. Cannot parse data-validate attribute of element:\n', element); 718 } 719 } 720 721 return rules; 722 } 723 724 function isInvalidRuleResult(ruleState) { 725 return typeof ruleState === 'string' || !ruleState || (ruleState.type && ruleState.content); 726 } 727 728 async function runValidateFn(rule, options, value, field) { 729 return formValidationRules[rule](value, options, field, this); 730 } 731 732 function generateId() { 733 let id; 734 do { 735 id = `${this.idPrefix}-${++this.idSeq}`; 736 } while (document.getElementById(id)); 737 return id; 738 } 739 740 function isVisible(element) { 741 const el = element.type !== 'hidden' ? element : (element.parentElement || {}); 742 return !!(el.offsetWidth || el.offsetHeight || el.getClientRects().length) 743 } 744 745 function elementWillValidate(element) { 746 return (element.willValidate || element.type === 'hidden') 747 && element.tagName !== 'BUTTON' 748 && element.disabled === false 749 && !(element.tagName === 'INPUT' && element.type === 'submit') 750 && (element.hasAttribute('data-validate-hidden') || isVisible(element)) 751 } 752 753 function createMessageContainer(el, fieldWrapperClassName) { 754 if (! el.parentElement) { 755 return; 756 } 757 const refocus = document.activeElement === el; 758 const wrapper = document.createElement('div'); 759 wrapper.classList.add.apply(wrapper.classList, (el.id && [el.id]|| fieldWrapperClassName.split(' '))); 760 el.parentElement.insertBefore(wrapper, el); 761 wrapper.appendChild(el); 762 refocus && document.activeElement !== el && el.focus(); 763 return wrapper; 764 } 765 766 function containerNotFound(selector, el) { 767 const msg = `Cannot find message container element ${selector} of ${el.name}`; 768 console.error(msg, el); 769 throw msg; 770 } 771 772 function createTextInputFrom(el) { 773 const text = document.createElement('INPUT'); 774 text.type = 'text'; 775 text.value = el.value; 776 return text; 777 } 778 779 function classNamesToSelector(classNames) { 780 return classNames.split(' ') 781 .filter(className => className.length > 0) 782 .map(className => `.${className}`) 783 .join('') 784 } 785 786 function hasMessagesWrapper(field, messagesWrapperClassName) { 787 return this.getMessageContainer(field).querySelector(classNamesToSelector(messagesWrapperClassName)); 788 } 789
790 function getMessagesWrapper(field, messagesWrapperClassName) { 791 if (hasMessagesWrapper.call(this, field, messagesWrapperClassName)) { 792 return this.getMessageContainer(field).querySelector(classNamesToSelector(messagesWrapperClassName)); 793 } 794 795 const msgWrapper = document.createElement('ul'); 796 const msgId = generateId.call(this); 797 msgWrapper.id = msgId; 798 field.element.setAttribute('aria-errormessage', msgId); 799 field.element.setAttribute('aria-describedby', msgId); 800 msgWrapper.classList.add.apply(msgWrapper.classList, messagesWrapperClassName.split(' ')); 801 if (field.validateOnChange) { 802 msgWrapper.setAttribute('aria-live', 'polite'); 803 } 804 this.getMessageContainer(field).appendChild(msgWrapper); 805 806 return msgWrapper; 807 } 808 809 function getCheckedValues(field) { 810 const name = field.element.name.replace(/([\\"])/g, '\\$1'); 811 const elements = field.element.form.querySelectorAll('input[name="' + name + '"]:checked'); 812 return Array.from(elements).map(el => el.value); 813 } 814 815 function escapeHtml(s) { 816 const div = document.createElement('div') 817 div.innerText = s; 818 return div.innerHTML; 819 } 820 821 822 function formValidation(form, options = {}) { 823 const formElement = form || this.$el; 824 825 if (formElement.dataset && formElement.dataset.options) { 826 try { 827 options = Object.assign(options, JSON.parse(formElement.dataset.options || '{}')); 828 } catch (e) { 829 throw new Error('Cannot read the form options from the data-options attribute: not valid JSON'); 830 } 831 } 832 833 // Disable browser default validation 834 if (formElement.tagName === 'FORM') { 835 formElement.setAttribute('novalidate', ''); 836 } else { 837 console.error('formValidation can be initialized only on FORM element', formElement); 838 return; 839 } 840 841 options = Object.assign({ 842 fieldWrapperClassName: 'field field-reserved', 843 messagesWrapperClassName: 'messages', 844 validClassName: 'field-success', 845 invalidClassName: 'field-error', 846 pageMessagesWrapperSelector: null, 847 scrollToFirstError: true, 848 }, options || {}); 849 850 return { 851 state: { 852 valid: false, 853 }, 854 fields: {}, 855 idSeq: 0, 856 idPrefix: formElement.id || 'vld-msg', 857 setupFields(elements) { 858 this.fields = {}; 859 Array.from(elements).forEach(element => { 860 if (elementWillValidate(element)) { 861 this.setupField(element); 862 } 863 }); 864 }, 865 setupField(element) { 866 if (! element) return; 867 const onChange = !!element.dataset.onChange; 868 if (elementWillValidate(element)) { 869 const rules = getRules(element); 870 if (Object.keys(rules).length > 0) { 871 if (this.fields[element.name]) { 872 Object.assign(this.fields[element.name].rules, rules); 873 } else { 874 this.fields[element.name] = { 875 element, 876 rules: rules, 877 validateOnChange: onChange, 878 state: { 879 valid: null, 880 rules: {} 881 } 882 } 883 } 884 } 885 } else { 886 console.error('Element will not validate', element); 887 } 888 }, 889 onSubmit(event) { 890 if (event.target.tagName === 'FORM') { 891 event.preventDefault(); 892 893 this.validate() 894 .then(() => event.target.submit()) 895 .catch(invalidElements => {}); 896 } 897 }, 898 onChange(event) {
899 event.target.dataset.onChange = 'true'; 900 if (!Object.keys(this.fields).length) { 901 this.setupFields(formElement.elements); 902 } 903 if (!Object.keys(this.fields).includes(event.target.name)) { 904 this.setupField(event.target); 905 } 906 const field = this.fields[event.target.name]; 907 908 this.validateField(field); 909 field && field.element.removeAttribute('data-on-change') 910 }, 911 validateSafe() { 912 return new Promise(resolve => this.validate().then(() => resolve(true)).catch(() => {})) 913 }, 914 validate() { 915 if (!Object.keys(this.fields).length || !Object.keys(this.fields).length !== formElement.elements.length) { 916 this.setupFields(formElement.elements); 917 } 918 return new Promise(async (resolve, reject) => { 919 if (formElement.elements) { 920 await raceSome(this.validateFields(), result => result !== true) 921 const invalidFields = Object.values(this.fields).filter(field => !field.state.valid); 922 this.state.valid = invalidFields.length === 0; 923 if (this.state.valid) { 924 resolve(); 925 } else { 926 if (options.scrollToFirstError && invalidFields.length > 0) { 927 invalidFields[0].element.focus() 928 invalidFields[0].element.select && invalidFields[0].element.select(); 929 } 930 reject(invalidFields.map(field => field.element)); 931 } 932 } 933 }); 934 }, 935 validateFields() { 936 const fields = Object.values(this.fields); 937 938 fields.forEach(field => { 939 this.getMessageContainer(field).classList.remove(options.validClassName, options.invalidClassName) 940 }); 941 return fields.map(field => this.validateField(field)) 942 }, 943 validateField(field) { 944 if (! field || ! elementWillValidate(field.element)) { 945 return new Promise(resolve => resolve(true)) 946 } 947 948 let value; 949 if (field.element.type === 'checkbox') { 950 value = getCheckedValues(field); 951 } else if (field.element.type === 'radio') { 952 value = getCheckedValues(field)[0] || undefined; 953 } else if (field.element.tagName === 'SELECT' && field.element.multiple) { 954 value = Array.from(field.element.selectedOptions).map(opt => opt.value); 955 } else { 956 value = field.element.value; 957 } 958 959 const rules = field.rules || {}; 960 961 field.state.valid = true; 962 this.showFieldState(field); 963 964 965 const fieldValidations = Object.keys(rules).filter(rule => formValidationRules[rule]).map(async rule => { 966 return runValidateFn.call(this, rule, rules[rule], value, field).then(result => { 967 field.state.rules[rule] = result; 968 return result; 969 }) 970 }); 971 972 return new Promise(resolve => { 973 Promise.all(fieldValidations).then(results => { 974 field.state.valid = !elementWillValidate(field.element) || rules.length === 0 || !results.some(isInvalidRuleResult)
975 this.showFieldState(field); 976 resolve(field.state.valid); 977 }) 978 }); 979 }, 980 getMessagesByField(field) { 981 const messages = []; 982 const invalidRules = Object.keys(field.state.rules).filter(rule => isInvalidRuleResult(field.state.rules[rule])); 983 984 field.rules && Object.keys(field.rules).forEach((rule) => { 985 if (invalidRules.includes(rule)) { 986 const customMessage = field.element.getAttribute('data-msg-' + rule); 987 const message = customMessage ? customMessage : field.state.rules[rule]; 988 const ruleOptions = JSON.parse(JSON.stringify(field.rules[rule])); 989 990 if (typeof message === 'undefined' || message === null || (typeof message !== 'string' && ! message.type)) { 991 messages.push(hyva.strf('Validation rule "%0" failed.', rule)); 992 } else if (Array.isArray(ruleOptions)) { 993 ruleOptions.unshift(message.type ? message.content : message); 994 const content = hyva.strf.apply(null, ruleOptions); 995 messages.push(message.type ? {type: message.type, content} : content); 996 } else { 997 const content = hyva.strf(message.type ? message.content : message, ruleOptions) 998 messages.push(message.type ? {type: message.type, content} : content); 999 } 1000 } 1001 }); 1002 return messages; 1003 }, 1004 /** @deprecated */ 1005 getFieldWrapper(field) { 1006 return this.getMessageContainer(field) 1007 }, 1008 getMessageContainer(field) { 1009 let container; 1010 const pageSelector = field.element.getAttribute('data-validation-container') || options.pageMessagesContainerSelector; 1011 if (pageSelector) { 1012 container = document.querySelector(pageSelector) 1013 || containerNotFound(pageSelector, field.element) 1014 } else { 1015 const containerSelector = classNamesToSelector(field.element.id || options.fieldWrapperClassName); 1016 container = field.element.closest(containerSelector) 1017 || createMessageContainer(field.element, options.fieldWrapperClassName) 1018 || containerNotFound(containerSelector, field.element); 1019 } 1020 1021 return container; 1022 }, 1023 showFieldState(field) { 1024 const container = this.getMessageContainer(field), 1025 hasErrorMessages = hasMessagesWrapper.call(this, field, options.messagesWrapperClassName), 1026 messages = this.getMessagesByField(field).map(m => { 1027 return m.type !== 'html' ? escapeHtml(m.type ? m.content : m) : m.content; 1028 }); 1029 container.classList.toggle(options.validClassName, field.state.valid && ! hasErrorMessages); 1030 container.classList.toggle(options.invalidClassName, !field.state.valid || hasErrorMessages); 1031 this.createHtmlErrorMessage(field, messages); 1032 1033 if (field.state.valid) { 1034 field.element.removeAttribute('aria-invalid'); 1035 } else { 1036 field.element.setAttribute('aria-invalid', 'true'); 1037 if (! document.activeElement) { 1038 field.element.focus(); 1039 } 1040 } 1041 }, 1042 removeMessages(field, messagesClass) { 1043 if (! hasMessagesWrapper.call(this, field, messagesClass || options.messagesWrapperClassName)) { 1044 return; 1045 } 1046 1047 const msgWrapper = getMessagesWrapper.call(this, field, messagesClass || options.messagesWrapperClassName); 1048 const messages = msgWrapper.querySelectorAll(`[data-msg-field='${field.element.name}']`);
1049 Array.from(messages).forEach(msg => msg.remove()); 1050 if (msgWrapper && msgWrapper.childElementCount === 0) { 1051 field.element.removeAttribute('aria-errormessage'); 1052 field.element.removeAttribute('aria-describedby'); 1053 msgWrapper.remove(); 1054 } 1055 }, 1056 createErrorMessage(field, messages) { 1057 const htmlMessages = (Array.isArray(messages) ? messages : [messages]).map(escapeHtml) 1058 this.createHtmlErrorMessage(field, htmlMessages); 1059 }, 1060 createHtmlErrorMessage(field, messages) { 1061 this.removeMessages(field, options.messagesWrapperClassName); 1062 field.element.removeAttribute('aria-errormessage'); 1063 field.element.removeAttribute('aria-describedby'); 1064 1065 if (!field.state.valid) { 1066 const msgWrapper = this.addHtmlMessages(field, options.messagesWrapperClassName, messages); 1067 field.element.setAttribute('aria-errormessage', msgWrapper.id); 1068 field.element.setAttribute('aria-describedby', msgWrapper.id); 1069 } 1070 }, 1071 /** @deprecated */ 1072 createMessage(field, message) { 1073 return this.addMessages(field, options.messagesWrapperClassName, message); 1074 }, 1075 addMessages(field, messagesClass, messages) { 1076 const htmlMessages = (Array.isArray(messages) ? messages : [messages]).map(escapeHtml) 1077 return this.addHtmlMessages(field, messagesClass, htmlMessages); 1078 }, 1079 addHtmlMessages(field, messagesClass, htmlMessages) { 1080 const msgWrapper = getMessagesWrapper.call(this, field, messagesClass); 1081 1082 (Array.isArray(htmlMessages) ? htmlMessages : [htmlMessages]).forEach((htmlMessage) => { 1083 const li = document.createElement('li'); 1084 li.innerHTML = htmlMessage; 1085 li.setAttribute('data-msg-field', field.element.name); 1086 msgWrapper.appendChild(li); 1087 }); 1088 1089 return msgWrapper; 1090 }, 1091 setField(name, value) { 1092 this.fields[name].element.value = value; 1093 this.fields[name].element.dispatchEvent((new Event('input'))); 1094 this.validateField(this.fields[name]); 1095 } 1096 } 1097 } 1098 1099 function getFieldName(field) { 1100 const fieldName = field.element?.getAttribute('title') 1101 || document.querySelector(`label[for="${field.element?.id}"]`)?.innerText; 1102 1103 return fieldName 1104 ? fieldName.trim() 1105 : ''; 1106 } 1107 1108 hyva.formValidation = formValidation; 1109 hyva.formValidation.rules = formValidationRules; 1110 hyva.formValidation.setInputAttributeRuleName = (attrName, ruleName) => INPUT_ATTRIBUTE_RULES[attrName] = ruleName || attrName; 1111 hyva.formValidation.setInputTypeRuleName = (typeName, ruleName) => INPUT_TYPE_RULES[typeName] = ruleName || typeName; 1112 hyva.formValidation.addRule = (name, validator) => formValidationRules[name] = validator; 1113 hyva.formValidation.getFieldName = getFieldName; 1114 }(window.hyva = window.hyva || {})); 1115 1116 window.addEventListener('alpine:init', () => { 1117 Alpine.data('hyva.formValidation', hyva.formValidation); 1118 Alpine.data('hyva.formValidation($el)', hyva.formValidation); 1119 }, {once: true}); 1120</script>
1120 1121<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 1122 contentarea" 1123 href="#contentarea"> 1124 <span> 1125 Skip to Content </span> 1126</a> 1127<div class="p-2 grid-cols-3 hidden md:grid" 1128 style="background-color: #cdd7d7; color: black;"> 1129 <span class="text-base font-bold col-start-2 col-span-1 justify-center flex"> 1130 <span class="mr-1"> 1131 Get 10% discount: </span> 1132 <a href="/en/newsletter" 1133 class="underline hover:no-underline text-base font-bold" 1134 style="color: black;"> 1135 Subscribe to the newsletter </a> 1136 </span> 1137 1138 <div class="col-span-1 col-start-3 flex justify-end"> 1139
1139<script> 1140 function initLanguageSwitcher() { 1141 return { 1142 open: false, 1143 countries: [{"id":2,"label":"Germany","store":"de-de","icon":"https:\/\/www.steiff.com\/static\/version1790768634\/frontend\/Steiff\/default\/en_GB\/languageIcons\/DE.svg"},{"id":3,"label":"Austria","store":"de-at","icon":"https:\/\/www.steiff.com\/static\/version1790768634\/frontend\/Steiff\/default\/en_GB\/languageIcons\/AT.svg"},{"id":4,"label":"United Kingdom","store":"en-uk","icon":"https:\/\/www.steiff.com\/static\/version1790768634\/frontend\/Steiff\/default\/en_GB\/languageIcons\/GB.svg"},{"id":21,"label":"USA \u0026 Canada","store":"en-us","icon":"https:\/\/www.steiff.com\/static\/version1790768634\/frontend\/Steiff\/default\/en_GB\/languageIcons\/US-CA.svg"},{"id":5,"label":"Belgium (English)","store":"en","icon":"https:\/\/www.steiff.com\/static\/version1790768634\/frontend\/Steiff\/default\/en_GB\/languageIcons\/BE.svg"},{"id":6,"label":"Belgium (French)","store":"fr","icon":"https:\/\/www.steiff.com\/static\/version1790768634\/frontend\/Steiff\/default\/en_GB\/languageIcons\/BE.svg"},{"id":7,"label":"France","store":"fr","icon":"https:\/\/www.steiff.com\/static\/version1790768634\/frontend\/Steiff\/default\/en_GB\/languageIcons\/FR.svg"},{"id":8,"label":"Netherlands","store":"en","icon":"https:\/\/www.steiff.com\/static\/version1790768634\/frontend\/Steiff\/default\/en_GB\/languageIcons\/NL.svg"},{"id":9,"label":"Luxembourg","store":"en","icon":"https:\/\/www.steiff.com\/static\/version1790768634\/frontend\/Steiff\/default\/en_GB\/languageIcons\/LU.svg"},{"id":10,"label":"Spain","store":"en","icon":"https:\/\/www.steiff.com\/static\/version1790768634\/frontend\/Steiff\/default\/en_GB\/languageIcons\/ES.svg"},{"id":11,"label":"Portugal","store":"en","icon":"https:\/\/www.steiff.com\/static\/version1790768634\/frontend\/Steiff\/default\/en_GB\/languageIcons\/PT.svg"},{"id":12,"label":"Estonia","store":"en","icon":"https:\/\/www.steiff.com\/static\/version1790768634\/frontend\/Steiff\/default\/en_GB\/languageIcons\/EE.svg"},{"id":13,"label":"Finland","store":"en","icon":"https:\/\/www.steiff.com\/static\/version1790768634\/frontend\/Steiff\/default\/en_GB\/languageIcons\/FI.svg"},{"id":14,"label":"Greece","store":"en","icon":"https:\/\/www.steiff.com\/static\/version1790768634\/frontend\/Steiff\/default\/en_GB\/languageIcons\/GR.svg"},{"id":15,"label":"Ireland","store":"en","icon":"https:\/\/www.steiff.com\/static\/version1790768634\/frontend\/Steiff\/default\/en_GB\/languageIcons\/IE.svg"},{"id":16,"label":"Italy","store":"en","icon":"https:\/\/www.steiff.com\/static\/version1790768634\/frontend\/Steiff\/default\/en_GB\/languageIcons\/IT.svg"},{"id":17,"label":"Latvia","store":"en","icon":"https:\/\/www.steiff.com\/static\/version1790768634\/frontend\/Steiff\/default\/en_GB\/languageIcons\/LV.svg"},{"id":18,"label":"Lithuania","store":"en","icon":"https:\/\/www.steiff.com\/static\/version1790768634\/frontend\/Steiff\/default\/en_GB\/languageIcons\/LT.svg"},{"id":19,"label":"Slovakia","store":"en","icon":"https:\/\/www.steiff.com\/static\/version1790768634\/frontend\/Steiff\/default\/en_GB\/languageIcons\/SK.svg"},{"id":20,"label":"Slovenia","store":"en","icon":"https:\/\/www.steiff.com\/static\/version1790768634\/frontend\/Steiff\/default\/en_GB\/languageIcons\/SI.svg"},{"id":22,"label":"Switzerland (German)","store":"de-ch","icon":"https:\/\/www.steiff.com\/static\/version1790768634\/frontend\/Steiff\/default\/en_GB\/languageIcons\/CH.svg"},{"id":23,"label":"Switzerland (French)","store":"fr-ch","icon":"https:\/\/www.steiff.com\/static\/version1790768634\/frontend\/Steiff\/default\/en_GB\/languageIcons\/CH.svg"},{"id":1,"label":"Europe (English)","store":"en","icon":"https:\/\/www.steiff.com\/static\/version1790768634\/frontend\/Steiff\/default\/en_GB\/languageIcons\/EUR.svg"}], 1144 currentStoreCode: 'en', 1145 countryHtmlMapping: {"1":"\u003Cimg src=\"https:\/\/www.steiff.com\/static\/version1790768634\/frontend\/Steiff\/default\/en_GB\/languageIcons\/EUR.svg\" alt=\"\" class=\"w-4 h-4 group-[.mobile-navigation-appendix]:w-6 group-[.mobile-navigation-appendix]:h-6 inline-block mr-2\"\u003E Europe (English)","2":"\u003Cimg src=\"https:\/\/www.steiff.com\/static\/version1790768634\/frontend\/Steiff\/default\/en_GB\/languageIcons\/DE.svg\" alt=\"\" class=\"w-4 h-4 group-[.mobile-navigation-appendix]:w-6 group-[.mobile-navigation-appendix]:h-6 inline-block mr-2\"\u003E Germany","3":"\u003Cimg src=\"https:\/\/www.steiff.com\/static\/version1790768634\/frontend\/Steiff\/default\/en_GB\/languageIcons\/AT.svg\" alt=\"\" class=\"w-4 h-4 group-[.mobile-navigation-appendix]:w-6 group-[.mobile-navigation-appendix]:h-6 inline-block mr-2\"\u003E Austria","4":"\u003Cimg src=\"https:\/\/www.steiff.com\/static\/version1790768634\/frontend\/Steiff\/default\/en_GB\/languageIcons\/GB.svg\" alt=\"\" class=\"w-4 h-4 group-[.mobile-navigation-appendix]:w-6 group-[.mobile-navigation-appendix]:h-6 inline-block mr-2\"\u003E United Kingdom","21":"\u003Cimg src=\"https:\/\/www.steiff.com\/static\/version1790768634\/frontend\/Steiff\/default\/en_GB\/languageIcons\/US-CA.svg\" alt=\"\" class=\"w-4 h-4 group-[.mobile-navigation-appendix]:w-6 group-[.mobile-navigation-appendix]:h-6 inline-block mr-2\"\u003E USA \u0026amp; Canada","5":"\u003Cimg src=\"https:\/\/www.steiff.com\/static\/version1790768634\/frontend\/Steiff\/default\/en_GB\/languageIcons\/BE.svg\" alt=\"\" class=\"w-4 h-4 group-[.mobile-navigation-appendix]:w-6 group-[.mobile-navigation-appendix]:h-6 inline-block mr-2\"\u003E Belgium (English)","6":"\u003Cimg src=\"https:\/\/www.steiff.com\/static\/version1790768634\/frontend\/Steiff\/default\/en_GB\/languageIcons\/BE.svg\" alt=\"\" class=\"w-4 h-4 group-[.mobile-navigation-appendix]:w-6 group-[.mobile-navigation-appendix]:h-6 inline-block mr-2\"\u003E Belgium (French)","7":"\u003Cimg src=\"https:\/\/www.steiff.com\/static\/version1790768634\/frontend\/Steiff\/default\/en_GB\/languageIcons\/FR.svg\" alt=\"\" class=\"w-4 h-4 group-[.mobile-navigation-appendix]:w-6 group-[.mobile-navigation-appendix]:h-6 inline-block mr-2\"\u003E France","8":"\u003Cimg src=\"https:\/\/www.steiff.com\/static\/version1790768634\/frontend\/Steiff\/default\/en_GB\/languageIcons\/NL.svg\" alt=\"\" class=\"w-4 h-4 group-[.mobile-navigation-appendix]:w-6 group-[.mobile-navigation-appendix]:h-6 inline-block mr-2\"\u003E Netherlands","9":"\u
1145003Cimg src=\"https:\/\/www.steiff.com\/static\/version1790768634\/frontend\/Steiff\/default\/en_GB\/languageIcons\/LU.svg\" alt=\"\" class=\"w-4 h-4 group-[.mobile-navigation-appendix]:w-6 group-[.mobile-navigation-appendix]:h-6 inline-block mr-2\"\u003E Luxembourg","10":"\u003Cimg src=\"https:\/\/www.steiff.com\/static\/version1790768634\/frontend\/Steiff\/default\/en_GB\/languageIcons\/ES.svg\" alt=\"\" class=\"w-4 h-4 group-[.mobile-navigation-appendix]:w-6 group-[.mobile-navigation-appendix]:h-6 inline-block mr-2\"\u003E Spain","11":"\u003Cimg src=\"https:\/\/www.steiff.com\/static\/version1790768634\/frontend\/Steiff\/default\/en_GB\/languageIcons\/PT.svg\" alt=\"\" class=\"w-4 h-4 group-[.mobile-navigation-appendix]:w-6 group-[.mobile-navigation-appendix]:h-6 inline-block mr-2\"\u003E Portugal","12":"\u003Cimg src=\"https:\/\/www.steiff.com\/static\/version1790768634\/frontend\/Steiff\/default\/en_GB\/languageIcons\/EE.svg\" alt=\"\" class=\"w-4 h-4 group-[.mobile-navigation-appendix]:w-6 group-[.mobile-navigation-appendix]:h-6 inline-block mr-2\"\u003E Estonia","13":"\u003Cimg src=\"https:\/\/www.steiff.com\/static\/version1790768634\/frontend\/Steiff\/default\/en_GB\/languageIcons\/FI.svg\" alt=\"\" class=\"w-4 h-4 group-[.mobile-navigation-appendix]:w-6 group-[.mobile-navigation-appendix]:h-6 inline-block mr-2\"\u003E Finland","14":"\u003Cimg src=\"https:\/\/www.steiff.com\/static\/version1790768634\/frontend\/Steiff\/default\/en_GB\/languageIcons\/GR.svg\" alt=\"\" class=\"w-4 h-4 group-[.mobile-navigation-appendix]:w-6 group-[.mobile-navigation-appendix]:h-6 inline-block mr-2\"\u003E Greece","15":"\u003Cimg src=\"https:\/\/www.steiff.com\/static\/version1790768634\/frontend\/Steiff\/default\/en_GB\/languageIcons\/IE.svg\" alt=\"\" class=\"w-4 h-4 group-[.mobile-navigation-appendix]:w-6 group-[.mobile-navigation-appendix]:h-6 inline-block mr-2\"\u003E Ireland","16":"\u003Cimg src=\"https:\/\/www.steiff.com\/static\/version1790768634\/frontend\/Steiff\/default\/en_GB\/languageIcons\/IT.svg\" alt=\"\" class=\"w-4 h-4 group-[.mobile-navigation-appendix]:w-6 group-[.mobile-navigation-appendix]:h-6 inline-block mr-2\"\u003E Italy","17":"\u003Cimg src=\"https:\/\/www.steiff.com\/static\/version1790768634\/frontend\/Steiff\/default\/en_GB\/languageIcons\/LV.svg\" alt=\"\" class=\"w-4 h-4 group-[.mobile-navigation-appendix]:w-6 group-[.mobile-navigation-appendix]:h-6 inline-block mr-2\"\u003E Latvia","18":"\u003Cimg src=\"https:\/\/www.steiff.com\/static\/version1790768634\/frontend\/Steiff\/default\/en_GB\/languageIcons\/LT.svg\" alt=\"\" class=\"w-4 h-4 group-[.mobile-navigation-appendix]:w-6 group-[.mobile-navigation-appendix]:h-6 inline-block mr-2\"\u003E Lithuania","19":"\u003Cimg src=\"https:\/\/www.steiff.com\/static\/version1790768634\/frontend\/Steiff\/default\/en_GB\/languageIcons\/SK.svg\" alt=\"\" class=\"w-4 h-4 group-[.mobile-navigation-appendix]:w-6 group-[.mobile-navigation-appendix]:h-6 inline-block mr-2\"\u003E Slovakia","20":"\u003Cimg src=\"https:\/\/www.steiff.com\/static\/version1790768634\/frontend\/Steiff\/default\/en_GB\/languageIcons\/SI.svg\" alt=\"\" class=\"w-4 h-4 group-[.mobile-navigation-appendix]:w-6 group-[.mobile-navigation-appendix]:h-6 inline-block mr-2\"\u003E Slovenia","22":"\u003Cimg src=\"https:\/\/www.steiff.com\/static\/version1790768634\/frontend\/Steiff\/default\/en_GB\/languageIcons\/CH.svg\" alt=\"\" class=\"w-4 h-4 group-[.mobile-navigation-appendix]:w-6 group-[.mobile-navigation-appendix]:h-6 inline-block mr-2\"\u003E Switzerland (German)","23":"\u003Cimg src=\"https:\/\/www.steiff.com\/static\/version1790768634\/frontend\/Steiff\/default\/en_GB\/languageIcons\/CH.svg\" alt=\"\" class=\"w-4 h-4 group-[.mobile-navigation-appendix]:w-6 group-[.mobile-navigation-appendix]:h-6 inline-block mr-2\"\u003E Switzerland (French)"}, 1146 initialCountryHtml: "\u003Cimg src=\"https:\/\/www.steiff.com\/static\/version1790768634\/frontend\/Steiff\/default\/en_GB\/languageIcons\/EUR.svg\" alt=\"\" class=\"w-4 h-4 group-[.mobile-navigation-appendix]:w-6 group-[.mobile-navigation-appendix]:h-6 inline-block mr-2\"\u003E Europe (English)", 1147 selectedCountryHtml: null, 1148 FALLBACK_EUROPE_COUNTRY_ID: 1, 1149 1150 toggleOpen() { 1151 this.open = !this.open; 1152 }, 1153 1154 setOpenFalse() { 1155 this.open = false;
1156 }, 1157 1158 setFocus() { 1159 this.$nextTick(() => { 1160 if (this.open) { 1161 hyva.trapFocus(this.$refs.options) 1162 } 1163 else { 1164 hyva.releaseFocus() 1165 this.$refs.triggerButton.focus() 1166 } 1167 }) 1168 }, 1169 1170 buildCountryHtml(icon, label) { 1171 return `<img src="${icon}" alt="" class="w-4 h-4 group-[.mobile-navigation-appendix]:w-6 group-[.mobile-navigation-appendix]:h-6 inline-block mr-2"> ${label}`; 1172 }, 1173 1174 findCountryById(countryId) { 1175 const id = typeof countryId === 'string' ? parseInt(countryId, 10) : countryId; 1176 return this.countries.find(country => country.id === id) || null; 1177 }, 1178 1179 isEnOrFrStoreCode() { 1180 return this.currentStoreCode === 'en' || this.currentStoreCode === 'fr'; 1181 }, 1182 1183 getStoredCountry() { 1184 /* we need the browser storage, since for example france and belgium have the same store code, but we want to display the different flags */ 1185 1186 const storage = hyva.getBrowserStorage() 1187 if (!storage) return; 1188 1189 const storedCountryId = storage.getItem('currentCountryId'); 1190 const storedStoreCode = storage.getItem('currentStoreCode'); 1191 1192 if (storedCountryId && storedStoreCode === this.currentStoreCode) { 1193 const country = this.findCountryById(storedCountryId); 1194 if (country && country.store === this.currentStoreCode) { 1195 return country; 1196 } 1197 } 1198 return null; 1199 }, 1200 1201 clearStoredCountry() { 1202 const storage = hyva.getBrowserStorage() 1203 if (!storage) return; 1204 1205 storage.removeItem('currentCountryId'); 1206 storage.removeItem('currentStoreCode'); 1207 }, 1208 1209 init() { 1210 const storedCountry = this.getStoredCountry(); 1211 1212 if (storedCountry && this.countryHtmlMapping[storedCountry.id]) { 1213 this.selectedCountryHtml = this.countryHtmlMapping[storedCountry.id]; 1214 return; 1215 } 1216 1217 const storage = hyva.getBrowserStorage() 1218 if (!storage) return; 1219 1220 if (storage.getItem('currentCountryId') || storage.getItem('currentStoreCode')) { 1221 this.clearStoredCountry(); 1222 } 1223 1224 this.selectedCountryHtml = this.initialCountryHtml; 1225 }, 1226 1227 setCurrentCountry(countryId, url) { 1228 const country = this.findCountryById(countryId); 1229 if (country) { 1230 const storage = hyva.getBrowserStorage() 1231 if (storage) { 1232 storage.setItem('currentCountryId', String(countryId)); 1233 storage.setItem('currentStoreCode', country.store); 1234 } 1235 } 1236 this.setOpenFalse(); 1237 window.location.href = url; 1238 }, 1239 1240 getSelectedCountry() { 1241 const storedCountry = this.getStoredCountry(); 1242 if (storedCountry) { 1243 return this.buildCountryHtml(storedCountry.icon, storedCountry.label); 1244 } 1245 1246 if (this.selectedCountryHtml) { 1247 return this.selectedCountryHtml; 1248 } 1249 1250 if (this.isEnOrFrStoreCode()) { 1251 const europeCountry = this.findCountryById(this.FALLBACK_EUROPE_COUNTRY_ID); 1252 if (europeCountry) { 1253 return this.buildCountryHtml(europeCountry.icon, europeCountry.label); 1254 } 1255 } 1256 1257 return this.initialCountryHtml || ''; 1258 } 1259 } 1260 } 1261 window.addEventListener('alpine:init', () => Alpine.data('initLanguageSwitcher', initLanguageSwitcher), {once: true}) 1262</script>
1262 1263 <div x-data="initLanguageSwitcher" class="relative inline-block text-left z-20 pr-4 group-[.mobile-navigation-appendix]:w-full" 1264 @click.outside="setOpenFalse" 1265 @keydown.window.escape="setOpenFalse" 1266 > 1267 <div> 1268 <button @click.prevent="toggleOpen(); setFocus();" 1269 type="button" 1270 class="w-full pl-4 text-sm group-[.mobile-navigation-appendix]:flex group-[.mobile-navigation-appendix]:w-full group-[.mobile-navigation-appendix]:py-3 group-[.mobile-navigation-appendix]:text-left group-[.mobile-navigation-appendix]:text-base group-[.mobile-navigation-appendix]:font-bold" 1271 aria-haspopup="true" 1272 :aria-expanded="open ? 'true' : 'false'" 1273 x-ref="triggerButton" 1274 > 1275 <span class="inline-block group-[.mobile-navigation-appendix]:flex group-[.mobile-navigation-appendix]:items-center" x-show="!open" x-html="getSelectedCountry()"></span> 1276 <span class="inline-block opacity-80" x-show="open">Buying in</span> 1277 <span class="inline-block transition-transform duration-200 group-[.mobile-navigation-appendix]:ml-auto" :class="{'rotate-180': open}"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" class="inline-block group-[.mobile-navigation-appendix]:w-6 group-[.mobile-navigation-appendix]:h-6" width="16" height="16" role="img"> 1278 <path stroke-linecap="round" stroke-linejoin="round" d="M19 9l-7 7-7-7"/> 1279<title>chevron-down</title></svg> 1280</span> 1281 </button> 1282 </div> 1283 <nav x-cloak 1284 @keydown.escape.stop="setOpenFalse(); setFocus();" 1285 x-show="open" 1286 class="absolute right-0 border max-h-96 top-full z-20 w-fit group-[.mobile-navigation-appendix]:w-full mt-1 overflow-x-hidden origin-top-left rounded-sm shadow-lg bg-white" 1287 > 1288 <div class="h-full my-1" role="menu" aria-orientation="vertical" aria-labelledby="options-menu" 1289 x-ref="options" 1290 > 1291 <a href="https://www.steiff.com/de-de" 1292 class="text-black text-nowrap block px-4 py-1 lg:px-5 hover:bg-gray-light text-sm" 1293 @click.prevent="setCurrentCountry('2', 'https\u003A\u002F\u002Fwww.steiff.com\u002Fde\u002Dde')" 1294 > 1295 <img src="https://www.steiff.com/static/version1790768634/frontend/Steiff/default/en_GB/languageIcons/DE.svg" alt="" class="w-4 h-4 group-[.mobile-navigation-appendix]:w-6 group-[.mobile-navigation-appendix]:h-6 inline-block mr-2"> 1296 Germany </a> 1297 <a href="https://www.steiff.com/de-at" 1298 class="text-black text-nowrap block px-4 py-1 lg:px-5 hover:bg-gray-light text-sm" 1299 @click.prevent="setCurrentCountry('3', 'https\u003A\u002F\u002Fwww.steiff.com\u002Fde\u002Dat')" 1300 > 1301 <img src="https://www.steiff.com/static/version1790768634/frontend/Steiff/default/en_GB/languageIcons/AT.svg" alt="" class="w-4 h-4 group-[.mobile-navigation-appendix]:w-6 group-[.mobile-navigation-appendix]:h-6 inline-block mr-2"> 1302 Austria </a> 1303 <a href="https://www.steiff.com/en-uk" 1304 class="text-black text-nowrap block px-4 py-1 lg:px-5 hover:bg-gray-light text-sm" 1305 @click.prevent="setCurrentCountry('4', 'https\u003A\u002F\u002Fwww.steiff.com\u002Fen\u002Duk')" 1306 > 1307 <img src="https://www.steiff.com/static/version1790768634/frontend/Steiff/default/en_GB/languageIcons/GB.svg" alt="" class="w-4 h-4 group-[.mobile-navigation-appendix]:w-6 group-[.mobile-navigation-appendix]:h-6 inline-block mr-2"> 1308 United Kingdom </a> 1309 <a href="https://www.steiff.com/en-us" 1310 class="text-black text-nowrap block px-4 py-1 lg:px-5 hover:bg-gray-light text-sm" 1311 @click.prevent="setCurrentCountry('21', 'https\u003A\u002F\u002Fwww.steiff.com\u002Fen\u002Dus')" 1312 > 1313 <img src="https://www.steiff.com/static/version1790768634/frontend/Steiff/default/en_GB/languageIcons/US-CA.svg" alt="" class="w-4 h-4 group-[.mobile-navigation-appendix]:w-6 group-[.mobile-navigation-appendix]:h-6 inline-block mr-2"> 1314 USA & Canada </a> 1315 <a href="https://www.steiff.com/en" 1316 class="text-black text-nowrap block px-4 py-1 lg:px-5 hover:bg-gray-light text-sm" 1317 @click.prevent="setCurrentCountry('5', 'https\u003A\u002F\u002Fwww.steiff.com\u002Fen')" 1318 > 1319 <img src="https://www.steiff.com/static/version1790768634/frontend/Steiff/default/en_GB/languageIcons/BE.svg" alt="" class="w-4 h-4 group-[.mobile-navigation-appendix]:w-6 group-[.mobile-navigation-appendix]:h-6 inline-block mr-2"> 1320 Belgium (English) </a> 1321 <a href="https://www.steiff.com/fr" 1322 class="text-black text-nowrap block px-4 py-1 lg:px-5 hover:bg-gray-light text-sm" 1323 @click.prevent="setCurrentCountry('6', 'https\u003A\u002F\u002Fwww.steiff.com\u002Ffr')" 1324 > 1325 <img src="https://www.steiff.com/static/version1790768634/frontend/Steiff/default/en_GB/languageIcons/BE.svg" alt="" class="w-4 h-4 group-[.mobile-navigation-appendix]:w-6 group-[.mobile-navigation-appendix]:h-6 inline-block mr-2"> 1326 Belgium (French) </a> 1327 <a href="https://www.steiff.com/fr" 1328 class="text-black text-nowrap block px-4 py-1 lg:px-5 hover:bg-gray-light text-sm" 1329 @click.prevent="setCurrentCountry('7', 'https\u003A\u002F\u002Fwww.steiff.com\u002Ffr')" 1330 > 1331 <img src="https://www.steiff.com/static/version1790768634/frontend/Steiff/default/en_GB/languageIcons/FR.svg" alt="" class="w-4 h-4 group-[.mobile-navigation-appendix]:w-6 group-[.mobile-navigation-appendix]:h-6 inline-block mr-2"> 1332 France </a> 1333 <a href="https://www.steiff.com/en" 1334 class="text-black text-nowrap block px-4 py-1 lg:px-5 hover:bg-gray-light text-sm" 1335 @click.prevent="setCurrentCountry('8', 'https\u003A\u002F\u002Fwww.steiff.com\u002Fen')" 1336 > 1337 <img src="https://www.steiff.com/static/version1790768634/frontend/Steiff/default/en_GB/languageIcons/NL.svg" alt="" class="w-4 h-4 group-[.mobile-navigation-appendix]:w-6 group-[.mobile-navigation-appendix]:h-6 inline-block mr-2"> 1338 Netherlands </a> 1339 <a href="https://www.steiff.com/en" 1340 class="text-black text-nowrap block px-4 py-1 lg:px-5 hover:bg-gray-light text-sm" 1341 @click.prevent="setCurrentCountry('9', 'https\u003A\u002F\u002Fwww.steiff.com\u002Fen')" 1342 > 1343 <img src="https://www.steiff.com/static/version1790768634/frontend/Steiff/default/en_GB/languageIcons/LU.svg" alt="" class="w-4 h-4 group-[.mobile-navigation-appendix]:w-6 group-[.mobile-navigation-appendix]:h-6 inline-block mr-2"> 1344 Luxembourg </a> 1345 <a href="https://www.steiff.com/en" 1346 class="text-black text-nowrap block px-4 py-1 lg:px-5 hover:bg-gray-light text-sm" 1347 @click.prevent="setCurrentCountry('10', 'https\u003A\u002F\u002Fwww.steiff.com\u002Fen')" 1348 > 1349 <img src="https://www.steiff.com/static/version1790768634/frontend/Steiff/default/en_GB/languageIcons/ES.svg" alt="" class="w-4 h-4 group-[.mobile-navigation-appendix]:w-6 group-[.mobile-navigation-appendix]:h-6 inline-block mr-2"> 1350 Spain </a> 1351 <a href="https://www.steiff.com/en" 1352 class="text-black text-nowrap block px-4 py-1 lg:px-5 hover:bg-gray-light text-sm" 1353 @click.prevent="setCurrentCountry('11', 'https\u003A\u002F\u002Fwww.steiff.com\u002Fen')" 1354 > 1355 <img src="https://www.steiff.com/static/version1790768634/frontend/Steiff/default/en_GB/languageIcons/PT.svg" alt="" class="w-4 h-4 group-[.mobile-navigation-appendix]:w-6 group-[.mobile-navigation-appendix]:h-6 inline-block mr-2"> 1356 Portugal </a> 1357 <a href="https://www.steiff.com/en" 1358 class="text-black text-nowrap block px-4 py-1 lg:px-5 hover:bg-gray-light text-sm" 1359 @click.prevent="setCurrentCountry('12', 'https\u003A\u002F\u002Fwww.steiff.com\u002Fen')" 1360 > 1361 <img src="https://www.steiff.com/static/version1790768634/frontend/Steiff/default/en_GB/languageIcons/EE.svg" alt="" class="w-4 h-4 group-[.mobile-navigation-appendix]:w-6 group-[.mobile-navigation-appendix]:h-6 inline-block mr-2"> 1362 Estonia </a> 1363 <a href="https://www.steiff.com/en" 1364 class="text-black text-nowrap block px-4 py-1 lg:px-5 hover:bg-gray-light text-sm" 1365 @click.prevent="setCurrentCountry('13', 'https\u003A\u002F\u002Fwww.steiff.com\u002Fen')" 1366 > 1367 <img src="https://www.steiff.com/static/version1790768634/frontend/Steiff/default/en_GB/languageIcons/FI.svg" alt="" class="w-4 h-4 group-[.mobile-navigation-appendix]:w-6 group-[.mobile-navigation-appendix]:h-6 inline-block mr-2"> 1368 Finland </a> 1369 <a href="https://www.steiff.com/en" 1370 class="text-black text-nowrap block px-4 py-1 lg:px-5 hover:bg-gray-light text-sm" 1371 @click.prevent="setCurrentCountry('14', 'https\u003A\u002F\u002Fwww.steiff.com\u002Fen')" 1372 > 1373 <img src="https://www.steiff.com/static/version1790768634/frontend/Steiff/default/en_GB/languageIcons/GR.svg" alt="" class="w-4 h-4 group-[.mobile-navigation-appendix]:w-6 group-[.mobile-navigation-appendix]:h-6 inline-block mr-2"> 1374 Greece </a> 1375 <a href="https://www.steiff.com/en" 1376 class="text-black text-nowrap block px-4 py-1 lg:px-5 hover:bg-gray-light text-sm" 1377 @click.prevent="setCurrentCountry('15', 'https\u003A\u002F\u002Fwww.steiff.com\u002Fen')" 1378 > 1379 <img src="https://www.steiff.com/static/version1790768634/frontend/Steiff/default/en_GB/languageIcons/IE.svg" alt="" class="w-4 h-4 group-[.mobile-navigation-appendix]:w-6 group-[.mobile-navigation-appendix]:h-6 inline-block mr-2"> 1380 Ireland </a> 1381 <a href="https://www.steiff.com/en" 1382 class="text-black text-nowrap block px-4 py-1 lg:px-5 hover:bg-gray-light text-sm" 1383 @click.prevent="setCurrentCountry('16', 'https\u003A\u002F\u002Fwww.steiff.com\u002Fen')" 1384 > 1385 <img src="https://www.steiff.com/static/version1790768634/frontend/Steiff/default/en_GB/languageIcons/IT.svg" alt="" class="w-4 h-4 group-[.mobile-navigation-appendix]:w-6 group-[.mobile-navigation-appendix]:h-6 inline-block mr-2"> 1386 Italy </a> 1387 <a href="https://www.steiff.com/en" 1388 class="text-black text-nowrap block px-4 py-1 lg:px-5 hover:bg-gray-light text-sm" 1389 @click.prevent="setCurrentCountry('17', 'https\u003A\u002F\u002Fwww.steiff.com\u002Fen')" 1390 > 1391 <img src="https://www.steiff.com/static/version1790768634/frontend/Steiff/default/en_GB/languageIcons/LV.svg" alt="" class="w-4 h-4 group-[.mobile-navigation-appendix]:w-6 group-[.mobile-navigation-appendix]:h-6 inline-block mr-2"> 1392 Latvia </a> 1393 <a href="https://www.steiff.com/en" 1394 class="text-black text-nowrap block px-4 py-1 lg:px-5 hover:bg-gray-light text-sm" 1395 @click.prevent="setCurrentCountry('18', 'https\u003A\u002F\u002Fwww.steiff.com\u002Fen')" 1396 > 1397 <img src="https://www.steiff.com/static/version1790768634/frontend/Steiff/default/en_GB/languageIcons/LT.svg" alt="" class="w-4 h-4 group-[.mobile-navigation-appendix]:w-6 group-[.mobile-navigation-appendix]:h-6 inline-block mr-2"> 1398 Lithuania </a> 1399 <a href="https://www.steiff.com/en" 1400 class="text-black text-nowrap block px-4 py-1 lg:px-5 hover:bg-gray-light text-sm" 1401 @click.prevent="setCurrentCountry('19', 'https\u003A\u002F\u002Fwww.steiff.com\u002Fen')" 1402 > 1403 <img src="https://www.steiff.com/static/version1790768634/frontend/Steiff/default/en_GB/languageIcons/SK.svg" alt="" class="w-4 h-4 group-[.mobile-navigation-appendix]:w-6 group-[.mobile-navigation-appendix]:h-6 inline-block mr-2"> 1404 Slovakia </a> 1405 <a href="https://www.steiff.com/en" 1406 class="text-black text-nowrap block px-4 py-1 lg:px-5 hover:bg-gray-light text-sm" 1407 @click.prevent="setCurrentCountry('20', 'https\u003A\u002F\u002Fwww.steiff.com\u002Fen')" 1408 > 1409 <img src="https://www.steiff.com/static/version1790768634/frontend/Steiff/default/en_GB/languageIcons/SI.svg" alt="" class="w-4 h-4 group-[.mobile-navigation-appendix]:w-6 group-[.mobile-navigation-appendix]:h-6 inline-block mr-2"> 1410 Slovenia </a> 1411 <a href="https://www.steiff.com/de-ch" 1412 class="text-black text-nowrap block px-4 py-1 lg:px-5 hover:bg-gray-light text-sm" 1413 @click.prevent="setCurrentCountry('22', 'https\u003A\u002F\u002Fwww.steiff.com\u002Fde\u002Dch')" 1414 > 1415 <img src="https://www.steiff.com/static/version1790768634/frontend/Steiff/default/en_GB/languageIcons/CH.svg" alt="" class="w-4 h-4 group-[.mobile-navigation-appendix]:w-6 group-[.mobile-navigation-appendix]:h-6 inline-block mr-2"> 1416 Switzerland (German) </a> 1417 <a href="https://www.steiff.com/fr-ch" 1418 class="text-black text-nowrap block px-4 py-1 lg:px-5 hover:bg-gray-light text-sm" 1419 @click.prevent="setCurrentCountry('23', 'https\u003A\u002F\u002Fwww.steiff.com\u002Ffr\u002Dch')" 1420 > 1421 <img src="https://www.steiff.com/static/version1790768634/frontend/Steiff/default/en_GB/languageIcons/CH.svg" alt="" class="w-4 h-4 group-[.mobile-navigation-appendix]:w-6 group-[.mobile-navigation-appendix]:h-6 inline-block mr-2">
1422 Switzerland (French) </a> 1423 </div> 1424 </nav> 1425 </div> 1426 1427 </div> 1428</div>
1429<script> 1430 function initHeader () { 1431 return { 1432 searchOpen: false, 1433 cart: {}, 1434 isCartOpen: false, 1435 menuMobileOpen: false, 1436 focused: false, 1437 isLoggedIn: false, 1438 isMobileMode: null, 1439 wishlist: {}, 1440 setIsMobileMode() { 1441 this.isMobileMode = window.innerWidth < 1024 1442 }, 1443 getData(data) { 1444 if (data.cart) { this.cart = data.cart } 1445 1446 this.isLoggedIn = data.customer && data.customer.firstname || false 1447 if(this.isLoggedIn) { 1448 if (data.wishlist) { this.wishlist = data.wishlist } 1449 } 1450 }, 1451 isCartEmpty() { 1452 return !this.cart.summary_count 1453 }, 1454 isWishlistEmpty() { 1455 return !this.wishlist.counter; 1456 }, 1457 toggleCart(event) { 1458 if (event.detail && event.detail.isOpen !== undefined) { 1459 this.isCartOpen = event.detail.isOpen 1460 if (!this.isCartOpen && this.$refs && this.$refs.cartButton) { 1461 this.$refs.cartButton.focus() 1462 } 1463 } else { 1464 this.isCartOpen = true 1465 } 1466 } 1467 } 1468 } 1469 function initCompareHeader() { 1470 return { 1471 compareProducts: null, 1472 itemCount: 0, 1473 receiveCompareData(data) { 1474 if (data['compare-products']) { 1475 this.compareProducts = data['compare-products']; 1476 this.itemCount = this.compareProducts.count; 1477 } 1478 } 1479 } 1480 } 1481</script>
1481 1482<div id="header" 1483 class="container flex flex-wrap lg:flex-nowrap items-center justify-between w-full px-4 py-1 lg:pt-4 lg:pb-0 mx-auto mt-0 container-header 3xl:py-2" 1484 x-data="initHeader()" 1485 x-init="setIsMobileMode()" 1486 @private-content-loaded.window="getData(event.detail.data)" 1487 @search-focused.window="focused = $event.detail.focused" 1488 x-on:resize.window.debounce="setIsMobileMode()" 1489 x-on:menu-mobile-open.window="menuMobileOpen = $event.detail.isOpen" 1490> 1491 <div class="flex w-full justify-between items-center lg:flex-wrap 3xl:flex-nowrap"> 1492 <!--Logo-desktop--> 1493 <div class="hidden lg:block" id="logo-desktop"> 1494 1495<a 1496 href="https://www.steiff.com/en" 1497 aria-label="Go to Home page" 1498> 1499 <img 1500 src="https://www.steiff.com/static/version1790768634/frontend/Steiff/default/en_GB/images/logo.svg" 1501 alt="Steiff European Online Shop" 1502 width="143" height="58" loading="eager" 1503 /> 1504 </a> 1505 </div> 1506 1507
1507<script> 1508 const Topmenu_6abed136c7cb5 = function () { 1509 return { 1510 openSubmenuId: null, 1511 openSubmenuLevel2Ids: [], 1512 isTabModeActive: null, 1513 isMobileNavigationOpen: null, 1514 isMobileMode: null, 1515 canDisplay: true, 1516 toggleSubmenu(menuNode) { 1517 if (menuNode === this.openSubmenuId) { 1518 this.openSubmenuId = null 1519 hyva.releaseFocus() 1520 } else { 1521 this.openSubmenuId = menuNode 1522 this.$nextTick(() => { 1523 hyva.trapFocus(this.$refs['submenu-' + menuNode]) 1524 }) 1525 } 1526 }, 1527 onSubmenuEscape(event) { 1528 event.stopPropagation() 1529 this.$refs['sr-button-' + this.openSubmenuId]?.focus() 1530 this.openSubmenuId = null 1531 }, 1532 changeMobileNavigationState(state) { 1533 this.isMobileNavigationOpen = state 1534 this.openSubmenuId = null 1535 this.openSubmenuLevel2Ids = [] 1536 1537 this.$nextTick(() => { 1538 if (this.isMobileNavigationOpen) { 1539 hyva.trapFocus(this.$root) 1540 } 1541 else { 1542 hyva.releaseFocus() 1543 document.getElementById('menu-mobile-icon')?.focus() 1544 } 1545 }) 1546 }, 1547 closeMobileNavigation() { 1548 if (this.isMobileNavigationOpen) { 1549 this.changeMobileNavigationState(false) 1550 window.dispatchEvent(new CustomEvent('menu-mobile-open', {detail: {isOpen: false}})) 1551 } 1552 }, 1553 setIsMobileMode() { 1554 this.isMobileMode = Boolean(document.getElementById('menu-mobile-icon').clientHeight) 1555 }, 1556 dispatchLevel2Interaction(level1Id) { 1557 if (this.isActiveLevel2(level1Id)) { 1558 this.openSubmenuLevel2Ids = this.openSubmenuLevel2Ids.filter(item => item !== level1Id) 1559 } 1560 else { 1561 this.openSubmenuLevel2Ids.push(level1Id) 1562 } 1563 }, 1564 isActiveLevel2(level1Id) { 1565 return Boolean(this.openSubmenuLevel2Ids.some(item => item === level1Id)) 1566 }, 1567 changeNavigationVisibilityStateClass(canDisplay) { 1568 this.canDisplay = canDisplay 1569 this.changeMobileNavigationState(false) 1570 } 1571 } 1572 } 1573 </script>
1573 1574 1575 <div class="contents lg:block lg:w-full lg:order-last lg:container lg:mx-auto 3xl:order-none 3xl:w-auto" 1576 x-data="Topmenu_6abed136c7cb5()" 1577 x-init="setIsMobileMode()" 1578 :class="{ 'hidden': isMobileMode && !isMobileNavigationOpen }" 1579 x-on:focus-changed.window="isTabModeActive = $event.detail.focusedByTab" 1580 x-on:menu-mobile-open.window="changeMobileNavigationState($event.detail.isOpen)" 1581 x-on:toggle-search.window="changeNavigationVisibilityStateClass(! $event.detail.isOpen)" 1582 x-on:search-focused.window="changeNavigationVisibilityStateClass(! $event.detail.focused)" 1583 x-on:resize.window.debounce="setIsMobileMode()" 1584 x-on:click.outside="closeMobileNavigation()" 1585 x-on:keydown.escape.stop="closeMobileNavigation()" 1586 > 1587 <div class="main-navigation hidden lg:block max-lg:overflow-y-auto fixed top-header-height mt-px left-0 w-full lg:mt-0 lg:static lg:pt-0 bg-gray-light lg:bg-white lg:!h-auto lg:w-auto lg:mx-auto lg:order-last 3xl:pt-0 3xl:pb-4 3xl:!h-[76px] 3xl:order-none 3xl:mx-0 3xl:flex" 1588 :class="{ 'hidden' : false, 'bg-gray-light' : !openSubmenuId, 'bg-white' : openSubmenuId }" 1589 :style="isMobileNavigationOpen && isMobileMode && 'height: calc(100% - var(--header-height) - 1px)' || ''" 1590 x-on:mouseleave="openSubmenuId = !isMobileMode ? null : openSubmenuId" 1591 :role="isMobileMode ? 'dialog' : false" 1592 > 1593 <nav class="3xl:mt-3 flex flex-col mx-auto" 1594 :class="{'tab-mode-active' : isTabModeActive, '3xl:!hidden' : !canDisplay}" 1595 x-show="isMobileNavigationOpen || !isMobileMode" 1596 :aria-expanded="isMobileNavigationOpen && isMobileMode" 1597 aria-label="Main menu" 1598 > 1599 <ul class="flex flex-col bg-white lg:flex-row lg:items-center lg:h-18 justify-center"> 1600 <li class="flex w-full lg:hidden items-center border-b border-gray-medium" 1601 x-show="openSubmenuId === null || !isMobileMode" 1602 > 1603 <button onclick="location.assign('https://www.steiff.com/en')" 1604 class="font-bold px-4 py-3 flex gap-2" 1605 > 1606 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" viewBox="0 0 24 24" class="text-cherryRed" aria-hidden="true"><path d="m6 8-4 4 4 4M2 12h20"/></svg> 1607 <span class="hover:underline">Return to Home Page</span> 1608 </button> 1609 </li> 1610 <li class="3xl:pb-5 flex flex-col w-full lg:w-auto items-center justify-between border-b border-gray-medium lg:border-b-0 lg:pr-10 xl:pr-9" 1611 :class="{'border-b' : openSubmenuId !== '7192'}" 1612 x-on:mouseenter="openSubmenuId = !isMobileMode && '7192' || openSubmenuId" 1613 x-show="openSubmenuId === null || openSubmenuId === '7192' || !isMobileMode" 1614 > 1615 <div class="group has-children flex w-full lg:border-b-[4px] lg:border-b-white h-full py-3 lg:pb-2 px-4 lg:px-0" 1616 :class="{'lg:!border-b-black' : '1' && openSubmenuId === '7192', '-translate-x-full !p-0 !h-0' : isMobileMode && openSubmenuId }" 1617 1618 > 1619 <a href="https://www.steiff.com/en/stuffed-animals-toys" 1620 class="font-bold lg:font-semibold group-[.has-children]:hidden lg:!block w-full 3xl:whitespace-nowrap xl:text-lg" 1621 data-is-link 1622 > 1623 Stuffed Animals & Toys </a> 1624 1625 1626 <div class="relative flex w-full lg:w-auto"> 1627 <button 1628 type="button" 1629 class="flex items-center w-full justify-between lg:w-auto lg:ml-2 transition-transform duration-300" 1630 x-show="isTabModeActive || isMobileMode" 1631 x-cloak 1632 :class="{'rotate-180' : !isMobileMode && openSubmenuId === '7192'}" 1633 x-ref="sr-button-7192" 1634 :aria-expanded="openSubmenuId === '7192' ? 'true' : 'false'" 1635 x-on:click.stop="toggleSubmenu('7192')" 1636 >
1637 <span class="font-bold hidden group-[.has-children]:block lg:!hidden hover:cursor-pointer" 1638 > 1639 Stuffed Animals & Toys </span> 1640 1641 1642 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" class="hidden lg:block" width="24" height="24" aria-hidden="true"> 1643 <path fill-rule="evenodd" d="M5.293 7.293a1 1 0 011.414 0L10 10.586l3.293-3.293a1 1 0 111.414 1.414l-4 4a1 1 0 01-1.414 0l-4-4a1 1 0 010-1.414z" clip-rule="evenodd"/> 1644</svg> 1645 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" viewBox="0 0 24 24" class="lg:hidden" aria-hidden="true"><path d="m18 8 4 4-4 4M2 12h20"/></svg> 1646 <span class="sr-only" 1647 id="nav-button-7192" 1648 > 1649 Toggle submenu for Stuffed Animals & Toys </span> 1650 </button> 1651 </div> 1652 </div> 1653 <div x-ref="submenu-7192" 1654 class="lg:absolute left-0 top-full w-full z-30 lg:shadow-md bg-white flex border-t border-steelMist" 1655 x-show="openSubmenuId === '7192'" 1656 :aria-expanded="openSubmenuId === '7192'" 1657 aria-labelledby="nav-button-7192" 1658 x-on:keydown.escape="onSubmenuEscape" 1659 x-cloak 1660 > 1661 <div class="w-full"> 1662 <ul class="flex flex-col lg:container lg:grid grid-cols-5 xl:grid-cols-6 gap-4 items-start lg:py-10 group/level-1 max-w-[1493px]" 1663 aria-description="Submenu for Stuffed Animals & Toys" 1664 > 1665 <li class="flex w-full lg:hidden items-center border-b border-gray-medium bg-white sticky top-0 -mt-px"> 1666 <button x-on:click="openSubmenuLevel2Ids = []; openSubmenuId = null;" class="font-bold px-4 py-3 flex gap-2"> 1667 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" viewBox="0 0 24 24" class="text-cherryRed" aria-hidden="true"><path d="m6 8-4 4 4 4M2 12h20"/></svg> 1668 <span class="hover:underline">Stuffed Animals & Toys</span> 1669 </button> 1670 </li> 1671 <li class="flex w-full lg:hidden items-center border-b border-gray-medium"> 1672 <a href="https://www.steiff.com/en/stuffed-animals-toys" class="font-bold px-4 py-3 hover:underline"> 1673 Show all results </a> 1674 </li> 1675 <li class="flex flex-col w-full max-lg:border-b border-gray-medium group "> 1676 <button type="button" 1677 class="flex justify-between lg:hidden peer is-parent font-semibold px-4 py-3 text-left" 1678 x-on:click="dispatchLevel2Interaction('7267')" 1679 >
1680 <span>Highlights & New Arrivals</span> 1681 <span class="w-4 h-4 block relative"> 1682 <span class="absolute top-0 left-0 duration-200" 1683 :class="{'rotate-180 text-cherryRed' : isActiveLevel2('7267')}" 1684 > 1685 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" class="w-5" width="24" height="24" role="img"> 1686 <path fill-rule="evenodd" d="M5.293 7.293a1 1 0 011.414 0L10 10.586l3.293-3.293a1 1 0 111.414 1.414l-4 4a1 1 0 01-1.414 0l-4-4a1 1 0 010-1.414z" clip-rule="evenodd"/> 1687<title>chevron-down</title></svg> 1688 </span> 1689 </span> 1690 </button> 1691 <div class="lg:!block lg:mb-3.5 peer-[.is-parent]:hidden"> 1692 <span class="block font-semibold px-4 py-3 lg:p-0 data-[is-link]:hover:underline hover:cursor-pointer" 1693 style="color: 000000;" > 1694 Highlights & New Arrivals </span> 1695 </div> 1696 1697 1698 <ul class="flex flex-col mb-2 lg:mb-0 text-gray-darker lg:text-black" 1699 x-show="!isMobileMode || isActiveLevel2('7267')" 1700 > 1701 <li class="block lg:mb-2 "> 1702 <a href="https://www.steiff.com/en/stuffed-animals-toys/all-stuffed-animals/recommendations/novelties" 1703 class="block px-4 lg:p-0 text-sm data-[is-link]:hover:underline max-lg:leading-8" 1704 data-is-link 1705 > 1706 New Arrivals </a> 1707 1708 1709 </li> 1710 <li class="block lg:mb-2 "> 1711 <a href="https://www.steiff.com/en/stuffed-animals-toys/all-stuffed-animals/recommendations/halloween" 1712 class="block px-4 lg:p-0 text-sm data-[is-link]:hover:underline max-lg:leading-8" 1713 style="color: #CC4B00;" data-is-link 1714 > 1715 Halloween Stuffed Animals </a> 1716 1717 1718 </li> 1719 <li class="block lg:mb-2 "> 1720 <a href="https://www.steiff.com/en/stuffed-animals-toys/all-stuffed-animals/stuffed-animals/film-comic-heroes/hello-kitty" 1721 class="block px-4 lg:p-0 text-sm data-[is-link]:hover:underline max-lg:leading-8" 1722 style="color: 000000;" data-is-link 1723 > 1724 Hello Kitty </a> 1725 1726 1727 </li> 1728 <li class="block lg:mb-2 "> 1729 <a href="https://www.steiff.com/en/stuffed-animals-toys/all-stuffed-animals/stuffed-animals/film-comic-heroes/peanuts" 1730 class="block px-4 lg:p-0 text-sm data-[is-link]:hover:underline max-lg:leading-8" 1731 style="color: 000000;" data-is-link 1732 > 1733 Peanuts </a> 1734 1735 1736 </li> 1737 <li class="block lg:mb-2 "> 1738 <a href="https://www.steiff.com/en/stuffed-animals-toys/all-stuffed-animals/stuffed-animals/film-comic-heroes/disney" 1739 class="block px-4 lg:p-0 text-sm data-[is-link]:hover:underline max-lg:leading-8" 1740 style="color: 000000;" data-is-link 1741 > 1742 Disney </a> 1743 1744 1745 </li> 1746 </ul> 1747 </li> 1748 <li class="flex flex-col w-full max-lg:border-b border-gray-medium group "> 1749 <button type="button" 1750 class="flex justify-between lg:hidden peer is-parent font-semibold px-4 py-3 text-left" 1751 x-on:click="dispatchLevel2Interaction('7198')" 1752 >
1753 <span>Teddy Bears</span> 1754 <span class="w-4 h-4 block relative"> 1755 <span class="absolute top-0 left-0 duration-200" 1756 :class="{'rotate-180 text-cherryRed' : isActiveLevel2('7198')}" 1757 > 1758 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" class="w-5" width="24" height="24" role="img"> 1759 <path fill-rule="evenodd" d="M5.293 7.293a1 1 0 011.414 0L10 10.586l3.293-3.293a1 1 0 111.414 1.414l-4 4a1 1 0 01-1.414 0l-4-4a1 1 0 010-1.414z" clip-rule="evenodd"/> 1760<title>chevron-down</title></svg> 1761 </span> 1762 </span> 1763 </button> 1764 <div class="lg:!block lg:mb-3.5 peer-[.is-parent]:hidden"> 1765 <a href="https://www.steiff.com/en/stuffed-animals-toys/all-stuffed-animals/teddy-bears" 1766 class="block font-semibold px-4 py-3 lg:p-0 data-[is-link]:hover:underline" 1767 style="color: 000000;" data-is-link 1768 > 1769 Teddy Bears </a> 1770 </div> 1771 1772 1773 <ul class="flex flex-col mb-2 lg:mb-0 text-gray-darker lg:text-black" 1774 x-show="!isMobileMode || isActiveLevel2('7198')" 1775 > 1776 <li class="flex w-full lg:hidden items-center"> 1777 <a href="https://www.steiff.com/en/stuffed-animals-toys/all-stuffed-animals/teddy-bears" class="max-lg:leading-8 text-sm px-4 w-full hover:underline"> 1778 Show all results </a> 1779 </li> 1780 <li class="block lg:mb-2 "> 1781 <a href="https://www.steiff.com/en/stuffed-animals-toys/all-stuffed-animals/teddy-bears/popular-teddy-bears" 1782 class="block px-4 lg:p-0 text-sm data-[is-link]:hover:underline max-lg:leading-8" 1783 style="color: 000000;" data-is-link 1784 > 1785 Popular Teddy Bears </a> 1786 1787 1788 </li> 1789 <li class="block lg:mb-2 "> 1790 <a href="https://www.steiff.com/en/personalised-products" 1791 class="block px-4 lg:p-0 text-sm data-[is-link]:hover:underline max-lg:leading-8" 1792 style="color: 000000;" data-is-link 1793 > 1794 Personalisable Teddy Bears </a> 1795 1796 1797 </li> 1798 <li class="block lg:mb-2 "> 1799 <a href="https://www.steiff.com/en/stuffed-animals-toys/all-stuffed-animals/teddy-bears/city-bears"
1800 class="block px-4 lg:p-0 text-sm data-[is-link]:hover:underline max-lg:leading-8" 1801 style="color: 000000;" data-is-link 1802 > 1803 City Bears </a> 1804 1805 1806 </li> 1807 <li class="block lg:mb-2 "> 1808 <a href="https://www.steiff.com/en/hoodie-teddy-bears-" 1809 class="block px-4 lg:p-0 text-sm data-[is-link]:hover:underline max-lg:leading-8" 1810 style="color: 000000;" data-is-link 1811 target="_blank" 1812 rel="noopener noreferrer" 1813 > 1814 Hoodie Teddy Bears </a> 1815 1816 1817 </li> 1818 <li class="block lg:mb-2 "> 1819 <a href="https://www.steiff.com/en/stuffed-animals-toys/all-stuffed-animals/teddy-bears/more-teddy-bears" 1820 class="block px-4 lg:p-0 text-sm data-[is-link]:hover:underline max-lg:leading-8" 1821 style="color: 000000;" data-is-link 1822 > 1823 More Teddy Bears </a> 1824 1825 1826 </li> 1827 </ul> 1828 </li> 1829 <li class="flex flex-col w-full max-lg:border-b border-gray-medium group "> 1830 <button type="button" 1831 class="flex justify-between lg:hidden peer is-parent font-semibold px-4 py-3 text-left" 1832 x-on:click="dispatchLevel2Interaction('7204')" 1833 > 1834 <span>Stuffed Animals</span> 1835 <span class="w-4 h-4 block relative"> 1836 <span class="absolute top-0 left-0 duration-200" 1837 :class="{'rotate-180 text-cherryRed' : isActiveLevel2('7204')}" 1838 > 1839 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" class="w-5" width="24" height="24" role="img"> 1840 <path fill-rule="evenodd" d="M5.293 7.293a1 1 0 011.414 0L10 10.586l3.293-3.293a1 1 0 111.414 1.414l-4 4a1 1 0 01-1.414 0l-4-4a1 1 0 010-1.414z" clip-rule="evenodd"/> 1841<title>chevron-down</title></svg> 1842 </span> 1843 </span> 1844 </button> 1845 <div class="lg:!block lg:mb-3.5 peer-[.is-parent]:hidden"> 1846 <a href="https://www.steiff.com/en/stuffed-animals-toys/all-stuffed-animals/stuffed-animals" 1847 class="block font-semibold px-4 py-3 lg:p-0 data-[is-link]:hover:underline" 1848 data-is-link 1849 > 1850 Stuffed Animals </a> 1851 </div> 1852 1853 1854 <ul class="flex flex-col mb-2 lg:mb-0 text-gray-darker lg:text-black" 1855 x-show="!isMobileMode || isActiveLevel2('7204')" 1856 > 1857 <li class="flex w-full lg:hidden items-center"> 1858 <a href="https://www.steiff.com/en/stuffed-animals-toys/all-stuffed-animals/stuffed-animals" class="max-lg:leading-8 text-sm px-4 w-full hover:underline"> 1859 Show all results </a> 1860 </li> 1861 <li class="block lg:mb-2 "> 1862 <a href="https://www.steiff.com/en/stuffed-animals-toys/all-stuffed-animals/stuffed-animals/popular-stuffed-animals" 1863 class="block px-4 lg:p-0 text-sm data-[is-link]:hover:underline max-lg:leading-8" 1864 style="color: 000000;" data-is-link 1865 > 1866 Popular Stuffed Animals </a> 1867 1868 1869 </li> 1870 <li class="block lg:mb-2 "> 1871 <div class="mb-0"> 1872 <a href="https://www.steiff.com/en/stuffed-animals-toys/all-stuffed-animals/stuffed-animals/pets-farm-animals" 1873 class="block px-4 lg:p-0 text-sm data-[is-link]:hover:underline max-lg:leading-8" 1874 style="color: 000000;" data-is-link 1875 > 1876 Pets & Farm Animals </a> 1877 </div> 1878 1879 1880 <ul class="lg:hidden"> 1881 <li> 1882 <a href="https://www.steiff.com/en/stuffed-animals-toys/all-stuffed-animals/stuffed-animals/pets-farm-animals/dogs" 1883 class="text-sm block pl-8 max-lg:leading-8 data-[is-link]:hover:underline" 1884 style="color: 000000;" data-is-link 1885 > 1886 Dogs </a> 1887 1888 1889 </li> 1890 <li> 1891 <a href="https://www.steiff.com/en/stuffed-animals-toys/all-stuffed-animals/stuffed-animals/pets-farm-animals/rabbits" 1892 class="text-sm block pl-8 max-lg:leading-8 data-[is-link]:hover:underline" 1893 style="color: 000000;" data-is-link 1894 > 1895 Rabbits </a> 1896 1897 1898 </li> 1899 <li> 1900 <a href="https://www.steiff.com/en/stuffed-animals-toys/all-stuffed-animals/stuffed-animals/pets-farm-animals/cats" 1901 class="text-sm block pl-8 max-lg:leading-8 data-[is-link]:hover:underline" 1902 style="color: 000000;" data-is-link 1903 > 1904 Cats </a> 1905 1906 1907 </li> 1908 <li> 1909 <a href="https://www.steiff.com/en/stuffed-animals-toys/all-stuffed-animals/stuffed-animals/pets-farm-animals/sheeps-lambs" 1910 class="text-sm block pl-8 max-lg:leading-8 data-[is-link]:hover:underline" 1911 style="color: 000000;" data-is-link 1912 > 1913 Sheep & Lambs </a> 1914 1915 1916 </li> 1917 <li> 1918 <a href="https://www.steiff.com/en/stuffed-animals-toys/all-stuffed-animals/stuffed-animals/pets-farm-animals/horses-donkeys" 1919 class="text-sm block pl-8 max-lg:leading-8 data-[is-link]:hover:underline" 1920 style="color: 000000;" data-is-link 1921 > 1922 Horses & Donkeys </a> 1923 1924 1925 </li> 1926 <li> 1927 <a href="https://www.steiff.com/en/stuffed-animals-toys/all-stuffed-animals/stuffed-animals/pets-farm-animals/pigs" 1928 class="text-sm block pl-8 max-lg:leading-8 data-[is-link]:hover:underline" 1929 style="color: 000000;" data-is-link 1930 > 1931 Pigs </a> 1932 1933 1934 </li> 1935 <li> 1936 <a href="https://www.steiff.com/en/stuffed-animals-toys/all-stuffed-animals/stuffed-animals/pets-farm-animals/other-pets-farm-animals" 1937 class="text-sm block pl-8 max-lg:leading-8 data-[is-link]:hover:underline" 1938 style="color: 000000;" data-is-link 1939 > 1940 Other Pets & Farm Animals </a> 1941 1942 1943 </li> 1944 </ul> 1945 </li> 1946 <li class="block lg:mb-2 "> 1947 <a href="https://www.steiff.com/en/stuffed-animals-toys/all-stuffed-animals/stuffed-animals/forest-meadow-animals" 1948 class="block px-4 lg:p-0 text-sm data-[is-link]:hover:underline max-lg:leading-8" 1949 style="color: 000000;" data-is-link 1950 > 1951 Forest & Meadow Animals </a> 1952 1953 1954 </li> 1955 <li class="block lg:mb-2 "> 1956 <div class="mb-0"> 1957 <a href="https://www.steiff.com/en/stuffed-animals-toys/all-stuffed-animals/stuffed-animals/wild-animals" 1958 class="block px-4 lg:p-0 text-sm data-[is-link]:hover:underli
1958ne max-lg:leading-8" 1959 style="color: 000000;" data-is-link 1960 > 1961 Wild Animals </a> 1962 </div> 1963 1964 1965 <ul class="lg:hidden"> 1966 <li> 1967 <a href="https://www.steiff.com/en/stuffed-animals-toys/all-stuffed-animals/stuffed-animals/wild-animals/lions-big-cats" 1968 class="text-sm block pl-8 max-lg:leading-8 data-[is-link]:hover:underline" 1969 style="color: 000000;" data-is-link 1970 > 1971 Lions & Other Cats of Prey </a> 1972 1973 1974 </li> 1975 <li> 1976 <a href="https://www.steiff.com/en/stuffed-animals-toys/all-stuffed-animals/stuffed-animals/wild-animals/elephants" 1977 class="text-sm block pl-8 max-lg:leading-8 data-[is-link]:hover:underline" 1978 style="color: 000000;" data-is-link 1979 > 1980 Elephants </a> 1981 1982 1983 </li> 1984 <li> 1985 <a href="https://www.steiff.com/en/stuffed-animals-toys/all-stuffed-animals/stuffed-animals/wild-animals/monkeys" 1986 class="text-sm block pl-8 max-lg:leading-8 data-[is-link]:hover:underline" 1987 style="color: 000000;" data-is-link 1988 > 1989 Monkeys </a> 1990 1991 1992 </li> 1993 <li> 1994 <a href="https://www.steiff.com/en/stuffed-animals-toys/all-stuffed-animals/stuffed-animals/wild-animals/andere-wildtiere" 1995 class="text-sm block pl-8 max-lg:leading-8 data-[is-link]:hover:underline" 1996 style="color: 000000;" data-is-link 1997 > 1998 Other Wild Animals </a> 1999 2000 2001 </li> 2002 </ul> 2003 </li> 2004 <li class="block lg:mb-2 "> 2005 <a href="https://www.steiff.com/en/stuffed-animals-toys/all-stuffed-animals/stuffed-animals/marine-life-arctic-animals" 2006 class="block px-4 lg:p-0 text-sm data-[is-link]:hover:underline max-lg:leading-8" 2007 style="color: 000000;" data-is-link 2008 > 2009 Marine Life & Arctic Animals </a> 2010 2011 2012 </li> 2013 <li class="block lg:mb-2 "> 2014 <a href="https://www.steiff.com/en/stuffed-animals-toys/all-stuffed-animals/stuffed-animals/dinosaur" 2015 class="block px-4 lg:p-0 text-sm data-[is-link]:hover:underline max-lg:leading-8" 2016 style="color: 000000;" data-is-link 2017 > 2018 Dinosaurs </a> 2019 2020 2021 </li> 2022 <li class="block lg:mb-2 "> 2023 <a href="https://www.steiff.com/en/stuffed-animals-toys/all-stuffed-animals/stuffed-animals/fantasy-animals" 2024 class="block px-4 lg:p-0 text-sm data-[is-link]:hover:underline max-lg:leading-8" 2025 style="color: 000000;" data-is-link 2026 > 2027 Fantasy Animals </a> 2028 2029 2030 </li> 2031 <li class="block lg:mb-2 "> 2032 <div class="mb-0"> 2033 <a href="https://www.steiff.com/en/stuffed-animals-toys/all-stuffed-animals/stuffed-animals/film-comic-heroes" 2034 class="block px-4 lg:p-0 text-sm data-[is-link]:hover:underline max-lg:leading-8" 2035 style="color: 000000;" data-is-link 2036 > 2037 Film & Comic Heroes </a> 2038 </div> 2039 2040 2041 <ul class="lg:hidden"> 2042 <li> 2043 <a href="https://www.steiff.com/en/stuffed-animals-toys/all-stuffed-animals/stuffed-animals/film-comic-heroes/peanuts" 2044 class="text-sm block pl-8 max-lg:leading-8 data-[is-link]:hover:underline" 2045 style="color: 000000;" data-is-link 2046 > 2047 Snoopy </a> 2048 2049 2050 </li> 2051 <li> 2052 <a href="https://www.steiff.com/en/stuffed-animals-toys/all-stuffed-animals/stuffed-animals/film-comic-heroes/disney" 2053 class="text-sm block pl-8 max-lg:leading-8 data-[is-link]:hover:underline" 2054 style="color: 000000;" data-is-link 2055 > 2056 Disney </a> 2057 2058 2059 </li> 2060 <li> 2061 <a href="https://www.steiff.com/en/dc-superheroes" 2062 class="text-sm block pl-8 max-lg:leading-8 data-[is-link]:hover:underline" 2063 style="color: 000000;" data-is-link 2064 > 2065 DC Superheroes </a> 2066 2067 2068 </li> 2069 <li> 2070 <a href="https://www.steiff.com/en/stuffed-animals-toys/all-stuffed-animals/stuffed-animals/film-comic-heroes/harry-potter" 2071 class="text-sm block pl-8 max-lg:leading-8 data-[is-link]:hover:underline" 2072 style="color: 000000;" data-is-link 2073 > 2074 Harry Potter </a> 2075 2076 2077 </li> 2078 <li> 2079 <a href="https://www.steiff.com/en/stuffed-animals-toys/all-stuffed-animals/stuffed-animals/film-comic-heroes/hello-kitty" 2080 class="text-sm block pl-8 max-lg:leading-8 data-[is-link]:hover:underline" 2081 style="color: 000000;" data-is-link 2082 > 2083 Hello Kitty </a> 2084 2085 2086 </li> 2087 </ul> 2088 </li> 2089 <li class="block lg:hidden lg:mb-2 "> 2090 <a href="https://www.steiff.com/en/stuffed-animals-toys/all-stuffed-animals/recommendations/big-stuffed-animals" 2091 class="block px-4 lg:p-0 text-sm data-[is-link]:hover:underline max-lg:leading-8" 2092 style="color: 000000;" data-is-link 2093 > 2094 Large Cuddly Toys </a> 2095 2096 2097 </li> 2098 <li class="block lg:hidden lg:mb-2 "> 2099 <a href="https://www.steiff.com/en/stuffed-animals-toys/all-stuffed-animals/recommendations/mini-stuffed-animals" 2100 class="block px-4 lg:p-0 text-sm data-[is-link]:hover:underline max-lg:leading-8" 2101 style="color: 000000;" data-is-link 2102 > 2103 Small Cuddly Toys </a> 2104 2105 2106 </li> 2107 <li class="hidden lg:flex"> 2108 <a href="https://www.steiff.com/en/stuffed-animals-toys/all-stuffed-animals/stuffed-animals" class="text-sm underline"> 2109 Further Results </a> 2110 </li> 2111 </ul> 2112 </li> 2113 <li class="flex flex-col w-full max-lg:border-b border-gray-medium group "> 2114 <button type="button" 2115 class="flex justify-between lg:hidden peer is-parent font-semibold px-4 py-3 text-left" 2116 x-on:click="dispatchLevel2Interaction('7273')" 2117
2117 > 2118 <span>For Babies</span> 2119 <span class="w-4 h-4 block relative"> 2120 <span class="absolute top-0 left-0 duration-200" 2121 :class="{'rotate-180 text-cherryRed' : isActiveLevel2('7273')}" 2122 > 2123 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" class="w-5" width="24" height="24" role="img"> 2124 <path fill-rule="evenodd" d="M5.293 7.293a1 1 0 011.414 0L10 10.586l3.293-3.293a1 1 0 111.414 1.414l-4 4a1 1 0 01-1.414 0l-4-4a1 1 0 010-1.414z" clip-rule="evenodd"/> 2125<title>chevron-down</title></svg> 2126 </span> 2127 </span> 2128 </button> 2129 <div class="lg:!block lg:mb-3.5 peer-[.is-parent]:hidden"> 2130 <a href="https://www.steiff.com/en/stuffed-animals-toys/recommendations/stuffed-animals-toys-for-babies" 2131 class="block font-semibold px-4 py-3 lg:p-0 data-[is-link]:hover:underline" 2132 style="color: 000000;" data-is-link 2133 > 2134 For Babies </a> 2135 </div> 2136 2137 2138 <ul class="flex flex-col mb-2 lg:mb-0 text-gray-darker lg:text-black" 2139 x-show="!isMobileMode || isActiveLevel2('7273')" 2140 > 2141 <li class="flex w-full lg:hidden items-center"> 2142 <a href="https://www.steiff.com/en/stuffed-animals-toys/recommendations/stuffed-animals-toys-for-babies" class="max-lg:leading-8 text-sm px-4 w-full hover:underline"> 2143 Show all results </a> 2144 </li> 2145 <li class="block lg:mb-2 "> 2146 <a href="https://www.steiff.com/en/stuffed-animals-toys/all-stuffed-animals/teddy-bears/teddy-bears-for-babies" 2147 class="block px-4 lg:p-0 text-sm data-[is-link]:hover:underline max-lg:leading-8" 2148 data-is-link 2149 > 2150 Teddy Bears </a> 2151 2152 2153 </li> 2154 <li class="block lg:mb-2 "> 2155 <a href="https://www.steiff.com/en/stuffed-animals-toys/all-stuffed-animals/stuffed-animals/stuffed-animals-for-babies" 2156 class="block px-4 lg:p-0 text-sm data-[is-link]:hover:underline max-lg:leading-8" 2157 style="color: 000000;" data-is-link 2158 > 2159 Stuffed Animals </a> 2160 2161 2162 </li> 2163 <li class="block lg:mb-2 "> 2164 <a href="https://www.steiff.com/en/stuffed-animals-toys/toys/toys-for-babies/grip-toys-and-rattles" 2165 class="block px-4 lg:p-0 text-sm data-[is-link]:hover:underline max-lg:leading-8" 2166 data-is-link 2167 > 2168 Grip Toys & Rattles </a> 2169 2170 2171 </li> 2172 <li class="block lg:mb-2 "> 2173 <a href="https://www.steiff.com/en/stuffed-animals-toys/toys/toys-for-babies/comforter" 2174 class="block px-4 lg:p-0 text-sm data-[is-link]:hover:underline max-lg:leading-8" 2175 data-is-link 2176 >
2177 Cuddle Cloths </a> 2178 2179 2180 </li> 2181 <li class="block lg:mb-2 "> 2182 <a href="https://www.steiff.com/en/stuffed-animals-toys/toys/toys-for-babies/musical-boxes" 2183 class="block px-4 lg:p-0 text-sm data-[is-link]:hover:underline max-lg:leading-8" 2184 data-is-link 2185 > 2186 Music Boxes </a> 2187 2188 2189 </li> 2190 </ul> 2191 </li> 2192 <li class="flex flex-col w-full max-lg:border-b border-gray-medium group "> 2193 <button type="button" 2194 class="flex justify-between lg:hidden peer is-parent font-semibold px-4 py-3 text-left" 2195 x-on:click="dispatchLevel2Interaction('7219')" 2196 > 2197 <span>Discover</span> 2198 <span class="w-4 h-4 block relative"> 2199 <span class="absolute top-0 left-0 duration-200" 2200 :class="{'rotate-180 text-cherryRed' : isActiveLevel2('7219')}" 2201 > 2202 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" class="w-5" width="24" height="24" role="img"> 2203 <path fill-rule="evenodd" d="M5.293 7.293a1 1 0 011.414 0L10 10.586l3.293-3.293a1 1 0 111.414 1.414l-4 4a1 1 0 01-1.414 0l-4-4a1 1 0 010-1.414z" clip-rule="evenodd"/> 2204<title>chevron-down</title></svg> 2205 </span> 2206 </span> 2207 </button> 2208 <div class="lg:!block lg:mb-3.5 peer-[.is-parent]:hidden"> 2209 <span class="block font-semibold px-4 py-3 lg:p-0 data-[is-link]:hover:underline hover:cursor-pointer" 2210 style="color: 000000;" > 2211 Discover </span> 2212 </div> 2213 2214 2215 <ul class="flex flex-col mb-2 lg:mb-0 text-gray-darker lg:text-black" 2216 x-show="!isMobileMode || isActiveLevel2('7219')" 2217 > 2218 <li class="block lg:mb-2 "> 2219 <a href="https://www.steiff.com/en/stuffed-animals-toys/all-stuffed-animals/recommendations/plush-sale-1" 2220 class="block px-4 lg:p-0 text-sm data-[is-link]:hover:underline max-lg:leading-8" 2221 style="color: #C92C30;" data-is-link 2222 > 2223 Cuddly Toys Sale </a> 2224 2225 2226 </li> 2227 <li class="block lg:mb-2 "> 2228 <a href="https://www.steiff.com/en/dc-superheroes" 2229 class="block px-4 lg:p-0 text-sm data-[is-link]:hover:underline max-lg:leading-8" 2230 style="color: 000000;" data-is-link 2231 > 2232 DC Superheroes </a> 2233 2234 2235 </li> 2236 <li class="block lg:mb-2 "> 2237 <a href="https://www.steiff.com/en/light-at-night" 2238 class="block px-4 lg:p-0 text-sm data-[is-link]:hover:underline max-lg:leading-8" 2239 style="color: 000000;" data-is-link 2240 > 2241 Light at Night </a> 2242 2243 2244 </li> 2245 <li class="block lg:mb-2 "> 2246 <a href="https://www.steiff.com/en/stuffed-animals-toys/all-stuffed-animals/recommendations/suit
2246case-animals" 2247 class="block px-4 lg:p-0 text-sm data-[is-link]:hover:underline max-lg:leading-8" 2248 style="color: 000000;" data-is-link 2249 > 2250 Cuddly Animals in a Suitcase </a> 2251 2252 2253 </li> 2254 <li class="block lg:mb-2 "> 2255 <a href="https://www.steiff.com/en/stuffed-animals-toys/all-stuffed-animals/recommendations/back-to-school" 2256 class="block px-4 lg:p-0 text-sm data-[is-link]:hover:underline max-lg:leading-8" 2257 style="color: 000000;" data-is-link 2258 > 2259 Back to School </a> 2260 2261 2262 </li> 2263 <li class="block lg:mb-2 "> 2264 <a href="https://www.steiff.com/en/gifts/gifts-by-product-type/key-bag-tags" 2265 class="block px-4 lg:p-0 text-sm data-[is-link]:hover:underline max-lg:leading-8" 2266 style="color: 000000;" data-is-link 2267 > 2268 Key & Bag Tags </a> 2269 2270 2271 </li> 2272 <li class="block lg:mb-2 "> 2273 <a href="https://www.steiff.com/en/stuffed-animals-toys/toys/toys-for-children/riding-animals" 2274 class="block px-4 lg:p-0 text-sm data-[is-link]:hover:underline max-lg:leading-8" 2275 style="color: 000000;" data-is-link 2276 > 2277 Rocking Animals </a> 2278 2279 2280 </li> 2281 <li class="block lg:mb-2 "> 2282 <a href="https://www.steiff.com/en/light-at-night" 2283 class="block px-4 lg:p-0 text-sm data-[is-link]:hover:underline max-lg:leading-8" 2284 style="color: 000000;" data-is-link 2285 > 2286 Light at Night </a> 2287 2288 2289 </li> 2290 <li class="hidden lg:flex"> 2291 <a href="" class="text-sm underline"> 2292 Further Results </a> 2293 </li> 2294 </ul> 2295 </li> 2296 <li class="flex flex-col w-full max-lg:border-b border-gray-medium group lg:col-start-5 xl:col-start-6 lg:row-start-1 max-lg:!border-0"> 2297 <div class="max-w-full lg:max-w-[500px] lg:col-start-6 group navigation-cms px-4 py-8 lg:p-0 [&>*]:p-0"> 2298 <!-- HyväCMS cms_block --> 2299 <div data-liveview-element="steiff_row" 2300 class=" not-prose container" 2301 style="padding-top: 1rem; padding-bottom: 1rem;" > 2302 <div class="overflow-hidden hover:shadow-lg group-[.navigation-cms:hover]:shadow-none group-[.navigation-cms]:rounded-md group-[.teaser-alternative-design]:relative group-[.navigation-cms]:p-2 w-full"> 2303 <div class=" group-[.navigation-cms]:!bg-transparent" 2304 > 2305 <a href="https://www.steiff.com/en/stuffed-animals-toys/all-stuffed-animals/stuffed-animals/film-comic-heroes/hello-kitty" class="flex flex-col h-full group-[.teaser-alternative-design]:relative" target="_self"> 2306 <div class="group-[.navigation-cms]:h-[11.5625rem] lg:group-[.navigation-cms]:h-[110px] group-[.navigation-cms]:w-full group-[.navigation-cms]:pt-2 group-[.navigation-cms]:px-2 group-[.navigation-cms]:bg-gray-ultralight group-[.navigation-cms]:rounded-t-lg group-[.teaser-alternative-design]:!h-full group-[.teaser-alternative-design]:!w-full group-[.teaser-alternative-design]:!min-h-0 group-[.teaser-alternative-design]:!p-0 group-[.teaser-alternative-design]:!bg-transparent group-[.teaser-alternative-design]:rounded-lg"> 2307 <picture data-liveview-element="image"><source media="(min-width: 1024px)" type="image/avif" srcset="https://www.steiff.com/media/wysiwyg/Navigation/plush/250_px_h_he.png?format=avif 1x"><source media="(min-width: 1024px)" type="image/webp" srcset="https://www.steiff.com/media/wysiwyg/Navigation/plush/250_px_h_he.png?format=webp 1x"><source media="(min-width: 1024px)" type="image/png" srcset="https://www.steiff.com/media/wysiwyg/Navigation/plush/250_px_h_he.png?format=auto 1x"><source type="image/avif" srcset="https://www.steiff.com/media/wysiwyg/Navigation/plush/250_px_h_he.png?format=avif 1x"><source type="image/webp" srcset="https://www.steiff.com/media/wysiwyg/Navigation/plush/250_px_h_he.png?format=webp 1x"><source type="image/png" srcset="https://www.steiff.com/media/wysiwyg/Navigation/plush/250_px_h_he.png?format=auto 1x"><img src="https://www.steiff.com/media/wysiwyg/Navigation/plush/250_px_h_he.png?format=webp" width="400" height="400" alt="OS_Navi_Teaser-WTT - 250 px höhe" loading="lazy" class=" object-cover w-full h-auto group-[.navigation-cms]:h-full group-[.navigation-cms]:rounded-lg group-[.teaser-alternative-design]:brightness-50"></picture> </div> 2308 <div class="teaser-content flex flex-col w-full flex-grow group-[.navigation-cms]:items-center group-[.teaser-alternative-design]:absolute group-[.teaser-alternative-design]:top-1/2 group-[.teaser-alternative-design]:left-1/2 group-[.teaser-alternative-design]:-translate-x-1/2 group-[.teaser-alternative-design]:-translate-y-1/2 group-[.navigation-cms]:justify-center group-[.navigation-cms]:bg-gray-ultralight group-[.navigation-cms]:rounded-b-lg group-[.navigation-cms]:pt-2 group-[.navigation-cms]:pr-3 group-[.navigation-cms]:pb-3 group-[.navigation-cms]:pl-2 group-[.teaser-alternative-design]:!bg-transparent group-[.teaser-alternative-design]:!p-0"> 2309 <div class="cmsb334-text-center p-6 group-[.navigation-cms]:p-0 group-[.teaser-alternative-design]:px-4 group-[.teaser-alternative-design]:py-6"> 2310 <h3 data-liveview-element="steiff-headline" 2311 class="hyphens-auto break-words h4 cmsb334-text-center teaser-headline group-[.teaser-alternative-design]:leading-[110%] group-[.teaser-alternative-design]:font-bold group-[.teaser-alternative-design]:text-center group-[.navigation-cms]:mb-2 group-[.navigation-cms]:font-bold group-[.navigation-cms]:text-left group-[.navigation-cms]:!text-black group-[.navigation-cms]:!text-base group-[.navigation-cms]:leading-[110%] group-[.teaser-alternative-design]:!text-white group-[.teaser-alternative-design]:!text-[1.5rem]" 2312 > 2313 Steiff x Hello Kitty</h3> 2314 <sp
2314an class="btn btn-primary mt-4 md:mt-6 group-[.navigation-cms]:!mt-2 group-[.navigation-cms]:flex group-[.navigation-cms]:items-center group-[.navigation-cms]:justify-center group-[.navigation-cms]:max-w-[7.75rem] group-[.navigation-cms]:px-4 group-[.navigation-cms]:text-xs group-[.navigation-cms]:font-normal group-[.navigation-cms]:shadow-md group-[.navigation-cms]:mx-auto group-[.navigation-cms\:not\(.teaser-alternative-design\)]:!text-white group-[.navigation-cms\:not\(.teaser-alternative-design\)]:!bg-black group-[.teaser-alternative-design]:max-w-[7.75rem] group-[.teaser-alternative-design]:text-xs group-[.teaser-alternative-design]:!text-gray-dark group-[.teaser-alternative-design]:!bg-white group-[.teaser-alternative-design]:hover:shadow-lg" 2315 > 2316 <span class="group-[.navigation-cms]:text-inherit">To the category</span> 2317 </span> 2318 </div> 2319 </div> 2320 </a> 2321 </div> 2322 </div> 2323 </div> 2324 </div> 2325 2326 2327 </li> 2328 </ul> 2329 </div> 2330 </div> 2331 </li> 2332 <li class="3xl:pb-5 flex flex-col w-full lg:w-auto items-center justify-between border-b border-gray-medium lg:border-b-0 lg:pr-10 xl:pr-9" 2333 :class="{'border-b' : openSubmenuId !== '7186'}" 2334 x-on:mouseenter="openSubmenuId = !isMobileMode && '7186' || openSubmenuId" 2335 x-show="openSubmenuId === null || openSubmenuId === '7186' || !isMobileMode" 2336 > 2337 <div class="group has-children flex w-full lg:border-b-[4px] lg:border-b-white h-full py-3 lg:pb-2 px-4 lg:px-0" 2338 :class="{'lg:!border-b-black' : '1' && openSubmenuId === '7186', '-translate-x-full !p-0 !h-0' : isMobileMode && openSubmenuId }" 2339 2340 > 2341 <a href="https://www.steiff.com/en/baby-kids-fashion" 2342 class="font-bold lg:font-semibold group-[.has-children]:hidden lg:!block w-full 3xl:whitespace-nowrap xl:text-lg" 2343 style="color: 000000;" data-is-link 2344 > 2345 Baby- & Kids Fashion </a> 2346 2347 2348 <div class="relative flex w-full lg:w-auto"> 2349 <button 2350 type="button" 2351 class="flex items-center w-full justify-between lg:w-auto lg:ml-2 transition-transform duration-300" 2352 x-show="isTabModeActive || isMobileMode" 2353 x-cloak 2354 :class="{'rotate-180' : !isMobileMode && openSubmenuId === '7186'}" 2355 x-ref="sr-button-7186" 2356 :aria-expanded="openSubmenuId === '7186' ? 'true' : 'false'" 2357 x-on:click.stop="toggleSubmenu('7186')" 2358 > 2359 <span class="font-bold hidden group-[.has-children]:block lg:!hidden hover:cursor-pointer" 2360 style="color: 000000;" > 2361 Baby- & Kids Fashion </span> 2362 2363 2364 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" class="hidden lg:block" width="24" height="24" aria-hidden="true"> 2365 <path fill-rule="evenodd" d="M5.293 7.293a1 1 0 011.414 0L10 10.586l3.293-3.293a1 1 0 111.414 1.414l-4 4a1 1 0 01-1.414 0l-4-4a1 1 0 010-1.414z" clip-rule="evenodd"/> 2366</svg> 2367 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" viewB
2367ox="0 0 24 24" class="lg:hidden" aria-hidden="true"><path d="m18 8 4 4-4 4M2 12h20"/></svg> 2368 <span class="sr-only" 2369 id="nav-button-7186" 2370 > 2371 Toggle submenu for Baby- & Kids Fashion </span> 2372 </button> 2373 </div> 2374 </div> 2375 <div x-ref="submenu-7186" 2376 class="lg:absolute left-0 top-full w-full z-30 lg:shadow-md bg-white flex border-t border-steelMist" 2377 x-show="openSubmenuId === '7186'" 2378 :aria-expanded="openSubmenuId === '7186'" 2379 aria-labelledby="nav-button-7186" 2380 x-on:keydown.escape="onSubmenuEscape" 2381 x-cloak 2382 > 2383 <div class="w-full"> 2384 <ul class="flex flex-col lg:container lg:grid grid-cols-5 xl:grid-cols-6 gap-4 items-start lg:py-10 group/level-1 max-w-[1493px]" 2385 aria-description="Submenu for Baby- & Kids Fashion" 2386 > 2387 <li class="flex w-full lg:hidden items-center border-b border-gray-medium bg-white sticky top-0 -mt-px"> 2388 <button x-on:click="openSubmenuLevel2Ids = []; openSubmenuId = null;" class="font-bold px-4 py-3 flex gap-2"> 2389 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" viewBox="0 0 24 24" class="text-cherryRed" aria-hidden="true"><path d="m6 8-4 4 4 4M2 12h20"/></svg> 2390 <span class="hover:underline">Baby- & Kids Fashion</span> 2391 </button> 2392 </li> 2393 <li class="flex w-full lg:hidden items-center border-b border-gray-medium"> 2394 <a href="https://www.steiff.com/en/baby-kids-fashion" class="font-bold px-4 py-3 hover:underline"> 2395 Show all results </a> 2396 </li> 2397 <li class="flex flex-col w-full max-lg:border-b border-gray-medium group "> 2398 <button type="button" 2399 class="flex justify-between lg:hidden peer is-parent font-semibold px-4 py-3 text-left" 2400 x-on:click="dispatchLevel2Interaction('7231')" 2401 > 2402 <span>Highlights & New Arrivals</span> 2403 <span class="w-4 h-4 block relative"> 2404 <span class="absolute top-0 left-0 duration-200" 2405 :class="{'rotate-180 text-cherryRed' : isActiveLevel2('7231')}" 2406 > 2407 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" class="w-5" width="24" height="24" role="img"> 2408 <path fill-rule="evenodd" d="M5.293 7.293a1 1 0 011.414 0L10 10.586l3.293-3.293a1 1 0 111.414 1.414l-4 4a1 1 0 01-1.414 0l-4-4a1 1 0 010-1.414z" clip-rule="evenodd"/> 2409<title>chevron-down</title></svg> 2410 </span> 2411 </span> 2412 </button> 2413 <div class="lg:!block lg:mb-3.5 peer-[.is-parent]:hidden">
2414 <span class="block font-semibold px-4 py-3 lg:p-0 data-[is-link]:hover:underline hover:cursor-pointer" 2415 style="color: 000000;" > 2416 Highlights & New Arrivals </span> 2417 </div> 2418 2419 2420 <ul class="flex flex-col mb-2 lg:mb-0 text-gray-darker lg:text-black" 2421 x-show="!isMobileMode || isActiveLevel2('7231')" 2422 > 2423 <li class="block lg:mb-2 "> 2424 <div class="mb-0"> 2425 <a href="https://www.steiff.com/en/baby-kids-fashion/collections/autumn-winter-collection" 2426 class="block px-4 lg:p-0 text-sm data-[is-link]:hover:underline max-lg:leading-8" 2427 data-is-link 2428 > 2429 Autumn Winter Collection </a> 2430 </div> 2431 2432 2433 <ul class="lg:hidden"> 2434 <li> 2435 <a href="https://www.steiff.com/en/baby-kids-fashion/collections/autumn-winter-collection/babies" 2436 class="text-sm block pl-8 max-lg:leading-8 data-[is-link]:hover:underline" 2437 style="color: 000000;" data-is-link 2438 > 2439 Babies </a> 2440 2441 2442 </li> 2443 <li> 2444 <a href="https://www.steiff.com/en/baby-kids-fashion/collections/autumn-winter-collection/children/children-girls" 2445 class="text-sm block pl-8 max-lg:leading-8 data-[is-link]:hover:underline" 2446 style="color: 000000;" data-is-link 2447 > 2448 Children Girls </a> 2449 2450 2451 </li> 2452 <li> 2453 <a href="https://www.steiff.com/en/baby-kids-fashion/collections/autumn-winter-collection/children/children-boys" 2454 class="text-sm block pl-8 max-lg:leading-8 data-[is-link]:hover:underline" 2455 style="color: 000000;" data-is-link 2456 > 2457 Children Boys </a> 2458 2459 2460 </li> 2461 </ul> 2462 </li> 2463 <li class="block lg:mb-2 "> 2464 <a href="https://www.steiff.com/en/baby-kids-fashion/collections/fc-bayern-muenchen-collection" 2465 class="block px-4 lg:p-0 text-sm data-[is-link]:hover:underline max-lg:leading-8" 2466 style="color: 000000;" data-is-link 2467 > 2468 FC Bayern Munich Collection </a> 2469 2470 2471 </li> 2472 </ul> 2473 </li> 2474 <li class="flex flex-col w-full max-lg:border-b border-gray-medium group "> 2475 <button type="button" 2476 class="flex justify-between lg:hidden peer is-parent font-semibold px-4 py-3 text-left" 2477 x-on:click="dispatchLevel2Interaction('7237')" 2478 >
2479 <span>Babies (up to size 86)</span> 2480 <span class="w-4 h-4 block relative"> 2481 <span class="absolute top-0 left-0 duration-200" 2482 :class="{'rotate-180 text-cherryRed' : isActiveLevel2('7237')}" 2483 > 2484 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" class="w-5" width="24" height="24" role="img"> 2485 <path fill-rule="evenodd" d="M5.293 7.293a1 1 0 011.414 0L10 10.586l3.293-3.293a1 1 0 111.414 1.414l-4 4a1 1 0 01-1.414 0l-4-4a1 1 0 010-1.414z" clip-rule="evenodd"/> 2486<title>chevron-down</title></svg> 2487 </span> 2488 </span> 2489 </button> 2490 <div class="lg:!block lg:mb-3.5 peer-[.is-parent]:hidden"> 2491 <a href="https://www.steiff.com/en/baby-kids-fashion/babys-up-to-size-86" 2492 class="block font-semibold px-4 py-3 lg:p-0 data-[is-link]:hover:underline" 2493 style="color: 000000;" data-is-link 2494 > 2495 Babies (up to size 86) </a> 2496 </div> 2497 2498 2499 <ul class="flex flex-col mb-2 lg:mb-0 text-gray-darker lg:text-black" 2500 x-show="!isMobileMode || isActiveLevel2('7237')" 2501 > 2502 <li class="flex w-full lg:hidden items-center"> 2503 <a href="https://www.steiff.com/en/baby-kids-fashion/babys-up-to-size-86" class="max-lg:leading-8 text-sm px-4 w-full hover:underline"> 2504 Show all results </a> 2505 </li> 2506 <li class="block lg:mb-2 "> 2507 <a href="https://www.steiff.com/en/baby-kids-fashion/babys-up-to-size-86/baby-clothes-for-girls" 2508 class="block px-4 lg:p-0 text-sm data-[is-link]:hover:underline max-lg:leading-8" 2509 style="color: 000000;" data-is-link 2510 > 2511 Baby Clothes for Girls </a> 2512 2513 2514 </li> 2515 <li class="block lg:mb-2 "> 2516 <a href="https://www.steiff.com/en/baby-kids-fashion/babys-up-to-size-86/baby-clothes-for-boys" 2517 class="block px-4 lg:p-0 text-sm data-[is-link]:hover:underline max-lg:leading-8" 2518 style="color: 000000;" data-is-link 2519 > 2520 Baby Clothes for Boys </a> 2521 2522 2523 </li> 2524 <li class="block lg:mb-2 "> 2525 <a href="https://www.steiff.com/en/baby-kids-fashion/babys-up-to-size-86/sweat-jackets-sweatshirts" 2526 class="block px-4 lg:p-0 text-sm data-[is-link]:hover:underline max-lg:leading-8" 2527 style="color: 000000;" data-is-link 2528 > 2529 Sweat Jackets & Sweatshirts </a> 2530 2531 2532 </li> 2533 <li class="block lg:mb-2 "> 2534 <a href="https://www.steiff.com/en/baby-kids-fashion/babys-up-to-size-86/bodies-rompers-combinations" 2535 class="block px-4 lg:p-0 text-sm data-[is-link]:hover:underline max-lg:leading-8" 2536 style="color: 000000;" data-is-link 2537 > 2538 Bodies, Rompers & Combinations </a> 2539 2540 2541 </li> 2542 <li class="block lg:mb-2 "> 2543 <a href="https://www.steiff.com/en/baby-kids-fashion/babys-up-to-size-86/crawling-blankets-sleeping-bags" 2544 class="block px-4 lg:p-0 text-sm data-[is-link]:hover:underline max-lg:leading-8" 2545 style="color: 000000;" data-is-link 2546 > 2547 Crawling Blankets & Sleeping Bags </a> 2548 2549 2550 </li> 2551 <li class="block lg:mb-2 "> 2552 <a href="https://www.steiff.com/en/baby-kids-fashion/babys-up-to-size-86/long-and-short-sleeve-t-shirts" 2553 class="block px-4 lg:p-0 text-sm data-[is-link]:hover:underline max-lg:leading-8" 2554 style="color: 000000;" data-is-link 2555 > 2556 Long & Short-Sleeved T-shirts </a> 2557 2558 2559 </li> 2560 <li class="block lg:mb-2 "> 2561 <a href="https://www.steiff.com/en/baby-kids-fashion/babys-up-to-size-86/hats-scarves-neckerchief" 2562 class="block px-4 lg:p-0 text-sm data-[is-link]:hover:underline max-lg:leading-8" 2563 style="color: 000000;" data-is-link 2564 > 2565 Hats & Scarves & Triangular Scarves </a> 2566 2567 2568 </li> 2569 <li class="block lg:mb-2 "> 2570 <a href="https://www.steiff.com/en/baby-kids-fashion/babys-up-to-size-86/snow-clothing" 2571 class="block px-4 lg:p-0 text-sm data-[is-link]:hover:underline max-lg:leading-8" 2572 style="color: 000000;" data-is-link 2573 > 2574 Snow Clothing </a> 2575 2576 2577 </li> 2578 <li class="block lg:hidden lg:mb-2 "> 2579 <a href="https://www.steiff.com/en/baby-kids-fashion/babys-up-to-size-86/pants-jeans" 2580 class="block px-4 lg:p-0 text-sm data-[is-link]:hover:underline max-lg:leading-8" 2581 style="color: 000000;" data-is-link 2582 > 2583 Trousers & Jeans </a> 2584 2585 2586 </li> 2587 <li class="block lg:hidden lg:mb-2 "> 2588 <a href="https://www.steiff.com/en/baby-kids-fashion/babys-up-to-size-86/socks-tights" 2589 class="block px-4 lg:p-0 text-sm data-[is-link]:hover:underline max-lg:leading-8" 2590 style="color: 000000;" data-is-link 2591 > 2592 Socks & Tights </a> 2593 2594 2595 </li> 2596 <li class="block lg:hidden lg:mb-2 "> 2597 <a href="https://www.steiff.com/en/baby-kids-fashion/babys-up-to-size-86/sweater-knitwear" 2598 class="block px-4 lg:p-0 text-sm data-[is-link]:hover:underline max-lg:leading-8" 2599 style="color: 000000;" data-is-link 2600 > 2601 Jumpers & Knitwear </a> 2602 2603 2604 </li> 2605 <li class="block lg:hidden lg:mb-2 "> 2606 <a href="https://www.steiff.com/en/baby-kids-fashion/babys-up-to-size-86/jackets-coats" 2607 class="block px-4 lg:p-0 text-sm data-[is-link]:hover:underline max-lg:leading-8" 2608 style="color: 000000;" data-is-link 2609 > 2610 Jackets & Coats </a> 2611 2612 2613 </li> 2614 <li class="block lg:hidden lg:mb-2 "> 2615 <a href="https://www.steiff.com/en/baby-kids-fashion/babys-up-to-size-86/bib-napkin" 2616 class="block px-4 lg:p-0 text-sm data-[is-link]:hover:underline max-lg:leading-8" 2617 style="color: 000000;" data-is-link 2618 > 2619 Bibs & Muslin Nappies </a> 2620 2621 2622 </li> 2623 <li class="block lg:hidden lg:mb-2 "> 2624 <a href="https://www.steiff.com/en/baby-kids-fashion/babys-up-to-size-86/dresses-skirts" 2625 class="block px-4 lg:p-0 text-sm data-[is-link]:hover:underline max-lg:leading-8" 2626 style="color: 000000;" data-is-link 2627 > 2628 Dresses & Skirts </a> 2629 2630 2631 </li> 2632 <li class="block
2632lg:hidden lg:mb-2 "> 2633 <a href="https://www.steiff.com/en/baby-kids-fashion/babys-up-to-size-86/blouses-tunics" 2634 class="block px-4 lg:p-0 text-sm data-[is-link]:hover:underline max-lg:leading-8" 2635 style="color: 000000;" data-is-link 2636 > 2637 Blouses & Tunics </a> 2638 2639 2640 </li> 2641 <li class="block lg:hidden lg:mb-2 "> 2642 <a href="https://www.steiff.com/en/baby-kids-fashion/babys-up-to-size-86/towels-swimwear" 2643 class="block px-4 lg:p-0 text-sm data-[is-link]:hover:underline max-lg:leading-8" 2644 style="color: 000000;" data-is-link 2645 > 2646 Towels & Swimwear </a> 2647 2648 2649 </li> 2650 <li class="block lg:hidden lg:mb-2 "> 2651 <a href="https://www.steiff.com/en/baby-kids-fashion/babys-up-to-size-86/shoes" 2652 class="block px-4 lg:p-0 text-sm data-[is-link]:hover:underline max-lg:leading-8" 2653 style="color: 000000;" data-is-link 2654 > 2655 Shoes </a> 2656 2657 2658 </li> 2659 <li class="hidden lg:flex"> 2660 <a href="https://www.steiff.com/en/baby-kids-fashion/babys-up-to-size-86" class="text-sm underline"> 2661 Further Results </a> 2662 </li> 2663 </ul> 2664 </li> 2665 <li class="flex flex-col w-full max-lg:border-b border-gray-medium group "> 2666 <button type="button" 2667 class="flex justify-between lg:hidden peer is-parent font-semibold px-4 py-3 text-left" 2668 x-on:click="dispatchLevel2Interaction('7261')" 2669 >
2670 <span>Child girls (from size 92)</span> 2671 <span class="w-4 h-4 block relative"> 2672 <span class="absolute top-0 left-0 duration-200" 2673 :class="{'rotate-180 text-cherryRed' : isActiveLevel2('7261')}" 2674 > 2675 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" class="w-5" width="24" height="24" role="img"> 2676 <path fill-rule="evenodd" d="M5.293 7.293a1 1 0 011.414 0L10 10.586l3.293-3.293a1 1 0 111.414 1.414l-4 4a1 1 0 01-1.414 0l-4-4a1 1 0 010-1.414z" clip-rule="evenodd"/> 2677<title>chevron-down</title></svg> 2678 </span> 2679 </span> 2680 </button> 2681 <div class="lg:!block lg:mb-3.5 peer-[.is-parent]:hidden"> 2682 <a href="https://www.steiff.com/en/baby-kids-fashion/children-from-size-92/for-girls-from-size-92" 2683 class="block font-semibold px-4 py-3 lg:p-0 data-[is-link]:hover:underline" 2684 style="color: 000000;" data-is-link 2685 > 2686 Child girls (from size 92) </a> 2687 </div> 2688 2689 2690 <ul class="flex flex-col mb-2 lg:mb-0 text-gray-darker lg:text-black" 2691 x-show="!isMobileMode || isActiveLevel2('7261')" 2692 > 2693 <li class="flex w-full lg:hidden items-center"> 2694 <a href="https://www.steiff.com/en/baby-kids-fashion/children-from-size-92/for-girls-from-size-92" class="max-lg:leading-8 text-sm px-4 w-full hover:underline"> 2695 Show all results </a> 2696 </li> 2697 <li class="block lg:mb-2 "> 2698 <a href="https://www.steiff.com/en/baby-kids-fashion/children-from-size-92/for-girls-from-size-92/sweat-jackets-sweatshirts" 2699 class="block px-4 lg:p-0 text-sm data-[is-link]:hover:underline max-lg:leading-8" 2700 style="color: 000000;" data-is-link 2701 > 2702 Sweat Jackets & Sweatshirts </a> 2703 2704 2705 </li> 2706 <li class="block lg:mb-2 "> 2707 <a href="https://www.steiff.com/en/baby-kids-fashion/children-from-size-92/for-girls-from-size-92/jackets-coats" 2708 class="block px-4 lg:p-0 text-sm data-[is-link]:hover:underline max-lg:leading-8" 2709 style="color: 000000;" data-is-link 2710 > 2711 Jackets & Coats </a> 2712 2713 2714 </li> 2715 <li class="block lg:mb-2 "> 2716 <a href="https://www.steiff.com/en/baby-kids-fashion/children-from-size-92/for-girls-from-size-92/long-and-short-sleeve-t-shirts" 2717 class="block px-4 lg:p-0 text-sm data-[is-link]:hover:underline max-lg:leading-8" 2718 style="color: 000000;" data-is-link 2719 > 2720 Long & Short-Sleeved T-shirts </a> 2721 2722 2723 </li> 2724 <li class="block lg:mb-2 "> 2725 <a href="https://www.steiff.com/en/baby-kids-fashion/children-from-size-92/for-girls-from-size-92/dresses-skirts" 2726 class="block px-4 lg:p-0 text-sm data-[is-link]:hover:underline max-lg:leading-8" 2727 style="color: 000000;" data-is-link 2728 > 2729 Dresses & Skirts </a> 2730 2731 2732 </li> 2733 <li class="block lg:mb-2 "> 2734 <a href="https://www.steiff.com/en/baby-kids-fashion/children-from-size-92/for-girls-from-size-92/pants-jeans" 2735 class="block px-4 lg:p-0 text-sm data-[is-link]:hover:underline max-lg:leading-8" 2736 style="color: 000000;" data-is-link 2737 > 2738 Trousers & Jeans </a> 2739 2740 2741 </li> 2742 <li class="block lg:mb-2 "> 2743 <a href="https://www.steiff.com/en/baby-kids-fashion/children-from-size-92/for-girls-from-size-92/sweater-knitwear" 2744 class="block px-4 lg:p-0 text-sm data-[is-link]:hover:underline max-lg:leading-8" 2745 style="color: 000000;" data-is-link 2746 > 2747 Jumper & Knitwear </a> 2748 2749 2750 </li> 2751 <li class="block lg:mb-2 "> 2752 <a href="https://www.steiff.com/en/baby-kids-fashion/children-from-size-92/for-girls-from-size-92/hats-scarves" 2753 class="block px-4 lg:p-0 text-sm data-[is-link]:hover:underline max-lg:leading-8" 2754 style="color: 000000;" data-is-link 2755 > 2756 Hats & Scarves </a> 2757 2758 2759 </li> 2760 <li class="block lg:mb-2 "> 2761 <a href="https://www.steiff.com/en/baby-kids-fashion/children-from-size-92/for-girls-from-size-92/socks-tights" 2762 class="block px-4 lg:p-0 text-sm data-[is-link]:hover:underline max-lg:leading-8" 2763 style="color: 000000;" data-is-link 2764 > 2765 Socks & Tights </a> 2766 2767 2768 </li> 2769 <li class="block lg:hidden lg:mb-2 "> 2770 <a href="https://www.steiff.com/en/baby-kids-fashion/children-from-size-92/for-girls-from-size-92/blouses-tunics" 2771 class="block px-4 lg:p-0 text-sm data-[is-link]:hover:underline max-lg:leading-8" 2772 style="color: 000000;" data-is-link 2773 > 2774 Blouses & Tunics </a> 2775 2776 2777 </li> 2778 <li class="block lg:hidden lg:mb-2 "> 2779 <a href="https://www.steiff.com/en/baby-kids-fashion/children-from-size-92/for-girls-from-size-92/snow-clothing" 2780 class="block px-4 lg:p-0 text-sm data-[is-link]:hover:underline max-lg:leading-8" 2781 style="color: 000000;" data-is-link 2782 > 2783 Snow Clothing </a> 2784 2785 2786 </li> 2787 <li class="block lg:hidden lg:mb-2 "> 2788 <a href="https://www.steiff.com/en/baby-kids-fashion/children-from-size-92/for-girls-from-size-92/swimwear" 2789 class="block px-4 lg:p-0 text-sm data-[is-link]:hover:underline max-lg:leading-8" 2790 style="color: 000000;" data-is-link 2791 > 2792 Swimwear </a> 2793 2794 2795 </li> 2796 <li class="hidden lg:flex"> 2797 <a href="https://www.steiff.com/en/baby-kids-fashion/children-from-size-92/for-girls-from-size-92" class="text-sm underline"> 2798 Further Results </a> 2799 </li> 2800 </ul> 2801 </li> 2802 <li class="flex flex-col w-full max-lg:border-b border-gray-medium group "> 2803 <button type="button" 2804 class="flex justify-between lg:hidden peer is-parent font-semibold px-4 py-3 text-left" 2805 x-on:click="dispatchLevel2Interaction('7264')" 2806 >
2807 <span>Child boys (from size 92)</span> 2808 <span class="w-4 h-4 block relative"> 2809 <span class="absolute top-0 left-0 duration-200" 2810 :class="{'rotate-180 text-cherryRed' : isActiveLevel2('7264')}" 2811 > 2812 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" class="w-5" width="24" height="24" role="img"> 2813 <path fill-rule="evenodd" d="M5.293 7.293a1 1 0 011.414 0L10 10.586l3.293-3.293a1 1 0 111.414 1.414l-4 4a1 1 0 01-1.414 0l-4-4a1 1 0 010-1.414z" clip-rule="evenodd"/> 2814<title>chevron-down</title></svg> 2815 </span> 2816 </span> 2817 </button> 2818 <div class="lg:!block lg:mb-3.5 peer-[.is-parent]:hidden"> 2819 <a href="https://www.steiff.com/en/baby-kids-fashion/children-from-size-92/for-boys-from-size-92" 2820 class="block font-semibold px-4 py-3 lg:p-0 data-[is-link]:hover:underline" 2821 style="color: 000000;" data-is-link 2822 > 2823 Child boys (from size 92) </a> 2824 </div> 2825 2826 2827 <ul class="flex flex-col mb-2 lg:mb-0 text-gray-darker lg:text-black" 2828 x-show="!isMobileMode || isActiveLevel2('7264')" 2829 > 2830 <li class="flex w-full lg:hidden items-center"> 2831 <a href="https://www.steiff.com/en/baby-kids-fashion/children-from-size-92/for-boys-from-size-92" class="max-lg:leading-8 text-sm px-4 w-full hover:underline"> 2832 Show all results </a> 2833 </li> 2834 <li class="block lg:mb-2 "> 2835 <a href="https://www.steiff.com/en/baby-kids-fashion/children-from-size-92/for-boys-from-size-92/sweat-jackets-sweatshirts" 2836 class="block px-4 lg:p-0 text-sm data-[is-link]:hover:underline max-lg:leading-8" 2837 style="color: 000000;" data-is-link 2838 > 2839 Sweat Jackets & Sweatshirts </a> 2840 2841 2842 </li> 2843 <li class="block lg:mb-2 "> 2844 <a href="https://www.steiff.com/en/baby-kids-fashion/children-from-size-92/for-boys-from-size-92/jackets-coats" 2845 class="block px-4 lg:p-0 text-sm data-[is-link]:hover:underline max-lg:leading-8" 2846 style="color: 000000;" data-is-link 2847 > 2848 Jackets & Coats </a> 2849 2850 2851 </li> 2852 <li class="block lg:mb-2 "> 2853 <a href="https://www.steiff.com/en/baby-kids-fashion/children-from-size-92/for-boys-from-size-92/long-and-short-sleeve-t-shirts" 2854 class="block px-4 lg:p-0 text-sm data-[is-link]:hover:underline max-lg:leading-8" 2855 style="color: 000000;" data-is-link 2856 > 2857 Long & Short-Sleeved T-shirts </a> 2858 2859 2860 </li> 2861 <li class="block lg:mb-2 "> 2862 <a href="https://www.steiff.com/en/baby-kids-fashion/children-from-size-92/for-boys-from-size-92/pants-jeans" 2863 class="block px-4 lg:p-0 text-sm data-[is-link]:hover:underline max-lg:leading-8" 2864 style="color: 000000;" data-is-link 2865 > 2866 Trousers & Jeans </a> 2867 2868 2869 </li> 2870 <li class="block lg:mb-2 "> 2871 <a href="https://www.steiff.com/en/baby-kids-fashion/children-from-size-92/for-boys-from-size-92/sweater-knitwear" 2872 class="block px-4 lg:p-0 text-sm data-[is-link]:hover:underline max-lg:leading-8" 2873 style="color: 000000;" data-is-link 2874 > 2875 Jumper & Knitwear </a> 2876 2877 2878 </li> 2879 <li class="block lg:mb-2 "> 2880 <a href="https://www.steiff.com/en/baby-kids-fashion/children-from-size-92/for-boys-from-size-92/hats-scarves" 2881 class="block px-4 lg:p-0 text-sm data-[is-link]:hover:underline max-lg:leading-8" 2882 style="color: 000000;" data-is-link 2883 > 2884 Hats & Scarves </a> 2885 2886 2887 </li> 2888 <li class="block lg:mb-2 "> 2889 <a href="https://www.steiff.com/en/baby-kids-fashion/children-from-size-92/for-boys-from-size-92/socks-tights" 2890 class="block px-4 lg:p-0 text-sm data-[is-link]:hover:underline max-lg:leading-8" 2891 style="color: 000000;" data-is-link 2892 > 2893 Socks & Tights </a> 2894 2895 2896 </li> 2897 <li class="block lg:mb-2 "> 2898 <a href="https://www.steiff.com/en/baby-kids-fashion/children-from-size-92/for-boys-from-size-92/s
2898hirts" 2899 class="block px-4 lg:p-0 text-sm data-[is-link]:hover:underline max-lg:leading-8" 2900 style="color: 000000;" data-is-link 2901 > 2902 Shirts </a> 2903 2904 2905 </li> 2906 <li class="block lg:hidden lg:mb-2 "> 2907 <a href="https://www.steiff.com/en/baby-kids-fashion/children-from-size-92/for-boys-from-size-92/snow-clothing" 2908 class="block px-4 lg:p-0 text-sm data-[is-link]:hover:underline max-lg:leading-8" 2909 style="color: 000000;" data-is-link 2910 > 2911 Snow Clothing </a> 2912 2913 2914 </li> 2915 <li class="block lg:hidden lg:mb-2 "> 2916 <a href="https://www.steiff.com/en/baby-kids-fashion/children-from-size-92/for-boys-from-size-92/swimwear" 2917 class="block px-4 lg:p-0 text-sm data-[is-link]:hover:underline max-lg:leading-8" 2918 style="color: 000000;" data-is-link 2919 > 2920 Swimwear </a> 2921 2922 2923 </li> 2924 <li class="hidden lg:flex"> 2925 <a href="https://www.steiff.com/en/baby-kids-fashion/children-from-size-92/for-boys-from-size-92" class="text-sm underline"> 2926 Further Results </a> 2927 </li> 2928 </ul> 2929 </li> 2930 <li class="flex flex-col w-full max-lg:border-b border-gray-medium group "> 2931 <button type="button" 2932 class="flex justify-between lg:hidden peer is-parent font-semibold px-4 py-3 text-left" 2933 x-on:click="dispatchLevel2Interaction('7270')" 2934 >
2935 <span>Discover</span> 2936 <span class="w-4 h-4 block relative"> 2937 <span class="absolute top-0 left-0 duration-200" 2938 :class="{'rotate-180 text-cherryRed' : isActiveLevel2('7270')}" 2939 > 2940 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" class="w-5" width="24" height="24" role="img"> 2941 <path fill-rule="evenodd" d="M5.293 7.293a1 1 0 011.414 0L10 10.586l3.293-3.293a1 1 0 111.414 1.414l-4 4a1 1 0 01-1.414 0l-4-4a1 1 0 010-1.414z" clip-rule="evenodd"/> 2942<title>chevron-down</title></svg> 2943 </span> 2944 </span> 2945 </button> 2946 <div class="lg:!block lg:mb-3.5 peer-[.is-parent]:hidden"> 2947 <span class="block font-semibold px-4 py-3 lg:p-0 data-[is-link]:hover:underline hover:cursor-pointer" 2948 style="color: 000000;" > 2949 Discover </span> 2950 </div> 2951 2952 2953 <ul class="flex flex-col mb-2 lg:mb-0 text-gray-darker lg:text-black" 2954 x-show="!isMobileMode || isActiveLevel2('7270')" 2955 > 2956 <li class="block lg:mb-2 "> 2957 <a href="https://www.steiff.com/en/baby-kids-fashion/sale/baby" 2958 class="block px-4 lg:p-0 text-sm data-[is-link]:hover:underline max-lg:leading-8" 2959 style="color: #C92C30;" data-is-link 2960 > 2961 Baby Sale </a> 2962 2963 2964 </li> 2965 <li class="block lg:mb-2 "> 2966 <a href="https://www.steiff.com/en/baby-kids-fashion/sale/children-girls" 2967 class="block px-4 lg:p-0 text-sm data-[is-link]:hover:underline max-lg:leading-8" 2968 style="color: #C92C30;" data-is-link 2969 > 2970 Girls Sale </a> 2971 2972 2973 </li> 2974 <li class="block lg:mb-2 "> 2975 <a href="https://www.steiff.com/en/baby-kids-fashion/sale/children-boys" 2976 class="block px-4 lg:p-0 text-sm data-[is-link]:hover:underline max-lg:leading-8" 2977 style="color: #C92C30;" data-is-link 2978 target="_blank" 2979 rel="noopener noreferrer" 2980 > 2981 Boys Sale </a> 2982 2983 2984 </li> 2985 <li class="block lg:mb-2 "> 2986 <div class="mb-0"> 2987 <a href="https://www.steiff.com/en/baby-kids-fashion/recommendations/festive-clothing" 2988 class="block px-4 lg:p-0 text-sm data-[is-link]:hover:underline max-lg:leading-8" 2989 style="color: 000000;" data-is-link 2990 > 2991 Festive Clothing </a> 2992 </div> 2993 2994 2995 <ul class="lg:hidden"> 2996 <li> 2997 <a href="https://www.steiff.com/en/baby-kids-fashion/recommendations/festive-clothing/for-babys" 2998 class="text-sm block pl-8 max-lg:leading-8 data-[is-link]:hover:underline" 2999 style="color: 000000;" data-is-link 3000 > 3001 Festive Clothes for Babies </a> 3002 3003 3004 </li> 3005 <li> 3006 <a href="https://www.steiff.com/en/baby-kids-fashion/recommendations/festive-clothing" 3007 class="text-sm block pl-8 max-lg:leading-8 data-[is-link]:hover:underline" 3008 style="color: 000000;" data-is-link 3009 > 3010 Festive Clothing for Children </a> 3011 3012 3013 </li> 3014 </ul> 3015 </li> 3016 <li class="block lg:mb-2 "> 3017 <a href="https://www.steiff.com/en/baby-kids-fashion/babys-up-to-size-86/recommendations/gots-certified-baby-clothing" 3018 class="block px-4 lg:p-0 text-sm data-[is-link]:hover:underline max-lg:leading-8" 3019 style="color: 000000;" data-is-link 3020 > 3021 GOTS Baby Fashion </a> 3022 3023 3024 </li> 3025 <li class="block lg:mb-2 "> 3026 <a href="https://www.steiff.com/en/baby-kids-fashion/babys-up-to-size-86/recommendations/baby-wellness" 3027 class="block px-4 lg:p-0 text-sm data-[is-link]:hover:underline max-lg:leading-8" 3028 style="color: 000000;" data-is-link 3029 > 3030 Baby Wellness </a> 3031 3032 3033 </li> 3034 <li class="block lg:mb-2 "> 3035 <a href="https://www.steiff.com/en/baby-kids-fashion/recommendations/bags-backpacks" 3036 class="block px-4 lg:p-0 text-sm data-[is-link]:hover:underline max-lg:leading-8" 3037 style="color: 000000;" data-is-link 3038 > 3039 Bags &
3039 Backpacks </a> 3040 3041 3042 </li> 3043 </ul> 3044 </li> 3045 <li class="flex flex-col w-full max-lg:border-b border-gray-medium group teaser-alternative-design lg:col-start-5 xl:col-start-6 lg:row-start-1 max-lg:!border-0"> 3046 <div class="max-w-full lg:max-w-[500px] lg:col-start-6 group navigation-cms px-4 py-8 lg:p-0 [&>*]:p-0"> 3047 <!-- HyväCMS cms_block --> 3048 <div data-liveview-element="steiff_row" 3049 class=" not-prose container" 3050 style="padding-top: 1rem; padding-bottom: 1rem;" > 3051 <div class="overflow-hidden hover:shadow-lg group-[.navigation-cms:hover]:shadow-none group-[.navigation-cms]:rounded-md group-[.teaser-alternative-design]:relative group-[.navigation-cms]:p-2 w-full"> 3052 <div class=" group-[.navigation-cms]:!bg-transparent" 3053 style="background-color: #ffffff;" > 3054 <a href="https://www.steiff.com/en/baby-kids-fashion/collections/autumn-winter-collection" class="flex flex-col h-full group-[.teaser-alternative-design]:relative" target="_self"> 3055 <div class="group-[.navigation-cms]:h-[11.5625rem] lg:group-[.navigation-cms]:h-[110px] group-[.navigation-cms]:w-full group-[.navigation-cms]:pt-2 group-[.navigation-cms]:px-2 group-[.navigation-cms]:bg-gray-ultralight group-[.navigation-cms]:rounded-t-lg group-[.teaser-alternative-design]:!h-full group-[.teaser-alternative-design]:!w-full group-[.teaser-alternative-design]:!min-h-0 group-[.teaser-alternative-design]:!p-0 group-[.teaser-alternative-design]:!bg-transparent group-[.teaser-alternative-design]:rounded-lg"> 3056 <picture data-liveview-element="image"><source media="(min-width: 1024px)" type="image/avif" srcset="https://www.steiff.com/media/wysiwyg/Navigation/Fashion/Fashion-HW-Navi_1.jpg?format=avif 1x"><source media="(min-width: 1024px)" type="image/webp" srcset="https://www.steiff.com/media/wysiwyg/Navigation/Fashion/Fashion-HW-Navi_1.jpg?format=webp 1x"><source media="(min-width: 1024px)" type="image/jpeg" srcset="https://www.steiff.com/media/wysiwyg/Navigation/Fashion/Fashion-HW-Navi_1.jpg?format=auto 1x"><source type="image/avif" srcset="https://www.steiff.com/media/wysiwyg/Navigation/Fashion/Fashion-HW-Navi_1.jpg?format=avif 1x"><source type="image/webp" srcset="https://www.steiff.com/media/wysiwyg/Navigation/Fashion/Fashion-HW-Navi_1.jpg?format=webp 1x"><source type="image/jpeg" srcset="https://www.steiff.com/media/wysiwyg/Navigation/Fashion/Fashion-HW-Navi_1.jpg?format=auto 1x"><img src="https://www.steiff.com/media/wysiwyg/Navigation/Fashion/Fashion-HW-Navi_1.jpg?format=webp" width="400" height="400" alt="OS_Navi_Teaser-WTT - Fashion-HW-Navi" loading="lazy" class=" object-cover w-full h-auto group-[.navigation-cms]:h-full group-[.navigation-cms]:rounded-lg group-[.teaser-alternative-design]:brightness-50"></picture> </div> 3057 <div class="teaser-content flex flex-col w-full flex-grow group-[.navigation-cms]:items-center group-[.teaser-alternative-design]:absolute group-[.teaser-alternative-design]:top-1/2 group-[.teaser-alternative-design]:left-1/2 group-[.teaser-alternative-design]:-translate-x-1/2 group-[.teaser-alternative-design]:-translate-y-1/2 group-[.navigation-cms]:justify-center group-[.navigation-cms]:bg-gray-ultralight group-[.navigation-cms]:rounded-b-lg group-[.navigation-cms]:pt-2 group-[.navigation-cms]:pr-3 group-[.navigation-cms]:pb-3 group-[.navigation-cms]:pl-2 group-[.teaser-alternative-design]:!bg-transparent group-[.teaser-alternative-design]:!p-0"> 3058 <div class="cmsb328-text-center p-6 group-[.navigation-cms]:p-0 group-[.teaser-alternative-design]:px-4 group-[.teaser-alternative-design]:py-6"> 3059 <h3 data-liveview-element="steiff-headline" 3060 class="hyphens-auto break-words h4 cmsb328-text-center teaser-headline group-[.teaser-alternative-design]:leading-[110%] group-[.teaser-alternative-design]:font-bold group-[.teaser-alternative-design]:text-center group-[.navigation-cms]:mb-2 group-[.navigation-cms]:font-bold group-[.navigation-cms]:text-left group-[.navigation-cms]:!text-black group-[.navigation-cms]:!text-base group-[.navigation-cms]:leading-[110%] group-[.teaser-alternative-design]:!text-white group-[.teaser-alternative-design]:!text-[1.5rem]" 3061 > 3062 Autumn Winter Collection</h3> 3063 <sp
3063an class="btn btn-primary mt-4 md:mt-6 group-[.navigation-cms]:!mt-2 group-[.navigation-cms]:flex group-[.navigation-cms]:items-center group-[.navigation-cms]:justify-center group-[.navigation-cms]:max-w-[7.75rem] group-[.navigation-cms]:px-4 group-[.navigation-cms]:text-xs group-[.navigation-cms]:font-normal group-[.navigation-cms]:shadow-md group-[.navigation-cms]:mx-auto group-[.navigation-cms\:not\(.teaser-alternative-design\)]:!text-white group-[.navigation-cms\:not\(.teaser-alternative-design\)]:!bg-black group-[.teaser-alternative-design]:max-w-[7.75rem] group-[.teaser-alternative-design]:text-xs group-[.teaser-alternative-design]:!text-gray-dark group-[.teaser-alternative-design]:!bg-white group-[.teaser-alternative-design]:hover:shadow-lg" 3064 > 3065 <span class="group-[.navigation-cms]:text-inherit">Discover More</span> 3066 </span> 3067 </div> 3068 </div> 3069 </a> 3070 </div> 3071 </div> 3072 </div> 3073 </div> 3074 3075 3076 </li> 3077 </ul> 3078 </div> 3079 </div> 3080 </li> 3081 <li class="3xl:pb-5 flex flex-col w-full lg:w-auto items-center justify-between border-b border-gray-medium lg:border-b-0 lg:pr-10 xl:pr-9" 3082 :class="{'border-b' : openSubmenuId !== '7180'}" 3083 x-on:mouseenter="openSubmenuId = !isMobileMode && '7180' || openSubmenuId" 3084 x-show="openSubmenuId === null || openSubmenuId === '7180' || !isMobileMode" 3085 > 3086 <div class="group has-children flex w-full lg:border-b-[4px] lg:border-b-white h-full py-3 lg:pb-2 px-4 lg:px-0" 3087 :class="{'lg:!border-b-black' : '1' && openSubmenuId === '7180', '-translate-x-full !p-0 !h-0' : isMobileMode && openSubmenuId }" 3088 3089 > 3090 <a href="https://www.steiff.com/en/exclusive-world-of-collectors" 3091 class="font-bold lg:font-semibold group-[.has-children]:hidden lg:!block w-full 3xl:whitespace-nowrap xl:text-lg" 3092 style="color: 000000;" data-is-link 3093 > 3094 Exclusive World of Collectors </a> 3095 3096 3097 <div class="relative flex w-full lg:w-auto"> 3098 <button 3099 type="button" 3100 class="flex items-center w-full justify-between lg:w-auto lg:ml-2 transition-transform duration-300" 3101 x-show="isTabModeActive || isMobileMode" 3102 x-cloak 3103 :class="{'rotate-180' : !isMobileMode && openSubmenuId === '7180'}" 3104 x-ref="sr-button-7180" 3105 :aria-expanded="openSubmenuId === '7180' ? 'true' : 'false'" 3106 x-on:click.stop="toggleSubmenu('7180')" 3107 > 3108 <span class="font-bold hidden group-[.has-children]:block lg:!hidden hover:cursor-pointer" 3109 style="color: 000000;" > 3110 Exclusive World of Collectors </span> 3111 3112 3113 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" class="hidden lg:block" width="24" height="24" aria-hidden="true"> 3114 <path fill-rule="evenodd" d="M5.293 7.293a1 1 0 011.414 0L10 10.586l3.293-3.293a1 1 0 111.414 1.414l-4 4a1 1 0 01-1.414 0l-4-4a1 1 0 010-1.414z" clip-rule="evenodd"/> 3115</svg> 3116 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" viewB
3116ox="0 0 24 24" class="lg:hidden" aria-hidden="true"><path d="m18 8 4 4-4 4M2 12h20"/></svg> 3117 <span class="sr-only" 3118 id="nav-button-7180" 3119 > 3120 Toggle submenu for Exclusive World of Collectors </span> 3121 </button> 3122 </div> 3123 </div> 3124 <div x-ref="submenu-7180" 3125 class="lg:absolute left-0 top-full w-full z-30 lg:shadow-md bg-white flex border-t border-steelMist" 3126 x-show="openSubmenuId === '7180'" 3127 :aria-expanded="openSubmenuId === '7180'" 3128 aria-labelledby="nav-button-7180" 3129 x-on:keydown.escape="onSubmenuEscape" 3130 x-cloak 3131 > 3132 <div class="w-full"> 3133 <ul class="flex flex-col lg:container lg:grid grid-cols-5 xl:grid-cols-6 gap-4 items-start lg:py-10 group/level-1 max-w-[1493px]" 3134 aria-description="Submenu for Exclusive World of Collectors" 3135 > 3136 <li class="flex w-full lg:hidden items-center border-b border-gray-medium bg-white sticky top-0 -mt-px"> 3137 <button x-on:click="openSubmenuLevel2Ids = []; openSubmenuId = null;" class="font-bold px-4 py-3 flex gap-2"> 3138 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" viewBox="0 0 24 24" class="text-cherryRed" aria-hidden="true"><path d="m6 8-4 4 4 4M2 12h20"/></svg> 3139 <span class="hover:underline">Exclusive World of Collectors</span> 3140 </button> 3141 </li> 3142 <li class="flex w-full lg:hidden items-center border-b border-gray-medium"> 3143 <a href="https://www.steiff.com/en/exclusive-world-of-collectors" class="font-bold px-4 py-3 hover:underline"> 3144 Show all results </a> 3145 </li> 3146 <li class="flex flex-col w-full max-lg:border-b border-gray-medium group "> 3147 <button type="button" 3148 class="flex justify-between lg:hidden peer is-parent font-semibold px-4 py-3 text-left" 3149 x-on:click="dispatchLevel2Interaction('7195')" 3150 > 3151 <span>Highlights & New Arrivals</span> 3152 <span class="w-4 h-4 block relative"> 3153 <span class="absolute top-0 left-0 duration-200" 3154 :class="{'rotate-180 text-cherryRed' : isActiveLevel2('7195')}" 3155 > 3156 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" class="w-5" width="24" height="24" role="img"> 3157 <path fill-rule="evenodd" d="M5.293 7.293a1 1 0 011.414 0L10 10.586l3.293-3.293a1 1 0 111.414 1.414l-4 4a1 1 0 01-1.414 0l-4-4a1 1 0 010-1.414z" clip-rule="evenodd"/> 3158<title>chevron-down</title></svg> 3159 </span> 3160 </span> 3161 </button> 3162 <div class="lg:!block lg:mb-3.5 peer-[.is-parent]:hidden">
3163 <span class="block font-semibold px-4 py-3 lg:p-0 data-[is-link]:hover:underline hover:cursor-pointer" 3164 style="color: 000000;" > 3165 Highlights & New Arrivals </span> 3166 </div> 3167 3168 3169 <ul class="flex flex-col mb-2 lg:mb-0 text-gray-darker lg:text-black" 3170 x-show="!isMobileMode || isActiveLevel2('7195')" 3171 > 3172 <li class="block lg:mb-2 "> 3173 <a href="https://www.steiff.com/en/exclusive-world-of-collectors/recommendations/all-novelties" 3174 class="block px-4 lg:p-0 text-sm data-[is-link]:hover:underline max-lg:leading-8" 3175 style="color: 000000;" data-is-link 3176 > 3177 All Novelties </a> 3178 3179 3180 </li> 3181 <li class="block lg:mb-2 "> 3182 <a href="https://www.steiff.com/en/steiff-rocks" 3183 class="block px-4 lg:p-0 text-sm data-[is-link]:hover:underline max-lg:leading-8" 3184 style="color: 000000;" data-is-link 3185 > 3186 Steiff Rocks! </a> 3187 3188 3189 </li> 3190 <li class="block lg:mb-2 "> 3191 <a href="https://www.steiff.com/en/exclusive-world-of-collectors/recommendations/disney" 3192 class="block px-4 lg:p-0 text-sm data-[is-link]:hover:underline max-lg:leading-8" 3193 style="color: 000000;" data-is-link 3194 > 3195 Disney </a> 3196 3197 3198 </li> 3199 <li class="block lg:mb-2 "> 3200 <a href="https://www.steiff.com/en/exclusive-world-of-collectors/recommendations/batman" 3201 class="block px-4 lg:p-0 text-sm data-[is-link]:hover:underline max-lg:leading-8" 3202 style="color: 000000;" data-is-link 3203 > 3204 Batman </a> 3205 3206 3207 </li> 3208 </ul> 3209 </li> 3210 <li class="flex flex-col w-full max-lg:border-b border-gray-medium group "> 3211 <button type="button" 3212 class="flex justify-between lg:hidden peer is-parent font-semibold px-4 py-3 text-left" 3213 x-on:click="dispatchLevel2Interaction('7201')" 3214 >
3215 <span>Limited Edition</span> 3216 <span class="w-4 h-4 block relative"> 3217 <span class="absolute top-0 left-0 duration-200" 3218 :class="{'rotate-180 text-cherryRed' : isActiveLevel2('7201')}" 3219 > 3220 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" class="w-5" width="24" height="24" role="img"> 3221 <path fill-rule="evenodd" d="M5.293 7.293a1 1 0 011.414 0L10 10.586l3.293-3.293a1 1 0 111.414 1.414l-4 4a1 1 0 01-1.414 0l-4-4a1 1 0 010-1.414z" clip-rule="evenodd"/> 3222<title>chevron-down</title></svg> 3223 </span> 3224 </span> 3225 </button> 3226 <div class="lg:!block lg:mb-3.5 peer-[.is-parent]:hidden"> 3227 <a href="https://www.steiff.com/en/exclusive-world-of-collectors/limited-edition" 3228 class="block font-semibold px-4 py-3 lg:p-0 data-[is-link]:hover:underline" 3229 style="color: 000000;" data-is-link 3230 > 3231 Limited Edition </a> 3232 </div> 3233 3234 3235 <ul class="flex flex-col mb-2 lg:mb-0 text-gray-darker lg:text-black" 3236 x-show="!isMobileMode || isActiveLevel2('7201')" 3237 > 3238 <li class="flex w-full lg:hidden items-center"> 3239 <a href="https://www.steiff.com/en/exclusive-world-of-collectors/limited-edition" class="max-lg:leading-8 text-sm px-4 w-full hover:underline"> 3240 Show all results </a> 3241 </li> 3242 <li class="block lg:mb-2 "> 3243 <a href="https://www.steiff.com/en/exclusive-world-of-collectors/limited-edition/teddy-bears" 3244 class="block px-4 lg:p-0 text-sm data-[is-link]:hover:underline max-lg:leading-8" 3245 style="color: 000000;" data-is-link 3246 > 3247 Teddy Bears </a> 3248 3249 3250 </li> 3251 <li class="block lg:mb-2 "> 3252 <a href="https://www.steiff.com/en/exclusive-world-of-collectors/limited-edition/animals" 3253 class="block px-4 lg:p-0 text-sm data-[is-link]:hover:underline max-lg:leading-8" 3254 style="color: 000000;" data-is-link 3255 > 3256 Animals & Figures </a> 3257 3258 3259 </li> 3260 </ul> 3261 </li> 3262 <li class="flex flex-col w-full max-lg:border-b border-gray-medium group "> 3263 <button type="button" 3264 class="flex justify-between lg:hidden peer is-parent font-semibold px-4 py-3 text-left" 3265 x-on:click="dispatchLevel2Interaction('7207')" 3266 >
3267 <span>Classic Collection</span> 3268 <span class="w-4 h-4 block relative"> 3269 <span class="absolute top-0 left-0 duration-200" 3270 :class="{'rotate-180 text-cherryRed' : isActiveLevel2('7207')}" 3271 > 3272 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" class="w-5" width="24" height="24" role="img"> 3273 <path fill-rule="evenodd" d="M5.293 7.293a1 1 0 011.414 0L10 10.586l3.293-3.293a1 1 0 111.414 1.414l-4 4a1 1 0 01-1.414 0l-4-4a1 1 0 010-1.414z" clip-rule="evenodd"/> 3274<title>chevron-down</title></svg> 3275 </span> 3276 </span> 3277 </button> 3278 <div class="lg:!block lg:mb-3.5 peer-[.is-parent]:hidden"> 3279 <a href="https://www.steiff.com/en/exclusive-world-of-collectors/classic-collection" 3280 class="block font-semibold px-4 py-3 lg:p-0 data-[is-link]:hover:underline" 3281 style="color: 000000;" data-is-link 3282 > 3283 Classic Collection </a> 3284 </div> 3285 3286 3287 <ul class="flex flex-col mb-2 lg:mb-0 text-gray-darker lg:text-black" 3288 x-show="!isMobileMode || isActiveLevel2('7207')" 3289 > 3290 <li class="flex w-full lg:hidden items-center"> 3291 <a href="https://www.steiff.com/en/exclusive-world-of-collectors/classic-collection" class="max-lg:leading-8 text-sm px-4 w-full hover:underline"> 3292 Show all results </a> 3293 </li> 3294 <li class="block lg:mb-2 "> 3295 <a href="https://www.steiff.com/en/exclusive-world-of-collectors/classic-collection/teddy-bears" 3296 class="block px-4 lg:p-0 text-sm data-[is-link]:hover:underline max-lg:leading-8" 3297 style="color: 000000;" data-is-link 3298 > 3299 Teddy Bears </a> 3300 3301 3302 </li> 3303 <li class="block lg:mb-2 "> 3304 <a href="https://www.steiff.com/en/exclusive-world-of-collectors/classic-collection/animals" 3305 class="block px-4 lg:p-0 text-sm data-[is-link]:hover:underline max-lg:leading-8" 3306 style="color: 000000;" data-is-link 3307 > 3308 Animals </a> 3309 3310 3311 </li> 3312 </ul> 3313 </li> 3314 <li class="flex flex-col w-full max-lg:border-b border-gray-medium group "> 3315 <button type="button" 3316 class="flex justify-between lg:hidden peer is-parent font-semibold px-4 py-3 text-left" 3317 x-on:click="dispatchLevel2Interaction('7210')" 3318 >
3319 <span>Steiff Club</span> 3320 <span class="w-4 h-4 block relative"> 3321 <span class="absolute top-0 left-0 duration-200" 3322 :class="{'rotate-180 text-cherryRed' : isActiveLevel2('7210')}" 3323 > 3324 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" class="w-5" width="24" height="24" role="img"> 3325 <path fill-rule="evenodd" d="M5.293 7.293a1 1 0 011.414 0L10 10.586l3.293-3.293a1 1 0 111.414 1.414l-4 4a1 1 0 01-1.414 0l-4-4a1 1 0 010-1.414z" clip-rule="evenodd"/> 3326<title>chevron-down</title></svg> 3327 </span> 3328 </span> 3329 </button> 3330 <div class="lg:!block lg:mb-3.5 peer-[.is-parent]:hidden"> 3331 <a href="https://www.steiff.com/en/club" 3332 class="block font-semibold px-4 py-3 lg:p-0 data-[is-link]:hover:underline" 3333 data-is-link 3334 > 3335 Steiff Club </a> 3336 </div> 3337 3338 3339 <ul class="flex flex-col mb-2 lg:mb-0 text-gray-darker lg:text-black" 3340 x-show="!isMobileMode || isActiveLevel2('7210')" 3341 > 3342 <li class="flex w-full lg:hidden items-center"> 3343 <a href="https://www.steiff.com/en/club" class="max-lg:leading-8 text-sm px-4 w-full hover:underline"> 3344 Show all results </a> 3345 </li> 3346 <li class="block lg:mb-2 "> 3347 <a href="https://www.steiff.com/en/club" 3348 class="block px-4 lg:p-0 text-sm data-[is-link]:hover:underline max-lg:leading-8" 3349 style="color: 000000;" data-is-link 3350 > 3351 Steiff Club Advantages </a> 3352 3353 3354 </li> 3355 <li class="block lg:mb-2 "> 3356 <a href="https://www.steiff.com/en/margarete-steiff-edition" 3357 class="block px-4 lg:p-0 text-sm data-[is-link]:hover:underline max-lg:leading-8" 3358 style="color: 000000;" data-is-link 3359 > 3360 Magarete Steiff Edition </a> 3361 3362 3363 </li> 3364 <li class="block lg:mb-2 "> 3365 <a href="https://www.steiff.com/en/steiff-club-events" 3366 class="block px-4 lg:p-0 text-sm data-[is-link]:hover:underline max-lg:leading-8" 3367 style="color: 000000;" data-is-link 3368 > 3369 Steiff Club Events </a> 3370 3371 3372 </li> 3373 </ul> 3374 </li> 3375 <li class="flex flex-col w-full max-lg:border-b border-gray-medium group "> 3376 <button type="button" 3377 class="flex justify-between lg:hidden peer is-parent font-semibold px-4 py-3 text-left" 3378 x-on:click="dispatchLevel2Interaction('7213')" 3379 >
3380 <span>Discover</span> 3381 <span class="w-4 h-4 block relative"> 3382 <span class="absolute top-0 left-0 duration-200" 3383 :class="{'rotate-180 text-cherryRed' : isActiveLevel2('7213')}" 3384 > 3385 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" class="w-5" width="24" height="24" role="img"> 3386 <path fill-rule="evenodd" d="M5.293 7.293a1 1 0 011.414 0L10 10.586l3.293-3.293a1 1 0 111.414 1.414l-4 4a1 1 0 01-1.414 0l-4-4a1 1 0 010-1.414z" clip-rule="evenodd"/> 3387<title>chevron-down</title></svg> 3388 </span> 3389 </span> 3390 </button> 3391 <div class="lg:!block lg:mb-3.5 peer-[.is-parent]:hidden"> 3392 <span class="block font-semibold px-4 py-3 lg:p-0 data-[is-link]:hover:underline hover:cursor-pointer" 3393 style="color: 000000;" > 3394 Discover </span> 3395 </div> 3396 3397 3398 <ul class="flex flex-col mb-2 lg:mb-0 text-gray-darker lg:text-black" 3399 x-show="!isMobileMode || isActiveLevel2('7213')" 3400 > 3401 <li class="block lg:mb-2 "> 3402 <a href="https://www.steiff.com/en/exclusive-world-of-collectors/recommendations/collector-s-special" 3403 class="block px-4 lg:p-0 text-sm data-[is-link]:hover:underline max-lg:leading-8" 3404 style="color: #C92C30;" data-is-link 3405 > 3406 Collector´s Special </a> 3407 3408 3409 </li> 3410 <li class="block lg:mb-2 "> 3411 <a href="https://www.steiff.com/en/corporate-business" 3412 class="block px-4 lg:p-0 text-sm data-[is-link]:hover:underline max-lg:leading-8" 3413 style="color: 000000;" data-is-link 3414 > 3415 Corporate Business </a> 3416 3417 3418 </li> 3419 <li class="block lg:mb-2 "> 3420 <a href="https://www.steiff.com/en/special-features/studio-pets" 3421 class="block px-4 lg:p-0 text-sm data-[is-link]:hover:underline max-lg:leading-8" 3422 style="color: 000000;" data-is-link 3423 > 3424 Studio Pets </a> 3425 3426 3427 </li> 3428 </ul> 3429 </li> 3430 <li class="flex flex-col w-full max-lg:border-b border-gray-medium group teaser-alternative-design lg:col-start-5 xl:col-start-6 lg:row-start-1 max-lg:!border-0"> 3431 <div class="max-w-full lg:max-w-[500px] lg:col-start-6 group navigation-cms px-4 py-8 lg:p-0 [&>*]:p-0"> 3432 <!-- HyväCMS cms_block --> 3433 <div data-liveview-element="steiff_row" 3434 class=" not-prose container" 3435 style="padding-top: 1rem; padding-bottom: 1rem;" > 3436 <div class="overflow-hidden hover:shadow-lg group-[.navigation-cms:hover]:shadow-none group-[.navigation-cms]:rounded-md group-[.teaser-alternative-design]:relative group-[.navigation-cms]:p-2 w-full"> 3437 <div class=" group-[.navigation-cms]:!bg-transparent" 3438 style="background-color: #ffffff;" > 3439 <a href="https://www.steiff.com/en/online-exclusive-teddy-bear-with-lucky-charm-685125" class="flex flex-col h-full group-[.teaser-alternative-design]:relative" target="_self"> 3440 <div class="group-[.navigation-cms]:h-[11.5625rem] lg:group-[.navigation-cms]:h-[110px] group-[.navigation-cms]:w-full group-[.navigation-cms]:pt-2 group-[.navigation-cms]:px-2 group-[.navigation-cms]:bg-gray-ultralight group-[.navigation-cms]:rounded-t-lg group-[.teaser-alternative-design]:!h-full group-[.teaser-alternative-design]:!w-full group-[.teaser-alternative-design]:!min-h-0 group-[.teaser-alternative-design]:!p-0 group-[.teaser-alternative-design]:!bg-transparent group-[.teaser-alternative-design]:rounded-lg"> 3441 <picture data-liveview-element="image"><source media="(min-width: 1024px)" type="image/avif" srcset="https://www.steiff.com/media/wysiwyg/Navigation/Sammler/Sammler.png?format=avif 1x"><source media="(min-width: 1024px)" type="image/webp" srcset="https://www.steiff.com/media/wysiwyg/Navigation/Sammler/Sammler.png?format=webp 1x"><source media="(min-width: 1024px)" type="image/png" srcset="https://www.steiff.com/media/wysiwyg/Navigation/Sammler/Sammler.png?format=auto 1x"><source type="image/avif" srcset="https://www.steiff.com/media/wysiwyg/Navigation/Sammler/Sammler.png?format=avif 1x"><source type="image/webp" srcset="https://www.steiff.com/media/wysiwyg/Navigation/Sammler/Sammler.png?format=webp 1x"><source type="image/png" srcset="https://www.steiff.com/media/wysiwyg/Navigation/Sammler/Sammler.png?format=auto 1x"><img src="https://www.steiff.com/media/wysiwyg/Navigation/Sammler/Sammler.png?format=webp" width="400" height="400" alt="image" loading="lazy" class=" object-cover w-full h-auto group-[.navigation-cms]:h-full group-[.navigation-cms]:rounded-lg group-[.teaser-alternative-design]:brightness-50"></picture> </div> 3442 <div class="teaser-content flex flex-col w-full flex-grow group-[.navigation-cms]:items-center group-[.teaser-alternative-design]:absolute group-[.teaser-alternative-design]:top-1/2 group-[.teaser-alternative-design]:left-1/2 group-[.teaser-alternative-design]:-translate-x-1/2 group-[.teaser-alternative-design]:-translate-y-1/2 group-[.navigation-cms]:justify-center group-[.navigation-cms]:bg-gray-ultralight group-[.navigation-cms]:rounded-b-lg group-[.navigation-cms]:pt-2 group-[.navigation-cms]:pr-3 group-[.navigation-cms]:pb-3 group-[.navigation-cms]:pl-2 group-[.teaser-alternative-design]:!bg-transparent group-[.teaser-alternative-design]:!p-0"> 3443 <div class="text-center p-6 group-[.navigation-cms]:p-0 group-[.teaser-alternative-design]:px-4 group-[.teaser-alternative-design]:py-6"> 3444 <h3 data-liveview-element="steiff-headline" 3445 class="hyphens-auto break-words h4 text-center teaser-headline group-[.teaser-alternative-design]:leading-[110%] group-[.teaser-alternative-design]:font-bold group-[.teaser-alternative-design]:text-center group-[.navigation-cms]:mb-2 group-[.navigation-cms]:font-bold group-[.navigation-cms]:text-left group-[.navigation-cms]:!text-black group-[.navigation-cms]:!text-base group-[.navigation-cms]:leading-[110%] group-[.teaser-alternative-design]:!text-white group-[.teaser-alternative-design]:!text-[1.5rem]" 3446 > 3447 Online exclusive</h3> 3448 <sp
3448an class="btn btn-primary mt-4 md:mt-6 group-[.navigation-cms]:!mt-2 group-[.navigation-cms]:flex group-[.navigation-cms]:items-center group-[.navigation-cms]:justify-center group-[.navigation-cms]:max-w-[7.75rem] group-[.navigation-cms]:px-4 group-[.navigation-cms]:text-xs group-[.navigation-cms]:font-normal group-[.navigation-cms]:shadow-md group-[.navigation-cms]:mx-auto group-[.navigation-cms\:not\(.teaser-alternative-design\)]:!text-white group-[.navigation-cms\:not\(.teaser-alternative-design\)]:!bg-black group-[.teaser-alternative-design]:max-w-[7.75rem] group-[.teaser-alternative-design]:text-xs group-[.teaser-alternative-design]:!text-gray-dark group-[.teaser-alternative-design]:!bg-white group-[.teaser-alternative-design]:hover:shadow-lg" 3449 > 3450 <span class="group-[.navigation-cms]:text-inherit">To the product</span> 3451 </span> 3452 </div> 3453 </div> 3454 </a> 3455 </div> 3456 </div> 3457 </div> 3458 </div> 3459 3460 3461 </li> 3462 </ul> 3463 </div> 3464 </div> 3465 </li> 3466 <li class="3xl:pb-5 flex flex-col w-full lg:w-auto items-center justify-between border-b border-gray-medium lg:border-b-0 lg:pr-10 xl:pr-9" 3467 :class="{'border-b' : openSubmenuId !== '7183'}" 3468 x-on:mouseenter="openSubmenuId = !isMobileMode && '7183' || openSubmenuId" 3469 x-show="openSubmenuId === null || openSubmenuId === '7183' || !isMobileMode" 3470 > 3471 <div class="group has-children flex w-full lg:border-b-[4px] lg:border-b-white h-full py-3 lg:pb-2 px-4 lg:px-0" 3472 :class="{'lg:!border-b-black' : '1' && openSubmenuId === '7183', '-translate-x-full !p-0 !h-0' : isMobileMode && openSubmenuId }" 3473 3474 > 3475 <a href="https://www.steiff.com/en/gift-overview" 3476 class="font-bold lg:font-semibold group-[.has-children]:hidden lg:!block w-full 3xl:whitespace-nowrap xl:text-lg" 3477 data-is-link 3478 > 3479 Gifts </a> 3480 3481 3482 <div class="relative flex w-full lg:w-auto"> 3483 <button 3484 type="button" 3485 class="flex items-center w-full justify-between lg:w-auto lg:ml-2 transition-transform duration-300" 3486 x-show="isTabModeActive || isMobileMode" 3487 x-cloak 3488 :class="{'rotate-180' : !isMobileMode && openSubmenuId === '7183'}" 3489 x-ref="sr-button-7183" 3490 :aria-expanded="openSubmenuId === '7183' ? 'true' : 'false'" 3491 x-on:click.stop="toggleSubmenu('7183')" 3492 > 3493 <span class="font-bold hidden group-[.has-children]:block lg:!hidden hover:cursor-pointer" 3494 > 3495 Gifts </span> 3496 3497 3498 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" class="hidden lg:block" width="24" height="24" aria-hidden="true"> 3499 <path fill-rule="evenodd" d="M5.293 7.293a1 1 0 011.414 0L10 10.586l3.293-3.293a1 1 0 111.414 1.414l-4 4a1 1 0 01-1.414 0l-4-4a1 1 0 010-1.414z" clip-rule="evenodd"/> 3500</svg> 3501 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" viewB
3501ox="0 0 24 24" class="lg:hidden" aria-hidden="true"><path d="m18 8 4 4-4 4M2 12h20"/></svg> 3502 <span class="sr-only" 3503 id="nav-button-7183" 3504 > 3505 Toggle submenu for Gifts </span> 3506 </button> 3507 </div> 3508 </div> 3509 <div x-ref="submenu-7183" 3510 class="lg:absolute left-0 top-full w-full z-30 lg:shadow-md bg-white flex border-t border-steelMist" 3511 x-show="openSubmenuId === '7183'" 3512 :aria-expanded="openSubmenuId === '7183'" 3513 aria-labelledby="nav-button-7183" 3514 x-on:keydown.escape="onSubmenuEscape" 3515 x-cloak 3516 > 3517 <div class="w-full"> 3518 <ul class="flex flex-col lg:container lg:grid grid-cols-5 xl:grid-cols-6 gap-4 items-start lg:py-10 group/level-1 max-w-[1493px]" 3519 aria-description="Submenu for Gifts" 3520 > 3521 <li class="flex w-full lg:hidden items-center border-b border-gray-medium bg-white sticky top-0 -mt-px"> 3522 <button x-on:click="openSubmenuLevel2Ids = []; openSubmenuId = null;" class="font-bold px-4 py-3 flex gap-2"> 3523 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" viewBox="0 0 24 24" class="text-cherryRed" aria-hidden="true"><path d="m6 8-4 4 4 4M2 12h20"/></svg> 3524 <span class="hover:underline">Gifts</span> 3525 </button> 3526 </li> 3527 <li class="flex w-full lg:hidden items-center border-b border-gray-medium"> 3528 <a href="https://www.steiff.com/en/gift-overview" class="font-bold px-4 py-3 hover:underline"> 3529 Show all results </a> 3530 </li> 3531 <li class="flex flex-col w-full max-lg:border-b border-gray-medium group "> 3532 <button type="button" 3533 class="flex justify-between lg:hidden peer is-parent font-semibold px-4 py-3 text-left" 3534 x-on:click="dispatchLevel2Interaction('7216')" 3535 > 3536 <span>Special Occasions</span> 3537 <span class="w-4 h-4 block relative"> 3538 <span class="absolute top-0 left-0 duration-200" 3539 :class="{'rotate-180 text-cherryRed' : isActiveLevel2('7216')}" 3540 > 3541 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" class="w-5" width="24" height="24" role="img"> 3542 <path fill-rule="evenodd" d="M5.293 7.293a1 1 0 011.414 0L10 10.586l3.293-3.293a1 1 0 111.414 1.414l-4 4a1 1 0 01-1.414 0l-4-4a1 1 0 010-1.414z" clip-rule="evenodd"/> 3543<title>chevron-down</title></svg> 3544 </span> 3545 </span> 3546 </button> 3547 <div class="lg:!block lg:mb-3.5 peer-[.is-parent]:hidden">
3548 <span class="block font-semibold px-4 py-3 lg:p-0 data-[is-link]:hover:underline hover:cursor-pointer" 3549 style="color: 000000;" > 3550 Special Occasions </span> 3551 </div> 3552 3553 3554 <ul class="flex flex-col mb-2 lg:mb-0 text-gray-darker lg:text-black" 3555 x-show="!isMobileMode || isActiveLevel2('7216')" 3556 > 3557 <li class="block lg:mb-2 "> 3558 <a href="https://www.steiff.com/en/gifts/special-occasions/birth" 3559 class="block px-4 lg:p-0 text-sm data-[is-link]:hover:underline max-lg:leading-8" 3560 style="color: 000000;" data-is-link 3561 > 3562 Gifts for Newborns </a> 3563 3564 3565 </li> 3566 <li class="block lg:mb-2 "> 3567 <a href="https://www.steiff.com/en/gifts/special-occasions/christening" 3568 class="block px-4 lg:p-0 text-sm data-[is-link]:hover:underline max-lg:leading-8" 3569 style="color: 000000;" data-is-link 3570 > 3571 Baptism Gifts </a> 3572 3573 3574 </li> 3575 <li class="block lg:mb-2 "> 3576 <a href="https://www.steiff.com/en/gifts/special-occasions/birthday" 3577 class="block px-4 lg:p-0 text-sm data-[is-link]:hover:underline max-lg:leading-8" 3578 style="color: 000000;" data-is-link 3579 > 3580 Birthday Gifts </a> 3581 3582 3583 </li> 3584 <li class="block lg:mb-2 "> 3585 <a href="https://www.steiff.com/en/gifts/special-occasions/lucky-charms" 3586 class="block px-4 lg:p-0 text-sm data-[is-link]:hover:underline max-lg:leading-8" 3587 style="color: 000000;" data-is-link 3588 > 3589 Good Luck Gifts </a> 3590 3591 3592 </li> 3593 <li class="block lg:mb-2 "> 3594 <a href="https://www.steiff.com/en/stuffed-animals-toys/all-stuffed-animals/recommendations/halloween" 3595 class="block px-4 lg:p-0 text-sm data-[is-link]:hover:underline max-lg:leading-8" 3596 style="color: #CC4B00;" data-is-link 3597 > 3598 Halloween </a> 3599 3600 3601 </li> 3602 </ul> 3603 </li> 3604 <li class="flex flex-col w-full max-lg:border-b border-gray-medium group "> 3605 <button type="button" 3606 class="flex justify-between lg:hidden peer is-parent font-semibold px-4 py-3 text-left" 3607 x-on:click="dispatchLevel2Interaction('7222')" 3608 >
3609 <span>Gifts by Age</span> 3610 <span class="w-4 h-4 block relative"> 3611 <span class="absolute top-0 left-0 duration-200" 3612 :class="{'rotate-180 text-cherryRed' : isActiveLevel2('7222')}" 3613 > 3614 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" class="w-5" width="24" height="24" role="img"> 3615 <path fill-rule="evenodd" d="M5.293 7.293a1 1 0 011.414 0L10 10.586l3.293-3.293a1 1 0 111.414 1.414l-4 4a1 1 0 01-1.414 0l-4-4a1 1 0 010-1.414z" clip-rule="evenodd"/> 3616<title>chevron-down</title></svg> 3617 </span> 3618 </span> 3619 </button> 3620 <div class="lg:!block lg:mb-3.5 peer-[.is-parent]:hidden"> 3621 <span class="block font-semibold px-4 py-3 lg:p-0 data-[is-link]:hover:underline hover:cursor-pointer" 3622 style="color: 000000;" > 3623 Gifts by Age </span> 3624 </div> 3625 3626 3627 <ul class="flex flex-col mb-2 lg:mb-0 text-gray-darker lg:text-black" 3628 x-show="!isMobileMode || isActiveLevel2('7222')" 3629 > 3630 <li class="block lg:mb-2 "> 3631 <a href="https://www.steiff.com/en/gifts/gifts-by-age/babies-0-2-years" 3632 class="block px-4 lg:p-0 text-sm data-[is-link]:hover:underline max-lg:leading-8" 3633 style="color: 000000;" data-is-link 3634 > 3635 Babies (0 - 2 years) </a> 3636 3637 3638 </li> 3639 <li class="block lg:mb-2 "> 3640 <a href="https://www.steiff.com/en/gifts/gifts-by-age" 3641 class="block px-4 lg:p-0 text-sm data-[is-link]:hover:underline max-lg:leading-8" 3642 style="color: 000000;" data-is-link 3643 > 3644 Toddlers (2-4 years) </a> 3645 3646 3647 </li> 3648 <li class="block lg:mb-2 "> 3649 <a href="https://www.steiff.com/en/gifts/gifts-by-age/children-from-5-years" 3650 class="block px-4 lg:p-0 text-sm data-[is-link]:hover:underline max-lg:leading-8" 3651 style="color: 000000;" data-is-link 3652 > 3653 Children (from 5 years) </a> 3654 3655 3656 </li> 3657 <li class="block lg:mb-2 "> 3658 <a href="https://www.steiff.com/en/gifts/gifts-by-age/young-adults" 3659 class="block px-4 lg:p-0 text-sm data-[is-link]:hover:underline max-lg:leading-8" 3660 style="color: 000000;" data-is-link 3661 > 3662 Young Adults </a> 3663 3664 3665 </li> 3666 <li class="block lg:mb-2 "> 3667 <a href="https://www.steiff.com/en/gifts/gifts-by-age/for-parents-and-grandparents" 3668 class="block px-4 lg:p-0 text-sm data-[is-link]:hover:underline max-lg:leading-8" 3669 style="color: 000000;" data-is-link 3670 > 3671 For Parents and Grandparents </a> 3672 3673 3674 </li> 3675 </ul> 3676 </li> 3677 <li class="flex flex-col w-full max-lg:border-b border-gray-medium group "> 3678 <button type="button" 3679 class="flex justify-between lg:hidden peer is-parent font-semibold px-4 py-3 text-left" 3680 x-on:click="dispatchLevel2Interaction('7225')" 3681 >
3682 <span>Gifts by Price</span> 3683 <span class="w-4 h-4 block relative"> 3684 <span class="absolute top-0 left-0 duration-200" 3685 :class="{'rotate-180 text-cherryRed' : isActiveLevel2('7225')}" 3686 > 3687 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" class="w-5" width="24" height="24" role="img"> 3688 <path fill-rule="evenodd" d="M5.293 7.293a1 1 0 011.414 0L10 10.586l3.293-3.293a1 1 0 111.414 1.414l-4 4a1 1 0 01-1.414 0l-4-4a1 1 0 010-1.414z" clip-rule="evenodd"/> 3689<title>chevron-down</title></svg> 3690 </span> 3691 </span> 3692 </button> 3693 <div class="lg:!block lg:mb-3.5 peer-[.is-parent]:hidden"> 3694 <span class="block font-semibold px-4 py-3 lg:p-0 data-[is-link]:hover:underline hover:cursor-pointer" 3695 style="color: 000000;" > 3696 Gifts by Price </span> 3697 </div> 3698 3699 3700 <ul class="flex flex-col mb-2 lg:mb-0 text-gray-darker lg:text-black" 3701 x-show="!isMobileMode || isActiveLevel2('7225')" 3702 > 3703 <li class="block lg:mb-2 "> 3704 <a href="https://www.steiff.com/en/gifts/gifts-by-price/gifts-up-to-50-euro" 3705 class="block px-4 lg:p-0 text-sm data-[is-link]:hover:underline max-lg:leading-8" 3706 style="color: 000000;" data-is-link 3707 > 3708 Gifts up to 50 € </a> 3709 3710 3711 </li> 3712 <li class="block lg:mb-2 "> 3713 <a href="https://www.steiff.com/en/gifts/gifts-by-price/gifts-up-to-100-euro" 3714 class="block px-4 lg:p-0 text-sm data-[is-link]:hover:underline max-lg:leading-8" 3715 style="color: 000000;" data-is-link 3716 > 3717 Gifts up to 100 € </a> 3718 3719 3720 </li> 3721 <li class="block lg:mb-2 "> 3722 <a href="https://www.steiff.com/en/gifts/gifts-by-price/gifts-from-100-euro" 3723 class="block px-4 lg:p-0 text-sm data-[is-link]:hover:underline max-lg:leading-8" 3724 style="color: 000000;" data-is-link 3725 > 3726 Gifts from 100 € </a> 3727 3728 3729 </li> 3730 </ul> 3731 </li> 3732 <li class="flex flex-col w-full max-lg:border-b border-gray-medium group "> 3733 <button type="button" 3734 class="flex justify-between lg:hidden peer is-parent font-semibold px-4 py-3 text-left" 3735 x-on:click="dispatchLevel2Interaction('7228')" 3736 >
3737 <span>Gifts by Type</span> 3738 <span class="w-4 h-4 block relative"> 3739 <span class="absolute top-0 left-0 duration-200" 3740 :class="{'rotate-180 text-cherryRed' : isActiveLevel2('7228')}" 3741 > 3742 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" class="w-5" width="24" height="24" role="img"> 3743 <path fill-rule="evenodd" d="M5.293 7.293a1 1 0 011.414 0L10 10.586l3.293-3.293a1 1 0 111.414 1.414l-4 4a1 1 0 01-1.414 0l-4-4a1 1 0 010-1.414z" clip-rule="evenodd"/> 3744<title>chevron-down</title></svg> 3745 </span> 3746 </span> 3747 </button> 3748 <div class="lg:!block lg:mb-3.5 peer-[.is-parent]:hidden"> 3749 <span class="block font-semibold px-4 py-3 lg:p-0 data-[is-link]:hover:underline hover:cursor-pointer" 3750 style="color: 000000;" > 3751 Gifts by Type </span> 3752 </div> 3753 3754 3755 <ul class="flex flex-col mb-2 lg:mb-0 text-gray-darker lg:text-black" 3756 x-show="!isMobileMode || isActiveLevel2('7228')" 3757 > 3758 <li class="block lg:mb-2 "> 3759 <a href="https://www.steiff.com/en/gifts/gifts-by-product-type/stuffed-animals" 3760 class="block px-4 lg:p-0 text-sm data-[is-link]:hover:underline max-lg:leading-8" 3761 style="color: 000000;" data-is-link 3762 > 3763 Stuffed Animals </a> 3764 3765 3766 </li> 3767 <li class="block lg:mb-2 "> 3768 <a href="https://www.steiff.com/en/gifts/gifts-by-product-type/toys" 3769 class="block px-4 lg:p-0 text-sm data-[is-link]:hover:underline max-lg:leading-8" 3770 style="color: 000000;" data-is-link 3771 > 3772 Toys for Babies </a> 3773 3774 3775 </li> 3776 <li class="block lg:mb-2 "> 3777 <a href="https://www.steiff.com/en/gifts/gifts-by-product-type/collector-editions" 3778 class="block px-4 lg:p-0 text-sm data-[is-link]:hover:underline max-lg:leading-8" 3779 style="color: 000000;" data-is-link 3780 > 3781 Collector´s Showcase </a> 3782 3783 3784 </li> 3785 <li class="block lg:mb-2 "> 3786 <a href="https://www.steiff.com/en/gifts/gifts-by-product-type/baby-kids-fashion" 3787 class="block px-4 lg:p-0 text-sm data-[is-link]:hover:underline max-lg:leading-8" 3788 style="color: 000000;" data-is-link 3789 > 3790 Baby and Children's Fashion </a> 3791 3792 3793 </li> 3794 <li class="block lg:mb-2 "> 3795 <a href="https://www.steiff.com/en/gifts/gifts-by-product-type/gift-sets" 3796 class="block px-4 lg:p-0 text-sm data-[is-link]:hover:underline max-lg:leading-8" 3797 style="color: 000000;" data-is-link 3798 > 3799 Gift sets </a> 3800 3801 3802 </li> 3803 </ul> 3804 </li> 3805 </ul> 3806 </div> 3807 </div> 3808 </li> 3809 <li class="3xl:pb-5 flex flex-col w-full lg:w-auto items-center justify-between border-b border-gray-medium lg:border-b-0" 3810 :class="{'border-b' : openSubmenuId !== '7189'}" 3811 x-on:mouseenter="openSubmenuId = !isMobileMode && '7189' || openSubmenuId" 3812 x-show="openSubmenuId === null || openSubmenuId === '7189' || !isMobileMode" 3813 > 3814 <div class="group has-children flex w-full lg:border-b-[4px] lg:border-b-white h-full py-3 lg:pb-2 px-4 lg:px-0" 3815 :class="{'lg:!border-b-black' : '1' && openSubmenuId === '7189', '-translate-x-full !p-0 !h-0' : isMobileMode && openSubmenuId }" 3816 3817 >
3818 <span class="font-bold lg:font-semibold group-[.has-children]:hidden lg:!block w-full 3xl:whitespace-nowrap xl:text-lg hover:cursor-pointer" 3819 > 3820 The World of Steiff </span> 3821 3822 3823 <div class="relative flex w-full lg:w-auto"> 3824 <button 3825 type="button" 3826 class="flex items-center w-full justify-between lg:w-auto lg:ml-2 transition-transform duration-300" 3827 x-show="isTabModeActive || isMobileMode" 3828 x-cloak 3829 :class="{'rotate-180' : !isMobileMode && openSubmenuId === '7189'}" 3830 x-ref="sr-button-7189" 3831 :aria-expanded="openSubmenuId === '7189' ? 'true' : 'false'" 3832 x-on:click.stop="toggleSubmenu('7189')" 3833 > 3834 <span class="font-bold hidden group-[.has-children]:block lg:!hidden hover:cursor-pointer" 3835 > 3836 The World of Steiff </span> 3837 3838 3839 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" class="hidden lg:block" width="24" height="24" aria-hidden="true"> 3840 <path fill-rule="evenodd" d="M5.293 7.293a1 1 0 011.414 0L10 10.586l3.293-3.293a1 1 0 111.414 1.414l-4 4a1 1 0 01-1.414 0l-4-4a1 1 0 010-1.414z" clip-rule="evenodd"/> 3841</svg> 3842 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" viewBox="0 0 24 24" class="lg:hidden" aria-hidden="true"><path d="m18 8 4 4-4 4M2 12h20"/></svg> 3843 <span class="sr-only" 3844 id="nav-button-7189" 3845 > 3846 Toggle submenu for The World of Steiff </span> 3847 </button> 3848 </div> 3849 </div> 3850 <div x-ref="submenu-7189" 3851 class="lg:absolute left-0 top-full w-full z-30 lg:shadow-md bg-white flex border-t border-steelMist" 3852 x-show="openSubmenuId === '7189'" 3853 :aria-expanded="openSubmenuId === '7189'" 3854 aria-labelledby="nav-button-7189" 3855 x-on:keydown.escape="onSubmenuEscape" 3856 x-cloak 3857 > 3858 <div class="w-full"> 3859 <ul class="flex flex-col lg:container lg:grid grid-cols-5 xl:grid-cols-6 gap-4 items-start lg:py-10 group/level-1 max-w-[1493px]" 3860 aria-description="Submenu for The World of Steiff" 3861 > 3862 <li class="flex w-full lg:hidden items-center border-b border-gray-medium bg-white sticky top-0 -mt-px"> 3863 <button x-on:click="openSubmenuLevel2Ids = []; openSubmenuId = null;" class="font-bold px-4 py-3 flex gap-2"> 3864 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" viewB
3864ox="0 0 24 24" class="text-cherryRed" aria-hidden="true"><path d="m6 8-4 4 4 4M2 12h20"/></svg> 3865 <span class="hover:underline">The World of Steiff</span> 3866 </button> 3867 </li> 3868 <li class="flex flex-col w-full max-lg:border-b border-gray-medium group "> 3869 <button type="button" 3870 class="flex justify-between lg:hidden peer is-parent font-semibold px-4 py-3 text-left" 3871 x-on:click="dispatchLevel2Interaction('7240')" 3872 > 3873 <span>Things to know</span> 3874 <span class="w-4 h-4 block relative"> 3875 <span class="absolute top-0 left-0 duration-200" 3876 :class="{'rotate-180 text-cherryRed' : isActiveLevel2('7240')}" 3877 > 3878 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" class="w-5" width="24" height="24" role="img"> 3879 <path fill-rule="evenodd" d="M5.293 7.293a1 1 0 011.414 0L10 10.586l3.293-3.293a1 1 0 111.414 1.414l-4 4a1 1 0 01-1.414 0l-4-4a1 1 0 010-1.414z" clip-rule="evenodd"/> 3880<title>chevron-down</title></svg> 3881 </span> 3882 </span> 3883 </button> 3884 <div class="lg:!block lg:mb-3.5 peer-[.is-parent]:hidden"> 3885 <span class="block font-semibold px-4 py-3 lg:p-0 data-[is-link]:hover:underline hover:cursor-pointer" 3886 style="color: 000000;" > 3887 Things to know </span> 3888 </div> 3889 3890 3891 <ul class="flex flex-col mb-2 lg:mb-0 text-gray-darker lg:text-black" 3892 x-show="!isMobileMode || isActiveLevel2('7240')" 3893 > 3894 <li class="block lg:mb-2 "> 3895 <a href="https://corporate.steiff.com/en/steiff-teddy/history/" 3896 class="block px-4 lg:p-0 text-sm data-[is-link]:hover:underline max-lg:leading-8" 3897 style="color: 000000;" data-is-link 3898 target="_blank" 3899 rel="noopener noreferrer" 3900 > 3901 The History of the Teddy Bear </a> 3902 3903 3904 </li> 3905 <li class="block lg:mb-2 "> 3906 <a href="https://corporate.steiff.com/en/company/button-in-ear/" 3907 class="block px-4 lg:p-0 text-sm data-[is-link]:hover:underline max-lg:leading-8" 3908 style="color: 000000;" data-is-link 3909 target="_blank" 3910 rel="noopener noreferrer" 3911 > 3912 Button in Ear </a> 3913 3914 3915 </li> 3916 <li class="block lg:mb-2 "> 3917 <a href="https://www.steiff.com/en/care-and-wash" 3918 class="block px-4 lg:p-0 text-sm data-[is-link]:hover:underline max-lg:leading-8" 3919 style="color: 000000;" data-is-link 3920 > 3921 How to Wash & Care for Your Stuffed Animals </a> 3922 3923 3924 </li> 3925 </ul> 3926 </li> 3927 <li class="flex flex-col w-full max-lg:border-b border-gray-medium group "> 3928 <button type="button" 3929 class="flex justify-between lg:hidden peer is-parent font-semibold px-4 py-3 text-left" 3930 x-on:click="dispatchLevel2Interaction('7243')" 3931 >
3932 <span>Steiff on Site</span> 3933 <span class="w-4 h-4 block relative"> 3934 <span class="absolute top-0 left-0 duration-200" 3935 :class="{'rotate-180 text-cherryRed' : isActiveLevel2('7243')}" 3936 > 3937 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" class="w-5" width="24" height="24" role="img"> 3938 <path fill-rule="evenodd" d="M5.293 7.293a1 1 0 011.414 0L10 10.586l3.293-3.293a1 1 0 111.414 1.414l-4 4a1 1 0 01-1.414 0l-4-4a1 1 0 010-1.414z" clip-rule="evenodd"/> 3939<title>chevron-down</title></svg> 3940 </span> 3941 </span> 3942 </button> 3943 <div class="lg:!block lg:mb-3.5 peer-[.is-parent]:hidden"> 3944 <span class="block font-semibold px-4 py-3 lg:p-0 data-[is-link]:hover:underline hover:cursor-pointer" 3945 style="color: 000000;" > 3946 Steiff on Site </span> 3947 </div> 3948 3949 3950 <ul class="flex flex-col mb-2 lg:mb-0 text-gray-darker lg:text-black" 3951 x-show="!isMobileMode || isActiveLevel2('7243')" 3952 > 3953 <li class="block lg:mb-2 "> 3954 <a href="https://corporate.steiff.com/en/museum/" 3955 class="block px-4 lg:p-0 text-sm data-[is-link]:hover:underline max-lg:leading-8" 3956 style="color: 000000;" data-is-link 3957 target="_blank" 3958 rel="noopener noreferrer" 3959 > 3960 Museum </a> 3961 3962 3963 </li> 3964 <li class="block lg:mb-2 "> 3965 <a href="https://corporate.steiff.com/en/events/" 3966 class="block px-4 lg:p-0 text-sm data-[is-link]:hover:underline max-lg:leading-8" 3967 style="color: 000000;" data-is-link 3968 target="_blank" 3969 rel="noopener noreferrer" 3970 > 3971 Events </a> 3972 3973 3974 </li> 3975 <li class="block lg:mb-2 "> 3976 <a href="https://www.steiff.com/en/steiff-shops" 3977 class="block px-4 lg:p-0 text-sm data-[is-link]:hover:underline max-lg:leading-8" 3978 style="color: 000000;" data-is-link 3979 > 3980 Steiff Stores </a> 3981 3982 3983 </li> 3984 <li class="block lg:mb-2 "> 3985 <a href="https://www.steiff.com/en/storefinder" 3986 class="block px-4 lg:p-0 text-sm data-[is-link]:hover:underline max-lg:leading-8" 3987 style="color: 000000;" data-is-link 3988 target="_blank" 3989 rel="noopener noreferrer" 3990 > 3991 Storefinder </a> 3992 3993 3994 </li> 3995 </ul> 3996 </li> 3997 <li class="flex flex-col w-full max-lg:border-b border-gray-medium group "> 3998 <button type="button" 3999 class="flex justify-between lg:hidden peer is-parent font-semibold px-4 py-3 text-left" 4000 x-on:click="dispatchLevel2Interaction('7258')" 4001 >
4002 <span>Steiff Company</span> 4003 <span class="w-4 h-4 block relative"> 4004 <span class="absolute top-0 left-0 duration-200" 4005 :class="{'rotate-180 text-cherryRed' : isActiveLevel2('7258')}" 4006 > 4007 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" class="w-5" width="24" height="24" role="img"> 4008 <path fill-rule="evenodd" d="M5.293 7.293a1 1 0 011.414 0L10 10.586l3.293-3.293a1 1 0 111.414 1.414l-4 4a1 1 0 01-1.414 0l-4-4a1 1 0 010-1.414z" clip-rule="evenodd"/> 4009<title>chevron-down</title></svg> 4010 </span> 4011 </span> 4012 </button> 4013 <div class="lg:!block lg:mb-3.5 peer-[.is-parent]:hidden"> 4014 <a href="https://corporate.steiff.com/en/company/" 4015 class="block font-semibold px-4 py-3 lg:p-0 data-[is-link]:hover:underline" 4016 style="color: 000000;" data-is-link 4017 target="_blank" 4018 rel="noopener noreferrer" 4019 > 4020 Steiff Company </a> 4021 </div> 4022 4023 4024 <ul class="flex flex-col mb-2 lg:mb-0 text-gray-darker lg:text-black" 4025 x-show="!isMobileMode || isActiveLevel2('7258')" 4026 > 4027 <li class="flex w-full lg:hidden items-center"> 4028 <a href="https://corporate.steiff.com/en/company/" class="max-lg:leading-8 text-sm px-4 w-full hover:underline"> 4029 Show all results </a> 4030 </li> 4031 <li class="block lg:mb-2 "> 4032 <a href="https://corporate.steiff.com/en/company/history/" 4033 class="block px-4 lg:p-0 text-sm data-[is-link]:hover:underline max-lg:leading-8" 4034 style="color: 000000;" data-is-link 4035 target="_blank" 4036 rel="noopener noreferrer" 4037 > 4038 History </a> 4039 4040 4041 </li> 4042 <li class="block lg:mb-2 "> 4043 <a href="https://corporate.steiff.com/en/press-news/" 4044 class="block px-4 lg:p-0 text-sm data-[is-link]:hover:underline max-lg:leading-8" 4045 style="color: 000000;" data-is-link 4046 target="_blank" 4047 rel="noopener noreferrer" 4048 > 4049 Press & News </a> 4050 4051 4052 </li> 4053 <li class="block lg:mb-2 "> 4054 <a href="https://corporate.steiff.com/en/career/" 4055 class="block px-4 lg:p-0 text-sm data-[is-link]:hover:underline max-lg:leading-8" 4056 style="color: 000000;" data-is-link 4057 target="_blank" 4058 rel="noopener noreferrer" 4059 > 4060 Career </a> 4061 4062 4063 </li> 4064 <li class="block lg:mb-2 "> 4065 <a href="https://www.steiff.com/en/sustainabilitty" 4066 class="block px-4 lg:p-0 text-sm data-[is-link]:hover:underline max-lg:leading-8" 4067 style="color: 000000;" data-is-link 4068 > 4069 Sustainability </a> 4070 4071 4072 </li> 4073 </ul> 4074 </li> 4075 </ul> 4076 </div> 4077 </div> 4078 </li> 4079 <li class="lg:hidden bg-gray-light border-b border-gray-medium flex w-full" 4080 x-show="!openSubmenuId" 4081 > 4082 <a href="https://www.steiff.com/en/aide" 4083 class="py-3 px-4 font-semibold block w-full" 4084 > 4085 Help </a> 4086 </li> 4087 <li class="lg:hidden bg-gray-light border-b border-gray-medium flex w-full" 4088 x-show="!openSubmenuId" 4089 > 4090 <a href="https://www.steiff.com/en/help" 4091 class="py-3 px-4 font-semibold block w-full" 4092 > 4093 Contact </a> 4094 </li> 4095 <li class="lg:hidden bg-gray-light border-b border-gray-medium flex w-full group mobile-navigation-appendix" 4096 x-show="!openSubmenuId" 4097 > 4098
4098<script> 4099 function initLanguageSwitcher() { 4100 return { 4101 open: false, 4102 countries: [{"id":2,"label":"Germany","store":"de-de","icon":"https:\/\/www.steiff.com\/static\/version1790768634\/frontend\/Steiff\/default\/en_GB\/languageIcons\/DE.svg"},{"id":3,"label":"Austria","store":"de-at","icon":"https:\/\/www.steiff.com\/static\/version1790768634\/frontend\/Steiff\/default\/en_GB\/languageIcons\/AT.svg"},{"id":4,"label":"United Kingdom","store":"en-uk","icon":"https:\/\/www.steiff.com\/static\/version1790768634\/frontend\/Steiff\/default\/en_GB\/languageIcons\/GB.svg"},{"id":21,"label":"USA \u0026 Canada","store":"en-us","icon":"https:\/\/www.steiff.com\/static\/version1790768634\/frontend\/Steiff\/default\/en_GB\/languageIcons\/US-CA.svg"},{"id":5,"label":"Belgium (English)","store":"en","icon":"https:\/\/www.steiff.com\/static\/version1790768634\/frontend\/Steiff\/default\/en_GB\/languageIcons\/BE.svg"},{"id":6,"label":"Belgium (French)","store":"fr","icon":"https:\/\/www.steiff.com\/static\/version1790768634\/frontend\/Steiff\/default\/en_GB\/languageIcons\/BE.svg"},{"id":7,"label":"France","store":"fr","icon":"https:\/\/www.steiff.com\/static\/version1790768634\/frontend\/Steiff\/default\/en_GB\/languageIcons\/FR.svg"},{"id":8,"label":"Netherlands","store":"en","icon":"https:\/\/www.steiff.com\/static\/version1790768634\/frontend\/Steiff\/default\/en_GB\/languageIcons\/NL.svg"},{"id":9,"label":"Luxembourg","store":"en","icon":"https:\/\/www.steiff.com\/static\/version1790768634\/frontend\/Steiff\/default\/en_GB\/languageIcons\/LU.svg"},{"id":10,"label":"Spain","store":"en","icon":"https:\/\/www.steiff.com\/static\/version1790768634\/frontend\/Steiff\/default\/en_GB\/languageIcons\/ES.svg"},{"id":11,"label":"Portugal","store":"en","icon":"https:\/\/www.steiff.com\/static\/version1790768634\/frontend\/Steiff\/default\/en_GB\/languageIcons\/PT.svg"},{"id":12,"label":"Estonia","store":"en","icon":"https:\/\/www.steiff.com\/static\/version1790768634\/frontend\/Steiff\/default\/en_GB\/languageIcons\/EE.svg"},{"id":13,"label":"Finland","store":"en","icon":"https:\/\/www.steiff.com\/static\/version1790768634\/frontend\/Steiff\/default\/en_GB\/languageIcons\/FI.svg"},{"id":14,"label":"Greece","store":"en","icon":"https:\/\/www.steiff.com\/static\/version1790768634\/frontend\/Steiff\/default\/en_GB\/languageIcons\/GR.svg"},{"id":15,"label":"Ireland","store":"en","icon":"https:\/\/www.steiff.com\/static\/version1790768634\/frontend\/Steiff\/default\/en_GB\/languageIcons\/IE.svg"},{"id":16,"label":"Italy","store":"en","icon":"https:\/\/www.steiff.com\/static\/version1790768634\/frontend\/Steiff\/default\/en_GB\/languageIcons\/IT.svg"},{"id":17,"label":"Latvia","store":"en","icon":"https:\/\/www.steiff.com\/static\/version1790768634\/frontend\/Steiff\/default\/en_GB\/languageIcons\/LV.svg"},{"id":18,"label":"Lithuania","store":"en","icon":"https:\/\/www.steiff.com\/static\/version1790768634\/frontend\/Steiff\/default\/en_GB\/languageIcons\/LT.svg"},{"id":19,"label":"Slovakia","store":"en","icon":"https:\/\/www.steiff.com\/static\/version1790768634\/frontend\/Steiff\/default\/en_GB\/languageIcons\/SK.svg"},{"id":20,"label":"Slovenia","store":"en","icon":"https:\/\/www.steiff.com\/static\/version1790768634\/frontend\/Steiff\/default\/en_GB\/languageIcons\/SI.svg"},{"id":22,"label":"Switzerland (German)","store":"de-ch","icon":"https:\/\/www.steiff.com\/static\/version1790768634\/frontend\/Steiff\/default\/en_GB\/languageIcons\/CH.svg"},{"id":23,"label":"Switzerland (French)","store":"fr-ch","icon":"https:\/\/www.steiff.com\/static\/version1790768634\/frontend\/Steiff\/default\/en_GB\/languageIcons\/CH.svg"},{"id":1,"label":"Europe (English)","store":"en","icon":"https:\/\/www.steiff.com\/static\/version1790768634\/frontend\/Steiff\/default\/en_GB\/languageIcons\/EUR.svg"}], 4103 currentStoreCode: 'en', 4104 countryHtmlMapping: {"1":"\u003Cimg src=\"https:\/\/www.steiff.com\/static\/version1790768634\/frontend\/Steiff\/default\/en_GB\/languageIcons\/EUR.svg\" alt=\"\" class=\"w-4 h-4 group-[.mobile-navigation-appendix]:w-6 group-[.mobile-navigation-appendix]:h-6 inline-block mr-2\"\u003E Europe (English)","2":"\u003Cimg src=\"https:\/\/www.steiff.com\/static\/version1790768634\/frontend\/Steiff\/default\/en_GB\/languageIcons\/DE.svg\" alt=\"\" class=\"w-4 h-4 group-[.mobile-navigation-appendix]:w-6 group-[.mobile-navigation-appendix]:h-6 inline-block mr-2\"\u003E Germany","3":"\u003Cimg src=\"https:\/\/www.steiff.com\/static\/version1790768634\/frontend\/Steiff\/default\/en_GB\/languageIcons\/AT.svg\" alt=\"\" class=\"w-4 h-4 group-[.mobile-navigation-appendix]:w-6 group-[.mobile-navigation-appendix]:h-6 inline-block mr-2\"\u003E Austria","4":"\u003Cimg src=\"https:\/\/www.steiff.com\/static\/version1790768634\/frontend\/Steiff\/default\/en_GB\/languageIcons\/GB.svg\" alt=\"\" class=\"w-4 h-4 group-[.mobile-navigation-appendix]:w-6 group-[.mobile-navigation-appendix]:h-6 inline-block mr-2\"\u003E United Kingdom","21":"\u003Cimg src=\"https:\/\/www.steiff.com\/static\/version1790768634\/frontend\/Steiff\/default\/en_GB\/languageIcons\/US-CA.svg\" alt=\"\" class=\"w-4 h-4 group-[.mobile-navigation-appendix]:w-6 group-[.mobile-navigation-appendix]:h-6 inline-block mr-2\"\u003E USA \u0026amp; Canada","5":"\u003Cimg src=\"https:\/\/www.steiff.com\/static\/version1790768634\/frontend\/Steiff\/default\/en_GB\/languageIcons\/BE.svg\" alt=\"\" class=\"w-4 h-4 group-[.mobile-navigation-appendix]:w-6 group-[.mobile-navigation-appendix]:h-6 inline-block mr-2\"\u003E Belgium (English)","6":"\u003Cimg src=\"https:\/\/www.steiff.com\/static\/version1790768634\/frontend\/Steiff\/default\/en_GB\/languageIcons\/BE.svg\" alt=\"\" class=\"w-4 h-4 group-[.mobile-navigation-appendix]:w-6 group-[.mobile-navigation-appendix]:h-6 inline-block mr-2\"\u003E Belgium (French)","7":"\u003Cimg src=\"https:\/\/www.steiff.com\/static\/version1790768634\/frontend\/Steiff\/default\/en_GB\/languageIcons\/FR.svg\" alt=\"\" class=\"w-4 h-4 group-[.mobile-navigation-appendix]:w-6 group-[.mobile-navigation-appendix]:h-6 inline-block mr-2\"\u003E France","8":"\u003Cimg src=\"https:\/\/www.steiff.com\/static\/version1790768634\/frontend\/Steiff\/default\/en_GB\/languageIcons\/NL.svg\" alt=\"\" class=\"w-4 h-4 group-[.mobile-navigation-appendix]:w-6 group-[.mobile-navigation-appendix]:h-6 inline-block mr-2\"\u003E Netherlands","9":"\u
4104003Cimg src=\"https:\/\/www.steiff.com\/static\/version1790768634\/frontend\/Steiff\/default\/en_GB\/languageIcons\/LU.svg\" alt=\"\" class=\"w-4 h-4 group-[.mobile-navigation-appendix]:w-6 group-[.mobile-navigation-appendix]:h-6 inline-block mr-2\"\u003E Luxembourg","10":"\u003Cimg src=\"https:\/\/www.steiff.com\/static\/version1790768634\/frontend\/Steiff\/default\/en_GB\/languageIcons\/ES.svg\" alt=\"\" class=\"w-4 h-4 group-[.mobile-navigation-appendix]:w-6 group-[.mobile-navigation-appendix]:h-6 inline-block mr-2\"\u003E Spain","11":"\u003Cimg src=\"https:\/\/www.steiff.com\/static\/version1790768634\/frontend\/Steiff\/default\/en_GB\/languageIcons\/PT.svg\" alt=\"\" class=\"w-4 h-4 group-[.mobile-navigation-appendix]:w-6 group-[.mobile-navigation-appendix]:h-6 inline-block mr-2\"\u003E Portugal","12":"\u003Cimg src=\"https:\/\/www.steiff.com\/static\/version1790768634\/frontend\/Steiff\/default\/en_GB\/languageIcons\/EE.svg\" alt=\"\" class=\"w-4 h-4 group-[.mobile-navigation-appendix]:w-6 group-[.mobile-navigation-appendix]:h-6 inline-block mr-2\"\u003E Estonia","13":"\u003Cimg src=\"https:\/\/www.steiff.com\/static\/version1790768634\/frontend\/Steiff\/default\/en_GB\/languageIcons\/FI.svg\" alt=\"\" class=\"w-4 h-4 group-[.mobile-navigation-appendix]:w-6 group-[.mobile-navigation-appendix]:h-6 inline-block mr-2\"\u003E Finland","14":"\u003Cimg src=\"https:\/\/www.steiff.com\/static\/version1790768634\/frontend\/Steiff\/default\/en_GB\/languageIcons\/GR.svg\" alt=\"\" class=\"w-4 h-4 group-[.mobile-navigation-appendix]:w-6 group-[.mobile-navigation-appendix]:h-6 inline-block mr-2\"\u003E Greece","15":"\u003Cimg src=\"https:\/\/www.steiff.com\/static\/version1790768634\/frontend\/Steiff\/default\/en_GB\/languageIcons\/IE.svg\" alt=\"\" class=\"w-4 h-4 group-[.mobile-navigation-appendix]:w-6 group-[.mobile-navigation-appendix]:h-6 inline-block mr-2\"\u003E Ireland","16":"\u003Cimg src=\"https:\/\/www.steiff.com\/static\/version1790768634\/frontend\/Steiff\/default\/en_GB\/languageIcons\/IT.svg\" alt=\"\" class=\"w-4 h-4 group-[.mobile-navigation-appendix]:w-6 group-[.mobile-navigation-appendix]:h-6 inline-block mr-2\"\u003E Italy","17":"\u003Cimg src=\"https:\/\/www.steiff.com\/static\/version1790768634\/frontend\/Steiff\/default\/en_GB\/languageIcons\/LV.svg\" alt=\"\" class=\"w-4 h-4 group-[.mobile-navigation-appendix]:w-6 group-[.mobile-navigation-appendix]:h-6 inline-block mr-2\"\u003E Latvia","18":"\u003Cimg src=\"https:\/\/www.steiff.com\/static\/version1790768634\/frontend\/Steiff\/default\/en_GB\/languageIcons\/LT.svg\" alt=\"\" class=\"w-4 h-4 group-[.mobile-navigation-appendix]:w-6 group-[.mobile-navigation-appendix]:h-6 inline-block mr-2\"\u003E Lithuania","19":"\u003Cimg src=\"https:\/\/www.steiff.com\/static\/version1790768634\/frontend\/Steiff\/default\/en_GB\/languageIcons\/SK.svg\" alt=\"\" class=\"w-4 h-4 group-[.mobile-navigation-appendix]:w-6 group-[.mobile-navigation-appendix]:h-6 inline-block mr-2\"\u003E Slovakia","20":"\u003Cimg src=\"https:\/\/www.steiff.com\/static\/version1790768634\/frontend\/Steiff\/default\/en_GB\/languageIcons\/SI.svg\" alt=\"\" class=\"w-4 h-4 group-[.mobile-navigation-appendix]:w-6 group-[.mobile-navigation-appendix]:h-6 inline-block mr-2\"\u003E Slovenia","22":"\u003Cimg src=\"https:\/\/www.steiff.com\/static\/version1790768634\/frontend\/Steiff\/default\/en_GB\/languageIcons\/CH.svg\" alt=\"\" class=\"w-4 h-4 group-[.mobile-navigation-appendix]:w-6 group-[.mobile-navigation-appendix]:h-6 inline-block mr-2\"\u003E Switzerland (German)","23":"\u003Cimg src=\"https:\/\/www.steiff.com\/static\/version1790768634\/frontend\/Steiff\/default\/en_GB\/languageIcons\/CH.svg\" alt=\"\" class=\"w-4 h-4 group-[.mobile-navigation-appendix]:w-6 group-[.mobile-navigation-appendix]:h-6 inline-block mr-2\"\u003E Switzerland (French)"}, 4105 initialCountryHtml: "\u003Cimg src=\"https:\/\/www.steiff.com\/static\/version1790768634\/frontend\/Steiff\/default\/en_GB\/languageIcons\/EUR.svg\" alt=\"\" class=\"w-4 h-4 group-[.mobile-navigation-appendix]:w-6 group-[.mobile-navigation-appendix]:h-6 inline-block mr-2\"\u003E Europe (English)", 4106 selectedCountryHtml: null, 4107 FALLBACK_EUROPE_COUNTRY_ID: 1, 4108 4109 toggleOpen() { 4110 this.open = !this.open; 4111 }, 4112 4113 setOpenFalse() { 4114 this.open = false;
4115 }, 4116 4117 setFocus() { 4118 this.$nextTick(() => { 4119 if (this.open) { 4120 hyva.trapFocus(this.$refs.options) 4121 } 4122 else { 4123 hyva.releaseFocus() 4124 this.$refs.triggerButton.focus() 4125 } 4126 }) 4127 }, 4128 4129 buildCountryHtml(icon, label) { 4130 return `<img src="${icon}" alt="" class="w-4 h-4 group-[.mobile-navigation-appendix]:w-6 group-[.mobile-navigation-appendix]:h-6 inline-block mr-2"> ${label}`; 4131 }, 4132 4133 findCountryById(countryId) { 4134 const id = typeof countryId === 'string' ? parseInt(countryId, 10) : countryId; 4135 return this.countries.find(country => country.id === id) || null; 4136 }, 4137 4138 isEnOrFrStoreCode() { 4139 return this.currentStoreCode === 'en' || this.currentStoreCode === 'fr'; 4140 }, 4141 4142 getStoredCountry() { 4143 /* we need the browser storage, since for example france and belgium have the same store code, but we want to display the different flags */ 4144 4145 const storage = hyva.getBrowserStorage() 4146 if (!storage) return; 4147 4148 const storedCountryId = storage.getItem('currentCountryId'); 4149 const storedStoreCode = storage.getItem('currentStoreCode'); 4150 4151 if (storedCountryId && storedStoreCode === this.currentStoreCode) { 4152 const country = this.findCountryById(storedCountryId); 4153 if (country && country.store === this.currentStoreCode) { 4154 return country; 4155 } 4156 } 4157 return null; 4158 }, 4159 4160 clearStoredCountry() { 4161 const storage = hyva.getBrowserStorage() 4162 if (!storage) return; 4163 4164 storage.removeItem('currentCountryId'); 4165 storage.removeItem('currentStoreCode'); 4166 }, 4167 4168 init() { 4169 const storedCountry = this.getStoredCountry(); 4170 4171 if (storedCountry && this.countryHtmlMapping[storedCountry.id]) { 4172 this.selectedCountryHtml = this.countryHtmlMapping[storedCountry.id]; 4173 return; 4174 } 4175 4176 const storage = hyva.getBrowserStorage() 4177 if (!storage) return; 4178 4179 if (storage.getItem('currentCountryId') || storage.getItem('currentStoreCode')) { 4180 this.clearStoredCountry(); 4181 } 4182 4183 this.selectedCountryHtml = this.initialCountryHtml; 4184 }, 4185 4186 setCurrentCountry(countryId, url) { 4187 const country = this.findCountryById(countryId); 4188 if (country) { 4189 const storage = hyva.getBrowserStorage() 4190 if (storage) { 4191 storage.setItem('currentCountryId', String(countryId)); 4192 storage.setItem('currentStoreCode', country.store); 4193 } 4194 } 4195 this.setOpenFalse(); 4196 window.location.href = url; 4197 }, 4198 4199 getSelectedCountry() { 4200 const storedCountry = this.getStoredCountry(); 4201 if (storedCountry) { 4202 return this.buildCountryHtml(storedCountry.icon, storedCountry.label); 4203 } 4204 4205 if (this.selectedCountryHtml) { 4206 return this.selectedCountryHtml; 4207 } 4208 4209 if (this.isEnOrFrStoreCode()) { 4210 const europeCountry = this.findCountryById(this.FALLBACK_EUROPE_COUNTRY_ID); 4211 if (europeCountry) { 4212 return this.buildCountryHtml(europeCountry.icon, europeCountry.label); 4213 } 4214 } 4215 4216 return this.initialCountryHtml || ''; 4217 } 4218 } 4219 } 4220 window.addEventListener('alpine:init', () => Alpine.data('initLanguageSwitcher', initLanguageSwitcher), {once: true}) 4221</script>
4221 4222 <div x-data="initLanguageSwitcher" class="relative inline-block text-left z-20 pr-4 group-[.mobile-navigation-appendix]:w-full" 4223 @click.outside="setOpenFalse" 4224 @keydown.window.escape="setOpenFalse" 4225 > 4226 <div> 4227 <button @click.prevent="toggleOpen(); setFocus();" 4228 type="button" 4229 class="w-full pl-4 text-sm group-[.mobile-navigation-appendix]:flex group-[.mobile-navigation-appendix]:w-full group-[.mobile-navigation-appendix]:py-3 group-[.mobile-navigation-appendix]:text-left group-[.mobile-navigation-appendix]:text-base group-[.mobile-navigation-appendix]:font-bold" 4230 aria-haspopup="true" 4231 :aria-expanded="open ? 'true' : 'false'" 4232 x-ref="triggerButton" 4233 > 4234 <span class="inline-block group-[.mobile-navigation-appendix]:flex group-[.mobile-navigation-appendix]:items-center" x-show="!open" x-html="getSelectedCountry()"></span> 4235 <span class="inline-block opacity-80" x-show="open">Buying in</span> 4236 <span class="inline-block transition-transform duration-200 group-[.mobile-navigation-appendix]:ml-auto" :class="{'rotate-180': open}"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" class="inline-block group-[.mobile-navigation-appendix]:w-6 group-[.mobile-navigation-appendix]:h-6" width="16" height="16" role="img"> 4237 <path stroke-linecap="round" stroke-linejoin="round" d="M19 9l-7 7-7-7"/> 4238<title>chevron-down</title></svg> 4239</span> 4240 </button> 4241 </div> 4242 <nav x-cloak 4243 @keydown.escape.stop="setOpenFalse(); setFocus();" 4244 x-show="open" 4245 class="absolute right-0 border max-h-96 top-full z-20 w-fit group-[.mobile-navigation-appendix]:w-full mt-1 overflow-x-hidden origin-top-left rounded-sm shadow-lg bg-white" 4246 > 4247 <div class="h-full my-1" role="menu" aria-orientation="vertical" aria-labelledby="options-menu" 4248 x-ref="options" 4249 > 4250 <a href="https://www.steiff.com/de-de/page_cache/block/esi/blocks/%5B%22topmenu_generic%22%5D/handles/WyJkZWZhdWx0IiwiY2F0YWxvZ19jYXRlZ29yeV92aWV3IiwiY2F0YWxvZ19jYXRlZ29yeV92aWV3X3R5cGVfbGF5ZXJlZCIsImNhdGFsb2dfY2F0ZWdvcnlfdmlld19kaXNwbGF5bW9kZV9wcm9kdWN0c19hbmRfcGFnZSIsImh5dmFfZGVmYXVsdCIsImh5dmFfY2F0YWxvZ19jYXRlZ29yeV92aWV3IiwiaHl2YV9jYXRhbG9nX2NhdGVnb3J5X3ZpZXdfdHlwZV9sYXllcmVkIiwiaHl2YV9jYXRhbG9nX2NhdGVnb3J5X3ZpZXdfZGlzcGxheW1vZGVfcHJvZHVjdHNfYW5kX3BhZ2UiLCJzdG9yZV9lbiIsImNhdGFsb2dfY2F0ZWdvcnlfdmlld19zdG9yZV9lbiJd" 4251 class="text-black text-nowrap block px-4 py-1 lg:px-5 hover:bg-gray-light text-sm" 4252 @click.prevent="setCurrentCountry('2', 'https\u003A\u002F\u002Fwww.steiff.com\u002Fde\u002Dde\u002Fpage_cache\u002Fblock\u002Fesi\u002Fblocks\u002F\u00255B\u002522topmenu_generic\u002522\u00255D\u002Fhandles\u002FWyJkZWZhdWx0IiwiY2F0YWxvZ19jYXRlZ29yeV92aWV3IiwiY2F0YWxvZ19jYXRlZ29yeV92aWV3X3R5cGVfbGF5ZXJlZCIsImNhdGFsb2dfY2F0ZWdvcnlfdmlld19kaXNwbGF5bW9kZV9wcm9kdWN0c19hbmRfcGFnZSIsImh5dmFfZGVmYXVsdCIsImh5dmFfY2F0YWxvZ19jYXRlZ29yeV92aWV3IiwiaHl2YV9jYXRhbG9nX2NhdGVnb3J5X3ZpZXdfdHlwZV9sYXllcmVkIiwiaHl2YV9jYXRhbG9nX2NhdGVnb3J5X3ZpZXdfZGlzcGxheW1vZGVfcHJvZHVjdHNfYW5kX3BhZ2UiLCJzdG9yZV9lbiIsImNhdGFsb2dfY2F0ZWdvcnlfdmlld19zdG9yZV9lbiJd')" 4253 > 4254 <img src="https://www.steiff.com/static/version1790768634/frontend/Steiff/default/en_GB/languageIcons/DE.svg" alt="" class="w-4 h-4 group-[.mobile-navigation-appendix]:w-6 group-[.mobile-navigation-appendix]:h-6 inline-block mr-2"> 4255 Germany </a> 4256 <a href="https://www.steiff.com/de-at/page_cache/block/esi/blocks/%5B%22topmenu_generic%22%5D/handles/WyJkZWZhdWx0IiwiY2F0YWxvZ19jYXRlZ29yeV92aWV3IiwiY2F0YWxvZ19jYXRlZ29yeV92aWV3X3R5cGVfbGF5ZXJlZCIsImNhdGFsb2dfY2F0ZWdvcnlfdmlld19kaXNwbGF5bW9kZV9wcm9kdWN0c19hbmRfcGFnZSIsImh5dmFfZGVmYXVsdCIsImh5dmFfY2F0YWxvZ19jYXRlZ29yeV92aWV3IiwiaHl2YV9jYXRhbG9nX2NhdGVnb3J5X3ZpZXdfdHlwZV9sYXllcmVkIiwiaHl2YV9jYXRhbG9nX2NhdGVnb3J5X3ZpZXdfZGlzcGxheW1vZGVfcHJvZHVjdHNfYW5kX3BhZ2UiLCJzdG9yZV9lbiIsImNhdGFsb2dfY2F0ZWdvcnlfdmlld19zdG9yZV9lbiJd" 4257 class="text-black text-nowrap block px-4 py-1 lg:px-5 hover:bg-gray-light text-sm" 4258 @click.prevent="setCurrentCountry('3', 'https\u003A\u002F\u002Fwww.steiff.com\u002Fde\u002Dat\u002Fpage_cache\u002Fblock\u002Fesi\u002Fblocks\u002F\u00255B\u002522topmenu_generic\u002522\u00255D\u002Fhandles\u002FWyJkZWZhdWx0IiwiY2F0YWxvZ19jYXRlZ29yeV92aWV3IiwiY2F0YWxvZ19jYXRlZ29yeV92aWV3X3R5cGVfbGF5ZXJlZCIsImNhdGFsb2dfY2F0ZWdvcnlfdmlld19kaXNwbGF5bW9kZV9wcm9kdWN0c19hbmRfcGFnZSIsImh5dmFfZGVmYXVsdCIsImh5dmFfY2F0YWxvZ19jYXRlZ29yeV92aWV3IiwiaHl2YV9jYXRhbG9nX2NhdGVnb3J5X3ZpZXdfdHlwZV9sYXllcmVkIiwiaHl2YV9jYXRhbG9nX2NhdGVnb3J5X3ZpZXdfZGlzcGxheW1vZGVfcHJvZHVjdHNfYW5kX3BhZ2UiLCJzdG9yZV9lbiIsImNhdGFsb2dfY2F0ZWdvcnlfdmlld19zdG9yZV9lbiJd')" 4259 > 4260 <img src="https://www.steiff.com/static/version1790768634/frontend/Steiff/default/en_GB/languageIcons/AT.
4260svg" alt="" class="w-4 h-4 group-[.mobile-navigation-appendix]:w-6 group-[.mobile-navigation-appendix]:h-6 inline-block mr-2"> 4261 Austria </a> 4262 <a href="https://www.steiff.com/en-uk/page_cache/block/esi/blocks/%5B%22topmenu_generic%22%5D/handles/WyJkZWZhdWx0IiwiY2F0YWxvZ19jYXRlZ29yeV92aWV3IiwiY2F0YWxvZ19jYXRlZ29yeV92aWV3X3R5cGVfbGF5ZXJlZCIsImNhdGFsb2dfY2F0ZWdvcnlfdmlld19kaXNwbGF5bW9kZV9wcm9kdWN0c19hbmRfcGFnZSIsImh5dmFfZGVmYXVsdCIsImh5dmFfY2F0YWxvZ19jYXRlZ29yeV92aWV3IiwiaHl2YV9jYXRhbG9nX2NhdGVnb3J5X3ZpZXdfdHlwZV9sYXllcmVkIiwiaHl2YV9jYXRhbG9nX2NhdGVnb3J5X3ZpZXdfZGlzcGxheW1vZGVfcHJvZHVjdHNfYW5kX3BhZ2UiLCJzdG9yZV9lbiIsImNhdGFsb2dfY2F0ZWdvcnlfdmlld19zdG9yZV9lbiJd" 4263 class="text-black text-nowrap block px-4 py-1 lg:px-5 hover:bg-gray-light text-sm" 4264 @click.prevent="setCurrentCountry('4', 'https\u003A\u002F\u002Fwww.steiff.com\u002Fen\u002Duk\u002Fpage_cache\u002Fblock\u002Fesi\u002Fblocks\u002F\u00255B\u002522topmenu_generic\u002522\u00255D\u002Fhandles\u002FWyJkZWZhdWx0IiwiY2F0YWxvZ19jYXRlZ29yeV92aWV3IiwiY2F0YWxvZ19jYXRlZ29yeV92aWV3X3R5cGVfbGF5ZXJlZCIsImNhdGFsb2dfY2F0ZWdvcnlfdmlld19kaXNwbGF5bW9kZV9wcm9kdWN0c19hbmRfcGFnZSIsImh5dmFfZGVmYXVsdCIsImh5dmFfY2F0YWxvZ19jYXRlZ29yeV92aWV3IiwiaHl2YV9jYXRhbG9nX2NhdGVnb3J5X3ZpZXdfdHlwZV9sYXllcmVkIiwiaHl2YV9jYXRhbG9nX2NhdGVnb3J5X3ZpZXdfZGlzcGxheW1vZGVfcHJvZHVjdHNfYW5kX3BhZ2UiLCJzdG9yZV9lbiIsImNhdGFsb2dfY2F0ZWdvcnlfdmlld19zdG9yZV9lbiJd')" 4265 > 4266 <img src="https://www.steiff.com/static/version1790768634/frontend/Steiff/default/en_GB/languageIcons/GB.svg" alt="" class="w-4 h-4 group-[.mobile-navigation-appendix]:w-6 group-[.mobile-navigation-appendix]:h-6 inline-block mr-2"> 4267 United Kingdom </a> 4268 <a href="https://www.steiff.com/en-us/page_cache/block/esi/blocks/%5B%22topmenu_generic%22%5D/handles/WyJkZWZhdWx0IiwiY2F0YWxvZ19jYXRlZ29yeV92aWV3IiwiY2F0YWxvZ19jYXRlZ29yeV92aWV3X3R5cGVfbGF5ZXJlZCIsImNhdGFsb2dfY2F0ZWdvcnlfdmlld19kaXNwbGF5bW9kZV9wcm9kdWN0c19hbmRfcGFnZSIsImh5dmFfZGVmYXVsdCIsImh5dmFfY2F0YWxvZ19jYXRlZ29yeV92aWV3IiwiaHl2YV9jYXRhbG9nX2NhdGVnb3J5X3ZpZXdfdHlwZV9sYXllcmVkIiwiaHl2YV9jYXRhbG9nX2NhdGVnb3J5X3ZpZXdfZGlzcGxheW1vZGVfcHJvZHVjdHNfYW5kX3BhZ2UiLCJzdG9yZV9lbiIsImNhdGFsb2dfY2F0ZWdvcnlfdmlld19zdG9yZV9lbiJd" 4269 class="text-black text-nowrap block px-4 py-1 lg:px-5 hover:bg-gray-light text-sm" 4270 @click.prevent="setCurrentCountry('21', 'https\u003A\u002F\u002Fwww.steiff.com\u002Fen\u002Dus\u002Fpage_cache\u002Fblock\u002Fesi\u002Fblocks\u002F\u00255B\u002522topmenu_generic\u002522\u00255D\u002Fhandles\u002FWyJkZWZhdWx0IiwiY2F0YWxvZ19jYXRlZ29yeV92aWV3IiwiY2F0YWxvZ19jYXRlZ29yeV92aWV3X3R5cGVfbGF5ZXJlZCIsImNhdGFsb2dfY2F0ZWdvcnlfdmlld19kaXNwbGF5bW9kZV9wcm9kdWN0c19hbmRfcGFnZSIsImh5dmFfZGVmYXVsdCIsImh5dmFfY2F0YWxvZ19jYXRlZ29yeV92aWV3IiwiaHl2YV9jYXRhbG9nX2NhdGVnb3J5X3ZpZXdfdHlwZV9sYXllcmVkIiwiaHl2YV9jYXRhbG9nX2NhdGVnb3J5X3ZpZXdfZGlzcGxheW1vZGVfcHJvZHVjdHNfYW5kX3BhZ2UiLCJzdG9yZV9lbiIsImNhdGFsb2dfY2F0ZWdvcnlfdmlld19zdG9yZV9lbiJd')" 4271 > 4272 <img src="https://www.steiff.com/static/version1790768634/frontend/Steiff/default/en_GB/languageIcons/US-CA.svg" alt="" class="w-4 h-4 group-[.mobile-navigation-appendix]:w-6 group-[.mobile-navigation-appendix]:h-6 inline-block mr-2"> 4273 USA & Canada </a> 4274 <a href="https://www.steiff.com/en/page_cache/block/esi/blocks/%5B%22topmenu_generic%22%5D/handles/WyJkZWZhdWx0IiwiY2F0YWxvZ19jYXRlZ29yeV92aWV3IiwiY2F0YWxvZ19jYXRlZ29yeV92aWV3X3R5cGVfbGF5ZXJlZCIsImNhdGFsb2dfY2F0ZWdvcnlfdmlld19kaXNwbGF5bW9kZV9wcm9kdWN0c19hbmRfcGFnZSIsImh5dmFfZGVmYXVsdCIsImh5dmFfY2F0YWxvZ19jYXRlZ29yeV92aWV3IiwiaHl2YV9jYXRhbG9nX2NhdGVnb3J5X3ZpZXdfdHlwZV9sYXllcmVkIiwiaHl2YV9jYXRhbG9nX2NhdGVnb3J5X3ZpZXdfZGlzcGxheW1vZGVfcHJvZHVjdHNfYW5kX3BhZ2UiLCJzdG9yZV9lbiIsImNhdGFsb2dfY2F0ZWdvcnlfdmlld19zdG9yZV9lbiJd" 4275 class="text-black text-nowrap block px-4 py-1 lg:px-5 hover:bg-gray-light text-sm" 4276 @click.prevent="setCurrentCountry('5', 'https\u003A\u002F\u002Fwww.steiff.com\u002Fen\u002Fpage_cache\u002Fblock\u002Fesi\u002Fblocks\u002F\u00255B\u002522topmenu_generic\u002522\u00255D\u002Fhandles\u002FWyJkZWZhdWx0IiwiY2F0YWxvZ19jYXRlZ29yeV92aWV3IiwiY2F0YWxvZ19jYXRlZ29yeV92aWV3X3R5cGVfbGF5ZXJlZCIsImNhdGFsb2dfY2F0ZWdvcnlfdmlld19kaXNwbGF5bW9kZV9wcm9kdWN0c19hbmRfcGFnZSIsImh5dmFfZGVmYXVsdCIsImh5dmFfY2F0YWxvZ19jYXRlZ29yeV92aWV3IiwiaHl2YV9jYXRhbG9nX2NhdGVnb3J5X3ZpZXdfdHlwZV9sYXllcmVkIiwiaHl2YV9jYXRhbG9nX2NhdGVnb3J5X3ZpZXdfZGlzcGxheW1vZGVfcHJvZHVjdHNfYW5kX3BhZ2UiLCJzdG9yZV9lbiIsImNhdGFsb2dfY2F0ZWdvcnlfdmlld19zdG9yZV9lbiJd')" 4277 > 4278 <img src="https://www.steiff.com/static/version1790768634/frontend/Steiff/default/en_GB/languageIcons/BE.svg" alt="" class="w-4 h-4 group-[.mobile-navigation-appendix]:w-6 group-[.mobile-navigation-appendix]:h-6 inline-block mr-2"> 4279 Belgium (English) </a> 4280 <a href="https://www.steiff.com/fr/page_cache/block/esi/blocks/%5B%22topmenu_generic%22%5D/handles/WyJkZWZhdWx0IiwiY2F0YWxvZ19jYXRlZ29yeV92aWV3IiwiY2F0YWxvZ19jYXRlZ29yeV92aWV3X3R5cGVfbGF5ZXJlZCIsImNhdGFsb2dfY2F0ZWdvcnlfdmlld19kaXNwbGF5bW9kZV9wcm9kdWN0c19hbmRfcGFnZSIsImh5dmFfZGVmYXVsdCIsImh5dmFfY2F0YWxvZ19jYXRlZ29yeV92aWV3IiwiaHl2YV9jYXRhbG9nX2NhdGVnb3J5X3ZpZXdfdHlwZV9sYXllcmVkIiwiaHl2YV9jYXRhbG9nX2NhdGVnb3J5X3ZpZXdfZGlzcGxheW1vZGVfcHJvZHVjdHNfYW5kX3BhZ2UiLCJzdG9yZV9lbiIsImNhdGFsb2dfY2F0ZWdvcnlfdmlld19zdG9yZV9lbiJd" 4281 class="text-black text-nowrap block px-4 py-1 lg:px-5 hover:bg-gray-light text-sm" 4282 @click.prevent="setCurrentCountry('6', 'https\u003A\u002F\u002Fwww.steiff.com\u002Ffr\u002Fpage_cache\u002Fblock\u002Fesi\u002Fblocks\u002F\u00255B\u002522topmenu_generic\u002522\u00255D\u002Fhandles\u002FWyJkZWZhdWx0IiwiY2F0YWxvZ19jYXRlZ29yeV92aWV3IiwiY2F0YWxvZ19jYXRlZ29yeV92aWV3X3R5cGVfbGF5ZXJlZCIsImNhdGFsb2dfY2F0ZWdvcnlfdmlld19kaXNwbGF5bW9kZV9wcm9kdWN0c19hbmRfcGFnZSIsImh5dmFfZGVmYXVsdCIsImh5dmFfY2F0YWxvZ19jYXRlZ29yeV92aWV3IiwiaHl2YV9jYXRhbG9nX2NhdGVnb3J5X3ZpZXdfdHlwZV9sYXllcmVkIiwiaHl2YV9jYXRhbG9nX2NhdGVnb3J5X3ZpZXdfZGlzcGxheW1vZGVfcHJvZHVjdHNfYW5kX3BhZ2UiLCJzdG9yZV9lbiIsImNhdGFsb2dfY2F0ZWdvcnlfdmlld19zdG9yZV9lbiJd')" 4283 > 4284 <img src="https://www.steiff.com/static/version1790768634/frontend/Steiff/default/en_GB/languageIcons/BE.svg" alt="" class="w-4 h-4 group-[.mobile-navigation-appendix]:w-6 group-[.mobile-navigation-appendix]:h-6 inline-block mr-2"> 4285 Belgium (French) </a> 4286 <a href="https://www.steiff.com/fr/page_cache/block/esi/blocks/%5B%22topmenu_generic%22%5D/handles/WyJkZWZhdWx0IiwiY2F0YWxvZ19jYXRlZ29yeV92aWV3IiwiY2F0YWxvZ19jYXRlZ29yeV92aWV3X3R5cGVfbGF5ZXJlZCIsImNhdGFsb2dfY2F0ZWdvcnlfdmlld19kaXNwbGF5bW9kZV9wcm9kdWN0c19hbmRfcGFnZSIsImh5dmFfZGVmYXVsdCIsImh5dmFfY2F0YWxvZ19jYXRlZ29yeV92aWV3IiwiaHl2YV9jYXRhbG9nX2NhdGVnb3J5X3ZpZXdfdHlwZV9sYXllcmVkIiwiaHl2YV9jYXRhbG9nX2NhdGVnb3J5X3ZpZXdfZGlzcGxheW1vZGVfcHJvZHVjdHNfYW5kX3BhZ2UiLCJzdG9yZV9lbiIsImNhdGFsb2dfY2F0ZWdvcnlfdmlld19zdG9yZV9lbiJd" 4287 class="text-black text-nowrap block px-4 py-1 lg:px-5 hover:bg-gray-light text-sm" 4288 @click.prevent="setCurrentCountry('7', 'https\u003A\u002F\u002Fwww.steiff.com\u002Ffr\u002Fpage_cache\u002Fblock\u002Fesi\u002Fblocks\u002F\u00255B\u002522topmenu_generic\u002522\u00255D\u002Fhandles\u002FWyJkZWZhdWx0IiwiY2F0YWxvZ19jYXRlZ29yeV92aWV3IiwiY2F0YWxvZ19jYXRlZ29yeV92aWV3X3R5cGVfbGF5ZXJlZCIsImNhdGFsb2dfY2F0ZWdvcnlfdmlld19kaXNwbGF5bW9kZV9wcm9kdWN0c19hbmRfcGFnZSIsImh5dmFfZGVmYXVsdCIsImh5dmFfY2F0YWxvZ19jYXRlZ29yeV92aWV3IiwiaHl2YV9jYXRhbG9nX2NhdGVnb3J5X3ZpZXdfdHlwZV9sYXllcmVkIiwiaHl2YV9jYXRhbG9nX2NhdGVnb3J5X3ZpZXdfZGlzcGxheW1vZGVfcHJvZHVjdHNfYW5kX3BhZ2UiLCJzdG9yZV9lbiIsImNhdGFsb2dfY2F0ZWdvcnlfdmlld19zdG9yZV9lbiJd')" 4289 > 4290 <img src="https://www.steiff.com/static/version1790768634/frontend/Steiff/default/en_GB/languageIcons/FR.svg" alt="" class="w-4 h-4 group-[.mobile-navigation-appendix]:w-6 group-[.mobile-navigation-appendix]:h-6 inline-block mr-2"> 4291 France </a> 4292 <a href="https://www.steiff.com/en/page_cache/block/esi/blocks/%5B%22topmenu_generic%22%5D/handles/WyJkZWZhdWx0IiwiY2F0YWxvZ19jYXRlZ29yeV92aWV3IiwiY2F0YWxvZ19jYXRlZ29yeV92aWV3X3R5cGVfbGF5ZXJlZCIsImNhdGFsb2dfY2F0ZWdvcnlfdmlld19kaXNwbGF5bW9kZV9wcm9kdWN0c19hbmRfcGFnZSIsImh5dmFfZGVmYXVsdCIsImh5dmFfY2F0YWxvZ19jYXRlZ29yeV92aWV3IiwiaHl2YV9jYXRhbG9nX2NhdGVnb3J5X3ZpZXdfdHlwZV9sYXllcmVkIiwiaHl2YV9jYXRhbG9nX2NhdGVnb3J5X3ZpZXdfZGlzcGxheW1vZGVfcHJvZHVjdHNfYW5kX3BhZ2UiLCJzdG9yZV9lbiIsImNhdGFsb2dfY2F0ZWdvcnlfdmlld19zdG9yZV9lbiJd" 4293 class="text-black text-nowrap block px-4 py-1 lg:px-5 hover:bg-gray-light text-sm" 4294 @click.prevent="setCurrentCountry('8', 'https\u003A\u002F\u002Fwww.steiff.com\u002Fen\u002Fpage_cache\u002Fblock\u002Fesi\u002Fblocks\u002F\u00255B\u002522topmenu_generic\u002522\u00255D\u002Fhandles\u002FWyJkZWZhdWx0IiwiY2F0YWxvZ19jYXRlZ29yeV92aWV3IiwiY2F0YWxvZ19jYXRlZ29yeV92aWV3X3R5cGVfbGF5ZXJlZCIsImNhdGFsb2dfY2F0ZWdvcnlfdmlld19kaXNwbGF5bW9kZV9wcm9kdWN0c19hbmRfcGFnZSIsImh5dmFfZGVmYXVsdCIsImh5dmFfY2F0YWxvZ19jYXRlZ29yeV92aWV3IiwiaHl2YV9jYXRhbG9nX2NhdGVnb3J5X3ZpZXdfdHlwZV9sYXllcmVkIiwiaHl2YV9jYXRhbG9nX2NhdGVnb3J5X3ZpZXdfZGlzcGxheW1vZGVfcHJvZHVjdHNfYW5kX3BhZ2UiLCJzdG9yZV9lbiIsImNhdGFsb2dfY2F0ZWdvcnlfdmlld19zdG9yZV9lbiJd')" 4295 > 4296 <img src="https://www.steiff.com/static/version1790768634/frontend/Steiff/default/en_GB/languageIcons/NL.svg" alt="" class="w-4 h-4 group-[.mobile-navigation-appendix]:w-6 group-[.mobile-navigation-appendix]:h-6 inline-block mr-2"> 4297 Netherlands </a> 4298 <a href="https://www.steiff.com/en/page_cache/block/esi/blocks/%5B%22topmenu_generic%22%5D/handles/WyJkZWZhdWx0IiwiY2F0YWxvZ19jYXRlZ29yeV92aWV3IiwiY2F0YWxvZ19jYXRlZ29yeV92aWV3X3R5cGVfbGF5ZXJlZCIsImNhdGFsb2dfY2F0ZWdvcnlfdmlld19kaXNwbGF5bW9kZV9wcm9kdWN0c19hbmRfcGFnZSIsImh5dmFfZGVmYXVsdCIsImh5dmFfY2F0YWxvZ19jYXRlZ29yeV92aWV3IiwiaHl2YV9jYXRhbG9nX2NhdGVnb3J5X3ZpZXdfdHlwZV9sYXllcmVkIiwiaHl2YV9jYXRhbG9nX2NhdGVnb3J5X3ZpZXdfZGlzcGxheW1vZGVfcHJvZHVjdHNfYW5kX3BhZ2UiLCJzdG9yZV9lbiIsImNhdGFsb2dfY2F0ZWdvcnlfdmlld19zdG9yZV9lbiJd" 4299 class="text-black text-nowrap block px-4 py-1 lg:px-5 hover:bg-gray-light text-sm" 4300 @click.prevent="setCurrentCountry('9', 'https\u003A\u002F\u002Fwww.steiff.com\u002Fen\u002Fpage_cache\u002Fblock\u002Fesi\u002Fblocks\u002F\u00255B\u002522topmenu_generic\u002522\u00255D\u002Fhandles\u002FWyJkZWZhdWx0IiwiY2F0YWxvZ19jYXRlZ29yeV92aWV3IiwiY2F0YWxvZ19jYXRlZ29yeV92aWV3X3R5cGVfbGF5ZXJlZCIsImNhdGFsb2dfY2F0ZWdvcnlfdmlld19kaXNwbGF5bW9kZV9wcm9kdWN0c19hbmRfcGFnZSIsImh5dmFfZGVmYXVsdCIsImh5dmFfY2F0YWxvZ19jYXRlZ29yeV92aWV3IiwiaHl2YV9jYXRhbG9nX2NhdGVnb3J5X3ZpZXdfdHlwZV9sYXllcmVkIiwiaHl2YV9jYXRhbG9nX2NhdGVnb3J5X3ZpZXdfZGlzcGxheW1vZGVfcHJvZHVjdHNfYW5kX3BhZ2UiLCJzdG9yZV9lbiIsImNhdGFsb2dfY2F0ZWdvcnlfdmlld19zdG9yZV9lbiJd')" 4301 > 4302 <img src="https://www.steiff.com/static/version1790768634/frontend/Steiff/default/en_GB/languageIcons/LU.svg" alt="" class="w-4 h-4 group-[.mobile-navigation-appendix]:w-6 group-[.mobile-navigation-appendix]:h-6 inline-block mr-2"> 4303 Luxembourg </a> 4304 <a href="https://www.steiff.com/en/page_cache/block/esi/blocks/%5B%22topmenu_generic%22%5D/handles/WyJkZWZhdWx0IiwiY2F0YWxvZ19jYXRlZ29yeV92aWV3IiwiY2F0YWxvZ19jYXRlZ29yeV92aWV3X3R5cGVfbGF5ZXJlZCIsImNhdGFsb2dfY2F0ZWdvcnlfdmlld19kaXNwbGF5bW9kZV9wcm9kdWN0c19hbmRfcGFnZSIsImh5dmFfZGVmYXVsdCIsImh5dmFfY2F0YWxvZ19jYXRlZ29yeV92aWV3IiwiaHl2YV9jYXRhbG9nX2NhdGVnb3J5X3ZpZXdfdHlwZV9sYXllcmVkIiwiaHl2YV9jYXRhbG9nX2NhdGVnb3J5X3ZpZXdfZGlzcGxheW1vZGVfcHJvZHVjdHNfYW5kX3BhZ2UiLCJzdG9yZV9lbiIsImNhdGFsb2dfY2F0ZWdvcnlfdmlld19zdG9yZV9lbiJd" 4305 class="text-black text-nowrap block px-4 py-1 lg:px-5 hover:bg-gray-light text-sm" 4306 @click.prevent="setCurrentCountry('10', 'https\u003A\u002F\u002Fwww.steiff.com\u002Fen\u002Fpage_cache\u002Fblock\u002Fesi\u002Fblocks\u002F\u00255B\u002522topmenu_generic\u002522\u00255D\u002Fhandles\u002FWyJkZWZhdWx0IiwiY2F0YWxvZ19jYXRlZ29yeV92aWV3IiwiY2F0YWxvZ19jYXRlZ29yeV92aWV3X3R5cGVfbGF5ZXJlZCIsImNhdGFsb2dfY2F0ZWdvcnlfdmlld19kaXNwbGF5bW9kZV9wcm9kdWN0c19hbmRfcGFnZSIsImh5dmFfZGVmYXVsdCIsImh5dmFfY2F0YWxvZ19jYXRlZ29yeV92aWV3IiwiaHl2YV9jYXRhbG9nX2NhdGVnb3J5X3ZpZXdfdHlwZV9sYXllcmVkIiwiaHl2YV9jYXRhbG9nX2NhdGVnb3J5X3ZpZXdfZGlzcGxheW1vZGVfcHJvZHVjdHNfYW5kX3BhZ2UiLCJzdG9yZV9lbiIsImNhdGFsb2dfY2F0ZWdvcnlfdmlld19zdG9yZV9lbiJd')" 4307 > 4308 <img src="https://www.steiff.com/static/version1790768634/frontend/Steiff/default/en_GB/languageIcons/ES.svg" alt="" class="w-4 h-4 group-[.mobile-navigation-appendix]:w-6 group-[.mobile-navigation-appendix]:h-6 inline-block mr-2"> 4309 Spain </a> 4310 <a href="https://www.steiff.com/en/page_cache/block/esi/blocks/%5B%22topmenu_generic%22%5D/handles/WyJkZWZhdWx0IiwiY2F0YWxvZ19jYXRlZ29yeV92aWV3IiwiY2F0YWxvZ19jYXRlZ29yeV92aWV3X3R5cGVfbGF5ZXJlZCIsImNhdGFsb2dfY2F0ZWdvcnlfdmlld19kaXNwbGF5bW9kZV9wcm9kdWN0c19hbmRfcGFnZSIsImh5dmFfZGVmYXVsdCIsImh5dmFfY2F0YWxvZ19jYXRlZ29yeV92aWV3IiwiaHl2YV9jYXRhbG9nX2NhdGVnb3J5X3ZpZXdfdHlwZV9sYXllcmVkIiwiaHl2YV9jYXRhbG9nX2NhdGVnb3J5X3ZpZXdfZGlzcGxheW1vZGVfcHJvZHVjdHNfYW5kX3BhZ2UiLCJzdG9yZV9lbiIsImNhdGFsb2dfY2F0ZWdvcnlfdmlld19zdG9yZV9lbiJd" 4311 class="text-black text-nowrap block px-4 py-1 lg:px-5 hover:bg-gray-light text-sm" 4312 @click.prevent="setCurrentCountry('11', 'https\u003A\u002F\u002Fwww.steiff.com\u002Fen\u002Fpage_cache\u002Fblock\u002Fesi\u002Fblocks\u002F\u00255B\u002522topmenu_generic\u002522\u00255D\u002Fhandles\u002FWyJkZWZhdWx0IiwiY2F0YWxvZ19jYXRlZ29yeV92aWV3IiwiY2F0YWxvZ19jYXRlZ29yeV92aWV3X3R5cGVfbGF5ZXJlZCIsImNhdGFsb2dfY2F0ZWdvcnlfdmlld19kaXNwbGF5bW9kZV9wcm9kdWN0c19hbmRfcGFnZSIsImh5dmFfZGVmYXVsdCIsImh5dmFfY2F0YWxvZ19jYXRlZ29yeV92aWV3IiwiaHl2YV9jYXRhbG9nX2NhdGVnb3J5X3ZpZXdfdHlwZV9sYXllcmVkIiwiaHl2YV9jYXRhbG9nX2NhdGVnb3J5X3ZpZXdfZGlzcGxheW1vZGVfcHJvZHVjdHNfYW5kX3BhZ2UiLCJzdG9yZV9lbiIsImNhdGFsb2dfY2F0ZWdvcnlfdmlld19zdG9yZV9lbiJd')" 4313 > 4314 <img src="https://www.steiff.com/static/version1790768634/frontend/Steiff/default/en_GB/languageIcons/PT.svg" alt="" class="w-4 h-4 group-[.mobile-navigation-appendix]:w-6 group-[.mobile-navigation-appendix]:h-6 inline-block mr-2"> 4315 Portugal </a> 4316 <a href="https://www.steiff.com/en/page_cache/block/esi/blocks/%5B%22topmenu_generic%22%5D/handles/WyJkZWZhdWx0IiwiY2F0YWxvZ19jYXRlZ29yeV92aWV3IiwiY2F0YWxvZ19jYXRlZ29yeV92aWV3X3R5cGVfbGF5ZXJlZCIsImNhdGFsb2dfY2F0ZWdvcnlfdmlld19kaXNwbGF5bW9kZV9wcm9kdWN0c19hbmRfcGFnZSIsImh5dmFfZGVmYXVsdCIsImh5dmFfY2F0YWxvZ19jYXRlZ29yeV92aWV3IiwiaHl2YV9jYXRhbG9nX2NhdGVnb3J5X3ZpZXdfdHlwZV9sYXllcmVkIiwiaHl2YV9jYXRhbG9nX2NhdGVnb3J5X3ZpZXdfZGlzcGxheW1vZGVfcHJvZHVjdHNfYW5kX3BhZ2UiLCJzdG9yZV9lbiIsImNhdGFsb2dfY2F0ZWdvcnlfdmlld19zdG9yZV9lbiJd" 4317 class="text-black text-nowrap block px-4 py-1 lg:px-5 hover:bg-gray-light text-sm" 4318 @click.prevent="setCurrentCountry('12', 'https\u003A\u002F\u002Fwww.steiff.com\u002Fen\u002Fpage_cache\u002Fblock\u002Fesi\u002Fblocks\u002F\u00255B\u002522topmenu_generic\u002522\u00255D\u002Fhandles\u002FWyJkZWZhdWx0IiwiY2F0YWxvZ19jYXRlZ29yeV92aWV3IiwiY2F0YWxvZ19jYXRlZ29yeV92aWV3X3R5cGVfbGF5ZXJlZCIsImNhdGFsb2dfY2F0ZWdvcnlfdmlld19kaXNwbGF5bW9kZV9wcm9kdWN0c19hbmRfcGFnZSIsImh5dmFfZGVm
4318YXVsdCIsImh5dmFfY2F0YWxvZ19jYXRlZ29yeV92aWV3IiwiaHl2YV9jYXRhbG9nX2NhdGVnb3J5X3ZpZXdfdHlwZV9sYXllcmVkIiwiaHl2YV9jYXRhbG9nX2NhdGVnb3J5X3ZpZXdfZGlzcGxheW1vZGVfcHJvZHVjdHNfYW5kX3BhZ2UiLCJzdG9yZV9lbiIsImNhdGFsb2dfY2F0ZWdvcnlfdmlld19zdG9yZV9lbiJd')" 4319 > 4320 <img src="https://www.steiff.com/static/version1790768634/frontend/Steiff/default/en_GB/languageIcons/EE.svg" alt="" class="w-4 h-4 group-[.mobile-navigation-appendix]:w-6 group-[.mobile-navigation-appendix]:h-6 inline-block mr-2"> 4321 Estonia </a> 4322 <a href="https://www.steiff.com/en/page_cache/block/esi/blocks/%5B%22topmenu_generic%22%5D/handles/WyJkZWZhdWx0IiwiY2F0YWxvZ19jYXRlZ29yeV92aWV3IiwiY2F0YWxvZ19jYXRlZ29yeV92aWV3X3R5cGVfbGF5ZXJlZCIsImNhdGFsb2dfY2F0ZWdvcnlfdmlld19kaXNwbGF5bW9kZV9wcm9kdWN0c19hbmRfcGFnZSIsImh5dmFfZGVmYXVsdCIsImh5dmFfY2F0YWxvZ19jYXRlZ29yeV92aWV3IiwiaHl2YV9jYXRhbG9nX2NhdGVnb3J5X3ZpZXdfdHlwZV9sYXllcmVkIiwiaHl2YV9jYXRhbG9nX2NhdGVnb3J5X3ZpZXdfZGlzcGxheW1vZGVfcHJvZHVjdHNfYW5kX3BhZ2UiLCJzdG9yZV9lbiIsImNhdGFsb2dfY2F0ZWdvcnlfdmlld19zdG9yZV9lbiJd" 4323 class="text-black text-nowrap block px-4 py-1 lg:px-5 hover:bg-gray-light text-sm" 4324 @click.prevent="setCurrentCountry('13', 'https\u003A\u002F\u002Fwww.steiff.com\u002Fen\u002Fpage_cache\u002Fblock\u002Fesi\u002Fblocks\u002F\u00255B\u002522topmenu_generic\u002522\u00255D\u002Fhandles\u002FWyJkZWZhdWx0IiwiY2F0YWxvZ19jYXRlZ29yeV92aWV3IiwiY2F0YWxvZ19jYXRlZ29yeV92aWV3X3R5cGVfbGF5ZXJlZCIsImNhdGFsb2dfY2F0ZWdvcnlfdmlld19kaXNwbGF5bW9kZV9wcm9kdWN0c19hbmRfcGFnZSIsImh5dmFfZGVmYXVsdCIsImh5dmFfY2F0YWxvZ19jYXRlZ29yeV92aWV3IiwiaHl2YV9jYXRhbG9nX2NhdGVnb3J5X3ZpZXdfdHlwZV9sYXllcmVkIiwiaHl2YV9jYXRhbG9nX2NhdGVnb3J5X3ZpZXdfZGlzcGxheW1vZGVfcHJvZHVjdHNfYW5kX3BhZ2UiLCJzdG9yZV9lbiIsImNhdGFsb2dfY2F0ZWdvcnlfdmlld19zdG9yZV9lbiJd')" 4325 > 4326 <img src="https://www.steiff.com/static/version1790768634/frontend/Steiff/default/en_GB/languageIcons/FI.svg" alt="" class="w-4 h-4 group-[.mobile-navigation-appendix]:w-6 group-[.mobile-navigation-appendix]:h-6 inline-block mr-2"> 4327 Finland </a> 4328 <a href="https://www.steiff.com/en/page_cache/block/esi/blocks/%5B%22topmenu_generic%22%5D/handles/WyJkZWZhdWx0IiwiY2F0YWxvZ19jYXRlZ29yeV92aWV3IiwiY2F0YWxvZ19jYXRlZ29yeV92aWV3X3R5cGVfbGF5ZXJlZCIsImNhdGFsb2dfY2F0ZWdvcnlfdmlld19kaXNwbGF5bW9kZV9wcm9kdWN0c19hbmRfcGFnZSIsImh5dmFfZGVmYXVsdCIsImh5dmFfY2F0YWxvZ19jYXRlZ29yeV92aWV3IiwiaHl2YV9jYXRhbG9nX2NhdGVnb3J5X3ZpZXdfdHlwZV9sYXllcmVkIiwiaHl2YV9jYXRhbG9nX2NhdGVnb3J5X3ZpZXdfZGlzcGxheW1vZGVfcHJvZHVjdHNfYW5kX3BhZ2UiLCJzdG9yZV9lbiIsImNhdGFsb2dfY2F0ZWdvcnlfdmlld19zdG9yZV9lbiJd" 4329 class="text-black text-nowrap block px-4 py-1 lg:px-5 hover:bg-gray-light text-sm" 4330 @click.prevent="setCurrentCountry('14', 'https\u003A\u002F\u002Fwww.steiff.com\u002Fen\u002Fpage_cache\u002Fblock\u002Fesi\u002Fblocks\u002F\u00255B\u002522topmenu_generic\u002522\u00255D\u002Fhandles\u002FWyJkZWZhdWx0IiwiY2F0YWxvZ19jYXRlZ29yeV92aWV3IiwiY2F0YWxvZ19jYXRlZ29yeV92aWV3X3R5cGVfbGF5ZXJlZCIsImNhdGFsb2dfY2F0ZWdvcnlfdmlld19kaXNwbGF5bW9kZV9wcm9kdWN0c19hbmRfcGFnZSIsImh5dmFfZGVmYXVsdCIsImh5dmFfY2F0YWxvZ19jYXRlZ29yeV92aWV3IiwiaHl2YV9jYXRhbG9nX2NhdGVnb3J5X3ZpZXdfdHlwZV9sYXllcmVkIiwiaHl2YV9jYXRhbG9nX2NhdGVnb3J5X3ZpZXdfZGlzcGxheW1vZGVfcHJvZHVjdHNfYW5kX3BhZ2UiLCJzdG9yZV9lbiIsImNhdGFsb2dfY2F0ZWdvcnlfdmlld19zdG9yZV9lbiJd')" 4331 > 4332 <img src="https://www.steiff.com/static/version1790768634/frontend/Steiff/default/en_GB/languageIcons/GR.svg" alt="" class="w-4 h-4 group-[.mobile-navigation-appendix]:w-6 group-[.mobile-navigation-appendix]:h-6 inline-block mr-2"> 4333 Greece </a> 4334 <a href="https://www.steiff.com/en/page_cache/block/esi/blocks/%5B%22topmenu_generic%22%5D/handles/WyJkZWZhdWx0IiwiY2F0YWxvZ19jYXRlZ29yeV92aWV3IiwiY2F0YWxvZ19jYXRlZ29yeV92aWV3X3R5cGVfbGF5ZXJlZCIsImNhdGFsb2dfY2F0ZWdvcnlfdmlld19kaXNwbGF5bW9kZV9wcm9kdWN0c19hbmRfcGFnZSIsImh5dmFfZGVmYXVsdCIsImh5dmFfY2F0YWxvZ19jYXRlZ29yeV92aWV3IiwiaHl2YV9jYXRhbG9nX2NhdGVnb3J5X3ZpZXdfdHlwZV9sYXllcmVkIiwiaHl2YV9jYXRhbG9nX2NhdGVnb3J5X3ZpZXdfZGlzcGxheW1vZGVfcHJvZHVjdHNfYW5kX3BhZ2UiLCJzdG9yZV9lbiIsImNhdGFsb2dfY2F0ZWdvcnlfdmlld19zdG9yZV9lbiJd" 4335 class="text-black text-nowrap block px-4 py-1 lg:px-5 hover:bg-gray-light text-sm" 4336 @click.prevent="setCurrentCountry('15', 'https\u003A\u002F\u002Fwww.steiff.com\u002Fen\u002Fpage_cache\u002Fblock\u002Fesi\u002Fblocks\u002F\u00255B\u002522topmenu_generic\u002522\u00255D\u002Fhandles\u002FWyJkZWZhdWx0IiwiY2F0YWxvZ19jYXRlZ29yeV92aWV3IiwiY2F0YWxvZ19jYXRlZ29yeV92aWV3X3R5cGVfbGF5ZXJlZCIsImNhdGFsb2dfY2F0ZWdvcnlfdmlld19kaXNwbGF5bW9kZV9wcm9kdWN0c19hbmRfcGFnZSIsImh5dmFfZGVmYXVsdCIsImh5dmFfY2F0YWxvZ19jYXRlZ29yeV92aWV3IiwiaHl2YV9jYXRhbG9nX2NhdGVnb3J5X3ZpZXdfdHlwZV9sYXllcmVkIiwiaHl2YV9jYXRhbG9nX2NhdGVnb3J5X3ZpZXdfZGlzcGxheW1vZGVfcHJvZHVjdHNfYW5kX3BhZ2UiLCJzdG9yZV9lbiIsImNhdGFsb2dfY2F0ZWdvcnlfdmlld19zdG9yZV9lbiJd')" 4337 > 4338 <img src="https://www.steiff.com/static/version1790768634/frontend/Steiff/default/en_GB/languageIcons/IE.svg" alt="" class="w-4 h-4 group-[.mobile-navigation-appendix]:w-6 group-[.mobile-navigation-appendix]:h-6 inline-block mr-2"> 4339 Ireland </a> 4340 <a href="https://www.steiff.com/en/page_cache/block/esi/blocks/%5B%22topmenu_generic%22%5D/handles/WyJkZWZhdWx0IiwiY2F0YWxvZ19jYXRlZ29yeV92aWV3IiwiY2F0YWxvZ19jYXRlZ29yeV92aWV3X3R5cGVfbGF5ZXJlZCIsImNhdGFsb2dfY2F0ZWdvcnlfdmlld19kaXNwbGF5bW9kZV9wcm9kdWN0c19hbmRfcGFnZSIsImh5dmFfZGVmYXVsdCIsImh5dmFfY2F0YWxvZ19jYXRlZ29yeV92aWV3IiwiaHl2YV9jYXRhbG9nX2NhdGVnb3J5X3ZpZXdfdHlwZV9sYXllcmVkIiwiaHl2YV9jYXRhbG9nX2NhdGVnb3J5X3ZpZXdfZGlzcGxheW1vZGVfcHJvZHVjdHNfYW5kX3BhZ2UiLCJzdG9yZV9lbiIsImNhdGFsb2dfY2F0ZWdvcnlfdmlld19zdG9yZV9lbiJd" 4341 class="text-black text-nowrap block px-4 py-1 lg:px-5 hover:bg-gray-light text-sm" 4342 @click.prevent="setCurrentCountry('16', 'https\u003A\u002F\u002Fwww.steiff.com\u002Fen\u002Fpage_cache\u002Fblock\u002Fesi\u002Fblocks\u002F\u00255B\u002522topmenu_generic\u002522\u00255D\u002Fhandles\u002FWyJkZWZhdWx0IiwiY2F0YWxvZ19jYXRlZ29yeV92aWV3IiwiY2F0YWxvZ19jYXRlZ29yeV92aWV3X3R5cGVfbGF5ZXJlZCIsImNhdGFsb2dfY2F0ZWdvcnlfdmlld19kaXNwbGF5bW9kZV9wcm9kdWN0c19hbmRfcGFnZSIsImh5dmFfZGVmYXVsdCIsImh5dmFfY2F0YWxvZ19jYXRlZ29yeV92aWV3IiwiaHl2YV9jYXRhbG9nX2NhdGVnb3J5X3ZpZXdfdHlwZV9sYXllcmVkIiwiaHl2YV9jYXRhbG9nX2NhdGVnb3J5X3ZpZXdfZGlzcGxheW1vZGVfcHJvZHVjdHNfYW5kX3BhZ2UiLCJzdG9yZV9lbiIsImNhdGFsb2dfY2F0ZWdvcnlfdmlld19zdG9yZV9lbiJd')" 4343 > 4344 <img src="https://www.steiff.com/static/version1790768634/frontend/Steiff/default/en_GB/languageIcons/IT.svg" alt="" class="w-4 h-4 group-[.mobile-navigation-appendix]:w-6 group-[.mobile-navigation-appendix]:h-6 inline-block mr-2"> 4345 Italy </a> 4346 <a href="https://www.steiff.com/en/page_cache/block/esi/blocks/%5B%22topmenu_generic%22%5D/handles/WyJkZWZhdWx0IiwiY2F0YWxvZ19jYXRlZ29yeV92aWV3IiwiY2F0YWxvZ19jYXRlZ29yeV92aWV3X3R5cGVfbGF5ZXJlZCIsImNhdGFsb2dfY2F0ZWdvcnlfdmlld19kaXNwbGF5bW9kZV9wcm9kdWN0c19hbmRfcGFnZSIsImh5dmFfZGVmYXVsdCIsImh5dmFfY2F0YWxvZ19jYXRlZ29yeV92aWV3IiwiaHl2YV9jYXRhbG9nX2NhdGVnb3J5X3ZpZXdfdHlwZV9sYXllcmVkIiwiaHl2YV9jYXRhbG9nX2NhdGVnb3J5X3ZpZXdfZGlzcGxheW1vZGVfcHJvZHVjdHNfYW5kX3BhZ2UiLCJzdG9yZV9lbiIsImNhdGFsb2dfY2F0ZWdvcnlfdmlld19zdG9yZV9lbiJd" 4347 class="text-black text-nowrap block px-4 py-1 lg:px-5 hover:bg-gray-light text-sm" 4348 @click.prevent="setCurrentCountry('17', 'https\u003A\u002F\u002Fwww.steiff.com\u002Fen\u002Fpage_cache\u002Fblock\u002Fesi\u002Fblocks\u002F\u00255B\u002522topmenu_generic\u002522\u00255D\u002Fhandles\u002FWyJkZWZhdWx0IiwiY2F0YWxvZ19jYXRlZ29yeV92aWV3IiwiY2F0YWxvZ19jYXRlZ29yeV92aWV3X3R5cGVfbGF5ZXJlZCIsImNhdGFsb2dfY2F0ZWdvcnlfdmlld19kaXNwbGF5bW9kZV9wcm9kdWN0c19hbmRfcGFnZSIsImh5dmFfZGVmYXVsdCIsImh5dmFfY2F0YWxvZ19jYXRlZ29yeV92aWV3IiwiaHl2YV9jYXRhbG9nX2NhdGVnb3J5X3ZpZXdfdHlwZV9sYXllcmVkIiwiaHl2YV9jYXRhbG9nX2NhdGVnb3J5X3ZpZXdfZGlzcGxheW1vZGVfcHJvZHVjdHNfYW5kX3BhZ2UiLCJzdG9yZV9lbiIsImNhdGFsb2dfY2F0ZWdvcnlfdmlld19zdG9yZV9lbiJd')" 4349 > 4350 <img src="https://www.steiff.com/static/version1790768634/frontend/Steiff/default/en_GB/languageIcons/LV.svg" alt="" class="w-4 h-4 group-[.mobile-navigation-appendix]:w-6 group-[.mobile-navigation-appendix]:h-6 inline-block mr-2"> 4351 Latvia </a> 4352 <a href="https://www.steiff.com/en/page_cache/block/esi/blocks/%5B%22topmenu_generic%22%5D/handles/WyJkZWZhdWx0IiwiY2F0YWxvZ19jYXRlZ29yeV92aWV3IiwiY2F0YWxvZ19jYXRlZ29yeV92aWV3X3R5cGVfbGF5ZXJlZCIsImNhdGFsb2dfY2F0ZWdvcnlfdmlld19kaXNwbGF5bW9kZV9wcm9kdWN0c19hbmRfcGFnZSIsImh5dmFfZGVmYXVsdCIsImh5dmFfY2F0YWxvZ19jYXRlZ29yeV92aWV3IiwiaHl2YV9jYXRhbG9nX2NhdGVnb3J5X3ZpZXdfdHlwZV9sYXllcmVkIiwiaHl2YV9jYXRhbG9nX2NhdGVnb3J5X3ZpZXdfZGlzcGxheW1vZGVfcHJvZHVjdHNfYW5kX3BhZ2UiLCJzdG9yZV9lbiIsImNhdGFsb2dfY2F0ZWdvcnlfdmlld19zdG9yZV9lbiJd" 4353 class="text-black text-nowrap block px-4 py-1 lg:px-5 hover:bg-gray-light text-sm" 4354 @click.prevent="setCurrentCountry('18', 'https\u003A\u002F\u002Fwww.steiff.com\u002Fen\u002Fpage_cache\u002Fblock\u002Fesi\u002Fblocks\u002F\u00255B\u002522topmenu_generic\u002522\u00255D\u002Fhandles\u002FWyJkZWZhdWx0IiwiY2F0YWxvZ19jYXRlZ29yeV92aWV3IiwiY2F0YWxvZ19jYXRlZ29yeV92aWV3X3R5cGVfbGF5ZXJlZCIsImNhdGFsb2dfY2F0ZWdvcnlfdmlld19kaXNwbGF5bW9kZV9wcm9kdWN0c19hbmRfcGFnZSIsImh5dmFfZGVmYXVsdCIsImh5dmFfY2F0YWxvZ19jYXRlZ29yeV92aWV3IiwiaHl2YV9jYXRhbG9nX2NhdGVnb3J5X3ZpZXdfdHlwZV9sYXllcmVkIiwiaHl2YV9jYXRhbG9nX2NhdGVnb3J5X3ZpZXdfZGlzcGxheW1vZGVfcHJvZHVjdHNfYW5kX3BhZ2UiLCJzdG9yZV9lbiIsImNhdGFsb2dfY2F0ZWdvcnlfdmlld19zdG9yZV9lbiJd')" 4355 > 4356 <img src="https://www.steiff.com/static/version1790768634/frontend/Steiff/default/en_GB/languageIcons/LT.svg" alt="" class="w-4 h-4 group-[.mobile-navigation-appendix]:w-6 group-[.mobile-navigation-appendix]:h-6 inline-block mr-2"> 4357 Lithuania </a> 4358 <a href="https://www.steiff.com/en/page_cache/block/esi/blocks/%5B%22topmenu_generic%22%5D/handles/WyJkZWZhdWx0IiwiY2F0YWxvZ19jYXRlZ29yeV92aWV3IiwiY2F0YWxvZ19jYXRlZ29yeV92aWV3X3R5cGVfbGF5ZXJlZCIsImNhdGFsb2dfY2F0ZWdvcnlfdmlld19kaXNwbGF5bW9kZV9wcm9kdWN0c19hbmRfcGFnZSIsImh5dmFfZGVmYXVsdCIsImh5dmFfY2F0YWxvZ19jYXRlZ29yeV92aWV3IiwiaHl2YV9jYXRhbG9nX2NhdGVnb3J5X3ZpZXdfdHlwZV9sYXllcmVkIiwiaHl2YV9jYXRhbG9nX2NhdGVnb3J5X3ZpZXdfZGlzcGxheW1vZGVfcHJvZHVjdHNfYW5kX3BhZ2UiLCJzdG9yZV9lbiIsImNhdGFsb2dfY2F0ZWdvcnlfdmlld19zdG9yZV9lbiJd" 4359 class="text-black text-nowrap block px-4 py-1 lg:px-5 hover:bg-gray-light text-sm" 4360 @click.prevent="setCurrentCountry('19', 'https\u003A\u002F\u002Fwww.steiff.com\u002Fen\u002Fpage_cache\u002Fblock\u002Fesi\u002Fblocks\u002F\u00255B\u002522topmenu_generic\u002522\u00255D\u002Fhandles\u002FWyJkZWZhdWx0IiwiY2F0YWxvZ19jYXRlZ29yeV92aWV3IiwiY2F0YWxvZ19jYXRlZ29yeV92aWV3X3R5cGVfbGF5ZXJlZCIsImNhdGFsb2dfY2F0ZWdvcnlfdmlld19kaXNwbGF5bW9kZV9wcm9kdWN0c19hbmRfcGFnZSIsImh5dmFfZGVmYXVsdCIsImh5dmFfY2F0YWxvZ19jYXRlZ29yeV92aWV3IiwiaHl2YV9jYXRhbG9nX2NhdGVnb3J5X3ZpZXdfdHlwZV9sYXllcmVkIiwiaHl2YV9jYXRhbG9nX2NhdGVnb3J5X3ZpZXdfZGlzcGxheW1vZGVfcHJvZHVjdHNfYW5kX3BhZ2UiLCJzdG9yZV9lbiIsImNhdGFsb2dfY2F0ZWdvcnlfdmlld19zdG9yZV9lbiJd')" 4361 > 4362 <img src="https://www.steiff.com/static/version1790768634/frontend/Steiff/default/en_GB/languageIcons/SK.svg" alt="" class="w-4 h-4 group-[.mobile-navigation-appendix]:w-6 group-[.mobile-navigation-appendix]:h-6 inline-block mr-2"> 4363 Slovakia </a> 4364 <a href="https://www.steiff.com/en/page_cache/block/esi/blocks/%5B%22topmenu_generic%22%5D/handles/WyJkZWZhdWx0IiwiY2F0YWxvZ19jYXRlZ29yeV92aWV3IiwiY2F0YWxvZ19jYXRlZ29yeV92aWV3X3R5cGVfbGF5ZXJlZCIsImNhdGFsb2dfY2F0ZWdvcnlfdmlld19kaXNwbGF5bW9kZV9wcm9kdWN0c19hbmRfcGFnZSIsImh5dmFfZGVmYXVsdCIsImh5dmFfY2F0YWxvZ19jYXRlZ29yeV92aWV3IiwiaHl2YV9jYXRhbG9nX2NhdGVnb3J5X3ZpZXdfdHlwZV9sYXllcmVkIiwiaHl2YV9jYXRhbG9nX2NhdGVnb3J5X3ZpZXdfZGlzcGxheW1vZGVfcHJvZHVjdHNfYW5kX3BhZ2UiLCJzdG9yZV9lbiIsImNhdGFsb2dfY2F0ZWdvcnlfdmlld19zdG9yZV9lbiJd" 4365 class="text-black text-nowrap block px-4 py-1 lg:px-5 hover:bg-gray-light text-sm" 4366 @click.prevent="setCurrentCountry('20', 'https\u003A\u002F\u002Fwww.steiff.com\u002Fen\u002Fpage_cache\u002Fblock\u002Fesi\u002Fblocks\u002F\u00255B\u002522topmenu_generic\u002522\u00255D\u002Fhandles\u002FWyJkZWZhdWx0IiwiY2F0YWxvZ19jYXRlZ29yeV92aWV3IiwiY2F0YWxvZ19jYXRlZ29yeV92aWV3X3R5cGVfbGF5ZXJlZCIsImNhdGFsb2dfY2F0ZWdvcnlfdmlld19kaXNwbGF5bW9kZV9wcm9kdWN0c19hbmRfcGFnZSIsImh5dmFfZGVmYXVsdCIsImh5dmFfY2F0YWxvZ19jYXRlZ29yeV92aWV3IiwiaHl2YV9jYXRhbG9nX2NhdGVnb3J5X3ZpZXdfdHlwZV9sYXllcmVkIiwiaHl2YV9jYXRhbG9nX2NhdGVnb3J5X3ZpZXdfZGlzcGxheW1vZGVfcHJvZHVjdHNfYW5kX3BhZ2UiLCJzdG9yZV9lbiIsImNhdGFsb2dfY2F0ZWdvcnlfdmlld19zdG9yZV9lbiJd')" 4367 > 4368 <img src="https://www.steiff.com/static/version1790768634/frontend/Steiff/default/en_GB/languageIcons/SI.svg" alt="" class="w-4 h-4 group-[.mobile-navigation-appendix]:w-6 group-[.mobile-navigation-appendix]:h-6 inline-block mr-2"> 4369 Slovenia </a> 4370 <a href="https://www.steiff.com/de-ch/page_cache/block/esi/blocks/%5B%22topmenu_generic%22%5D/handles/WyJkZWZhdWx0IiwiY2F0YWxvZ19jYXRlZ29yeV92aWV3IiwiY2F0YWxvZ19jYXRlZ29yeV92aWV3X3R5cGVfbGF5ZXJlZCIsImNhdGFsb2dfY2F0ZWdvcnlfdmlld19kaXNwbGF5bW9kZV9wcm9kdWN0c19hbmRfcGFnZSIsImh5dmFfZGVmYXVsdCIsImh5dmFfY2F0YWxvZ19jYXRlZ29yeV92aWV3IiwiaHl2YV9jYXRhbG9nX2NhdGVnb3J5X3ZpZXdfdHlwZV9sYXllcmVkIiwiaHl2YV9jYXRhbG9nX2NhdGVnb3J5X3ZpZXdfZGlzcGxheW1vZGVfcHJvZHVjdHNfYW5kX3BhZ2UiLCJzdG9yZV9lbiIsImNhdGFsb2dfY2F0ZWdvcnlfdmlld19zdG9yZV9lbiJd" 4371 class="text-black text-nowrap block px-4 py-1 lg:px-5 hover:bg-gray-light text-sm" 4372 @click.prevent="setCurrentCountry('22', 'https\u003A\u002F\u002Fwww.steiff.com\u002Fde\u002Dch\u002Fpage_cache\u002Fblock\u002Fesi\u002Fblocks\u002F\u00255B\u002522topmenu_generic\u002522\u00255D\u002Fhandles\u002FWyJkZWZhdWx0IiwiY2F0YWxvZ19jYXRlZ29yeV92aWV3IiwiY2F0YWxvZ19jYXRlZ29yeV92aWV3X3R5cGVfbGF5ZXJlZCIsImNhdGFsb2dfY2F0ZWdvcnlfdmlld19kaXNwbGF5bW9kZV9wcm9kdWN0c19hbmRfcGFnZSIsImh5dmFfZGVmYXVsdCIsImh5dmFfY2F0YWxvZ19jYXRlZ29yeV92aWV3IiwiaHl2YV9jYXRhbG9nX2NhdGVnb3J5X3ZpZXdfdHlwZV9sYXllcmVkIiwiaHl2YV9jYXRhbG9nX2NhdGVnb3J5X3ZpZXdfZGlzcGxheW1vZGVfcHJvZHVjdHNfYW5kX3BhZ2UiLCJzdG9yZV9lbiIsImNhdGFsb2dfY2F0ZWdvcnlfdmlld19zdG9yZV9lbiJd')" 4373 > 4374 <img src="https://www.steiff.com/static/version1790768634/frontend/Steiff/default/en_GB/languageIcons/CH.svg" alt="" class="w-4 h-4 group-[.mobile-navigation-appendix]:w-6 group-[.mobile-navigation-appendix]:h-6 inline-block mr-2"> 4375 Switzerland (German) </a> 4376 <a href="https://www.steiff.com/fr-ch/page_cache/block/esi/blocks/%5B%22topmenu_generic%22%5D/handles/WyJkZWZhdWx0IiwiY2F0YWxvZ19jYXRlZ29yeV92aWV3IiwiY2F0YWxvZ19jYXRlZ29yeV92aWV3X3R5cGVfbGF5ZXJlZCIsImNhdGFsb2dfY2F0ZWdvcnlfdmlld19kaXNwbGF5bW9kZV9wcm9kdWN0c19hbmRfcGFnZSIsImh5dmFfZGVmYXVsdCIsImh5dmFfY2F0YWxvZ19jYXRlZ29yeV92aWV3IiwiaHl2YV9jYXRhbG9nX2NhdGVnb3J5X3ZpZXdfdHlwZV9sYXllcmVkIiwiaHl2YV9jYXRhbG9nX2NhdGVnb3J5X3ZpZXdfZGlzcGxheW1vZGVfcHJvZHVjdHNfYW5kX3BhZ2UiLCJzdG9yZV9lbiIsImNhdGFsb2dfY2F0ZWdvcnlfdmlld19zdG9yZV9lbiJd" 4377 class="text-black text-nowrap block px-4 py-1 lg:px-5 hover:bg-gray-light text-sm" 4378 @click.prevent="setCurr
4378entCountry('23', 'https\u003A\u002F\u002Fwww.steiff.com\u002Ffr\u002Dch\u002Fpage_cache\u002Fblock\u002Fesi\u002Fblocks\u002F\u00255B\u002522topmenu_generic\u002522\u00255D\u002Fhandles\u002FWyJkZWZhdWx0IiwiY2F0YWxvZ19jYXRlZ29yeV92aWV3IiwiY2F0YWxvZ19jYXRlZ29yeV92aWV3X3R5cGVfbGF5ZXJlZCIsImNhdGFsb2dfY2F0ZWdvcnlfdmlld19kaXNwbGF5bW9kZV9wcm9kdWN0c19hbmRfcGFnZSIsImh5dmFfZGVmYXVsdCIsImh5dmFfY2F0YWxvZ19jYXRlZ29yeV92aWV3IiwiaHl2YV9jYXRhbG9nX2NhdGVnb3J5X3ZpZXdfdHlwZV9sYXllcmVkIiwiaHl2YV9jYXRhbG9nX2NhdGVnb3J5X3ZpZXdfZGlzcGxheW1vZGVfcHJvZHVjdHNfYW5kX3BhZ2UiLCJzdG9yZV9lbiIsImNhdGFsb2dfY2F0ZWdvcnlfdmlld19zdG9yZV9lbiJd')" 4379 > 4380 <img src="https://www.steiff.com/static/version1790768634/frontend/Steiff/default/en_GB/languageIcons/CH.svg" alt="" class="w-4 h-4 group-[.mobile-navigation-appendix]:w-6 group-[.mobile-navigation-appendix]:h-6 inline-block mr-2"> 4381 Switzerland (French) </a> 4382 </div> 4383 </nav> 4384 </div> 4385 4386 </li> 4387 </ul> 4388 </nav> 4389 </div> 4390 </div> 4391 4392 4393 4394 <div class="flex items-center gap-3 lg:hidden"> 4395 <button 4396 type="button" 4397 id="menu-mobile-icon" 4398 @click.stop="$dispatch('menu-mobile-open', { isOpen: !menuMobileOpen });" 4399 aria-haspopup="dialog" 4400 :aria-expanded="menuMobileOpen" 4401 aria-label="Open menu" 4402 :aria-label="menuMobileOpen 4403 ? 'Close\u0020menu' 4404 : 'Open\u0020menu'" 4405 > 4406 <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" width="28" height="28" aria-hidden="true" x-show="!menuMobileOpen"> 4407 <path stroke-linecap="round" stroke-linejoin="round" d="M4 6h16M4 12h16M4 18h16"/> 4408</svg> 4409 <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" width="28" height="28" aria-hidden="true" x-show="menuMobileOpen" x-cloak=""> 4410 <path stroke-linecap="round" stroke-linejoin="round" d="M6 18L18 6M6 6l12 12"/> 4411</svg> 4412 </button> 4413 4414 <!--Search Icon Mobile--> 4415 <button 4416 id="menu-search-icon" 4417 @click.prevent="$dispatch('toggle-search', { isOpen: true })" 4418 aria-label="Open search drawer" 4419 aria-haspopup="dialog" 4420 x-ref="searchDrawerButton" 4421 > 4422 <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" class="md:h-6 md:w-6" width="28" height="28" aria-hidden="true"> 4423 <path stroke-linecap="round" stroke-linejoin="round" d="M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z"/> 4424</svg> 4425 </button> 4426 </div> 4427 4428 <!--Search--> 4429 <div 4430 id="search-content" 4431 x-cloak 4432 class="w-1/3 3xl:w-56" 4433 :class="{ '!w-full': focused }" 4434 style="transition: width 1000ms ease-in-out; max-width: 66%;" 4435 x-show="searchOpen || !isMobileMode" 4436 x-transition:enter="transition ease-out duration-300" 4437 x-transition:enter-start="opacity-0" 4438 x-transition:enter-end="opacity-100" 4439 x-transition:leave="transition ease-in duration-200" 4440 x-transition:leave-start="opacity-100" 4441 x-transition:leave-end="opacity-0" 4442 @click.outside="searchOpen = false" 4443 @keydown.escape=" 4444 searchOpen = false; 4445 $refs.searchButton.focus(); 4446 $dispatch('toggle-search', { isOpen: false }) 4447 " 4448 > 4449
4450<script> 4451 function initMiniSearchComponent() { 4452 "use strict"; 4453 4454 return { 4455 show: false, 4456 noResults: false, 4457 focused: false, 4458 searchQuery: '', 4459 formSelector: "#search_mini_form", 4460 url: "https://www.steiff.com/en/search/ajax/suggest/", 4461 searchResultsUrl: "https://www.steiff.com/en/catalogsearch/result/", 4462 destinationSelector: "#search_autocomplete", 4463 templates: {"term":{"title":"Search terms","template":"Hyva_SmileElasticsuite::core\/autocomplete\/term.phtml"},"product":{"title":"Products","template":"Hyva_SmileElasticsuite::catalog\/autocomplete\/product.phtml"},"category":{"title":"Categories","template":"Hyva_SmileElasticsuite::catalog\/autocomplete\/category.phtml"},"product_attribute":{"title":"Attributes","template":"Hyva_SmileElasticsuite::catalog\/autocomplete\/product_attribute.phtml","titleRenderer":"renderEsAutocompleteTitleAttribute"},"cms_page":{"title":"Cms page","template":"Hyva_SmileElasticsuite::cms-search\/autocomplete\/cms.phtml"}}, 4464 priceFormat: {"pattern":"\u20ac%s","precision":2,"requiredPrecision":2,"decimalSymbol":".","groupSymbol":",","groupLength":3,"integerRequired":false}, 4465 minSearchLength: 2, 4466 searchResultsByType: {}, 4467 currentRequest: null, 4468 countUrl: "https://www.steiff.com/en/steiffsearch/ajax/count/", 4469 currentCountRequest: null, 4470 fullResultCount: 0, 4471 fullResultUrl: '', 4472 loginUrl: 'https\u003A\u002F\u002Fwww.steiff.com\u002Fen\u002Fcustomer\u002Faccount\u002Flogin\u002F', 4473 addToWishlist(productId, productDisplayName) { 4474 if (!productId) { 4475 return; 4476 } 4477 if (typeof window.steiffPersistPendingWishlistProduct === 'function') { 4478 window.steiffPersistPendingWishlistProduct(String(productId)); 4479 } 4480 try { 4481 sessionStorage.setItem( 4482 window.STEIFF_WISHLIST_LOGIN_NOTICE_KEY || 'steiff_wishlist_login_notice', 4483 '1' 4484 ); 4485 } catch (_e) {} 4486 window.location.href = this.loginUrl; 4487 }, 4488 4489 find: function(results, type) { 4490 return results[type] || []; 4491 }, 4492 4493 get categories() { 4494 return this.find(this.searchResultsByType, 'category'); 4495 }, 4496 4497 get products() { 4498 return this.find(this.searchResultsByType, 'product'); 4499 }, 4500 4501 /** 4502 * Get search results. 4503 */ 4504 getSearchResults: function () { 4505 this.searchQuery = document.querySelector('#search').value.trim(); 4506 4507 if (this.searchQuery.length < parseInt(this.minSearchLength, 10)) { 4508 this.searchResultsByType = {}; 4509 this.show = false; 4510 this.noResults = false; 4511 this.fullResultCount = 0; 4512 this.fullResultUrl = ''; 4513 return false; 4514 } 4515 4516 let url = this.url + '?' + new URLSearchParams({ 4517 q: this.searchQuery, 4518 _: Date.now() 4519 }).toString(); 4520 4521 if (this.currentRequest !== null) { 4522 this.currentRequest.abort(); 4523 } 4524 this.currentRequest = new AbortController(); 4525 4526 fetch(url, { 4527 method: 'GET', 4528 signal: this.currentRequest.signal, 4529 }).then((response) => { 4530 if (response.ok) { 4531 return response.json(); 4532 } 4533 throw new Error('Network response was not ok'); 4534 }).then((data) => { 4535 if (data && data.length > 0) { 4536 this.searchResultsByType = data.reduce((acc, result) => { 4537 if (!acc[result.type]) acc[result.type] = []; 4538 acc[result.type].push(result); 4539 return acc; 4540 }, {}); 4541 this.show = true; 4542 this.noResults = false;
4543 this.fullResultCount = 0; 4544 } else { 4545 // No inline suggestions: the autocomplete container can miss 4546 // spellcheck-corrected matches the full search would find, so ask 4547 // the real search before declaring "no results". 4548 this.searchResultsByType = {}; 4549 this.show = false; 4550 this.noResults = false; 4551 this.checkFullSearchResults(); 4552 } 4553 }).catch((error) => { 4554 if (error.name !== 'AbortError') { 4555 this.searchResultsByType = {}; 4556 this.show = false; 4557 this.noResults = false; 4558 this.fullResultCount = 0; 4559 } 4560 }); 4561 }, 4562 4563 /** 4564 * When the autocomplete returns no suggestions, ask the full search how many 4565 * results it really has. If there are results, offer the result page instead of 4566 * the misleading "no results" message; only a genuine zero shows the empty state. 4567 */ 4568 checkFullSearchResults: function () { 4569 const query = this.searchQuery; 4570 4571 if (this.currentCountRequest !== null) { 4572 this.currentCountRequest.abort(); 4573 } 4574 this.currentCountRequest = new AbortController(); 4575 4576 const countRequestUrl = this.countUrl + '?' + new URLSearchParams({ 4577 q: query, 4578 _: Date.now() 4579 }).toString(); 4580 4581 fetch(countRequestUrl, { 4582 method: 'GET', 4583 signal: this.currentCountRequest.signal, 4584 }).then((response) => { 4585 if (response.ok) { 4586 return response.json(); 4587 } 4588 throw new Error('Network response was not ok'); 4589 }).then((data) => { 4590 if (this.searchQuery !== query) { 4591 return; 4592 } 4593 this.fullResultCount = data && data.count ? parseInt(data.count, 10) : 0; 4594 this.fullResultUrl = data && data.resultUrl ? data.resultUrl : ''; 4595 this.noResults = this.fullResultCount === 0; 4596 }).catch((error) => { 4597 if (error.name === 'AbortError') { 4598 return; 4599 } 4600 this.fullResultCount = 0; 4601 this.noResults = true; 4602 }); 4603 }, 4604 4605 getFullResultsMessage: function() { 4606 return 'Show\u0020all\u0020\u00251\u0020results\u0020for\u0020\u0022\u00252\u0022' 4607 .replace('%1', this.fullResultCount) 4608 .replace('%2', this.searchQuery); 4609 }, 4610 4611 handleClickAway: function (targetElement) { 4612 if (!targetElement || !this.searchQuery.length) { 4613 return; 4614 } 4615 4616 if (targetElement.closest('#search_autocomplete') || 4617 targetElement.closest('#search_suggestions') || 4618 targetElement.closest('#search') || 4619 targetElement.id === 'search') { 4620 return; 4621 } 4622 4623 this.$dispatch('search-focused', { focused: false }); 4624 this.clearSearch(); 4625 }, 4626 4627 handleFocusOut: function (event) { 4628 const searchContainer = document.querySelector('#elasticsuite-search-container'); 4629 const relatedTarget = event.relatedTarget; 4630 4631 if (relatedTarget && searchContainer && searchContainer.contains(relatedTarget)) { 4632 return; 4633 } 4634 4635 if (relatedTarget && relatedTarget.id === 'search') { 4636 return; 4637 } 4638 4639 this.$dispatch('search-focused', { focused: false }); 4640 this.clearSearch(); 4641 }, 4642 4643 clearSearch: function () { 4644 this.searchQuery = ''; 4645 document.querySelector('#search').value = ''; 4646 this.searchResultsByType = {}; 4647 this.show = false;
4648 this.noResults = false; 4649 this.fullResultCount = 0; 4650 this.fullResultUrl = ''; 4651 }, 4652 4653 cleanup: function () { 4654 if (this.currentRequest !== null) { 4655 this.currentRequest.abort(); 4656 this.currentRequest = null; 4657 } 4658 if (this.currentCountRequest !== null) { 4659 this.currentCountRequest.abort(); 4660 this.currentCountRequest = null; 4661 } 4662 }, 4663 4664 getNoResultsMessage: function() { 4665 return 'Oh\u0020no\u0021\u0020Unfortunately,\u0020the\u0020search\u0020for\u0020\u0022\u00251\u0022\u0020didn\u0027t\u0020yield\u0020any\u0020results.'.replace('%1', this.searchQuery); 4666 }, 4667 4668 }; 4669 } 4670</script>
4670 4671<div id="elasticsuite-search-container" x-show="true"> 4672 <div class="container py-2 mx-auto text-black xl:pl-0 xl:pr-4" 4673 x-data="initMiniSearchComponent()" 4674 @search-wishlist-guest-add="addToWishlist($event.detail.productId, $event.detail.productName)" @click.away="handleClickAway($event.target)" 4675 @focusin="$dispatch('search-focused', { focused: true })" 4676 @focusout="handleFocusOut($event)" 4677 @beforeunload="cleanup()"> 4678 <form class="form minisearch" id="search_mini_form" action="https://www.steiff.com/en/catalogsearch/result/" method="get" role="search"> 4679 <div class="relative"> 4680 <label class="sr-only" for="search"> 4681 Search </label> 4682 <input id="search" 4683 x-on:input.debounce="getSearchResults()" 4684 x-ref="searchInput" 4685 type="search" 4686 class="w-full pl-8 pr-4 pt-0 pb-0 transition appearance-none border-gray-dark border 4687 focus:outline-none min-h-8 " 4688 autocapitalize="off" autocomplete="off" autocorrect="off" 4689 name="q" 4690 value="" 4691 maxlength="128" 4692 @search-open.window.debounce.10=" 4693 $el.focus(); 4694 $el.select(); 4695 " 4696 /> 4697 <span class="absolute left-2 top-0 bottom-0 flex items-center justify-center"> 4698 <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" class="md:h-6 md:w-6" width="23" height="23" aria-hidden="true"> 4699 <path stroke-linecap="round" stroke-linejoin="round" d="M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z"/> 4700</svg> 4701 </span> 4702 </div> 4703 4704 <!-- Message when search term is too short --> 4705 <template x-if="searchQuery.length > 0 && searchQuery.length < minSearchLength"> 4706 <div 4707 class="search-autocomplete relative w-full"> 4708 <div class="search-results absolute bg-white z-50 top-4 shadow-2xl w-full overflow-y-auto p-6"> 4709 <div class="font-bold text-xl text-center"> 4710 <span> The search term should consist of at least 2 characters.</span> 4711 </div> 4712 </div> 4713 </div> 4714 </template> 4715 4716 4717 <div id="search_autocomplete" 4718 class="search-autocomplete relative w-full" 4719 aria-live="polite" 4720 x-show="show && searchQuery.length >= minSearchLength" 4721 x-cloak 4722 x-transition:enter="transition ease-out duration-200" 4723 x-transition:enter-start="opacity-0 transform scale-95" 4724 x-transition:enter-end="opacity-100 transform scale-100" 4725 x-transition:leave="transition ease-in duration-150" 4726 x-transition:leave-start="opacity-100 transform scale-100" 4727 x-transition:leave-end="opacity-0 transform scale-95"> 4728 <div class="search-results absolute bg-white z-50 top-4 shadow-2xl w-full overflow-y-auto p-6"> 4729 4730 <!-- Two-column layout for suggestions --> 4731 <div class="flex flex-col lg:flex-row" > 4732 <!-- Categories Column --> 4733 <template x-if="categories.length > 0"> 4734 <div class="w-full lg:w-1/3 lg:pr-6 mb-6 lg:mb-0"> 4735 <div> 4736 <p class="font-bold text-lg mb-4">Categories</p> 4737 <ul class="space-y-3"> 4738 <template x-for="(category, index) in categories" :key="index"> 4739 <li> 4740 <a :href="category.url" 4741 class="block text-sm no-underline text-gray transition-colors duration-200 hover:underline hover:text-black" 4742 x-text="category.title"> 4743 </a> 4744 </li> 4745 </template> 4746 </ul> 4747 </div> 4748 </div> 4749 </template> 4750 4751 <!-- Products Column --> 4752 <template x-if="products.length > 0"> 4753 <div class="w-full " :class="categories.length > 0 ? 'lg:w-2/3 lg:pl-6' : ''"> 4754 <div> 4755 <div class="flex justify-between items-center"> 4756 <p class="font-bold text-lg mb-4">Products</p> 4757 <a :href="searchResultsUrl + '?' + 'q' + '=' + encodeURIComponent(searchQuery)" class="text-sm underline hover:no-underline mb-4">View All</a> 4758 </div> 4759 <div class="grid grid-cols-1 gap-4 " :class="categories.length > 0 ? 'md:grid-cols-2 2xl:grid-cols-3' : 'md:grid-cols-3'"> 4760 <template x-for="(product, index) in products" :key="product.product_id || index"> 4761 <div class="relative item product product-item transition-shadow card hover:bg-white grow flex flex-col w-full"> 4762 <div class="relative"> 4763 <template x-if="product.is_new || product.is_topseller || product.is_on_sale || product.is_pre_order || product.is_preorder"> 4764 <div class="product-flags absolute top-0 left-0 z-10 flex flex-row gap-2"> 4765 <template x-if="product.is_new"> 4766 <sp
4766an class="flex items-center justify-center px-2 py-1 rounded bg-peachOrange text-black text-xs font-bold uppercase"> 4767 New </span> 4768 </template> 4769 <template x-if="product.is_topseller"> 4770 <span class="flex items-center justify-center px-2 py-1 rounded bg-blueGray text-black text-xs font-bold uppercase"> 4771 Top </span> 4772 </template> 4773 <template x-if="product.is_on_sale"> 4774 <span class="flex items-center justify-center px-2 py-1 rounded bg-coralPink text-black text-xs font-bold uppercase"> 4775 Sale </span> 4776 </template> 4777 <template x-if="product.is_pre_order || product.is_preorder"> 4778 <span class="flex items-center justify-center px-2 py-1 rounded bg-black text-white text-xs font-bold uppercase"> 4779 Pre-Order </span> 4780 </template> 4781 </div> 4782 </template> 4783 <a :href="product.url || product.link || '#'" 4784 :title="product.title || product.name || 'Product'" 4785 class="product photo product-item-photo block mx-auto mb-3 w-full" 4786 tabindex="-1"> 4787 4788 <img class="object-contain w-full" 4789 :src="product.image?.src || product.image?.url || product.image || ''" 4790 :alt="product.title || product.name || 'Product'" 4791 loading="lazy" 4792 x-show="product.image?.src || product.image?.url || product.image" /> 4793 </a> 4794 <div class="flex flex-row gap-2 w-full justify-end absolute bottom-4"> 4795 <button type="button" 4796 x-data="steiffInitWishlistToggle()" 4797 @private-content-loaded.window="setLoginState($event.detail.data)" 4798 @wishlist-product-added.window="handleWishlistProductAdded($event.detail.productId)" 4799 @wishlist-product-removed.window="handleWishlistProductRemoved($event.detail.productId)" 4800 @click.prevent.stop="isGuest() 4801 ? $dispatch('search-wishlist-guest-add', { productId: product.product_id, productName: product.title || product.name || '' }) 4802 : toggleWishlist(product.product_id, product.title || product.name || '')" 4803 :aria-disabled="wishlistPending" 4804 :aria-busy="wishlistPending" 4805 aria-label="Add to Wish List" 4806 :aria-label="(isInWishlist(product.product_id) ? 'Remove\u0020from\u0020Wish\u0020List' : 'Add\u0020to\u0020Wish\u0020List') + ' ' + (product.title || product.name || '')" 4807 class="group rounded-full w-9 h-9 p-2 btn btn-secondary border-0 inline-flex shrink-0 items-center justify-center text-cherryRed hover:text-cherryRed" 4808 :class="{ 'opacity-50 pointer-events-none': wishlistPending }" 4809 data-addto="wishlist">
4810 <span x-cloak 4811 :class="isInWishlist(product.product_id) ? 'flex group-hover:hidden' : 'hidden group-hover:flex'"> 4812 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" width="20" height="20" aria-hidden="true"> 4813 <path fill-rule="evenodd" d="M3.172 5.172a4 4 0 015.656 0L10 6.343l1.172-1.171a4 4 0 115.656 5.656L10 17.657l-6.828-6.829a4 4 0 010-5.656z" clip-rule="evenodd"/> 4814</svg> 4815 </span> 4816 <span x-cloak 4817 :class="isInWishlist(product.product_id) ? 'hidden group-hover:flex' : 'flex group-hover:hidden'"> 4818 <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" width="20" height="20" aria-hidden="true"> 4819 <path stroke-linecap="round" stroke-linejoin="round" d="M4.318 6.318a4.5 4.5 0 000 6.364L12 20.364l7.682-7.682a4.5 4.5 0 00-6.364-6.364L12 7.636l-1.318-1.318a4.5 4.5 0 00-6.364 0z"/> 4820</svg> 4821 </span> 4822 </button> 4823 </div> 4824 </div> 4825 4826 <div class="product-info flex flex-col grow"> 4827 <template x-if="product.is_plush_product"> 4828 <div class="w-fit"> 4829 <p class="text-sm text-gray-medium"> 4830 Size: 4831 <span x-text="product.size_display"></span> 4832 </p> 4833 </div> 4834 </template> 4835 <div class="mt-2 mb-1 items-center justify-left font-semibold text-base text-left"> 4836 <a :href="product.url || product.link || '#'" 4837 class="product-item-link line-clamp-2 text-ellipsis overflow-hidden text-black" 4838 x-text="product.title || product.name || 'Product'"></a> 4839 </div> 4840 4841 <div class="pt-1 text-gray-900" x-show="product.price || product.formatted_price"> 4842 <div x-html="product.formatted_price || product.price || ''"></div> 4843 </div> 4844 4845 <div class="swatch-attribute-options clearfix gap-1 flex flex-row flex-wrap justify-start items-center mt-2" 4846 x-show="Array.isArray(product.available_colors) && product.available_colors.length > 0" 4847 x-cloak> 4848 <template x-for="color in (product.available_colors || [])" :key="color.value"> 4849 <a :href="color.link" rel="nofollow" 4850 :aria-label="'Colour: ' + (color.label || '')" 4851 class="swatch-option-link-layered flex items-center justify-center swatch-option cursor-pointer hover:shadow-lg transition-shadow relative select-none min-w-4 min-h-4 roun
4851ded-full" 4852 @click="window.steiffTrackColorChoice?.($event.currentTarget.getAttribute('aria-label'))" 4853 :class="(color.isVisualSwatch ? 'bg-white h-6 w-6' : 'border-none w-4 h-4') + (!color.isActive ? ' border-none' : '')"> 4854 <div class="w-full h-full rounded-full w-4 h-4 min-w-4 min-h-4" 4855 :class="color.isVisualSwatch && color.swatchType === 1 && ['#fff','#ffffff','white'].includes((color.swatchValue || '').toLowerCase().trim()) ? 'ring-1 ring-inset ring-gray-300' : ''" 4856 :style="color.isVisualSwatch ? (color.swatchType === 2 ? 'background: #fff url(' + (color.swatchImagePath || '') + ') center no-repeat' : 'background-color: ' + (color.swatchValue || '')) : ''"> 4857 <span x-show="color.swatchType === 0" x-html="(color.swatchValue || color.label || '')"></span> 4858 </div> 4859 </a> 4860 </template> 4861 </div> 4862 4863 </div> 4864 </div> 4865 </template> 4866 </div> 4867 </div> 4868 </div> 4869 </template> 4870 </div> 4871 </div> 4872 </div> 4873 4874 <!-- Full-search CTA - no inline suggestions, but the full search has results --> 4875 <div id="search_full_results_cta" 4876 class="search-autocomplete relative w-full" 4877 aria-live="polite" 4878 x-show="fullResultCount > 0 && !show && searchQuery.length >= minSearchLength" 4879 x-cloak 4880 x-transition:enter="transition ease-out duration-200" 4881 x-transition:enter-start="opacity-0 transform scale-95" 4882 x-transition:enter-end="opacity-100 transform scale-100" 4883 x-transition:leave="transition ease-in duration-150" 4884 x-transition:leave-start="opacity-100 transform scale-100" 4885 x-transition:leave-end="opacity-0 transform scale-95"> 4886 <div class="search-results absolute bg-white z-50 top-4 shadow-2xl w-full overflow-y-auto p-6 text-center"> 4887 <a :href="fullResultUrl" 4888 class="inline-flex items-center gap-2 font-bold text-lg underline hover:no-underline text-black"> 4889 <span x-text="getFullResultsMessage()"></span> 4890 <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" class="inline-block" width="20" height="20" aria-hidden="true"> 4891 <path stroke-linecap="round" stroke-linejoin="round" d="M14 5l7 7m0 0l-7 7m7-7H3"/> 4892</svg> 4893 </a> 4894 </div> 4895 </div> 4896 4897 <!-- No Results Message - only when the full search is genuinely empty --> 4898 <div id="search_suggestions" 4899 class="relative w-full" 4900 aria-live="polite" 4901 x-show="noResults && fullResultCount === 0 && searchQuery.length && searchQuery.length >= minSearchLength && !show" 4902 x-transition:enter="transition ease-out duration-200" 4903 x-transition:enter-start="opacity-0 transform scale-95" 4904 x-transition:enter-end="opacity-100 transform scale-100" 4905 x-transition:leave="transition ease-in duration-150" 4906 x-transition:leave-start="opacity-100 transform scale-100" 4907 x-transition:leave-end="opacity-0 transform scale-95"> 4908 <div class="search-suggestions absolute bg-white z-50 top-4 shadow-2xl w-full overflow-y-auto p-6"> 4909 <div class="font-bold mb-4 pb-5 text-2xl text-center border-b">
4910 <span x-text="getNoResultsMessage()"></span> 4911 </div> 4912 <div class="flex flex-col lg:flex-row mt-6"> 4913 <div class="w-full lg:w-1/3 lg:pr-6 mb-6 lg:mb-0"> 4914 <p class="font-bold text-lg mb-4">Search Suggestions</p> 4915 <ul class="space-y-3"> 4916 <li> 4917 <a href="https://www.steiff.com/en/stuffed-animals-toys" 4918 class="block text-sm no-underline text-gray transition-colors duration-200 hover:underline hover:text-black"> 4919 Stuffed animals & toys </a> 4920 </li> 4921 <li> 4922 <a href="https://www.steiff.com/en/baby-kids-fashion" 4923 class="block text-sm no-underline text-gray transition-colors duration-200 hover:underline hover:text-black"> 4924 Baby- & Kids fashion </a> 4925 </li> 4926 <li> 4927 <a href="https://www.steiff.com/en/exclusive-world-of-collectors" 4928 class="block text-sm no-underline text-gray transition-colors duration-200 hover:underline hover:text-black"> 4929 Exclusive world of collectors </a> 4930 </li> 4931 <li> 4932 <a href="https://www.steiff.com/en/gifts" 4933 class="block text-sm no-underline text-gray transition-colors duration-200 hover:underline hover:text-black"> 4934 Gifts </a> 4935 </li> 4936 <li> 4937 <a href="https://www.steiff.com/en/special-features" 4938 class="block text-sm no-underline text-gray transition-colors duration-200 hover:underline hover:text-black"> 4939 Special features </a> 4940 </li> 4941 </ul> 4942 </div> 4943 <div class="w-full lg:w-2/3 lg:pl-6"> 4944 </div> 4945 </div> 4946 </div> 4947 </div> 4948 </form> 4949 </div> 4950</div> 4951 </div> 4952 4953 <!--Logo--> 4954 <div class="block lg:hidden"> 4955 4956<a 4957 href="https://www.steiff.com/en" 4958 aria-label="Go to Home page" 4959> 4960 <img 4961 src="https://www.steiff.com/static/version1790768634/frontend/Steiff/default/en_GB/images/logo.svg" 4962 alt="Steiff European Online Shop" 4963 width="143" height="58" loading="eager" 4964 /> 4965 </a> 4966 </div> 4967 4968 <div class="flex" x-data="{ focusedByTab: false }" 4969 @keydown.tab.window="focusedByTab = true; $dispatch('focus-changed', { focusedByTab: true })" 4970 @mousedown.window="focusedByTab = false; $dispatch('focus-changed', { focusedByTab: false })"> 4971 4972 <!-- Additional Header Elements --> 4973 4974 <!--Customer Icon & Dropdown--> 4975 <div> 4976
4977<script> 4978 function setTriggerButtonId(buttonId) { 4979 document.getElementById(buttonId).setAttribute('data-trigger-button-id', buttonId); 4980 } 4981 4982 function customerHeaderMenu() { 4983 return { 4984 open: false, 4985 isFocusedByTab: false, 4986 isLoggedIn: false, 4987 customerName: '', 4988 onPrivateContentLoaded(privateContentEvent) { 4989 const customerSection = privateContentEvent.detail.data.customer; 4990 this.isLoggedIn = !!(customerSection && customerSection.firstname); 4991 if (!this.isLoggedIn) { 4992 this.customerName = ''; 4993 return; 4994 } 4995 const firstName = (customerSection.firstname || '').trim(); 4996 const lastName = (customerSection.lastname || '').trim(); 4997 this.customerName = [firstName, lastName].filter(Boolean).join(' ') 4998 || (customerSection.fullname || '').trim(); 4999 } 5000 }; 5001 } 5002</script>
5002 5003 5004<div 5005 class="relative inline-block" 5006 x-data="customerHeaderMenu()" 5007 @private-content-loaded.window="onPrivateContentLoaded($event)" 5008 @focus-changed.window="isFocusedByTab = $event.detail.focusedByTab" 5009 @keyup.escape="open = false" 5010 @click.outside="open = false" 5011 @mouseenter="open = true" 5012 @mouseleave="open = false" 5013> 5014 <div class="flex items-center justify-center"> 5015 <template x-if="isLoggedIn"> 5016 <a href="https://www.steiff.com/en/customer/account/" 5017 aria-label="Go to my account" 5018 class="flex flex-col items-center justify-center lg:justify-between p-2" 5019 title="Go to my account" 5020 > 5021 <svg xmlns="http://www.w3.org/2000/svg" width="28" height="23" viewBox="0 0 25 24" fill="none" class="md:h-8 md:w-10 fill-black" aria-hidden="true"> 5022<path d="M12.8362 16.8324C12.7507 17.1279 12.7201 17.4833 12.8336 17.9432C12.9208 18.2972 13.2532 18.5085 13.6141 18.4289C13.9612 18.3526 14.3033 18.2403 14.3366 18.4945C14.3863 18.8728 13.3937 19.4087 12.4998 19.422C11.6061 19.4087 10.6134 18.8728 10.6631 18.4945C10.6964 18.2403 11.0385 18.3526 11.3855 18.4289C11.7464 18.5085 12.0788 18.2972 12.1661 17.9432C12.2795 17.4833 12.2489 17.1279 12.1635 16.8324C12.1102 16.6482 11.9583 16.4495 11.6498 16.2692C11.0802 15.9363 10.5347 15.4332 10.5347 14.9523C10.5347 14.2843 11.4829 14.0096 12.4998 14.0053C13.5168 14.0096 14.4649 14.2843 14.4649 14.9523C14.4649 15.4333 13.9195 15.9364 13.3499 16.2692C13.0414 16.4495 12.8894 16.6482 12.8362 16.8324ZM22.1448 10.4932C22.2717 11.0445 22.3394 11.6226 22.3394 12.2256C22.3394 17.2789 17.6266 22.1351 12.497 22.1351C7.36742 22.1351 2.66022 17.2789 2.66022 12.2256C2.66022 11.6226 2.72794 11.0445 2.85472 10.4931C1.4673 9.88173 0.5 8.51096 0.5 6.91684C0.5 4.75363 2.28012 3 4.47599 3C5.88601 3 7.12381 3.72381 7.82971 4.81411C9.24753 4.18005 10.8503 3.83569 12.497 3.83569C14.145 3.83569 15.7497 4.18062 17.1692 4.81568C17.875 3.72446 19.1132 3.00006 20.524 3.00006C22.7199 3.00006 24.5 4.75369 24.5 6.9169C24.5 8.51114 23.5325 9.88183 22.1448 10.4932ZM8.68097 12.894C9.1449 12.894 9.52097 12.5235 9.52097 12.0665C9.52097 11.6095 9.1449 11.239 8.68097 11.239C8.21704 11.239 7.84097 11.6095 7.84097 12.0665C7.84097 12.5235 8.21704 12.894 8.68097 12.894ZM16.8278 16.2927C16.8278 14.1164 14.5475 12.9089 12.4995 12.9089C10.4515 12.9089 8.17154 14.1163 8.17154 16.2927C8.17154 18.4689 10.156 20.7899 12.4995 20.7899C14.8429 20.7899 16.8278 18.4689 16.8278 16.2927ZM17.1582 12.0666C17.1582 11.6096 16.7821 11.2391 16.3182 11.2391C15.8543 11.2391 15.4782 11.6096 15.4782 12.0666C15.4782 12.5235 15.8543 12.8941 16.3182 12.8941C16.7821 12.8941 17.1582 12.5235 17.1582 12.0666ZM21.8298 6.91906C21.8298 6.39681 21.3999 5.97334 20.8698 5.97334C20.3396 5.97334 19.9097 6.3968 19.9097 6.91906C19.9097 7.44137 20.3396 7.86476 20.8698 7.86476C21.3999 7.86476 21.8298 7.44137 21.8298 6.91906Z" fill="currentColor"/> 5023</svg> 5024 <p aria-hidden="true" class="hidden lg:block text-xxs font-bold">My Account</p> 5025 </a> 5026 </template> 5027 <template x-if="!isLoggedIn"> 5028 <div class="flex"> 5029 <button 5030 @click="$dispatch('open-auth-modal'), setTriggerButtonId('customer-menu')" 5031 type="button" 5032 id="customer-menu" 5033 class="flex p-2 flex-col items-center justify-center lg:justify-between" 5034 :aria-expanded="open ? 'true' : 'false'" 5035 :aria-label="'Open\u0020login\u0020menu'" 5036 aria-haspopup="true" 5037 > 5038 <svg xmlns="http://www.w3.org/2000/svg" width="28" height="23" viewBox="0 0 25 24" fill="none" class="md:h-8 md:w-10 fill-black" aria-hidden="true"> 5039<path d="M12.8362 16.8324C12.7507 17.1279 12.7201 17.4833 12.8336 17.9432C12.9208 18.2972 13.2532 18.5085 13.6141 18.4289C13.9612 18.3526 14.3033 18.2403 14.3366 18.4945C14.3863 18.8728 13.3937 19.4087 12.4998 19.422C11.6061 19.4087 10.6134 18.8728 10.6631 18.4945C10.6964 18.2403 11.0385 18.3526 11.3855 18.4289C11.7464 18.5085 12.0788 18.2972 12.1661 17.9432C12.2795 17.4833 12.2489 17.1279
503912.1635 16.8324C12.1102 16.6482 11.9583 16.4495 11.6498 16.2692C11.0802 15.9363 10.5347 15.4332 10.5347 14.9523C10.5347 14.2843 11.4829 14.0096 12.4998 14.0053C13.5168 14.0096 14.4649 14.2843 14.4649 14.9523C14.4649 15.4333 13.9195 15.9364 13.3499 16.2692C13.0414 16.4495 12.8894 16.6482 12.8362 16.8324ZM22.1448 10.4932C22.2717 11.0445 22.3394 11.6226 22.3394 12.2256C22.3394 17.2789 17.6266 22.1351 12.497 22.1351C7.36742 22.1351 2.66022 17.2789 2.66022 12.2256C2.66022 11.6226 2.72794 11.0445 2.85472 10.4931C1.4673 9.88173 0.5 8.51096 0.5 6.91684C0.5 4.75363 2.28012 3 4.47599 3C5.88601 3 7.12381 3.72381 7.82971 4.81411C9.24753 4.18005 10.8503 3.83569 12.497 3.83569C14.145 3.83569 15.7497 4.18062 17.1692 4.81568C17.875 3.72446 19.1132 3.00006 20.524 3.00006C22.7199 3.00006 24.5 4.75369 24.5 6.9169C24.5 8.51114 23.5325 9.88183 22.1448 10.4932ZM8.68097 12.894C9.1449 12.894 9.52097 12.5235 9.52097 12.0665C9.52097 11.6095 9.1449 11.239 8.68097 11.239C8.21704 11.239 7.84097 11.6095 7.84097 12.0665C7.84097 12.5235 8.21704 12.894 8.68097 12.894ZM16.8278 16.2927C16.8278 14.1164 14.5475 12.9089 12.4995 12.9089C10.4515 12.9089 8.17154 14.1163 8.17154 16.2927C8.17154 18.4689 10.156 20.7899 12.4995 20.7899C14.8429 20.7899 16.8278 18.4689 16.8278 16.2927ZM17.1582 12.0666C17.1582 11.6096 16.7821 11.2391 16.3182 11.2391C15.8543 11.2391 15.4782 11.6096 15.4782 12.0666C15.4782 12.5235 15.8543 12.8941 16.3182 12.8941C16.7821 12.8941 17.1582 12.5235 17.1582 12.0666ZM21.8298 6.91906C21.8298 6.39681 21.3999 5.97334 20.8698 5.97334C20.3396 5.97334 19.9097 6.3968 19.9097 6.91906C19.9097 7.44137 20.3396 7.86476 20.8698 7.86476C21.3999 7.86476 21.8298 7.44137 21.8298 6.91906Z" fill="currentColor"/> 5040</svg> 5041 <p aria-hidden="true" class="hidden lg:block text-xxs font-bold">My Account</p> 5042 </button> 5043 </div> 5044 </template> 5045 5046 <button 5047 x-show="isFocusedByTab" 5048 type="button" 5049 id="customer-menu-button" 5050 class="hidden md:flex p-2 flex-col items-center justify-center lg:justify-between" 5051 @click="open = !open" 5052 :aria-expanded="open ? 'true' : 'false'" 5053 :aria-label="'My\u0020Account\u0020\u002D\u0020Press\u0020Enter\u0020to\u0020open\u0020menu'" 5054 aria-haspopup="true" 5055 > 5056 <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" class="md:h-4 md:w-4" width="16" height="16" aria-hidden="true"> 5057 <path stroke-linecap="round" stroke-linejoin="round" d="M19 9l-7 7-7-7"/> 5058</svg> 5059 </button> 5060 5061 <div class="absolute top-16"> 5062 <nav 5063 class="hidden md:flex flex-col navigation-menu rounded z-20 p-8 relative shadow-2xl bg-white min-w-96" 5064 x-cloak 5065 x-show="open" 5066 x-transition:enter="transition ease-out duration-700" 5067 x-transition:enter-start="opacity-0" 5068 x-transition:enter-end="opacity-100" 5069 x-transition:leave="transition ease-in duration-500" 5070 x-transition:leave-start="opacity-100" 5071 x-transition:leave-end="opacity-0" 5072 aria-labelledby="customer-menu" 5073 > 5074 <template x-if="isLoggedIn"> 5075 <div class="flex flex-col"> 5076 <h5 class="border-b pb-4 mb-3"> 5077 Hello <span x-text="customerName"></span> 5078 </h5> 5079 5080<a 5081 class="block hover:font-bold hover:underline my-4 text-base" 5082 href="https://www.steiff.com/en/customer/account/" 5083 title="My Account" 5084> 5085 My Account</a> 5086 5087 5088 5089 <span 5090 class="block hover:font-bold hover:underline my-4 text-base" 5091 > 5092 Steiff Club </span> 5093 5094 <a 5095 class="block hover:font-bold hover:underline my-4 text-base" 5096 href="https://www.steiff.com/en/help" 5097 title="Contact" 5098 > 5099 Contact </a> 5100 5101 <a 5102 class="block hover:font-bold hover:underline my-4 text-base" 5103 href="https://www.steiff.com/en/withdraw-from-contract" 5104 title="Withdraw from contratct" 5105 > 5106 Withdraw from contratct </a> 5107 5108<a 5109 class="block hover:font-bold hover:underline my-4 text-base" 5110 href="https://www.steiff.com/en/sales/order/history/" 5111 title="My Orders" 5112> 5113 My Orders</a> 5114 5115<a 5116 class="block font-bold underline hover:no-underline pt-4 mt-3 order-last text-center border-t text-base" 5117 href="https://www.steiff.com/en/customer/account/logout/" 5118 title="Sign Out" 5119 onclick="window.steiffTrackLogout?.();" 5120> 5121 Sign Out</a> 5122 </div> 5123 </template> 5124 <template x-if="!isLoggedIn"> 5125 <div class="flex flex-col"> 5126 5127<button 5128 @click="$dispatch('open-auth-modal'), setTriggerButtonId('customer-menu
5128-button')" 5129 type="button" 5130 id="sign-in-button" 5131 class="btn btn-primary w-full mb-4" 5132 :aria-label="'Sign\u0020In'" 5133 aria-haspopup="true" 5134 > 5135 Sign In</button> 5136 5137 <span 5138 class="block hover:font-bold hover:underline my-4 text-base" 5139 > 5140 Steiff Club </span> 5141 5142 <a 5143 class="block hover:font-bold hover:underline my-4 text-base" 5144 href="https://www.steiff.com/en/help" 5145 title="Contact" 5146 > 5147 Contact </a> 5148 5149 <a 5150 class="block hover:font-bold hover:underline my-4 text-base" 5151 href="https://www.steiff.com/en/withdraw-from-contract" 5152 title="Withdraw from contratct" 5153 > 5154 Withdraw from contratct </a> 5155 5156 <div class="order-last flex flex-row items-center border-t pt-1 mt-4 justify-around"> 5157 <p class="pt-4 w-full text-left"> 5158 No account yet? </p> 5159 5160 <a 5161 class="block font-bold underline hover:no-underline pt-4 text-base w-full text-right" 5162 href="https://www.steiff.com/en/customer/account/create/" 5163 title="Create an Account" 5164 > 5165 Create an Account </a> 5166 </div> 5167 </div> 5168 </template> 5169 </nav> 5170 </div> 5171 </div> 5172</div> 5173 </div> 5174 5175 <!--Wishlist Icon, if the customer is logged in--> 5176 <template x-if="isLoggedIn"> 5177 <a href="https://www.steiff.com/en/wishlist/index/index/" 5178 aria-label="My Wish List" 5179 class="wishlist-icon flex flex-col items-center justify-center lg:justify-between p-2 relative" 5180 title="My Wish List" 5181 > 5182 <div class="relative"> 5183 <svg xmlns="http://www.w3.org/2000/svg" width="23" height="23" viewBox="0 0 25 24" fill="none" class="md:h-6 md:w-6 fill-black" aria-hidden="true"> 5184<g clip-path="url(#clip0_3674_348)"> 5185<path fill-rule="evenodd" clip-rule="evenodd" d="M17.6401 2.08C16.6719 2.07601 15.7138 2.2761 14.8281 2.66723C13.9425 3.05836 13.1492 3.63174 12.5001 4.35C11.8509 3.63174 11.0576 3.05836 10.172 2.66723C9.28634 2.2761 8.32821 2.07601 7.36006 2.08C6.46837 2.07076 5.58359 2.23726 4.75625 2.56998C3.92891 2.9027 3.17521 3.39513 2.53819 4.01914C1.90118 4.64316 1.39331 5.38655 1.04361 6.20685C0.693901 7.02716 0.509202 7.90831 0.500057 8.8C0.496369 9.69156 0.67146 10.5748 1.01498 11.3975C1.3585 12.2203 1.86348 12.9658 2.50006 13.59L12.5001 22.24L22.5001 13.59C23.1362 12.9654 23.6409 12.2199 23.9843 11.3972C24.3278 10.5746 24.5032 9.69148 24.5001 8.8C24.4922 7.90793 24.3084 7.02617 23.9592 6.20527C23.6099 5.38437 23.1021 4.64046 22.4648 4.01618C21.8275 3.3919 21.0733 2.89953 20.2454 2.56728C19.4175 2.23503 18.5321 2.06944 17.6401 2.08ZM4.42006 11.62C3.66521 10.8749 3.23717 9.8606 3.23006 8.8C3.25109 7.72489 3.6957 6.70154 4.46723 5.95249C5.23875 5.20344 6.27479 4.78926 7.35006 4.8C7.92728 4.79814 8.49869 4.91529 9.02862 5.14412C9.55855 5.37295 10.0356 5.70856 10.4301 6.13L12.5001 8.18L14.5001 6.18C14.893 5.75188 15.3705 5.40996 15.9024 5.17586C16.4343 4.94177 17.0089 4.82059 17.5901 4.82C18.6644 4.80929 19.6994 5.22379 20.4693 5.97311C21.2392 6.72243 21.6816 7.74579 21.7001 8.82C21.6956 9.87916 21.2712 10.8933 20.5201 11.64L12.4601 18.64L4.42006 11.62Z" fill="currentColor"/> 5186</g> 5187<defs> 5188<clipPath id="clip0_3674_348"> 5189<rect width="24" height="24" fill="white" transform="translate(0.5)"/> 5190</clipPath> 5191</defs> 5192</svg> 5193 5194 <span 5195 x-text="(String(wishlist.counter || '').match(/\d+/) || [''])[0]" 5196 x-show="!isWishlistEmpty()" 5197 x-cloak 5198 class="text-xxs text-center font-bold absolute top-1 left-3.5 rounded-full bg-cherryRed text-white w-3.5 md:w-4 h-3.5 md:h-4 p-1 flex items-center justify-center" 5199 aria-hidden="true" 5200 ></span> 5201 </div> 5202 <p aria-hidden="true" class="hidden lg:block text-xxs font-bold">Wish List</p> 5203 </a> 5204 </template> 5205 <!-- Wishlist Icon, if the customer is logged out (with authentication modal)--> 5206 <template x-if="!isLoggedIn"> 5207 <div class="flex" x-data="hyva.modal()" 5208 @open-auth-modal.window="$dispatch('hyva-modal-show', {dialog: 'header-auth-modal'})" 5209 @close-auth-modal.window="$dispatch('hyva-modal-hide', {dialog: 'header-auth-modal'})"> 5210 <button @click="
5211 $dispatch('set-auth-redirect', {url: 'https://www.steiff.com/en/wishlist/index/index/'}); 5212 $dispatch('hyva-modal-show', {dialog: 'header-auth-modal'}) 5213 " 5214 aria-label="My Wish List" 5215 class="flex flex-col items-center justify-center lg:justify-between p-2" 5216 title="My Wish List" 5217 > 5218 <svg xmlns="http://www.w3.org/2000/svg" width="23" height="23" viewBox="0 0 25 24" fill="none" class="md:h-6 md:w-6 fill-black" aria-hidden="true"> 5219<g clip-path="url(#clip0_3674_348_2)"> 5220<path fill-rule="evenodd" clip-rule="evenodd" d="M17.6401 2.08C16.6719 2.07601 15.7138 2.2761 14.8281 2.66723C13.9425 3.05836 13.1492 3.63174 12.5001 4.35C11.8509 3.63174 11.0576 3.05836 10.172 2.66723C9.28634 2.2761 8.32821 2.07601 7.36006 2.08C6.46837 2.07076 5.58359 2.23726 4.75625 2.56998C3.92891 2.9027 3.17521 3.39513 2.53819 4.01914C1.90118 4.64316 1.39331 5.38655 1.04361 6.20685C0.693901 7.02716 0.509202 7.90831 0.500057 8.8C0.496369 9.69156 0.67146 10.5748 1.01498 11.3975C1.3585 12.2203 1.86348 12.9658 2.50006 13.59L12.5001 22.24L22.5001 13.59C23.1362 12.9654 23.6409 12.2199 23.9843 11.3972C24.3278 10.5746 24.5032 9.69148 24.5001 8.8C24.4922 7.90793 24.3084 7.02617 23.9592 6.20527C23.6099 5.38437 23.1021 4.64046 22.4648 4.01618C21.8275 3.3919 21.0733 2.89953 20.2454 2.56728C19.4175 2.23503 18.5321 2.06944 17.6401 2.08ZM4.42006 11.62C3.66521 10.8749 3.23717 9.8606 3.23006 8.8C3.25109 7.72489 3.6957 6.70154 4.46723 5.95249C5.23875 5.20344 6.27479 4.78926 7.35006 4.8C7.92728 4.79814 8.49869 4.91529 9.02862 5.14412C9.55855 5.37295 10.0356 5.70856 10.4301 6.13L12.5001 8.18L14.5001 6.18C14.893 5.75188 15.3705 5.40996 15.9024 5.17586C16.4343 4.94177 17.0089 4.82059 17.5901 4.82C18.6644 4.80929 19.6994 5.22379 20.4693 5.97311C21.2392 6.72243 21.6816 7.74579 21.7001 8.82C21.6956 9.87916 21.2712 10.8933 20.5201 11.64L12.4601 18.64L4.42006 11.62Z" fill="currentColor"/> 5221</g> 5222<defs> 5223<clipPath id="clip0_3674_348_2"> 5224<rect width="24" height="24" fill="white" transform="translate(0.5)"/> 5225</clipPath> 5226</defs> 5227</svg> 5228 <p aria-hidden="true" class="hidden lg:block text-xxs font-bold">Wish List</p> 5229 </button> 5230 <div x-cloak data-dialog-ref-name="header-auth-modal" 5231 x-bind="overlay" 5232 class="fixed inset-0 bg-black/50 z-50"> 5233 <div class="fixed flex justify-center items-center text-left z-40 inset-0"> 5234 <div x-ref="header-auth-modal" role="dialog" aria-modal="true" 5235 aria-labelledby="modal-title" 5236 class="inline-block bg-white shadow-xl rounded-lg p-10 max-h-screen overflow-auto overscroll-y-contain p-6 pb-12 rounded-none flex flex-col items-center justify-center modal relative"> 5237
5237<script> 5238 function initMessageModalAuthentification() { 5239 return { 5240 messages: [], 5241 isVisible: false, 5242 timeouts: {}, 5243 pauseData: {}, 5244 hasMessages() { 5245 return this.messages && this.messages.length > 0; 5246 }, 5247 addMessages(newMessages) { 5248 if (!newMessages || newMessages.length === 0) { 5249 return; 5250 } 5251 5252 const instance = this; 5253 const now = Date.now(); 5254 newMessages.forEach((messageObj) => { 5255 if (messageObj.type === 'error') { 5256 // Check if this message already exists to prevent duplicates 5257 const messageText = messageObj.text || messageObj.message || ''; 5258 const existingMessage = instance.messages.find(m => m.text === messageText); 5259 5260 if (!existingMessage) { 5261 const messageId = 'msg_' + now + '_' + Math.random(); 5262 const messageWithId = { 5263 ...messageObj, 5264 _id: messageId, 5265 show: true, 5266 isPaused: false 5267 }; 5268 5269 instance.messages.push(messageWithId); 5270 5271 instance.pauseData[messageId] = { 5272 startTime: Date.now(), 5273 remaining: 8000 5274 }; 5275 instance.timeouts[messageId] = setTimeout(() => { 5276 instance.removeMessageById(messageId); 5277 }, 8000); 5278 } 5279 } 5280 }); 5281 }, 5282 pauseTimeout(messageId) { 5283 if (this.timeouts[messageId] && !this.pauseData[messageId].isPaused) { 5284 const elapsed = Date.now() - this.pauseData[messageId].startTime; 5285 this.pauseData[messageId].remaining = this.pauseData[messageId].remaining - elapsed; 5286 5287 clearTimeout(this.timeouts[messageId]); 5288 delete this.timeouts[messageId]; 5289 this.pauseData[messageId].isPaused = true; 5290 5291 const message = this.messages.find(m => m._id === messageId); 5292 if (message) { 5293 message.isPaused = true; 5294 } 5295 } 5296 }, 5297 resumeTimeout(messageId) { 5298 if (!this.timeouts[messageId] && this.pauseData[messageId] && this.pauseData[messageId].isPaused) { 5299 this.pauseData[messageId].startTime = Date.now(); 5300 this.pauseData[messageId].isPaused = false; 5301 5302 this.timeouts[messageId] = setTimeout(() => { 5303 this.removeMessageById(messageId); 5304 }, this.pauseData[messageId].remaining); 5305 5306 const message = this.messages.find(m => m._id === messageId); 5307 if (message) { 5308 message.isPaused = false; 5309 } 5310 } 5311 }, 5312 togglePause(messageId) { 5313 const pauseData = this.pauseData[messageId]; 5314 if (!pauseData) { 5315 return; 5316 } 5317 5318 if (pauseData.isPaused) { 5319 this.resumeTimeout(messageId); 5320 } else { 5321 this.pauseTimeout(messageId); 5322 } 5323 }, 5324 removeMessage(index) { 5325 if (index >= 0 && index < this.messages.length) { 5326 this.messages = this.messages.filter((_, i) => i !== index); 5327 } 5328 }, 5329 removeMessageById(messageId) { 5330 if (this.timeouts[messageId]) { 5331 clearTimeout(this.timeouts[messageId]); 5332 delete this.timeouts[messageId]; 5333 } 5334 if (this.pauseData[messageId]) { 5335 delete this.pauseData[messageId]; 5336 } 5337 this.messages = this.messages.filter(m => m && m._id !== messageId); 5338 }, 5339 closeModal() {
5340 Object.keys(this.timeouts).forEach(timeoutId => { 5341 clearTimeout(this.timeouts[timeoutId]); 5342 }); 5343 this.timeouts = {}; 5344 this.pauseData = {}; 5345 this.messages = []; 5346 }, 5347 clearMessages() { 5348 Object.keys(this.timeouts).forEach(timeoutId => { 5349 clearTimeout(this.timeouts[timeoutId]); 5350 }); 5351 this.timeouts = {}; 5352 this.pauseData = {}; 5353 this.messages = []; 5354 }, 5355 init() { 5356 const authModal = this.$el.closest('.login-modal'); 5357 if (authModal) { 5358 authModal.messageModalInstance = this; 5359 } 5360 5361 const eventListener = (event) => { 5362 const authModal = this.$el.closest('.login-modal'); 5363 if (authModal && authModal.offsetParent !== null) { 5364 const messages = event.detail.messages || []; 5365 this.addMessages(messages); 5366 } 5367 }; 5368 5369 this._eventListener = eventListener; 5370 window.addEventListener('auth-message-modal-show', eventListener); 5371 5372 this.$el.addEventListener('alpine:destroying', () => { 5373 if (this._eventListener) { 5374 window.removeEventListener('auth-message-modal-show', this._eventListener); 5375 } 5376 Object.keys(this.timeouts).forEach(timeoutId => { 5377 clearTimeout(this.timeouts[timeoutId]); 5378 }); 5379 this.timeouts = {}; 5380 this.pauseData = {}; 5381 }); 5382 } 5383 } 5384 } 5385 5386 function initAuthenticationModal() { 5387 return { 5388 forceAuthentication: false, 5389 pendingWishlistAdd: false, 5390 triggerElement: null, 5391 defaultRedirectUrl: 'https://www.steiff.com/en/customer/account/', 5392 redirectUrl: 'https://www.steiff.com/en/customer/account/', 5393 errors: 0, 5394 isForgotPasswordOpen: false, 5395 hasCaptchaToken: 0, 5396 displayErrorMessage: false, 5397 errorMessages: [], 5398 init() { 5399 this.$nextTick(() => { 5400 const checkModalVisibility = () => { 5401 const modalDialog = this.$el.closest('[role="dialog"]'); 5402 if (modalDialog) { 5403 const isVisible = modalDialog.offsetParent !== null && 5404 !modalDialog.hidden && 5405 !modalDialog.hasAttribute('x-cloak'); 5406 if (!isVisible) { 5407 this.isForgotPasswordOpen = false; 5408 } 5409 } 5410 }; 5411 5412 const interval = setInterval(checkModalVisibility, 100); 5413 5414 this.$el.addEventListener('alpine:destroying', () => { 5415 clearInterval(interval); 5416 }); 5417 }); 5418 }, 5419 switchToForgotPassword() { 5420 this.isForgotPasswordOpen = true; 5421 this.$nextTick(() => { 5422 const modalDialog = this.$el.closest('[role="dialog"]'); 5423 if (modalDialog) { 5424 hyva.trapFocus(modalDialog); 5425 } 5426 }); 5427 }, 5428 switchToLogin() { 5429 this.isForgotPasswordOpen = false; 5430 this.$nextTick(() => { 5431 const modalDialog = this.$el.closest('[role="dialog"]'); 5432 if (modalDialog) { 5433 hyva.trapFocus(modalDialog); 5434 } 5435 }); 5436 }, 5437 5438 closeModal() { 5439 this.pendingWishlistAdd = false; 5440 window.dispatchEvent(new CustomEvent('auth-modal-wishlist-cancelled')); 5441 this.switchToLogin(); 5442 this.redirectUrl = this.defaultRedirectUrl; 5443 const trigger = this.triggerElement; 5444 this.triggerElement = null; 5445 this.switchToTriggerButton(); 5446 window.hyva.modal.pop(); 5447 if (trigger && typeof trigger.focus === 'function') { 5448 setTimeout(() => trigger.focus(), 100); 5449 } 5450 }, 5451 5452 switchToTriggerButton() { 5453 const triggerButton = document.querySelector('[data-trigger-button-id]'); 5454 if (triggerButton) { 5455 setTimeout(() => { 5456 triggerButton.focus(); 5457 triggerButton.dispatchEvent(new Event('focus', { bubbles: true })); 5458 }, 100); 5459 triggerButton.removeAttribute('data-trigger-button-id'); 5460 } 5461 }, 5462 5463 setErrorMessages(message) { 5464 this.errorMessages = [message]; 5465 this.displayErrorMessage = true; 5466 window.dispatchEvent(new CustomEvent('auth-message-modal-show', { 5467 detail: { 5468 messages: [{ 5469 type: 'error', 5470 text: message 5471 }] 5472 } 5473 })); 5474 },
5475 submitForm() { 5476 window.steiffTrackLogin?.(); 5477 // Do not rename $form, the variable is expected to be declared in the recaptcha output 5478 const $form = document.querySelector('#login-form'); 5479 if (!this.hasCaptchaToken) { 5480 this.errors = 1; 5481 5482 5483 const executeGreCaptcha = () => { 5484 grecaptcha.ready(() => { 5485 grecaptcha.execute( 5486 '6LfIe4EpAAAAALE75oNaaOgTw2G3VadtzHYrJItg', 5487 {action: 'customer_login'} 5488 ).then((token) => { 5489 const tokenElement = $form['g\u002Drecaptcha\u002Dresponse']; 5490 5491 if (tokenElement && token && token.length > 0) { 5492 $form['g\u002Drecaptcha\u002Dresponse'].value = token; 5493 this.errors = 0; 5494 this.hasCaptchaToken = 1; 5495 if (typeof this.submitForm === 'function') { 5496 this.submitForm(); 5497 } else { 5498 HTMLFormElement.prototype.submit.call($form); 5499 } 5500 } else { 5501 this.errors = 1; 5502 const error = tokenElement 5503 ? 'ReCaptcha\u0020validation\u0020failed,\u0020please\u0020try\u0020again' 5504 : 'ReCaptcha\u0020token\u0020element\u0020is\u0020missing.\u0020Please\u0020refresh\u0020the\u0020page\u0020and\u0020trying\u0020again.'; 5505 if (this.setErrorMessages) { 5506 this.setErrorMessages([error]) 5507 this.displayErrorMessage = true; 5508 } else { 5509 window.dispatchMessages && window.dispatchMessages([{type: "error", text: error}], 5000); 5510 } 5511 } 5512 }).catch(exception => { 5513 console.error(exception || `An unknown error occurred during ReCaptcha validation. Are the tokens and the domain correctly set up in the Google console?`) 5514 }); 5515 }) 5516 } 5517 5518 if (window.grecaptcha) { 5519 executeGreCaptcha(); 5520 } else { 5521 const recaptchaUrl = "https://www.google.com/recaptcha/api.js?render=6LfIe4EpAAAAALE75oNaaOgTw2G3VadtzHYrJItg"; 5522 const script = document.createElement('script'); 5523 script.setAttribute('type', 'text/javascript'); 5524 script.setAttribute('src', recaptchaUrl); 5525 document.head.appendChild(script); 5526 5527 script.addEventListener("load", executeGreCaptcha, false); 5528 } 5529 } 5530 5531 if (this.errors === 0) { 5532 this.dispatchLoginRequest($form); 5533 } 5534 }, 5535 onPrivateContentLoaded() { 5536 const data = this.$event.detail.data; 5537 const isLoggedIn = data.customer && data.customer.firstname; 5538 if (data.cart && !isLoggedIn) { 5539 this.forceAuthentication = !data.cart.isGuestCheckoutAllowed; 5540 } 5541 }, 5542 redirectIfAuthenticated() { 5543 const event = this.$event; 5544 5545 if (event.detail && event.detail.url) { 5546 this.redirectUrl = event.detail.url; 5547 } 5548 if (!this.forceAuthentication) { 5549 window.location.href = this.redirectUrl; 5550 } 5551 }, 5552 resetErrors() { 5553 this.errors = 0; 5554 }, 5555 dispatchLoginRequest(form) { 5556 this.isLoading = true; 5557 5558 const username = form.querySelector('#form-login-username').value; 5559 const password = form.querySelector('#form-login-password').value; 5560 const formKey = hyva.getFormKey(); 5561 5562 const bodyFields = { 5563 'username': username, 5564 'password': password, 5565 'formKey': formKey 5566 }; 5567 5568 const fieldName = 'g\u002Drecaptcha\u002Dresponse'; 5569 const recaptchaField = fieldName && form[fieldName]; 5570 if (recaptchaField) { 5571 bodyFields[fieldName] = recaptchaField.value; 5572 } 5573 5574 fetch('https://www.steiff.com/en/customer/ajax/login/', { 5575 method: 'POST', 5576 headers: { 5577 'Content-Type': 'application/json', 5578 'X-Requested-With': 'XMLHttpRequest' 5579 }, 5580 body: JSON.stringify(bodyFields) 5581 } 5582 ).then(response => { 5583 return response.json() 5584 } 5585 ).then(data => { 5586 this.isLoading = false;
5587 if (data.errors) { 5588 this.setErrorMessages(data.message); 5589 this.errors = 1; 5590 this.hasCaptchaToken = 0; 5591 } else if (this.pendingWishlistAdd) { 5592 this.pendingWishlistAdd = false; 5593 this.triggerElement = null; 5594 this.redirectUrl = this.defaultRedirectUrl; 5595 window.dispatchEvent(new CustomEvent('close-auth-modal')); 5596 window.dispatchEvent(new CustomEvent('wishlist-after-auth-login')); 5597 window.dispatchEvent(new CustomEvent('reload-customer-section-data')); 5598 this.switchToLogin(); 5599 } else { 5600 window.location.href = this.redirectUrl; 5601 } 5602 }); 5603 } 5604 } 5605 } 5606 5607 window.addEventListener('alpine:init', () => { 5608 if (!Alpine.$data.initMessageModalAuthentification) { 5609 Alpine.data('initMessageModalAuthentification', initMessageModalAuthentification); 5610 } 5611 Alpine.data('initAuthenticationModal', initAuthenticationModal); 5612 }, {once: true}) 5613</script>
5613 5614 5615<div class="login-modal pb-1 flex flex-col" 5616 x-data="initAuthenticationModal()" 5617 @switch-to-login.window="switchToLogin()" 5618 @set-auth-redirect.window="redirectUrl = $event.detail.url" 5619 @auth-modal-wishlist-pending.window="pendingWishlistAdd = true" 5620 @open-auth-modal.window="triggerElement = document.activeElement"> 5621 <!-- Message Modal within Dialog --> 5622 <div class="notifications fixed right-10 top-10 mb-4 pointer-events-none" 5623 x-data="initMessageModalAuthentification()" 5624 x-cloak 5625 > 5626 <template x-for="(message, index) in messages" :key="`${message.type}_${index}`"> 5627 <div x-data="{ show: true }" 5628 x-show="show" 5629 x-transition:enter="duration-300 ease-out" 5630 x-transition:enter-start="opacity-0 -translate-y-2" 5631 x-transition:enter-end="opacity-100 translate-y-0" 5632 x-transition:leave="duration-200 ease-in" 5633 x-transition:leave-start="opacity-100 translate-y-0" 5634 x-transition:leave-end="opacity-0 -translate-y-2" 5635 role="alert" 5636 aria-live="assertive" 5637 aria-atomic="true" 5638 tabindex="-1" 5639 class="notification mt30 border-box cl-white error pointer-events-auto" 5640 data-testid="notificationMessage"> 5641 5642 <div class="flex justify-between items-start p-5 "> 5643 <div class="text-white" x-html="message.text"></div> 5644 <button type="button" class="bg-transparent hover:bg-transparent border-none cursor-pointer font-normal text-white" 5645 @click.stop="show = false; $nextTick(() => removeMessageById(message._id))" 5646 @keydown.escape.stop="show = false; $nextTick(() => removeMessageById(message._id))" 5647 aria-label="Dismiss this notification"> 5648 <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"> 5649 <path stroke-linecap="round" stroke-linejoin="round" d="M6 18L18 6M6 6l12 12"/> 5650</svg> 5651 </button> 5652 </div> 5653 <button type="button" 5654 class="py-2.5 px-5 cursor-pointer font-normal action-border notification-action uppercase border-error flex items-center justify-center text-white" 5655 @click.stop="togglePause(message._id)" 5656 :aria-label="message.isPaused ? 'Resume\u0020timer' : 'Pause\u0020timer'" 5657 :title="message.isPaused ? 'Resume\u0020timer' : 'Pause\u0020timer'"> 5658 <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" class="w-5 h-5" width="20" height="20" aria-hidden="true" x-show="!message.isPaused"> 5659 <path stroke-linecap="round" stroke-linejoin="round" d="M14.752 11.168l-3.197-2.132A1 1 0 0010 9.87v4.263a1 1 0 001.555.832l3.197-2.132a1 1 0 000-1.664z"/> 5660 <path stroke-linecap="round" stroke-linejoin="round" d="M21 12a9 9 0 11-18 0 9 9 0 0118 0z"/> 5661</svg> 5662 <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" class="w-5 h-5" width="20" height="20" aria-hidden="true" x-show="message.isPaused"> 5663 <path stroke-linecap="round" stroke-linejoin="round" d="M10 9v6m4-6v6m7-3a9 9 0 11-18 0 9 9 0 0118 0z"/> 5664</svg> 5665 </button> 5666 </div> 5667 </template> 5668 </div> 5669 5670 <!-- Close: dispatchModalClose() → hyva-modal-hide (forgot-password form uses hyva.modal() merge instead) --> 5671 <button @click.stop="closeModal()" 5672 type="button" 5673 class="z-50 flex cursor-pointer self-end transition-colors hover:text-black absolute top-4 right-4" 5674 aria-label="Close" 5675 > 5676 <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" class="w-6 h-6" width="24" height="24" aria-hidden="true"> 5677 <path stroke-linecap="round" stroke-linejoin="round" d="M6 18L18 6M6 6l12 12"/> 5678</svg> 5679 </button> 5680 5681 <!-- Switch to Register Form --> 5682 <div class="flex flex-col items-center justify-center pb-4" x-show="!isForgotPasswordOpen"> 5683 <h4 class="mb-6">Sign In</h4> 5684 <p class="text-center text-base">If you already have a customer account with us, please log in using your access data.</p> 5685 </div> 5686 5687 <!-- Login Form --> 5688 <form class="" 5689 method="post" 5690 @submit.prevent="submitForm" 5691 id="login-form" 5692 x-show="!isForgotPasswordOpen" 5693 > 5694 <div class="control"> 5695 <input type="hidden" 5696 value="" 5697 name="g-recaptcha-response" 5698 /> 5699</div> 5700 <div class=""> 5701 <div class="field mb-4 required"> 5702 <label class="label mb-2 text-xs required" for="form-login-username" form="login-form" >
5703 <span>Email Address</span> 5704 </label> 5705 <div class="control pb-1"> 5706 <input name="username" 5707 id="form-login-username" 5708 x-ref="customer-email" 5709 @change="resetErrors" 5710 type="email" 5711 required 5712 autocomplete="off" 5713 class="form-input" 5714 placeholder="Enter your email address" 5715 > 5716 </div> 5717 </div> 5718 <div class="field mb-4 required"> 5719 <label for="form-login-password" class="label mb-2 text-xs" form="login-form"> 5720 <span>Password</span> 5721 </label> 5722 <div class="control pb-1 relative" x-data="{ showPassword: false }"> 5723 <input name="password" 5724 id="form-login-password" 5725 class="form-input pr-12" 5726 :type="showPassword ? 'text' : 'password'" 5727 required 5728 x-ref="customer-password" 5729 autocomplete="off" 5730 @change="resetErrors" 5731 placeholder="Enter your password" 5732 > 5733 <button 5734 type="button" 5735 x-on:click="showPassword = !showPassword" 5736 :aria-pressed="showPassword ? 'true' : 'false'" 5737 class="absolute right-3 top-1/2 transform -translate-y-1/2 p-1 text-gray-dark hover:text-gray-dark " 5738 :aria-label="showPassword ? 'Hide\u0020Password' : 'Show\u0020Password'" 5739 > 5740 <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" class="w-5 h-5" width="20" height="20" aria-hidden="true" x-show="!showPassword"> 5741 <path stroke-linecap="round" stroke-linejoin="round" d="M15 12a3 3 0 11-6 0 3 3 0 016 0z"/> 5742 <path stroke-linecap="round" stroke-linejoin="round" d="M2.458 12C3.732 7.943 7.523 5 12 5c4.478 0 8.268 2.943 9.542 7-1.274 4.057-5.064 7-9.542 7-4.477 0-8.268-2.943-9.542-7z"/> 5743</svg> 5744 <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" class="w-5 h-5" width="20" height="20" aria-hidden="true" x-show="showPassword"> 5745 <path stroke-linecap="round" stroke-linejoin="round" d="M13.875 18.825A10.05 10.05 0 0112 19c-4.478 0-8.268-2.943-9.543-7a9.97 9.97 0 011.563-3.029m5.858.908a3 3 0 114.243 4.243M9.878 9.878l4.242 4.242M9.88 9.88l-3.29-3.29m7.532 7.532l3.29 3.29M3 3l3.59 3.59m0 0A9.953 9.953 0 0112 5c4.478 0 8.268 2.943 9.543 7a10.025 10.025 0 01-4.132 5.411m0 0L21 21"/> 5746</svg> 5747 </button> 5748 </div> 5749 </div> 5750 5751 <!-- Forgot Password Link --> 5752 <div class="flex justify-between mb-6"> 5753 <p class="text-xs"> 5754 *Required fields </p> 5755 <button type="button" 5756 class="text-gray-medium underline hover:no-underline bg-transparent border-none p-0 cursor-cursor-pointer text-base" 5757 @click="switchToForgotPassword()" 5758 aria-label="Open forgot password form"> 5759 Forgot Your Password? </button> 5760 </div> 5761 5762 <div> 5763 <button type="submit" class="inline-flex btn btn-primary disabled:opacity-75 w-full text-base" 5764 > 5765 Sign In </button> 5766 </div> 5767 5768 <div x-show="!isForgotPasswordOpen" class="w-full [&_p]:text-xs "> 5769 <p class="my-4 text-sm text-gray-dark [&_a]:text-cherryRed [&_a]:underline [&_a:hover]:no-underline"> 5770This form is protected by reCAPTCHA - the <a href="https://policies.google.com/privacy" target="_blank" rel="noopener">Google Privacy Policy</a> and <a href="https://policies.google.com/terms" target="_blank" rel="noopener">Terms of Service</a> apply.</p> 5771 </div> 5772 5773 <div class="text-center mt-8 text-base"> 5774 No account yet? <a class=" underline hover:no-underline font-bold" href="https://www.steiff.com/en/customer/account/create/" 5775 > 5776 Create account now </a> 5777 </div> 5778 </div> 5779 </form> 5780 5781 <!-- Forgot Password Form --> 5782 <div x-show="isForgotPasswordOpen"> 5783 <div class="login-modal"> 5784 <form x-data="ForgotPasswordForm" 5785 action="https://www.steiff.com/en/customer/account/forgotpasswordpost/" 5786 method="post" 5787 id="user_forgotpassword_auth" 5788 x-on:submit.prevent="actionSubmitForgotPasswordForm" 5789 > 5790 <button x-on:click="dispatchModalClose" 5791 type="button" 5792 class="flex self-end transition-colors hover:text-black absolute top-4 right-4" 5793 aria-label="Close" 5794 > 5795 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" class="w-6 h-6" width="24" height="24" aria-hidden="true"> 5796 <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"/> 5797</svg> 5798 </button> 5799 <div class="flex flex-col items-center justify-center pb-4"> 5800 <h4 class="mb-6"> 5801 Forgot Your Password? </h4> 5802 <p class="text-center text-base"> 5803 Enter the email address you created with your account and we'll send you a link to reset your password. </p> 5804 </div> 5805 <input name="form_key" type="hidden" value="A9a4gvqvl1pUQyIo" /> <div class="control"> 5806 <input type="hidden" 5807 value="" 5808 name="g-recaptcha-response" 5809 /> 5810</div> 5811 5812 <div class="mb-6"> 5813 <div class="flex field required justify-between items-center !mb-0"> 5814 <label for="user_forgotpassword_auth_email" class="label">
5815 <span>Email Address</span> 5816 </label> 5817 <p class="text-xxs"> 5818 * Required fields </p> 5819 </div> 5820 <div class="control pb-1"> 5821 <input type="email" 5822 name="email" 5823 id="user_forgotpassword_auth_email" 5824 class="form-input w-full" 5825 autocomplete="off" 5826 placeholder="Please provide a valid e-mail address." 5827 required 5828 value="" 5829 @input.debounce="onChange" 5830 > 5831 </div> 5832 </div> 5833 5834 <div class="actions-toolbar flex-col"> 5835 <button type="submit" 5836 class="btn btn-primary disabled:opacity-75 w-full mb-6 text-base" 5837 > 5838 Reset Password </button> 5839 5840 <div class="w-full [&_p]:text-xs [&_p]:mt-0"> 5841 <p class="my-4 text-sm text-gray-dark [&_a]:text-cherryRed [&_a]:underline [&_a:hover]:no-underline"> 5842This form is protected by reCAPTCHA - the <a href="https://policies.google.com/privacy" target="_blank" rel="noopener">Google Privacy Policy</a> and <a href="https://policies.google.com/terms" target="_blank" rel="noopener">Terms of Service</a> apply.</p> 5843 </div> 5844 5845 <button type="button" 5846 class="underline font-bold hover:no-underline bg-transparent border-none p-0 cursor-pointer text-base" 5847 x-on:click="dispatchSwitchToLogin" 5848 aria-label="Back to login form" 5849 > 5850 or go back to log-in </button> 5851 </div> 5852 </form> 5853</div> 5854 </div> 5855</div> </div> 5856 </div> 5857 </div> 5858 </div> 5859 </template> 5860 5861 <!--Cart Icon--> 5862 <button 5863 id="menu-cart-icon" 5864 class="flex flex-col items-center justify-center lg:justify-between pl-2 pb-2 pt-2 md:pr-2 relative" 5865 x-ref="cartButton" 5866 :aria-disabled="isCartEmpty()" 5867 :aria-label="` 5868 Toggle minicart, 5869 ${isCartEmpty() 5870 ? 'Cart is empty' 5871 : cart.summary_count > 1 5872 ? hyva.str('%1 items', cart.summary_count) 5873 : hyva.str('%1 item', cart.summary_count) 5874 }`" 5875 @click.prevent="() => { 5876 $dispatch('toggle-cart', { isOpen: true }) 5877 }" 5878 @toggle-cart.window="toggleCart($event)" 5879 :aria-expanded="isCartOpen" 5880 aria-haspopup="dialog" 5881 > 5882 <div class="relative"> 5883 <svg xmlns="http://www.w3.org/2000/svg" width="23" height="23" viewBox="0 0 24 24" fill="none" class="md:h-6 md:w-6 fill-black" aria-hidden="true"> 5884<g clip-path="url(#clip0_3674_354)"> 5885<path d="M12 2.46H11.85C11.2983 2.53204 10.7725 2.73718 10.3178 3.05774C9.86308 3.37829 9.49318 3.80463 9.23997 4.3V4.39H14.89V4.3C14.6337 3.80394 14.2601 3.37796 13.8018 3.05904C13.3435 2.74013 12.8142 2.53793 12.26 2.47L12 2.46ZM6.37998 6.87H4.17998V21.52H19.87V6.87H17.67V8C17.6619 8.30061 17.5449 8.58805 17.3407 8.8088C17.1365 9.02956 16.859 9.16858 16.56 9.2H16.44C16.1309 9.20145 15.8324 9.08741 15.603 8.88023C15.3736 8.67304 15.2299 8.38765 15.2 8.08V6.87H8.84998V8C8.84163 8.30217 8.7232 8.59087 8.51696 8.81185C8.31071 9.03283 8.03084 9.17087 7.72998 9.2H7.60998C7.3026 9.19897 7.00657 9.08381 6.7793 8.87686C6.55203 8.66992 6.40972 8.38593 6.37998 8.08V6.87ZM12 3.6104e-06C13.2319 -0.00139732 14.4297 0.404937 15.4065 1.15564C16.3833 1.90633 17.0843 2.95919 17.4 4.15L17.46 4.4H20.31C20.7968 4.39555 21.2685 4.56881 21.6367 4.88729C22.0049 5.20578 22.2443 5.64763 22.31 6.13V6.27V22C22.3111 22.5087 22.1183 22.9986 21.7709 23.3702C21.4235 23.7417 20.9476 23.9669 20.44 24H3.71998C3.21132 24.0011 2.72136 23.8083 2.34981 23.4609C1.97826 23.1135 1.75304 22.6376 1.71998 22.13V6.41C1.7189 5.90134 1.91168 5.41139 2.25908 5.03984C2.60647 4.66829 3.08239 4.44307 3.58998 4.41H6.58998C6.85051 3.24648 7.47626 2.19674 8.37581 1.41413C9.27536 0.631514 10.4016 0.157037 11.59 0.0600036H12V3.6104e-06Z" fill="currentColor"/> 5886</g> 5887<defs> 5888<clipPath id="clip0_3674_354"> 5889<rect width="24" height="24" fill="white"/> 5890</clipPath> 5891</defs> 5892</svg>
5893 <span 5894 x-text="cart.summary_count" 5895 x-show="!isCartEmpty()" 5896 x-cloak 5897 class="text-xxs text-center font-bold absolute top-1 left-3.5 rounded-full bg-cherryRed text-white w-3.5 md:w-4 h-3.5 md:h-4 p-1 flex items-center justify-center" 5898 aria-hidden="true" 5899 ></span> 5900 </div> 5901 <p aria-hidden="true" class="hidden lg:block text-xxs font-bold">Shopping Cart</p> 5902 </button> 5903 </div> 5904 </div> 5905 5906 <!--Cart Drawer--> 5907
5907<script> 5908 function initCartDrawer() { 5909 return { 5910 open: false, 5911 isLoading: false, 5912 cart: {}, 5913 maxItemsToDisplay: 10, 5914 currencyCode: 'EUR', 5915 itemsCount: 0, 5916 getData(data) { 5917 if (data.cart) { 5918 this.cart = data.cart; 5919 this.itemsCount = data.cart.items && data.cart.items.length || 0; 5920 this.setCartItems(); 5921 } 5922 this.isLoading = false; 5923 }, 5924 cartItems: [], 5925 getItemCountTitle() { 5926 const visibleItemCount = this.maxItemsToDisplay > 0 5927 ? Math.min(this.maxItemsToDisplay, this.itemsCount) 5928 : this.itemsCount; 5929 const itemCountLabel = visibleItemCount === 1 5930 ? '\u0028\u00250\u0020product\u0029' 5931 : '\u0028\u00250\u0020products\u0029'; 5932 5933 return hyva.strf(itemCountLabel, visibleItemCount); 5934 }, 5935 setCartItems() { 5936 this.cartItems = this.cart.items && this.cart.items.sort((a, b) => b.item_id - a.item_id) || []; 5937 5938 if (this.maxItemsToDisplay > 0) { 5939 this.cartItems = this.cartItems.slice(0, parseInt(this.maxItemsToDisplay, 10)); 5940 } 5941 }, 5942 trackRemoveFromCart(items) { 5943 window.dispatchEvent(new CustomEvent('steiff-gtm-remove-from-sidebar-cart', { 5944 detail: { items: items || [], currencyCode: this.currencyCode }, 5945 bubbles: true 5946 })); 5947 }, 5948 deleteItemFromCart(itemId) { 5949 this.isLoading = true; 5950 5951 const itemData = this.cart.items.filter((item) => item['item_id'] === itemId); 5952 const formKey = hyva.getFormKey(); 5953 const postUrl = BASE_URL + 'checkout/sidebar/removeItem/'; 5954 5955 fetch(postUrl, { 5956 "headers": { 5957 "content-type": "application/x-www-form-urlencoded; charset=UTF-8", 5958 }, 5959 "body": "form_key=" + formKey + "&item_id=" + itemId, 5960 "method": "POST", 5961 "mode": "cors", 5962 "credentials": "include" 5963 }).then(response => { 5964 if (response.redirected) { 5965 window.location.href = response.url; 5966 } else if (response.ok) { 5967 return response.json(); 5968 } else { 5969 window.dispatchMessages && window.dispatchMessages([{ 5970 type: 'warning', 5971 text: 'Could\u0020not\u0020remove\u0020item\u0020from\u0020quote.' 5972 }]); 5973 this.isLoading = false; 5974 } 5975 }).then(result => { 5976 window.dispatchMessages && window.dispatchMessages([{ 5977 type: result.success ? 'success' : 'error', 5978 text: result.success 5979 ? 'You\u0020removed\u0020the\u0020item.' 5980 : result.error_message 5981 }], result.success ? 5000 : 0); 5982 5983 if (result.success && itemData.length) { 5984 this.trackRemoveFromCart(itemData); 5985 } 5986 5987 window.dispatchEvent(new CustomEvent('reload-customer-section-data')); 5988 }); 5989 }, 5990 scrollLock(use = true) { 5991 document.body.style.overflow = use ? "hidden" : ""; 5992 }, 5993 toggleCartDrawer(event) { 5994 if (event.detail && event.detail.isOpen !== undefined) { 5995 if (event.detail.isOpen) { 5996 this.openCartDrawer(); 5997 } else { 5998 this.open = false; 5999 this.scrollLock(false); 6000 this.$refs && this.$refs.cartDialogContent && hyva.releaseFocus(this.$refs.cartDialogContent); 6001 } 6002 } else { 6003 this.openCartDrawer() 6004 } 6005 }, 6006 openCartDrawer() { 6007 this.open = true; 6008 this.scrollLock(true); 6009 this.$nextTick(() => { 6010 this.$refs && this.$refs.cartDialogContent && hyva.trapFocus(this.$refs.cartDialogContent) 6011 }) 6012 }, 6013 closeCartDrawer() { 6014 this.$dispatch('toggle-cart', { isOpen: false }) 6015 }, 6016 getSectionDataExtraActions() { 6017 if (!this.cart.extra_actions) { 6018 return ''; 6019 } 6020 6021 const contentNode = document.createElement('div'); 6022 contentNode.innerHTML = this.cart.extra_actions; 6023 6024 hyva.activateScripts(contentNode); 6025 6026 return contentNode.innerHTML; 6027 } 6028 } 6029 } 6030</script>
6030 6031<section x-cloak 6032 x-show="cart" 6033 id="cart-drawer" 6034 x-data="initCartDrawer()" 6035 @private-content-loaded.window="getData($event.detail.data)" 6036 @toggle-cart.window="toggleCartDrawer($event)" 6037 @keydown.escape="closeCartDrawer" 6038> 6039 <div role="dialog" 6040 aria-labelledby="cart-drawer-title" 6041 aria-modal="true" 6042 :aria-hidden="!open" 6043 class="fixed inset-y-0 right-0 z-30 flex max-w-full"> 6044 <div class="backdrop" 6045 x-show="open" 6046 x-transition:enter="ease-in-out duration-500" 6047 x-transition:enter-start="opacity-0" 6048 x-transition:enter-end="opacity-100" 6049 x-transition:leave="ease-in-out duration-500" 6050 x-transition:leave-start="opacity-100" 6051 x-transition:leave-end="opacity-0" 6052 role="button" 6053 @click="closeCartDrawer" 6054 aria-label="Close minicart"></div> 6055 <div class="relative w-screen max-w-md shadow-2xl" 6056 x-show="open" 6057 x-transition:enter="transform transition ease-in-out duration-500 sm:duration-700" 6058 x-transition:enter-start="translate-x-full" 6059 x-transition:enter-end="translate-x-0" 6060 x-transition:leave="transform transition ease-in-out duration-500 sm:duration-700" 6061 x-transition:leave-start="translate-x-0" 6062 x-transition:leave-end="translate-x-full" 6063 x-ref="cartDialogContent" 6064 role="region" 6065 :tabindex="open ? 0 : -1" 6066 aria-label="Shopping Cart" 6067 6068 > 6069 <div class="flex flex-col h-full max-h-screen bg-white text-black shadow-xl"> 6070 6071 <header class="relative p-4 md:py-6 sm:px-6 border-b"> 6072 <p id="cart-drawer-title" class="text-2xl font-medium leading-7"> 6073 <strong>Shopping Cart</strong> 6074 <template x-if="itemsCount"> 6075 <span class="items-total text-lg font-bold text-gray-medium" 6076 x-text="getItemCountTitle()"> 6077 </span> 6078 </template> 6079 </p> 6080 </header> 6081 6082 6083 <template x-if="!itemsCount"> 6084 <div class="relative px-4 py-6 bg-white sm:px-6 border-smokeWhite"> 6085 <p class="mb-4 text-base text-center">Your cart is empty</p> 6086 <p class="mb-4 text-base text-center">Are you missing something in your cart?</p> 6087 <template x-if="!isLoggedIn"> 6088 <a 6089 href="https://www.steiff.com/en/customer/account/login/" 6090 class="inline-flex btn btn-primary w-full text-base" 6091 aria-label="Go to login page" 6092 > 6093 Log in </a> 6094 </template> 6095 </div> 6096 </template> 6097 6098 <template x-if="itemsCount"> 6099 <div class="relative grid gap-6 sm:gap-8 px-1 py-3 sm:px-3 bg-white overflow-y-auto overscroll-y-contain"> 6100 <template x-for="(item, index) in cartItems"> 6101 <div class="flex items-start p-3 space-x-4 transition duration-150 ease-in-out" :class="{'border-b': index !== cartItems.length - 1}"> 6102 <a :href="item.product_url" 6103 :class="{ 'w-1/4 !ml-0': !item.is_visible_in_site_visibility }" 6104 :aria-label="hyva.strf('Go\u0020to\u0020product\u0020page', item.product_name)" 6105 > 6106 <img 6107 :src="item.product_image.src" 6108 :width="item.product_image.width" 6109 :height="item.product_image.height" 6110 loading="lazy" 6111 :alt="item.product_name" 6112 /> 6113 </a> 6114 <div class="w-3/4 space-y-2"> 6115 <div> 6116 <a :href="item.product_url" 6117 class="w-1/4 !ml-0 font-bold hover:underline text-base" 6118 :aria-label="hyva.strf('Go\u0020to\u0020product\u
61180020page', item.product_name)" 6119 > 6120 <span x-html="item.product_name"></span> 6121 </a> 6122 6123 <p class="font-bold text-base"> <span class="font-bold">Item number:</span> <span x-html="item.product_sku"></span></p> 6124 6125 <template x-if="item.steiff_cart_color"> 6126 <p class="text-base my-1.5 text-gray-medium"> 6127 Colour <span class="font-bold text-black" x-html="item.steiff_cart_color"></span> 6128 </p> 6129 </template> 6130 <template x-if="item.steiff_cart_size"> 6131 <p class="text-base my-1.5 text-gray-medium"> 6132 Size <span class="font-bold text-black" x-html="item.steiff_cart_size"></span> 6133 </p> 6134 </template> 6135 <template x-if="item.options && item.options.length"> 6136 <template x-for="(option, optionIndex) in item.options" :key="optionIndex"> 6137 <p class="text-base my-1.5 text-gray-medium"> 6138 <span x-text="option.label"></span> 6139 <span class="font-bold text-black" x-html="option.value"></span> 6140 </p> 6141 </template> 6142 </template> 6143 <p class="text-base my-1.5 text-gray-medium"> Quantity <span class="font-bold text-black" x-html="item.qty"></span></p> 6144 6145 </div> 6146 6147 6148 <div class="flex justify-end items-end flex-col"> 6149 <div class="flex flex-row gap-2 justify-end items-center"> 6150 <template x-if="item.regular_price"> 6151 <span class="inline-flex items-center"> 6152 <span class="sr-only"> 6153 Regular Price: 6154 </span> 6155 <span class="text-base line-through" x-html="item.regular_price"></span> 6156 <span class="sr-only"> 6157 Special Price: 6158 </span> 6159 </span> 6160 </template> 6161 <span 6162 class="text-2xl" 6163 :class="{ 'special-price': !!item.regular_price }" 6164 x-html="item.product_price" 6165 ></span> 6166 </div> 6167 <span class="font-bold text-xs text-gray-dark -mt-2 justify-end">incl. VAT</span> 6168 </div> 6169 6170 <div class="pt-2 flex justify-between"> 6171 <a href="https://www.steiff.com/en/checkout/cart/" 6172 x-show="item.product_type !== 'grouped' && item.is_visible_in_site_visibility" 6173 class="inline-flex mr-2 underline hover:no-underline text-base" 6174 :aria-label="'Edit ' + item.product_name" 6175 > 6176 Edit </a> 6177 <button type="button" 6178 class="inline-flex underline hover:no-underline hover:cursor-pointer text-base" 6179 @click="deleteItemFromCart(item.item_id)" 6180 :aria-label="'Remove ' + item.product_name" 6181 > 6182 Remove </button> 6183 </div> 6184 </div> 6185 </div> 6186 </template> 6187 </div> 6188 </template> 6189 6190 <template x-if="itemsCount"> 6191 <div> 6192 6193 <div class="relative grid md:gap-4 gap-2 py-3 px-1 sm:px-3 bg-white border-t"> 6194 <div class="w-full p-3 space-x-4 transition duration-150 ease-in-out flex justify-between items-start"> 6195 <p class="font-bold">Subtotal:</p>
6196 <span class="flex flex-col justify-end items-end w-full"> 6197 <span class="text-2xl" x-html="cart.subtotal"></span> 6198 6199 <span class="font-bold text-xs text-gray-dark text-right">incl. VAT</span> 6200 </span> 6201 </div> 6202 <div class="w-full p-3 space-x-4 transition duration-150 ease-in-out"> 6203 <a class="inline-flex btn btn-primary w-full text-base" href="https://www.steiff.com/en/checkout/cart/" 6204 aria-label="Go to cart page" 6205 > 6206 Shopping Cart </a> 6207 </div> 6208 6209 6210 <div x-html="getSectionDataExtraActions()"></div> 6211 </div> 6212 </div> 6213 </template> 6214 6215 </div> 6216 6217 <button 6218 type="button" 6219 @click="closeCartDrawer" 6220 aria-label="Close minicart" 6221 class="absolute top-0 right-2 p-4 mt-1 md:mt-2 transition-colors" 6222 > 6223 <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"> 6224 <path stroke-linecap="round" stroke-linejoin="round" d="M6 18L18 6M6 6l12 12"/> 6225</svg> 6226 </button> 6227 </div> 6228 <div 6229 class="z-50 fixed inset-0 grid place-items-center bg-white/70 text-slate-800" 6230 x-cloak 6231 x-show="isLoading" 6232 x-transition.opacity.duration.200ms 6233> 6234 <div class="flex gap-10 items-center p-4"> 6235 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 57 57" width="57" height="57" fill="none" stroke="currentColor" stroke-width="2" aria-hidden="true"> 6236 <style> 6237 @keyframes spinner-ball-triangle1 { 6238 0% { transform: translate(0%, 0%); } 6239 33% { transform: translate(38%, -79%); } 6240 66% { transform: translate(77%, 0%); } 6241 100% { transform: translate(0%, 0%); } 6242 } 6243 6244 @keyframes spinner-ball-triangle2 { 6245 0% { transform: translate(0%, 0%); } 6246 33% { transform: translate(38%, 79%); } 6247 66% { transform: translate(-38%, 79%); } 6248 100% { transform: translate(0%, 0%); } 6249 } 6250 6251 @keyframes spinner-ball-triangle3 { 6252 0% { transform: translate(0%, 0%); } 6253 33% { transform: translate(-77%, 0%); } 6254 66% { transform: translate(-38%, -79%); } 6255 100% { transform: translate(0%, 0%); } 6256 } 6257 </style> 6258 <circle cx="5" cy="50" r="5" style="animation: spinner-ball-triangle1 2.2s linear infinite"/> 6259 <circle cx="27" cy="5" r="5" style="animation: spinner-ball-triangle2 2.2s linear infinite"/> 6260 <circle cx="49" cy="50" r="5" style="animation: spinner-ball-triangle3 2.2s linear infinite"/> 6261</svg> 6262 <span class="text-xl select-none"> 6263 Loading... </span> 6264 </div> 6265</div> 6266 </div> 6267 6268</section> 6269 6270 <!--Search Drawer--> 6271 6272
6272<script> 6273 function initAuthentication() { 6274 return { 6275 open: false, 6276 close() { 6277 this.open = false; 6278 }, 6279 forceAuthentication: false, 6280 checkoutUrl: 'https://www.steiff.com/en/checkout/index/', 6281 errors: 0, 6282 hasCaptchaToken: 0, 6283 displayErrorMessage: false, 6284 errorMessages: [], 6285 setErrorMessages(message) { 6286 this.errorMessages = [message]; 6287 this.displayErrorMessage = true; 6288 }, 6289 submitForm() { 6290 window.steiffTrackLogin?.(); 6291 // Do not rename $form, the variable is expected to be declared in the recaptcha output 6292 const $form = document.querySelector('#login-form'); 6293 if (!this.hasCaptchaToken) { 6294 this.errors = 1; 6295 6296 6297 const executeGreCaptcha = () => { 6298 grecaptcha.ready(() => { 6299 grecaptcha.execute( 6300 '6LfIe4EpAAAAALE75oNaaOgTw2G3VadtzHYrJItg', 6301 {action: 'customer_login'} 6302 ).then((token) => { 6303 const tokenElement = $form['g\u002Drecaptcha\u002Dresponse']; 6304 6305 if (tokenElement && token && token.length > 0) { 6306 $form['g\u002Drecaptcha\u002Dresponse'].value = token; 6307 this.errors = 0; 6308 this.hasCaptchaToken = 1; 6309 if (typeof this.submitForm === 'function') { 6310 this.submitForm(); 6311 } else { 6312 HTMLFormElement.prototype.submit.call($form); 6313 } 6314 } else { 6315 this.errors = 1; 6316 const error = tokenElement 6317 ? 'ReCaptcha\u0020validation\u0020failed,\u0020please\u0020try\u0020again' 6318 : 'ReCaptcha\u0020token\u0020element\u0020is\u0020missing.\u0020Please\u0020refresh\u0020the\u0020page\u0020and\u0020trying\u0020again.'; 6319 if (this.setErrorMessages) { 6320 this.setErrorMessages([error]) 6321 this.displayErrorMessage = true; 6322 } else { 6323 window.dispatchMessages && window.dispatchMessages([{type: "error", text: error}], 5000); 6324 } 6325 } 6326 }).catch(exception => { 6327 console.error(exception || `An unknown error occurred during ReCaptcha validation. Are the tokens and the domain correctly set up in the Google console?`) 6328 }); 6329 }) 6330 } 6331 6332 if (window.grecaptcha) { 6333 executeGreCaptcha(); 6334 } else { 6335 const recaptchaUrl = "https://www.google.com/recaptcha/api.js?render=6LfIe4EpAAAAALE75oNaaOgTw2G3VadtzHYrJItg"; 6336 const script = document.createElement('script'); 6337 script.setAttribute('type', 'text/javascript'); 6338 script.setAttribute('src', recaptchaUrl); 6339 document.head.appendChild(script); 6340 6341 script.addEventListener("load", executeGreCaptcha, false); 6342 } 6343 } 6344 6345 if (this.errors === 0) { 6346 this.dispatchLoginRequest($form); 6347 } 6348 }, 6349 onPrivateContentLoaded() { 6350 const data = this.$event.detail.data; 6351 const isLoggedIn = data.customer && data.customer.firstname; 6352 if (data.cart && !isLoggedIn) { 6353 this.forceAuthentication = !data.cart.isGuestCheckoutAllowed; 6354 } 6355 }, 6356 redirectIfAuthenticated() { 6357 const event = this.$event; 6358 this.open = this.forceAuthentication; 6359 6360 if (event.detail && event.detail.url) { 6361 this.checkoutUrl = event.detail.url; 6362 } 6363 if (!this.forceAuthentication) { 6364 window.location.href = this.checkoutUrl; 6365 } 6366 }, 6367 resetErrors() { 6368 this.errors = 0; 6369 }, 6370 dispatchLoginRequest(form) { 6371 this.isLoading = true; 6372 const username = this.$refs['customer-email'].value; 6373 const password = this.$refs['customer-password'].value; 6374 const formKey = hyva.getFormKey(); 6375 const bodyFields = { 6376 'username': username, 6377 'password': password, 6378 'formKey': formKey 6379 }; 6380 const fieldName = 'g\u002Drecaptcha\u002Dresponse'; 6381 const recaptchaField = fieldName && form[fieldName]; 6382 if (recaptchaField) { 6383 bodyFields[fieldName] = recaptchaField.value; 6384 } 6385 fetch('https://www.steiff.com/en/customer/ajax/login/', { 6386 method: 'POST', 6387 headers: { 6388 'Content-Type': 'application/json', 6389 'X-Requested-With': 'XMLHttpRequest' 6390 }, 6391 body: JSON.stringify(bodyFields) 6392 } 6393 ).then(response => { 6394 return response.json() 6395 } 6396 ).then(data => { 6397 this.isLoading = false;
6398 if (data.errors) { 6399 this.setErrorMessages(data.message); 6400 this.errors = 1; 6401 this.hasCaptchaToken = 0; 6402 } else { 6403 window.location.href = this.checkoutUrl; 6404 } 6405 }); 6406 } 6407 } 6408 } 6409 6410 window.addEventListener('alpine:init', () => Alpine.data('initAuthentication', initAuthentication), {once: true}) 6411</script>
6411 6412<section id="authentication-popup" 6413 x-data="initAuthentication" 6414 @private-content-loaded.window="onPrivateContentLoaded" 6415 @toggle-authentication.window="redirectIfAuthenticated" 6416 @keydown.window.escape="close" 6417> 6418 <div 6419 class="backdrop" 6420 aria-hidden="true" 6421 x-cloak 6422 x-show="open" 6423 x-transition:enter="ease-in-out duration-500" 6424 x-transition:enter-start="opacity-0" 6425 x-transition:enter-end="opacity-100" 6426 x-transition:leave="ease-in-out duration-500" 6427 x-transition:leave-start="opacity-100" 6428 x-transition:leave-end="opacity-0" 6429 @click="close" 6430 ></div> 6431 <div role="dialog" 6432 aria-modal="true" 6433 @click.outside="close" 6434 class="inset-y-0 right-0 z-30 flex max-w-full fixed" 6435 x-cloak 6436 x-show="open" 6437 > 6438 <div class="relative w-screen max-w-md pt-16 bg-white" 6439 x-show="open" 6440 x-cloak 6441 x-transition:enter="transform transition ease-in-out duration-500 sm:duration-700" 6442 x-transition:enter-start="translate-x-full" 6443 x-transition:enter-end="translate-x-0" 6444 x-transition:leave="transform transition ease-in-out duration-500 sm:duration-700" 6445 x-transition:leave-start="translate-x-0" 6446 x-transition:leave-end="translate-x-full" 6447 > 6448 <div 6449 x-show="open" 6450 x-cloak 6451 x-transition:enter="ease-in-out duration-500" 6452 x-transition:enter-start="opacity-0" 6453 x-transition:enter-end="opacity-100" 6454 x-transition:leave="ease-in-out duration-500" 6455 x-transition:leave-start="opacity-100" 6456 x-transition:leave-end="opacity-0" class="absolute top-0 right-2 flex p-2 mt-2"> 6457 <button 6458 type="button" 6459 @click="close" 6460 aria-label="Close panel" 6461 class="p-2 text-gray-dark transition duration-150 ease-in-out hover:text-black" 6462 > 6463 <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"> 6464 <path stroke-linecap="round" stroke-linejoin="round" d="M6 18L18 6M6 6l12 12"/> 6465</svg> 6466 </button> 6467 </div> 6468 <template x-if="open"> 6469 <div class="flex flex-col h-full py-6 space-y-6 bg-white shadow-xl overflow-y-auto"> 6470 <div class="mx-4"> 6471 <div class="message error mb-0" x-show="errors" x-cloak> 6472 <template x-for="(message, index) in errorMessages" :key="index"> 6473 <div> 6474 <template x-if="message"> 6475 <span x-html="message"></span> 6476 </template> 6477 </div> 6478 </template> 6479 </div> 6480 </div> 6481 <div class="block-customer-login border-smokeWhite border border-smokeWhite mx-4 p-4 shadow-sm"> 6482 <p id="authenticate-customer-login" class="text-lg leading-7 text-gray-dark"> 6483 <strong class="font-medium">Checkout using your account</strong> 6484 </p> 6485 6486 <form class="form form-login" 6487 method="post" 6488 @submit.prevent="submitForm" 6489 id="login-form" 6490 > 6491 <div class="control"> 6492 <input type="hidden" 6493 value="" 6494 name="g-recaptcha-response" 6495 /> 6496</div> 6497 <div class="fieldset login"> 6498 <div class="field email required"> 6499 <label class="label" for="form-login-username" form="login-form" >
6500 <span>Email Address</span> 6501 </label> 6502 <div class="control"> 6503 <input name="username" 6504 id="form-login-username" 6505 x-ref="customer-email" 6506 @change="resetErrors" 6507 type="email" 6508 required 6509 autocomplete="off" 6510 class="form-input" 6511 > 6512 </div> 6513 </div> 6514 <div class="field password required"> 6515 <label for="form-login-password" class="label" form="login-form"> 6516 <span>Password</span> 6517 </label> 6518 <div class="control"> 6519 <input name="password" 6520 id="form-login-password" 6521 type="password" 6522 class="form-input" 6523 required 6524 x-ref="customer-password" 6525 autocomplete="off" 6526 @change="resetErrors" 6527 > 6528 </div> 6529 </div> 6530 6531 <input name="context" type="hidden" value="checkout" /> 6532 <div class="actions-toolbar pt-6 pb-2"> 6533 <button type="submit" class="inline-flex btn btn-primary disabled:opacity-75" 6534 > 6535 Sign In </button> 6536 <a href="https://www.steiff.com/en/customer/account/forgotpassword/" 6537 > 6538 Forgot Your Password? </a> 6539 </div> 6540 6541 </div> 6542 </form> 6543 </div> 6544 <div class="mx-4"> 6545 <p class="my-4 text-sm text-gray-dark [&_a]:text-cherryRed [&_a]:underline [&_a:hover]:no-underline"> 6546This form is protected by reCAPTCHA - the <a href="https://policies.google.com/privacy" target="_blank" rel="noopener">Google Privacy Policy</a> and <a href="https://policies.google.com/terms" target="_blank" rel="noopener">Terms of Service</a> apply.</p> 6547 </div> 6548 <div class="block-new-customer border-smokeWhite border border-smokeWhite mx-4 p-4 shadow-sm"> 6549 <p id="authenticate-new-customer" class="text-lg mb-2 leading-7 text-gray-dark"> 6550 <strong class="font-medium">Checkout as a new customer</strong> 6551 </p> 6552 6553 <div class="block-content"> 6554 <p class="mb-1"> 6555 Creating an account has many benefits: </p> 6556 <ul class="list-disc pl-5"> 6557 <li> See order and shipping status</li> 6558 <li> Track order history</li> 6559 <li> Check out faster</li> 6560 </ul> 6561 <div class="actions-toolbar mt-6 mb-2"> 6562 <a href="https://www.steiff.com/en/customer/account/create/" 6563 class="inline-flex btn btn-primary"> 6564 Create an Account </a> 6565 </div> 6566 </div> 6567 </div> 6568 </div> 6569 </template> 6570 </div> 6571 </div> 6572</section> 6573</div>
6574<script> 6575 function initSearchDrawer() { 6576 return { 6577 open: false, 6578 searchResults: [], 6579 getData(data) { 6580 // Handle any data updates if needed 6581 }, 6582 scrollLock(use = true) { 6583 document.body.style.overflow = use ? "hidden" : ""; 6584 }, 6585 toggleSearchDrawer(event) { 6586 if (event.detail && event.detail.isOpen !== undefined) { 6587 if (event.detail.isOpen) { 6588 this.openSearchDrawer(); 6589 } else { 6590 this.open = false; 6591 this.scrollLock(false); 6592 this.$refs && this.$refs.searchDialogContent && hyva.releaseFocus(this.$refs.searchDialogContent); 6593 } 6594 } else { 6595 this.openSearchDrawer() 6596 } 6597 }, 6598 openSearchDrawer() { 6599 this.open = true; 6600 this.scrollLock(true); 6601 this.$nextTick(() => { 6602 this.$refs && this.$refs.searchDialogContent && hyva.trapFocus(this.$refs.searchDialogContent); 6603 }) 6604 }, 6605 closeSearchDrawer() { 6606 this.$dispatch('toggle-search', { isOpen: false }) 6607 6608 this.$dispatch('clear-search-form'); 6609 6610 this.$nextTick(() => { 6611 const searchIcon = document.querySelector('#menu-search-icon'); 6612 if (searchIcon) { 6613 searchIcon.focus(); 6614 } 6615 }); 6616 }, 6617 } 6618 } 6619</script>
6619 6620<section x-cloak 6621 x-show="open" 6622 id="search-drawer" 6623 x-data="initSearchDrawer()" 6624 @private-content-loaded.window="getData($event.detail.data)" 6625 @toggle-search.window="toggleSearchDrawer($event)" 6626 @keydown.escape="closeSearchDrawer" 6627> 6628 <div role="dialog" 6629 aria-labelledby="search-drawer-title" 6630 aria-modal="true" 6631 :aria-hidden="!open" 6632 class="fixed inset-y-0 right-0 z-30 flex max-w-full"> 6633 <div class="backdrop" 6634 x-show="open" 6635 x-transition:enter="ease-in-out duration-500" 6636 x-transition:enter-start="opacity-0" 6637 x-transition:enter-end="opacity-100" 6638 x-transition:leave="ease-in-out duration-500" 6639 x-transition:leave-start="opacity-100" 6640 x-transition:leave-end="opacity-0" 6641 role="button" 6642 @click="closeSearchDrawer" 6643 aria-label="Close search drawer"></div> 6644 <div class="relative w-screen max-w-md shadow-2xl" 6645 x-show="open" 6646 x-transition:enter="transform transition ease-in-out duration-500 sm:duration-700" 6647 x-transition:enter-start="translate-x-full" 6648 x-transition:enter-end="translate-x-0" 6649 x-transition:leave="transform transition ease-in-out duration-500 sm:duration-700" 6650 x-transition:leave-start="translate-x-0" 6651 x-transition:leave-end="translate-x-full" 6652 x-ref="searchDialogContent" 6653 role="region" 6654 :tabindex="open ? 0 : -1" 6655 aria-label="Search Drawer" 6656 6657 > 6658 <div class="flex flex-col h-full max-h-screen bg-white text-black shadow-xl"> 6659 6660 <header class="relative p-4 md:py-6 sm:px-6 border-b"> 6661 <p id="search-drawer-title" class="text-3xl font-bold leading-7"> 6662 Search </p> 6663 </header> 6664 6665 <!-- Search Form Content --> 6666 <div class="flex-1 overflow-y-auto px-4 py-6 md:p-6"> 6667
6668<script> 6669 function initMiniSearchMobileComponent() { 6670 "use strict"; 6671 6672 return { 6673 show: false, 6674 noResults: false, 6675 searchQuery: '', 6676 formSelector: "#search_mini_form_mobile", 6677 url: "https://www.steiff.com/en/search/ajax/suggest/", 6678 searchResultsUrl: "https://www.steiff.com/en/catalogsearch/result/", 6679 destinationSelector: "#search_autocomplete_mobile", 6680 templates: null, 6681 priceFormat: {"pattern":"\u20ac%s","precision":2,"requiredPrecision":2,"decimalSymbol":".","groupSymbol":",","groupLength":3,"integerRequired":false}, 6682 minSearchLength: 2, 6683 searchResultsByType: {}, 6684 currentRequest: null, 6685 countUrl: "https://www.steiff.com/en/steiffsearch/ajax/count/", 6686 currentCountRequest: null, 6687 fullResultCount: 0, 6688 fullResultUrl: '', 6689 loginUrl: 'https\u003A\u002F\u002Fwww.steiff.com\u002Fen\u002Fcustomer\u002Faccount\u002Flogin\u002F', 6690 addToWishlist(productId, productDisplayName) { 6691 if (!productId) { 6692 return; 6693 } 6694 if (typeof window.steiffPersistPendingWishlistProduct === 'function') { 6695 window.steiffPersistPendingWishlistProduct(String(productId)); 6696 } 6697 try { 6698 sessionStorage.setItem( 6699 window.STEIFF_WISHLIST_LOGIN_NOTICE_KEY || 'steiff_wishlist_login_notice', 6700 '1' 6701 ); 6702 } catch (_e) {} 6703 window.location.href = this.loginUrl; 6704 }, 6705 6706 find: function(results, type) { 6707 return results[type] || []; 6708 }, 6709 6710 /** 6711 * Get search results. 6712 */ 6713 getSearchResults: function () { 6714 6715 this.searchQuery = document.querySelector('#search-mobile').value.trim(); 6716 6717 if (this.searchQuery.length < parseInt(this.minSearchLength, 10)) { 6718 this.searchResultsByType = {}; 6719 this.show = false; 6720 this.noResults = false; 6721 this.fullResultCount = 0; 6722 this.fullResultUrl = ''; 6723 return false; 6724 } 6725 6726 let url = this.url + '?' + new URLSearchParams({ 6727 q: this.searchQuery, 6728 _: Date.now() 6729 }).toString(); 6730 6731 if (this.currentRequest !== null) { 6732 this.currentRequest.abort(); 6733 } 6734 this.currentRequest = new AbortController(); 6735 6736 fetch(url, { 6737 method: 'GET', 6738 signal: this.currentRequest.signal, 6739 }).then((response) => { 6740 if (response.ok) { 6741 return response.json(); 6742 } 6743 throw new Error('Network response was not ok'); 6744 }).then((data) => { 6745 if (data && data.length > 0) { 6746 this.searchResultsByType = data.reduce((acc, result) => { 6747 if (!acc[result.type]) acc[result.type] = []; 6748 acc[result.type].push(result); 6749 return acc; 6750 }, {}); 6751 this.show = true; 6752 this.noResults = false; 6753 this.fullResultCount = 0; 6754 } else { 6755 // No inline suggestions: the autocomplete container can miss 6756 // spellcheck-corrected matches the full search would find, so ask 6757 // the real search before declaring "no results". 6758 this.searchResultsByType = {}; 6759 this.show = false; 6760 this.noResults = false; 6761 this.checkFullSearchResults(); 6762 } 6763 }).catch((error) => { 6764 if (error.name !== 'AbortError') { 6765 6766 this.searchResultsByType = {}; 6767 this.show = false;
6768 this.noResults = false; 6769 this.fullResultCount = 0; 6770 } 6771 }); 6772 }, 6773 6774 /** 6775 * When the autocomplete returns no suggestions, ask the full search how many 6776 * results it really has. If there are results, offer the result page instead of 6777 * the misleading "no results" message; only a genuine zero shows the empty state. 6778 */ 6779 checkFullSearchResults: function () { 6780 const query = this.searchQuery; 6781 6782 if (this.currentCountRequest !== null) { 6783 this.currentCountRequest.abort(); 6784 } 6785 this.currentCountRequest = new AbortController(); 6786 6787 const countRequestUrl = this.countUrl + '?' + new URLSearchParams({ 6788 q: query, 6789 _: Date.now() 6790 }).toString(); 6791 6792 fetch(countRequestUrl, { 6793 method: 'GET', 6794 signal: this.currentCountRequest.signal, 6795 }).then((response) => { 6796 if (response.ok) { 6797 return response.json(); 6798 } 6799 throw new Error('Network response was not ok'); 6800 }).then((data) => { 6801 if (this.searchQuery !== query) { 6802 return; 6803 } 6804 this.fullResultCount = data && data.count ? parseInt(data.count, 10) : 0; 6805 this.fullResultUrl = data && data.resultUrl ? data.resultUrl : ''; 6806 this.noResults = this.fullResultCount === 0; 6807 }).catch((error) => { 6808 if (error.name === 'AbortError') { 6809 return; 6810 } 6811 this.fullResultCount = 0; 6812 this.noResults = true; 6813 }); 6814 }, 6815 6816 getFullResultsMessage: function() { 6817 return 'Show\u0020all\u0020\u00251\u0020results\u0020for\u0020\u0022\u00252\u0022' 6818 .replace('%1', this.fullResultCount) 6819 .replace('%2', this.searchQuery); 6820 }, 6821 6822 clearSearch: function () { 6823 this.searchQuery = ''; 6824 document.querySelector('#search-mobile').value = ''; 6825 this.searchResultsByType = {}; 6826 this.show = false; 6827 this.noResults = false; 6828 this.fullResultCount = 0; 6829 this.fullResultUrl = ''; 6830 }, 6831 6832 cleanup: function () { 6833 if (this.currentRequest !== null) { 6834 this.currentRequest.abort(); 6835 this.currentRequest = null; 6836 } 6837 if (this.currentCountRequest !== null) { 6838 this.currentCountRequest.abort(); 6839 this.currentCountRequest = null; 6840 } 6841 }, 6842 6843 getNoResultsMessage: function() { 6844 return 'Oh\u0020no\u0021\u0020Unfortunately,\u0020the\u0020search\u0020for\u0020\u0022\u00251\u0022\u0020didn\u0027t\u0020yield\u0020any\u0020results.'.replace('%1', this.searchQuery); 6845 }, 6846 6847 }; 6848 } 6849</script>
6849 6850<div id="elasticsuite-search-container-mobile" x-show="true"> 6851 <div class="container px-0 text-black" 6852 x-data="initMiniSearchMobileComponent()" 6853 @search-wishlist-guest-add="addToWishlist($event.detail.productId, $event.detail.productName)" @beforeunload="cleanup()" 6854 @clear-search-form.window="clearSearch()"> 6855 <form class="form minisearch" id="search_mini_form_mobile" action="https://www.steiff.com/en/catalogsearch/result/" method="get" role="search"> 6856 <div class="relative"> 6857 <label class="sr-only" for="search-mobile"> 6858 Search </label> 6859 <input id="search-mobile" 6860 x-model="searchQuery" 6861 x-on:input.debounce="getSearchResults()" 6862 x-ref="searchInput" 6863 type="search" 6864 placeholder="Add your search term here" 6865 class="w-full pl-8 pr-2 pt-0 pb-0 border-gray-dark border transition appearance-none focus:outline-none min-h-8" 6866 autocapitalize="off" autocomplete="off" autocorrect="off" 6867 name="q" 6868 value="" 6869 maxlength="128" 6870 /> 6871 <span class="absolute left-2 top-0 bottom-0 flex items-center justify-center"> 6872 <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" width="23" height="23" aria-hidden="true"> 6873 <path stroke-linecap="round" stroke-linejoin="round" d="M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z"/> 6874</svg> 6875 </span> 6876 </div> 6877 6878 <!-- Message when search term is too short --> 6879 <template x-if="searchQuery.length > 0 && searchQuery.length < minSearchLength"> 6880 <div class="font-bold mb-4 mt-8 pb-5 text-l text-center border-b"> 6881 <span> The search term should consist of at least 2 characters.</span> 6882 </div> 6883 </template> 6884 6885 <!-- Search Results --> 6886 <div id="search_autocomplete_mobile" 6887 class="search-autocomplete w-full" 6888 aria-live="polite" 6889 x-show="show && searchQuery.length >= minSearchLength" 6890 x-cloak 6891 x-transition:enter="transition ease-out duration-200" 6892 x-transition:enter-start="opacity-0 transform scale-95" 6893 x-transition:enter-end="opacity-100 transform scale-100" 6894 x-transition:leave="transition ease-in duration-150" 6895 x-transition:leave-start="opacity-100 transform scale-100" 6896 x-transition:leave-end="opacity-0 transform scale-95"> 6897 <div class="bg-white w-full overflow-y h-full"> 6898 6899 <!-- Two-column layout for suggestions --> 6900 <div class="flex flex-col mt-8" > 6901 <!-- Categories Column --> 6902 <template x-if="find(searchResultsByType, 'category').length > 0"> 6903 <div class="w-full mb-6"> 6904 <div> 6905 <p class="font-bold text-base mb-4">Categories</p> 6906 <ul class="space-y-3"> 6907 <template x-for="(category, index) in find(searchResultsByType, 'category')" :key="index"> 6908 <li> 6909 <a :href="category.url" 6910 class="block text-sm no-underline text-gray font-bold transition-colors duration-200 hover:underline hover:text-black" 6911 x-text="category.title"> 6912 </a> 6913 </li> 6914 </template> 6915 </ul> 6916 </div> 6917 </div> 6918 </template> 6919 6920 <!-- Products Column --> 6921 <template x-if="find(searchResultsByType, 'product').length > 0"> 6922 <div class="w-full"> 6923 <div> 6924 <div class="flex justify-between items-center"> 6925 <p class="font-bold text-base mb-4">Products</p> 6926 <a :href="searchResultsUrl + '?' + 'q' + '=' + encodeURIComponent(searchQuery)" class="text-sm underline hover:no-underline mb-4">View All</a> 6927 </div> 6928 <div class="grid grid-cols-2 gap-4"> 6929 <template x-for="(product, index) in find(searchResultsByType, 'product')" :key="product.product_id || index"> 6930 <div class="relative item product product-item transition-shadow card hover:bg-white grow flex flex-col w-full"> 6931 <div class="relative"> 6932 <template x-if="product.is_new || product.is_topseller || product.is_on_sale || product.is_pre_order || product.is_preorder"> 6933 <div class="product-flags absolute top-0 left-0 z-10 flex flex-row gap-2"> 6934 <template x-if="product.is_new"> 6935 <sp
6935an class="flex items-center justify-center px-2 py-1 rounded bg-peachOrange text-black text-xs font-bold uppercase"> 6936 New </span> 6937 </template> 6938 <template x-if="product.is_topseller"> 6939 <span class="flex items-center justify-center px-2 py-1 rounded bg-blueGray text-black text-xs font-bold uppercase"> 6940 Top </span> 6941 </template> 6942 <template x-if="product.is_on_sale"> 6943 <span class="flex items-center justify-center px-2 py-1 rounded bg-coralPink text-black text-xs font-bold uppercase"> 6944 Sale </span> 6945 </template> 6946 <template x-if="product.is_pre_order || product.is_preorder"> 6947 <span class="flex items-center justify-center px-2 py-1 rounded bg-black text-white text-xs font-bold uppercase"> 6948 Pre-Order </span> 6949 </template> 6950 </div> 6951 </template> 6952 <a :href="product.url || product.link || '#'" 6953 :title="product.title || product.name || 'Product'" 6954 class="product photo product-item-photo block mx-auto mb-3 w-full " 6955 tabindex="-1"> 6956 <img class="object-contain w-full" 6957 :src="product.image?.src || product.image?.url || product.image || ''" 6958 :alt="product.title || product.name || 'Product'" 6959 loading="lazy" 6960 x-show="product.image?.src || product.image?.url || product.image" /> 6961 </a> 6962 <div class="flex flex-row gap-2 w-full justify-end"> 6963 <button type="button" 6964 x-data="steiffInitWishlistToggle()" 6965 @private-content-loaded.window="setLoginState($event.detail.data)" 6966 @wishlist-product-added.window="handleWishlistProductAdded($event.detail.productId)" 6967 @wishlist-product-removed.window="handleWishlistProductRemoved($event.detail.productId)" 6968 @click.prevent.stop="isGuest() 6969 ? $dispatch('search-wishlist-guest-add', { productId: product.product_id, productName: product.title || product.name || '' }) 6970 : toggleWishlist(product.product_id, product.title || product.name || '')" 6971 :aria-disabled="wishlistPending" 6972 :aria-busy="wishlistPending" 6973 aria-label="Add to Wish List" 6974 :aria-label="(isInWishlist(product.product_id) ? 'Remove\u0020from\u0020Wish\u0020List' : 'Add\u0020to\u0020Wish\u0020List') + ' ' + (product.title || product.name || '')" 6975 class="group rounded-full w-9 h-9 p-2 btn btn-secondary border-0 inline-flex shrink-0 items-center justify-center text-cherryRed hover:text-cherryRed" 6976 :class="{ 'opacity-50 pointer-events-none': wishlistPending }" 6977 data-addto="wishlist"> 6978 <sp
6978an x-cloak 6979 :class="isInWishlist(product.product_id) ? 'flex group-hover:hidden' : 'hidden group-hover:flex'"> 6980 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" width="20" height="20" aria-hidden="true"> 6981 <path fill-rule="evenodd" d="M3.172 5.172a4 4 0 015.656 0L10 6.343l1.172-1.171a4 4 0 115.656 5.656L10 17.657l-6.828-6.829a4 4 0 010-5.656z" clip-rule="evenodd"/> 6982</svg> 6983 </span> 6984 <span x-cloak 6985 :class="isInWishlist(product.product_id) ? 'hidden group-hover:flex' : 'flex group-hover:hidden'"> 6986 <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" width="20" height="20" aria-hidden="true"> 6987 <path stroke-linecap="round" stroke-linejoin="round" d="M4.318 6.318a4.5 4.5 0 000 6.364L12 20.364l7.682-7.682a4.5 4.5 0 00-6.364-6.364L12 7.636l-1.318-1.318a4.5 4.5 0 00-6.364 0z"/> 6988</svg> 6989 </span> 6990 </button> 6991 </div> 6992 </div> 6993 6994 <div class="product-info flex flex-col grow"> 6995 <template x-if="product.is_plush_product"> 6996 <div class="w-fit"> 6997 <p class="text-sm text-gray-medium"> 6998 Size: 6999 <span x-text="product.size_display"></span> 7000 </p> 7001 </div> 7002 </template> 7003 <div class="mt-2 mb-1 items-center justify-left font-semibold text-sm text-left"> 7004 <a :href="product.url || product.link || '#'" 7005 class="product-item-link product-item-link line-clamp-2 text-ellipsis overflow-hidden text-black" 7006 x-text="product.title || product.name || 'Product'"></a> 7007 </div> 7008 7009 <div class="pt-1 text-gray-900" x-show="product.price || product.formatted_price"> 7010 <div x-html="product.formatted_price || product.price || ''"></div> 7011 </div> 7012 7013 <div class="swatch-attribute-options clearfix gap-1 flex flex-row flex-wrap justify-start items-center mt-2" 7014 x-show="Array.isArray(product.available_colors) && product.available_colors.length > 0" 7015 x-cloak> 7016 <template x-for="color in (product.available_colors || [])" :key="color.value"> 7017 <a :href="color.link" rel="nofollow" 7018 :aria-label="'Colour: ' + (color.label || '')" 7019 class="swatch-option-link-layered flex items-center justify-center swatch-option cursor-pointer hover:shadow-lg transition-shadow relative select-none min-w-4 min-h-4 roun
7019ded-full" 7020 @click="window.steiffTrackColorChoice?.($event.currentTarget.getAttribute('aria-label'))" 7021 :class="(color.isVisualSwatch ? 'bg-white h-6 w-6' : 'border-none w-4 h-4') + (!color.isActive ? ' border-none' : '')"> 7022 <div class="w-full h-full rounded-full w-4 h-4 min-w-4 min-h-4" 7023 :class="color.isVisualSwatch && color.swatchType === 1 && ['#fff','#ffffff','white'].includes((color.swatchValue || '').toLowerCase().trim()) ? 'ring-1 ring-inset ring-gray-300' : ''" 7024 :style="color.isVisualSwatch ? (color.swatchType === 2 ? 'background: #fff url(' + (color.swatchImagePath || '') + ') center no-repeat' : 'background-color: ' + (color.swatchValue || '')) : ''"> 7025 <span x-show="color.swatchType === 0" x-html="(color.swatchValue || color.label || '')"></span> 7026 </div> 7027 </a> 7028 </template> 7029 </div> 7030 </div> 7031 </div> 7032 </template> 7033 </div> 7034 </div> 7035 </div> 7036 </template> 7037 </div> 7038 </div> 7039 </div> 7040 7041 <!-- Full-search CTA - no inline suggestions, but the full search has results --> 7042 <div id="search_full_results_cta_mobile" 7043 class="w-full" 7044 aria-live="polite" 7045 x-show="fullResultCount > 0 && !show && searchQuery.length >= minSearchLength" 7046 x-cloak 7047 x-transition:enter="transition ease-out duration-200" 7048 x-transition:enter-start="opacity-0 transform scale-95" 7049 x-transition:enter-end="opacity-100 transform scale-100" 7050 x-transition:leave="transition ease-in duration-150" 7051 x-transition:leave-start="opacity-100 transform scale-100" 7052 x-transition:leave-end="opacity-0 transform scale-95"> 7053 <div class="bg-white w-full overflow-y h-full"> 7054 <div class="mb-4 mt-8 pb-5 text-center border-b"> 7055 <a :href="fullResultUrl" 7056 class="inline-flex items-center gap-2 font-bold text-base underline hover:no-underline text-black"> 7057 <span x-text="getFullResultsMessage()"></span> 7058 <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" class="inline-block" width="18" height="18" aria-hidden="true"> 7059 <path stroke-linecap="round" stroke-linejoin="round" d="M14 5l7 7m0 0l-7 7m7-7H3"/> 7060</svg> 7061 </a> 7062 </div> 7063 </div> 7064 </div> 7065 7066 <!-- No Results Message - only when the full search is genuinely empty --> 7067 <div id="search_suggestions_mobile" 7068 class="w-full" 7069 aria-live="polite" 7070 x-show="noResults && fullResultCount === 0 && searchQuery.length && searchQuery.length >= minSearchLength && !show" 7071 x-transition:enter="transition ease-out duration-200" 7072 x-transition:enter-start="opacity-0 transform scale-95" 7073 x-transition:enter-end="opacity-100 transform scale-100" 7074 x-transition:leave="transition ease-in duration-150" 7075 x-transition:leave-start="opacity-100 transform scale-100" 7076 x-transition:leave-end="opacity-0 transform scale-95"> 7077 <div class="bg-white w-full overflow-y h-full"> 7078 <div class="font-bold mb-4 mt-8 pb-5 text-l text-center border-b">
7079 <span x-text="getNoResultsMessage()"></span> 7080 </div> 7081 <div class="mb-6"> 7082 <p class="font-bold text-base mb-4">Search Suggestions</p> 7083 <ul class="space-y-3"> 7084 <li> 7085 <a href="https://www.steiff.com/en/stuffed-animals-toys" 7086 class="block text-sm no-underline text-gray font-bold transition-colors duration-200 hover:underline hover:text-black"> 7087 Stuffed animals & toys </a> 7088 </li> 7089 <li> 7090 <a href="https://www.steiff.com/en/baby-kids-fashion" 7091 class="block text-sm no-underline text-gray font-bold transition-colors duration-200 hover:underline hover:text-black"> 7092 Baby- & Kids fashion </a> 7093 </li> 7094 <li> 7095 <a href="https://www.steiff.com/en/exclusive-world-of-collectors" 7096 class="block text-sm no-underline text-gray font-bold transition-colors duration-200 hover:underline hover:text-black"> 7097 Exclusive world of collectors </a> 7098 </li> 7099 <li> 7100 <a href="https://www.steiff.com/en/gifts" 7101 class="block text-sm no-underline text-gray font-bold transition-colors duration-200 hover:underline hover:text-black"> 7102 Gifts </a> 7103 </li> 7104 <li> 7105 <a href="https://www.steiff.com/en/special-features" 7106 class="block text-sm no-underline text-gray font-bold transition-colors duration-200 hover:underline hover:text-black"> 7107 Special features </a> 7108 </li> 7109 </ul> 7110 </div> 7111 <div class="w-full"> 7112 </div> 7113 </div> 7114 </div> 7115 </form> 7116 </div> 7117</div> 7118 </div> 7119 </div> 7120 7121 <button 7122 type="button" 7123 @click="closeSearchDrawer" 7124 aria-label="Close search drawer" 7125 class="absolute top-0 right-2 p-4 mt-1 md:mt-2 transition-colors" 7126 > 7127 <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"> 7128 <path stroke-linecap="round" stroke-linejoin="round" d="M6 18L18 6M6 6l12 12"/> 7129</svg> 7130 </button> 7131 </div> 7132 </div> 7133 7134</section> 7135 7136</header><div class="p-3 md:hidden" 7137 style="background-color: #cdd7d7; color: black;"> 7138 <span class="text-base font-bold justify-center flex text-xs"> 7139 <span class="mr-1"> 7140 Get 10% discount: </span> 7141 <a href="/en/newsletter" 7142 class="underline hover:no-underline text-base font-bold text-xs" 7143 style="color: black;"> 7144 Subscribe to the newsletter </a> 7145 </span> 7146</div>
7147<main id="maincontent" class="page-main-full-width"><div id="contentarea" tabindex="-1"></div> 7148<div class="columns"><div class="column main"> <!-- HyväCMS cms_page --> 7149 <div data-liveview-element="steiff_row" 7150 class=" not-prose" 7151 style="padding-bottom: 1.25rem;" > 7152
7152<script> 7153 'use strict'; 7154 (() => { 7155 if (window.__swiperLoaderScheduled) return; 7156 window.__swiperLoaderScheduled = true; 7157 function loadSwiper() { 7158 const cssUrl = 'https://www.steiff.com/static/version1790768634/frontend/Steiff/default/en_GB/css/swiper-bundle.min.css'; 7159 const link = document.createElement('link'); 7160 link.rel = 'stylesheet'; 7161 link.href = cssUrl; 7162 document.head.appendChild(link); 7163 const script = document.createElement('script'); 7164 script.type = 'text/javascript'; 7165 script.src = 'https\u003A\u002F\u002Fwww.steiff.com\u002Fstatic\u002Fversion1790768634\u002Ffrontend\u002FSteiff\u002Fdefault\u002Fen_GB\u002Fjs\u002Fswiper\u002Dbundle.min.js'; 7166 script.addEventListener('load', () => { 7167 document.dispatchEvent(new CustomEvent('swiper-loaded')); 7168 }); 7169 document.head.appendChild(script); 7170 } 7171 if (document.readyState === 'loading') { 7172 window.addEventListener('DOMContentLoaded', loadSwiper); 7173 } else { 7174 loadSwiper(); 7175 } 7176 })(); 7177</script>
vendor: 1 bytes, line 7177
7177
7178<script> 7179 'use strict'; 7180 (function () { 7181 if (window.__steiffSliderInitDefined) return; 7182 window.__steiffSliderInitDefined = true; 7183 window.initCmsSwiperSlider = function () { 7184 return { 7185 swiper: null, 7186 active: 0, 7187 isBeginning: true, 7188 isEnd: false, 7189 autoplayPaused: false, 7190 sliderConfig: null, 7191 get itemCount() { return (this.sliderConfig && this.sliderConfig.itemCount) || 0; }, 7192 get pageSize() { return (this.sliderConfig && this.sliderConfig.pageSize) || 1; }, 7193 get isTeaser() { return !!(this.sliderConfig && this.sliderConfig.isTeaser); }, 7194 get showScrollbar() { return !!(this.sliderConfig && this.sliderConfig.showScrollbar); }, 7195 get itemsRangeMessage() { return (this.sliderConfig && this.sliderConfig.itemsRangeMessage) || 'Items %0 to %1 of %2'; }, 7196 get slideMessage() { return (this.sliderConfig && this.sliderConfig.slideMessage) || 'Slide %0 of %1'; }, 7197 init() { 7198 const configJson = this.$el && this.$el.getAttribute('data-slider-config'); 7199 this.sliderConfig = configJson ? JSON.parse(configJson) : {}; 7200 // Resilience: if Swiper never initializes (e.g. its asset fails to load), reveal all 7201 // slides so the CLS guard does not leave later slides permanently hidden. 7202 setTimeout(() => { 7203 if (!this.swiper) { 7204 const container = this.$refs.swiperContainer; 7205 container && container.classList.add('swiper-init-failed'); 7206 } 7207 }, 4000); 7208 }, 7209 initSwiper() { 7210 if (this.swiper) return; 7211 if (!this.sliderConfig) this.init(); 7212 const swiperContainer = this.$refs.swiperContainer; 7213 if (!swiperContainer) { 7214 const maxRetries = 15; 7215 let attempt = 0; 7216 const self = this; 7217 const tryInit = () => { 7218 if (self.swiper) return; 7219 if (self.$refs.swiperContainer) { 7220 self.initSwiper(); 7221 return; 7222 } 7223 attempt += 1; 7224 if (attempt < maxRetries) { 7225 requestAnimationFrame(tryInit); 7226 } 7227 }; 7228 requestAnimationFrame(tryInit); 7229 return; 7230 } 7231 const cfg = this.sliderConfig || {}; 7232 const createSwiper = () => { 7233 if (this.swiper) return; 7234 const scrollbarEl = this.$refs.swiperScrollbar; 7235 if (!window.Swiper) return; 7236 const swiperOptions = { 7237 slidesPerView: cfg.slidesPerViewMobile ?? 1, 7238 spaceBetween: cfg.spaceBetween ?? 0, 7239 breakpoints: { 7240 768: { slidesPerView: cfg.slidesPerViewTablet ?? 1 }, 7241 1024: { slidesPerView: cfg.slidesPerViewTablet ?? 1 }, 7242 1280: { slidesPerView: cfg.slidesPerViewDesktop ?? 1 }, 7243 1536: { slidesPerView: cfg.slidesPerViewXl ?? 1 }, 7244 }, 7245 loop: false, 7246 autoHeight: !cfg.isTeaser, 7247 on: { 7248 slideChange: (swiperInstance) => { 7249 this.active = swiperInstance.activeIndex; 7250 this.isBeginning = !!swiperInstance.isBeginning; 7251 this.isEnd = !!swiperInstance.isEnd; 7252 this.announceSlide(swiperInstance.activeIndex + 1); 7253 }, 7254 resize: (swiperInstance) => {
7255 this.isBeginning = !!swiperInstance.isBeginning; 7256 this.isEnd = !!swiperInstance.isEnd; 7257 this.announceSlide(swiperInstance.activeIndex + 1); 7258 }, 7259 }, 7260 }; 7261 if (this.showScrollbar && scrollbarEl) { 7262 swiperOptions.scrollbar = { 7263 el: scrollbarEl, 7264 draggable: true, 7265 hide: false, 7266 }; 7267 } 7268 if (cfg.autoplay) { 7269 swiperOptions.autoplay = { delay: cfg.autoplaySpeed || 3000, disableOnInteraction: false }; 7270 } 7271 this.swiper = new window.Swiper(swiperContainer, swiperOptions); 7272 this.active = this.swiper.activeIndex; 7273 this.isBeginning = !!this.swiper.isBeginning; 7274 this.isEnd = !!this.swiper.isEnd; 7275 this.announceSlide(this.active + 1); 7276 }; 7277 if (window.Swiper) { 7278 createSwiper.call(this); 7279 } else { 7280 document.addEventListener('swiper-loaded', () => createSwiper.call(this), { once: true }); 7281 } 7282 }, 7283 announceSlide(index) { 7284 const liveRegion = this.$el?.querySelector('[aria-live="polite"]'); 7285 if (liveRegion) liveRegion.textContent = this.slideAnnouncement(index); 7286 }, 7287 slideAnnouncement(currentIndex) { 7288 if (this.isTeaser && this.pageSize > 1) { 7289 const firstVisibleIndex = currentIndex; 7290 const visibleSlideCount = this.swiper 7291 ? Math.ceil(parseFloat(this.swiper.params.slidesPerView) || 1) 7292 : this.pageSize; 7293 const lastVisibleIndex = Math.min(firstVisibleIndex + visibleSlideCount - 1, this.itemCount); 7294 return hyva.strf(this.itemsRangeMessage, firstVisibleIndex, lastVisibleIndex, this.itemCount); 7295 } 7296 return hyva.strf(this.slideMessage, currentIndex, this.itemCount); 7297 }, 7298 showNavigation() { 7299 if (!this.sliderConfig) return false; 7300 const { itemCount, isTeaser } = this.sliderConfig; 7301 if (isTeaser) return !(this.isBeginning && this.isEnd); 7302 return itemCount > 1; 7303 }, 7304 prev() { this.swiper?.slidePrev(); }, 7305 next() { this.swiper?.slideNext(); }, 7306 pauseAutoplay() { 7307 if (this.swiper?.autoplay) { 7308 this.swiper.autoplay.stop(); 7309 this.autoplayPaused = true; 7310 } 7311 }, 7312 resumeAutoplay() { 7313 if (this.swiper?.autoplay) { 7314 this.swiper.autoplay.start(); 7315 this.autoplayPaused = false; 7316 } 7317 }, 7318 }; 7319 }; 7320 })(); 7321</script>
7321 7322<section data-liveview-element="steiff_slider" 7323 data-slider-config="{"itemCount":3,"pageSize":1,"isTeaser":false,"showScrollbar":false,"slidesPerViewMobile":1,"slidesPerViewTablet":1,"slidesPerViewDesktop":1,"slidesPerViewXl":1,"spaceBetween":0,"autoplay":true,"autoplaySpeed":10000,"itemsRangeMessage":"Items %0 to %1 of %2","slideMessage":"Slide %0 of %1"}" 7324 class="body-font overflow-hidden" 7325 data-allows-nested-components 7326 id="steiff-slider-migrated_1782888533_6a44b85533959" 7327 x-data="initCmsSwiperSlider()" 7328 x-init="$nextTick(() => initSwiper())" 7329 role="region" 7330 aria-roledescription="Carousel" 7331 aria-label="steiff_slider" 7332 tabindex="0" 7333 @keydown.arrow-left="if ($el.contains(document.activeElement)) { prev(); $event.preventDefault(); }" 7334 @keydown.arrow-right="if ($el.contains(document.activeElement)) { next(); $event.preventDefault(); }" 7335 x-defer="intersect" 7336 > 7337 <div class="relative"> 7338 <a 7339 href="#steiff-slider-migrated_1782888533_6a44b85533959-end" 7340 class="action skip sr-only focus:not-sr-only focus:absolute focus:z-30 focus:bg-white focus:outline focus:outline-2 focus:outline-offset-2" 7341 > 7342 Press to skip carousel </a> 7343 7344 <p class="sr-only" aria-live="polite" aria-atomic="true" x-text="slideAnnouncement(active + 1)" x-init="$nextTick(() => $el.textContent = slideAnnouncement(active + 1))"></p> 7345 7346 <div data-liveview-element="steiff_slider_slides" 7347 class="swiper steiff-slider-swiper flex-none relative w-full pb-3 !overflow-visible" 7348 data-allows-nested-components 7349 x-ref="swiperContainer" 7350 > 7351 <div class="swiper-wrapper"> 7352 <div 7353 class="swiper-slide flex shrink-0 w-full overflow-hidden [&>img]:w-full [&>picture]:w-full [&>picture>img]:w-full" 7354 role="group" 7355 aria-roledescription="slide" 7356 aria-label="1 of 3" 7357 > 7358 7359 <div class="relative group grid *:col-start-1 *:row-start-1 aspect-[var(--steiff-video-aspect-mobile)] md:aspect-[var(--steiff-video-aspect-desktop)] bg-[var(--play-btn-bg)] text-[var(--play-btn-fg)]" 7360 data-liveview-element="steiff_video" 7361 style="--steiff-video-aspect-mobile:479 / 479; --steiff-video-aspect-desktop:1920 / 650; --play-btn-bg:#ffffff; --play-btn-fg:#000000" 7362 x-data="{ 7363 playingDesktop: true, 7364 playingMobile: true, 7365 toggleDesktop() { const el = this.$refs.videoDesktop; if (el) { if (this.playingDesktop) el.pause(); else el.play(); this.playingDesktop = !this.playingDesktop; } }, 7366 toggleMobile() { const el = this.$refs.videoMobile; if (el) { if (this.playingMobile) el.pause(); else el.play(); this.playingMobile = !this.playingMobile; } } 7367 }" 7368 > 7369 <a class="z-0 block max-w-full w-full h-full focus:outline focus:outline-4 focus:outline-offset-4 focus-visible:ring-4 " href="https://www.steiff.com/en/halloween" target="_self" rel="noopener noreferrer"> 7370 <video 7371 x-ref="videoDesktop" 7372 autoplay muted 7373 loop 7374 playsinline 7375 preload="metadata" 7376 @loadedmetadata="if (!playingDesktop) { try { $event.target.currentTime = 0.1; } catch (e) {} }" 7377 class="max-w-full w-full h-full overflow-clip hidden md:block object-cover [grid-area:1/1]" 7378 aria-hidden="true" 7379 > 7380 <source src="https://res.cloudinary.com/steiff/video/upload/v1789132297/OS_16x9_-_1920x650_-_Group_-_EN_ntnbnu.mp4" type="video/mp4"> 7381 </video> 7382 <video 7383 x-ref="videoMobile" 7384 autoplay muted 7385 loop 7386 playsinline 7387 preload="metadata" 7388 @loadedmetadata="if (!playingMobile) { try { $event.target.currentTime = 0.1; } catch (e) {} }" 7389 class="max-w-full w-full h-full overflow-clip md:hidden object-cover [grid-area:1/1]" 7390 aria-hidden="true" 7391 > 7392 <source src="https://res.cloudinary.com/steiff/video/upload/v1789125840/OS_1x1_-_750x750_-_Group_-_EN_nyaewo.mp4" type="video/mp4"> 7393 </video> 7394 </a> 7395 <button 7396 type="button" 7397 :aria-label="playingDesktop ? 'Pause\u0026\u0023x20\u003BVideo' : 'Play\u0026\u0023x20\u003BVideo'" 7398 @click="toggleDesktop()" 7399 class="z-10 absolute top-4 right-4 rounded-full opacity-70 hover:opacity-100 transition-opacity duration-300 shadow-lg bg-[var(--play-btn-bg)] text-[var(--play-btn-fg)] hidden md:flex w-fit h-fit p-2" 7400 >
7401 <span class="relative inline-block w-8 h-8" aria-hidden="true"> 7402 <span x-show="playingDesktop" x-transition:enter="transition ease-out duration-75" x-transition:enter-start="opacity-0" x-transition:enter-end="opacity-100" x-transition:leave="transition ease-in duration-75" x-transition:leave-start="opacity-100" x-transition:leave-end="opacity-0" class="absolute inset-0 inline-flex items-center justify-center"> 7403 <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" class="w-6 h-6" width="24" height="24" aria-hidden="true"> 7404 <path stroke-linecap="round" stroke-linejoin="round" d="M10 9v6m4-6v6m7-3a9 9 0 11-18 0 9 9 0 0118 0z"/> 7405</svg> 7406 </span> 7407 <span x-show="!playingDesktop" x-transition:enter="transition ease-out duration-75" x-transition:enter-start="opacity-0" x-transition:enter-end="opacity-100" x-transition:leave="transition ease-in duration-75" x-transition:leave-start="opacity-100" x-transition:leave-end="opacity-0" x-cloak style="display: none;" class="absolute inset-0 inline-flex items-center justify-center" aria-hidden="true"> 7408 <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" class=" w-6 h-6" width="24" height="24" aria-hidden="true"> 7409 <path stroke-linecap="round" stroke-linejoin="round" d="M14.752 11.168l-3.197-2.132A1 1 0 0010 9.87v4.263a1 1 0 001.555.832l3.197-2.132a1 1 0 000-1.664z"/> 7410 <path stroke-linecap="round" stroke-linejoin="round" d="M21 12a9 9 0 11-18 0 9 9 0 0118 0z"/> 7411</svg> 7412 </span> 7413 </span> 7414 </button> 7415 <button 7416 type="button" 7417 :aria-label="playingMobile ? 'Pause\u0026\u0023x20\u003BVideo' : 'Play\u0026\u0023x20\u003BVideo'" 7418 @click="toggleMobile()" 7419 class="z-10 absolute top-4 right-4 rounded-full opacity-70 hover:opacity-100 transition-opacity duration-300 shadow-lg bg-[var(--play-btn-bg)] text-[var(--play-btn-fg)] flex md:hidden w-fit h-fit p-1" 7420 > 7421 <span class="relative inline-block w-8 h-8" aria-hidden="true"> 7422 <span x-show="playingMobile" x-transition:enter="transition ease-out duration-75" x-transition:enter-start="opacity-0" x-transition:enter-end="opacity-100" x-transition:leave="transition ease-in duration-75" x-transition:leave-start="opacity-100" x-transition:leave-end="opacity-0" class="absolute inset-0 inline-flex items-center justify-center" aria-hidden="true"> 7423 <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" class="w-6 h-6" width="24" height="24" aria-hidden="true"> 7424 <path stroke-linecap="round" stroke-linejoin="round" d="M10 9v6m4-6v6m7-3a9 9 0 11-18 0 9 9 0 0118 0z"/> 7425</svg> 7426 </span> 7427 <span x-show="!playingMobile" x-transition:enter="transition ease-out duration-75" x-transition:enter-start="opacity-0" x-transition:enter-end="opacity-100" x-transition:leave="transition ease-in duration-75" x-transition:leave-start="opacity-100" x-transition:leave-end="opacity-0" x-cloak style="display: none;" class="absolute inset-0 inline-flex items-center justify-center" aria-hidden="true"> 7428 <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" class="w-6 h-6" width="24" height="24" aria-hidden="true"> 7429 <path stroke-linecap="round" stroke-linejoin="round" d="M14.752 11.168l-3.197-2.132A1 1 0 0010 9.87v4.263a1 1 0 001.555.832l3.197-2.132a1 1 0 000-1.664z"/> 7430 <path stroke-linecap="round" stroke-linejoin="round" d="M21 12a9 9 0 11-18 0 9 9 0 0118 0z"/> 7431</svg> 7432 </span> 7433 </span> 7434 </button> 7435 7436 </div> 7437 7438 </div> 7439 <div 7440 class="swiper-slide flex shrink-0 w-full overflow-hidden [&>img]:w-full [&>picture]:w-full [&>picture>img]:w-full" 7441 role="group" 7442 aria-roledescription="slide" 7443 aria-label="2 of 3" 7444 > 7445 <a href="https://www.steiff.com/en/baby-kids-fashion/collections/autumn-winter-collection" 7446 target="_self" 7447 7448 class="w-full relative block " 7449 > 7450 7451 <picture data-liveview-element="image"><source media="(min-width: 1024px)" type="image/avif" srcset="https://www.steiff.com/media/wysiwyg/Homepage/Slider_2026/260929_steiff_HW-Fashion-LT2_slide_
74511920x650px__EN.jpg?format=avif&height=677&width=2000 1x"><source media="(min-width: 1024px)" type="image/webp" srcset="https://www.steiff.com/media/wysiwyg/Homepage/Slider_2026/260929_steiff_HW-Fashion-LT2_slide_1920x650px__EN.jpg?format=webp&height=677&width=2000 1x"><source media="(min-width: 1024px)" type="image/jpeg" srcset="https://www.steiff.com/media/wysiwyg/Homepage/Slider_2026/260929_steiff_HW-Fashion-LT2_slide_1920x650px__EN.jpg?format=auto&height=677&width=2000 1x"><source type="image/avif" srcset="https://www.steiff.com/media/wysiwyg/Homepage/Slider_2026/260929_steiff_HW-Fashion-LT2_slide_750x750px__EN.jpg?format=avif 1x"><source type="image/webp" srcset="https://www.steiff.com/media/wysiwyg/Homepage/Slider_2026/260929_steiff_HW-Fashion-LT2_slide_750x750px__EN.jpg?format=webp 1x"><source type="image/jpeg" srcset="https://www.steiff.com/media/wysiwyg/Homepage/Slider_2026/260929_steiff_HW-Fashion-LT2_slide_750x750px__EN.jpg?format=auto 1x"><img src="https://www.steiff.com/media/wysiwyg/Homepage/Slider_2026/260929_steiff_HW-Fashion-LT2_slide_750x750px__EN.jpg?format=webp" width="1500" height="1500" alt="Fashion collection autumn winter outfits" loading="lazy" class=" object-cover w-full h-auto group-[.navigation-cms]:rounded-md"></picture> <div class="container gap-4 sm:gap-6 md:gap-8 absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 flex flex-col items-center justify-center "> 7452 7453 7454 7455 </div> 7456 </a> 7457 </div> 7458 <div 7459 class="swiper-slide flex shrink-0 w-full overflow-hidden [&>img]:w-full [&>picture]:w-full [&>picture>img]:w-full" 7460 role="group" 7461 aria-roledescription="slide" 7462 aria-label="3 of 3" 7463 > 7464 <a href="https://www.steiff.com/en/hello-kitty-collection" 7465 target="_self" 7466 7467 class="w-full relative block " 7468 > 7469 7470 <picture data-liveview-element="image"><source media="(min-width: 1024px)" type="image/avif" srcset="https://www.steiff.com/media/wysiwyg/Homepage/Slider_2026/260629_steiff_HelloKitty_slide_1920x650px__EN.jpg?format=avif&height=677&width=2000 1x"><source media="(min-width: 1024px)" type="image/webp" srcset="https://www.steiff.com/media/wysiwyg/Homepage/Slider_2026/260629_steiff_HelloKitty_slide_1920x650px__EN.jpg?format=webp&height=677&width=2000 1x"><source media="(min-width: 1024px)" type="image/jpeg" srcset="https://www.steiff.com/media/wysiwyg/Homepage/Slider_2026/260629_steiff_HelloKitty_slide_1920x650px__EN.jpg?format=auto&height=677&width=2000 1x"><source type="image/avif" srcset="https://www.steiff.com/media/wysiwyg/Homepage/Slider_2026/260629_steiff_HelloKitty_slide_750x750px__EN.jpg?format=avif 1x"><source type="image/webp" srcset="https://www.steiff.com/media/wysiwyg/Homepage/Slider_2026/260629_steiff_HelloKitty_slide_750x750px__EN.jpg?format=webp 1x"><source type="image/jpeg" srcset="https://www.steiff.com/media/wysiwyg/Homepage/Slider_2026/260629_steiff_HelloKitty_slide_750x750px__EN.jpg?format=auto 1x"><img src="https://www.steiff.com/media/wysiwyg/Homepage/Slider_2026/260629_steiff_HelloKitty_slide_750x750px__EN.jpg?format=webp" width="1500" height="1500" alt="Hello Kitty plush characters and accessories - discover now" loading="lazy" class=" object-cover w-full h-auto group-[.navigation-cms]:rounded-md"></picture> <div class="container gap-4 sm:gap-6 md:gap-8 absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 flex flex-col items-center justify-center "> 7471 7472 7473 7474 </div> 7475 </a> 7476 </div> 7477 </div> 7478 </div> 7479 <div x-show="showNavigation()" x-cloak class="absolute inset-x-0 top-1/2 z-10 flex w-full -translate-y-1/2 items-center justify-between pointer-events-none" style="display: none;"> 7480 <button 7481 type="button" 7482 aria-label="Previous slide" 7483 :disabled="active === 0" 7484 class="text-black pointer-events-auto flex-none px-2 py-8 z-10 bg-greenGray opacity-70 focus:opacity-100 hover:opacity-100 disabled:opacity-40 disabled:cursor-not-allowed shadow-lg rounded focus:outline focus:outline-2 focus:outline-offset-2 focus-visible:ring-2 focus-visible:ring-black" 7485 @click="prev()" 7486 > 7487 <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" width="20" height="20" aria-hidden="true"> 7488 <path stroke-linecap="round" stroke-linejoin="round" d="M15 19l-7-7 7-7"/> 7489</svg> 7490 </button> 7491 <button 7492 type="button" 7493 aria-label="Next slide" 7494 :disabled="isEnd" 7495 class="text-black pointer-events-auto flex-none px-2 py-8 z-10 bg-greenGray opacity-70 focus:opacity-100 hover:opacity-100 disabled:opacity-40 disabled:cursor-not-allowed shadow-lg rounded focus:outline focus:outline-2 focus:outline-offset-2 focus-visible:ring-2 focus-visible:ring-black" 7496 @click="next()" 7497 > 7498 <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" width="20" height="20" aria-hidden="true"> 7499 <path stroke-linecap="round" stroke-linejoin="round" d="M9 5l7 7-7 7"/> 7500</svg> 7501 </button> 7502 </div> 7503 7504 <div class="mt-4" role="group" aria-label="Carousel autoplay"> 7505 <button 7506 type="button" 7507 :aria-label="autoplayPaused ? 'Resume\u0026\u0023x20\u003Bcarousel\u0026\u0023x20\u003Bautoplay' : 'Pause\u0026\u0023x20\u003Bcarousel\u0026\u0023x20\u003Bautoplay'" 7508 class="text-black group" 7509 @click="autoplayPaused ? resumeAutoplay() : pauseAutoplay()" 7510 >
7511 <span class="relative inline-grid grid-cols-1 place-items-center"> 7512 <span x-show="!autoplayPaused" class="col-start-1 row-start-1 flex flex-row items-center justify-center" aria-hidden="true"> 7513 <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" class="stroke-1 mr-1 group-hover:text-cherryRed" width="24" height="24" aria-hidden="true"> 7514 <path stroke-linecap="round" stroke-linejoin="round" d="M10 9v6m4-6v6m7-3a9 9 0 11-18 0 9 9 0 0118 0z"/> 7515</svg> 7516 Pause Slider </span> 7517 <span x-show="autoplayPaused" x-cloak style="display: none;" class="col-start-1 row-start-1 flex flex-row items-center justify-center" aria-hidden="true"> 7518 <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" class="stroke-1 mr-1 group-hover:text-cherryRed" width="24" height="24" aria-hidden="true"> 7519 <path stroke-linecap="round" stroke-linejoin="round" d="M14.752 11.168l-3.197-2.132A1 1 0 0010 9.87v4.263a1 1 0 001.555.832l3.197-2.132a1 1 0 000-1.664z"/> 7520 <path stroke-linecap="round" stroke-linejoin="round" d="M21 12a9 9 0 11-18 0 9 9 0 0118 0z"/> 7521</svg> 7522 Resume Slider </span> 7523 </span> 7524 </button> 7525 </div> 7526 <span id="steiff-slider-migrated_1782888533_6a44b85533959-end" tabindex="-1"></span> 7527 </div> 7528</section> 7529 </div> 7530 <div data-liveview-element="steiff_row" 7531 class=" not-prose container" 7532 style="padding-top: 1.25rem;" > 7533 <div 7534 data-liveview-element="steiff_text" 7535 class="steiff-text-content cmsp511-text-left cmsp511-text-base cmsp511-font-normal" 7536 > 7537 <h2>What’s new</h2></div> 7538 <div data-liveview-element="steiff_row" 7539 class=" not-prose" 7540 style="padding-top: 1rem; padding-bottom: 1rem;" > 7541 <div 7542 id="steiff-column-migrated_1782888533_6a44b8556e8c0" 7543 class="grid" 7544 data-liveview-element="steiff_column" 7545 style="background-color: ; color: ;"> 7546 <div 7547 id="steiff-column-item-steiff_content_migration_6a44b85575d97" 7548 class="min-w-0 justify-self-start flex items-start order-none sm:order-none lg:order-none w-full h-full" 7549 data-liveview-element="steiff_column_item" 7550 > 7551 <div class="overflow-hidden hover:shadow-lg group-[.navigation-cms:hover]:shadow-none group-[.navigation-cms]:rounded-md group-[.teaser-alternative-design]:relative group-[.navigation-cms]:p-2 w-full"> 7552 <div class=" group-[.navigation-cms]:!bg-transparent" 7553 style="background-color: #c8cdd7;" > 7554 <a href="https://www.steiff.com/en/baby-kids-fashion/babys-up-to-size-86/recommendations/baby-wellness" class="flex flex-col h-full group-[.teaser-alternative-design]:relative" target="_self"> 7555 <div class="group-[.navigation-cms]:h-[11.5625rem] lg:group-[.navigation-cms]:h-[110px] group-[.navigation-cms]:w-full group-[.navigation-cms]:pt-2 group-[.navigation-cms]:px-2 group-[.navigation-cms]:bg-gray-ultralight group-[.navigation-cms]:rounded-t-lg group-[.teaser-alternative-design]:!h-full group-[.teaser-alternative-design]:!w-full group-[.teaser-alternative-design]:!min-h-0 group-[.teaser-alternative-design]:!p-0 group-[.teaser-alternative-design]:!bg-transparent group-[.teaser-alternative-design]:rounded-lg"> 7556 <picture data-liveview-element="image"><source media="(min-width: 1024px)" type="image/avif" srcset="https://www.steiff.com/media/wysiwyg/Homepage/Aktuelles_2026/260917_steiff_HW-Fashion-Baby-Basics_2erTeaser_1146x740px__xx.jpg?format=avif 1x"><source media="(min-width: 1024px)" type="image/webp" srcset="https://www.steiff.com/media/wysiwyg/Homepage/Aktuelles_2026/260917_steiff_HW-Fashion-Baby-Basics_2erTeaser_1146x740px__xx.jpg?format=webp 1x"><source media="(min-width: 1024px)" type="image/jpeg" srcset="https://www.steiff.com/media/wysiwyg/Homepage/Aktuelles_2026/260917_steiff_HW-Fashion-Baby-Basics_2erTeaser_1146x740px__xx.jpg?format=auto 1x"><source type="image/avif" srcset="https://www.steiff.com/media/wysiwyg/Homepage/Aktuelles_2026/260917_steiff_HW-Fashion-Baby-Basics_2erTeaser_686x370px__xx.jpg?format=avif 1x"><source type="image/webp" srcset="https://www.steiff.com/media/wysiwyg/Homepage/Aktuelles_2026/260917_steiff_HW-Fashion-Baby-Basics_2erTeaser_686x370px__xx.jpg?format=webp 1x"><source type="image/jpeg" srcset="https://www.steiff.com/media/wysiwyg/Homepage/Aktuelles_2026/260917_steiff_HW-Fashion-Baby-Basics_2erTeaser_686x370px__xx.jpg?format=auto 1x"><img src="https://www.steiff.com/media/wysiwyg/Homepage/Aktuelles_2026/260917_steiff_HW-Fashion-Baby-Basics_2erTeaser_686x370px__xx.jpg?format=webp" width="1372" height="740" alt="Baby Basics Outf
7556its" loading="lazy" class=" object-cover w-full h-auto group-[.navigation-cms]:h-full group-[.navigation-cms]:rounded-lg group-[.teaser-alternative-design]:brightness-50"></picture> </div> 7557 <div class="teaser-content flex flex-col w-full flex-grow group-[.navigation-cms]:items-center group-[.teaser-alternative-design]:absolute group-[.teaser-alternative-design]:top-1/2 group-[.teaser-alternative-design]:left-1/2 group-[.teaser-alternative-design]:-translate-x-1/2 group-[.teaser-alternative-design]:-translate-y-1/2 group-[.navigation-cms]:justify-center group-[.navigation-cms]:bg-gray-ultralight group-[.navigation-cms]:rounded-b-lg group-[.navigation-cms]:pt-2 group-[.navigation-cms]:pr-3 group-[.navigation-cms]:pb-3 group-[.navigation-cms]:pl-2 group-[.teaser-alternative-design]:!bg-transparent group-[.teaser-alternative-design]:!p-0"> 7558 <div class="cmsp511-text-center p-6 group-[.navigation-cms]:p-0 group-[.teaser-alternative-design]:px-4 group-[.teaser-alternative-design]:py-6"> 7559 <h3 data-liveview-element="steiff-headline" 7560 class="hyphens-auto break-words h4 cmsp511-text-center teaser-headline group-[.teaser-alternative-design]:leading-[110%] group-[.teaser-alternative-design]:font-bold group-[.teaser-alternative-design]:text-center group-[.navigation-cms]:mb-2 group-[.navigation-cms]:font-bold group-[.navigation-cms]:text-left group-[.navigation-cms]:!text-black group-[.navigation-cms]:!cmsp511-text-base group-[.navigation-cms]:leading-[110%] group-[.teaser-alternative-design]:!text-white group-[.teaser-alternative-design]:!text-[1.5rem]" 7561 > 7562 Baby essentials</h3> 7563 <span class="btn btn-primary mt-4 md:mt-6 group-[.navigation-cms]:!mt-2 group-[.navigation-cms]:flex group-[.navigation-cms]:items-center group-[.navigation-cms]:justify-center group-[.navigation-cms]:max-w-[7.75rem] group-[.navigation-cms]:px-4 group-[.navigation-cms]:text-xs group-[.navigation-cms]:font-normal group-[.navigation-cms]:shadow-md group-[.navigation-cms]:mx-auto group-[.navigation-cms\:not\(.teaser-alternative-design\)]:!text-white group-[.navigation-cms\:not\(.teaser-alternative-design\)]:!bg-black group-[.teaser-alternative-design]:max-w-[7.75rem] group-[.teaser-alternative-design]:text-xs group-[.teaser-alternative-design]:!text-gray-dark group-[.teaser-alternative-design]:!bg-white group-[.teaser-alternative-design]:hover:shadow-lg" 7564 > 7565 <span class="group-[.navigation-cms]:text-inherit">To the collection</span> 7566 </span> 7567 </div> 7568 </div> 7569 </a> 7570 </div> 7571 </div> 7572 </div> 7573 <div 7574 id="steiff-column-item-steiff_content_migration_6a44b8557cd93" 7575 class="min-w-0 justify-self-start flex items-start order-none sm:order-none lg:order-none w-full h-full" 7576 data-liveview-element="steiff_column_item" 7577 > 7578 <div class="overflow-hidden hover:shadow-lg group-[.navigation-cms:hover]:shadow-none group-[.navigation-cms]:rounded-md group-[.teaser-alternative-design]:relative group-[.navigation-cms]:p-2 w-full"> 7579 <div class=" group-[.navigation-cms]:!bg-transparent" 7580 style="background-color: #fae1d7;" > 7581 <a href="https://www.steiff.com/en/exclusive-world-of-collectors/recommendations/all-novelties" class="flex flex-col h-full group-[.teaser-alternative-design]:relative" target="_self"> 7582 <div class="group-[.navigation-cms]:h-[11.5625rem] lg:group-[.navigation-cms]:h-[110px] group-[.navigation-cms]:w-full group-[.navigation-cms]:pt-2 group-[.navigation-cms]:px-2 group-[.navigation-cms]:bg-gray-ultralight group-[.navigation-cms]:rounded-t-lg group-[.teaser-alternative-design]:!h-full group-[.teaser-alternative-design]:!w-full group-[.teaser-alternative-design]:!min-h-0 group-[.teaser-alternative-design]:!p-0 group-[.teaser-alternative-design]:!bg-transparent group-[.teaser-alternative-design]:rounded-lg"> 7583 <picture data-liveview-element="image"><source media="(min-width: 1024px)" type="image/avif" srcset="https://www.steiff.com/media/wysiwyg/Homepage/Aktuelles_2026/260820_steiff_MiniSupermanTeddybaer_2erTeaser_1146x740px__xx.jpg?format=avif 1x"><source media="(min-width: 1024px)" type="image/webp" srcset="https://www.steiff.com/media/wysiwyg/Homepage/Aktuelles_2026/260820_steiff_MiniSupermanTeddybaer_2erTeaser_1146x740px__xx.jpg?format=webp 1x"><source media="(min-width: 1024px)" type="image/jpeg" srcset="https://www.steiff.com/media/wysiwyg/Homepage/Aktuelles_2026/260820_steiff_MiniSupermanTeddybaer_2erTeaser_1146x740px__xx.jpg?format=auto 1x"><source type="image/avif" srcset="https://www.steiff.com/media/wysiwyg/Homepage/Aktuelles_2026/260820_steiff_MiniSupermanTeddybaer_2erTeaser_686x370px__xx.jpg?format=avif 1x"><source type="image/webp" srcset="https://www.steiff.com/media/wysiwyg/Homepage/Aktuelles_2026/260820_steiff_MiniSupermanTeddybaer_2erTeaser_686x370px__xx.jpg?format=webp 1x"><source type="image/jpeg" srcset="https://www.steiff.com/media/wysiwyg/Homepage/Aktuelles_2026/260820_steiff_MiniSupermanTeddybaer_2erTeaser_686x370px__xx.jpg?format=auto 1x"><img src="https://www.steiff.com/media/wysiwyg/Homepage/Aktuelles_2026/260820_steiff_MiniSupermanTeddybaer_2erTeaser_686x370px__xx.jpg?format=webp" width="1372" height="740" alt="Superman miniature Teddy bear" loading="lazy" class=" object-cover w-full h-auto group-[.navigation-cms]:h-full group-[.navigation-cms]:rounded-lg group-[.teaser-alternative-design]:brightness-50"></picture> </div> 7584 <div class="teaser-content flex flex-col w-full flex-grow group-[.navigation-cms]:items-center group-[.teaser-alternative-design]:absolute group-[.teaser-alternative-design]:top-1/2 group-[.teaser-alternative-design]:left-1/2 group-[.teaser-alternative-design]:-translate-x-1/2 group-[.teaser-alternative-design]:-translate-y-1/2 group-[.navigation-cms]:justify-center group-[.navigation-cms]:bg-gray-ultralight group-[.navigation-cms]:rounded-b-lg group-[.navigation-cms]:pt-2 group-[.navigation-cms]:pr-3 group-[.navigation-cms]:pb-3 group-[.navigation-cms]:pl-2 group-[.teaser-alternative-design]:!bg-transparent group-[.teaser-alternative-design]:!p-0"> 7585 <div class="cmsp511-text-center p-6 group-[.navigation-cms]:p-0 group-[.teaser-alternative-design]:px-4 group-[.teaser-alternative-design]:py-6"> 7586 <h3 data-liveview-element="steiff-headline" 7587 class="hyphens-auto break-words h4 cmsp511-text-center teaser-headline group-[.teaser-alternative-design]:leading-[110%] group-[.teaser-alternative-design]:font-bold group-[.teaser-alternative-design]:text-center group-[.navigation-cms]:mb-2 group-[.navigation-cms]:font-bold group-[.navigation-cms]:text-left group-[.navigation-cms]:!text-black group-[.navigation-cms]:!cmsp511-text-base group-[.navigation-cms]:leading-[110%] group-[.teaser-alternative-design]:!text-white group-[.teaser-alternative-design]:!text-[1.5rem]" 7588 > 7589 Collector's novelties</h3> 7590 <sp
7590an class="btn btn-primary mt-4 md:mt-6 group-[.navigation-cms]:!mt-2 group-[.navigation-cms]:flex group-[.navigation-cms]:items-center group-[.navigation-cms]:justify-center group-[.navigation-cms]:max-w-[7.75rem] group-[.navigation-cms]:px-4 group-[.navigation-cms]:text-xs group-[.navigation-cms]:font-normal group-[.navigation-cms]:shadow-md group-[.navigation-cms]:mx-auto group-[.navigation-cms\:not\(.teaser-alternative-design\)]:!text-white group-[.navigation-cms\:not\(.teaser-alternative-design\)]:!bg-black group-[.teaser-alternative-design]:max-w-[7.75rem] group-[.teaser-alternative-design]:text-xs group-[.teaser-alternative-design]:!text-gray-dark group-[.teaser-alternative-design]:!bg-white group-[.teaser-alternative-design]:hover:shadow-lg" 7591 > 7592 <span class="group-[.navigation-cms]:text-inherit">To the novelties</span> 7593 </span> 7594 </div> 7595 </div> 7596 </a> 7597 </div> 7598 </div> 7599 </div> 7600 <style> 7601 :where(#steiff-column-migrated_1782888533_6a44b8556e8c0) { 7602 --cols: repeat(1, minmax(0px, 1fr)); 7603 --gap: 1rem; 7604 grid-template-columns: var(--cols); 7605 gap: var(--gap); 7606 } 7607 7608 @media (min-width: 640px) { 7609 :where(#steiff-column-migrated_1782888533_6a44b8556e8c0) { 7610 --cols: repeat(2, minmax(0px, 1fr)); } 7611 } 7612 7613 </style> 7614</div> 7615 </div> 7616 <div data-liveview-element="steiff_row" 7617 class=" not-prose" 7618 style="padding-top: 1rem; padding-bottom: 1rem;" > 7619 <div 7620 id="steiff-column-migrated_1782888533_6a44b8555a1f6" 7621 class="grid" 7622 data-liveview-element="steiff_column" 7623 style="background-color: ; color: ;"> 7624 <div 7625 id="steiff-column-item-steiff_content_migration_6a44b85566311" 7626 class="min-w-0 justify-self-start flex items-start order-none sm:order-none lg:order-none w-full h-full" 7627 data-liveview-element="steiff_column_item" 7628 > 7629 <div class="overflow-hidden hover:shadow-lg group-[.navigation-cms:hover]:shadow-none group-[.navigation-cms]:rounded-md group-[.teaser-alternative-design]:relative group-[.navigation-cms]:p-2 w-full"> 7630 <div class=" group-[.navigation-cms]:!bg-transparent" 7631 style="background-color: #cdd7d7;" > 7632 <a href="https://www.steiff.com/en/stuffed-animals-toys/all-stuffed-animals/recommendations/key-bag-tags" class="flex flex-col h-full group-[.teaser-alternative-design]:relative" target="_self"> 7633 <div class="group-[.navigation-cms]:h-[11.5625rem] lg:group-[.navigation-cms]:h-[110px] group-[.navigation-cms]:w-full group-[.navigation-cms]:pt-2 group-[.navigation-cms]:px-2 group-[.navigation-cms]:bg-gray-ultralight group-[.navigation-cms]:rounded-t-lg group-[.teaser-alternative-design]:!h-full group-[.teaser-alternative-design]:!w-full group-[.teaser-alternative-design]:!min-h-0 group-[.teaser-alternative-design]:!p-0 group-[.teaser-alternative-design]:!bg-transparent group-[.teaser-alternative-design]:rounded-lg"> 7634 <picture data-liveview-element="image"><source media="(min-width: 1024px)" type="image/avif" srcset="https://www.steiff.com/media/wysiwyg/Homepage/Aktuelles_2026/260818_steiff_back-to-school-schluesselanhaenger_2erTeaser_1146x740px__v2.jpg?format=avif 1x"><source media="(min-width: 1024px)" type="image/webp" srcset="https://www.steiff.com/media/wysiwyg/Homepage/Aktuelles_2026/260818_steiff_back-to-school-schluesselanhaenger_2erTeaser_1146x740px__v2.jpg?format=webp 1x"><source media="(min-width: 1024px)" type="image/jpeg" srcset="https://www.steiff.com/media/wysiwyg/Homepage/Aktuelles_2026/260818_steiff_back-to-school-schluesselanhaenger_2erTeaser_1146x740px__v2.jpg?format=auto 1x"><source type="image/avif" srcset="https://www.steiff.com/media/wysiwyg/Homepage/Aktuelles_2026/260818_steiff_back-to-school-schluesselanhaenger_2erTeaser_686x370px__v2.jpg?format=avif 1x"><source type="image/webp" srcset="https://www.steiff.com/media/wysiwyg/Homepage/Aktuelles_2026/260818_steiff_back-to-school-schluesselanhaenger_2erTeaser_686x370px__v2.jpg?format=webp 1x"><source type="image/jpeg" srcset="https://www.steiff.com/media/wysiwyg/Homepage/Aktuelles_2026/260818_steiff_back-to-school-schluesselanhaenger_2erTeaser_686x370px__v2.jpg?format=auto 1x"><img src="https://www.steiff.com/media/wysiwyg/Homepage/Aktuelles_2026/260818_steiff_back-to-school-schluesselanhaenger_2erTeaser_686x370px__v2.jpg?format=webp" width="1372" height="740" alt="pendants rabbit and teddy bear on rucksack" loading="lazy" class=" object-cover w-full h-auto group-[.navigation-cms]:h-full group-[.navigation-cms]:rounded-lg group-[.teaser-alternative-design]:brightness-50"></picture> </div> 7635 <div class="teaser-content flex flex-col w-full flex-grow group-[.navigation-cms]:items-center group-[.teaser-alternative-design]:absolute group-[.teaser-alternative-design]:top-1/2 group-[.teaser-alternative-design]:left-1/2 group-[.teaser-alternative-design]:-translate-x-1/2 group-[.teaser-alternative-design]:-translate-y-1/2 group-[.navigation-cms]:justify-center group-[.navigation-cms]:bg-gray-ultralight group-[.navigation-cms]:rounded-b-lg group-[.navigation-cms]:pt-2 group-[.navigation-cms]:pr-3 group-[.navigation-cms]:pb-3 group-[.navigation-cms]:pl-2 group-[.teaser-alternative-design]:!bg-transparent group-[.teaser-alternative-design]:!p-0"> 7636 <div class="cmsp511-text-center p-6 group-[.navigation-cms]:p-0 group-[.teaser-alternative-design]:px-4 group-[.teaser-alternative-design]:py-6"> 7637 <h3 data-liveview-element="steiff-headline" 7638 class="hyphens-auto break-words h4 cmsp511-text-center teaser-headline group-[.teaser-alternative-design]:leading-[110%] group-[.teaser-alternative-design]:font-bold group-[.teaser-alternative-design]:text-center group-[.navigation-cms]:mb-2 group-[.navigation-cms]:font-bold group-[.navigation-cms]:text-left group-[.navigation-cms]:!text-black group-[.navigation-cms]:!cmsp511-text-base group-[.navigation-cms]:leading-[110%] group-[.teaser-alternative-design]:!text-white group-[.teaser-alternative-design]:!text-[1.5rem]" 7639 > 7640 For the school bag</h3> 7641 <sp
7641an class="btn btn-primary mt-4 md:mt-6 group-[.navigation-cms]:!mt-2 group-[.navigation-cms]:flex group-[.navigation-cms]:items-center group-[.navigation-cms]:justify-center group-[.navigation-cms]:max-w-[7.75rem] group-[.navigation-cms]:px-4 group-[.navigation-cms]:text-xs group-[.navigation-cms]:font-normal group-[.navigation-cms]:shadow-md group-[.navigation-cms]:mx-auto group-[.navigation-cms\:not\(.teaser-alternative-design\)]:!text-white group-[.navigation-cms\:not\(.teaser-alternative-design\)]:!bg-black group-[.teaser-alternative-design]:max-w-[7.75rem] group-[.teaser-alternative-design]:text-xs group-[.teaser-alternative-design]:!text-gray-dark group-[.teaser-alternative-design]:!bg-white group-[.teaser-alternative-design]:hover:shadow-lg" 7642 > 7643 <span class="group-[.navigation-cms]:text-inherit">To the pendants</span> 7644 </span> 7645 </div> 7646 </div> 7647 </a> 7648 </div> 7649 </div> 7650 </div> 7651 <div 7652 id="steiff-column-item-steiff_content_migration_6a44b8556d643" 7653 class="min-w-0 justify-self-start flex items-start order-none sm:order-none lg:order-none w-full h-full" 7654 data-liveview-element="steiff_column_item" 7655 > 7656 <div class="overflow-hidden hover:shadow-lg group-[.navigation-cms:hover]:shadow-none group-[.navigation-cms]:rounded-md group-[.teaser-alternative-design]:relative group-[.navigation-cms]:p-2 w-full"> 7657 <div class=" group-[.navigation-cms]:!bg-transparent" 7658 style="background-color: #ffebd2;" > 7659 <a href="https://www.steiff.com/en/baby-kids-fashion/recommendations/jackets" class="flex flex-col h-full group-[.teaser-alternative-design]:relative" target="_self"> 7660 <div class="group-[.navigation-cms]:h-[11.5625rem] lg:group-[.navigation-cms]:h-[110px] group-[.navigation-cms]:w-full group-[.navigation-cms]:pt-2 group-[.navigation-cms]:px-2 group-[.navigation-cms]:bg-gray-ultralight group-[.navigation-cms]:rounded-t-lg group-[.teaser-alternative-design]:!h-full group-[.teaser-alternative-design]:!w-full group-[.teaser-alternative-design]:!min-h-0 group-[.teaser-alternative-design]:!p-0 group-[.teaser-alternative-design]:!bg-transparent group-[.teaser-alternative-design]:rounded-lg"> 7661 <picture data-liveview-element="image"><source media="(min-width: 1024px)" type="image/avif" srcset="https://www.steiff.com/media/wysiwyg/Homepage/Aktuelles_2026/260901_steiff_HW-Fashion-Jacken_2erTeaser_1146x740px__v2.jpg?format=avif 1x"><source media="(min-width: 1024px)" type="image/webp" srcset="https://www.steiff.com/media/wysiwyg/Homepage/Aktuelles_2026/260901_steiff_HW-Fashion-Jacken_2erTeaser_1146x740px__v2.jpg?format=webp 1x"><source media="(min-width: 1024px)" type="image/jpeg" srcset="https://www.steiff.com/media/wysiwyg/Homepage/Aktuelles_2026/260901_steiff_HW-Fashion-Jacken_2erTeaser_1146x740px__v2.jpg?format=auto 1x"><source type="image/avif" srcset="https://www.steiff.com/media/wysiwyg/Homepage/Aktuelles_2026/260901_steiff_HW-Fashion-Jacken_2erTeaser_686x370px__v2.jpg?format=avif 1x"><source type="image/webp" srcset="https://www.steiff.com/media/wysiwyg/Homepage/Aktuelles_2026/260901_steiff_HW-Fashion-Jacken_2erTeaser_686x370px__v2.jpg?format=webp 1x"><source type="image/jpeg" srcset="https://www.steiff.com/media/wysiwyg/Homepage/Aktuelles_2026/260901_steiff_HW-Fashion-Jacken_2erTeaser_686x370px__v2.jpg?format=auto 1x"><img src="https://www.steiff.com/media/wysiwyg/Homepage/Aktuelles_2026/260901_steiff_HW-Fashion-Jacken_2erTeaser_686x370px__v2.jpg?format=webp" width="1372" height="740" alt="jackets and vests for children" loading="lazy" class=" object-cover w-full h-auto group-[.navigation-cms]:h-full group-[.navigation-cms]:rounded-lg group-[.teaser-alternative-design]:brightness-50"></picture> </div> 7662 <div class="teaser-content flex flex-col w-full flex-grow group-[.navigation-cms]:items-center group-[.teaser-alternative-design]:absolute group-[.teaser-alternative-design]:top-1/2 group-[.teaser-alternative-design]:left-1/2 group-[.teaser-alternative-design]:-translate-x-1/2 group-[.teaser-alternative-design]:-translate-y-1/2 group-[.navigation-cms]:justify-center group-[.navigation-cms]:bg-gray-ultralight group-[.navigation-cms]:rounded-b-lg group-[.navigation-cms]:pt-2 group-[.navigation-cms]:pr-3 group-[.navigation-cms]:pb-3 group-[.navigation-cms]:pl-2 group-[.teaser-alternative-design]:!bg-transparent group-[.teaser-alternative-design]:!p-0"> 7663 <div class="cmsp511-text-center p-6 group-[.navigation-cms]:p-0 group-[.teaser-alternative-design]:px-4 group-[.teaser-alternative-design]:py-6"> 7664 <h3 data-liveview-element="steiff-headline" 7665 class="hyphens-auto break-words h4 cmsp511-text-center teaser-headline group-[.teaser-alternative-design]:leading-[110%] group-[.teaser-alternative-design]:font-bold group-[.teaser-alternative-design]:text-center group-[.navigation-cms]:mb-2 group-[.navigation-cms]:font-bold group-[.navigation-cms]:text-left group-[.navigation-cms]:!text-black group-[.navigation-cms]:!cmsp511-text-base group-[.navigation-cms]:leading-[110%] group-[.teaser-alternative-design]:!text-white group-[.teaser-alternative-design]:!text-[1.5rem]" 7666 > 7667 Jackets and vests</h3> 7668 <sp
7668an class="btn btn-primary mt-4 md:mt-6 group-[.navigation-cms]:!mt-2 group-[.navigation-cms]:flex group-[.navigation-cms]:items-center group-[.navigation-cms]:justify-center group-[.navigation-cms]:max-w-[7.75rem] group-[.navigation-cms]:px-4 group-[.navigation-cms]:text-xs group-[.navigation-cms]:font-normal group-[.navigation-cms]:shadow-md group-[.navigation-cms]:mx-auto group-[.navigation-cms\:not\(.teaser-alternative-design\)]:!text-white group-[.navigation-cms\:not\(.teaser-alternative-design\)]:!bg-black group-[.teaser-alternative-design]:max-w-[7.75rem] group-[.teaser-alternative-design]:text-xs group-[.teaser-alternative-design]:!text-gray-dark group-[.teaser-alternative-design]:!bg-white group-[.teaser-alternative-design]:hover:shadow-lg" 7669 > 7670 <span class="group-[.navigation-cms]:text-inherit">To the jackets</span> 7671 </span> 7672 </div> 7673 </div> 7674 </a> 7675 </div> 7676 </div> 7677 </div> 7678 <style> 7679 :where(#steiff-column-migrated_1782888533_6a44b8555a1f6) { 7680 --cols: repeat(1, minmax(0px, 1fr)); 7681 --gap: 1rem; 7682 grid-template-columns: var(--cols); 7683 gap: var(--gap); 7684 } 7685 7686 @media (min-width: 640px) { 7687 :where(#steiff-column-migrated_1782888533_6a44b8555a1f6) { 7688 --cols: repeat(2, minmax(0px, 1fr)); } 7689 } 7690 7691 </style> 7692</div> 7693 </div> 7694 </div> 7695 <div data-liveview-element="steiff_row" 7696 class=" not-prose container" 7697 > 7698 <div class=" pt-10 pb-8 w-full max-w-full min-w-0" 7699 > 7700 <div class="slider-title flex flex-row justify-between " 7701 > 7702 <h3 data-liveview-element="steiff-headline" 7703 class="hyphens-auto break-words h3 cmsp511-text-left" 7704 > 7705 Cuddly toys top sellers</h3> 7706 </div> 7707 <div class="slider-wrapper min-w-0"> 7708
7708<script> 7709 ((globalScope) => { 7710 'use strict'; 7711 7712 if (globalScope.__steiffListAddToCartInit) { 7713 return; 7714 } 7715 globalScope.__steiffListAddToCartInit = true; 7716 7717 const uencPlaceholder = '%25uenc%25'; 7718 const genericErrorText = 'We\u0020can\u0027t\u0020add\u0020this\u0020item\u0020to\u0020your\u0020shopping\u0020cart\u0020right\u0020now.'; 7719 7720 const setSubmitLoading = (button, isLoading) => { 7721 if (!(button instanceof HTMLButtonElement)) { 7722 return; 7723 } 7724 button.disabled = isLoading; 7725 button.classList.toggle('opacity-50', isLoading); 7726 button.classList.toggle('pointer-events-none', isLoading); 7727 button.toggleAttribute('aria-busy', isLoading); 7728 }; 7729 7730 const setCartLoading = (isLoading) => { 7731 globalScope.dispatchEvent(new CustomEvent('cart-is-loading', { 7732 detail: { isLoading }, 7733 })); 7734 }; 7735 7736 const invalidatePrivateContentCache = () => { 7737 globalScope.hyva?.setCookie('mage-cache-sessid', '', -1, true); 7738 try { 7739 globalScope.hyva?.getBrowserStorage()?.removeItem('mage-cache-storage'); 7740 } catch (_storageError) {} 7741 }; 7742 7743 const triggerCustomerSectionReload = () => { 7744 invalidatePrivateContentCache(); 7745 globalScope.dispatchEvent(new CustomEvent('reload-customer-section-data')); 7746 }; 7747 7748 const submitAddToCartRequest = ({ action, body, button, onStart }) => { 7749 onStart?.(); 7750 setSubmitLoading(button, true); 7751 setCartLoading(true); 7752 7753 fetch(action, { 7754 method: 'POST', 7755 body, 7756 headers: { 7757 'X-Requested-With': 'XMLHttpRequest', 7758 }, 7759 mode: 'cors', 7760 credentials: 'include', 7761 }) 7762 .then((response) => { 7763 if (!response.ok) { 7764 throw new Error('Network response was not ok'); 7765 } 7766 return response.json(); 7767 }) 7768 .then((result) => { 7769 if (result?.backUrl) { 7770 globalScope.location.assign(result.backUrl); 7771 return; 7772 } 7773 if (result?.product?.statusText) { 7774 typeof globalScope.dispatchMessages !== 'undefined' && globalScope.dispatchMessages( 7775 [{ type: 'error', text: result.product.statusText }], 7776 5000 7777 ); 7778 return; 7779 } 7780 triggerCustomerSectionReload(); 7781 }) 7782 .catch(() => { 7783 typeof globalScope.dispatchMessages !== 'undefined' && globalScope.dispatchMessages( 7784 [{ type: 'error', text: genericErrorText }], 7785 5000 7786 ); 7787 }) 7788 .finally(() => { 7789 setSubmitLoading(button, false); 7790 setCartLoading(false); 7791 }); 7792 }; 7793 7794 globalScope.steiffAjaxAddToCart = submitAddToCartRequest; 7795 7796 document.addEventListener('submit', (event) => { 7797 const target = event.target; 7798 const form = target instanceof HTMLFormElement 7799 ? target 7800 : (target instanceof Element ? target.closest('form.product_addtocart_form') : null); 7801 7802 if (!(form instanceof HTMLFormElement) || !form.classList.contains('product_addtocart_form')) { 7803 return; 7804 } 7805 7806 if (form.id === 'product_addtocart_form') { 7807 return; 7808 } 7809 7810 event.preventDefault(); 7811 7812 // Configurables need PDP options — do not fire ee.addToCart on listing/slider/search. 7813 if (form.dataset.productType !== 'configurable') { 7814 globalScope.steiffTrackAddToCart?.(form); 7815 } 7816 7817 const submitButton = event.submitter instanceof HTMLButtonElement 7818 ? event.submitter 7819 : form.querySelector('[data-addto="cart"]'); 7820 7821 const hyvaApi = globalScope.hyva; 7822 const action = form.action.replace(uencPlaceholder, hyvaApi.getUenc()); 7823 const data = new FormData(form); 7824 data.set('uenc', hyvaApi.getUenc()); 7825 7826 if (!data.get('form_key')) { 7827 data.set('form_key', hyvaApi.getFormKey()); 7828 } 7829
7830 submitAddToCartRequest({ 7831 action, 7832 body: data, 7833 button: submitButton, 7834 }); 7835 }); 7836 })(typeof globalThis !== 'undefined' ? globalThis : window); 7837</script>
vendor: 1 bytes, line 7837
7837
7838<script> 7839 'use strict'; 7840 7841 (() => { 7842 if (window.__swiperLoaderScheduled) return; 7843 window.__swiperLoaderScheduled = true; 7844 7845 window.addEventListener('DOMContentLoaded', () => { 7846 const cssUrl = 'https://www.steiff.com/static/version1790768634/frontend/Steiff/default/en_GB/css/swiper-bundle.min.css'; 7847 const link = document.createElement('link'); 7848 link.rel = 'stylesheet'; 7849 link.href = cssUrl; 7850 document.head.appendChild(link); 7851 7852 const script = document.createElement('script'); 7853 script.type = 'text/javascript'; 7854 script.src = 'https\u003A\u002F\u002Fwww.steiff.com\u002Fstatic\u002Fversion1790768634\u002Ffrontend\u002FSteiff\u002Fdefault\u002Fen_GB\u002Fjs\u002Fswiper\u002Dbundle.min.js'; 7855 script.addEventListener('load', () => { 7856 document.dispatchEvent(new CustomEvent('swiper-loaded')); 7857 }); 7858 document.head.appendChild(script); 7859 }); 7860 })(); 7861</script>
vendor: 1 bytes, line 7861
7861
7862<script> 7863 'use strict'; 7864 7865 /** 7866 * Alpine.js: initialises Swiper (scrollbar module). API: https://swiperjs.com/swiper-api 7867 */ 7868 function initSwiperSlider() { 7869 return { 7870 swiper: null, 7871 active: 0, 7872 isEnd: false, 7873 itemCount: 20, 7874 pageSize: 4, 7875 initSwiper() { 7876 const container = this.$refs.swiperContainer; 7877 if (!container || this.swiper) return; 7878 7879 const run = () => { 7880 if (this.swiper) return; 7881 const scrollbarEl = this.$refs.swiperScrollbar; 7882 if (!scrollbarEl || !window.Swiper) return; 7883 this.swiper = new window.Swiper(container, { 7884 slidesPerView: 1.5, 7885 spaceBetween: 8, 7886 breakpoints: { 7887 768: { slidesPerView: 2.5 }, 7888 1024: { slidesPerView: 3.5 }, 7889 1280: { slidesPerView: 4 }, 7890 }, 7891 scrollbar: { 7892 el: scrollbarEl, 7893 draggable: true, 7894 hide: false, 7895 }, 7896 on: { 7897 slideChange: (sw) => { 7898 this.active = sw.activeIndex; 7899 this.isEnd = !!sw.isEnd; 7900 }, 7901 }, 7902 }); 7903 this.active = this.swiper.activeIndex; 7904 this.isEnd = !!this.swiper.isEnd; 7905 }; 7906 7907 if (window.Swiper) { 7908 run(); 7909 } else { 7910 document.addEventListener('swiper-loaded', run, { once: true }); 7911 } 7912 }, 7913 prev() { this.swiper?.slidePrev(); }, 7914 next() { this.swiper?.slideNext(); }, 7915 scrollTo(idx) { this.swiper?.slideTo(idx); }, 7916 } 7917 } 7918</script>
7918 7919<section 7920 class="my-8 text-gray-dark min-w-0 w-full" 7921 data-slider-id="productslider-category-migrated_1782888533_6a44b8557eaca" 7922 x-data="initSwiperSlider()" 7923 x-init="$nextTick(() => initSwiper())" 7924 aria-roledescription="Carousel" 7925 aria-label="productslider-category-migrated_1782888533_6a44b8557eaca" 7926 x-defer="intersect" 7927> 7928 <div class="relative min-w-0"> 7929 <a 7930 href="#productslider-category-migrated_1782888533_6a44b8557eaca-slider-end" 7931 class="action skip sr-only focus:not-sr-only focus:absolute focus:z-30 focus:bg-white" 7932 > 7933 Press to skip carousel </a> 7934 <div class="swiper product-slider-swiper flex-none relative w-full min-w-0 pb-3 overflow-x-hidden" x-ref="swiperContainer"> 7935 <div class="swiper-wrapper"> 7936 <div class="swiper-slide p-2 flex shrink-0 md:w-1/2 lg:w-1/3 xl:w-1/4" 7937 role="group" 7938 aria-roledescription="slide" 7939 aria-label="1 of 20" 7940 > 7941 7942<form method="post" 7943 action="https://www.steiff.com/en/checkout/cart/add/uenc/%25uenc%25/product/319116/" 7944 class="item product relative product-item transition-shadow product_addtocart_form card hover:bg-white grow flex flex-col w-full" 7945 data-product-type="simple" 7946 onsubmit="this.elements.form_key.value = hyva.getFormKey()" 7947 data-sku="081064" 7948 > 7949 <input name="form_key" type="hidden" value="wZnDfYaXZ5MB2BTC" /> <input type="hidden" name="product" value="319116"/> 7950 <div class="relative"> 7951 <a href="https://www.steiff.com/en/hoppie-ballet-rabbit-081064" 7952 title="Hoppie ballet rabbit" 7953 class="product photo product-item-photo block mx-auto mb-3 w-full aspect-[4/5]" 7954 tabindex="-1" 7955 onclick="window.steiffTrackSliderProductClick?.("productslider-category-migrated_1782888533_6a44b8557eaca",0);" 7956 > 7957 <img class="object-contain w-full product-image-photo" 7958 @update-gallery-319116.window="$root.src = $event.detail" 7959 src="https://www.steiff.com/media/catalog/product/h/o/hoppie-ballethase-081064.jpg?format=webp&width=480" 7960 loading="lazy" 7961 width="240" 7962 height="300" 7963 alt="Hoppie Balletthase" 7964 title="Hoppie Balletthase" 7965/> 7966 </a> 7967 <div class="flex flex-row gap-2 w-full justify-end md:absolute md:bottom-4"> 7968 <button x-data="initWishlist()" 7969 x-defer="intersect" 7970 @private-content-loaded.window="setLoginState($event.detail.data)" 7971 @wishlist-after-auth-login.window="handleWishlistAfterAuthLogin()" 7972 @auth-modal-wishlist-cancelled.window="clearPendingWishlist()" 7973 @wishlist-product-added.window="handleWishlistProductAdded($event.detail)" 7974 @wishlist-product-removed.window="handleWishlistProductRemoved($event.detail)" 7975 @click.prevent.stop="toggleWishlist(319116, 'Hoppie\u0020ballet\u0020rabbit')" 7976 :aria-disabled="wishlistPending" 7977 :aria-busy="wishlistPending" 7978 aria-label="Add to Wish List Hoppie ballet rabbit" 7979 :aria-label="isInWishlist(319116) ? 'Remove\u0020from\u0020Wish\u0020List\u0020Hoppie\u0020ballet\u0020rabbit' : 'Add\u0020to\u0020Wish\u0020List\u0020Hoppie\u0020ballet\u0020rabbit'" 7980 type="button" 7981 class="group rounded-full w-9 h-9 p-2 btn btn-secondary border-0 inline-flex shrink-0 items-center justify-center text-cherryRed hover:text-cherryRed" 7982 :class="{ 'opacity-50 pointer-events-none': wishlistPending }" 7983 data-addto="wishlist" 7984 > 7985 <span x-cloak 7986 :class="isInWishlist(319116) 7987 ? 'flex group-hover:hidden' 7988 : 'hidden group-hover:flex'"> 7989 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" width="20" height="20" aria-hidden="true"> 7990 <path fill-rule="evenodd" d="M3.172 5.172a4 4 0 015.656 0L10 6.343l1.172-1.171a4 4 0 115.656 5.656L10 17.657l-6.828-6.829a4 4 0 010-5.656z" clip-rule="evenodd"/> 7991</svg> 7992 </span>
7993 <span :class="isInWishlist(319116) 7994 ? 'hidden group-hover:flex' 7995 : 'flex group-hover:hidden'"> 7996 <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" width="20" height="20" aria-hidden="true"> 7997 <path stroke-linecap="round" stroke-linejoin="round" d="M4.318 6.318a4.5 4.5 0 000 6.364L12 20.364l7.682-7.682a4.5 4.5 0 00-6.364-6.364L12 7.636l-1.318-1.318a4.5 4.5 0 00-6.364 0z"/> 7998</svg> 7999 </span> 8000 </button> 8001 8002 <button 8003 class="btn btn-primary rounded-full p-2 justify-center cmsp511-text-sm" 8004 title="Add to Cart Hoppie ballet rabbit" 8005 aria-label="Add to Cart Hoppie ballet rabbit" 8006 data-addto="cart" 8007 > 8008 <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" width="20" height="20" aria-hidden="true"> 8009 <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"/> 8010</svg> 8011 </button> 8012 </div> 8013 </div> 8014 8015 <div class="product-info flex flex-col grow min-h-32"> 8016 <div class="w-fit"> 8017 <p class="cmsp511-text-sm text-gray-medium"> 8018 Size: 8019 30 cm </p> 8020 </div> 8021 <div class="mt-2 mb-1 items-center justify-left font-semibold cmsp511-text-base cmsp511-text-left"> 8022 <a 8023 class="product-item-link line-clamp-2 text-ellipsis overflow-hidden text-black" 8024 href="https://www.steiff.com/en/hoppie-ballet-rabbit-081064" 8025 onclick="window.steiffTrackSliderProductClick?.("productslider-category-migrated_1782888533_6a44b8557eaca",0);" 8026 > 8027 Hoppie ballet rabbit </a> 8028 </div> 8029 8030 8031 <div class="pt-1 text-gray-dark" 8032 x-data="initPriceBox()" 8033 x-defer="intersect" 8034 @update-prices-319116.window="updatePrice($event.detail);" 8035 > 8036 <div class="price-box price-final_price" data-role="priceBox" data-product-id="319116" data-price-box="product-id-319116"> 8037 <span 8038 x-data x-id="['product\u002Dprice\u002D319116']" class="price-container price-final_price tax weee" 8039 > 8040 <span :id="$id('product\u002Dprice\u002D319116')" data-price-amount="49.95" 8041 data-price-type="finalPrice" 8042 class="price-wrapper " 8043 ><span class="price">€49.95</span></span> 8044 </span> 8045 8046 8047</div> </div> 8048 8049 </div> 8050</form> 8051 </div> 8052 <div class="swiper-slide p-2 flex shrink-0 md:w-1/2 lg:w-1/3 xl:w-1/4" 8053 role="group" 8054 aria-roledescription="slide" 8055 aria-label="2 of 20" 8056 > 8057 8058<form method="post" 8059 action="https://www.steiff.com/en/checkout/cart/add/uenc/%25uenc%25/product/340363/" 8060 class="item product relative product-item transition-shadow product_addtocart_form card hover:bg-white grow flex flex-col w-full" 8061 data-product-type="simple" 8062 onsubmit="this.elements.form_key.value = hyva.getFormKey()" 8063 data-sku="112706" 8064 > 8065 <input name="form_key" type="hidden" value="wZnDfYaXZ5MB2BTC" /> <input type="hidden" name="product" value="340363"/> 8066 <div class="relative"> 8067 <a href="https://www.steiff.com/en/pendant-hoppie-rabbit-love-112706" 8068 title="Pendant Hoppie rabbit – Love" 8069 class="product photo product-item-photo block mx-auto mb-3 w-full aspect-[4/5]" 8070 tabindex="-1" 8071 onclick="window.steiffTrackSliderProductClick?.("productslider-category-migrated_1782888533_6a44b8557eaca",1);" 8072 > 8073 <img class="object-contain w-full product-image-photo" 8074 @update-gallery-340363.window="$root.src = $event.detail" 8075 src="https://www.steiff.com/media/catalog/product/a/n/anhaenger-hoppie-hase-love-112706.jpg?format=webp&width=480" 8076 loading="lazy" 8077 width="240" 8078 height="300" 8079 alt="Anhänger Hoppie Hase – Love" 8080 title="Anhänger Hoppie Hase – Love" 8081/> 8082 </a> 8083 <div class="flex flex-row gap-2 w-full justify-end md:absolute md:bottom-4"> 8084 <button x-data="initWishlist()" 8085 x-defer="intersect"
8086 @private-content-loaded.window="setLoginState($event.detail.data)" 8087 @wishlist-after-auth-login.window="handleWishlistAfterAuthLogin()" 8088 @auth-modal-wishlist-cancelled.window="clearPendingWishlist()" 8089 @wishlist-product-added.window="handleWishlistProductAdded($event.detail)" 8090 @wishlist-product-removed.window="handleWishlistProductRemoved($event.detail)" 8091 @click.prevent.stop="toggleWishlist(340363, 'Pendant\u0020Hoppie\u0020rabbit\u0020\u2013\u0020Love')" 8092 :aria-disabled="wishlistPending" 8093 :aria-busy="wishlistPending" 8094 aria-label="Add to Wish List Pendant Hoppie rabbit – Love" 8095 :aria-label="isInWishlist(340363) ? 'Remove\u0020from\u0020Wish\u0020List\u0020Pendant\u0020Hoppie\u0020rabbit\u0020\u2013\u0020Love' : 'Add\u0020to\u0020Wish\u0020List\u0020Pendant\u0020Hoppie\u0020rabbit\u0020\u2013\u0020Love'" 8096 type="button" 8097 class="group rounded-full w-9 h-9 p-2 btn btn-secondary border-0 inline-flex shrink-0 items-center justify-center text-cherryRed hover:text-cherryRed" 8098 :class="{ 'opacity-50 pointer-events-none': wishlistPending }" 8099 data-addto="wishlist" 8100 > 8101 <span x-cloak 8102 :class="isInWishlist(340363) 8103 ? 'flex group-hover:hidden' 8104 : 'hidden group-hover:flex'"> 8105 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" width="20" height="20" aria-hidden="true"> 8106 <path fill-rule="evenodd" d="M3.172 5.172a4 4 0 015.656 0L10 6.343l1.172-1.171a4 4 0 115.656 5.656L10 17.657l-6.828-6.829a4 4 0 010-5.656z" clip-rule="evenodd"/> 8107</svg> 8108 </span> 8109 <span :class="isInWishlist(340363) 8110 ? 'hidden group-hover:flex' 8111 : 'flex group-hover:hidden'"> 8112 <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" width="20" height="20" aria-hidden="true"> 8113 <path stroke-linecap="round" stroke-linejoin="round" d="M4.318 6.318a4.5 4.5 0 000 6.364L12 20.364l7.682-7.682a4.5 4.5 0 00-6.364-6.364L12 7.636l-1.318-1.318a4.5 4.5 0 00-6.364 0z"/> 8114</svg> 8115 </span> 8116 </button> 8117 8118 <button 8119 class="btn btn-primary rounded-full p-2 justify-center cmsp511-text-sm" 8120 title="Add to Cart Pendant Hoppie rabbit – Love" 8121 aria-label="Add to Cart Pendant Hoppie rabbit – Love" 8122 data-addto="cart" 8123 > 8124 <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" width="20" height="20" aria-hidden="true"> 8125 <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"/> 8126</svg> 8127 </button> 8128 </div> 8129 </div> 8130 8131 <div class="product-info flex flex-col grow min-h-32"> 8132 <div class="w-fit"> 8133 <p class="cmsp511-text-sm text-gray-medium"> 8134 Size: 8135 15 cm </p> 8136 </div> 8137 <div class="mt-2 mb-1 items-center justify-left font-semibold cmsp511-text-base cmsp511-text-left"> 8138 <a 8139 class="product-item-link line-clamp-2 text-ellipsis overflow-hidden text-black" 8140 href="https://www.steiff.com/en/pendant-hoppie-rabbit-love-112706" 8141 onclick="window.steiffTrackSliderProductClick?.("productslider-category-migrated_1782888533_6a44b8557eaca",1);" 8142 > 8143 Pendant Hoppie rabbit – Love </a> 8144 </div> 8145 8146 8147 <div class="pt-1 text-gray-dark" 8148 x-data="initPriceBox()" 8149 x-defer="intersect" 8150 @update-prices-340363.window="updatePrice($event.detail);" 8151 > 8152 <div class="price-box price-final_price" data-role="priceBox" data-product-id="340363" data-price-box="product-id-340363"> 8153 <span
8154 x-data x-id="['product\u002Dprice\u002D340363']" class="price-container price-final_price tax weee" 8155 > 8156 <span :id="$id('product\u002Dprice\u002D340363')" data-price-amount="24.95" 8157 data-price-type="finalPrice" 8158 class="price-wrapper " 8159 ><span class="price">€24.95</span></span> 8160 </span> 8161 8162 8163</div> </div> 8164 8165 </div> 8166</form> 8167 </div> 8168 <div class="swiper-slide p-2 flex shrink-0 md:w-1/2 lg:w-1/3 xl:w-1/4" 8169 role="group" 8170 aria-roledescription="slide" 8171 aria-label="3 of 20" 8172 > 8173 8174<form method="post" 8175 action="https://www.steiff.com/en/checkout/cart/add/uenc/%25uenc%25/product/287102/" 8176 class="item product relative product-item transition-shadow product_addtocart_form card hover:bg-white grow flex flex-col w-full" 8177 data-product-type="simple" 8178 onsubmit="this.elements.form_key.value = hyva.getFormKey()" 8179 data-sku="081026" 8180 > 8181 <input name="form_key" type="hidden" value="wZnDfYaXZ5MB2BTC" /> <input type="hidden" name="product" value="287102"/> 8182 <div class="relative"> 8183 <a href="https://www.steiff.com/en/light-at-night-hoppie-rabbit-081026" 8184 title="Light at Night Hoppie rabbit" 8185 class="product photo product-item-photo block mx-auto mb-3 w-full aspect-[4/5]" 8186 tabindex="-1" 8187 onclick="window.steiffTrackSliderProductClick?.("productslider-category-migrated_1782888533_6a44b8557eaca",2);" 8188 > 8189 <img class="object-contain w-full product-image-photo" 8190 @update-gallery-287102.window="$root.src = $event.detail" 8191 src="https://www.steiff.com/media/catalog/product/l/i/light-at-night-hoppie-hase-081026-10.jpg?format=webp&width=480" 8192 loading="lazy" 8193 width="240" 8194 height="300" 8195 alt="Light at Night Hoppie Hase" 8196 title="Light at Night Hoppie Hase" 8197/> 8198 </a> 8199 <div class="flex flex-row gap-2 w-full justify-end md:absolute md:bottom-4"> 8200 <button x-data="initWishlist()" 8201 x-defer="intersect" 8202 @private-content-loaded.window="setLoginState($event.detail.data)" 8203 @wishlist-after-auth-login.window="handleWishlistAfterAuthLogin()" 8204 @auth-modal-wishlist-cancelled.window="clearPendingWishlist()" 8205 @wishlist-product-added.window="handleWishlistProductAdded($event.detail)" 8206 @wishlist-product-removed.window="handleWishlistProductRemoved($event.detail)" 8207 @click.prevent.stop="toggleWishlist(287102, 'Light\u0020at\u0020Night\u0020Hoppie\u0020rabbit')" 8208 :aria-disabled="wishlistPending" 8209 :aria-busy="wishlistPending" 8210 aria-label="Add to Wish List Light at Night Hoppie rabbit" 8211 :aria-label="isInWishlist(287102) ? 'Remove\u0020from\u0020Wish\u0020List\u0020Light\u0020at\u0020Night\u0020Hoppie\u0020rabbit' : 'Add\u0020to\u0020Wish\u0020List\u0020Light\u0020at\u0020Night\u0020Hoppie\u0020rabbit'" 8212 type="button" 8213 class="group rounded-full w-9 h-9 p-2 btn btn-secondary border-0 inline-flex shrink-0 items-center justify-center text-cherryRed hover:text-cherryRed" 8214 :class="{ 'opacity-50 pointer-events-none': wishlistPending }" 8215 data-addto="wishlist" 8216 > 8217 <span x-cloak 8218 :class="isInWishlist(287102) 8219 ? 'flex group-hover:hidden' 8220 : 'hidden group-hover:flex'"> 8221 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" width="20" height="20" aria-hidden="true"> 8222 <path fill-rule="evenodd" d="M3.172 5.172a4 4 0 015.656 0L10 6.343l1.172-1.171a4 4 0 115.656 5.656L10 17.657l-6.828-6.829a4 4 0 010-5.656z" clip-rule="evenodd"/> 8223</svg> 8224 </span> 8225 <span :class="isInWishlist(287102) 8226 ? 'hidden group-hover:flex' 8227 : 'flex group-hover:hidden'"> 8228 <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" width="20" height="20" aria-hidden="true"> 8229 <path stroke-linecap="round" stroke-linejoin="round" d="M4.318 6.318a4.5 4.5 0 000 6.364L12 20.364l7.682-7.682a4.5 4.5 0 00-6.364-6.364L12 7.636l-1.318-1.318a4.5 4.5 0 00-6.364 0z"/> 8230</svg> 8231 </span> 8232 </button> 8233 8234 <button 8235 class="btn btn-primary rounded-full p-2 justify-center cmsp511-text-sm" 8236 title="Add to Cart Light at Night Hoppie rabbit" 8237 aria-label="Add to Cart Light at Night Hoppie rabbit" 8238 data-addto="cart" 8239 > 8240 <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" width="20" height="20" aria-hidden="true"> 8241 <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
82410 014 0z"/> 8242</svg> 8243 </button> 8244 </div> 8245 </div> 8246 8247 <div class="product-info flex flex-col grow min-h-32"> 8248 <div class="w-fit"> 8249 <p class="cmsp511-text-sm text-gray-medium"> 8250 Size: 8251 28 cm </p> 8252 </div> 8253 <div class="mt-2 mb-1 items-center justify-left font-semibold cmsp511-text-base cmsp511-text-left"> 8254 <a 8255 class="product-item-link line-clamp-2 text-ellipsis overflow-hidden text-black" 8256 href="https://www.steiff.com/en/light-at-night-hoppie-rabbit-081026" 8257 onclick="window.steiffTrackSliderProductClick?.("productslider-category-migrated_1782888533_6a44b8557eaca",2);" 8258 > 8259 Light at Night Hoppie rabbit </a> 8260 </div> 8261 8262 8263 <div class="pt-1 text-gray-dark" 8264 x-data="initPriceBox()" 8265 x-defer="intersect" 8266 @update-prices-287102.window="updatePrice($event.detail);" 8267 > 8268 <div class="price-box price-final_price" data-role="priceBox" data-product-id="287102" data-price-box="product-id-287102"> 8269 <span 8270 x-data x-id="['product\u002Dprice\u002D287102']" class="price-container price-final_price tax weee" 8271 > 8272 <span :id="$id('product\u002Dprice\u002D287102')" data-price-amount="70" 8273 data-price-type="finalPrice" 8274 class="price-wrapper " 8275 ><span class="price">€70.00</span></span> 8276 </span> 8277 8278 8279</div> </div> 8280 8281 </div> 8282</form> 8283 </div> 8284 <div class="swiper-slide p-2 flex shrink-0 md:w-1/2 lg:w-1/3 xl:w-1/4" 8285 role="group" 8286 aria-roledescription="slide" 8287 aria-label="4 of 20" 8288 > 8289 8290<form method="post" 8291 action="https://www.steiff.com/en/checkout/cart/add/uenc/%25uenc%25/product/85480/" 8292 class="item product relative product-item transition-shadow product_addtocart_form card hover:bg-white grow flex flex-col w-full" 8293 data-product-type="simple" 8294 onsubmit="this.elements.form_key.value = hyva.getFormKey()" 8295 data-sku="073427" 8296 > 8297 <input name="form_key" type="hidden" value="wZnDfYaXZ5MB2BTC" /> <input type="hidden" name="product" value="85480"/> 8298 <div class="relative"> 8299 <a href="https://www.steiff.com/en/lita-lamb-073427" 8300 title="Lita lamb" 8301 class="product photo product-item-photo block mx-auto mb-3 w-full aspect-[4/5]" 8302 tabindex="-1" 8303 onclick="window.steiffTrackSliderProductClick?.("productslider-category-migrated_1782888533_6a44b8557eaca",3);" 8304 > 8305 <img class="object-contain w-full product-image-photo" 8306 @update-gallery-85480.window="$root.src = $event.detail" 8307 src="https://www.steiff.com/media/catalog/product/s/o/soft-cuddly-friends-lita-lamm-073427-13.jpg?format=webp&width=480" 8308 loading="lazy" 8309 width="240" 8310 height="300" 8311 alt="Lita Lamm" 8312 title="Lita Lamm" 8313/> 8314 </a> 8315 <div class="flex flex-row gap-2 w-full justify-end md:absolute md:bottom-4"> 8316 <button x-data="initWishlist()" 8317 x-defer="intersect" 8318 @private-content-loaded.window="setLoginState($event.detail.data)" 8319 @wishlist-after-auth-login.window="handleWishlistAfterAuthLogin()" 8320 @auth-modal-wishlist-cancelled.window="clearPendingWishlist()" 8321 @wishlist-product-added.window="handleWishlistProductAdded($event.detail)" 8322 @wishlist-product-removed.window="handleWishlistProductRemoved($event.detail)" 8323 @click.prevent.stop="toggleWishlist(85480, 'Lita\u0020lamb')" 8324 :aria-disabled="wishlistPending" 8325 :aria-busy="wishlistPending" 8326 aria-label="Add to Wish List Lita lamb" 8327 :aria-label="isInWishlist(85480) ? 'Remove\u0020from\u0020Wish\u0020List\u0020Lita\u0020lamb' : 'Add\u0020to\u0020Wish\u0020List\u0020Lita\u0020lamb'" 8328 type="button" 8329 class="group rounded-full w-9 h-9 p-2 btn btn-secondary border-0 inline-flex shrink-0 items-center justify-center text-cherryRed hover:text-cherryRed" 8330 :class="{ 'opacity-50 pointer-events-none': wishlistPending }" 8331 data-addto="wishlist" 8332 >
8333 <span x-cloak 8334 :class="isInWishlist(85480) 8335 ? 'flex group-hover:hidden' 8336 : 'hidden group-hover:flex'"> 8337 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" width="20" height="20" aria-hidden="true"> 8338 <path fill-rule="evenodd" d="M3.172 5.172a4 4 0 015.656 0L10 6.343l1.172-1.171a4 4 0 115.656 5.656L10 17.657l-6.828-6.829a4 4 0 010-5.656z" clip-rule="evenodd"/> 8339</svg> 8340 </span> 8341 <span :class="isInWishlist(85480) 8342 ? 'hidden group-hover:flex' 8343 : 'flex group-hover:hidden'"> 8344 <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" width="20" height="20" aria-hidden="true"> 8345 <path stroke-linecap="round" stroke-linejoin="round" d="M4.318 6.318a4.5 4.5 0 000 6.364L12 20.364l7.682-7.682a4.5 4.5 0 00-6.364-6.364L12 7.636l-1.318-1.318a4.5 4.5 0 00-6.364 0z"/> 8346</svg> 8347 </span> 8348 </button> 8349 8350 <button 8351 class="btn btn-primary rounded-full p-2 justify-center cmsp511-text-sm" 8352 title="Add to Cart Lita lamb" 8353 aria-label="Add to Cart Lita lamb" 8354 data-addto="cart" 8355 > 8356 <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" width="20" height="20" aria-hidden="true"> 8357 <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"/> 8358</svg> 8359 </button> 8360 </div> 8361 </div> 8362 8363 <div class="product-info flex flex-col grow min-h-32"> 8364 <div class="w-fit"> 8365 <p class="cmsp511-text-sm text-gray-medium"> 8366 Size: 8367 30 cm </p> 8368 </div> 8369 <div class="mt-2 mb-1 items-center justify-left font-semibold cmsp511-text-base cmsp511-text-left"> 8370 <a 8371 class="product-item-link line-clamp-2 text-ellipsis overflow-hidden text-black" 8372 href="https://www.steiff.com/en/lita-lamb-073427" 8373 onclick="window.steiffTrackSliderProductClick?.("productslider-category-migrated_1782888533_6a44b8557eaca",3);" 8374 > 8375 Lita lamb </a> 8376 </div> 8377 8378 8379 <div class="pt-1 text-gray-dark" 8380 x-data="initPriceBox()" 8381 x-defer="intersect" 8382 @update-prices-85480.window="updatePrice($event.detail);" 8383 > 8384 <div class="price-box price-final_price" data-role="priceBox" data-product-id="85480" data-price-box="product-id-85480"> 8385 <span 8386 x-data x-id="['product\u002Dprice\u002D85480']" class="price-container price-final_price tax weee" 8387 > 8388 <span :id="$id('product\u002Dprice\u002D85480')" data-price-amount="39.95" 8389 data-price-type="finalPrice" 8390 class="price-wrapper " 8391 ><span class="price">€39.95</span></span> 8392 </span> 8393 8394 8395</div> </div> 8396 8397 </div> 8398</form> 8399 </div> 8400 <div class="swiper-slide p-2 flex shrink-0 md:w-1/2 lg:w-1/3 xl:w-1/4" 8401 role="group" 8402 aria-roledescription="slide" 8403 aria-label="5 of 20" 8404 > 8405 8406<form method="post" 8407 action="https://www.steiff.com/en/checkout/cart/add/uenc/%25uenc%25/product/287057/" 8408 class="item product relative product-item transition-shadow product_addtocart_form card hover:bg-white grow flex flex-col w-full" 8409 data-product-type="simple" 8410 onsubmit="this.elements.form_key.value = hyva.getFormKey()" 8411 data-sku="095375" 8412 > 8413 <input name="form_key" type="hidden" value="wZnDfYaXZ5MB2BTC" /> <input type="hidden" name="product" value="287057"/> 8414 <div class="relative"> 8415 <a href="https://www.steiff.com/en/gin-snake-095375" 8416 title="Gin snake" 8417 class="product photo product-item-photo block mx-auto mb-3 w-full aspect-[4/5]" 8418 tabindex="-1" 8419 onclick="window.steiffTrackSliderProductClick?.("productslider-category-migrated_1782888533_6a44b8557eaca",4);" 8420 > 8421 <img class="object-contain w-full product-image-photo" 8422 @update-gallery-287057.window="$root.src = $event.detail" 8423 src="https://www.steiff.com/media/catalog/product/g/i/gin-schlange-095375.jpg?format=webp&width=480" 8424 loading="lazy" 8425 width="240" 8426 height="300" 8427 alt="Gin Schlange" 8428 title="Gin Schlange" 8429/> 8430 </a> 8431 <div class="flex flex-row gap-2 w-full justify-end md:absolute md:bottom-4"> 8432 <button x-data="initWishlist()" 8433 x-defer="intersect"
8434 @private-content-loaded.window="setLoginState($event.detail.data)" 8435 @wishlist-after-auth-login.window="handleWishlistAfterAuthLogin()" 8436 @auth-modal-wishlist-cancelled.window="clearPendingWishlist()" 8437 @wishlist-product-added.window="handleWishlistProductAdded($event.detail)" 8438 @wishlist-product-removed.window="handleWishlistProductRemoved($event.detail)" 8439 @click.prevent.stop="toggleWishlist(287057, 'Gin\u0020snake')" 8440 :aria-disabled="wishlistPending" 8441 :aria-busy="wishlistPending" 8442 aria-label="Add to Wish List Gin snake" 8443 :aria-label="isInWishlist(287057) ? 'Remove\u0020from\u0020Wish\u0020List\u0020Gin\u0020snake' : 'Add\u0020to\u0020Wish\u0020List\u0020Gin\u0020snake'" 8444 type="button" 8445 class="group rounded-full w-9 h-9 p-2 btn btn-secondary border-0 inline-flex shrink-0 items-center justify-center text-cherryRed hover:text-cherryRed" 8446 :class="{ 'opacity-50 pointer-events-none': wishlistPending }" 8447 data-addto="wishlist" 8448 > 8449 <span x-cloak 8450 :class="isInWishlist(287057) 8451 ? 'flex group-hover:hidden' 8452 : 'hidden group-hover:flex'"> 8453 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" width="20" height="20" aria-hidden="true"> 8454 <path fill-rule="evenodd" d="M3.172 5.172a4 4 0 015.656 0L10 6.343l1.172-1.171a4 4 0 115.656 5.656L10 17.657l-6.828-6.829a4 4 0 010-5.656z" clip-rule="evenodd"/> 8455</svg> 8456 </span> 8457 <span :class="isInWishlist(287057) 8458 ? 'hidden group-hover:flex' 8459 : 'flex group-hover:hidden'"> 8460 <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" width="20" height="20" aria-hidden="true"> 8461 <path stroke-linecap="round" stroke-linejoin="round" d="M4.318 6.318a4.5 4.5 0 000 6.364L12 20.364l7.682-7.682a4.5 4.5 0 00-6.364-6.364L12 7.636l-1.318-1.318a4.5 4.5 0 00-6.364 0z"/> 8462</svg> 8463 </span> 8464 </button> 8465 8466 <button 8467 class="btn btn-primary rounded-full p-2 justify-center cmsp511-text-sm" 8468 title="Add to Cart Gin snake" 8469 aria-label="Add to Cart Gin snake" 8470 data-addto="cart" 8471 > 8472 <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" width="20" height="20" aria-hidden="true"> 8473 <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"/> 8474</svg> 8475 </button> 8476 </div> 8477 </div> 8478 8479 <div class="product-info flex flex-col grow min-h-32"> 8480 <div class="w-fit"> 8481 <p class="cmsp511-text-sm text-gray-medium"> 8482 Size: 8483 130 cm </p> 8484 </div> 8485 <div class="mt-2 mb-1 items-center justify-left font-semibold cmsp511-text-base cmsp511-text-left"> 8486 <a 8487 class="product-item-link line-clamp-2 text-ellipsis overflow-hidden text-black" 8488 href="https://www.steiff.com/en/gin-snake-095375" 8489 onclick="window.steiffTrackSliderProductClick?.("productslider-category-migrated_1782888533_6a44b8557eaca",4);" 8490 > 8491 Gin snake </a> 8492 </div> 8493 8494 8495 <div class="pt-1 text-gray-dark" 8496 x-data="initPriceBox()" 8497 x-defer="intersect" 8498 @update-prices-287057.window="updatePrice($event.detail);" 8499 > 8500 <div class="price-box price-final_price" data-role="priceBox" data-product-id="287057" data-price-box="product-id-287057"> 8501 <span 8502 x-data x-id="['product\u002Dprice\u002D287057']" class="price-container price-final_price tax weee" 8503 >
8504 <span :id="$id('product\u002Dprice\u002D287057')" data-price-amount="44.95" 8505 data-price-type="finalPrice" 8506 class="price-wrapper " 8507 ><span class="price">€44.95</span></span> 8508 </span> 8509 8510 8511</div> </div> 8512 8513 </div> 8514</form> 8515 </div> 8516 <div class="swiper-slide p-2 flex shrink-0 md:w-1/2 lg:w-1/3 xl:w-1/4" 8517 role="group" 8518 aria-roledescription="slide" 8519 aria-label="6 of 20" 8520 > 8521 8522<form method="post" 8523 action="https://www.steiff.com/en/checkout/cart/add/uenc/%25uenc%25/product/278494/" 8524 class="item product relative product-item transition-shadow product_addtocart_form card hover:bg-white grow flex flex-col w-full" 8525 data-product-type="simple" 8526 onsubmit="this.elements.form_key.value = hyva.getFormKey()" 8527 data-sku="242717" 8528 > 8529 <input name="form_key" type="hidden" value="wZnDfYaXZ5MB2BTC" /> <input type="hidden" name="product" value="278494"/> 8530 <div class="relative"> 8531 <a href="https://www.steiff.com/en/my-first-steiff-ellie-elephant-242717" 8532 title="My first Steiff Ellie elephant" 8533 class="product photo product-item-photo block mx-auto mb-3 w-full aspect-[4/5]" 8534 tabindex="-1" 8535 onclick="window.steiffTrackSliderProductClick?.("productslider-category-migrated_1782888533_6a44b8557eaca",5);" 8536 > 8537 <img class="object-contain w-full product-image-photo" 8538 @update-gallery-278494.window="$root.src = $event.detail" 8539 src="https://www.steiff.com/media/catalog/product/m/y/my-first-steiff-ellie-elefant-242717.jpg?format=webp&width=480" 8540 loading="lazy" 8541 width="240" 8542 height="300" 8543 alt="My first Steiff Ellie Elefant" 8544 title="My first Steiff Ellie Elefant" 8545/> 8546 </a> 8547 <div class="flex flex-row gap-2 w-full justify-end md:absolute md:bottom-4"> 8548 <button x-data="initWishlist()" 8549 x-defer="intersect" 8550 @private-content-loaded.window="setLoginState($event.detail.data)" 8551 @wishlist-after-auth-login.window="handleWishlistAfterAuthLogin()" 8552 @auth-modal-wishlist-cancelled.window="clearPendingWishlist()" 8553 @wishlist-product-added.window="handleWishlistProductAdded($event.detail)" 8554 @wishlist-product-removed.window="handleWishlistProductRemoved($event.detail)" 8555 @click.prevent.stop="toggleWishlist(278494, 'My\u0020first\u0020Steiff\u0020Ellie\u0020elephant')" 8556 :aria-disabled="wishlistPending" 8557 :aria-busy="wishlistPending" 8558 aria-label="Add to Wish List My first Steiff Ellie elephant" 8559 :aria-label="isInWishlist(278494) ? 'Remove\u0020from\u0020Wish\u0020List\u0020My\u0020first\u0020Steiff\u0020Ellie\u0020elephant' : 'Add\u0020to\u0020Wish\u0020List\u0020My\u0020first\u0020Steiff\u0020Ellie\u0020elephant'" 8560 type="button" 8561 class="group rounded-full w-9 h-9 p-2 btn btn-secondary border-0 inline-flex shrink-0 items-center justify-center text-cherryRed hover:text-cherryRed" 8562 :class="{ 'opacity-50 pointer-events-none': wishlistPending }" 8563 data-addto="wishlist" 8564 > 8565 <span x-cloak 8566 :class="isInWishlist(278494) 8567 ? 'flex group-hover:hidden' 8568 : 'hidden group-hover:flex'"> 8569 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" width="20" height="20" aria-hidden="true"> 8570 <path fill-rule="evenodd" d="M3.172 5.172a4 4 0 015.656 0L10 6.343l1.172-1.171a4 4 0 115.656 5.656L10 17.657l-6.828-6.829a4 4 0 010-5.656z" clip-rule="evenodd"/> 8571</svg> 8572 </span> 8573 <span :class="isInWishlist(278494) 8574 ? 'hidden group-hover:flex' 8575 : 'flex group-hover:hidden'"> 8576 <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" width="20" height="20" aria-hidden="true"> 8577 <path stroke-linecap="round" stroke-linejoin="round" d="M4.318 6.318a4.5 4.5 0 000 6.364L12 20.364l7.682-7.682a4.5 4.5 0 00-6.364-6.364L12 7.636l-1.318-1.318a4.5 4.5 0 00-6.364 0z"/> 8578</svg> 8579 </span> 8580 </button> 8581 8582 <button 8583 class="btn btn-primary rounded-full p-2 justify-center cmsp511-text-sm" 8584 title="Add to Cart My first Steiff Ellie elephant" 8585 aria-label="Add to Cart My first Steiff Ellie elephant" 8586 data-addto="cart" 8587 > 8588 <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" width="20" height="20" aria-hidden="true"> 8589 <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
85890 014 0z"/> 8590</svg> 8591 </button> 8592 </div> 8593 </div> 8594 8595 <div class="product-info flex flex-col grow min-h-32"> 8596 <div class="w-fit"> 8597 <p class="cmsp511-text-sm text-gray-medium"> 8598 Size: 8599 24 cm </p> 8600 </div> 8601 <div class="mt-2 mb-1 items-center justify-left font-semibold cmsp511-text-base cmsp511-text-left"> 8602 <a 8603 class="product-item-link line-clamp-2 text-ellipsis overflow-hidden text-black" 8604 href="https://www.steiff.com/en/my-first-steiff-ellie-elephant-242717" 8605 onclick="window.steiffTrackSliderProductClick?.("productslider-category-migrated_1782888533_6a44b8557eaca",5);" 8606 > 8607 My first Steiff Ellie elephant </a> 8608 </div> 8609 8610 8611 <div class="pt-1 text-gray-dark" 8612 x-data="initPriceBox()" 8613 x-defer="intersect" 8614 @update-prices-278494.window="updatePrice($event.detail);" 8615 > 8616 <div class="price-box price-final_price" data-role="priceBox" data-product-id="278494" data-price-box="product-id-278494"> 8617 <span 8618 x-data x-id="['product\u002Dprice\u002D278494']" class="price-container price-final_price tax weee" 8619 > 8620 <span :id="$id('product\u002Dprice\u002D278494')" data-price-amount="37.95" 8621 data-price-type="finalPrice" 8622 class="price-wrapper " 8623 ><span class="price">€37.95</span></span> 8624 </span> 8625 8626 8627</div> </div> 8628 8629 </div> 8630</form> 8631 </div> 8632 <div class="swiper-slide p-2 flex shrink-0 md:w-1/2 lg:w-1/3 xl:w-1/4" 8633 role="group" 8634 aria-roledescription="slide" 8635 aria-label="7 of 20" 8636 > 8637 8638<form method="post" 8639 action="https://www.steiff.com/en/checkout/cart/add/uenc/%25uenc%25/product/85744/" 8640 class="item product relative product-item transition-shadow product_addtocart_form card hover:bg-white grow flex flex-col w-full" 8641 data-product-type="simple" 8642 onsubmit="this.elements.form_key.value = hyva.getFormKey()" 8643 data-sku="241833" 8644 > 8645 <input name="form_key" type="hidden" value="wZnDfYaXZ5MB2BTC" /> <input type="hidden" name="product" value="85744"/> 8646 <div class="relative"> 8647 <a href="https://www.steiff.com/en/ollie-owl-241833" 8648 title="Ollie owl" 8649 class="product photo product-item-photo block mx-auto mb-3 w-full aspect-[4/5]" 8650 tabindex="-1" 8651 onclick="window.steiffTrackSliderProductClick?.("productslider-category-migrated_1782888533_6a44b8557eaca",6);" 8652 > 8653 <img class="object-contain w-full product-image-photo" 8654 @update-gallery-85744.window="$root.src = $event.detail" 8655 src="https://www.steiff.com/media/catalog/product/s/o/soft-cuddly-friends-ollie-eule-241833-7.jpg?format=webp&width=480" 8656 loading="lazy" 8657 width="240" 8658 height="300" 8659 alt="Ollie Eule" 8660 title="Ollie Eule" 8661/> 8662 </a> 8663 <div class="flex flex-row gap-2 w-full justify-end md:absolute md:bottom-4"> 8664 <button x-data="initWishlist()" 8665 x-defer="intersect" 8666 @private-content-loaded.window="setLoginState($event.detail.data)" 8667 @wishlist-after-auth-login.window="handleWishlistAfterAuthLogin()" 8668 @auth-modal-wishlist-cancelled.window="clearPendingWishlist()" 8669 @wishlist-product-added.window="handleWishlistProductAdded($event.detail)" 8670 @wishlist-product-removed.window="handleWishlistProductRemoved($event.detail)" 8671 @click.prevent.stop="toggleWishlist(85744, 'Ollie\u0020owl')" 8672 :aria-disabled="wishlistPending" 8673 :aria-busy="wishlistPending" 8674 aria-label="Add to Wish List Ollie owl" 8675 :aria-label="isInWishlist(85744) ? 'Remove\u0020from\u0020Wish\u0020List\u0020Ollie\u0020owl' : 'Add\u0020to\u0020Wish\u0020List\u0020Ollie\u0020owl'" 8676 type="button" 8677 class="group rounded-full w-9 h-9 p-2 btn btn-secondary border-0 inline-flex shrink-0 items-center justify-center text-cherryRed hover:text-cherryRed" 8678 :class="{ 'opacity-50 pointer-events-none': wishlistPending }" 8679 data-addto="wishlist" 8680 >
8681 <span x-cloak 8682 :class="isInWishlist(85744) 8683 ? 'flex group-hover:hidden' 8684 : 'hidden group-hover:flex'"> 8685 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" width="20" height="20" aria-hidden="true"> 8686 <path fill-rule="evenodd" d="M3.172 5.172a4 4 0 015.656 0L10 6.343l1.172-1.171a4 4 0 115.656 5.656L10 17.657l-6.828-6.829a4 4 0 010-5.656z" clip-rule="evenodd"/> 8687</svg> 8688 </span> 8689 <span :class="isInWishlist(85744) 8690 ? 'hidden group-hover:flex' 8691 : 'flex group-hover:hidden'"> 8692 <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" width="20" height="20" aria-hidden="true"> 8693 <path stroke-linecap="round" stroke-linejoin="round" d="M4.318 6.318a4.5 4.5 0 000 6.364L12 20.364l7.682-7.682a4.5 4.5 0 00-6.364-6.364L12 7.636l-1.318-1.318a4.5 4.5 0 00-6.364 0z"/> 8694</svg> 8695 </span> 8696 </button> 8697 8698 <button 8699 class="btn btn-primary rounded-full p-2 justify-center cmsp511-text-sm" 8700 title="Add to Cart Ollie owl" 8701 aria-label="Add to Cart Ollie owl" 8702 data-addto="cart" 8703 > 8704 <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" width="20" height="20" aria-hidden="true"> 8705 <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"/> 8706</svg> 8707 </button> 8708 </div> 8709 </div> 8710 8711 <div class="product-info flex flex-col grow min-h-32"> 8712 <div class="w-fit"> 8713 <p class="cmsp511-text-sm text-gray-medium"> 8714 Size: 8715 23 cm </p> 8716 </div> 8717 <div class="mt-2 mb-1 items-center justify-left font-semibold cmsp511-text-base cmsp511-text-left"> 8718 <a 8719 class="product-item-link line-clamp-2 text-ellipsis overflow-hidden text-black" 8720 href="https://www.steiff.com/en/ollie-owl-241833" 8721 onclick="window.steiffTrackSliderProductClick?.("productslider-category-migrated_1782888533_6a44b8557eaca",6);" 8722 > 8723 Ollie owl </a> 8724 </div> 8725 8726 8727 <div class="pt-1 text-gray-dark" 8728 x-data="initPriceBox()" 8729 x-defer="intersect" 8730 @update-prices-85744.window="updatePrice($event.detail);" 8731 > 8732 <div class="price-box price-final_price" data-role="priceBox" data-product-id="85744" data-price-box="product-id-85744"> 8733 <span 8734 x-data x-id="['product\u002Dprice\u002D85744']" class="price-container price-final_price tax weee" 8735 > 8736 <span :id="$id('product\u002Dprice\u002D85744')" data-price-amount="37.95" 8737 data-price-type="finalPrice" 8738 class="price-wrapper " 8739 ><span class="price">€37.95</span></span> 8740 </span> 8741 8742 8743</div> </div> 8744 8745 </div> 8746</form> 8747 </div> 8748 <div class="swiper-slide p-2 flex shrink-0 md:w-1/2 lg:w-1/3 xl:w-1/4" 8749 role="group" 8750 aria-roledescription="slide" 8751 aria-label="8 of 20" 8752 > 8753 8754<form method="post" 8755 action="https://www.steiff.com/en/checkout/cart/add/uenc/%25uenc%25/product/320853/" 8756 class="item product relative product-item transition-shadow product_addtocart_form card hover:bg-white grow flex flex-col w-full" 8757 data-product-type="simple" 8758 onsubmit="this.elements.form_key.value = hyva.getFormKey()" 8759 data-sku="074417" 8760 > 8761 <input name="form_key" type="hidden" value="wZnDfYaXZ5MB2BTC" /> <input type="hidden" name="product" value="320853"/>
8761 8762 <div class="relative"> 8763 <a href="https://www.steiff.com/en/pedro-racoon-074417" 8764 title="Pedro racoon" 8765 class="product photo product-item-photo block mx-auto mb-3 w-full aspect-[4/5]" 8766 tabindex="-1" 8767 onclick="window.steiffTrackSliderProductClick?.("productslider-category-migrated_1782888533_6a44b8557eaca",7);" 8768 > 8769 <img class="object-contain w-full product-image-photo" 8770 @update-gallery-320853.window="$root.src = $event.detail" 8771 src="https://www.steiff.com/media/catalog/product/p/e/pedro-waschbaer-074417.jpg?format=webp&width=480" 8772 loading="lazy" 8773 width="240" 8774 height="300" 8775 alt="Pedro Waschbär" 8776 title="Pedro Waschbär" 8777/> 8778 </a> 8779 <div class="flex flex-row gap-2 w-full justify-end md:absolute md:bottom-4"> 8780 <button x-data="initWishlist()" 8781 x-defer="intersect" 8782 @private-content-loaded.window="setLoginState($event.detail.data)" 8783 @wishlist-after-auth-login.window="handleWishlistAfterAuthLogin()" 8784 @auth-modal-wishlist-cancelled.window="clearPendingWishlist()" 8785 @wishlist-product-added.window="handleWishlistProductAdded($event.detail)" 8786 @wishlist-product-removed.window="handleWishlistProductRemoved($event.detail)" 8787 @click.prevent.stop="toggleWishlist(320853, 'Pedro\u0020racoon')" 8788 :aria-disabled="wishlistPending" 8789 :aria-busy="wishlistPending" 8790 aria-label="Add to Wish List Pedro racoon" 8791 :aria-label="isInWishlist(320853) ? 'Remove\u0020from\u0020Wish\u0020List\u0020Pedro\u0020racoon' : 'Add\u0020to\u0020Wish\u0020List\u0020Pedro\u0020racoon'" 8792 type="button" 8793 class="group rounded-full w-9 h-9 p-2 btn btn-secondary border-0 inline-flex shrink-0 items-center justify-center text-cherryRed hover:text-cherryRed" 8794 :class="{ 'opacity-50 pointer-events-none': wishlistPending }" 8795 data-addto="wishlist" 8796 > 8797 <span x-cloak 8798 :class="isInWishlist(320853) 8799 ? 'flex group-hover:hidden' 8800 : 'hidden group-hover:flex'"> 8801 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" width="20" height="20" aria-hidden="true"> 8802 <path fill-rule="evenodd" d="M3.172 5.172a4 4 0 015.656 0L10 6.343l1.172-1.171a4 4 0 115.656 5.656L10 17.657l-6.828-6.829a4 4 0 010-5.656z" clip-rule="evenodd"/> 8803</svg> 8804 </span> 8805 <span :class="isInWishlist(320853) 8806 ? 'hidden group-hover:flex' 8807 : 'flex group-hover:hidden'"> 8808 <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" width="20" height="20" aria-hidden="true"> 8809 <path stroke-linecap="round" stroke-linejoin="round" d="M4.318 6.318a4.5 4.5 0 000 6.364L12 20.364l7.682-7.682a4.5 4.5 0 00-6.364-6.364L12 7.636l-1.318-1.318a4.5 4.5 0 00-6.364 0z"/> 8810</svg> 8811 </span> 8812 </button> 8813 8814 <button 8815 class="btn btn-primary rounded-full p-2 justify-center cmsp511-text-sm" 8816 title="Add to Cart Pedro racoon" 8817 aria-label="Add to Cart Pedro racoon" 8818 data-addto="cart" 8819 > 8820 <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" width="20" height="20" aria-hidden="true"> 8821 <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"/> 8822</svg> 8823 </button> 8824 </div> 8825 </div> 8826 8827 <div class="product-info flex flex-col grow min-h-32"> 8828 <div class="w-fit"> 8829 <p class="cmsp511-text-sm text-gray-medium"> 8830 Size: 8831 23 cm </p> 8832 </div> 8833 <div class="mt-2 mb-1 items-center justify-left font-semibold cmsp511-text-base cmsp511-text-left"> 8834 <a 8835 class="product-item-link line-clamp-2 text-ellipsis overflow-hidden text-black" 8836 href="https://www.steiff.com/en/pedro-racoon-074417" 8837 onclick="window.steiffTrackSliderProductClick?.("productslider-category-migrated_1782888533_6a44b8557eaca",7);" 8838 > 8839 Pedro racoon </a> 8840 </div> 8841 8842 8843 <div class="pt-1 text-gray-dark" 8844 x-data="initPriceBox()" 8845 x-defer="intersect" 8846 @update-prices-320853.window="updatePrice($event.detail);" 8847 > 8848 <div class="price-box price-final_price" data-role="priceBox" data-product-id="320853" data-price-box="product-id-320853"> 8849 <span
8850 x-data x-id="['product\u002Dprice\u002D320853']" class="price-container price-final_price tax weee" 8851 > 8852 <span :id="$id('product\u002Dprice\u002D320853')" data-price-amount="44.95" 8853 data-price-type="finalPrice" 8854 class="price-wrapper " 8855 ><span class="price">€44.95</span></span> 8856 </span> 8857 8858 8859</div> </div> 8860 8861 </div> 8862</form> 8863 </div> 8864 <div class="swiper-slide p-2 flex shrink-0 md:w-1/2 lg:w-1/3 xl:w-1/4" 8865 role="group" 8866 aria-roledescription="slide" 8867 aria-label="9 of 20" 8868 > 8869 8870<form method="post" 8871 action="https://www.steiff.com/en/checkout/cart/add/uenc/%25uenc%25/product/85555/" 8872 class="item product relative product-item transition-shadow product_addtocart_form card hover:bg-white grow flex flex-col w-full" 8873 data-product-type="simple" 8874 onsubmit="this.elements.form_key.value = hyva.getFormKey()" 8875 data-sku="073922" 8876 > 8877 <input name="form_key" type="hidden" value="wZnDfYaXZ5MB2BTC" /> <input type="hidden" name="product" value="85555"/> 8878 <div class="relative"> 8879 <a href="https://www.steiff.com/en/dinkie-donkey-073922" 8880 title="Dinkie donkey" 8881 class="product photo product-item-photo block mx-auto mb-3 w-full aspect-[4/5]" 8882 tabindex="-1" 8883 onclick="window.steiffTrackSliderProductClick?.("productslider-category-migrated_1782888533_6a44b8557eaca",8);" 8884 > 8885 <img class="object-contain w-full product-image-photo" 8886 @update-gallery-85555.window="$root.src = $event.detail" 8887 src="https://www.steiff.com/media/catalog/product/s/o/soft-cuddly-friends-dinkie-esel-073922-3.jpg?format=webp&width=480" 8888 loading="lazy" 8889 width="240" 8890 height="300" 8891 alt="Dinkie Esel" 8892 title="Dinkie Esel" 8893/> 8894 </a> 8895 <div class="flex flex-row gap-2 w-full justify-end md:absolute md:bottom-4"> 8896 <button x-data="initWishlist()" 8897 x-defer="intersect" 8898 @private-content-loaded.window="setLoginState($event.detail.data)" 8899 @wishlist-after-auth-login.window="handleWishlistAfterAuthLogin()" 8900 @auth-modal-wishlist-cancelled.window="clearPendingWishlist()" 8901 @wishlist-product-added.window="handleWishlistProductAdded($event.detail)" 8902 @wishlist-product-removed.window="handleWishlistProductRemoved($event.detail)" 8903 @click.prevent.stop="toggleWishlist(85555, 'Dinkie\u0020donkey')" 8904 :aria-disabled="wishlistPending" 8905 :aria-busy="wishlistPending" 8906 aria-label="Add to Wish List Dinkie donkey" 8907 :aria-label="isInWishlist(85555) ? 'Remove\u0020from\u0020Wish\u0020List\u0020Dinkie\u0020donkey' : 'Add\u0020to\u0020Wish\u0020List\u0020Dinkie\u0020donkey'" 8908 type="button" 8909 class="group rounded-full w-9 h-9 p-2 btn btn-secondary border-0 inline-flex shrink-0 items-center justify-center text-cherryRed hover:text-cherryRed" 8910 :class="{ 'opacity-50 pointer-events-none': wishlistPending }" 8911 data-addto="wishlist" 8912 > 8913 <span x-cloak 8914 :class="isInWishlist(85555) 8915 ? 'flex group-hover:hidden' 8916 : 'hidden group-hover:flex'"> 8917 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" width="20" height="20" aria-hidden="true"> 8918 <path fill-rule="evenodd" d="M3.172 5.172a4 4 0 015.656 0L10 6.343l1.172-1.171a4 4 0 115.656 5.656L10 17.657l-6.828-6.829a4 4 0 010-5.656z" clip-rule="evenodd"/> 8919</svg> 8920 </span> 8921 <span :class="isInWishlist(85555) 8922 ? 'hidden group-hover:flex' 8923 : 'flex group-hover:hidden'"> 8924 <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" width="20" height="20" aria-hidden="true"> 8925 <path stroke-linecap="round" stroke-linejoin="round" d="M4.318 6.318a4.5 4.5 0 000 6.364L12 20.364l7.682-7.682a4.5 4.5 0 00-6.364-6.364L12 7.636l-1.318-1.318a4.5 4.5 0 00-6.364 0z"/> 8926</svg> 8927 </span> 8928 </button> 8929 8930 <button 8931 class="btn btn-primary rounded-full p-2 justify-center cmsp511-text-sm" 8932 title="Add to Cart Dinkie donkey" 8933 aria-label="Add to Cart Dinkie donkey" 8934 data-addto="cart" 8935 > 8936 <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" width="20" height="20" aria-hidden="true"> 8937 <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
89370 014 0z"/> 8938</svg> 8939 </button> 8940 </div> 8941 </div> 8942 8943 <div class="product-info flex flex-col grow min-h-32"> 8944 <div class="w-fit"> 8945 <p class="cmsp511-text-sm text-gray-medium"> 8946 Size: 8947 20 cm </p> 8948 </div> 8949 <div class="mt-2 mb-1 items-center justify-left font-semibold cmsp511-text-base cmsp511-text-left"> 8950 <a 8951 class="product-item-link line-clamp-2 text-ellipsis overflow-hidden text-black" 8952 href="https://www.steiff.com/en/dinkie-donkey-073922" 8953 onclick="window.steiffTrackSliderProductClick?.("productslider-category-migrated_1782888533_6a44b8557eaca",8);" 8954 > 8955 Dinkie donkey </a> 8956 </div> 8957 8958 8959 <div class="pt-1 text-gray-dark" 8960 x-data="initPriceBox()" 8961 x-defer="intersect" 8962 @update-prices-85555.window="updatePrice($event.detail);" 8963 > 8964 <div class="price-box price-final_price" data-role="priceBox" data-product-id="85555" data-price-box="product-id-85555"> 8965 <span 8966 x-data x-id="['product\u002Dprice\u002D85555']" class="price-container price-final_price tax weee" 8967 > 8968 <span :id="$id('product\u002Dprice\u002D85555')" data-price-amount="27.95" 8969 data-price-type="finalPrice" 8970 class="price-wrapper " 8971 ><span class="price">€27.95</span></span> 8972 </span> 8973 8974 8975</div> </div> 8976 8977 </div> 8978</form> 8979 </div> 8980 <div class="swiper-slide p-2 flex shrink-0 md:w-1/2 lg:w-1/3 xl:w-1/4" 8981 role="group" 8982 aria-roledescription="slide" 8983 aria-label="10 of 20" 8984 > 8985 8986<form method="post" 8987 action="https://www.steiff.com/en/checkout/cart/add/uenc/%25uenc%25/product/85540/" 8988 class="item product relative product-item transition-shadow product_addtocart_form card hover:bg-white grow flex flex-col w-full" 8989 data-product-type="simple" 8990 onsubmit="this.elements.form_key.value = hyva.getFormKey()" 8991 data-sku="073748" 8992 > 8993 <input name="form_key" type="hidden" value="wZnDfYaXZ5MB2BTC" /> <input type="hidden" name="product" value="85540"/> 8994 <div class="relative"> 8995 <a href="https://www.steiff.com/en/dinkie-donkey-073748" 8996 title="Dinkie donkey" 8997 class="product photo product-item-photo block mx-auto mb-3 w-full aspect-[4/5]" 8998 tabindex="-1" 8999 onclick="window.steiffTrackSliderProductClick?.("productslider-category-migrated_1782888533_6a44b8557eaca",9);" 9000 > 9001 <img class="object-contain w-full product-image-photo" 9002 @update-gallery-85540.window="$root.src = $event.detail" 9003 src="https://www.steiff.com/media/catalog/product/s/o/soft-cuddly-friends-dinkie-esel-073748-3.jpg?format=webp&width=480" 9004 loading="lazy" 9005 width="240" 9006 height="300" 9007 alt="Dinkie Esel" 9008 title="Dinkie Esel" 9009/> 9010 </a> 9011 <div class="flex flex-row gap-2 w-full justify-end md:absolute md:bottom-4"> 9012 <button x-data="initWishlist()" 9013 x-defer="intersect" 9014 @private-content-loaded.window="setLoginState($event.detail.data)" 9015 @wishlist-after-auth-login.window="handleWishlistAfterAuthLogin()" 9016 @auth-modal-wishlist-cancelled.window="clearPendingWishlist()" 9017 @wishlist-product-added.window="handleWishlistProductAdded($event.detail)" 9018 @wishlist-product-removed.window="handleWishlistProductRemoved($event.detail)" 9019 @click.prevent.stop="toggleWishlist(85540, 'Dinkie\u0020donkey')" 9020 :aria-disabled="wishlistPending" 9021 :aria-busy="wishlistPending" 9022 aria-label="Add to Wish List Dinkie donkey" 9023 :aria-label="isInWishlist(85540) ? 'Remove\u0020from\u0020Wish\u0020List\u0020Dinkie\u0020donkey' : 'Add\u0020to\u0020Wish\u0020List\u0020Dinkie\u0020donkey'" 9024 type="button" 9025 class="group rounded-full w-9 h-9 p-2 btn btn-secondary border-0 inline-flex shrink-0 items-center justify-center text-cherryRed hover:text-cherryRed" 9026 :class="{ 'opacity-50 pointer-events-none': wishlistPending }" 9027 data-addto="wishlist" 9028 >
9029 <span x-cloak 9030 :class="isInWishlist(85540) 9031 ? 'flex group-hover:hidden' 9032 : 'hidden group-hover:flex'"> 9033 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" width="20" height="20" aria-hidden="true"> 9034 <path fill-rule="evenodd" d="M3.172 5.172a4 4 0 015.656 0L10 6.343l1.172-1.171a4 4 0 115.656 5.656L10 17.657l-6.828-6.829a4 4 0 010-5.656z" clip-rule="evenodd"/> 9035</svg> 9036 </span> 9037 <span :class="isInWishlist(85540) 9038 ? 'hidden group-hover:flex' 9039 : 'flex group-hover:hidden'"> 9040 <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" width="20" height="20" aria-hidden="true"> 9041 <path stroke-linecap="round" stroke-linejoin="round" d="M4.318 6.318a4.5 4.5 0 000 6.364L12 20.364l7.682-7.682a4.5 4.5 0 00-6.364-6.364L12 7.636l-1.318-1.318a4.5 4.5 0 00-6.364 0z"/> 9042</svg> 9043 </span> 9044 </button> 9045 9046 <button 9047 class="btn btn-primary rounded-full p-2 justify-center cmsp511-text-sm" 9048 title="Add to Cart Dinkie donkey" 9049 aria-label="Add to Cart Dinkie donkey" 9050 data-addto="cart" 9051 > 9052 <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" width="20" height="20" aria-hidden="true"> 9053 <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"/> 9054</svg> 9055 </button> 9056 </div> 9057 </div> 9058 9059 <div class="product-info flex flex-col grow min-h-32"> 9060 <div class="w-fit"> 9061 <p class="cmsp511-text-sm text-gray-medium"> 9062 Size: 9063 30 cm </p> 9064 </div> 9065 <div class="mt-2 mb-1 items-center justify-left font-semibold cmsp511-text-base cmsp511-text-left"> 9066 <a 9067 class="product-item-link line-clamp-2 text-ellipsis overflow-hidden text-black" 9068 href="https://www.steiff.com/en/dinkie-donkey-073748" 9069 onclick="window.steiffTrackSliderProductClick?.("productslider-category-migrated_1782888533_6a44b8557eaca",9);" 9070 > 9071 Dinkie donkey </a> 9072 </div> 9073 9074 9075 <div class="pt-1 text-gray-dark" 9076 x-data="initPriceBox()" 9077 x-defer="intersect" 9078 @update-prices-85540.window="updatePrice($event.detail);" 9079 > 9080 <div class="price-box price-final_price" data-role="priceBox" data-product-id="85540" data-price-box="product-id-85540"> 9081 <span 9082 x-data x-id="['product\u002Dprice\u002D85540']" class="price-container price-final_price tax weee" 9083 > 9084 <span :id="$id('product\u002Dprice\u002D85540')" data-price-amount="39.95" 9085 data-price-type="finalPrice" 9086 class="price-wrapper " 9087 ><span class="price">€39.95</span></span> 9088 </span> 9089 9090 9091</div> </div> 9092 9093 </div> 9094</form> 9095 </div> 9096 <div class="swiper-slide p-2 flex shrink-0 md:w-1/2 lg:w-1/3 xl:w-1/4" 9097 role="group" 9098 aria-roledescription="slide" 9099 aria-label="11 of 20" 9100 > 9101 9102<form method="post" 9103 action="https://www.steiff.com/en/checkout/cart/add/uenc/%25uenc%25/product/161640/" 9104 class="item product relative product-item transition-shadow product_addtocart_form card hover:bg-white grow flex flex-col w-full" 9105 data-product-type="simple" 9106 onsubmit="this.elements.form_key.value = hyva.getFormKey()" 9107 data-sku="063978" 9108 > 9109 <input name="form_key" type="hidden" value="wZnDfYaXZ5MB2BTC" /> <input type="hidden" name="product" value="161640"/> 9110 <div class="relative"> 9111 <a href="https://www.steiff.com/en/piko-pig-063978" 9112 title="Piko pig" 9113 class="product photo product-item-photo block mx-auto mb-3 w-full aspect-[4/5]" 9114 tabindex="-1" 9115 onclick="window.steiffTrackSliderProductClick?.("productslider-category-migrated_1782888533_6a44b8557eaca",10);" 9116 > 9117 <img class="object-contain w-full product-image-photo" 9118 @update-gallery-161640.window="$root.src = $event.detail" 9119 src="https://www.steiff.com/media/catalog/product/s/o/soft-cuddly-friends-piko-schwein-063978-1.jpg?format=webp&width=480" 9120 loading="lazy" 9121 width="240" 9122 height="300" 9123 alt="Piko Schwein" 9124 title="Piko Schwein" 9125/> 9126 </a> 9127 <div class="flex flex-row gap-2 w-full justify-end md:absolute md:bottom-4"> 9128 <button x-data="initWishlist()" 9129 x-defer="intersect"
9130 @private-content-loaded.window="setLoginState($event.detail.data)" 9131 @wishlist-after-auth-login.window="handleWishlistAfterAuthLogin()" 9132 @auth-modal-wishlist-cancelled.window="clearPendingWishlist()" 9133 @wishlist-product-added.window="handleWishlistProductAdded($event.detail)" 9134 @wishlist-product-removed.window="handleWishlistProductRemoved($event.detail)" 9135 @click.prevent.stop="toggleWishlist(161640, 'Piko\u0020pig')" 9136 :aria-disabled="wishlistPending" 9137 :aria-busy="wishlistPending" 9138 aria-label="Add to Wish List Piko pig" 9139 :aria-label="isInWishlist(161640) ? 'Remove\u0020from\u0020Wish\u0020List\u0020Piko\u0020pig' : 'Add\u0020to\u0020Wish\u0020List\u0020Piko\u0020pig'" 9140 type="button" 9141 class="group rounded-full w-9 h-9 p-2 btn btn-secondary border-0 inline-flex shrink-0 items-center justify-center text-cherryRed hover:text-cherryRed" 9142 :class="{ 'opacity-50 pointer-events-none': wishlistPending }" 9143 data-addto="wishlist" 9144 > 9145 <span x-cloak 9146 :class="isInWishlist(161640) 9147 ? 'flex group-hover:hidden' 9148 : 'hidden group-hover:flex'"> 9149 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" width="20" height="20" aria-hidden="true"> 9150 <path fill-rule="evenodd" d="M3.172 5.172a4 4 0 015.656 0L10 6.343l1.172-1.171a4 4 0 115.656 5.656L10 17.657l-6.828-6.829a4 4 0 010-5.656z" clip-rule="evenodd"/> 9151</svg> 9152 </span> 9153 <span :class="isInWishlist(161640) 9154 ? 'hidden group-hover:flex' 9155 : 'flex group-hover:hidden'"> 9156 <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" width="20" height="20" aria-hidden="true"> 9157 <path stroke-linecap="round" stroke-linejoin="round" d="M4.318 6.318a4.5 4.5 0 000 6.364L12 20.364l7.682-7.682a4.5 4.5 0 00-6.364-6.364L12 7.636l-1.318-1.318a4.5 4.5 0 00-6.364 0z"/> 9158</svg> 9159 </span> 9160 </button> 9161 9162 <button 9163 class="btn btn-primary rounded-full p-2 justify-center cmsp511-text-sm" 9164 title="Add to Cart Piko pig" 9165 aria-label="Add to Cart Piko pig" 9166 data-addto="cart" 9167 > 9168 <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" width="20" height="20" aria-hidden="true"> 9169 <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"/> 9170</svg> 9171 </button> 9172 </div> 9173 </div> 9174 9175 <div class="product-info flex flex-col grow min-h-32"> 9176 <div class="w-fit"> 9177 <p class="cmsp511-text-sm text-gray-medium"> 9178 Size: 9179 28 cm </p> 9180 </div> 9181 <div class="mt-2 mb-1 items-center justify-left font-semibold cmsp511-text-base cmsp511-text-left"> 9182 <a 9183 class="product-item-link line-clamp-2 text-ellipsis overflow-hidden text-black" 9184 href="https://www.steiff.com/en/piko-pig-063978" 9185 onclick="window.steiffTrackSliderProductClick?.("productslider-category-migrated_1782888533_6a44b8557eaca",10);" 9186 > 9187 Piko pig </a> 9188 </div> 9189 9190 9191 <div class="pt-1 text-gray-dark" 9192 x-data="initPriceBox()" 9193 x-defer="intersect" 9194 @update-prices-161640.window="updatePrice($event.detail);" 9195 > 9196 <div class="price-box price-final_price" data-role="priceBox" data-product-id="161640" data-price-box="product-id-161640"> 9197 <span 9198 x-data x-id="['product\u002Dprice\u002D161640']" class="price-container price-final_price tax weee" 9199 >
9200 <span :id="$id('product\u002Dprice\u002D161640')" data-price-amount="37.95" 9201 data-price-type="finalPrice" 9202 class="price-wrapper " 9203 ><span class="price">€37.95</span></span> 9204 </span> 9205 9206 9207</div> </div> 9208 9209 </div> 9210</form> 9211 </div> 9212 <div class="swiper-slide p-2 flex shrink-0 md:w-1/2 lg:w-1/3 xl:w-1/4" 9213 role="group" 9214 aria-roledescription="slide" 9215 aria-label="12 of 20" 9216 > 9217 9218<form method="post" 9219 action="https://www.steiff.com/en/checkout/cart/add/uenc/%25uenc%25/product/284588/" 9220 class="item product relative product-item transition-shadow product_addtocart_form card hover:bg-white grow flex flex-col w-full" 9221 data-product-type="simple" 9222 onsubmit="this.elements.form_key.value = hyva.getFormKey()" 9223 data-sku="075490" 9224 > 9225 <input name="form_key" type="hidden" value="wZnDfYaXZ5MB2BTC" /> <input type="hidden" name="product" value="284588"/> 9226 <div class="relative"> 9227 <a href="https://www.steiff.com/en/gilda-goose-075490" 9228 title="Gilda goose" 9229 class="product photo product-item-photo block mx-auto mb-3 w-full aspect-[4/5]" 9230 tabindex="-1" 9231 onclick="window.steiffTrackSliderProductClick?.("productslider-category-migrated_1782888533_6a44b8557eaca",11);" 9232 > 9233 <img class="object-contain w-full product-image-photo" 9234 @update-gallery-284588.window="$root.src = $event.detail" 9235 src="https://www.steiff.com/media/catalog/product/g/i/gilda-gans-075490.jpg?format=webp&width=480" 9236 loading="lazy" 9237 width="240" 9238 height="300" 9239 alt="Gilda Gans" 9240 title="Gilda Gans" 9241/> 9242 </a> 9243 <div class="flex flex-row gap-2 w-full justify-end md:absolute md:bottom-4"> 9244 <button x-data="initWishlist()" 9245 x-defer="intersect" 9246 @private-content-loaded.window="setLoginState($event.detail.data)" 9247 @wishlist-after-auth-login.window="handleWishlistAfterAuthLogin()" 9248 @auth-modal-wishlist-cancelled.window="clearPendingWishlist()" 9249 @wishlist-product-added.window="handleWishlistProductAdded($event.detail)" 9250 @wishlist-product-removed.window="handleWishlistProductRemoved($event.detail)" 9251 @click.prevent.stop="toggleWishlist(284588, 'Gilda\u0020goose')" 9252 :aria-disabled="wishlistPending" 9253 :aria-busy="wishlistPending" 9254 aria-label="Add to Wish List Gilda goose" 9255 :aria-label="isInWishlist(284588) ? 'Remove\u0020from\u0020Wish\u0020List\u0020Gilda\u0020goose' : 'Add\u0020to\u0020Wish\u0020List\u0020Gilda\u0020goose'" 9256 type="button" 9257 class="group rounded-full w-9 h-9 p-2 btn btn-secondary border-0 inline-flex shrink-0 items-center justify-center text-cherryRed hover:text-cherryRed" 9258 :class="{ 'opacity-50 pointer-events-none': wishlistPending }" 9259 data-addto="wishlist" 9260 > 9261 <span x-cloak 9262 :class="isInWishlist(284588) 9263 ? 'flex group-hover:hidden' 9264 : 'hidden group-hover:flex'"> 9265 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" width="20" height="20" aria-hidden="true"> 9266 <path fill-rule="evenodd" d="M3.172 5.172a4 4 0 015.656 0L10 6.343l1.172-1.171a4 4 0 115.656 5.656L10 17.657l-6.828-6.829a4 4 0 010-5.656z" clip-rule="evenodd"/> 9267</svg> 9268 </span> 9269 <span :class="isInWishlist(284588) 9270 ? 'hidden group-hover:flex' 9271 : 'flex group-hover:hidden'"> 9272 <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" width="20" height="20" aria-hidden="true"> 9273 <path stroke-linecap="round" stroke-linejoin="round" d="M4.318 6.318a4.5 4.5 0 000 6.364L12 20.364l7.682-7.682a4.5 4.5 0 00-6.364-6.364L12 7.636l-1.318-1.318a4.5 4.5 0 00-6.364 0z"/> 9274</svg> 9275 </span> 9276 </button> 9277 9278 <button 9279 class="btn btn-primary rounded-full p-2 justify-center cmsp511-text-sm" 9280 title="Add to Cart Gilda goose" 9281 aria-label="Add to Cart Gilda goose" 9282 data-addto="cart" 9283 > 9284 <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" width="20" height="20" aria-hidden="true"> 9285 <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
92850 014 0z"/> 9286</svg> 9287 </button> 9288 </div> 9289 </div> 9290 9291 <div class="product-info flex flex-col grow min-h-32"> 9292 <div class="w-fit"> 9293 <p class="cmsp511-text-sm text-gray-medium"> 9294 Size: 9295 26 cm </p> 9296 </div> 9297 <div class="mt-2 mb-1 items-center justify-left font-semibold cmsp511-text-base cmsp511-text-left"> 9298 <a 9299 class="product-item-link line-clamp-2 text-ellipsis overflow-hidden text-black" 9300 href="https://www.steiff.com/en/gilda-goose-075490" 9301 onclick="window.steiffTrackSliderProductClick?.("productslider-category-migrated_1782888533_6a44b8557eaca",11);" 9302 > 9303 Gilda goose </a> 9304 </div> 9305 9306 9307 <div class="pt-1 text-gray-dark" 9308 x-data="initPriceBox()" 9309 x-defer="intersect" 9310 @update-prices-284588.window="updatePrice($event.detail);" 9311 > 9312 <div class="price-box price-final_price" data-role="priceBox" data-product-id="284588" data-price-box="product-id-284588"> 9313 <span 9314 x-data x-id="['product\u002Dprice\u002D284588']" class="price-container price-final_price tax weee" 9315 > 9316 <span :id="$id('product\u002Dprice\u002D284588')" data-price-amount="34.95" 9317 data-price-type="finalPrice" 9318 class="price-wrapper " 9319 ><span class="price">€34.95</span></span> 9320 </span> 9321 9322 9323</div> </div> 9324 9325 </div> 9326</form> 9327 </div> 9328 <div class="swiper-slide p-2 flex shrink-0 md:w-1/2 lg:w-1/3 xl:w-1/4" 9329 role="group" 9330 aria-roledescription="slide" 9331 aria-label="13 of 20" 9332 > 9333 9334<form method="post" 9335 action="https://www.steiff.com/en/checkout/cart/add/uenc/%25uenc%25/product/161658/" 9336 class="item product relative product-item transition-shadow product_addtocart_form card hover:bg-white grow flex flex-col w-full" 9337 data-product-type="simple" 9338 onsubmit="this.elements.form_key.value = hyva.getFormKey()" 9339 data-sku="099175" 9340 > 9341 <input name="form_key" type="hidden" value="wZnDfYaXZ5MB2BTC" /> <input type="hidden" name="product" value="161658"/> 9342 <div class="relative"> 9343 <a href="https://www.steiff.com/en/berno-goldendoodle-099175" 9344 title="Berno Goldendoodle" 9345 class="product photo product-item-photo block mx-auto mb-3 w-full aspect-[4/5]" 9346 tabindex="-1" 9347 onclick="window.steiffTrackSliderProductClick?.("productslider-category-migrated_1782888533_6a44b8557eaca",12);" 9348 > 9349 <img class="object-contain w-full product-image-photo" 9350 @update-gallery-161658.window="$root.src = $event.detail" 9351 src="https://www.steiff.com/media/catalog/product/s/o/soft-cuddly-friends-berno-goldendoodle-099175-2.jpg?format=webp&width=480" 9352 loading="lazy" 9353 width="240" 9354 height="300" 9355 alt="Berno Goldendoodle" 9356 title="Berno Goldendoodle" 9357/> 9358 </a> 9359 <div class="flex flex-row gap-2 w-full justify-end md:absolute md:bottom-4"> 9360 <button x-data="initWishlist()" 9361 x-defer="intersect" 9362 @private-content-loaded.window="setLoginState($event.detail.data)" 9363 @wishlist-after-auth-login.window="handleWishlistAfterAuthLogin()" 9364 @auth-modal-wishlist-cancelled.window="clearPendingWishlist()" 9365 @wishlist-product-added.window="handleWishlistProductAdded($event.detail)" 9366 @wishlist-product-removed.window="handleWishlistProductRemoved($event.detail)" 9367 @click.prevent.stop="toggleWishlist(161658, 'Berno\u0020Goldendoodle')" 9368 :aria-disabled="wishlistPending" 9369 :aria-busy="wishlistPending" 9370 aria-label="Add to Wish List Berno Goldendoodle" 9371 :aria-label="isInWishlist(161658) ? 'Remove\u0020from\u0020Wish\u0020List\u0020Berno\u0020Goldendoodle' : 'Add\u0020to\u0020Wish\u0020List\u0020Berno\u0020Goldendoodle'" 9372 type="button" 9373 class="group rounded-full w-9 h-9 p-2 btn btn-secondary border-0 inline-flex shrink-0 items-center justify-center text-cherryRed hover:text-cherryRed" 9374 :class="{ 'opacity-50 pointer-events-none': wishlistPending }" 9375 data-addto="wishlist" 9376 >
9377 <span x-cloak 9378 :class="isInWishlist(161658) 9379 ? 'flex group-hover:hidden' 9380 : 'hidden group-hover:flex'"> 9381 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" width="20" height="20" aria-hidden="true"> 9382 <path fill-rule="evenodd" d="M3.172 5.172a4 4 0 015.656 0L10 6.343l1.172-1.171a4 4 0 115.656 5.656L10 17.657l-6.828-6.829a4 4 0 010-5.656z" clip-rule="evenodd"/> 9383</svg> 9384 </span> 9385 <span :class="isInWishlist(161658) 9386 ? 'hidden group-hover:flex' 9387 : 'flex group-hover:hidden'"> 9388 <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" width="20" height="20" aria-hidden="true"> 9389 <path stroke-linecap="round" stroke-linejoin="round" d="M4.318 6.318a4.5 4.5 0 000 6.364L12 20.364l7.682-7.682a4.5 4.5 0 00-6.364-6.364L12 7.636l-1.318-1.318a4.5 4.5 0 00-6.364 0z"/> 9390</svg> 9391 </span> 9392 </button> 9393 9394 <button 9395 class="btn btn-primary rounded-full p-2 justify-center cmsp511-text-sm" 9396 title="Add to Cart Berno Goldendoodle" 9397 aria-label="Add to Cart Berno Goldendoodle" 9398 data-addto="cart" 9399 > 9400 <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" width="20" height="20" aria-hidden="true"> 9401 <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"/> 9402</svg> 9403 </button> 9404 </div> 9405 </div> 9406 9407 <div class="product-info flex flex-col grow min-h-32"> 9408 <div class="w-fit"> 9409 <p class="cmsp511-text-sm text-gray-medium"> 9410 Size: 9411 26 cm </p> 9412 </div> 9413 <div class="mt-2 mb-1 items-center justify-left font-semibold cmsp511-text-base cmsp511-text-left"> 9414 <a 9415 class="product-item-link line-clamp-2 text-ellipsis overflow-hidden text-black" 9416 href="https://www.steiff.com/en/berno-goldendoodle-099175" 9417 onclick="window.steiffTrackSliderProductClick?.("productslider-category-migrated_1782888533_6a44b8557eaca",12);" 9418 > 9419 Berno Goldendoodle </a> 9420 </div> 9421 9422 9423 <div class="pt-1 text-gray-dark" 9424 x-data="initPriceBox()" 9425 x-defer="intersect" 9426 @update-prices-161658.window="updatePrice($event.detail);" 9427 > 9428 <div class="price-box price-final_price" data-role="priceBox" data-product-id="161658" data-price-box="product-id-161658"> 9429 <span 9430 x-data x-id="['product\u002Dprice\u002D161658']" class="price-container price-final_price tax weee" 9431 > 9432 <span :id="$id('product\u002Dprice\u002D161658')" data-price-amount="39.95" 9433 data-price-type="finalPrice" 9434 class="price-wrapper " 9435 ><span class="price">€39.95</span></span> 9436 </span> 9437 9438 9439</div> </div> 9440 9441 </div> 9442</form> 9443 </div> 9444 <div class="swiper-slide p-2 flex shrink-0 md:w-1/2 lg:w-1/3 xl:w-1/4" 9445 role="group" 9446 aria-roledescription="slide" 9447 aria-label="14 of 20" 9448 > 9449 9450<form method="post" 9451 action="https://www.steiff.com/en/checkout/cart/add/uenc/%25uenc%25/product/294171/" 9452 class="item product relative product-item transition-shadow product_addtocart_form card hover:bg-white grow flex flex-col w-full" 9453 data-product-type="simple" 9454 onsubmit="this.elements.form_key.value = hyva.getFormKey()" 9455 data-sku="024696" 9456 > 9457 <input name="form_key" type="hidden" value="wZnDfYaXZ5MB2BTC" /> <input type="hidden" name="product" value="294171"/> 9458 <div class="relative"> 9459 <a href="https://www.steiff.com/en/disney-originals-stitch-024696" 9460 title="Disney Originals Stitch" 9461 class="product photo product-item-photo block mx-auto mb-3 w-full aspect-[4/5]" 9462 tabindex="-1" 9463 onclick="window.steiffTrackSliderProductClick?.("productslider-category-migrated_1782888533_6a44b8557eaca",13);" 9464 > 9465 <img class="object-contain w-full product-image-photo" 9466 @update-gallery-294171.window="$root.src = $event.detail" 9467 src="https://www.steiff.com/media/catalog/product/d/i/disney-originals-stitch-024696.jpg?format=webp&width=480" 9468 loading="lazy" 9469 width="240" 9470 height="300" 9471 alt="Disney Originals Stitch" 9472 title="Disney Originals Stitch" 9473/> 9474 </a> 9475 <div class="flex flex-row gap-2 w-full justify-end md:absolute md:bottom-4"> 9476 <button x-data="initWishlist()" 9477 x-defer="intersect"
9478 @private-content-loaded.window="setLoginState($event.detail.data)" 9479 @wishlist-after-auth-login.window="handleWishlistAfterAuthLogin()" 9480 @auth-modal-wishlist-cancelled.window="clearPendingWishlist()" 9481 @wishlist-product-added.window="handleWishlistProductAdded($event.detail)" 9482 @wishlist-product-removed.window="handleWishlistProductRemoved($event.detail)" 9483 @click.prevent.stop="toggleWishlist(294171, 'Disney\u0020Originals\u0020Stitch')" 9484 :aria-disabled="wishlistPending" 9485 :aria-busy="wishlistPending" 9486 aria-label="Add to Wish List Disney Originals Stitch" 9487 :aria-label="isInWishlist(294171) ? 'Remove\u0020from\u0020Wish\u0020List\u0020Disney\u0020Originals\u0020Stitch' : 'Add\u0020to\u0020Wish\u0020List\u0020Disney\u0020Originals\u0020Stitch'" 9488 type="button" 9489 class="group rounded-full w-9 h-9 p-2 btn btn-secondary border-0 inline-flex shrink-0 items-center justify-center text-cherryRed hover:text-cherryRed" 9490 :class="{ 'opacity-50 pointer-events-none': wishlistPending }" 9491 data-addto="wishlist" 9492 > 9493 <span x-cloak 9494 :class="isInWishlist(294171) 9495 ? 'flex group-hover:hidden' 9496 : 'hidden group-hover:flex'"> 9497 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" width="20" height="20" aria-hidden="true"> 9498 <path fill-rule="evenodd" d="M3.172 5.172a4 4 0 015.656 0L10 6.343l1.172-1.171a4 4 0 115.656 5.656L10 17.657l-6.828-6.829a4 4 0 010-5.656z" clip-rule="evenodd"/> 9499</svg> 9500 </span> 9501 <span :class="isInWishlist(294171) 9502 ? 'hidden group-hover:flex' 9503 : 'flex group-hover:hidden'"> 9504 <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" width="20" height="20" aria-hidden="true"> 9505 <path stroke-linecap="round" stroke-linejoin="round" d="M4.318 6.318a4.5 4.5 0 000 6.364L12 20.364l7.682-7.682a4.5 4.5 0 00-6.364-6.364L12 7.636l-1.318-1.318a4.5 4.5 0 00-6.364 0z"/> 9506</svg> 9507 </span> 9508 </button> 9509 9510 <button 9511 class="btn btn-primary rounded-full p-2 justify-center cmsp511-text-sm" 9512 title="Add to Cart Disney Originals Stitch" 9513 aria-label="Add to Cart Disney Originals Stitch" 9514 data-addto="cart" 9515 > 9516 <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" width="20" height="20" aria-hidden="true"> 9517 <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"/> 9518</svg> 9519 </button> 9520 </div> 9521 </div> 9522 9523 <div class="product-info flex flex-col grow min-h-32"> 9524 <div class="w-fit"> 9525 <p class="cmsp511-text-sm text-gray-medium"> 9526 Size: 9527 22 cm </p> 9528 </div> 9529 <div class="mt-2 mb-1 items-center justify-left font-semibold cmsp511-text-base cmsp511-text-left"> 9530 <a 9531 class="product-item-link line-clamp-2 text-ellipsis overflow-hidden text-black" 9532 href="https://www.steiff.com/en/disney-originals-stitch-024696" 9533 onclick="window.steiffTrackSliderProductClick?.("productslider-category-migrated_1782888533_6a44b8557eaca",13);" 9534 > 9535 Disney Originals Stitch </a> 9536 </div> 9537 9538 9539 <div class="pt-1 text-gray-dark" 9540 x-data="initPriceBox()" 9541 x-defer="intersect" 9542 @update-prices-294171.window="updatePrice($event.detail);" 9543 > 9544 <div class="price-box price-final_price" data-role="priceBox" data-product-id="294171" data-price-box="product-id-294171"> 9545 <span
9546 x-data x-id="['product\u002Dprice\u002D294171']" class="price-container price-final_price tax weee" 9547 > 9548 <span :id="$id('product\u002Dprice\u002D294171')" data-price-amount="55" 9549 data-price-type="finalPrice" 9550 class="price-wrapper " 9551 ><span class="price">€55.00</span></span> 9552 </span> 9553 9554 9555</div> </div> 9556 9557 </div> 9558</form> 9559 </div> 9560 <div class="swiper-slide p-2 flex shrink-0 md:w-1/2 lg:w-1/3 xl:w-1/4" 9561 role="group" 9562 aria-roledescription="slide" 9563 aria-label="15 of 20" 9564 > 9565 9566<form method="post" 9567 action="https://www.steiff.com/en/checkout/cart/add/uenc/%25uenc%25/product/84241/" 9568 class="item product relative product-item transition-shadow product_addtocart_form card hover:bg-white grow flex flex-col w-full" 9569 data-product-type="simple" 9570 onsubmit="this.elements.form_key.value = hyva.getFormKey()" 9571 data-sku="080470" 9572 > 9573 <input name="form_key" type="hidden" value="VuQVf5cpQDf7wc2H" /> <input type="hidden" name="product" value="84241"/> 9574 <div class="relative"> 9575 <a href="https://www.steiff.com/en/hoppie-rabbit-080470" 9576 title="Hoppie rabbit" 9577 class="product photo product-item-photo block mx-auto mb-3 w-full aspect-[4/5]" 9578 tabindex="-1" 9579 > 9580 <img class="object-contain w-full product-image-photo" 9581 @update-gallery-84241.window="$root.src = $event.detail" 9582 src="https://www.steiff.com/media/catalog/product/s/o/soft-cuddly-friends-hoppie-hase-080470-8.jpg?format=webp&width=480" 9583 loading="lazy" 9584 width="240" 9585 height="300" 9586 alt="Hoppie Hase" 9587 title="Hoppie Hase" 9588/> 9589 </a> 9590 <div class="flex flex-row gap-2 w-full justify-end md:absolute md:bottom-4"> 9591 <button x-data="initWishlist()" 9592 x-defer="intersect" 9593 @private-content-loaded.window="setLoginState($event.detail.data)" 9594 @wishlist-after-auth-login.window="handleWishlistAfterAuthLogin()" 9595 @auth-modal-wishlist-cancelled.window="clearPendingWishlist()" 9596 @wishlist-product-added.window="handleWishlistProductAdded($event.detail)" 9597 @wishlist-product-removed.window="handleWishlistProductRemoved($event.detail)" 9598 @click.prevent.stop="toggleWishlist(84241, 'Hoppie\u0020rabbit')" 9599 :aria-disabled="wishlistPending" 9600 :aria-busy="wishlistPending" 9601 aria-label="Add to Wish List Hoppie rabbit" 9602 :aria-label="isInWishlist(84241) ? 'Remove\u0020from\u0020Wish\u0020List\u0020Hoppie\u0020rabbit' : 'Add\u0020to\u0020Wish\u0020List\u0020Hoppie\u0020rabbit'" 9603 type="button" 9604 class="group rounded-full w-9 h-9 p-2 btn btn-secondary border-0 inline-flex shrink-0 items-center justify-center text-cherryRed hover:text-cherryRed" 9605 :class="{ 'opacity-50 pointer-events-none': wishlistPending }" 9606 data-addto="wishlist" 9607 > 9608 <span x-cloak 9609 :class="isInWishlist(84241) 9610 ? 'flex group-hover:hidden' 9611 : 'hidden group-hover:flex'"> 9612 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" width="20" height="20" aria-hidden="true"> 9613 <path fill-rule="evenodd" d="M3.172 5.172a4 4 0 015.656 0L10 6.343l1.172-1.171a4 4 0 115.656 5.656L10 17.657l-6.828-6.829a4 4 0 010-5.656z" clip-rule="evenodd"/> 9614</svg> 9615 </span> 9616 <span :class="isInWishlist(84241) 9617 ? 'hidden group-hover:flex' 9618 : 'flex group-hover:hidden'"> 9619 <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" width="20" height="20" aria-hidden="true"> 9620 <path stroke-linecap="round" stroke-linejoin="round" d="M4.318 6.318a4.5 4.5 0 000 6.364L12 20.364l7.682-7.682a4.5 4.5 0 00-6.364-6.364L12 7.636l-1.318-1.318a4.5 4.5 0 00-6.364 0z"/> 9621</svg> 9622 </span> 9623 </button> 9624 9625 <button 9626 class="btn btn-primary rounded-full p-2 justify-center cmsp511-text-sm" 9627 title="Add to Cart Hoppie rabbit" 9628 aria-label="Add to Cart Hoppie rabbit" 9629 data-addto="cart" 9630 > 9631 <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" width="20" height="20" aria-hidden="true"> 9632 <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
96320 014 0z"/> 9633</svg> 9634 </button> 9635 </div> 9636 </div> 9637 9638 <div class="product-info flex flex-col grow min-h-32"> 9639 <div class="w-fit"> 9640 <p class="cmsp511-text-sm text-gray-medium"> 9641 Size: 9642 28 cm </p> 9643 </div> 9644 <div class="mt-2 mb-1 items-center justify-left font-semibold cmsp511-text-base cmsp511-text-left"> 9645 <a 9646 class="product-item-link line-clamp-2 text-ellipsis overflow-hidden text-black" 9647 href="https://www.steiff.com/en/hoppie-rabbit-080470" 9648 > 9649 Hoppie rabbit </a> 9650 </div> 9651 9652 9653 <div class="pt-1 text-gray-dark" 9654 x-data="initPriceBox()" 9655 x-defer="intersect" 9656 @update-prices-84241.window="updatePrice($event.detail);" 9657 > 9658 <div class="price-box price-final_price" data-role="priceBox" data-product-id="84241" data-price-box="product-id-84241"> 9659 <span 9660 x-data x-id="['product\u002Dprice\u002D84241']" class="price-container price-final_price tax weee" 9661 > 9662 <span :id="$id('product\u002Dprice\u002D84241')" data-price-amount="37.95" 9663 data-price-type="finalPrice" 9664 class="price-wrapper " 9665 ><span class="price">€37.95</span></span> 9666 </span> 9667 9668 9669</div> </div> 9670 9671 </div> 9672</form> 9673 </div> 9674 <div class="swiper-slide p-2 flex shrink-0 md:w-1/2 lg:w-1/3 xl:w-1/4" 9675 role="group" 9676 aria-roledescription="slide" 9677 aria-label="16 of 20" 9678 > 9679 9680<form method="post" 9681 action="https://www.steiff.com/en/checkout/cart/add/uenc/%25uenc%25/product/85948/" 9682 class="item product relative product-item transition-shadow product_addtocart_form card hover:bg-white grow flex flex-col w-full" 9683 data-product-type="simple" 9684 onsubmit="this.elements.form_key.value = hyva.getFormKey()" 9685 data-sku="087806" 9686 > 9687 <input name="form_key" type="hidden" value="wZnDfYaXZ5MB2BTC" /> <input type="hidden" name="product" value="85948"/> 9688 <div class="relative"> 9689 <a href="https://www.steiff.com/en/dixi-triceratops-087806" 9690 title="Dixi triceratops" 9691 class="product photo product-item-photo block mx-auto mb-3 w-full aspect-[4/5]" 9692 tabindex="-1" 9693 onclick="window.steiffTrackSliderProductClick?.("productslider-category-migrated_1782888533_6a44b8557eaca",15);" 9694 > 9695 <img class="object-contain w-full product-image-photo" 9696 @update-gallery-85948.window="$root.src = $event.detail" 9697 src="https://www.steiff.com/media/catalog/product/s/o/soft-cuddly-friends-dixi-triceratops-087806-5.jpg?format=webp&width=480" 9698 loading="lazy" 9699 width="240" 9700 height="300" 9701 alt="Dixi Triceratops" 9702 title="Dixi Triceratops" 9703/> 9704 </a> 9705 <div class="flex flex-row gap-2 w-full justify-end md:absolute md:bottom-4"> 9706 <button x-data="initWishlist()" 9707 x-defer="intersect" 9708 @private-content-loaded.window="setLoginState($event.detail.data)" 9709 @wishlist-after-auth-login.window="handleWishlistAfterAuthLogin()" 9710 @auth-modal-wishlist-cancelled.window="clearPendingWishlist()" 9711 @wishlist-product-added.window="handleWishlistProductAdded($event.detail)" 9712 @wishlist-product-removed.window="handleWishlistProductRemoved($event.detail)" 9713 @click.prevent.stop="toggleWishlist(85948, 'Dixi\u0020triceratops')" 9714 :aria-disabled="wishlistPending" 9715 :aria-busy="wishlistPending" 9716 aria-label="Add to Wish List Dixi triceratops" 9717 :aria-label="isInWishlist(85948) ? 'Remove\u0020from\u0020Wish\u0020List\u0020Dixi\u0020triceratops' : 'Add\u0020to\u0020Wish\u0020List\u0020Dixi\u0020triceratops'" 9718 type="button" 9719 class="group rounded-full w-9 h-9 p-2 btn btn-secondary border-0 inline-flex shrink-0 items-center justify-center text-cherryRed hover:text-cherryRed" 9720 :class="{ 'opacity-50 pointer-events-none': wishlistPending }" 9721 data-addto="wishlist" 9722 >
9723 <span x-cloak 9724 :class="isInWishlist(85948) 9725 ? 'flex group-hover:hidden' 9726 : 'hidden group-hover:flex'"> 9727 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" width="20" height="20" aria-hidden="true"> 9728 <path fill-rule="evenodd" d="M3.172 5.172a4 4 0 015.656 0L10 6.343l1.172-1.171a4 4 0 115.656 5.656L10 17.657l-6.828-6.829a4 4 0 010-5.656z" clip-rule="evenodd"/> 9729</svg> 9730 </span> 9731 <span :class="isInWishlist(85948) 9732 ? 'hidden group-hover:flex' 9733 : 'flex group-hover:hidden'"> 9734 <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" width="20" height="20" aria-hidden="true"> 9735 <path stroke-linecap="round" stroke-linejoin="round" d="M4.318 6.318a4.5 4.5 0 000 6.364L12 20.364l7.682-7.682a4.5 4.5 0 00-6.364-6.364L12 7.636l-1.318-1.318a4.5 4.5 0 00-6.364 0z"/> 9736</svg> 9737 </span> 9738 </button> 9739 9740 <button 9741 class="btn btn-primary rounded-full p-2 justify-center cmsp511-text-sm" 9742 title="Add to Cart Dixi triceratops" 9743 aria-label="Add to Cart Dixi triceratops" 9744 data-addto="cart" 9745 > 9746 <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" width="20" height="20" aria-hidden="true"> 9747 <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"/> 9748</svg> 9749 </button> 9750 </div> 9751 </div> 9752 9753 <div class="product-info flex flex-col grow min-h-32"> 9754 <div class="w-fit"> 9755 <p class="cmsp511-text-sm text-gray-medium"> 9756 Size: 9757 28 cm </p> 9758 </div> 9759 <div class="mt-2 mb-1 items-center justify-left font-semibold cmsp511-text-base cmsp511-text-left"> 9760 <a 9761 class="product-item-link line-clamp-2 text-ellipsis overflow-hidden text-black" 9762 href="https://www.steiff.com/en/dixi-triceratops-087806" 9763 onclick="window.steiffTrackSliderProductClick?.("productslider-category-migrated_1782888533_6a44b8557eaca",15);" 9764 > 9765 Dixi triceratops </a> 9766 </div> 9767 9768 9769 <div class="pt-1 text-gray-dark" 9770 x-data="initPriceBox()" 9771 x-defer="intersect" 9772 @update-prices-85948.window="updatePrice($event.detail);" 9773 > 9774 <div class="price-box price-final_price" data-role="priceBox" data-product-id="85948" data-price-box="product-id-85948"> 9775 <span 9776 x-data x-id="['product\u002Dprice\u002D85948']" class="price-container price-final_price tax weee" 9777 > 9778 <span :id="$id('product\u002Dprice\u002D85948')" data-price-amount="39.95" 9779 data-price-type="finalPrice" 9780 class="price-wrapper " 9781 ><span class="price">€39.95</span></span> 9782 </span> 9783 9784 9785</div> </div> 9786 9787 </div> 9788</form> 9789 </div> 9790 <div class="swiper-slide p-2 flex shrink-0 md:w-1/2 lg:w-1/3 xl:w-1/4" 9791 role="group" 9792 aria-roledescription="slide" 9793 aria-label="17 of 20" 9794 > 9795 9796<form method="post" 9797 action="https://www.steiff.com/en/checkout/cart/add/uenc/%25uenc%25/product/263464/" 9798 class="item product relative product-item transition-shadow product_addtocart_form card hover:bg-white grow flex flex-col w-full" 9799 data-product-type="simple" 9800 onsubmit="this.elements.form_key.value = hyva.getFormKey()" 9801 data-sku="067198" 9802 > 9803 <input name="form_key" type="hidden" value="wZnDfYaXZ5MB2BTC" /> <input type="hidden" name="product" value="263464"/> 9804 <div class="relative"> 9805 <a href="https://www.steiff.com/en/rocky-dragon-067198" 9806 title="Rocky dragon" 9807 class="product photo product-item-photo block mx-auto mb-3 w-full aspect-[4/5]" 9808 tabindex="-1" 9809 onclick="window.steiffTrackSliderProductClick?.("productslider-category-migrated_1782888533_6a44b8557eaca",16);" 9810 > 9811 <img class="object-contain w-full product-image-photo" 9812 @update-gallery-263464.window="$root.src = $event.detail" 9813 src="https://www.steiff.com/media/catalog/product/r/o/rocky-drache-067198-12.jpg?format=webp&width=480" 9814 loading="lazy" 9815 width="240" 9816 height="300" 9817 alt="Rocky Drache" 9818 title="Rocky Drache" 9819/> 9820 </a> 9821 <div class="flex flex-row gap-2 w-full justify-end md:absolute md:bottom-4"> 9822 <button x-data="initWishlist()" 9823 x-defer="intersect"
9824 @private-content-loaded.window="setLoginState($event.detail.data)" 9825 @wishlist-after-auth-login.window="handleWishlistAfterAuthLogin()" 9826 @auth-modal-wishlist-cancelled.window="clearPendingWishlist()" 9827 @wishlist-product-added.window="handleWishlistProductAdded($event.detail)" 9828 @wishlist-product-removed.window="handleWishlistProductRemoved($event.detail)" 9829 @click.prevent.stop="toggleWishlist(263464, 'Rocky\u0020dragon')" 9830 :aria-disabled="wishlistPending" 9831 :aria-busy="wishlistPending" 9832 aria-label="Add to Wish List Rocky dragon" 9833 :aria-label="isInWishlist(263464) ? 'Remove\u0020from\u0020Wish\u0020List\u0020Rocky\u0020dragon' : 'Add\u0020to\u0020Wish\u0020List\u0020Rocky\u0020dragon'" 9834 type="button" 9835 class="group rounded-full w-9 h-9 p-2 btn btn-secondary border-0 inline-flex shrink-0 items-center justify-center text-cherryRed hover:text-cherryRed" 9836 :class="{ 'opacity-50 pointer-events-none': wishlistPending }" 9837 data-addto="wishlist" 9838 > 9839 <span x-cloak 9840 :class="isInWishlist(263464) 9841 ? 'flex group-hover:hidden' 9842 : 'hidden group-hover:flex'"> 9843 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" width="20" height="20" aria-hidden="true"> 9844 <path fill-rule="evenodd" d="M3.172 5.172a4 4 0 015.656 0L10 6.343l1.172-1.171a4 4 0 115.656 5.656L10 17.657l-6.828-6.829a4 4 0 010-5.656z" clip-rule="evenodd"/> 9845</svg> 9846 </span> 9847 <span :class="isInWishlist(263464) 9848 ? 'hidden group-hover:flex' 9849 : 'flex group-hover:hidden'"> 9850 <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" width="20" height="20" aria-hidden="true"> 9851 <path stroke-linecap="round" stroke-linejoin="round" d="M4.318 6.318a4.5 4.5 0 000 6.364L12 20.364l7.682-7.682a4.5 4.5 0 00-6.364-6.364L12 7.636l-1.318-1.318a4.5 4.5 0 00-6.364 0z"/> 9852</svg> 9853 </span> 9854 </button> 9855 9856 <button 9857 class="btn btn-primary rounded-full p-2 justify-center cmsp511-text-sm" 9858 title="Add to Cart Rocky dragon" 9859 aria-label="Add to Cart Rocky dragon" 9860 data-addto="cart" 9861 > 9862 <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" width="20" height="20" aria-hidden="true"> 9863 <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"/> 9864</svg> 9865 </button> 9866 </div> 9867 </div> 9868 9869 <div class="product-info flex flex-col grow min-h-32"> 9870 <div class="w-fit"> 9871 <p class="cmsp511-text-sm text-gray-medium"> 9872 Size: 9873 32 cm </p> 9874 </div> 9875 <div class="mt-2 mb-1 items-center justify-left font-semibold cmsp511-text-base cmsp511-text-left"> 9876 <a 9877 class="product-item-link line-clamp-2 text-ellipsis overflow-hidden text-black" 9878 href="https://www.steiff.com/en/rocky-dragon-067198" 9879 onclick="window.steiffTrackSliderProductClick?.("productslider-category-migrated_1782888533_6a44b8557eaca",16);" 9880 > 9881 Rocky dragon </a> 9882 </div> 9883 9884 9885 <div class="pt-1 text-gray-dark" 9886 x-data="initPriceBox()" 9887 x-defer="intersect" 9888 @update-prices-263464.window="updatePrice($event.detail);" 9889 > 9890 <div class="price-box price-final_price" data-role="priceBox" data-product-id="263464" data-price-box="product-id-263464"> 9891 <span 9892 x-data x-id="['product\u002Dprice\u002D263464']" class="price-container price-final_price tax weee" 9893 >
9894 <span :id="$id('product\u002Dprice\u002D263464')" data-price-amount="80" 9895 data-price-type="finalPrice" 9896 class="price-wrapper " 9897 ><span class="price">€80.00</span></span> 9898 </span> 9899 9900 9901</div> </div> 9902 9903 </div> 9904</form> 9905 </div> 9906 <div class="swiper-slide p-2 flex shrink-0 md:w-1/2 lg:w-1/3 xl:w-1/4" 9907 role="group" 9908 aria-roledescription="slide" 9909 aria-label="18 of 20" 9910 > 9911 9912<form method="post" 9913 action="https://www.steiff.com/en/checkout/cart/add/uenc/%25uenc%25/product/287048/" 9914 class="item product relative product-item transition-shadow product_addtocart_form card hover:bg-white grow flex flex-col w-full" 9915 data-product-type="simple" 9916 onsubmit="this.elements.form_key.value = hyva.getFormKey()" 9917 data-sku="062490" 9918 > 9919 <input name="form_key" type="hidden" value="wZnDfYaXZ5MB2BTC" /> <input type="hidden" name="product" value="287048"/> 9920 <div class="relative"> 9921 <a href="https://www.steiff.com/en/lio-penguin-062490" 9922 title="Lio penguin" 9923 class="product photo product-item-photo block mx-auto mb-3 w-full aspect-[4/5]" 9924 tabindex="-1" 9925 onclick="window.steiffTrackSliderProductClick?.("productslider-category-migrated_1782888533_6a44b8557eaca",17);" 9926 > 9927 <img class="object-contain w-full product-image-photo" 9928 @update-gallery-287048.window="$root.src = $event.detail" 9929 src="https://www.steiff.com/media/catalog/product/l/i/lio-pinguin-062490.jpg?format=webp&width=480" 9930 loading="lazy" 9931 width="240" 9932 height="300" 9933 alt="Lio Pinguin" 9934 title="Lio Pinguin" 9935/> 9936 </a> 9937 <div class="flex flex-row gap-2 w-full justify-end md:absolute md:bottom-4"> 9938 <button x-data="initWishlist()" 9939 x-defer="intersect" 9940 @private-content-loaded.window="setLoginState($event.detail.data)" 9941 @wishlist-after-auth-login.window="handleWishlistAfterAuthLogin()" 9942 @auth-modal-wishlist-cancelled.window="clearPendingWishlist()" 9943 @wishlist-product-added.window="handleWishlistProductAdded($event.detail)" 9944 @wishlist-product-removed.window="handleWishlistProductRemoved($event.detail)" 9945 @click.prevent.stop="toggleWishlist(287048, 'Lio\u0020penguin')" 9946 :aria-disabled="wishlistPending" 9947 :aria-busy="wishlistPending" 9948 aria-label="Add to Wish List Lio penguin" 9949 :aria-label="isInWishlist(287048) ? 'Remove\u0020from\u0020Wish\u0020List\u0020Lio\u0020penguin' : 'Add\u0020to\u0020Wish\u0020List\u0020Lio\u0020penguin'" 9950 type="button" 9951 class="group rounded-full w-9 h-9 p-2 btn btn-secondary border-0 inline-flex shrink-0 items-center justify-center text-cherryRed hover:text-cherryRed" 9952 :class="{ 'opacity-50 pointer-events-none': wishlistPending }" 9953 data-addto="wishlist" 9954 > 9955 <span x-cloak 9956 :class="isInWishlist(287048) 9957 ? 'flex group-hover:hidden' 9958 : 'hidden group-hover:flex'"> 9959 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" width="20" height="20" aria-hidden="true"> 9960 <path fill-rule="evenodd" d="M3.172 5.172a4 4 0 015.656 0L10 6.343l1.172-1.171a4 4 0 115.656 5.656L10 17.657l-6.828-6.829a4 4 0 010-5.656z" clip-rule="evenodd"/> 9961</svg> 9962 </span> 9963 <span :class="isInWishlist(287048) 9964 ? 'hidden group-hover:flex' 9965 : 'flex group-hover:hidden'"> 9966 <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" width="20" height="20" aria-hidden="true"> 9967 <path stroke-linecap="round" stroke-linejoin="round" d="M4.318 6.318a4.5 4.5 0 000 6.364L12 20.364l7.682-7.682a4.5 4.5 0 00-6.364-6.364L12 7.636l-1.318-1.318a4.5 4.5 0 00-6.364 0z"/> 9968</svg> 9969 </span> 9970 </button> 9971 9972 <button 9973 class="btn btn-primary rounded-full p-2 justify-center cmsp511-text-sm" 9974 title="Add to Cart Lio penguin" 9975 aria-label="Add to Cart Lio penguin" 9976 data-addto="cart" 9977 > 9978 <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" width="20" height="20" aria-hidden="true"> 9979 <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
99790 014 0z"/> 9980</svg> 9981 </button> 9982 </div> 9983 </div> 9984 9985 <div class="product-info flex flex-col grow min-h-32"> 9986 <div class="w-fit"> 9987 <p class="cmsp511-text-sm text-gray-medium"> 9988 Size: 9989 21 cm </p> 9990 </div> 9991 <div class="mt-2 mb-1 items-center justify-left font-semibold cmsp511-text-base cmsp511-text-left"> 9992 <a 9993 class="product-item-link line-clamp-2 text-ellipsis overflow-hidden text-black" 9994 href="https://www.steiff.com/en/lio-penguin-062490" 9995 onclick="window.steiffTrackSliderProductClick?.("productslider-category-migrated_1782888533_6a44b8557eaca",17);" 9996 > 9997 Lio penguin </a> 9998 </div> 9999 10000 10001 <div class="pt-1 text-gray-dark" 10002 x-data="initPriceBox()" 10003 x-defer="intersect" 10004 @update-prices-287048.window="updatePrice($event.detail);" 10005 > 10006 <div class="price-box price-final_price" data-role="priceBox" data-product-id="287048" data-price-box="product-id-287048"> 10007 <span 10008 x-data x-id="['product\u002Dprice\u002D287048']" class="price-container price-final_price tax weee" 10009 > 10010 <span :id="$id('product\u002Dprice\u002D287048')" data-price-amount="37.95" 10011 data-price-type="finalPrice" 10012 class="price-wrapper " 10013 ><span class="price">€37.95</span></span> 10014 </span> 10015 10016 10017</div> </div> 10018 10019 </div> 10020</form> 10021 </div> 10022 <div class="swiper-slide p-2 flex shrink-0 md:w-1/2 lg:w-1/3 xl:w-1/4" 10023 role="group" 10024 aria-roledescription="slide" 10025 aria-label="19 of 20" 10026 > 10027 10028<form method="post" 10029 action="https://www.steiff.com/en/checkout/cart/add/uenc/%25uenc%25/product/213665/" 10030 class="item product relative product-item transition-shadow product_addtocart_form card hover:bg-white grow flex flex-col w-full" 10031 data-product-type="simple" 10032 onsubmit="this.elements.form_key.value = hyva.getFormKey()" 10033 data-sku="060427" 10034 > 10035 <input name="form_key" type="hidden" value="wZnDfYaXZ5MB2BTC" /> <input type="hidden" name="product" value="213665"/> 10036 <div class="relative"> 10037 <a href="https://www.steiff.com/en/bodo-monkey-060427" 10038 title="Bodo monkey" 10039 class="product photo product-item-photo block mx-auto mb-3 w-full aspect-[4/5]" 10040 tabindex="-1" 10041 onclick="window.steiffTrackSliderProductClick?.("productslider-category-migrated_1782888533_6a44b8557eaca",18);" 10042 > 10043 <img class="object-contain w-full product-image-photo" 10044 @update-gallery-213665.window="$root.src = $event.detail" 10045 src="https://www.steiff.com/media/catalog/product/s/o/soft-cuddly-friends-bodo-affe-060427.jpg?format=webp&width=480" 10046 loading="lazy" 10047 width="240" 10048 height="300" 10049 alt="Bodo Affe" 10050 title="Bodo Affe" 10051/> 10052 </a> 10053 <div class="flex flex-row gap-2 w-full justify-end md:absolute md:bottom-4"> 10054 <button x-data="initWishlist()" 10055 x-defer="intersect" 10056 @private-content-loaded.window="setLoginState($event.detail.data)" 10057 @wishlist-after-auth-login.window="handleWishlistAfterAuthLogin()" 10058 @auth-modal-wishlist-cancelled.window="clearPendingWishlist()" 10059 @wishlist-product-added.window="handleWishlistProductAdded($event.detail)" 10060 @wishlist-product-removed.window="handleWishlistProductRemoved($event.detail)" 10061 @click.prevent.stop="toggleWishlist(213665, 'Bodo\u0020monkey')" 10062 :aria-disabled="wishlistPending" 10063 :aria-busy="wishlistPending" 10064 aria-label="Add to Wish List Bodo monkey"
10065 :aria-label="isInWishlist(213665) ? 'Remove\u0020from\u0020Wish\u0020List\u0020Bodo\u0020monkey' : 'Add\u0020to\u0020Wish\u0020List\u0020Bodo\u0020monkey'" 10066 type="button" 10067 class="group rounded-full w-9 h-9 p-2 btn btn-secondary border-0 inline-flex shrink-0 items-center justify-center text-cherryRed hover:text-cherryRed" 10068 :class="{ 'opacity-50 pointer-events-none': wishlistPending }" 10069 data-addto="wishlist" 10070 > 10071 <span x-cloak 10072 :class="isInWishlist(213665) 10073 ? 'flex group-hover:hidden' 10074 : 'hidden group-hover:flex'"> 10075 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" width="20" height="20" aria-hidden="true"> 10076 <path fill-rule="evenodd" d="M3.172 5.172a4 4 0 015.656 0L10 6.343l1.172-1.171a4 4 0 115.656 5.656L10 17.657l-6.828-6.829a4 4 0 010-5.656z" clip-rule="evenodd"/> 10077</svg> 10078 </span> 10079 <span :class="isInWishlist(213665) 10080 ? 'hidden group-hover:flex' 10081 : 'flex group-hover:hidden'"> 10082 <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" width="20" height="20" aria-hidden="true"> 10083 <path stroke-linecap="round" stroke-linejoin="round" d="M4.318 6.318a4.5 4.5 0 000 6.364L12 20.364l7.682-7.682a4.5 4.5 0 00-6.364-6.364L12 7.636l-1.318-1.318a4.5 4.5 0 00-6.364 0z"/> 10084</svg> 10085 </span> 10086 </button> 10087 10088 <button 10089 class="btn btn-primary rounded-full p-2 justify-center cmsp511-text-sm" 10090 title="Add to Cart Bodo monkey" 10091 aria-label="Add to Cart Bodo monkey" 10092 data-addto="cart" 10093 > 10094 <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" width="20" height="20" aria-hidden="true"> 10095 <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"/> 10096</svg> 10097 </button> 10098 </div> 10099 </div> 10100 10101 <div class="product-info flex flex-col grow min-h-32"> 10102 <div class="w-fit"> 10103 <p class="cmsp511-text-sm text-gray-medium"> 10104 Size: 10105 30 cm </p> 10106 </div> 10107 <div class="mt-2 mb-1 items-center justify-left font-semibold cmsp511-text-base cmsp511-text-left"> 10108 <a 10109 class="product-item-link line-clamp-2 text-ellipsis overflow-hidden text-black" 10110 href="https://www.steiff.com/en/bodo-monkey-060427" 10111 onclick="window.steiffTrackSliderProductClick?.("productslider-category-migrated_1782888533_6a44b8557eaca",18);" 10112 > 10113 Bodo monkey </a> 10114 </div> 10115 10116 10117 <div class="pt-1 text-gray-dark" 10118 x-data="initPriceBox()" 10119 x-defer="intersect" 10120 @update-prices-213665.window="updatePrice($event.detail);" 10121 > 10122 <div class="price-box price-final_price" data-role="priceBox" data-product-id="213665" data-price-box="product-id-213665"> 10123 <span 10124 x-data x-id="['product\u002Dprice\u002D213665']" class="price-container price-final_price tax weee" 10125 > 10126 <span :id="$id('product\u002Dprice\u002D213665')" data-price-amount="39.95" 10127 data-price-type="finalPrice" 10128 class="price-wrapper " 10129 ><span class="price">€39.95</span></span> 10130 </span> 10131 10132 10133</div> </div> 10134 10135 </div> 10136</form> 10137 </div> 10138 <div class="swiper-slide p-2 flex shrink-0 md:w-1/2 lg:w-1/3 xl:w-1/4" 10139 role="group" 10140 aria-roledescription="slide" 10141 aria-label="20 of 20" 10142 > 10143 10144<form method="post" 10145 action="https://www.steiff.com/en/checkout/cart/add/uenc/%25uenc%25/product/213677/" 10146 class="item product relative product-item transition-shadow product_addtocart_form card hover:bg-white grow flex flex-col w-full" 10147 data-product-type="simple" 10148 onsubmit="this.elements.form_key.value = hyva.getFormKey()" 10149 data-sku="064074" 10150 > 10151 <input name="form_key" type="hidden" value="wZnDfYaXZ5MB2BTC" /> <input type="hidden" name="product" value="213677"/> 10152 <div class="relative"> 10153 <a href="https://www.steiff.com/en/elna-elephant-064074" 10154 title="Elna elephant" 10155 class="product photo product-item-photo block mx-auto mb-3 w-full aspect-[4/5]" 10156 tabindex="-1" 10157 onclick="window.steiffTrackSliderProductClick?.("productslider-category-migrated_1782888533_6a44b8557eaca",19);" 10158 > 10159 <img class="object-contain w-full product-image-photo" 10160 @update-gallery-213677.window="$root.src = $event.detail" 10161 src="https://www.steiff.com/media/catalog/product/s/o/soft-cuddly-friends-elna-elefant-064074-1.jpg?format=webp&width=480" 10162 loading="lazy" 10163 width="240" 10164 height="300" 10165 alt="Elna Elefant" 10166 title="Elna Elefant" 10167/> 10168 </a> 10169 <div class="flex flex-row gap-2 w-full justify-end md:absolute md:bottom-4"> 10170 <button x-data="initWishlist()" 10171 x-defer="intersect"
10172 @private-content-loaded.window="setLoginState($event.detail.data)" 10173 @wishlist-after-auth-login.window="handleWishlistAfterAuthLogin()" 10174 @auth-modal-wishlist-cancelled.window="clearPendingWishlist()" 10175 @wishlist-product-added.window="handleWishlistProductAdded($event.detail)" 10176 @wishlist-product-removed.window="handleWishlistProductRemoved($event.detail)" 10177 @click.prevent.stop="toggleWishlist(213677, 'Elna\u0020elephant')" 10178 :aria-disabled="wishlistPending" 10179 :aria-busy="wishlistPending" 10180 aria-label="Add to Wish List Elna elephant" 10181 :aria-label="isInWishlist(213677) ? 'Remove\u0020from\u0020Wish\u0020List\u0020Elna\u0020elephant' : 'Add\u0020to\u0020Wish\u0020List\u0020Elna\u0020elephant'" 10182 type="button" 10183 class="group rounded-full w-9 h-9 p-2 btn btn-secondary border-0 inline-flex shrink-0 items-center justify-center text-cherryRed hover:text-cherryRed" 10184 :class="{ 'opacity-50 pointer-events-none': wishlistPending }" 10185 data-addto="wishlist" 10186 > 10187 <span x-cloak 10188 :class="isInWishlist(213677) 10189 ? 'flex group-hover:hidden' 10190 : 'hidden group-hover:flex'"> 10191 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" width="20" height="20" aria-hidden="true"> 10192 <path fill-rule="evenodd" d="M3.172 5.172a4 4 0 015.656 0L10 6.343l1.172-1.171a4 4 0 115.656 5.656L10 17.657l-6.828-6.829a4 4 0 010-5.656z" clip-rule="evenodd"/> 10193</svg> 10194 </span> 10195 <span :class="isInWishlist(213677) 10196 ? 'hidden group-hover:flex' 10197 : 'flex group-hover:hidden'"> 10198 <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" width="20" height="20" aria-hidden="true"> 10199 <path stroke-linecap="round" stroke-linejoin="round" d="M4.318 6.318a4.5 4.5 0 000 6.364L12 20.364l7.682-7.682a4.5 4.5 0 00-6.364-6.364L12 7.636l-1.318-1.318a4.5 4.5 0 00-6.364 0z"/> 10200</svg> 10201 </span> 10202 </button> 10203 10204 <button 10205 class="btn btn-primary rounded-full p-2 justify-center cmsp511-text-sm" 10206 title="Add to Cart Elna elephant" 10207 aria-label="Add to Cart Elna elephant" 10208 data-addto="cart" 10209 > 10210 <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" width="20" height="20" aria-hidden="true"> 10211 <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"/> 10212</svg> 10213 </button> 10214 </div> 10215 </div> 10216 10217 <div class="product-info flex flex-col grow min-h-32"> 10218 <div class="w-fit"> 10219 <p class="cmsp511-text-sm text-gray-medium"> 10220 Size: 10221 28 cm </p> 10222 </div> 10223 <div class="mt-2 mb-1 items-center justify-left font-semibold cmsp511-text-base cmsp511-text-left"> 10224 <a 10225 class="product-item-link line-clamp-2 text-ellipsis overflow-hidden text-black" 10226 href="https://www.steiff.com/en/elna-elephant-064074" 10227 onclick="window.steiffTrackSliderProductClick?.("productslider-category-migrated_1782888533_6a44b8557eaca",19);" 10228 > 10229 Elna elephant </a> 10230 </div> 10231 10232 10233 <div class="pt-1 text-gray-dark" 10234 x-data="initPriceBox()" 10235 x-defer="intersect" 10236 @update-prices-213677.window="updatePrice($event.detail);" 10237 > 10238 <div class="price-box price-final_price" data-role="priceBox" data-product-id="213677" data-price-box="product-id-213677"> 10239 <span 10240 x-data x-id="['product\u002Dprice\u002D213677']" class="price-container price-final_price tax weee" 10241 >
10242 <span :id="$id('product\u002Dprice\u002D213677')" data-price-amount="37.95" 10243 data-price-type="finalPrice" 10244 class="price-wrapper " 10245 ><span class="price">€37.95</span></span> 10246 </span> 10247 10248 10249</div> </div> 10250 10251 </div> 10252</form> 10253 </div> 10254 </div> 10255 <div class="swiper-scrollbar" x-ref="swiperScrollbar"></div> 10256 </div> 10257 <div class="flex justify-between py-4 top-1/2 absolute -mx-6 w-[calc(100%+48px)] xl:w-full xl:mx-0"> 10258 <button 10259 type="button" 10260 aria-label="Previous slide" 10261 :disabled="active === 0" 10262 class="text-black flex-none px-2 py-8 z-10 disabled:invisible bg-greenGray opacity-70 hover:opacity-100 shadow-lg rounded" 10263 @click="prev()" 10264 > 10265 <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" width="20" height="20" aria-hidden="true"> 10266 <path stroke-linecap="round" stroke-linejoin="round" d="M15 19l-7-7 7-7"/> 10267</svg> 10268 </button> 10269 <button 10270 type="button" 10271 aria-label="Next slide" 10272 :disabled="isEnd" 10273 class="text-black flex-none px-2 py-8 z-10 disabled:invisible bg-greenGray opacity-70 hover:opacity-100 shadow-lg rounded" 10274 @click="next()" 10275 > 10276 <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" width="20" height="20" aria-hidden="true"> 10277 <path stroke-linecap="round" stroke-linejoin="round" d="M9 5l7 7-7 7"/> 10278</svg> 10279 </button> 10280 </div> 10281 <span id="productslider-category-migrated_1782888533_6a44b8557eaca-slider-end" tabindex="-1"></span> 10282 </div> 10283 </section>
10284<script>(function(){if(typeof window.SteiffGTMAddToCartProducts==="undefined")window.SteiffGTMAddToCartProducts={};Object.assign(window.SteiffGTMAddToCartProducts,{"319116":{"id":"081064","quote_item_id":"319116","entity_id":319116,"name":"Hoppie ballet rabbit","brand":"Steiff","variant":"multicoloured","price":"49.95","metric1":"49.95","dimension6":"plush","dimension10":"","dimension11":"30 cm","dimension12":300,"quantity":1},"340363":{"id":"112706","quote_item_id":"340363","entity_id":340363,"name":"Pendant Hoppie rabbit \u2013 Love","brand":"Steiff","variant":"light grey","price":"24.95","metric1":"24.95","dimension6":"plush","dimension10":"","dimension11":"15 cm","dimension12":300,"quantity":1},"287102":{"id":"081026","quote_item_id":"287102","entity_id":287102,"name":"Light at Night Hoppie rabbit","brand":"Steiff","variant":"light grey","price":"70.00","metric1":"70.00","dimension6":"plush","dimension10":"","dimension11":"28 cm","dimension12":300,"quantity":1},"85480":{"id":"073427","quote_item_id":"85480","entity_id":85480,"name":"Lita lamb","brand":"Steiff","variant":"white","price":"39.95","metric1":"39.95","dimension6":"plush","dimension10":"","dimension11":"30 cm","dimension12":300,"quantity":1},"287057":{"id":"095375","quote_item_id":"287057","entity_id":287057,"name":"Gin snake","brand":"Steiff","variant":"light green","price":"44.95","metric1":"44.95","dimension6":"plush","dimension10":"","dimension11":"130 cm","dimension12":300,"quantity":1},"278494":{"id":"242717","quote_item_id":"278494","entity_id":278494,"name":"My first Steiff Ellie elephant","brand":"Steiff","variant":"light grey","price":"37.95","metric1":"37.95","dimension6":"plush","dimension10":"","dimension11":"24 cm","dimension12":300,"quantity":1},"85744":{"id":"241833","quote_item_id":"85744","entity_id":85744,"name":"Ollie owl","brand":"Steiff","variant":"beige","price":"37.95","metric1":"37.95","dimension6":"plush","dimension10":"","dimension11":"23 cm","dimension12":300,"quantity":1},"320853":{"id":"074417","quote_item_id":"320853","entity_id":320853,"name":"Pedro racoon","brand":"Steiff","variant":"light grey","price":"44.95","metric1":"44.95","dimension6":"plush","dimension10":"","dimension11":"23 cm","dimension12":300,"quantity":1},"85555":{"id":"073922","quote_item_id":"85555","entity_id":85555,"name":"Dinkie donkey","brand":"Steiff","variant":"light grey","price":"27.95","metric1":"27.95","dimension6":"plush","dimension10":"","dimension11":"20 cm","dimension12":300,"quantity":1},"85540":{"id":"073748","quote_item_id":"85540","entity_id":85540,"name":"Dinkie donkey","brand":"Steiff","variant":"light grey","price":"39.95","metric1":"39.95","dimension6":"plush","dimension10":"","dimension11":"30 cm","dimension12":300,"quantity":1},"161640":{"id":"063978","quote_item_id":"161640","entity_id":161640,"name":"Piko pig","brand":"Steiff","variant":"rose","price":"37.95","metric1":"37.95","dimension6":"plush","dimension10":"","dimension11":"28 cm","dimension12":300,"quantity":1},"284588":{"id":"075490","quote_item_id":"284588","entity_id":284588,"name":"Gilda goose","brand":"Steiff","variant":"white","price":"34.95","metric1":"34.95","dimension6":"plush","dimension10":"","dimension11":"26 cm","dimension12":300,"quantity":1},"161658":{"id":"099175","quote_item_id":"161658","entity_id":161658,"name":"Berno Goldendoodle","brand":"Steiff","variant":"beige","price":"39.95","metric1":"39.95","dimension6":"plush","dimension10":"","dimension11":"26 cm","dimension12":300,"quantity":1},"294171":{"id":"024696","quote_item_id":"294171","entity_id":294171,"name":"Disney Originals Stitch","brand":"Steiff","variant":"medium blue","price":"55.00","metric1":"55.00","dimension6":"plush","dimension10":"","dimension11":"22 cm","dimension12":300,"quantity":1},"84241":{"id":"080470","quote_item_id":"84241","entity_id":84241,"name":"Hoppie rabbit","brand":"Steiff","variant":"light grey","price":"37.95","metric1":"37.95","dimension6":"plush","dimension10":"","dimension11":"28 cm","dimension12":300,"quantity":1},"85948":{"id":"087806","quote_item_id":"85948","entity_id":85948,"name":"Dixi triceratops","brand":"Steiff","variant":"medium blue","price":"39.95","metric1":"39.95","dimension6":"plush","dimension10":"","dimension11":"28 cm","dimension12":300,"quantity":1}
10284,"263464":{"id":"067198","quote_item_id":"263464","entity_id":263464,"name":"Rocky dragon","brand":"Steiff","variant":"khaki","price":"80.00","metric1":"80.00","dimension6":"plush","dimension10":"","dimension11":"32 cm","dimension12":300,"quantity":1},"287048":{"id":"062490","quote_item_id":"287048","entity_id":287048,"name":"Lio penguin","brand":"Steiff","variant":"light grey","price":"37.95","metric1":"37.95","dimension6":"plush","dimension10":"","dimension11":"21 cm","dimension12":300,"quantity":1},"213665":{"id":"060427","quote_item_id":"213665","entity_id":213665,"name":"Bodo monkey","brand":"Steiff","variant":"light brow","price":"39.95","metric1":"39.95","dimension6":"plush","dimension10":"","dimension11":"30 cm","dimension12":300,"quantity":1},"213677":{"id":"064074","quote_item_id":"213677","entity_id":213677,"name":"Elna elephant","brand":"Steiff","variant":"light grey","price":"37.95","metric1":"37.95","dimension6":"plush","dimension10":"","dimension11":"28 cm","dimension12":300,"quantity":1}});})();</script>
vendor: 1 bytes, line 10284
10284
10285<script> 10286(function() { 10287 'use strict'; 10288 const impressions = [{"id":"081064","quote_item_id":"319116","entity_id":319116,"name":"Hoppie ballet rabbit","brand":"Steiff","variant":"multicoloured","price":"49.95","metric1":"49.95","dimension6":"plush","dimension10":"","dimension11":"30 cm","dimension12":300,"position":1,"list":"productslider-category-migrated_1782888533_6a44b8557eaca"},{"id":"112706","quote_item_id":"340363","entity_id":340363,"name":"Pendant Hoppie rabbit \u2013 Love","brand":"Steiff","variant":"light grey","price":"24.95","metric1":"24.95","dimension6":"plush","dimension10":"","dimension11":"15 cm","dimension12":300,"position":2,"list":"productslider-category-migrated_1782888533_6a44b8557eaca"},{"id":"081026","quote_item_id":"287102","entity_id":287102,"name":"Light at Night Hoppie rabbit","brand":"Steiff","variant":"light grey","price":"70.00","metric1":"70.00","dimension6":"plush","dimension10":"","dimension11":"28 cm","dimension12":300,"position":3,"list":"productslider-category-migrated_1782888533_6a44b8557eaca"},{"id":"073427","quote_item_id":"85480","entity_id":85480,"name":"Lita lamb","brand":"Steiff","variant":"white","price":"39.95","metric1":"39.95","dimension6":"plush","dimension10":"","dimension11":"30 cm","dimension12":300,"position":4,"list":"productslider-category-migrated_1782888533_6a44b8557eaca"},{"id":"095375","quote_item_id":"287057","entity_id":287057,"name":"Gin snake","brand":"Steiff","variant":"light green","price":"44.95","metric1":"44.95","dimension6":"plush","dimension10":"","dimension11":"130 cm","dimension12":300,"position":5,"list":"productslider-category-migrated_1782888533_6a44b8557eaca"},{"id":"242717","quote_item_id":"278494","entity_id":278494,"name":"My first Steiff Ellie elephant","brand":"Steiff","variant":"light grey","price":"37.95","metric1":"37.95","dimension6":"plush","dimension10":"","dimension11":"24 cm","dimension12":300,"position":6,"list":"productslider-category-migrated_1782888533_6a44b8557eaca"},{"id":"241833","quote_item_id":"85744","entity_id":85744,"name":"Ollie owl","brand":"Steiff","variant":"beige","price":"37.95","metric1":"37.95","dimension6":"plush","dimension10":"","dimension11":"23 cm","dimension12":300,"position":7,"list":"productslider-category-migrated_1782888533_6a44b8557eaca"},{"id":"074417","quote_item_id":"320853","entity_id":320853,"name":"Pedro racoon","brand":"Steiff","variant":"light grey","price":"44.95","metric1":"44.95","dimension6":"plush","dimension10":"","dimension11":"23 cm","dimension12":300,"position":8,"list":"productslider-category-migrated_1782888533_6a44b8557eaca"},{"id":"073922","quote_item_id":"85555","entity_id":85555,"name":"Dinkie donkey","brand":"Steiff","variant":"light grey","price":"27.95","metric1":"27.95","dimension6":"plush","dimension10":"","dimension11":"20 cm","dimension12":300,"position":9,"list":"productslider-category-migrated_1782888533_6a44b8557eaca"},{"id":"073748","quote_item_id":"85540","entity_id":85540,"name":"Dinkie donkey","brand":"Steiff","variant":"light grey","price":"39.95","metric1":"39.95","dimension6":"plush","dimension10":"","dimension11":"30 cm","dimension12":300,"position":10,"list":"productslider-category-migrated_1782888533_6a44b8557eaca"},{"id":"063978","quote_item_id":"161640","entity_id":161640,"name":"Piko pig","brand":"Steiff","variant":"rose","price":"37.95","metric1":"37.95","dimension6":"plush","dimension10":"","dimension11":"28 cm","dimension12":300,"position":11,"list":"productslider-category-migrated_1782888533_6a44b8557eaca"},{"id":"075490","quote_item_id":"284588","entity_id":284588,"name":"Gilda goose","brand":"Steiff","variant":"white","price":"34.95","metric1":"34.95","dimension6":"plush","dimension10":"","dimension11":"26 cm","dimension12":300,"position":12,"list":"productslider-category-migrated_1782888533_6a44b8557eaca"},{"id":"099175","quote_item_id":"161658","entity_id":161658,"name":"Berno Goldendoodle","brand":"Steiff","variant":"beige","price":"39.95","metric1":"39.95","dimension6":"plush","dimension10":"","dimension11":"26 cm","dimension12":300,"position":13,"list":"productslider-category-migrated_1782888533_6a44b8557eaca"},{"id":"024696","quote_item_id":"294171","entity_id":294171,"name":"Disney Originals Stitch","brand":"Steiff","variant":"medium blue","price":"55.00","metric1":"55.00","dimension6":"plush","dimension10":"","dimension11":"22 cm","dimension12":300,"position":14,"list":"productslider-category-migrated_1782888533_6a44b8557eaca"},{"id":"080470","quote_item_id":"84241","entity_id":84241,"name":"Hoppie rabbit","brand":"Steiff","variant":"light grey","price":"37.95","metric1":"37.95","dimension6":"plush","dimension10":"","dimension11":"28 cm","dimension12":300,"position":15,"list":"productslider-category-migrated_1782888533_6a44b8557eaca"},{"id":"087806","quote_item_id":"85948","entity_id":85948,"name":"Dixi triceratops","brand":"Steiff","variant":"medium blue","price":"39.95","metric1":"39.95","dimension6":"plush","dimension10":"","dimension11":"28 cm","dimension12":300,"position":16,"list":"productslider-category-migrated_1782888533_6a44b8557eaca"},{"id":"067198","quote_item_id":"263464","entity_id":263464,"name":"Rocky dragon","brand":"Steiff","variant":"khaki","price":"80.00","metric1":"80.00","dimension6":"plush","dimension10":"","dimension11":"32 cm","dimension12":300,"position":17,"list":"productslider-category-migrated_1782888533_6a44b8557eaca"}
10288,{"id":"062490","quote_item_id":"287048","entity_id":287048,"name":"Lio penguin","brand":"Steiff","variant":"light grey","price":"37.95","metric1":"37.95","dimension6":"plush","dimension10":"","dimension11":"21 cm","dimension12":300,"position":18,"list":"productslider-category-migrated_1782888533_6a44b8557eaca"},{"id":"060427","quote_item_id":"213665","entity_id":213665,"name":"Bodo monkey","brand":"Steiff","variant":"light brow","price":"39.95","metric1":"39.95","dimension6":"plush","dimension10":"","dimension11":"30 cm","dimension12":300,"position":19,"list":"productslider-category-migrated_1782888533_6a44b8557eaca"},{"id":"064074","quote_item_id":"213677","entity_id":213677,"name":"Elna elephant","brand":"Steiff","variant":"light grey","price":"37.95","metric1":"37.95","dimension6":"plush","dimension10":"","dimension11":"28 cm","dimension12":300,"position":20,"list":"productslider-category-migrated_1782888533_6a44b8557eaca"}]; 10289 const currencyCode = 'EUR'; 10290 const sliderId = "productslider-category-migrated_1782888533_6a44b8557eaca"; 10291 const listName = "productslider-category-migrated_1782888533_6a44b8557eaca"; 10292 if (typeof window.SteiffGTMSliderProductClicks === 'undefined') { 10293 window.SteiffGTMSliderProductClicks = {}; 10294 } 10295 window.SteiffGTMSliderProductClicks[sliderId] = { list: listName, currencyCode, impressions }; 10296 function push() { 10297 window.SteiffTracking.waitForUsercentricsLoaded().then(function() { 10298 window.SteiffTracking.trackEvent({ 10299 event: 'ee.productImpression', 10300 ecommerce: { currencyCode, impressions } 10301 }); 10302 }); 10303 } 10304 if (typeof window.SteiffTracking !== 'undefined') { 10305 push(); 10306 } else { 10307 let attempts = 0; 10308 const run = function() { 10309 if (typeof window.SteiffTracking !== 'undefined') { 10310 push(); 10311 return; 10312 } 10313 attempts += 1; 10314 if (attempts < 150) { 10315 requestAnimationFrame(run); 10316 } 10317 }; 10318 requestAnimationFrame(run); 10319 } 10320})(); 10321</script>
vendor: 1 bytes, line 10321
10321
10322<script> 10323'use strict'; 10324window.steiffTrackSliderProductClick = function (sliderId, slideIndex) { 10325 const clickData = sliderId && window.SteiffGTMSliderProductClicks?.[sliderId]; 10326 const idx = parseInt(slideIndex, 10); 10327 const gtmProduct = clickData?.impressions?.[Number.isNaN(idx) ? -1 : idx]; 10328 if (!clickData || !gtmProduct || typeof window.SteiffTracking === 'undefined') { 10329 return; 10330 } 10331 window.SteiffTracking.waitForUsercentricsLoaded().then(function () { 10332 window.SteiffTracking.trackEvent({ 10333 event: 'ee.productClick', 10334 ecommerce: { 10335 currencyCode: clickData.currencyCode, 10336 click: { actionField: { list: clickData.list }, products: [gtmProduct] } 10337 } 10338 }); 10339 }); 10340}; 10341</script>
10341 10342 </div> 10343 </div> 10344 </div> 10345 <div data-liveview-element="steiff_row" 10346 class=" not-prose container" 10347 > 10348 <div data-liveview-element="steiff_row" 10349 class=" not-prose" 10350 style="padding-top: 1rem; padding-bottom: 1rem;" > 10351 <div 10352 id="steiff-column-migrated_1782888533_6a44b855aa814" 10353 class="grid" 10354 data-liveview-element="steiff_column" 10355 style="background-color: ; color: ;"> 10356 <div 10357 id="steiff-column-item-steiff_content_migration_6a44b855abba5" 10358 class="min-w-0 justify-self-start flex items-start order-none sm:order-none lg:order-none h-full" 10359 data-liveview-element="steiff_column_item" 10360 > 10361 <div 10362 data-liveview-element="steiff_text" 10363 class="steiff-text-content cmsp511-text-left cmsp511-text-base cmsp511-font-normal" 10364 > 10365 <h2>The World of Steiff</h2></div> 10366 </div> 10367 <style> 10368 :where(#steiff-column-migrated_1782888533_6a44b855aa814) { 10369 --cols: repeat(1, minmax(0px, 1fr)); 10370 --gap: 1rem; 10371 grid-template-columns: var(--cols); 10372 gap: var(--gap); 10373 } 10374 10375 10376 </style> 10377</div> 10378 </div> 10379 <div data-liveview-element="steiff_row" 10380 class=" not-prose" 10381 style="padding-top: 1rem; padding-bottom: 1rem;" > 10382 <div 10383 id="steiff-column-migrated_1782888533_6a44b855acd27" 10384 class="grid" 10385 data-liveview-element="steiff_column" 10386 style="background-color: ; color: ;"> 10387 <div 10388 id="steiff-column-item-steiff_content_migration_6a44b855b9eb5" 10389 class="min-w-0 justify-self-start flex items-start order-none sm:order-none lg:order-none w-full h-full" 10390 data-liveview-element="steiff_column_item" 10391 > 10392 <div class="overflow-hidden hover:shadow-lg group-[.navigation-cms:hover]:shadow-none group-[.navigation-cms]:rounded-md group-[.teaser-alternative-design]:relative group-[.navigation-cms]:p-2 w-full"> 10393 <div class=" group-[.navigation-cms]:!bg-transparent" 10394 style="background-color: #cdd7d7;" > 10395 <a href="https://www.steiff.com/en/steiff-museum" class="flex flex-col h-full group-[.teaser-alternative-design]:relative" target="_self"> 10396 <div class="group-[.navigation-cms]:h-[11.5625rem] lg:group-[.navigation-cms]:h-[110px] group-[.navigation-cms]:w-full group-[.navigation-cms]:pt-2 group-[.navigation-cms]:px-2 group-[.navigation-cms]:bg-gray-ultralight group-[.navigation-cms]:rounded-t-lg group-[.teaser-alternative-design]:!h-full group-[.teaser-alternative-design]:!w-full group-[.teaser-alternative-design]:!min-h-0 group-[.teaser-alternative-design]:!p-0 group-[.teaser-alternative-design]:!bg-transparent group-[.teaser-alternative-design]:rounded-lg"> 10397 <picture data-liveview-element="image"><source media="(min-width: 1024px)" type="image/avif" srcset="https://www.steiff.com/media/wysiwyg/Homepage/Aktuelles_Neu/230222_steiff_museum_2erTeaser_1146x740px__xx.jpg?format=avif 1x"><source media="(min-width: 1024px)" type="image/webp" srcset="https://www.steiff.com/media/wysiwyg/Homepage/Aktuelles_Neu/230222_steiff_museum_2erTeaser_1146x740px__xx.jpg?format=webp 1x"><source media="(min-width: 1024px)" type="image/jpeg" srcset="https://www.steiff.com/media/wysiwyg/Homepage/Aktuelles_Neu/230222_steiff_museum_2erTeaser_1146x740px__xx.jpg?format=auto 1x"><source type="image/avif" srcset="https://www.steiff.com/media/wysiwyg/Homepage/Aktuelles_Neu/230222_steiff_museum_2erTeaser_686x370px__xx.jpg?format=avif 1x"><source type="image/webp" srcset="https://www.steiff.com/media/wysiwyg/Homepage/Aktuelles_Neu/230222_steiff_museum_2erTeaser_686x370px__xx.jpg?format=webp 1x"><source type="image/jpeg" srcset="https://www.steiff.com/media/wysiwyg/Homepage/Aktuelles_Neu/230222_steiff_museum_2erTeaser_686x370px__xx.jpg?format=auto 1x"><img src="https://www.steiff.com/media/wysiwyg/Homepage/Aktuelles_Neu/230222_steiff_museum_2erTeaser_686x370px__xx.jpg?format=webp" width="1372" height="740" alt="image" loading="lazy" class=" object-cover w-full h-auto group-[.navigation-cms]:h-full group-[.navigation-cms]:rounded-lg group-[.teaser-alternative-design]:brightness-50"></picture> </div> 10398 <div class="teaser-content flex flex-col w-full flex-grow group-[.navigation-cms]:items-center group-[.teaser-alternative-design]:absolute group-[.teaser-alternative-design]:top-1/2 group-[.teaser-alternative-design]:left-1/2 group-[.teaser-alternative-design]:-translate-x-1/2 group-[.teaser-alternative-design]:-translate-y-1/2 group-[.navigation-cms]:justify-center group-[.navigation-cms]:bg-gray-ultralight group-[.navigation-cms]:rounded-b-lg group-[.navigation-cms]:pt-2 group-[.navigation-cms]:pr-3 group-[.navigation-cms]:pb-3 group-[.navigation-cms]:pl-2 group-[.teaser-alternative-design]:!bg-transparent group-[.teaser-alternative-design]:!p-0"> 10399 <div class="cmsp511-text-center p-6 group-[.navigation-cms]:p-0 group-[.teaser-alternative-design]:px-4 group-[.teaser-alternative-design]:py-6"> 10400 <h3 data-liveview-element="steiff-headline" 10401 class="hyphens-auto break-words h4 cmsp511-text-center teaser-headline group-[.teaser-alternative-design]:leading-[110%] group-[.teaser-alternative-design]:font-bold group-[.teaser-alternative-design]:text-center group-[.navigation-cms]:mb-2 group-[.navigation-cms]:font-bold group-[.navigation-cms]:text-left group-[.navigation-cms]:!text-black group-[.navigation-cms]:!cmsp511-text-base group-[.navigation-cms]:leading-[110%] group-[.teaser-alternative-design]:!text-white group-[.teaser-alternative-design]:!text-[1.5rem]" 10402 > 10403 Steiff Museum</h3> 10404 <sp
10404an class="btn btn-primary mt-4 md:mt-6 group-[.navigation-cms]:!mt-2 group-[.navigation-cms]:flex group-[.navigation-cms]:items-center group-[.navigation-cms]:justify-center group-[.navigation-cms]:max-w-[7.75rem] group-[.navigation-cms]:px-4 group-[.navigation-cms]:text-xs group-[.navigation-cms]:font-normal group-[.navigation-cms]:shadow-md group-[.navigation-cms]:mx-auto group-[.navigation-cms\:not\(.teaser-alternative-design\)]:!text-white group-[.navigation-cms\:not\(.teaser-alternative-design\)]:!bg-black group-[.teaser-alternative-design]:max-w-[7.75rem] group-[.teaser-alternative-design]:text-xs group-[.teaser-alternative-design]:!text-gray-dark group-[.teaser-alternative-design]:!bg-white group-[.teaser-alternative-design]:hover:shadow-lg" 10405 > 10406 <span class="group-[.navigation-cms]:text-inherit">Find out more</span> 10407 </span> 10408 </div> 10409 </div> 10410 </a> 10411 </div> 10412 </div> 10413 </div> 10414 <div 10415 id="steiff-column-item-steiff_content_migration_6a44b855bf441" 10416 class="min-w-0 justify-self-start flex items-start order-none sm:order-none lg:order-none w-full h-full" 10417 data-liveview-element="steiff_column_item" 10418 > 10419 <div class="overflow-hidden hover:shadow-lg group-[.navigation-cms:hover]:shadow-none group-[.navigation-cms]:rounded-md group-[.teaser-alternative-design]:relative group-[.navigation-cms]:p-2 w-full"> 10420 <div class=" group-[.navigation-cms]:!bg-transparent" 10421 style="background-color: #d7cdd7;" > 10422 <a href="https://www.steiff.com/en/club" class="flex flex-col h-full group-[.teaser-alternative-design]:relative" target="_self"> 10423 <div class="group-[.navigation-cms]:h-[11.5625rem] lg:group-[.navigation-cms]:h-[110px] group-[.navigation-cms]:w-full group-[.navigation-cms]:pt-2 group-[.navigation-cms]:px-2 group-[.navigation-cms]:bg-gray-ultralight group-[.navigation-cms]:rounded-t-lg group-[.teaser-alternative-design]:!h-full group-[.teaser-alternative-design]:!w-full group-[.teaser-alternative-design]:!min-h-0 group-[.teaser-alternative-design]:!p-0 group-[.teaser-alternative-design]:!bg-transparent group-[.teaser-alternative-design]:rounded-lg"> 10424 <picture data-liveview-element="image"><source media="(min-width: 1024px)" type="image/avif" srcset="https://www.steiff.com/media/wysiwyg/Homepage/OS_SC_teaser_Bild.jpg?format=avif 1x"><source media="(min-width: 1024px)" type="image/webp" srcset="https://www.steiff.com/media/wysiwyg/Homepage/OS_SC_teaser_Bild.jpg?format=webp 1x"><source media="(min-width: 1024px)" type="image/jpeg" srcset="https://www.steiff.com/media/wysiwyg/Homepage/OS_SC_teaser_Bild.jpg?format=auto 1x"><source type="image/avif" srcset="https://www.steiff.com/media/wysiwyg/Homepage/OS_SC_teaser_Bild.jpg?format=avif 1x"><source type="image/webp" srcset="https://www.steiff.com/media/wysiwyg/Homepage/OS_SC_teaser_Bild.jpg?format=webp 1x"><source type="image/jpeg" srcset="https://www.steiff.com/media/wysiwyg/Homepage/OS_SC_teaser_Bild.jpg?format=auto 1x"><img src="https://www.steiff.com/media/wysiwyg/Homepage/OS_SC_teaser_Bild.jpg?format=webp" width="688" height="444" alt="OS_SC_teaser_Bild - 1" loading="lazy" class=" object-cover w-full h-auto group-[.navigation-cms]:h-full group-[.navigation-cms]:rounded-lg group-[.teaser-alternative-design]:brightness-50"></picture> </div> 10425 <div class="teaser-content flex flex-col w-full flex-grow group-[.navigation-cms]:items-center group-[.teaser-alternative-design]:absolute group-[.teaser-alternative-design]:top-1/2 group-[.teaser-alternative-design]:left-1/2 group-[.teaser-alternative-design]:-translate-x-1/2 group-[.teaser-alternative-design]:-translate-y-1/2 group-[.navigation-cms]:justify-center group-[.navigation-cms]:bg-gray-ultralight group-[.navigation-cms]:rounded-b-lg group-[.navigation-cms]:pt-2 group-[.navigation-cms]:pr-3 group-[.navigation-cms]:pb-3 group-[.navigation-cms]:pl-2 group-[.teaser-alternative-design]:!bg-transparent group-[.teaser-alternative-design]:!p-0"> 10426 <div class="cmsp511-text-center p-6 group-[.navigation-cms]:p-0 group-[.teaser-alternative-design]:px-4 group-[.teaser-alternative-design]:py-6"> 10427 <h3 data-liveview-element="steiff-headline" 10428 class="hyphens-auto break-words h4 cmsp511-text-center teaser-headline group-[.teaser-alternative-design]:leading-[110%] group-[.teaser-alternative-design]:font-bold group-[.teaser-alternative-design]:text-center group-[.navigation-cms]:mb-2 group-[.navigation-cms]:font-bold group-[.navigation-cms]:text-left group-[.navigation-cms]:!text-black group-[.navigation-cms]:!cmsp511-text-base group-[.navigation-cms]:leading-[110%] group-[.teaser-alternative-design]:!text-white group-[.teaser-alternative-design]:!text-[1.5rem]" 10429 > 10430 Steiff Club</h3> 10431 <sp
10431an class="btn btn-primary mt-4 md:mt-6 group-[.navigation-cms]:!mt-2 group-[.navigation-cms]:flex group-[.navigation-cms]:items-center group-[.navigation-cms]:justify-center group-[.navigation-cms]:max-w-[7.75rem] group-[.navigation-cms]:px-4 group-[.navigation-cms]:text-xs group-[.navigation-cms]:font-normal group-[.navigation-cms]:shadow-md group-[.navigation-cms]:mx-auto group-[.navigation-cms\:not\(.teaser-alternative-design\)]:!text-white group-[.navigation-cms\:not\(.teaser-alternative-design\)]:!bg-black group-[.teaser-alternative-design]:max-w-[7.75rem] group-[.teaser-alternative-design]:text-xs group-[.teaser-alternative-design]:!text-gray-dark group-[.teaser-alternative-design]:!bg-white group-[.teaser-alternative-design]:hover:shadow-lg" 10432 > 10433 <span class="group-[.navigation-cms]:text-inherit">Find out more</span> 10434 </span> 10435 </div> 10436 </div> 10437 </a> 10438 </div> 10439 </div> 10440 </div> 10441 <style> 10442 :where(#steiff-column-migrated_1782888533_6a44b855acd27) { 10443 --cols: repeat(1, minmax(0px, 1fr)); 10444 --gap: 1rem; 10445 grid-template-columns: var(--cols); 10446 gap: var(--gap); 10447 } 10448 10449 @media (min-width: 640px) { 10450 :where(#steiff-column-migrated_1782888533_6a44b855acd27) { 10451 --cols: repeat(2, minmax(0px, 1fr)); } 10452 } 10453 10454 </style> 10455</div> 10456 </div> 10457 <div data-liveview-element="steiff_row" 10458 class=" not-prose" 10459 style="padding-top: 1rem; padding-bottom: 1rem;" > 10460 <div 10461 id="steiff-column-migrated_1782888533_6a44b855c0940" 10462 class="grid" 10463 data-liveview-element="steiff_column" 10464 style="background-color: ; color: ;"> 10465 <div 10466 id="steiff-column-item-steiff_content_migration_6a44b855cd2a2" 10467 class="min-w-0 justify-self-start flex items-start order-none sm:order-none lg:order-none w-full h-full" 10468 data-liveview-element="steiff_column_item" 10469 > 10470 <div class="overflow-hidden hover:shadow-lg group-[.navigation-cms:hover]:shadow-none group-[.navigation-cms]:rounded-md group-[.teaser-alternative-design]:relative group-[.navigation-cms]:p-2 w-full"> 10471 <div class=" group-[.navigation-cms]:!bg-transparent" 10472 style="background-color: #c8cdd7;" > 10473 <a href="https://www.steiff.com/en/sustainabilitty" class="flex flex-col h-full group-[.teaser-alternative-design]:relative" target="_self"> 10474 <div class="group-[.navigation-cms]:h-[11.5625rem] lg:group-[.navigation-cms]:h-[110px] group-[.navigation-cms]:w-full group-[.navigation-cms]:pt-2 group-[.navigation-cms]:px-2 group-[.navigation-cms]:bg-gray-ultralight group-[.navigation-cms]:rounded-t-lg group-[.teaser-alternative-design]:!h-full group-[.teaser-alternative-design]:!w-full group-[.teaser-alternative-design]:!min-h-0 group-[.teaser-alternative-design]:!p-0 group-[.teaser-alternative-design]:!bg-transparent group-[.teaser-alternative-design]:rounded-lg"> 10475 <picture data-liveview-element="image"><source media="(min-width: 1024px)" type="image/avif" srcset="https://www.steiff.com/media/wysiwyg/Homepage/Aktuelles_Neu/230222_steiff_nachhaltigkeit_2erTeaser_1146x740px__xx.jpg?format=avif 1x"><source media="(min-width: 1024px)" type="image/webp" srcset="https://www.steiff.com/media/wysiwyg/Homepage/Aktuelles_Neu/230222_steiff_nachhaltigkeit_2erTeaser_1146x740px__xx.jpg?format=webp 1x"><source media="(min-width: 1024px)" type="image/jpeg" srcset="https://www.steiff.com/media/wysiwyg/Homepage/Aktuelles_Neu/230222_steiff_nachhaltigkeit_2erTeaser_1146x740px__xx.jpg?format=auto 1x"><source type="image/avif" srcset="https://www.steiff.com/media/wysiwyg/Homepage/Aktuelles_Neu/230222_steiff_nachhaltigkeit_2erTeaser_686x370px__xx.jpg?format=avif 1x"><source type="image/webp" srcset="https://www.steiff.com/media/wysiwyg/Homepage/Aktuelles_Neu/230222_steiff_nachhaltigkeit_2erTeaser_686x370px__xx.jpg?format=webp 1x"><source type="image/jpeg" srcset="https://www.steiff.com/media/wysiwyg/Homepage/Aktuelles_Neu/230222_steiff_nachhaltigkeit_2erTeaser_686x370px__xx.jpg?format=auto 1x"><img src="https://www.steiff.com/media/wysiwyg/Homepage/Aktuelles_Neu/230222_steiff_nachhaltigkeit_2erTeaser_686x370px__xx.jpg?format=webp" width="1372" height="740" alt="image" loading="lazy" class=" object-cover w-full h-auto group-[.navigation-cms]:h-full group-[.navigation-cms]:rounded-lg group-[.teaser-alternative-design]:brightness-50"></picture> </div> 10476 <div class="teaser-content flex flex-col w-full flex-grow group-[.navigation-cms]:items-center group-[.teaser-alternative-design]:absolute group-[.teaser-alternative-design]:top-1/2 group-[.teaser-alternative-design]:left-1/2 group-[.teaser-alternative-design]:-translate-x-1/2 group-[.teaser-alternative-design]:-translate-y-1/2 group-[.navigation-cms]:justify-center group-[.navigation-cms]:bg-gray-ultralight group-[.navigation-cms]:rounded-b-lg group-[.navigation-cms]:pt-2 group-[.navigation-cms]:pr-3 group-[.navigation-cms]:pb-3 group-[.navigation-cms]:pl-2 group-[.teaser-alternative-design]:!bg-transparent group-[.teaser-alternative-design]:!p-0"> 10477 <div class="cmsp511-text-center p-6 group-[.navigation-cms]:p-0 group-[.teaser-alternative-design]:px-4 group-[.teaser-alternative-design]:py-6"> 10478 <h3 data-liveview-element="steiff-headline" 10479 class="hyphens-auto break-words h4 cmsp511-text-center teaser-headline group-[.teaser-alternative-design]:leading-[110%] group-[.teaser-alternative-design]:font-bold group-[.teaser-alternative-design]:text-center group-[.navigation-cms]:mb-2 group-[.navigation-cms]:font-bold group-[.navigation-cms]:text-left group-[.navigation-cms]:!text-black group-[.navigation-cms]:!cmsp511-text-base group-[.navigation-cms]:leading-[110%] group-[.teaser-alternative-design]:!text-white group-[.teaser-alternative-design]:!text-[1.5rem]" 10480 > 10481 Sustainability promise</h3> 10482 <sp
10482an class="btn btn-primary mt-4 md:mt-6 group-[.navigation-cms]:!mt-2 group-[.navigation-cms]:flex group-[.navigation-cms]:items-center group-[.navigation-cms]:justify-center group-[.navigation-cms]:max-w-[7.75rem] group-[.navigation-cms]:px-4 group-[.navigation-cms]:text-xs group-[.navigation-cms]:font-normal group-[.navigation-cms]:shadow-md group-[.navigation-cms]:mx-auto group-[.navigation-cms\:not\(.teaser-alternative-design\)]:!text-white group-[.navigation-cms\:not\(.teaser-alternative-design\)]:!bg-black group-[.teaser-alternative-design]:max-w-[7.75rem] group-[.teaser-alternative-design]:text-xs group-[.teaser-alternative-design]:!text-gray-dark group-[.teaser-alternative-design]:!bg-white group-[.teaser-alternative-design]:hover:shadow-lg" 10483 > 10484 <span class="group-[.navigation-cms]:text-inherit">Find out more</span> 10485 </span> 10486 </div> 10487 </div> 10488 </a> 10489 </div> 10490 </div> 10491 </div> 10492 <div 10493 id="steiff-column-item-steiff_content_migration_6a44b855d9f1e" 10494 class="min-w-0 justify-self-start flex items-start order-none sm:order-none lg:order-none w-full h-full" 10495 data-liveview-element="steiff_column_item" 10496 > 10497 <div class="overflow-hidden hover:shadow-lg group-[.navigation-cms:hover]:shadow-none group-[.navigation-cms]:rounded-md group-[.teaser-alternative-design]:relative group-[.navigation-cms]:p-2 w-full"> 10498 <div class=" group-[.navigation-cms]:!bg-transparent" 10499 style="background-color: #fae1d7;" > 10500 <a href="https://www.steiff.com/en/steiff-shops" class="flex flex-col h-full group-[.teaser-alternative-design]:relative" target="_self"> 10501 <div class="group-[.navigation-cms]:h-[11.5625rem] lg:group-[.navigation-cms]:h-[110px] group-[.navigation-cms]:w-full group-[.navigation-cms]:pt-2 group-[.navigation-cms]:px-2 group-[.navigation-cms]:bg-gray-ultralight group-[.navigation-cms]:rounded-t-lg group-[.teaser-alternative-design]:!h-full group-[.teaser-alternative-design]:!w-full group-[.teaser-alternative-design]:!min-h-0 group-[.teaser-alternative-design]:!p-0 group-[.teaser-alternative-design]:!bg-transparent group-[.teaser-alternative-design]:rounded-lg"> 10502 <picture data-liveview-element="image"><source media="(min-width: 1024px)" type="image/avif" srcset="https://www.steiff.com/media/wysiwyg/Shops/240527_steiff_shops_2erTeaser_1146x740px__1.jpg?format=avif 1x"><source media="(min-width: 1024px)" type="image/webp" srcset="https://www.steiff.com/media/wysiwyg/Shops/240527_steiff_shops_2erTeaser_1146x740px__1.jpg?format=webp 1x"><source media="(min-width: 1024px)" type="image/jpeg" srcset="https://www.steiff.com/media/wysiwyg/Shops/240527_steiff_shops_2erTeaser_1146x740px__1.jpg?format=auto 1x"><source type="image/avif" srcset="https://www.steiff.com/media/wysiwyg/Shops/240527_steiff_shops_2erTeaser_686x370px__1.jpg?format=avif 1x"><source type="image/webp" srcset="https://www.steiff.com/media/wysiwyg/Shops/240527_steiff_shops_2erTeaser_686x370px__1.jpg?format=webp 1x"><source type="image/jpeg" srcset="https://www.steiff.com/media/wysiwyg/Shops/240527_steiff_shops_2erTeaser_686x370px__1.jpg?format=auto 1x"><img src="https://www.steiff.com/media/wysiwyg/Shops/240527_steiff_shops_2erTeaser_686x370px__1.jpg?format=webp" width="1372" height="740" alt="image" loading="lazy" class=" object-cover w-full h-auto group-[.navigation-cms]:h-full group-[.navigation-cms]:rounded-lg group-[.teaser-alternative-design]:brightness-50"></picture> </div> 10503 <div class="teaser-content flex flex-col w-full flex-grow group-[.navigation-cms]:items-center group-[.teaser-alternative-design]:absolute group-[.teaser-alternative-design]:top-1/2 group-[.teaser-alternative-design]:left-1/2 group-[.teaser-alternative-design]:-translate-x-1/2 group-[.teaser-alternative-design]:-translate-y-1/2 group-[.navigation-cms]:justify-center group-[.navigation-cms]:bg-gray-ultralight group-[.navigation-cms]:rounded-b-lg group-[.navigation-cms]:pt-2 group-[.navigation-cms]:pr-3 group-[.navigation-cms]:pb-3 group-[.navigation-cms]:pl-2 group-[.teaser-alternative-design]:!bg-transparent group-[.teaser-alternative-design]:!p-0"> 10504 <div class="cmsp511-text-center p-6 group-[.navigation-cms]:p-0 group-[.teaser-alternative-design]:px-4 group-[.teaser-alternative-design]:py-6"> 10505 <h3 data-liveview-element="steiff-headline" 10506 class="hyphens-auto break-words h4 cmsp511-text-center teaser-headline group-[.teaser-alternative-design]:leading-[110%] group-[.teaser-alternative-design]:font-bold group-[.teaser-alternative-design]:text-center group-[.navigation-cms]:mb-2 group-[.navigation-cms]:font-bold group-[.navigation-cms]:text-left group-[.navigation-cms]:!text-black group-[.navigation-cms]:!cmsp511-text-base group-[.navigation-cms]:leading-[110%] group-[.teaser-alternative-design]:!text-white group-[.teaser-alternative-design]:!text-[1.5rem]" 10507 > 10508 Steiff Shops</h3> 10509 <sp
10509an class="btn btn-primary mt-4 md:mt-6 group-[.navigation-cms]:!mt-2 group-[.navigation-cms]:flex group-[.navigation-cms]:items-center group-[.navigation-cms]:justify-center group-[.navigation-cms]:max-w-[7.75rem] group-[.navigation-cms]:px-4 group-[.navigation-cms]:text-xs group-[.navigation-cms]:font-normal group-[.navigation-cms]:shadow-md group-[.navigation-cms]:mx-auto group-[.navigation-cms\:not\(.teaser-alternative-design\)]:!text-white group-[.navigation-cms\:not\(.teaser-alternative-design\)]:!bg-black group-[.teaser-alternative-design]:max-w-[7.75rem] group-[.teaser-alternative-design]:text-xs group-[.teaser-alternative-design]:!text-gray-dark group-[.teaser-alternative-design]:!bg-white group-[.teaser-alternative-design]:hover:shadow-lg" 10510 > 10511 <span class="group-[.navigation-cms]:text-inherit">Find out more</span> 10512 </span> 10513 </div> 10514 </div> 10515 </a> 10516 </div> 10517 </div> 10518 </div> 10519 <style> 10520 :where(#steiff-column-migrated_1782888533_6a44b855c0940) { 10521 --cols: repeat(1, minmax(0px, 1fr)); 10522 --gap: 1rem; 10523 grid-template-columns: var(--cols); 10524 gap: var(--gap); 10525 } 10526 10527 @media (min-width: 640px) { 10528 :where(#steiff-column-migrated_1782888533_6a44b855c0940) { 10529 --cols: repeat(2, minmax(0px, 1fr)); } 10530 } 10531 10532 </style> 10533</div> 10534 </div> 10535 </div> 10536 <div data-liveview-element="steiff_row" 10537 class=" not-prose" 10538 > 10539 <div data-liveview-element="steiff_row" 10540 class=" not-prose" 10541 style="padding-top: 1rem; padding-bottom: 1rem;" > 10542 <div 10543 id="steiff-column-migrated_1782888533_6a44b855dbde6" 10544 class="grid" 10545 data-liveview-element="steiff_column" 10546 style="background-color: ; color: ;"> 10547 <div 10548 id="steiff-column-item-steiff_content_migration_6a44b855dd0ff" 10549 class="min-w-0 justify-self-start flex items-start order-none sm:order-none lg:order-none w-full h-full" 10550 data-liveview-element="steiff_column_item" 10551 > 10552 <div id="newsletter-hyva-3719b3e6-container" 10553 class="relative w-full" 10554 data-liveview-element="newsletter" 10555 x-data="newsletterTeaserForm({ 10556 subscribeEndpoint: 'https\u003A\u002F\u002Fwww.steiff.com\u002Fen\u002Frest\u002Fen\u002FV1\u002Fsteiff\u002Dnewsletter\u002Fsubscribe\u002F', 10557 storeId: '2', 10558 recaptchaEnabled: true, 10559 recaptchaTokenFieldName: 'g\u002Drecaptcha\u002Dresponse' 10560 })" 10561 x-cloak 10562 > 10563 10564 <picture class="absolute inset-0 z-0 w-full overflow-hidden" aria-hidden="true"> 10565 <source srcset="https://www.steiff.com/media/steiff_newsletter/teaser/default/250613_steiff_nl-teaser-desktop_3840x628px__hell_2.jpg" media="(min-width: 1024px)"> 10566 <source srcset="https://www.steiff.com/media/steiff_newsletter/teaser/default/250613_steiff_nl-teaser-desktop_3840x628px__hell_2.jpg" media="(min-width: 768px)"> 10567 <img src="https://www.steiff.com/media/steiff_newsletter/teaser/default/250613_steiff_nl-teaser-mobile_750x1220px__hell_1.jpg?format=webp" 10568 alt="" 10569 class="z-0 w-full h-full object-cover object-right-bottom" 10570 width="750" 10571 height="1220" 10572 loading="lazy"> 10573</picture> 10574 <div class="absolute top-0 right-0 -mr-1 w-44 h-36 md:w-36 md:h-28 lg:w-64 lg:h-56 md:left-0 md:right-auto md:-top-1 lg:-top-[20px]"> 10575 <span class="absolute inset-0 w-full h-full md:block hidden" 10576 style="mask: url('https://www.steiff.com/static/version1790768634/frontend/Steiff/default/en_GB/images/newsletter/nl-bubble-desktop.svg') center/contain no-repeat; -webkit-mask: url('https://www.steiff.com/static/version1790768634/frontend/Steiff/default/en_GB/images/newsletter/nl-bubble-desktop.svg') center/contain no-repeat; background-color:#9BB4AF;"></span> 10577 <span class="absolute inset-0 w-full h-full rotate-180 md:hidden" 10578 style="mask: url('https://www.steiff.com/static/version1790768634/frontend/Steiff/default/en_GB/images/newsletter/nl-bubble-mobile.svg') center/contain no-repeat; -webkit-mask: url('https://www.steiff.com/static/version1790768634/frontend/Steiff/default/en_GB/images/newsletter/nl-bubble-mobile.svg') center/contain no-repeat; background-color:#9BB4AF;"></span> 10579 <div class="mt-4 mr-4 text-end md:text-start md:flex md:flex-col-reverse md:ml-8 md:mr-0 lg:mt-10"> 10580 <p class="font-bold relative lg:text-3xl" style="color:#ffffff;">discount**</p> 10581 <p class="text-4xl font-bold relative lg:text-6xl" style="color:#ffffff;">10%</p> 10582 </div> 10583</div> 10584 10585 <div class="relative z-10 px-4 pt-16 md:max-w-xl md:mx-auto xl:max-w-4xl pb-52 md:pb-5"> 10586 <h2 class="text-2xl font-bold mb-4" 10587 > 10588 Newsletter </h2> 10589 10590 <div> 10591 <div class="sr-only" 10592 role="status"
10593 aria-live="polite" 10594 aria-atomic="true" 10595 tabindex="-1" 10596 x-ref="srSuccessRegion" 10597 x-text="srAnnouncement"></div> 10598 <div class="sr-only" 10599 aria-live="assertive" 10600 aria-atomic="true" 10601 x-show="srError !== ''" 10602 x-text="srError"></div> 10603 <form id="newsletter-hyva-3719b3e6-subscribe" 10604 class="newsletter-teaser-form" 10605 x-ref="subscribeForm" 10606 @input="onFormInteraction()" 10607 @change="onFormInteraction()" 10608 @submit.prevent="submitForm()" 10609 :aria-label="'Subscribe to Newsletter'"> 10610 <div class="md:grid md:grid-cols-5 md:gap-6 mb-6 md:mb-0"> 10611 <div class="field required flex flex-col !mb-0 md:col-span-3"> 10612 <label for="newsletter-hyva-3719b3e6-email" class="label cmsp511-text-sm text-black mb-2"> 10613 e-mail address </label> 10614 <input type="email" 10615 name="email" 10616 id="newsletter-hyva-3719b3e6-email" 10617 required 10618 aria-required="true" 10619 placeholder="Enter your email address here" 10620 autocomplete="email" 10621 inputmode="email" 10622 aria-describedby="newsletter-hyva-3719b3e6-required-hint" 10623 class="form-input cmsp511-text-base"> 10624 </div> 10625 10626 <button type="submit" 10627 class="btn btn-primary px-6 xl:px-[2.5rem] my-6 w-fit md:col-span-2 hidden md:inline-flex disabled:opacity-80 disabled:cursor-not-allowed" 10628 :disabled="isLoading" 10629 :aria-busy="isLoading"> 10630 Subscribe now </button> 10631 </div> 10632 10633 <fieldset> 10634 <div class="md:grid md:grid-cols-3 md:gap-6"> 10635 <legend class="sr-only">Interests (optional)</legend> 10636 <div class="relative md:col-span-1 checkbox-choice"> 10637 <input type="checkbox" 10638 name="interests" id="newsletter-hyva-3719b3e6-interest-kuscheltier" value="kuscheltier-spielzeug" > 10639 <label for="newsletter-hyva-3719b3e6-interest-kuscheltier"> 10640 <span class="font-bold flex items-center">Cuddly Animals & Toys</span> 10641 </label> 10642 </div> 10643 <div class="relative md:col-span-1 checkbox-choice"> 10644 <input type="checkbox" 10645 name="interests" id="newsletter-hyva-3719b3e6-interest-baby" value="baby-kindermode" > 10646 <label for="newsletter-hyva-3719b3e6-interest-baby"> 10647 <span class="font-bold flex items-center">Baby & children fashion</span> 10648 </label> 10649 </div> 10650 <div class="relative md:col-span-1 checkbox-choice"> 10651 <input type="checkbox" 10652 name="interests" id="newsletter-hyva-3719b3e6-interest-sammler" value="sammler" > 10653 <label for="newsletter-hyva-3719b3e6-interest-sammler"> 10654 <span class="font-bold flex items-center">Collector's World</span> 10655 </label> 10656 </div> 10657 </div> 10658</fieldset> 10659 10660 <div class="field required relative md:mt-4 checkbox-choice required"> 10661 <input type="checkbox" 10662 id="newsletter-hyva-3719b3e6-terms" 10663 name="privacy_accepted" 10664 required 10665 aria-required="true" 10666 aria-describedby="newsletter-hyva-3719b3e6-required-hint"> 10667 <label for="newsletter-hyva-3719b3e6-terms">
10668 <span> 10669 I have read the <a href="https://www.steiff.com/en/privacy" target="_blank" rel="noopener noreferrer" class="underline hover:no-underline">data privacy<span class="sr-only">(opens in new tab)</span></a> 10670 and agree to it. </span> 10671 </label> 10672 </div> 10673 10674 <button type="submit" 10675 class="btn btn-primary mb-6 w-fit md:hidden disabled:opacity-80 disabled:cursor-not-allowed" 10676 :disabled="isLoading" 10677 :aria-busy="isLoading"> 10678 Subscribe now </button> 10679 10680 <div class="text-xxs text-black"> 10681 <p id="newsletter-hyva-3719b3e6-required-hint"> 10682 *Required fields </p> 10683 </div> 10684 10685 <div class="cmsp511-text-left text-xxs"> 10686 **One-time discount for new subscribers on your next order. Minimum order value 40€. Cannot be combined with other vouchers/promotions. </div> 10687 <div class="control"> 10688 <input type="hidden" 10689 value="" 10690 name="g-recaptcha-response" 10691 /> 10692</div> 10693 </form> 10694 <div class="w-full [&_p]:text-xs"> 10695 <p class="my-4 cmsp511-text-sm text-gray-dark [&_a]:text-cherryRed [&_a]:underline [&_a:hover]:no-underline"> 10696This form is protected by reCAPTCHA - the <a href="https://policies.google.com/privacy" target="_blank" rel="noopener">Google Privacy Policy</a> and <a href="https://policies.google.com/terms" target="_blank" rel="noopener">Terms of Service</a> apply.</p> 10697 </div> 10698 </div> 10699 </div> 10700</div> 10701
10702<script src="https://www.steiff.com/static/version1790768634/frontend/Steiff/default/en_GB/Steiff_Newsletter/js/newsletter-api.js"></script>
vendor: 1 bytes, line 10702
10702
10703<script> 10704 function newsletterTeaserForm(config) { 10705 const successMsg = 'You\u0020almost\u0020made\u0020it\u0021\u0020Confirm\u0020your\u0020registration\u0020in\u0020your\u0020e\u002Dmail\u0020box\u0020and\u0020you\u0020will\u0020receive\u0020your\u002010\u0025\u0020welcome\u0020discount.\u0020Your\u0020Steiff\u0020Team'; 10706 const errorFallback = 'Something\u0020went\u0020wrong.\u0020Please\u0020try\u0020again\u0020or\u0020contact\u0020our\u0020service\u0020line.'; 10707 return { 10708 subscribeEndpoint: config.subscribeEndpoint || '', 10709 storeId: config.storeId || '1', 10710 recaptchaEnabled: Boolean(config.recaptchaEnabled), 10711 recaptchaTokenFieldName: config.recaptchaTokenFieldName || '', 10712 errors: 0, 10713 hasCaptchaToken: 0, 10714 isLoading: false, 10715 srAnnouncement: '', 10716 srError: '', 10717 getSubscribeApiUrl() { 10718 return (this.subscribeEndpoint || '').replace(/\/+$/, ''); 10719 }, 10720 onFormInteraction() { 10721 this.srError = ''; 10722 }, 10723 resetRecaptchaState(form) { 10724 this.hasCaptchaToken = 0; 10725 this.errors = 0; 10726 if (!this.recaptchaTokenFieldName || !(form instanceof HTMLFormElement)) { 10727 return; 10728 } 10729 const tokenField = form.elements[this.recaptchaTokenFieldName]; 10730 if (tokenField instanceof HTMLInputElement) { 10731 tokenField.value = ''; 10732 } 10733 }, 10734 getRecaptchaHeaders(form) { 10735 if (!this.recaptchaEnabled || !this.recaptchaTokenFieldName || !(form instanceof HTMLFormElement)) { 10736 return {}; 10737 } 10738 const tokenField = form.elements[this.recaptchaTokenFieldName]; 10739 const token = tokenField instanceof HTMLInputElement ? tokenField.value.trim() : ''; 10740 return token !== '' ? { 'X-ReCaptcha': token } : {}; 10741 }, 10742 async submitForm() { 10743 const form = this.$refs.subscribeForm; 10744 if (!form || !(form instanceof HTMLFormElement)) return; 10745 this.srError = ''; 10746 this.srAnnouncement = ''; 10747 if (!form.checkValidity()) { form.reportValidity(); return; } 10748 10749 if (this.recaptchaEnabled) { 10750 // Do not rename $form, the variable is expected to be declared in the recaptcha output 10751 const $form = form; 10752 if (!this.hasCaptchaToken) { 10753 this.errors = 1; 10754 10755 10756 const executeGreCaptcha = () => { 10757 grecaptcha.ready(() => { 10758 grecaptcha.execute( 10759 '6LfIe4EpAAAAALE75oNaaOgTw2G3VadtzHYrJItg', 10760 {action: 'newsletter'} 10761 ).then((token) => { 10762 const tokenElement = $form['g\u002Drecaptcha\u002Dresponse']; 10763 10764 if (tokenElement && token && token.length > 0) { 10765 $form['g\u002Drecaptcha\u002Dresponse'].value = token; 10766 this.errors = 0; 10767 this.hasCaptchaToken = 1; 10768 if (typeof this.submitForm === 'function') { 10769 this.submitForm(); 10770 } else { 10771 HTMLFormElement.prototype.submit.call($form); 10772 } 10773 } else { 10774 this.errors = 1; 10775 const error = tokenElement 10776 ? 'ReCaptcha\u0020validation\u0020failed,\u0020please\u0020try\u0020again' 10777 : 'ReCaptcha\u0020token\u0020element\u0020is\u0020missing.\u0020Please\u0020refresh\u0020the\u0020page\u0020and\u0020trying\u0020again.'; 10778 if (this.setErrorMessages) { 10779 this.setErrorMessages([error]) 10780 this.displayErrorMessage = true; 10781 } else { 10782 window.dispatchMessages && window.dispatchMessages([{type: "error", text: error}], 5000); 10783 } 10784 } 10785 }).catch(exception => { 10786 console.error(exception || `An unknown error occurred during ReCaptcha validation. Are the tokens and the domain correctly set up in the Google console?`) 10787 }); 10788 }) 10789 } 10790 10791 if (window.grecaptcha) { 10792 executeGreCaptcha(); 10793 } else { 10794 const recaptchaUrl = "https://www.google.com/recaptcha/api.js?render=6LfIe4EpAAAAALE75oNaaOgTw2G3VadtzHYrJItg"; 10795 const script = document.createElement('script'); 10796 script.setAttribute('type', 'text/javascript'); 10797 script.setAttribute('src', recaptchaUrl); 10798 document.head.appendChild(script); 10799 10800 script.addEventListener("load", executeGreCaptcha, false); 10801 } 10802 } 10803 if (this.errors !== 0) { 10804 return; 10805 } 10806 } 10807 10808 this.isLoading = true; 10809 10810 const formData = new FormData(form);
10811 const result = await window.SteiffNewsletterApi.post( 10812 this.getSubscribeApiUrl(), 10813 { 10814 email: String(formData.get('email') || '').trim(), 10815 storeId: String(this.storeId), 10816 interests: formData.getAll('interests').join(',') 10817 }, 10818 errorFallback, 10819 this.getRecaptchaHeaders(form) 10820 ); 10821 10822 this.isLoading = false; 10823 this.resetRecaptchaState(form); 10824 10825 if (result.ok) { 10826 this.srAnnouncement = successMsg; 10827 if (typeof window.dispatchMessages === 'function') { 10828 window.dispatchMessages([{ type: 'success', text: successMsg }]); 10829 } 10830 form.reset(); 10831 this.$nextTick(() => { 10832 const region = this.$refs.srSuccessRegion; 10833 if (region instanceof HTMLElement) region.focus({ preventScroll: true }); 10834 }); 10835 } else { 10836 this.srError = result.message; 10837 if (typeof window.dispatchMessages === 'function') { 10838 window.dispatchMessages([{ type: 'error', text: result.message }], 10000); 10839 } 10840 } 10841 } 10842 }; 10843 } 10844 10845 window.addEventListener( 10846 'alpine:init', 10847 () => Alpine.data('newsletterTeaserForm', newsletterTeaserForm),
10848 { once: true } 10849 ); 10850</script>
10850 10851 </div> 10852 <style> 10853 :where(#steiff-column-migrated_1782888533_6a44b855dbde6) { 10854 --cols: repeat(1, minmax(0px, 1fr)); 10855 --gap: 1rem; 10856 grid-template-columns: var(--cols); 10857 gap: var(--gap); 10858 } 10859 10860 10861 </style> 10862</div> 10863 </div> 10864 </div> 10865 </div></div></main><footer class="page-footer"><div class="footer content"> 10866<div class="flex items-center bg-greenGray justify-center gap-4 py-4"> 10867 <a href="https://www.facebook.com/Steiff.global" 10868 target="_blank" 10869 rel="noopener noreferrer" 10870 aria-label="Facebook (opens in new tab)" 10871 class="bg-white rounded-full p-2 hover:bg-opacity-70"> 10872 <img src="https://www.steiff.com/static/version1790768634/frontend/Steiff/default/en_GB/icons/social/facebook.svg" 10873 alt="Facebook" 10874 class="w-6 h-6" 10875 aria-hidden="true" /> 10876 </a> 10877 <a href="https://www.youtube.com/user/MargareteSteiff" 10878 target="_blank" 10879 rel="noopener noreferrer" 10880 aria-label="Youtube (opens in new tab)" 10881 class="bg-white rounded-full p-2 hover:bg-opacity-70"> 10882 <img src="https://www.steiff.com/static/version1790768634/frontend/Steiff/default/en_GB/icons/social/youtube.svg" 10883 alt="Youtube" 10884 class="w-6 h-6" 10885 aria-hidden="true" /> 10886 </a> 10887 <a href="https://www.instagram.com/steiff_official" 10888 target="_blank" 10889 rel="noopener noreferrer" 10890 aria-label="Instagram (opens in new tab)" 10891 class="bg-white rounded-full p-2 hover:bg-opacity-70"> 10892 <img src="https://www.steiff.com/static/version1790768634/frontend/Steiff/default/en_GB/icons/social/instagram.svg" 10893 alt="Instagram" 10894 class="w-6 h-6" 10895 aria-hidden="true" /> 10896 </a> 10897 </div> 10898<button 10899 type="button" 10900 class="scroll-to-top fixed right-5 bottom-40 lg:right-11 z-40 inline-flex items-center justify-center min-w-12 min-h-12 border border-gray-light bg-white text-gray-darker shadow-lg hover:border-gray-mediumLight" 10901 x-bind:tabindex="visible ? 0 : -1" 10902 x-data="{ 10903 visible: false, 10904 scrollThreshold: 300, 10905 syncVisibility() { 10906 this.visible = window.scrollY > this.scrollThreshold; 10907 }, 10908 scrollToTop(moveFocusToTop = false) { 10909 let focusHandled = false; 10910 const focusTopOfPage = () => { 10911 if (focusHandled) { 10912 return; 10913 } 10914 focusHandled = true; 10915 const firstElement = document.querySelector('header.page-header a.action.skip'); 10916 if (firstElement && typeof firstElement.focus === 'function') { 10917 firstElement.focus({ preventScroll: true }); 10918 return; 10919 } 10920 const contentArea = document.getElementById('contentarea'); 10921 if (contentArea && typeof contentArea.focus === 'function') { 10922 contentArea.focus({ preventScroll: true }); 10923 } 10924 }; 10925 window.scrollTo({ top: 0, behavior: window.matchMedia('(prefers-reduced-motion)').matches ? 'instant' : 'smooth' }); 10926 if (moveFocusToTop) { 10927 window.addEventListener('scrollend', focusTopOfPage, { once: true }); 10928 setTimeout(focusTopOfPage, 800); 10929 return; 10930 } 10931 this.$el.blur(); 10932 } 10933 }" 10934 x-init="syncVisibility()" 10935 @scroll.window.debounce.100ms="syncVisibility()" 10936 x-show="visible" 10937 x-cloak 10938 x-transition:enter="transition ease-out duration-200" 10939 x-transition:enter-start="opacity-0" 10940 x-transition:enter-end="opacity-100" 10941 x-transition:leave="transition ease-in duration-150" 10942 x-transition:leave-start="opacity-100" 10943 x-transition:leave-end="opacity-0" 10944 @click="scrollToTop()" 10945 @keydown.enter.prevent="scrollToTop(true)" 10946 @keydown.space.prevent="scrollToTop(true)" 10947 aria-label="Back to top" 10948> 10949 <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" class="w-6 h-6 stroke-1" width="24" height="24" aria-hidden="true"> 10950 <path stroke-linecap="round" stroke-linejoin="round" d="M5 10l7-7m0 0l7 7m-7-7v18"/> 10951</svg> 10952</button> 10953 10954<!-- social media links --> 10955<div> 10956 </div> 10957 10958<!-- footer menu --> 10959<div class="body-font md:pt-7 md:pb-4 md:px-12"> 10960 <div class="container min-w-full md:min-w-0 p-0"> 10961 <div class="flex flex-wrap justify-center md:justify-start order-first md:gap-y-16"> 10962 <nav class="w-full md:w-1/4 py-4 border-t border-gray-light md:border-none" x-data="{ open: window.innerWidth < 768 ? false : true }" aria-label="Company"> 10963 <button type="button" 10964 @click="open = !open" 10965 :aria-expanded="open" 10966 :aria-controls="'footer-menu-6abf3afb25ce3'" 10967 aria-label="Company menu toggle" 10968 class="md:hidden text-base w-full grid grid-cols-7 font-bold hover:cursor-pointer">
10969 <span class="col-start-2 col-span-5 w-full text-center"> 10970 Company </span> 10971 <span class="col-start-7 mr-2 self-center justify-self-end" :class="{ 'rotate-180': open }" aria-hidden="true"> 10972 <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" width="20" height="20" aria-hidden="true"> 10973 <path stroke-linecap="round" stroke-linejoin="round" d="M19 9l-7 7-7-7"/> 10974</svg> 10975 </span> 10976 </button> 10977 <span class="hidden md:block text-base font-bold mb-4"> 10978 Company </span> 10979 <ul x-cloak 10980 id="footer-menu-6abf3afb25ce3" 10981 class="list-none px-4 pt-4 m-0 md:block md:px-0 md:pt-0 " 10982 x-show="open" 10983 :aria-hidden="!open" 10984 role="list" 10985 > 10986 <li class="py-2"> 10987 <a href="https://corporate.steiff.com/en/company/history/" 10988 target="_blank" 10989 rel="noopener noreferrer" class="text-gray-dark text-base hover:underline "> 10990 History <span class="sr-only">(opens in new tab)</span> 10991 </a> 10992 </li> 10993 <li class="py-2"> 10994 <a href="https://www.steiff.com/en/sustainabilitty" 10995 target="_self" 10996 class="text-gray-dark text-base hover:underline "> 10997 Sustainability </a> 10998 </li> 10999 <li class="py-2"> 11000 <a href="https://www.steiff.com/en/club" 11001 target="_self" 11002 class="text-gray-dark text-base hover:underline "> 11003 Steiff Club </a> 11004 </li> 11005 <li class="py-2"> 11006 <a href="https://www.steiff.com/en/corporate-business" 11007 target="_self" 11008 class="text-gray-dark text-base hover:underline "> 11009 Corporate Business </a> 11010 </li> 11011 </ul> 11012 </nav> 11013 <nav class="w-full md:w-1/4 py-4 border-t border-gray-light md:border-none" x-data="{ open: window.innerWidth < 768 ? false : true }" aria-label="Museum & Shops"> 11014 <button type="button" 11015 @click="open = !open" 11016 :aria-expanded="open" 11017 :aria-controls="'footer-menu-6abf3afb27725'" 11018 aria-label="Museum & Shops menu toggle" 11019 class="md:hidden text-base w-full grid grid-cols-7 font-bold hover:cursor-pointer">
11020 <span class="col-start-2 col-span-5 w-full text-center"> 11021 Museum & Shops </span> 11022 <span class="col-start-7 mr-2 self-center justify-self-end" :class="{ 'rotate-180': open }" aria-hidden="true"> 11023 <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" width="20" height="20" aria-hidden="true"> 11024 <path stroke-linecap="round" stroke-linejoin="round" d="M19 9l-7 7-7-7"/> 11025</svg> 11026 </span> 11027 </button> 11028 <span class="hidden md:block text-base font-bold mb-4"> 11029 Museum & Shops </span> 11030 <ul x-cloak 11031 id="footer-menu-6abf3afb27725" 11032 class="list-none px-4 pt-4 m-0 md:block md:px-0 md:pt-0 " 11033 x-show="open" 11034 :aria-hidden="!open" 11035 role="list" 11036 > 11037 <li class="py-2"> 11038 <a href="https://corporate.steiff.com/en/museum/opening-hours/" 11039 target="_blank" 11040 rel="noopener noreferrer" class="text-gray-dark text-base hover:underline "> 11041 Museum opening hours & tickets <span class="sr-only">(opens in new tab)</span> 11042 </a> 11043 </li> 11044 <li class="py-2"> 11045 <a href="https://corporate.steiff.com/en/museum/directions-contact/" 11046 target="_blank" 11047 rel="noopener noreferrer" class="text-gray-dark text-base hover:underline "> 11048 Museum direction & contact <span class="sr-only">(opens in new tab)</span> 11049 </a> 11050 </li> 11051 <li class="py-2"> 11052 <a href="https://corporate.steiff.com/en/museum/shop/" 11053 target="_blank" 11054 rel="noopener noreferrer" class="text-gray-dark text-base hover:underline "> 11055 Museum shop & factory outlet <sp
11055an class="sr-only">(opens in new tab)</span> 11056 </a> 11057 </li> 11058 <li class="py-2"> 11059 <a href="https://www.steiff.com/en/steiff-shops" 11060 target="_self" 11061 class="text-gray-dark text-base hover:underline "> 11062 Steiff shops </a> 11063 </li> 11064 <li class="py-2"> 11065 <a href="https://www.steiff.com/en/storefinder" 11066 target="_self" 11067 class="text-gray-dark text-base hover:underline "> 11068 Storefinder </a> 11069 </li> 11070 </ul> 11071 </nav> 11072 <nav class="w-full md:w-1/4 py-4 border-t border-gray-light md:border-none" x-data="{ open: window.innerWidth < 768 ? false : true }" aria-label="Top categories"> 11073 <button type="button" 11074 @click="open = !open" 11075 :aria-expanded="open" 11076 :aria-controls="'footer-menu-6abf3afb284b4'" 11077 aria-label="Top categories menu toggle" 11078 class="md:hidden text-base w-full grid grid-cols-7 font-bold hover:cursor-pointer"> 11079 <span class="col-start-2 col-span-5 w-full text-center"> 11080 Top categories </span> 11081 <span class="col-start-7 mr-2 self-center justify-self-end" :class="{ 'rotate-180': open }" aria-hidden="true"> 11082 <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" width="20" height="20" aria-hidden="true"> 11083 <path stroke-linecap="round" stroke-linejoin="round" d="M19 9l-7 7-7-7"/> 11084</svg> 11085 </span> 11086 </button> 11087 <span class="hidden md:block text-base font-bold mb-4"> 11088 Top categories </span> 11089 <ul x-cloak 11090 id="footer-menu-6abf3afb284b4" 11091 class="list-none px-4 pt-4 m-0 md:block md:px-0 md:pt-0 " 11092 x-show="open" 11093 :aria-hidden="!open" 11094 role="list" 11095 > 11096 <li class="py-2"> 11097 <a href="https://www.steiff.com/en/baby-kids-fashion" 11098 target="_self" 11099 class="text-gray-dark text-base hover:underline "> 11100 Baby- & Kids fashion </a> 11101 </li> 11102 <li class="py-2"> 11103 <a href="https://www.steiff.com/en/baby-kids-fashion/sale" 11104 target="_self" 11105 class="text-gray-dark text-base hover:underline "> 11106 Baby- & Kids fashion Sale </a> 11107 </li> 11108 <li class="py-2"> 11109 <a href="https://www.steiff.com/en/stuffed-animals-toys/teddy-bears" 11110 target="_self" 11111 class="text-gray-dark text-base hover:underline "> 11112 Teddy bears </a> 11113 </li> 11114 <li class="py-2"> 11115 <a href="https://www.steiff.com/en/stuffed-animals-toys/stuffed-animals" 11116 target="_self" 11117 class="text-gray-dark text-base hover:underline "> 11118 Stuffed animals </a> 11119 </li> 11120 <li class="py-2"> 11121 <a href="https://www.steiff.com/en/exclusive-world-of-collectors" 11122 target="_self" 11123 class="text-gray-dark text-base hover:underline "> 11124 Collectors world </a> 11125 </li> 11126 </ul> 11127 </nav> 11128 <nav class="w-full md:w-1/4 py-4 border-t border-gray-light md:border-none" x-data="{ open: window.innerWidth < 768 ? false : true }" aria-label="Contact & Legal"> 11129 <button type="button" 11130 @click="open = !open" 11131 :aria-expanded="open" 11132 :aria-controls="'footer-menu-6abf3afb28755'" 11133 aria-label="Contact & Legal menu toggle" 11134 class="md:hidden text-base w-full grid grid-cols-7 font-bold hover:cursor-pointer">
11135 <span class="col-start-2 col-span-5 w-full text-center"> 11136 Contact & Legal </span> 11137 <span class="col-start-7 mr-2 self-center justify-self-end" :class="{ 'rotate-180': open }" aria-hidden="true"> 11138 <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" width="20" height="20" aria-hidden="true"> 11139 <path stroke-linecap="round" stroke-linejoin="round" d="M19 9l-7 7-7-7"/> 11140</svg> 11141 </span> 11142 </button> 11143 <span class="hidden md:block text-base font-bold mb-4"> 11144 Contact & Legal </span> 11145 <ul x-cloak 11146 id="footer-menu-6abf3afb28755" 11147 class="list-none px-4 pt-4 m-0 md:block md:px-0 md:pt-0 " 11148 x-show="open" 11149 :aria-hidden="!open" 11150 role="list" 11151 > 11152 <li class="py-2"> 11153 <a href="https://www.steiff.com/en/i/help" 11154 target="_self" 11155 class="text-gray-dark text-base hover:underline "> 11156 Help, FAQ & Contact </a> 11157 </li> 11158 <li class="py-2"> 11159 <a href="https://www.steiff.com/en/gtc" 11160 target="_self" 11161 class="text-gray-dark text-base hover:underline "> 11162 GTC </a> 11163 </li> 11164 <li class="py-2"> 11165 <a href="https://www.steiff.com/en/imprint" 11166 target="_self" 11167 class="text-gray-dark text-base hover:underline "> 11168 Imprint </a> 11169 </li> 11170 <li class="py-2"> 11171 <a href="https://www.steiff.com/en/privacy" 11172 target="_self" 11173 class="text-gray-dark text-base hover:underline "> 11174 Privacy </a> 11175 </li> 11176 <li class="py-2"> 11177 <a href="https://www.steiff.com/en/accessibility" 11178 target="_self" 11179 class="text-gray-dark text-base hover:underline "> 11180 Accessibility Statement </a> 11181 </li> 11182 <li class="py-2"> 11183 <a href="https://www.steiff.com/en/newsletter" 11184 target="_self" 11185 class="text-gray-dark text-base hover:underline "> 11186 Newsletter </a> 11187 </li> 11188 <li class="py-2"> 11189 <a href="https://www.steiff.com/en/legal-guarantee-rights" 11190 target="_blank" 11191 rel="noopener noreferrer" class="text-gray-dark text-base hover:underline "> 11192 Legal Guarantee <sp
11192an class="sr-only">(opens in new tab)</span> 11193 </a> 11194 </li> 11195 <li class="py-2"> 11196 <a href="https://www.steiff.com/en/withdraw-from-contract" 11197 target="_self" 11198 class="text-gray-dark text-base hover:underline font-bold"> 11199 Withdraw from contract </a> 11200 </li> 11201 </ul> 11202 </nav> 11203 <nav class="w-full md:w-3/4 py-4 border-t border-gray-light md:border-none" x-data="{ open: window.innerWidth < 768 ? false : true }" aria-label="Pay with:"> 11204 <button type="button" 11205 @click="open = !open" 11206 :aria-expanded="open" 11207 :aria-controls="'footer-menu-6abf3afb2bc67'" 11208 aria-label="Pay with: menu toggle" 11209 class="md:hidden text-base w-full grid grid-cols-7 font-bold hover:cursor-pointer"> 11210 <span class="col-start-2 col-span-5 w-full text-center"> 11211 Pay with: </span> 11212 <span class="col-start-7 mr-2 self-center justify-self-end" :class="{ 'rotate-180': open }" aria-hidden="true"> 11213 <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" width="20" height="20" aria-hidden="true"> 11214 <path stroke-linecap="round" stroke-linejoin="round" d="M19 9l-7 7-7-7"/> 11215</svg> 11216 </span> 11217 </button> 11218 <span class="hidden md:block text-base font-bold mb-4"> 11219 Pay with: </span> 11220 <ul x-cloak 11221 id="footer-menu-6abf3afb2bc67" 11222 class="list-none px-4 pt-4 m-0 md:block md:px-0 md:pt-0 md:grid md:grid-cols-3" 11223 x-show="open" 11224 :aria-hidden="!open" 11225 role="list" 11226 > 11227 <li class="py-2"> 11228 <img src="https://www.steiff.com/static/version1790768634/frontend/Steiff/default/en_GB/Steiff_SvgIcons/svg/payment/paypal.svg" 11229 alt="Paypal" 11230 class="h-6 mb-2 w-auto max-h-6 grayscale opacity-100 text-base" /> 11231 </li> 11232 <li class="py-2"> 11233 <img src="https://www.steiff.com/static/version1790768634/frontend/Steiff/default/en_GB/Steiff_SvgIcons/svg/payment/mastercard_large.svg" 11234 alt="Master Card" 11235 class="h-6 mb-2 w-auto max-h-6 grayscale opacity-100 text-base" /> 11236 </li> 11237 <li class="py-2"> 11238 <sp
11238an class="text-gray-dark text-base "> 11239 Google Pay </span> 11240 </li> 11241 <li class="py-2"> 11242 <img src="https://www.steiff.com/static/version1790768634/frontend/Steiff/default/en_GB/Steiff_SvgIcons/svg/payment/visa.svg" 11243 alt="Visa" 11244 class="h-6 mb-2 w-auto max-h-6 grayscale opacity-100 text-base" /> 11245 </li> 11246 <li class="py-2"> 11247 <span class="text-gray-dark text-base "> 11248 Invoice (only Netherlands) </span> 11249 </li> 11250 <li class="py-2"> 11251 <span class="text-gray-dark text-base "> 11252 Apple Pay </span> 11253 </li> 11254 </ul> 11255 </nav> 11256 <nav class="w-full md:w-1/4 py-4 border-t border-gray-light md:border-none" x-data="{ open: window.innerWidth < 768 ? false : true }" aria-label="Shipping partner"> 11257 <button type="button" 11258 @click="open = !open" 11259 :aria-expanded="open" 11260 :aria-controls="'footer-menu-6abf3afb2bf3a'" 11261 aria-label="Shipping partner menu toggle" 11262 class="md:hidden text-base w-full grid grid-cols-7 font-bold hover:cursor-pointer"> 11263 <span class="col-start-2 col-span-5 w-full text-center"> 11264 Shipping partner </span> 11265 <span class="col-start-7 mr-2 self-center justify-self-end" :class="{ 'rotate-180': open }" aria-hidden="true"> 11266 <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" width="20" height="20" aria-hidden="true"> 11267 <path stroke-linecap="round" stroke-linejoin="round" d="M19 9l-7 7-7-7"/> 11268</svg> 11269 </span> 11270 </button> 11271 <span class="hidden md:block text-base font-bold mb-4"> 11272 Shipping partner </span> 11273 <ul x-cloak 11274 id="footer-menu-6abf3afb2bf3a" 11275 class="list-none px-4 pt-4 m-0 md:block md:px-0 md:pt-0 " 11276 x-show="open" 11277 :aria-hidden="!open" 11278 role="list" 11279 > 11280 <li class="py-2"> 11281 <img src="https://www.steiff.com/static/version1790768634/frontend/Steiff/default/en_GB/logos/DHL.svg" 11282 alt="DHL" 11283 class="h-6 mb-2 w-auto max-h-6 grayscale opacity-100 text-base" /> 11284 </li> 11285 </ul> 11286 </nav> 11287 </div> 11288 </div> 11289</div> 11290 11291<!-- shop logo --> 11292<div class="w-full flex justify-center border-t border-gray-light py-3"> 11293 <a href="https://www.steiff.com/en" 11294 aria-label="Go to the main page" 11295 class="flex items-center"> 11296 <img src="https://www.steiff.com/static/version1790768634/frontend/Steiff/default/en_GB/logos/logo-bear.svg" 11297 alt="Steiff logo" 11298 width="143" 11299 height="58" /> 11300 </a> 11301</div> 11302<!-- copyright --> 11303<div class="bg-black text-white text-center py-6 text-xs"> 11304 <div class="container mx-auto px-4">
11305 <span class="mb-0">© 2026 Margarete Steiff GmbH</span> 11306 <div class="inline" x-data="hyva.modal()"> 11307 <span class="mt-0 text-xs leading-relaxed"> 11308 <span>|</span> 11309 All prices incl. VAT plus <button 11310 type="button" 11311 id="footer-shipping-costs-trigger" 11312 class="underline underline-offset-2 p-0 m-0 align-baseline font-inherit text-inherit bg-transparent border-0 cursor-pointer hover:opacity-90" 11313 aria-haspopup="dialog" 11314 @click="$dispatch('hyva-modal-show', {dialog: 'footer-shipping-priceinfo-modal', focusAfterHide: '#footer-shipping-costs-trigger'})" 11315 >Shipping costs</button> 11316 . Crossed-out prices correspond to the previous price at Steiff. </span> 11317 <div x-cloak data-dialog-ref-name="footer-shipping-priceinfo-modal" 11318 x-bind="overlay" 11319 class="fixed inset-0 bg-black/50 z-50"> 11320 <div class="fixed flex justify-center items-center text-left z-40 inset-0"> 11321 <div x-ref="footer-shipping-priceinfo-modal" role="dialog" aria-modal="true" 11322 aria-labelledby="footer-shipping-priceinfo-modal-title" 11323 class="inline-block bg-white shadow-xl rounded-lg p-10 max-h-screen overflow-auto overscroll-y-contain p-6 w-full max-h-screen overflow-y-auto rounded-none z-50 max-w-5xl md:min-w-[973px]"> 11324 11325<div class="shipping-payment-info-modal relative"> 11326 <!-- Close Button --> 11327 <button 11328 type="button" 11329 @click="cancel()" 11330 class="absolute top-0 right-0 p-2 text-black" 11331 aria-label="Close" 11332 > 11333 <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" class="w-6 h-6" width="24" height="24" aria-hidden="true"> 11334 <path stroke-linecap="round" stroke-linejoin="round" d="M6 18L18 6M6 6l12 12"/> 11335</svg> 11336 </button> 11337 11338 <!-- Header --> 11339 <div class="flex items-center gap-2 mb-6 pr-10"> 11340 <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" class="w-6 h-6 text-cherryRed" width="24" height="24" aria-hidden="true"> 11341 <path d="M9 17a2 2 0 11-4 0 2 2 0 014 0zM19 17a2 2 0 11-4 0 2 2 0 014 0z"/> 11342 <path stroke-linecap="round" stroke-linejoin="round" d="M13 16V6a1 1 0 00-1-1H4a1 1 0 00-1 1v10a1 1 0 001 1h1m8-1a1 1 0 01-1 1H9m4-1V8a1 1 0 011-1h2.586a1 1 0 01.707.293l3.414 3.414a1 1 0 01.293.707V16a1 1 0 01-1 1h-1m-6-1a1 1 0 001 1h1M5 17a2 2 0 104 0m-4 0a2 2 0 114 0m6 0a2 2 0 104 0m-4 0a2 2 0 114 0"/> 11343</svg> 11344 <h4 id="footer-shipping-priceinfo-modal-title" class="font-bold text-left text-black"> 11345 Shipping & payment information </h4> 11346 </div> 11347 11348 <!-- CMS content --> 11349 <div class="shipping-payment-info-modal__cms text-black text-left text-base"> 11350 <!-- HyväCMS cms_block --> 11351 <div data-liveview-element="steiff_row" 11352 class=" not-prose container" 11353 style="padding-top: 1rem; padding-bottom: 1rem;" > 11354 <div data-liveview-element="steiff_row" 11355 class=" not-prose" 11356 style="padding-top: 1rem; padding-bottom: 1rem;" > 11357 <div 11358 id="steiff-column-migrated_1782888403_6a44b7d3461ad" 11359 class="grid" 11360 data-liveview-element="steiff_column" 11361 style="background-color: ; color: ;"> 11362 <div 11363 id="steiff-column-item-steiff_content_migration_6a44b7d346b91" 11364 class="min-w-0 justify-self-start flex items-start order-none sm:order-none lg:order-none h-full" 11365 data-liveview-element="steiff_column_item" 11366 > 11367 <div 11368 data-liveview-element="steiff_text" 11369 class="steiff-text-content text-left text-base font-normal" 11370 > 11371 <p>The prices are always without shipping costs but VAT included.</p> 11372<p>The<strong> fee</strong> for shipping is within:</p> 11373<p><strong>Portugal and Greece 19,95€</strong></p> 11374<p><strong>Other European countries 7,95 €<br>Germany 4,95 €</strong><br><strong>Austria 6,95 €</strong><br><strong>UK 9,95 GBP</strong></p> 11375<p>From an order value of <strong>more than 100, - €</strong> the shipping to<strong> Germany and Austria is free of charge</strong>.</p> 11376<p>For shipping to <strong>UK</strong> additional <strong>customs fees</strong> may apply.</p></div> 11377 </div> 11378 <style>
11379 :where(#steiff-column-migrated_1782888403_6a44b7d3461ad) { 11380 --cols: repeat(1, minmax(0px, 1fr)); 11381 --gap: 1rem; 11382 grid-template-columns: var(--cols); 11383 gap: var(--gap); 11384 } 11385 11386 11387 </style> 11388</div> 11389 </div> 11390 </div> 11391 </div> 11392</div> 11393 </div> 11394 </div> 11395 </div> 11396 </div> 11397 </div> 11398</div> 11399</div></footer>
11399<script> 11400 window.cspNonce = "N3VsYnlzdWEweHE4NGp1ZHFtODVyYzk0MnZjcHlyZ3A="; 11401</script>
vendor: 1 bytes, line 11401
11401
11402<script> 11403/** 11404 * Usercentrics Privacy Layer Link Handler 11405 * 11406 * Opens the Usercentrics second layer (cookie settings) when clicking 11407 * on links with href="#data-privacy-layer" 11408 */ 11409(function() { 11410 'use strict'; 11411 11412 document.addEventListener('click', function(event) { 11413 let target = event.target; 11414 11415 // Check if clicked element or its parent is a link with #data-privacy-layer 11416 while (target && target !== document) { 11417 if (target.matches && target.matches('a[href="#data-privacy-layer"]')) { 11418 event.preventDefault(); 11419 11420 if (window.__ucCmp && typeof window.__ucCmp.showSecondLayer === 'function') { 11421 window.__ucCmp.showSecondLayer(); 11422 } else { 11423 console.warn('Usercentrics UI not loaded yet'); 11424 } 11425 return; 11426 } 11427 target = target.parentNode; 11428 } 11429 }); 11430})(); 11431</script>
11431 11432
11433<script> 11434 let SnapSlider = class { 11435 constructor(el, { 11436 labelSepparator = 'of', 11437 autoPager, 11438 groupPager 11439 } = {}) { 11440 this.el = el; 11441 this.track = this.el.querySelector("[data-track]"); 11442 if (!this.track) { 11443 console.warn( 11444 "No Slider track defined, reverting back to CSS slider.\nPlease create a wrapper for your slides with the attribute data-track", 11445 this.el 11446 ); 11447 return; 11448 } 11449 this.initialLoad = true; 11450 this.slides = []; 11451 this.inViewObserver; 11452 this.mutationObserver; 11453 this.resizeObserver; 11454 this.pager = this.el.querySelector("[data-pager]"); 11455 this.navBtns = Array.from( 11456 this.el.querySelectorAll("[data-next], [data-prev]") 11457 ); 11458 this.slideLabelSepparator = this.el.dataset.slideLabelSepparator || labelSepparator; 11459 this.useAutoPager = autoPager || this.el.hasAttribute("data-auto-pager") || false; 11460 this.useGroupPager = groupPager || this.el.hasAttribute("data-group-pager") || false; 11461 this.sliderLabel = this.el.hasAttribute("aria-label") && this.el.getAttribute("aria-label").toLowerCase().trim().replace(/[^a-z0-9_-]+/g, "-").replace(/^-+|-+$/g, ""); 11462 this.sliderId = this.el.id || this.sliderLabel || "slider"; 11463 this.markerIdName = "data-target-id"; 11464 this.pagerClasses = this.el.dataset.pagerClass || "snap-pager"; 11465 this.markerClasses = this.el.dataset.markerClass || "snap-marker"; 11466 this.init(); 11467 } 11468 init() { 11469 this.setupSlides(); 11470 this.setupNav(); 11471 if (this.useAutoPager) { 11472 this.createPager(); 11473 } else { 11474 this.setupPager(); 11475 } 11476 this.setupObservers(); 11477 this.setupMutationObserver(); 11478 this.setupResizeObserver(); 11479 this.el.addEventListener("click", this.eventHandler.bind(this)); 11480 this.el.addEventListener("keydown", this.eventHandler.bind(this)); 11481 } 11482 destroy() { 11483 this.inViewObserver?.disconnect(); 11484 this.mutationObserver?.disconnect(); 11485 this.resizeObserver?.disconnect(); 11486 this.el.removeEventListener("click", this.eventHandler.bind(this)); 11487 this.el.removeEventListener("keydown", this.eventHandler.bind(this)); 11488 } 11489 roundUpIfGreaterThan(number, min = 8) { 11490 const decimalPart = number - Math.floor(number); 11491 return decimalPart >= min ? Math.ceil(number) : Math.floor(number); 11492 } 11493 getInViewItems() { 11494 const inViewSlides = this.track.querySelectorAll("[data-in-view]"); 11495 const firstInViewSlide = inViewSlides[0] || null; 11496 const lastInViewSlide = inViewSlides[inViewSlides.length - 1] || null; 11497 const isAtStart = firstInViewSlide === this.slides[0]; 11498 const isAtEnd = lastInViewSlide === this.slides[this.slides.length - 1]; 11499 return { 11500 inViewSlides, 11501 totalInViewSlides: inViewSlides.length, 11502 firstInViewSlide, 11503 lastInViewSlide, 11504 isAtStart, 11505 isAtEnd, 11506 hasNoOverflow: isAtStart && isAtEnd 11507 }; 11508 } 11509 groupPagerMarkers() { 11510 if (this.slides.length === 0 || !this.pager || !this.useGroupPager) return; 11511 const totalVisibleSlides = this.roundUpIfGreaterThan( 11512 this.track.offsetWidth / this.slides[0].offsetWidth 11513 ); 11514 const markers = Array.from(this.pager.querySelectorAll("a, button")); 11515 markers.forEach((marker, index) => { 11516 marker.style.display = index % totalVisibleSlides === 0 ? null : "none"; 11517 }); 11518 } 11519 handleInView(entries) { 11520 entries.forEach((entry) => { 11521 const marker = this.pager && (this.pager.querySelector(`[href="#${entry.target.id}"]`) || this.pager.querySelector( 11522 `[${this.markerIdName}="${entry.target.id}"]` 11523 )); 11524 entry.target.toggleAttribute("data-in-view", entry.isIntersecting); 11525 entry.target.toggleAttribute("inert", !entry.isIntersecting); 11526 marker?.setAttribute("aria-current", entry.isIntersecting); 11527 marker?.setAttribute("tabindex", entry.isIntersecting ? "0" : "-1"); 11528 }); 11529 const { 11530 isAtStart, 11531 isAtEnd, 11532 hasNoOverflow 11533 } = this.getInViewItems(); 11534 this.navBtns.forEach((btn) => { 11535 if (btn.hasAttribute("data-next")) { 11536 btn.style.visibility = hasNoOverflow ? "hidden" : null; 11537 isAtEnd ? btn.setAttribute("disabled", "") : btn.removeAttribute("disabled"); 11538 } 11539 if (btn.hasAttribute("data-prev")) { 11540 btn.style.visibility = hasNoOverflow ? "hidden" : null; 11541 isAtStart ? btn.setAttribute("disabled", "") : btn.removeAttribute("disabled"); 11542 } 11543 }); 11544 if (this.pager) { 11545 this.pager.style.visibility = hasNoOverflow ? "hidden" : null; 11546 } 11547 if (!this.initialLoad) { 11548 this.el.dispatchEvent( 11549 new CustomEvent("slideChange", { 11550 detail: this.getInViewItems() 11551 }) 11552 ); 11553 } else { 11554 this.initialLoad = false;
11555 } 11556 if (document.activeElement.parentElement.hasAttribute("data-pager")) { 11557 const activeItems = this.pager.querySelectorAll('[tabindex="0"]'); 11558 if (activeItems.length) { 11559 activeItems[0].focus({ preventScroll: true }); 11560 } 11561 } 11562 } 11563 getSlides() { 11564 if (!this.track) return []; 11565 return Array.from(this.track.children).filter( 11566 (child) => child.tagName.toLowerCase() !== "template" && child.tagName.toLowerCase() !== "style" && child.tagName.toLowerCase() !== "script" 11567 ); 11568 } 11569 refreshSlides() { 11570 this.initialLoad = true; 11571 this.slides = this.getSlides(); 11572 this.setupSlides(); 11573 if (this.useAutoPager) { 11574 this.createPager(); 11575 } else { 11576 this.setupPager(); 11577 } 11578 this.groupPagerMarkers(); 11579 this.setupObservers(); 11580 } 11581 setupSlides() { 11582 this.slides = this.getSlides(); 11583 this.slides.forEach((slide, index) => { 11584 const totalSlides = this.slides.length; 11585 const currentSlide = index + 1; 11586 const existingLabel = slide.getAttribute("aria-label") || ""; 11587 const isImage = slide.tagName.toLowerCase() === "img" || slide.tagName.toLowerCase() === "picture"; 11588 const slideLabelTag = isImage ? "alt" : "aria-label"; 11589 const hasAutoLabel = existingLabel.startsWith( 11590 `${currentSlide} ${this.slideLabelSepparator} ` 11591 ); 11592 if (!slide.hasAttribute("id")) { 11593 slide.setAttribute( 11594 "id", 11595 `${this.sliderId}-item-${currentSlide}` 11596 ); 11597 } 11598 if (!slide.hasAttribute(slideLabelTag) || slide.getAttribute(slideLabelTag) === "" || hasAutoLabel) { 11599 slide.setAttribute( 11600 slideLabelTag, 11601 `${currentSlide} ${this.slideLabelSepparator} ${totalSlides}` 11602 ); 11603 } 11604 if (slide.tagName.toLowerCase() === "div" && !slide.hasAttribute("role")) { 11605 slide.setAttribute("role", "group"); 11606 } 11607 if (this.pager && !isImage) { 11608 slide.setAttribute("role", "tabpanel"); 11609 } 11610 if (slide.getAttribute("role") === "group") { 11611 slide.setAttribute("aria-roledescription", "item"); 11612 } 11613 }); 11614 if (!this.el.hasAttribute("role") && this.el.tagName !== "SECTION") { 11615 this.el.setAttribute("role", "region"); 11616 } 11617 if (!this.el.hasAttribute("aria-roledescription")) { 11618 this.el.setAttribute("aria-roledescription", "carousel"); 11619 } 11620 this.track.setAttribute("tabindex", 0); 11621 this.track.setAttribute("aria-live", "polite"); 11622 } 11623 setupNav() { 11624 this.navBtns.forEach((btn) => { 11625 btn.setAttribute("disabled", ""); 11626 btn.removeAttribute("hidden"); 11627 btn.classList.remove("invisible"); 11628 btn.style.visibility = null; 11629 }); 11630 } 11631 createPager() { 11632 const newPager = document.createElement("nav"); 11633 newPager.setAttribute("data-pager", ""); 11634 newPager.setAttribute("role", "tablist"); 11635 newPager.classList.add(...this.pagerClasses.split(" ")); 11636 this.slides.forEach((slide, index) => { 11637 const marker = document.createElement("button"); 11638 const slideId = slide.id || `${this.sliderId}-item-${index + 1}`; 11639 marker.setAttribute(this.markerIdName, slideId); 11640 marker.classList.add(...this.markerClasses.split(" ")); 11641 this.setupPagerMarker(marker, index); 11642 newPager.appendChild(marker); 11643 if (slide.tagName.toLowerCase() !== "img" && slide.tagName.toLowerCase() !== "picture") { 11644 slide.removeAttribute("aria-roledescription"); 11645 slide.setAttribute("role", "tabpanel"); 11646 } 11647 }); 11648 if (this.pager) { 11649 this.pager.setAttribute("role", "tablist"); 11650 this.pager.replaceChildren(...newPager.children); 11651 } else { 11652 this.track.after(newPager); 11653 this.pager = this.el.querySelector("[data-pager]"); 11654 } 11655 } 11656 setupPager() { 11657 if (!this.pager) return; 11658 this.pager.setAttribute("role", "tablist"); 11659 const items = Array.from(this.pager.querySelectorAll("a, button"));
11660 items.forEach((marker, index) => this.setupPagerMarker(marker, index)); 11661 } 11662 setupPagerMarker(marker, index) { 11663 const markerId = marker.getAttribute("href")?.slice(1) || marker.getAttribute(this.markerIdName); 11664 const slideId = markerId || `${this.sliderId}-item-${index + 1}`; 11665 if (!markerId) { 11666 marker.setAttribute(this.markerIdName, slideId); 11667 } 11668 marker.setAttribute("role", "tab"); 11669 marker.setAttribute("aria-controls", slideId); 11670 marker.setAttribute("aria-posinset", index + 1); 11671 marker.setAttribute("aria-setsize", this.slides.length); 11672 marker.setAttribute("tabindex", "-1"); 11673 if (!marker.hasAttribute("aria-label")) { 11674 marker.setAttribute("aria-label", `Slide ${index + 1}`); 11675 } 11676 } 11677 setupObservers() { 11678 if (this.inViewObserver) { 11679 this.inViewObserver.disconnect(); 11680 } 11681 this.inViewObserver = new IntersectionObserver( 11682 this.handleInView.bind(this), { 11683 root: this.track, 11684 threshold: 0.8 11685 } 11686 ); 11687 this.slides.forEach((slide) => this.inViewObserver.observe(slide)); 11688 } 11689 setupMutationObserver() { 11690 this.mutationObserver = new MutationObserver( 11691 this.refreshSlides.bind(this) 11692 ); 11693 this.mutationObserver.observe(this.track, { 11694 childList: true, 11695 subtree: false 11696 }); 11697 } 11698 setupResizeObserver() { 11699 this.resizeObserver = new ResizeObserver( 11700 this.groupPagerMarkers.bind(this) 11701 ); 11702 this.resizeObserver.observe(this.el); 11703 } 11704 goToSlideDir(dir = "next") { 11705 const { 11706 firstInViewSlide, 11707 lastInViewSlide 11708 } = this.getInViewItems(); 11709 const isPrev = dir === "prev"; 11710 let targetSlide = isPrev ? firstInViewSlide?.previousElementSibling : lastInViewSlide?.nextElementSibling; 11711 if (!targetSlide) return; 11712 if (targetSlide.tagName.toLowerCase() === "template") { 11713 targetSlide = isPrev ? targetSlide?.previousElementSibling : targetSlide?.nextElementSibling; 11714 } 11715 targetSlide.scrollIntoView({ block: "nearest", inline: isPrev ? "end" : "start" }); 11716 } 11717 pagerToSlide(event) { 11718 if (!event.target.closest("[data-pager]")) return; 11719 const marker = event.target.closest("a, button"); 11720 if (!marker) return; 11721 event.preventDefault(); 11722 const slideId = marker.getAttribute("href")?.slice(1) || marker.getAttribute(this.markerIdName); 11723 const targetSlide = this.track.querySelector(`#${slideId}`); 11724 targetSlide?.scrollIntoView({ block: "nearest", inline: "start" }); 11725 } 11726 eventHandler(event) { 11727 const target = event.target.closest( 11728 "[data-next], [data-prev], [data-pager]" 11729 ); 11730 if (!target) return; 11731 if (event.type === "click") { 11732 if (target.hasAttribute("data-next")) { 11733 this.goToSlideDir("next"); 11734 } else if (target.hasAttribute("data-prev")) { 11735 this.goToSlideDir("prev"); 11736 } else if (target.closest("[data-pager]")) { 11737 this.pagerToSlide(event); 11738 } 11739 } 11740 if (event.type === "keydown" && target.closest("[data-pager]")) { 11741 if (event.key === "ArrowRight") { 11742 this.goToSlideDir("next"); 11743 } else if (event.key === "ArrowLeft") { 11744 this.goToSlideDir("prev"); 11745 } 11746 } 11747 } 11748 }; 11749 11750 (() => { 11751 function alpineSnapSlider(Alpine) { 11752 Alpine.directive("snap-slider", (el, { 11753 modifiers 11754 }, { 11755 cleanup 11756 }) => { 11757 const autoPager = modifiers.includes("auto-pager");
11758 const groupPager = modifiers.includes("group-pager"); 11759 const slider = new SnapSlider(el, { 11760 autoPager, 11761 groupPager 11762 }); 11763 cleanup(() => { 11764 slider.destroy(); 11765 }); 11766 }); 11767 } 11768 11769 document.addEventListener("alpine:init", () => { 11770 window.Alpine.plugin(alpineSnapSlider); 11771 }); 11772 })(); 11773 //# sourceURL=alpine-snap-slider.js 11774</script>
vendor: 1 bytes, line 11774
11774
11775<script> 11776 (() => { 11777 // src/dialog.js 11778 function dialog_default(Alpine) { 11779 Alpine.directive("htmldialog", fylgjaAlpineDialog); 11780 function fylgjaAlpineDialog(el, { expression, modifiers }, { evaluateLater, cleanup }) { 11781 const evaluate = expression.length ? evaluateLater(expression) : () => {}; 11782 const canEvaluate = expression.length > 0; 11783 const lockPageScroll = modifiers.includes("noscroll"); 11784 const closeBy = el.getAttribute("closeby") || modifierValue(modifiers, "closeby", "closerequest"); 11785 el.style.display = null; 11786 el.style.length === 0 && el.removeAttribute("style"); 11787 if (el._x_isShown) { 11788 open(); 11789 } 11790 const closeBySupported = (() => { 11791 return "closedBy" in HTMLDialogElement.prototype; 11792 })(); 11793 function scrollLock(use = true) { 11794 document.body.style.overflow = use ? "hidden" : ""; 11795 } 11796 function dialogSubmit(event) { 11797 if (event.target.getAttribute("method") === "dialog" || event.submitter?.getAttribute("formmethod") === "dialog") { 11798 event.preventDefault(); 11799 evaluate(); 11800 } 11801 } 11802 function escapeDialog(event) { 11803 if (event.key !== "Escape") return; 11804 event.preventDefault(); 11805 if (closeBy === "none") return; 11806 evaluate(); 11807 } 11808 function handleCloseByEvent(event) { 11809 if (event.target !== el) return; 11810 const rect = el.getBoundingClientRect(); 11811 const isInDialog = rect.top <= event.clientY && event.clientY <= rect.top + rect.height && rect.left <= event.clientX && event.clientX <= rect.left + rect.width; 11812 if (!isInDialog) { 11813 if (closeBy === "any") { 11814 if (closeBySupported) { 11815 event.preventDefault(); 11816 } 11817 evaluate(); 11818 } 11819 } 11820 } 11821 function handleCloseEvent() { 11822 evaluate(); 11823 } 11824 function open() { 11825 if (el.hasAttribute("open")) return; 11826 el.showModal(); 11827 scrollLock(lockPageScroll); 11828 } 11829 function close() { 11830 if (!el.hasAttribute("open")) return; 11831 el.close(); 11832 scrollLock(false); 11833 } 11834 el._x_doShow = () => open(); 11835 el._x_doHide = () => close(); 11836 el.addEventListener("keydown", escapeDialog); 11837 el.addEventListener("submit", dialogSubmit); 11838 el.addEventListener("click", handleCloseByEvent); 11839 el.addEventListener("cancel", handleCloseEvent); 11840 cleanup(() => { 11841 el.removeEventListener("keydown", escapeDialog); 11842 el.removeEventListener("submit", dialogSubmit); 11843 el.removeEventListener("click", handleCloseByEvent); 11844 el.removeEventListener("cancel", handleCloseEvent); 11845 scrollLock(false); 11846 }); 11847 } 11848 } 11849 function modifierValue(modifiers, key, fallback) { 11850 if (modifiers.indexOf(key) === -1) return fallback; 11851 const rawValue = modifiers[modifiers.indexOf(key) + 1]; 11852 if (!rawValue) return fallback; 11853 if (key === "closeby") { 11854 const allowedValues = ["auto", "none", "closerequest", "any"]; 11855 const options = allowedValues.join(", "); 11856 if (!allowedValues.includes(rawValue)) { 11857 console.warn( 11858 `"${rawValue}" is not one of the allowed values for closeby: ${options}` 11859 ); 11860 return fallback; 11861 } 11862 } 11863 return rawValue; 11864 } 11865 11866 // src/cdn.js 11867 document.addEventListener("alpine:init", () => { 11868 window.Alpine.plugin(dialog_default); 11869 }); 11870 })(); 11871 //# sourceURL=alpine-htmldialog.js 11872</script>
vendor: 1 bytes, line 11872
11872
11873<script> 11874 (() => { 11875 function src_default(Alpine) { 11876 Alpine.directive("intersect", Alpine.skipDuringClone((el, { value, expression, modifiers }, { evaluateLater, cleanup }) => { 11877 let evaluate = evaluateLater(expression); 11878 let options = { 11879 rootMargin: getRootMargin(modifiers), 11880 threshold: getThreshold(modifiers) 11881 }; 11882 let observer = new IntersectionObserver((entries) => { 11883 entries.forEach((entry) => { 11884 if (entry.isIntersecting === (value === "leave")) 11885 return; 11886 evaluate(); 11887 modifiers.includes("once") && observer.disconnect(); 11888 }); 11889 }, options); 11890 observer.observe(el); 11891 cleanup(() => { 11892 observer.disconnect(); 11893 }); 11894 })); 11895 } 11896 function getThreshold(modifiers) { 11897 if (modifiers.includes("full")) 11898 return 0.99; 11899 if (modifiers.includes("half")) 11900 return 0.5; 11901 if (!modifiers.includes("threshold")) 11902 return 0; 11903 let threshold = modifiers[modifiers.indexOf("threshold") + 1]; 11904 if (threshold === "100") 11905 return 1; 11906 if (threshold === "0") 11907 return 0; 11908 return Number(`.${threshold}`); 11909 } 11910 function getLengthValue(rawValue) { 11911 let match = rawValue.match(/^(-?[0-9]+)(px|%)?$/); 11912 return match ? match[1] + (match[2] || "px") : void 0; 11913 } 11914 function getRootMargin(modifiers) { 11915 const key = "margin"; 11916 const fallback = "0px 0px 0px 0px"; 11917 const index = modifiers.indexOf(key); 11918 if (index === -1) 11919 return fallback; 11920 let values = []; 11921 for (let i = 1; i < 5; i++) { 11922 values.push(getLengthValue(modifiers[index + i] || "")); 11923 } 11924 values = values.filter((v) => v !== void 0); 11925 return values.length ? values.join(" ").trim() : fallback; 11926 } 11927 11928 document.addEventListener("alpine:init", () => { 11929 window.Alpine.plugin(src_default); 11930 }); 11931 })(); 11932 //# sourceURL=alpine-intersect.js 11933</script>
vendor: 1 bytes, line 11933
11933
11934<script> 11935 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"})) { 11936 document.querySelectorAll(selector).forEach(el => el.setAttribute('x-defer', `${deferUntil}`)); 11937 } 11938 //# sourceURL=alpine-defer-rules.js 11939</script>
vendor: 1 bytes, line 11939
11939
11940<script> 11941 (() => { 11942 const hasAlpine = new Promise(resolve => { 11943 window.addEventListener('alpine:initialized', resolve, {once: true, passive: true}); 11944 }); 11945 11946 const hasInteract = new Promise(resolve => { 11947 (events => { 11948 const onInteract = () => { 11949 resolve(); 11950 events.forEach(type => window.removeEventListener(type, onInteract)); 11951 } 11952 events.forEach(type => window.addEventListener(type, onInteract, {once: true, passive: true})) 11953 })(['touchstart', 'mouseover', 'wheel', 'scroll', 'keydown']) 11954 }); 11955 11956 const onIntersect = (el) => { 11957 return new Promise(resolve => { 11958 const observer = new IntersectionObserver(entries => { 11959 for (const entry of entries) { 11960 if (entry.isIntersecting) { 11961 observer.disconnect() 11962 resolve(); 11963 } 11964 } 11965 }, {}); 11966 observer.observe(el); 11967 }); 11968 } 11969 11970 function runComponent(el) { 11971 hasAlpine.then(() => { 11972 el.removeAttribute('x-ignore'); 11973 queueMicrotask(() => Alpine.initTree(el)); 11974 }); 11975 } 11976 11977 function initDeferredComponents() { 11978 document.querySelectorAll('[x-data][x-defer]').forEach(el => { 11979 el.setAttribute('x-ignore', ''); 11980 const deferUntil = (el.getAttribute('x-defer') || '').trim(); 11981 switch (deferUntil) { 11982 case 'interact': 11983 hasInteract.then(() => runComponent(el)); 11984 break; 11985 case 'intersect': 11986 onIntersect(el).then(() => runComponent(el)) 11987 break; 11988 case 'idle': 11989 window.requestIdleCallback 11990 ? window.requestIdleCallback(() => runComponent(el), {timeout: 4000}) 11991 : setTimeout(() => runComponent(el), 4000); 11992 break; 11993 case 'eager': 11994 runComponent(el); 11995 break; 11996 default: 11997 if (deferUntil.startsWith('event:') && deferUntil.length > 6) { 11998 window.addEventListener(deferUntil.substring(6), () => runComponent(el), {once: true, passive: true}); 11999 } 12000 } 12001 }); 12002 } 12003 12004 window.addEventListener('alpine:init', initDeferredComponents, {once: true, passive: true}); 12005 })(); 12006 //# sourceURL=alpine-defer.js 12007</script>
vendor: 1 bytes, line 12007
12007
vendor: 1,455 bytes, lines 12008-12010
12008<script> 12009(()=>{function g(n){n.directive("collapse",e),e.inline=(t,{modifiers:i})=>{i.includes("min")&&(t._x_doShow=()=>{},t._x_doHide=()=>{})};function e(t,{modifiers:i}){let r=l(i,"duration",250)/1e3,u=l(i,"min",0),h=!i.includes("min");t._x_isShown||(t.style.height=`${u}px`),!t._x_isShown&&h&&(t.hidden=!0),t._x_isShown||(t.style.overflow="hidden");let c=(d,s)=>{let o=n.setStyles(d,s);return s.height?()=>{}:o},f={transitionProperty:"height",transitionDuration:`${r}s`,transitionTimingFunction:"cubic-bezier(0.4, 0.0, 0.2, 1)"};t._x_transition={in(d=()=>{},s=()=>{}){h&&(t.hidden=!1),h&&(t.style.display=null);let o=t.getBoundingClientRect().height;t.style.height="auto";let a=t.getBoundingClientRect().height;o===a&&(o=u),n.transition(t,n.setStyles,{during:f,start:{height:o+"px"},end:{height:a+"px"}},()=>t._x_isShown=!0,()=>{t.getBoundingClientRect().height==a&&(t.style.overflow=null)})},out(d=()=>{},s=()=>{}){let o=t.getBoundingClientRect().height;n.transition(t,c,{during:f,start:{height:o+"px"},end:{height:u+"px"}},()=>t.style.overflow="hidden",()=>{t._x_isShown=!1,t.style.height==`${u}px`&&h&&(t.style.display="none",t.hidden=!0)})}}}}function l(n,e,t){if(n.indexOf(e)===-1)return t;let i=n[n.indexOf(e)+1];if(!i)return t;if(e==="duration"){let r=i.match(/([0-9]+)ms/);if(r)return r[1]}if(e==="min"){let r=i.match(/([0-9]+)px/);if(r)return r[1]}return i}document.addEventListener("alpine:init",()=>{window.Alpine.plugin(g)});})(); 12010</script>
12010 12011
12012<script type="module" 12013 src="https://www.steiff.com/static/version1790768634/frontend/Steiff/default/en_GB/Hyva_Theme/js/alpine3.min.js" 12014 defer 12015 crossorigin 12016 nonce="N3VsYnlzdWEweHE4NGp1ZHFtODVyYzk0MnZjcHlyZ3A="></script>
vendor: 1 bytes, line 12016
12016
12017<script> 12018 document.addEventListener("alpine:init", () => { 12019 Alpine.data('hyvaCmsToggle', () => ({ 12020 open: false, 12021 notOpen() { 12022 return !this.open; 12023 }, 12024 show() { 12025 this.open = true 12026 }, 12027 hide() { 12028 this.open = false 12029 }, 12030 toggle() { 12031 this.open = !this.open 12032 } 12033 })) 12034 }); 12035</script>
vendor: 1 bytes, line 12035
12035
12036<script> 12037 function calculateJavascriptVariables() { 12038 document.querySelector(':root').style.setProperty('--header-height', (document.querySelector('.page-header')?.clientHeight || 0) + 'px'); 12039 12040 window.dispatchEvent(new CustomEvent('javascript-variables-recalculated')) 12041 } 12042 12043 window.addEventListener('recalculate-javascript-variables', calculateJavascriptVariables) 12044 window.addEventListener('resize', calculateJavascriptVariables) 12045 window.addEventListener('alpine:initialized', calculateJavascriptVariables) 12046 12047 calculateJavascriptVariables(); 12048 12049 window.requestIdleCallback 12050 ? window.requestIdleCallback(() => calculateJavascriptVariables()) 12051 : setTimeout(() => calculateJavascriptVariables(), 4000); 12052</script>
vendor: 1 bytes, line 12052
12052
12053<script> 12054 function dispatchMessages(messages, hideAfter) { 12055 const messagesEvent = new CustomEvent("messages-loaded", { 12056 detail: { 12057 messages: messages, 12058 hideAfter: hideAfter 12059 } 12060 }); 12061 window.dispatchEvent(messagesEvent); 12062 } 12063 12064 if (typeof hyva === 'undefined' || (!hyva.getBrowserStorage || !hyva.getCookie || !hyva.setCookie)) { 12065 console.warn("Hyvä helpers are not loaded yet. Make sure they are included before this script"); 12066 } 12067 12068 (function( hyva, undefined ) { 12069 12070 hyva.initFormKey = () => { 12071 const inputSelector = 'input[name="form_key"]', 12072 formKey = hyva.getFormKey(); 12073 12074 Array.from(document.querySelectorAll(inputSelector)).map(function (input) { 12075 input.value = formKey 12076 }); 12077 } 12078 12079 hyva.initMessages = () => { 12080 try { 12081 const messages = hyva.getCookie('mage-messages'); 12082 window.mageMessages = messages ? JSON.parse(decodeURIComponent(messages).replace(/\+/g, ' ')) : []; 12083 12084 dispatchMessages(window.mageMessages); 12085 12086 // empty `mage-messages` cookie 12087 const skipSetDomain = true; 12088 hyva.setCookie('mage-messages','', -1, skipSetDomain); 12089 12090 } catch (error) { 12091 console.warn('Error parsing Cookie Messages:', error); 12092 } 12093 } 12094 12095 window.addEventListener('DOMContentLoaded', hyva.initFormKey); 12096 hyva.alpineInitialized(hyva.initMessages) 12097 12098 }( window.hyva = window.hyva || {} )); 12099 //# sourceURL=hyva-cookies.js 12100</script>
vendor: 1 bytes, line 12100
12100
12101<script> 12102 (function () { 12103 function getCookie(name) { 12104 const match = document.cookie.match(new RegExp('(?:^|;\\s*)' + name + '=([^;]*)')); 12105 return match ? decodeURIComponent(match[1]) : null; 12106 } 12107 12108 const marker = getCookie('session_marker'); 12109 12110 if (marker === 'guest') { 12111 const cached = localStorage.getItem('mage-cache-storage'); 12112 if (cached) { 12113 try { 12114 const data = JSON.parse(cached); 12115 if (data.customer && data.customer.firstname) { 12116 localStorage.removeItem('mage-cache-storage'); 12117 localStorage.removeItem('mage-cache-timeout'); 12118 localStorage.removeItem('private_content_version'); 12119 document.cookie = 'mage-cache-sessid=; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/'; 12120 } 12121 } catch (e) {} 12122 } 12123 } 12124 })(); 12125</script>
vendor: 1 bytes, line 12125
12125
12126<script> 12127 { 12128 const private_content_key = 'mage-cache-storage'; 12129 const private_content_expire_key = 'mage-cache-timeout'; 12130 const private_content_version_key = 'private_content_version'; 12131 const section_data_ids_key = 'section_data_ids'; 12132 const mage_cache_session_id_key = 'mage-cache-sessid'; 12133 const last_visited_store_key = 'last_visited_store'; 12134 12135 const ttl = 3600; 12136 12137 if (typeof hyva === 'undefined' || (!hyva.getBrowserStorage || !hyva.getCookie || !hyva.setCookie)) { 12138 console.warn("Hyvä helpers are not loaded yet. Make sure they are included before this script"); 12139 } 12140 12141 function loadSectionData () { 12142 const browserStorage = hyva.getBrowserStorage(); 12143 if (!browserStorage) { 12144 typeof window.dispatchMessages !== "undefined" && window.dispatchMessages( 12145 [{ 12146 type: "warning", 12147 text: "Please enable LocalStorage in your browser." 12148 }] 12149 ); 12150 return; 12151 } 12152 try { 12153 let isInvalid = false; 12154 12155 if (hyva.getCookie(last_visited_store_key) !== CURRENT_STORE_CODE) { 12156 isInvalid = true; 12157 } 12158 hyva.setCookie(last_visited_store_key, CURRENT_STORE_CODE, false, false); 12159 12160 if (!hyva.getCookie(mage_cache_session_id_key)) { 12161 isInvalid = true; 12162 browserStorage.removeItem(private_content_key); 12163 const skipSetDomain = true; 12164 const days = false; 12165 hyva.setCookie(mage_cache_session_id_key, true, days, skipSetDomain) 12166 } 12167 12168 const cookieVersion = hyva.getCookie(private_content_version_key); 12169 const storageVersion = browserStorage.getItem(private_content_version_key); 12170 12171 if (cookieVersion && !storageVersion || cookieVersion !== storageVersion) { 12172 isInvalid = true; 12173 } 12174 12175 const privateContentExpires = browserStorage.getItem(private_content_expire_key); 12176 if (privateContentExpires && new Date(privateContentExpires) < new Date()) { 12177 browserStorage.removeItem(private_content_key); 12178 } 12179 12180 if (isInvalid && cookieVersion) { 12181 fetchPrivateContent([]); 12182 } else if (cookieVersion && storageVersion && cookieVersion === storageVersion) { 12183 const privateContent = JSON.parse(browserStorage.getItem(private_content_key)); 12184 if ( 12185 privateContent && 12186 privateContentExpires && 12187 privateContent.cart && 12188 privateContent.customer 12189 ) { 12190 dispatchPrivateContent(privateContent); 12191 } else { 12192 fetchPrivateContent([]); 12193 } 12194 } else { 12195 if (document.getElementById('default-section-data')) { 12196 const privateContent = JSON.parse(document.getElementById('default-section-data').innerText.trim()); 12197 dispatchPrivateContent(privateContent); 12198 } else { 12199 dispatchPrivateContent({}); 12200 } 12201 } 12202 12203 } catch (error) { 12204 console.warn('Error retrieving Private Content:', error); 12205 } 12206 } 12207 12208 hyva.alpineInitialized(loadSectionData) 12209 window.addEventListener('reload-customer-section-data', loadSectionData); 12210 12211 window.processSectionDataBeforeDispatch = window.processSectionDataBeforeDispatch || (data => data); 12212 12213 function dispatchPrivateContent(data) { 12214 12215 const privateContentEvent = new CustomEvent("private-content-loaded", { 12216 detail: { 12217 data: window.processSectionDataBeforeDispatch(data) 12218 } 12219 }); 12220 window.dispatchEvent(privateContentEvent); 12221 } 12222 12223 function fetchPrivateContent(sections) { 12224 fetch(`${BASE_URL}customer/section/load/?sections=${encodeURIComponent(sections.join(','))}`, { 12225 method: 'GET', 12226 headers: { 12227 'Content-Type': 'application/json', 12228 'X-Requested-With': 'XMLHttpRequest' 12229 } 12230 }) 12231 .then(response => response.ok && response.json()) 12232 .then( 12233 data => { 12234 if (data) { 12235 try { 12236 const browserStorage = hyva.getBrowserStorage(); 12237 12238 // merge new data preserving non-invalidated sections 12239 const oldSectionData = JSON.parse(browserStorage.getItem(private_content_key) || '{}') || {}; 12240 12241 if ((! data.cart || ! data.cart.cartId) && oldSectionData['checkout-data']) { 12242 delete oldSectionData['checkout-data']; 12243 } 12244 const newSectionData = Object.assign(oldSectionData, data); 12245 12246 dispatchPrivateContent(newSectionData); 12247 12248 // don't persist messages, they've been dispatched already 12249 if (newSectionData.messages && newSectionData.messages.messages ) { 12250 newSectionData.messages.messages = []; 12251 } 12252 12253 browserStorage.setItem(private_content_key, JSON.stringify(newSectionData)); 12254 12255 const expiresAt = new Date(Date.now() + (ttl * 1000)).toISOString(); 12256 browserStorage.setItem(private_content_expire_key, expiresAt); 12257 12258 const newCookieVersion = hyva.getCookie(private_content_version_key); 12259 browserStorage.setItem(private_content_version_key, newCookieVersion); 12260 12261 // We don't need the section_data_ids in Hyvä, but we store them for compatibility 12262 // with Luma Fallback. Otherwise, not all sections are loaded in Luma Checkout 12263 hyva.setCookie( 12264 section_data_ids_key, 12265 JSON.stringify( 12266 Object.keys(data).reduce((sectionDataIds, sectionKey) => { 12267 sectionDataIds[sectionKey] = data[sectionKey]['data_id']; 12268 return sectionDataIds; 12269 }, {}) 12270 ), 12271 false, 12272 true 12273 ); 12274 } catch (error) { 12275 console.warn("Couldn't store privateContent", error); 12276 } 12277 } 12278 } 12279 ); 12280 } 12281 } 12282 //# sourceURL=hyva-private-content.js 12283</script>
vendor: 1 bytes, line 12283
12283
12284<script> 12285 (() => { 12286 document.addEventListener('submit', event => event.target.action = event.target.action.replace('%25uenc%25', hyva.getUenc())); 12287 })() 12288</script>
vendor: 1 bytes, line 12288
12288
12289<script> 12290 (events => { 12291 const dispatchUserInteractionEvent = () => { 12292 events.forEach(type => window.removeEventListener(type, dispatchUserInteractionEvent)) 12293 window.dispatchEvent(new Event('init-external-scripts')) 12294 }; 12295 events.forEach(type => window.addEventListener(type, dispatchUserInteractionEvent, {once: true, passive: true})) 12296 })(['touchstart', 'mousemove', 'wheel', 'scroll', 'keydown']); 12297 //# sourceURL=hyva-init-external-scripts.js 12298</script>
vendor: 1 bytes, line 12298
12298
12299<script> 12300 function initWishlist() { 12301 return window.steiffInitWishlistToggle(); 12302 } 12303</script>
vendor: 1 bytes, line 12303
12303
12304<script> 12305 function initCompareOnProductList() { 12306 return { 12307 addToCompare(productId) { 12308 const formKey = hyva.getFormKey(); 12309 const postUrl = BASE_URL + 'catalog/product_compare/add/'; 12310 12311 fetch(postUrl, { 12312 "headers": { 12313 "content-type": "application/x-www-form-urlencoded; charset=UTF-8", 12314 }, 12315 "body": "form_key=" + formKey + "&product=" + productId + "&uenc=" + hyva.getUenc(), 12316 "method": "POST", 12317 "mode": "cors", 12318 "credentials": "include" 12319 }).then(function (response) { 12320 if (response.redirected) { 12321 window.location.href = response.url; 12322 } 12323 }).catch(function (error) { 12324 typeof window.dispatchMessages !== "undefined" && window.dispatchMessages( 12325 [{ 12326 type: "error", 12327 text: error 12328 }], 5000 12329 ); 12330 }); 12331 } 12332 }; 12333 } 12334</script>
vendor: 1 bytes, line 12334
12334
12335<script> 12336 function initPriceBox() 12337 { 12338 return { 12339 updatePrice(priceData) { 12340 const regularPriceLabel = this.$root.querySelector('.normal-price .price-label'); 12341 const regularPriceElement = this.$root.querySelector('.normal-price [data-price-type=finalPrice].price-wrapper .price'); 12342 const basePriceElement = this.$root.querySelector('.normal-price [data-price-type=basePrice].price-wrapper .price'); 12343 if (priceData.finalPrice.amount < priceData.oldPrice.amount) { 12344 regularPriceLabel && regularPriceLabel.classList.add('hidden'); 12345 } else { 12346 regularPriceLabel && regularPriceLabel.classList.remove('hidden'); 12347 } 12348 regularPriceElement && (regularPriceElement.innerText = hyva.formatPrice(priceData.finalPrice.amount)); 12349 basePriceElement && (basePriceElement.innerText = hyva.formatPrice(priceData.basePrice.amount)); 12350 } 12351 } 12352 } 12353</script>
vendor: 1 bytes, line 12353
12353
12354<script> 12355 function initConfigurableOptions(productId, optionConfig) { 12356 12357 function findPathParam(key) { 12358 const baseUrl = (BASE_URL.substring(0, 2) === '//' ? 'http:' : '') + BASE_URL; 12359 const baseUrlParts = (new URL(baseUrl)).pathname.replace(/\/$/, '').split('/'); 12360 const pathParts = window.location.pathname.split('/').slice(baseUrlParts.length + 3); 12361 for (let i = 0; i < pathParts.length; i += 2) { 12362 if (pathParts[i] === key && pathParts.length > i) { 12363 return pathParts[i + 1]; 12364 } 12365 } 12366 } 12367 12368 return { 12369 optionConfig, 12370 productId, 12371 itemId: (new URLSearchParams(window.location.search)).get('id') || findPathParam('id'), 12372 allowedAttributeOptions: [], 12373 selectedValues: [], 12374 init() { 12375 this.findAllowedAttributeOptions(); 12376 this.$nextTick(() => { 12377 if (typeof this.optionConfig.defaultValues === 'object') { 12378 for (const [attributeId, value] of Object.entries(this.optionConfig.defaultValues)) { 12379 this.changeOption(attributeId, value + ''); 12380 } 12381 } 12382 this.preselectQuerystringItems(); 12383 this.preselectLocationHashItems(); 12384 }); 12385 }, 12386 productIndex: 0, 12387 productIndexForPrice: 0, 12388 optionIsActive(attributeId, optionId) { 12389 return !!this.getAllowedAttributeOptions(attributeId).find( 12390 option => option.id === optionId 12391 ) 12392 }, 12393 optionIsEnabled(attributeId, optionId) { 12394 for (const productId in this.optionConfig.index) { 12395 if (this.optionConfig.index[productId][attributeId] === optionId) { 12396 return true; 12397 } 12398 } 12399 return false; 12400 }, 12401 findSimpleIndex() { 12402 this.productIndex = this.calculateSimpleIndexForPartialSelection(this.selectedValues); 12403 this.productIndexForPrice = this.findCheapestProductForPartialSelection(this.selectedValues); 12404 }, 12405 calculateSimpleIndexForPartialSelection(selectedValues) { 12406 if (selectedValues.length === 0) return 0; 12407 return this.findProductIdsForPartialSelection(selectedValues)[0]; 12408 }, 12409 calculateSimpleIndexForFullSelection(selectedValues) { 12410 if (! this.isFullSelection(selectedValues)) return false; 12411 12412 const productIndexes = this.optionConfig.index; 12413 return Object.keys(productIndexes).find(productIndex => { 12414 const productCandidateOptions = productIndexes[productIndex]; 12415 12416 for (const productOption in productCandidateOptions) { 12417 if ( 12418 !selectedValues[productOption] || 12419 selectedValues[productOption] !== productCandidateOptions[productOption] 12420 ) { 12421 return false; 12422 } 12423 } 12424 return productIndex; 12425 }); 12426 }, 12427 findAllowedAttributeOptions() { 12428 this.allowedAttributeOptions = this.calculateAllowedAttributeOptions(this.selectedValues); 12429 }, 12430 calculateAllowedAttributeOptions(selectedValues) { 12431 const allAttributes = this.optionConfig.attributes; 12432 const allAttributesSorted = Object.values(allAttributes).sort((a,b) => { 12433 return a.position - b.position 12434 }); 12435 12436 const newAllowedAttributeOptions = []; 12437 12438 allAttributesSorted.forEach(attribute => { 12439 const selectionWithoutAttr = Object.assign({}, this.removeAttrFromSelection(selectedValues, attribute.id)); 12440 const availableIndexes = this.calculateAvailableProductIndexes(selectionWithoutAttr); 12441 newAllowedAttributeOptions[attribute.id] = allAttributes[attribute.id].options.filter(option => { 12442 return !!option.products.find(product => { 12443 return availableIndexes.includes(product); 12444 }) 12445 }); 12446 }); 12447 return newAllowedAttributeOptions; 12448 }, 12449 calculateAvailableProductIndexes(selectedOptions) { 12450 if (Object.keys(selectedOptions).length === 0) { 12451 if (Object.values(this.optionConfig.salable || {}).length) { 12452 return [].concat.apply([], [].concat.apply([], Object.values(this.optionConfig.salable).map(Object.values))).filter((x, i, a) => a.indexOf(x) === i) 12453 } 12454 return Object.keys(this.optionConfig.index); 12455 } 12456 12457 const selectedIds = Object.keys(selectedOptions); 12458 if (Object.values(this.optionConfig.salable || {}).length) { 12459 const selectedOptionIndexes = selectedIds.map(attrId => { 12460 const optionValue = selectedOptions[attrId]; 12461 return this.optionConfig.salable[attrId] && this.optionConfig.salable[attrId][optionValue] || [] 12462 }) 12463 return selectedOptionIndexes.reduce((acc, optionIndexes) => { 12464 return acc.filter(index => optionIndexes.includes(index)); 12465 }); 12466 } else { 12467 const productIndexes = this.optionConfig.index; 12468 return Object.keys(productIndexes).filter(index => { 12469 for (const attrId of selectedIds) { 12470 if (productIndexes[index][attrId] !== `${selectedOptions[attrId]}`) return false 12471 } 12472 return true 12473 }); 12474 } 12475 }, 12476 findAttributeByOptionId(optionId) { 12477 for (const attributeId in this.optionConfig.attributes) { 12478 const attributeOptions = this.optionConfig.attributes[attributeId].options || []; 12479 if (attributeOptions.find(option => option.id === optionId)) { 12480 return attributeId; 12481 } 12482 } 12483 }, 12484 getAllowedAttributeOptions(attributeId) { 12485 return this.allowedAttributeOptions[attributeId] || [] 12486 }, 12487 getAllAttributeOptions(attributeId) { 12488 return ( 12489 this.optionConfig.attributes[attributeId] && 12490 this.optionConfig.attributes[attributeId].options 12491 ) || [] 12492 }, 12493 getProductIdsForOption(option) { 12494 const attributeId = this.findAttributeByOptionId(option.id); 12495 const allOptions = this.optionConfig.attributes[attributeId]; 12496 const opt = (allOptions && allOptions.options || []).find(o => o.id === option.id); 12497 return opt && opt.products 12498 ? opt.products 12499 : []; 12500 }, 12501 findProductIdsForPartialSelection(optionSelection) { 12502 const candidateProducts = Object.values(optionSelection).reduce((candidates, optionId) => { 12503 const newCandidates = this.getProductIdsForOption({id: optionId}); 12504 return candidates === null 12505 ? newCandidates 12506 : candidates.filter(productId => newCandidates.includes(productId)); 12507 }, null); 12508 return candidateProducts || []; 12509 },
12510 findCheapestProductForPartialSelection(optionSelection) { 12511 const candidateProducts = this.findProductIdsForPartialSelection(optionSelection); 12512 return candidateProducts.reduce((cheapest, simpleIdx) => { 12513 // in the first iteration we start with simpleIdx as the currently cheapest product 12514 if (! this.optionConfig.optionPrices[cheapest]) return simpleIdx; 12515 const knownCheapestPrice = this.optionConfig.optionPrices[cheapest].finalPrice.amount; 12516 return knownCheapestPrice > this.optionConfig.optionPrices[simpleIdx].finalPrice.amount 12517 ? simpleIdx 12518 : cheapest; 12519 }, 0) 12520 }, 12521 findProductIdToUseForOptionPrice(option) { 12522 // try to find a product for a complete selection 12523 const attributeId = this.findAttributeByOptionId(option.id); 12524 const optionSelection = Object.assign({}, this.selectedValues, {[attributeId]: option.id}); 12525 const matchingSimpleIndex = this.calculateSimpleIndexForFullSelection(optionSelection); 12526 // if there is no complete selection, use the cheapest product for the option 12527 return matchingSimpleIndex || this.findCheapestProductForPartialSelection(optionSelection); 12528 }, 12529 getAttributeOptionLabel(option) { 12530 const optionProduct = this.findProductIdToUseForOptionPrice(option); 12531 12532 if ((! optionProduct) || (optionProduct === this.productIndexForPrice)) { 12533 return option.label; 12534 } 12535 12536 const currentPrice = this.getOptionPriceAdjustmentBasePrice(); 12537 12538 if (this.optionConfig.optionPrices[optionProduct]) { 12539 const optionPrice = this.optionConfig.optionPrices[optionProduct].finalPrice.amount; 12540 if (optionPrice !== currentPrice){ 12541 return option.label + ' ' + hyva.formatPrice(optionPrice - currentPrice, true); 12542 } 12543 } 12544 return option.label; 12545 }, 12546 getOptionPriceAdjustmentBasePrice() { 12547 if (this.optionConfig.optionPrices[this.productIndexForPrice]) { 12548 return this.optionConfig.optionPrices[this.productIndexForPrice].finalPrice.amount 12549 } 12550 return this.optionConfig.prices.finalPrice.amount; // default price if no option selection 12551 }, 12552 clearOptionIfActive(optionId, value) { 12553 if (this.selectedValues[optionId] === value) { 12554 this.blurLabel() 12555 this.changeOption(optionId, '') 12556 } 12557 }, 12558 removeAttrFromSelection(selectedValues, attributeId) { 12559 attributeId = parseInt(attributeId); 12560 return selectedValues.reduce((newSelection, val, attr) => { 12561 if (attr !== attributeId) { 12562 newSelection[attr] = val; 12563 } 12564 return newSelection; 12565 }, []); 12566 }, 12567 changeOption(attributeId, value) { 12568 if (value === '') { 12569 this.selectedValues = this.removeAttrFromSelection(this.selectedValues, attributeId) 12570 } else if (value && this.getAllowedAttributeOptions(attributeId).find(option => option.id === value)) { 12571 this.selectedValues[attributeId] = value; 12572 } 12573 this.findSimpleIndex(); 12574 this.findAllowedAttributeOptions(); 12575 this.updatePrices(); 12576 this.updateGallery(); 12577 12578 const candidates = this.findProductIdsForPartialSelection(this.selectedValues); 12579 12580 window.dispatchEvent( 12581 new CustomEvent( 12582 'configurable-selection-changed', 12583 { 12584 detail: { 12585 productId: this.productId, 12586 optionId: attributeId, 12587 value: value, 12588 productIndex: this.productIndex, 12589 selectedValues: this.selectedValues, 12590 candidates: candidates, 12591 skuCandidates: Object.values(candidates).map(id =>
12591 this.optionConfig.sku?.[id] ?? null).filter(Boolean), 12592 } 12593 } 12594 ) 12595 ); 12596 }, 12597 calculateIsMinimalPrice() { 12598 return ! this.isFullSelection(this.selectedValues); 12599 }, 12600 isFullSelection(selectedValues) { 12601 return Object.values(selectedValues).length === Object.keys(this.optionConfig.attributes).length; 12602 }, 12603 updatePrices() { 12604 const value = this.optionConfig.optionPrices[this.productIndexForPrice] || this.optionConfig.prices; 12605 window.dispatchEvent( 12606 new CustomEvent( 12607 "update-prices-" + this.productId, 12608 { 12609 detail: Object.assign( 12610 value, 12611 { isMinimalPrice: this.calculateIsMinimalPrice() } 12612 ) 12613 } 12614 ) 12615 ); 12616 }, 12617 updateGallery () { 12618 if (this.productIndex) { 12619 const images = this.optionConfig.images[this.productIndex]; 12620 images && window.dispatchEvent(new CustomEvent( 12621 "update-gallery", 12622 { detail: this.sortImagesByPosition(images) } 12623 )); 12624 } else { 12625 window.dispatchEvent(new Event("reset-gallery")); 12626 } 12627 }, 12628 sortImagesByPosition(images) { 12629 return images.sort((x, y) => { 12630 return x.position === y.position ? 0 : (parseInt(x.position) > parseInt(y.position) ? 1 : -1) 12631 }); 12632 }, 12633 onGetCartData(data) { 12634 }, 12635 preselectCartItems(data) { 12636 // pre-select options based on cart data for current (quote) itemId 12637 const cart = data && data.cart; 12638 if (cart && cart.items) { 12639 const cartItem = cart.items.find((item) => { 12640 return ( 12641 item.item_id === this.itemId 12642 && item.product_id === this.productId 12643 ) 12644 }); 12645 if (cartItem && cartItem.options && cartItem.options.length) { 12646 cartItem.options.map(option => { 12647 this.changeOption(option.option_id, option.option_value); 12648 }) 12649 } 12650 } 12651 }, 12652 preselectQuerystringItems() { 12653 // pre-select option like ?size=167 12654 const urlQueryParams = new URLSearchParams(window.location.search.replace('?','')); 12655 this.preselectItemsBasedOnLocation(attribute => urlQueryParams.get(attribute.code)); 12656 }, 12657 preselectLocationHashItems() { 12658 // pre-select option like #144=167 12659 const urlHashParams = new URLSearchParams(window.location.hash.replace('#','')); 12660 this.preselectItemsBasedOnLocation(attribute => urlHashParams.get(attribute.id)); 12661 }, 12662 preselectItemsBasedOnLocation(getLocationValue) { 12663 Object.values(this.optionConfig.attributes).map(attribute => { 12664 const v = getLocationValue(attribute); 12665 v && this.changeOption(attribute.id, v) 12666 }); 12667 } 12668 } 12669 } 12670</script>
vendor: 1 bytes, line 12670
12670
12671<script> 12672 function initSwatchOptions(swatchConfig) { 12673 return { 12674 swatchConfig, 12675 getAttributeSwatchData(attributeId) { 12676 const swatchConfig = Object.assign({}, this.swatchConfig[attributeId]); 12677 swatchConfig['details'] = JSON.parse(swatchConfig['additional_data']); 12678 12679 return swatchConfig; 12680 }, 12681 mapSwatchTypeNumberToTypeCode(typeNumber) { 12682 switch ("" + typeNumber) { 12683 case "1": 12684 return "color" 12685 case "2": 12686 return "image" 12687 case "3": 12688 return "empty" 12689 case "0": 12690 default: 12691 return "text" 12692 } 12693 }, 12694 getTypeOfFirstOption(attributeId) { 12695 for (const optionId in this.swatchConfig[attributeId]) { 12696 const option = this.swatchConfig[attributeId][optionId]; 12697 if (typeof option.type !== 'undefined') { 12698 return this.mapSwatchTypeNumberToTypeCode(option.type); 12699 } 12700 } 12701 }, 12702 getVisualSwatchType(attributeId, targetOptionId) { 12703 // If a type configuration is present for the given option id, use it 12704 const config = this.swatchConfig[attributeId]; 12705 if (config[targetOptionId] && typeof config[targetOptionId].type !== 'undefined') { 12706 return this.mapSwatchTypeNumberToTypeCode(config[targetOptionId].type); 12707 } 12708 12709 // Otherwise - if no config is present for the target option - use the type of the first option 12710 // with a type property from the attribute, thus assuming its the same type as the target option. 12711 // (This edge case condition can occur on single swatch products if some options are not salable) 12712 return this.getTypeOfFirstOption(attributeId); 12713 }, 12714 getSwatchType(attributeId, optionId) { 12715 // Deserialize the attribute details the first time they are used 12716 if (this.swatchConfig[attributeId] && ! this.swatchConfig[attributeId].details) { 12717 this.swatchConfig[attributeId] = this.getAttributeSwatchData(attributeId); 12718 } 12719 const type = this.swatchConfig[attributeId] && 12720 this.swatchConfig[attributeId].details && 12721 this.swatchConfig[attributeId].details.swatch_input_type || 12722 "empty"; 12723 return type === 'visual' ? this.getVisualSwatchType(attributeId, optionId) : type; 12724 }, 12725 isTextSwatch(attributeId, optionId) { 12726 return this.getSwatchType(attributeId, optionId) === 'text'; 12727 }, 12728 isVisualSwatch(attributeId, optionId) { 12729 const type = this.getSwatchType(attributeId, optionId); 12730 12731 return ['image', 'color'].includes(type); 12732 }, 12733 getSwatchBackgroundStyle(attributeId, optionId) { 12734 const config = this.getSwatchConfig(attributeId, optionId); 12735 const type = this.getSwatchType(attributeId, optionId); 12736 12737 if (type === "color") { 12738 return 'background-color:' + config.value; 12739 } else if (type === "image") { 12740 return "background: #fff url('" + config.value + "') no-repeat center"; 12741 } else { 12742 return ''; 12743 } 12744 }, 12745 getSwatchText(attributeId, optionId) { 12746 const config = this.getSwatchConfig(attributeId, optionId); 12747 return config.label || config.value || this.getOptionLabelFromOptionConfig(attributeId, optionId); 12748 }, 12749 getOptionLabelFromOptionConfig(attributeId, optionId) { 12750 // Fallback if no value is present in swatchConfig data 12751 // Reference issue https://gitlab.hyva.io/hyva-themes/magento2-default-theme/-/issues/190 12752 const option = this.getAllAttributeOptions(attributeId).filter(option => option.id === optionId); 12753 return option && option[0] && option[0].label ||''; 12754 }, 12755 getSwatchConfig(attributeId, optionId) { 12756 return this.swatchConfig[attributeId] && this.swatchConfig[attributeId][optionId] 12757 ? this.swatchConfig[attributeId][optionId] 12758 : false;
12759 }, 12760 activeTooltipItem: false, 12761 tooltipPositionElement: false, 12762 isTooltipVisible() { 12763 return this.activeTooltipItem && 12764 this.getSwatchConfig( 12765 this.activeTooltipItem.attribute, 12766 this.activeTooltipItem.item 12767 ); 12768 }, 12769 isFirstItemCol() { 12770 return this.activeTooltipItem.index === 0; 12771 }, 12772 getTooltipImageStyle(attributeId, optionId) { 12773 const config = this.getSwatchConfig(attributeId, optionId); 12774 const type = this.getSwatchType(attributeId, optionId); 12775 12776 if (type === "color") { 12777 return 'background-color:' + config.value + '; width: 110px; height: 90px;'; 12778 } else if (type === "image") { 12779 return "background: #ffffff url('" + config.thumb + 12780 "') center center no-repeat; width: 110px; height: 90px;"; 12781 } else { 12782 return 'display:none'; 12783 } 12784 }, 12785 getTooltipPosition() { 12786 return this.tooltipPositionElement ? 12787 `top: ${this.tooltipPositionElement.offsetTop}px;` + 12788 `left: ${ 12789 this.tooltipPositionElement.offsetLeft - ( 12790 this.tooltipPositionElement.closest('.snap') && 12791 this.tooltipPositionElement.closest('.snap').scrollLeft || 12792 0 12793 ) 12794 }px;` : '' 12795 }, 12796 getTooltipLabel() { 12797 return this.getSwatchConfig(this.activeTooltipItem.attribute, this.activeTooltipItem.item).label 12798 }, 12799 focusedLabel: false, 12800 focusLabel(optionId) { 12801 this.focusedLabel = optionId; 12802 }, 12803 blurLabel() { 12804 this.focusedLabel = false; 12805 }, 12806 showSwatches: false, 12807 initShowSwatchesIntersect() { 12808 if ('IntersectionObserver' in window && !window.scrollY) { 12809 let io = new IntersectionObserver( 12810 entries => { 12811 entries.map(entry => { 12812 if (entry.isIntersecting) { 12813 this.showSwatches = true; 12814 io.unobserve(this.$root); 12815 } 12816 }) 12817 } 12818 ); 12819 io.observe(this.$root); 12820 } else { 12821 this.showSwatches = true 12822 } 12823 } 12824 } 12825 } 12826</script>
vendor: 1 bytes, line 12826
12826
12827<script> 12828 'use strict'; 12829 12830 const grecaptchaV2LoadCallbacks = []; 12831 12832 function executeRecaptchaLoadCallbacks () { 12833 while (window.grecaptcha && grecaptchaV2LoadCallbacks.length > 0) { 12834 const callback = grecaptchaV2LoadCallbacks.pop(); 12835 typeof callback === 'string' ? window[callback]() : callback(); 12836 } 12837 } 12838 12839 (function() { 12840 const loadRecaptchaScript = (event) => { 12841 12842 if (window.grecaptcha || !event.target.form) { 12843 return; 12844 } 12845 12846 const url = 'https://www.google.com/recaptcha/api.js?onload=executeRecaptchaLoadCallbacks'; 12847 const siteKey = '6LfIe4EpAAAAALE75oNaaOgTw2G3VadtzHYrJItg'; 12848 const script = document.createElement('script'); 12849 script.type = 'text/javascript'; 12850 script.src = siteKey ? `${url}&render=${siteKey}` : `${url}&render=explicit`; 12851 script.async = true; 12852 document.head.appendChild(script); 12853 12854 script.addEventListener('load', () => { 12855 Array.from(document.querySelectorAll('button[data-recaptcha-btn]:disabled')).forEach(btn => btn.removeAttribute('disabled')); 12856 }); 12857 } 12858 12859 window.forceLoadRecaptchaScript = (form) => { 12860 loadRecaptchaScript({target: {form: form || 'dummy'}}); 12861 executeRecaptchaLoadCallbacks(); 12862 }; 12863 12864 document.body.addEventListener('input', loadRecaptchaScript, { once: true }); 12865 document.body.addEventListener('focus', loadRecaptchaScript, { once: true }); 12866 12867 }()); 12868 12869</script>
vendor: 1 bytes, line 12869
12869
12870<script> 12871(function() { 12872 'use strict'; 12873 12874 window.dataLayer = window.dataLayer || []; 12875 window.uetq = window.uetq || []; 12876 const dataLayerRef = window.dataLayer; 12877 12878 if (!dataLayerRef) { 12879 return; 12880 } 12881 12882 const nativeDataLayerPush = dataLayerRef.push.bind(dataLayerRef); 12883 12884 dataLayerRef.push = function() { 12885 const guardFailureReason = window.dataLayer !== dataLayerRef ? 'dataLayerReplaced' : (!Array.isArray(dataLayerRef) ? 'notArray' : (typeof nativeDataLayerPush !== 'function' ? 'noOrigPush' : null)); 12886 if (guardFailureReason) { 12887 return 0; 12888 } 12889 const filteredDataLayerArgs = []; 12890 for (const dataLayerArg of Array.from(arguments)) { 12891 const isValueOnlyPayload = dataLayerArg && typeof dataLayerArg === 'object' && !Array.isArray(dataLayerArg) && Object.keys(dataLayerArg).length === 1 && Object.hasOwn(dataLayerArg, 'value'); 12892 if (isValueOnlyPayload) { 12893 continue; 12894 } 12895 filteredDataLayerArgs.push(dataLayerArg); 12896 } 12897 if (filteredDataLayerArgs.length === 0) { 12898 return 0; 12899 } 12900 for (const dataLayerEntry of filteredDataLayerArgs) { 12901 if (dataLayerEntry && typeof dataLayerEntry === 'object' && !Array.isArray(dataLayerEntry)) { 12902 if (dataLayerEntry.ecommerce && typeof dataLayerEntry.ecommerce === 'object' && !Array.isArray(dataLayerEntry.ecommerce)) { 12903 if (typeof dataLayerEntry.ecommerce.items === 'undefined') { 12904 dataLayerEntry.ecommerce.items = []; 12905 } 12906 } 12907 } 12908 } 12909 return nativeDataLayerPush.apply(dataLayerRef, filteredDataLayerArgs); 12910 }; 12911 dataLayerRef.push({ 12912 'gtm.start': new Date().getTime(), 12913 event: 'gtm.js' 12914 }); 12915 12916 const firstScript = document.getElementsByTagName('script')[0]; 12917 const gtmScript = document.createElement('script'); 12918 gtmScript.async = true; 12919 gtmScript.src = 'https://www.googletagmanager.com/gtm.js?id=GTM\u002DP5R4DP'; 12920 firstScript.parentNode.insertBefore(gtmScript, firstScript); 12921})(); 12922</script>
12922 12923<noscript> 12924 <iframe src="https://www.googletagmanager.com/ns.html?id=GTM-P5R4DP" 12925 height="0" 12926 width="0" 12927 style="display:none;visibility:hidden" 12928 title=""></iframe> 12929</noscript>
12930<script> 12931(function() { 12932 'use strict'; 12933 12934 window.SteiffTracking = window.SteiffTracking || {}; 12935 12936 /** Must match the service name in Usercentrics dashboard (e.g. "Google Tag Manager") */ 12937 const GTM_CONSENT_SERVICE_NAME = 'Google Tag Manager'; 12938 const UC_UI_INITIALIZED = 'UC_UI_INITIALIZED'; 12939 const UC_UI_CMP_EVENT = 'UC_UI_CMP_EVENT'; 12940 /** Consent-changing actions only — excludes CMP_SHOWN and link clicks */ 12941 const UC_CONSENT_CHANGE_TYPES = new Set(['ACCEPT_ALL', 'DENY_ALL', 'SAVE']); 12942 const UC_CHECK_MS = 100; 12943 const UC_MAX_ATTEMPTS = 100; 12944 const consentQueue = []; 12945 let consentFlushPollId = null; 12946 let cachedConsentStatuses = null; 12947 12948 const getDataLayer = () => { 12949 if (typeof window.dataLayer === 'undefined') { 12950 window.dataLayer = []; 12951 } 12952 if (!Array.isArray(window.dataLayer)) { 12953 window.dataLayer = []; 12954 } 12955 return window.dataLayer; 12956 }; 12957 12958 const isGtagConsentUpdate = (entry) => 12959 entry 12960 && typeof entry === 'object' 12961 && entry[0] === 'consent' 12962 && entry[1] === 'update'; 12963 12964 const isConsentStatusEvent = (entry) => 12965 entry 12966 && entry.event === 'consent_status' 12967 && ['explicit', 'implicit'].includes(String(entry.type).toLowerCase()); 12968 12969 const isConsentGrantedValue = (value) => 12970 value === true || value === 'granted' || value === 'GRANTED'; 12971 12972 const getLatestGtagConsentUpdate = () => { 12973 const dataLayer = getDataLayer(); 12974 for (let i = dataLayer.length - 1; i >= 0; i -= 1) { 12975 if (isGtagConsentUpdate(dataLayer[i])) { 12976 return dataLayer[i]; 12977 } 12978 } 12979 return null; 12980 }; 12981 12982 const getLatestConsentStatus = () => { 12983 const dataLayer = getDataLayer(); 12984 for (let i = dataLayer.length - 1; i >= 0; i -= 1) { 12985 if (isConsentStatusEvent(dataLayer[i])) { 12986 return dataLayer[i]; 12987 } 12988 } 12989 return null; 12990 }; 12991 12992 const gtagUpdateOccurred = () => getLatestGtagConsentUpdate() !== null; 12993 12994 const consentStatusInDataLayer = () => getLatestConsentStatus() !== null; 12995 12996 const pushUsercentricsServices = async () => { 12997 if (!window.__ucCmp) { 12998 return; 12999 } 13000 13001 try { 13002 const details = await window.__ucCmp.getConsentDetails(); 13003 13004 // TODO: Remove [UC-V3] logging after verifying on stage 13005 console.log('[UC-V3] getConsentDetails() response:', details); 13006 13007 if (!details?.services) { 13008 console.warn('[UC-V3] getConsentDetails() returned no services'); 13009 return; 13010 } 13011 13012 const consentsStatus = {}; 13013 Object.values(details.services).forEach((service) => { 13014 consentsStatus[service.name] = service?.consent?.given; 13015 }); 13016 cachedConsentStatuses = consentsStatus; 13017 13018 console.log('[UC-V3] Mapped consent statuses:', consentsStatus); 13019 13020 getDataLayer().push({ 13021 event: 'consent_status', 13022 type: 'implicit', 13023 ...consentsStatus, 13024 }); 13025 } catch (e) { 13026 console.warn('[UC-V3] getConsentDetails() failed:', e); 13027 } 13028 }; 13029 13030 const handleUsercentricsConsentChange = () => { 13031 pushUsercentricsServices().then(() => { 13032 window.SteiffTracking.injectGtmPreconnectIfConsented(); 13033 flushConsentQueue(); 13034 }); 13035 }; 13036 13037 /** 13038 * UC fires consent_status and gtag consent update even on deny. 13039 * Require analytics consent to be granted before pushing tracking events. 13040 */ 13041 const hasAnalyticsTrackingConsent = () => { 13042 const consentSettings = getLatestGtagConsentUpdate()?.[2]; 13043 if (consentSettings && isConsentGrantedValue(consentSettings.analytics_storage)) { 13044 return true; 13045 } 13046 13047 const consentStatus = getLatestConsentStatus(); 13048 if (consentStatus && isConsentGrantedValue(consentStatus['Google Analytics'])) { 13049 return true; 13050 } 13051 13052 if (cachedConsentStatuses && isConsentGrantedValue(cachedConsentStatuses['Google Analytics'])) { 13053 return true; 13054 } 13055 13056 return false;
13057 }; 13058 13059 const isConsentReady = () => 13060 consentStatusInDataLayer() 13061 && gtagUpdateOccurred() 13062 && hasAnalyticsTrackingConsent(); 13063 13064 const flushConsentQueue = () => { 13065 if (!isConsentReady()) { 13066 return; 13067 } 13068 while (consentQueue.length > 0) { 13069 const callback = consentQueue.shift(); 13070 try { 13071 callback(); 13072 } catch (err) { 13073 console.warn('[Steiff GTM] consent queue callback failed', err); 13074 } 13075 } 13076 if (consentQueue.length === 0 && consentFlushPollId !== null) { 13077 window.clearInterval(consentFlushPollId); 13078 consentFlushPollId = null; 13079 } 13080 }; 13081 13082 const scheduleConsentFlushPoll = () => { 13083 if (consentFlushPollId !== null || consentQueue.length === 0) { 13084 return; 13085 } 13086 let attempts = 0; 13087 consentFlushPollId = window.setInterval(() => { 13088 attempts += 1; 13089 flushConsentQueue(); 13090 if (consentQueue.length === 0 || attempts >= UC_MAX_ATTEMPTS) { 13091 window.clearInterval(consentFlushPollId); 13092 consentFlushPollId = null; 13093 } 13094 }, UC_CHECK_MS); 13095 }; 13096 13097 const installDataLayerConsentFlushHook = () => { 13098 const dataLayer = getDataLayer(); 13099 if (dataLayer.__steiffConsentFlushHook) { 13100 return; 13101 } 13102 const nativePush = dataLayer.push.bind(dataLayer); 13103 dataLayer.push = function(...args) { 13104 const result = nativePush.apply(this, args); 13105 flushConsentQueue(); 13106 return result; 13107 }; 13108 dataLayer.__steiffConsentFlushHook = true; 13109 }; 13110 13111 installDataLayerConsentFlushHook(); 13112 13113 /** 13114 * Run callback once UC explicit consent, gtag update and analytics grant are ready. 13115 * @param {Function} callback 13116 */ 13117 window.SteiffTracking.runWhenConsented = (callback) => { 13118 if (typeof callback !== 'function') { 13119 return; 13120 } 13121 if (isConsentReady()) { 13122 callback(); 13123 return; 13124 } 13125 consentQueue.push(callback); 13126 scheduleConsentFlushPoll(); 13127 }; 13128 13129 /** 13130 * Push tracking payload after consent is ready (alias for gated trackEvent). 13131 * @param {Object} data 13132 */ 13133 window.SteiffTracking.pushWhenReady = (data) => { 13134 window.SteiffTracking.runWhenConsented(() => { 13135 window.SteiffTracking.rawPushEvent(data); 13136 }); 13137 }; 13138 13139 /** 13140 * Inject GTM preconnect into head only when user has consented to GTM service. 13141 * Called on initial load and when consent changes (ACCEPT_ALL / DENY_ALL / SAVE). 13142 */ 13143 window.SteiffTracking.injectGtmPreconnectIfConsented = function() { 13144 if (!document.head) { 13145 return; 13146 } 13147 13148 try { 13149 const consentStatus = getLatestConsentStatus() || {}; 13150 const statuses = cachedConsentStatuses || consentStatus; 13151 const gtmConsent = statuses[GTM_CONSENT_SERVICE_NAME]; 13152 const hasConsent = isConsentGrantedValue(gtmConsent); 13153 13154 if (!hasConsent) { 13155 return; 13156 } 13157 13158 const href = 'https://www.googletagmanager.com'; 13159 if (document.querySelector('link[rel="preconnect"][href="' + href + '"]')) { 13160 return; 13161 } 13162 13163 const link = document.createElement('link'); 13164 link.rel = 'preconnect'; 13165 link.href = href; 13166 document.head.appendChild(link); 13167 } catch (err) { 13168 console.warn('[Steiff GTM] injectGtmPreconnectIfConsented failed:', err); 13169 } 13170 }; 13171 13172 /** 13173 * Reset GTM dataLayer and push setOldUrl event 13174 * @param {string} [customReferrer] - Override referrer URL 13175 */ 13176 window.SteiffTracking.resetDataLayer = function(customReferrer) { 13177 const referrer = customReferrer || document.referrer || window.location.href; 13178 13179 if (window.google_tag_manager) { 13180 for (const gtmId of Object.keys(window.google_tag_manager)) { 13181 const gtm = window.google_tag_manager[gtmId]; 13182 if (gtm?.dataLayer) { 13183 try { 13184 gtm.dataLayer.reset(); 13185 break; 13186 } catch (err) { 13187 console.warn('GTM dataLayer reset failed:', err); 13188 } 13189 } 13190 } 13191 } 13192 13193 window.dataLayer = window.dataLayer || []; 13194 window.dataLayer.push({ 13195 event: 'setOldUrl', 13196 oldUrl: referrer 13197 }); 13198 13199 if (!window.TRACKING_READY) { 13200 window.TRACKING_READY = true; 13201 } 13202 }; 13203 13204 window.addEventListener(UC_UI_INITIALIZED, () => { 13205 handleUsercentricsConsentChange(); 13206 scheduleConsentFlushPoll(); 13207 }, true); 13208 13209 window.addEventListener(UC_UI_CMP_EVENT, (event) => { 13210 if (!UC_CONSENT_CHANGE_TYPES.has(event.detail?.type)) { 13211 return; 13212 } 13213 handleUsercentricsConsentChange(); 13214 scheduleConsentFlushPoll(); 13215 }, true); 13216 13217 window.SteiffTracking.getServiceConsent = (serviceName) => { 13218 const fromDataLayer = getLatestConsentStatus(); 13219 if (fromDataLayer && fromDataLayer[serviceName] !== undefined) { 13220 return fromDataLayer[serviceName]; 13221 } 13222 if (cachedConsentStatuses && cachedConsentStatuses[serviceName] !== undefined) { 13223 return cachedConsentStatuses[serviceName]; 13224 } 13225 return undefined; 13226 }; 13227 13228 /** 13229 * Wait for Usercentrics CMP V3 API to be loaded 13230 * @returns {Promise<object|null>} 13231 */ 13232 window.SteiffTracking.waitForUsercentricsLoaded = function() { 13233 const { promise, resolve } = Promise.withResolvers(); 13234 13235 if (window.__ucCmp) { 13236 resolve(window.__ucCmp); 13237 return promise; 13238 } 13239 13240 const onReady = () => { 13241 window.removeEventListener(UC_UI_INITIALIZED, onReady); 13242 resolve(window.__ucCmp || null); 13243 }; 13244 window.addEventListener(UC_UI_INITIALIZED, onReady); 13245 13246 let attempts = 0; 13247 const checkInterval = setInterval(() => { 13248 attempts += 1; 13249 if (window.__ucCmp) { 13250 clearInterval(checkInterval); 13251 window.removeEventListener(UC_UI_INITIALIZED, onReady); 13252 resolve(window.__ucCmp); 13253 } else if (attempts >= UC_MAX_ATTEMPTS) { 13254 clearInterval(checkInterval); 13255 window.removeEventListener(UC_UI_INITIALIZED, onReady); 13256 resolve(null); 13257 } 13258 }, UC_CHECK_MS); 13259 return promise; 13260 }; 13261 13262 /** 13263 * Push event to dataLayer without consent gate (internal use). 13264 * @param {Object} data - Event data object 13265 */ 13266 window.SteiffTracking.rawPushEvent = (data) => { 13267 if (!data || typeof window === 'undefined') { 13268 return; 13269 } 13270 try { 13271 getDataLayer().push(data); 13272 } catch (e) { 13273 console.warn('[Steiff GTM] rawPushEvent failed', e); 13274 } 13275 }; 13276 13277 /** 13278 * Push event to dataLayer after UC explicit consent and gtag update are ready. 13279 * @param {Object} data - Event data object 13280 */ 13281 window.SteiffTracking.trackEvent = (data) => { 13282 if (!data) { 13283 return; 13284 } 13285 window.SteiffTracking.runWhenConsented(() => { 13286 window.SteiffTracking.rawPushEvent(data); 13287 }); 13288 }; 13289 13290 /** 13291 * Format price to 2 decimal places 13292 * @param {number|string} price 13293 * @returns {string} 13294 */ 13295 window.SteiffTracking.roundPrice = function(price) { 13296 if (price === null || price === undefined || price === '') { 13297 return '0.00'; 13298 } 13299 return parseFloat(price).toFixed(2); 13300 }; 13301 13302 window.SteiffTracking.waitForUsercentricsLoaded().then((ucCmp) => { 13303 if (ucCmp) { 13304 handleUsercentricsConsentChange(); 13305 } 13306 }); 13307
13308 window.SteiffTracking.resolveCartItemQuantity = function(cartItem) { 13309 if (!cartItem) { 13310 return null; 13311 } 13312 13313 const itemId = cartItem.item_id ?? cartItem.quote_item_id; 13314 if (itemId !== undefined && itemId !== null && itemId !== '') { 13315 const qtyInput = document.getElementById('cart-' + itemId + '-qty'); 13316 if (qtyInput) { 13317 const fromInput = parseInt(String(qtyInput.value), 10); 13318 if (!Number.isNaN(fromInput) && fromInput > 0) { 13319 return fromInput; 13320 } 13321 } 13322 } 13323 13324 if (cartItem.qty !== undefined && cartItem.qty !== null && cartItem.qty !== '') { 13325 const fromCartItem = parseInt(String(cartItem.qty), 10); 13326 if (!Number.isNaN(fromCartItem) && fromCartItem > 0) { 13327 return fromCartItem; 13328 } 13329 } 13330 13331 if (cartItem.quantity !== undefined && cartItem.quantity !== null && cartItem.quantity !== '') { 13332 const fromProduct = parseInt(String(cartItem.quantity), 10); 13333 if (!Number.isNaN(fromProduct) && fromProduct > 0) { 13334 return fromProduct; 13335 } 13336 } 13337 13338 return null; 13339 }; 13340 13341 window.SteiffTracking.mapToGtm4Products = function(items) { 13342 return (items || []).map(function(item) { 13343 return Alpine.raw(item['ga4-data']) 13344 }); 13345 } 13346 13347 window.SteiffTracking.mapToUAProducts = function(items) { 13348 return (items || []).reduce(function(mapped, item) { 13349 if (!item) { 13350 return mapped; 13351 } 13352 13353 const product = item['ua-data'] ? Alpine.raw(item['ua-data']) : item; 13354 if (!product || typeof product !== 'object') { 13355 return mapped; 13356 } 13357 13358 const quantity = window.SteiffTracking.resolveCartItemQuantity(item); 13359 if (quantity !== null) { 13360 mapped.push(Object.assign({}, product, { quantity: quantity })); 13361 return mapped; 13362 } 13363 13364 mapped.push(product); 13365 return mapped; 13366 }, []); 13367 } 13368})(); 13369</script>
vendor: 1 bytes, line 13369
13369
13370<script> 13371(function() { 13372 'use strict'; 13373 13374 if (typeof window.SteiffTracking === 'undefined') return; 13375 const payload = {"event":"initialDL","virtualUrl":"\/","virtualUrlPageTitle":"Onlineshop","canonicalUrl":"https:\/\/www.steiff.com\/en","pageType":"home","pageCategoryMain":"","pageCategoryFull":"","pageLanguage":"en_GB","pageCountry":"FR","loginStatus":""}; 13376 payload.virtualUrl = window.location.pathname + window.location.search; 13377 payload.virtualUrlPageTitle = document.title || payload.virtualUrlPageTitle; 13378 13379 window.SteiffTracking.resetDataLayer(document.referrer || undefined); 13380 window.SteiffTracking.trackEvent(payload); 13381})(); 13382</script>
vendor: 1 bytes, line 13382
13382
13383<script> 13384(function() { 13385 'use strict'; 13386 13387 if (typeof window.SteiffTracking === 'undefined') return; 13388 13389 window.SteiffGTMWishlistProducts = Object.assign(window.SteiffGTMWishlistProducts || {}, []); 13390 const currencyCode = 'EUR'; 13391 window.SteiffGTMCurrencyCode = currencyCode; 13392 13393 function fireWishlistTracking(productId, productDataFromEvent) { 13394 const productIdStr = String(productId); 13395 const productData = productDataFromEvent ?? window.SteiffGTMWishlistProducts[productIdStr] ?? window.SteiffGTMWishlistProducts[productId]; 13396 if (!productData || typeof window.SteiffTracking === 'undefined') return; 13397 13398 const eventLabel = productData.id ?? productData.item_id ?? productIdStr; 13399 if (eventLabel) { 13400 try { 13401 window.SteiffTracking.trackEvent({ 13402 event: 'analytics event', 13403 eventCategory: 'ecommerce', 13404 eventAction: 'add to wishlist', 13405 eventLabel: String(eventLabel) 13406 }); 13407 } catch (err) { 13408 console.warn('[GTM Wishlist] analytics event push failed', err); 13409 } 13410 } 13411 13412 const ga4Item = buildGA4WishlistItem(productData); 13413 const priceVal = productData.price ?? productData.price_range?.minimum_price?.final_price?.value; 13414 const value = Number(parseFloat(priceVal)) || 0; 13415 const ecommercePayload = { 13416 value: value, 13417 currency: String(currencyCode || 'EUR'), 13418 items: [ga4Item] 13419 }; 13420 try { 13421 window.SteiffTracking.trackEvent({ 13422 event: 'add_to_wishlist', 13423 ecommerce: ecommercePayload 13424 }); 13425 } catch (err) { 13426 console.warn('[GTM Wishlist] trackEvent failed', err); 13427 } 13428 } 13429 13430 function buildGA4WishlistItem(productData) { 13431 const priceVal = productData.price ?? productData.price_range?.minimum_price?.final_price?.value; 13432 const numPrice = Number(parseFloat(priceVal)) || 0; 13433 const itemId = (productData.item_id ?? productData.sku ?? productData.id ?? '').toString(); 13434 const itemName = (productData.item_name ?? productData.name ?? '').toString(); 13435 const itemBrand = (productData.brand ?? 'Steiff').toString(); 13436 return { 13437 item_id: itemId || String(productData.id ?? ''), 13438 item_name: itemName || 'Product', 13439 item_brand: itemBrand, 13440 price: numPrice, 13441 quantity: Number(productData.quantity) || 1 13442 }; 13443 } 13444 13445 window.addEventListener('wishlist-product-added', function(event) { 13446 const productId = event.detail?.productId; 13447 const productDataFromEvent = event.detail?.productData; 13448 if (productId) { 13449 fireWishlistTracking(productId, productDataFromEvent); 13450 } 13451 }); 13452})(); 13453</script>
vendor: 1 bytes, line 13453
13453
13454<script> 13455(function() { 13456 'use strict'; 13457 13458 window.SteiffGTMAddToCartProducts = Object.assign(window.SteiffGTMAddToCartProducts || {}, []); 13459 const gtmCurrencyCode = 'EUR'; 13460 13461 /** 13462 * @param {HTMLElement|null|undefined} el – Add-to-cart button (or any element inside the form) 13463 */ 13464 window.steiffTrackAddToCart = function(el) { 13465 if (!el || typeof window.SteiffTracking === 'undefined') { 13466 return; 13467 } 13468 const formId = el.getAttribute && el.getAttribute('form'); 13469 const form = formId 13470 ? document.getElementById(formId) 13471 : el.closest && el.closest('form'); 13472 if (!form || form.tagName !== 'FORM') { 13473 return; 13474 } 13475 if (form.id !== 'product_addtocart_form' && !form.classList.contains('product_addtocart_form')) { 13476 return; 13477 } 13478 13479 const productIdInput = form.querySelector('input[name="product"]'); 13480 // PDP qty uses form="product_addtocart_form" outside the <form> — form.elements includes those controls. 13481 const qtyControl = form.elements?.qty ?? form.querySelector('input[name="qty"]'); 13482 const productId = productIdInput ? productIdInput.value : null; 13483 let addToCartQty = qtyControl ? parseInt(String(qtyControl.value), 10) : 1; 13484 if (!productId) { 13485 return; 13486 } 13487 if (Number.isNaN(addToCartQty)) { 13488 addToCartQty = 1; 13489 } 13490 13491 const gtmProductData = window.SteiffGTMAddToCartProducts[productId] 13492 ?? window.SteiffGTMAddToCartProducts[String(productId)]; 13493 if (!gtmProductData) { 13494 return; 13495 } 13496 window.SteiffTracking.trackEvent({ 13497 event: 'ee.addToCart', 13498 ecommerce: { 13499 currencyCode: gtmCurrencyCode, 13500 add: { 13501 products: [{ ...gtmProductData, quantity: addToCartQty }] 13502 } 13503 } 13504 }); 13505 }; 13506})(); 13507</script>
vendor: 1 bytes, line 13507
13507
13508<script> 13509(function() { 13510 'use strict'; 13511 13512 13513 if (typeof window.SteiffTracking === 'undefined') return; 13514 13515 /** 13516 * Logout tracking (e.g. onclick signout link). 13517 */ 13518 window.steiffTrackLogout = function steiffTrackLogout() { 13519 window.SteiffTracking.trackEvent({ 13520 event: 'analytics event', 13521 eventCategory: 'login', 13522 eventAction: 'logout', 13523 eventLabel: window.location.pathname || '', 13524 transport: 'beacon' 13525 }); 13526 }; 13527 13528 /** 13529 * Login attempt (e.g. before submit / AJAX login). 13530 */ 13531 window.steiffTrackLogin = function steiffTrackLogin() { 13532 window.SteiffTracking.trackEvent({ 13533 event: 'analytics event', 13534 eventCategory: 'login', 13535 eventAction: 'login', 13536 transport: 'beacon' 13537 }); 13538 }; 13539 13540 /** 13541 * Registration (e.g. start of submitForm on create account page). 13542 */ 13543 window.steiffTrackRegistration = function steiffTrackRegistration() { 13544 window.SteiffTracking.trackEvent({ 13545 event: 'analytics event', 13546 eventCategory: 'registration', 13547 eventAction: 'registration', 13548 transport: 'beacon' 13549 }); 13550 }; 13551 13552 /** 13553 * Color choice (onclick / @click on swatch link, aria-label as label). 13554 */ 13555 window.steiffTrackColorChoice = function steiffTrackColorChoice(ariaLabel) { 13556 window.SteiffTracking.trackEvent({ 13557 event: 'analytics event', 13558 eventCategory: 'ecommerce', 13559 eventAction: 'color choice', 13560 eventLabel: ariaLabel || '', 13561 transport: 'beacon' 13562 }); 13563 }; 13564})(); 13565</script>
vendor: 1 bytes, line 13565
13565
13566<script> 13567(function() { 13568 'use strict'; 13569 13570 if (typeof window.SteiffTracking === 'undefined') return; 13571 13572 window.addEventListener('steiff-gtm-remove-from-sidebar-cart', function(event) { 13573 const detail = event.detail || {}; 13574 const items = detail.items; 13575 if (!items || !items.length) return; 13576 const removed = window.SteiffTracking.mapToUAProducts(items); 13577 if (removed.length === 0) return; 13578 13579 window.SteiffTracking.trackEvent({ 13580 event: 'ee.removeFromCart', 13581 ecommerce: { 13582 currencyCode: 'EUR', 13583 remove: { products: removed } 13584 } 13585 }); 13586 }); 13587})(); 13588</script>
vendor: 1 bytes, line 13588
13588
13589<script> 13590 (function () { 13591 const modals = []; 13592 const excludedFromFocusTrapping = new Set(); 13593 13594 function trapFocusInNextModalWithOverlay() { 13595 for (let idx = modals.length -1; idx >= 0; idx--) { 13596 const nextOnStack = modals[idx]; 13597 const nextDialogElement = nextOnStack.instance.$refs[nextOnStack.name]; 13598 if (! isOverlayDisabled(nextDialogElement)) { 13599 hyva.trapFocus(nextDialogElement); 13600 break; 13601 } 13602 } 13603 } 13604 13605 function focusables(dialogElement) { 13606 const selector = 'button, [href], input, textarea, select, details, [tabindex]:not([tabindex="-1"])'; 13607 return Array.from(dialogElement.querySelectorAll(selector)) 13608 .filter(el => !el.hasAttribute('disabled')); 13609 } 13610 13611 function firstVisible(elements) { 13612 const a = Array.from(elements); 13613 for (let i = 0; i < a.length; i++) { 13614 if (a[i].offsetWidth || a[i].offsetHeight || a[i].getClientRects().length) return a[i]; 13615 } 13616 return null; 13617 } 13618 13619 function isInViewport(element) { 13620 const rect = element && element.getBoundingClientRect(); 13621 return rect && 13622 rect.top >= 0 && 13623 rect.left >= 0 && 13624 rect.right <= window.innerWidth && 13625 rect.bottom <= window.innerHeight; 13626 } 13627 13628 function setFocusAfterTransition(dialogElement, duration) { 13629 const nested = Array.from(dialogElement.querySelectorAll('[role="dialog"]')); 13630 const candidates = Array.from(dialogElement.querySelectorAll('[x-focus-first]')); 13631 next: for (let candidate of candidates) { 13632 for (let child of nested) { 13633 if (child.contains(candidate)) continue next; 13634 } 13635 setTimeout(() => candidate.focus(), 50); 13636 break; 13637 } 13638 window.setTimeout(() => { 13639 const focusElement = firstVisible(dialogElement.querySelectorAll('[x-focus-first]')) || 13640 focusables(dialogElement)[0] || 13641 null; 13642 focusElement && isInViewport(focusElement) && focusElement.focus(); 13643 }, Math.max(1, duration)); 13644 } 13645 13646 function determineTrigger($refs, dialog, trigger) { 13647 if (typeof trigger === 'undefined' && typeof dialog === 'object' && dialog.target instanceof HTMLElement) { 13648 return dialog.target; 13649 } 13650 if (typeof dialog === 'string' && typeof trigger === 'object' && trigger.target instanceof HTMLElement) { 13651 return trigger.target; 13652 } 13653 if (typeof trigger === 'string') { 13654 try { 13655 return $refs[trigger] || document.querySelector(trigger) 13656 } catch (e) {} 13657 } 13658 if (trigger instanceof Element) { 13659 return trigger; 13660 } 13661 13662 return null; 13663 } 13664 13665 function isOverlayDisabled(dialog) { 13666 return dialog && dialog.hasAttribute('x-no-overlay') 13667 } 13668 13669 function areRemainingModalsWithoutOverlay(modals) 13670 { 13671 const overflowDisabled = modals.map(modal => modal.instance.$refs[modal.name]).filter(isOverlayDisabled); 13672 13673 return overflowDisabled.length === modals.length; 13674 } 13675 13676 window.hyva.modal = function(options = {}) { 13677 if (this.$el && this.$el.dataset && this.$el.dataset.options) { 13678 try { 13679 options = Object.assign(options, JSON.parse(this.$el.dataset.options || '{}')); 13680 } catch (e) { 13681 throw new Error('Cannot read the dialog options from the data-options attribute: not valid JSON'); 13682 } 13683 } 13684 13685 const config = Object.assign({ 13686 dialog: 'dialog', duration: 300, transitionEnter: 'transition ease-out duration-300', 13687 transitionEnterStart: 'opacity-0', 13688 transitionEnterEnd: 'opacity-100', 13689 transitionLeave: 'transition ease-in duration-300', 13690 transitionLeaveStart: 'opacity-100', 13691 transitionLeaveEnd: 'opacity-0', 13692 }, options); 13693 let lastHide = 0; 13694 13695 return { 13696 opened: {}, 13697 show(dialog, trigger) { 13698 const focusTargetAfterHide = determineTrigger(this.$refs, dialog, trigger); 13699 const name = typeof dialog === 'string' ? dialog : config.dialog; 13700 const dialogElement = this.$refs[name]; 13701 if (! dialogElement) { 13702 return; 13703 } 13704 const useOverlay = ! dialogElement.hasAttribute('x-no-overlay'); 13705 13706 dialogElement.scrollTop = 0; 13707 13708 if (this.opened[name]) { 13709 return; 13710 } 13711 13712 if (focusTargetAfterHide) { 13713 focusTargetAfterHide.setAttribute('aria-expanded', 'true'); 13714 } 13715 13716 this.opened[name] = true; 13717 useOverlay && this.$nextTick(() => hyva.trapFocus(dialogElement)); 13718 setFocusAfterTransition(dialogElement, config.duration); 13719 13720 const frame = {name, instance: this, focusTarget: focu
13720sTargetAfterHide, time: Date.now()}; 13721 13722 modals.push(frame); 13723 if (useOverlay) { 13724 document.body.classList.add('overflow-hidden'); 13725 } 13726 return new Promise(resolve => frame.resolve = resolve); 13727 }, 13728 cancel() { 13729 this.hide(false); 13730 }, 13731 ok() { 13732 this.hide(true); 13733 }, 13734 hide(value) { 13735 if (Date.now() - lastHide < config.duration) { 13736 return; 13737 } 13738 lastHide = Date.now(); 13739 13740 const modal = modals.pop() || {}; 13741 if (! modal.instance) { 13742 return; 13743 } 13744 13745 const name = modal.name; 13746 this.opened[name] = false; 13747 hyva.releaseFocus(modal.instance.$refs[modal.name]) 13748 trapFocusInNextModalWithOverlay(); 13749 13750 const nextFocusAfterHide = modal.focusTarget; 13751 nextFocusAfterHide && setTimeout(() => { 13752 nextFocusAfterHide.setAttribute('aria-expanded', 'false'); 13753 nextFocusAfterHide.focus() 13754 }, config.duration); 13755 13756 if (modals.length === 0 || areRemainingModalsWithoutOverlay(modals)) { 13757 document.body.classList.remove('overflow-hidden'); 13758 } 13759 13760 modal.resolve(value); 13761 }, 13762 overlay(dialog) { 13763 dialog = this.$el.dataset.dialogRefName || dialog; 13764 const name = typeof dialog === 'string' ? dialog : config.dialog; 13765 return { 13766 ['x-show']() { 13767 return this.opened[name] 13768 }, 13769 ['x-transition:enter']: config.transitionEnter, 13770 ['x-transition:enter-start']: config.transitionEnterStart, 13771 ['x-transition:enter-end']: config.transitionEnterEnd, 13772 ['x-transition:leave']: config.transitionLeave, 13773 ['x-transition:leave-start']: config.transitionLeaveStart, 13774 ['x-transition:leave-end']: config.transitionLeaveEnd, 13775 ['@hyva-modal-show.window'](event) { 13776 event.detail && event.detail.dialog === name && this.show(name, event.detail.focusAfterHide) 13777 } 13778 }; 13779 }, 13780 showDialogOnInit() { 13781 const parent = this.$el.closest('[data-dialog-ref-name]'); 13782 if (parent && parent.dataset.dialogRefName) { 13783 this.$dispatch('hyva-modal-show', {dialog: parent.dataset.dialogRefName}) 13784 } 13785 } 13786 }; 13787 } 13788 13789 window.hyva.modal.peek = () => modals.length > 0 && modals[modals.length -1] 13790 13791 window.hyva.modal.pop = function () { 13792 if (modals.length > 0) { 13793 const modal = modals[modals.length -1]; 13794 modal.instance.hide(); 13795 } 13796 } 13797 13798 window.hyva.modal.excludeSelectorsFromFocusTrap = function (selectors) { 13799 typeof selectors === 'string' || selectors instanceof String 13800 ? excludedFromFocusTrapping.add(selectors) 13801 : selectors.map(selector => excludedFromFocusTrapping.add(selector)); 13802 } 13803 13804 window.hyva.modal.eventListeners = { 13805 keydown: event => { 13806 if (event.key === 'Escape') { 13807 window.hyva.modal.pop(); 13808 } 13809 }, 13810 click: event => { 13811 if (modals.length > 0) { 13812 const modal = modals[modals.length -1]; 13813 const dialog = modal.instance.$refs[modal.name]; 13814 if (modal.time + 50 < Date.now() && // if last click processing is more than 50ms ago 13815 ! isOverlayDisabled(dialog) && // if dialog has overlay 13816 ! dialog.contains(event.target)) { // if click is outside of dialog 13817 modal.instance.hide(); 13818 } 13819 } 13820 } 13821 }; 13822 13823 document.addEventListener('keydown', window.hyva.modal.eventListeners.keydown); 13824 13825 document.addEventListener('click', window.hyva.modal.eventListeners.click); 13826 })(); 13827 window.addEventListener('alpine:init', () => { 13828 Alpine.data('hyvaModal', window.hyva.modal); 13829 }, {once: true}); 13830</script>
vendor: 1 bytes, line 13830
13830
13831<script> 13832 function initMessageModal() { 13833 return { 13834 messages: [], 13835 isVisible: false, 13836 timeouts: {}, 13837 pauseData: {}, 13838 hasMessages() { 13839 return this.messages && this.messages.length > 0; 13840 }, 13841 addMessages(newMessages) { 13842 if (!newMessages || newMessages.length === 0) { 13843 return; 13844 } 13845 13846 const instance = this; 13847 const now = Date.now(); 13848 newMessages.forEach((messageObj) => { 13849 // Check if this message already exists to prevent duplicates 13850 const messageText = messageObj.text || messageObj.message || ''; 13851 const existingMessage = instance.messages.find(m => m.text === messageText); 13852 13853 if (existingMessage) { 13854 return; 13855 } 13856 13857 const messageId = 'msg_' + now + '_' + Math.random(); 13858 const messageWithId = { 13859 ...messageObj, 13860 _id: messageId, 13861 show: true, 13862 isPaused: false 13863 }; 13864 13865 instance.messages.push(messageWithId); 13866 13867 instance.pauseData[messageId] = { 13868 startTime: Date.now(), 13869 remaining: 8000 13870 }; 13871 instance.timeouts[messageId] = setTimeout(() => { 13872 instance.removeMessageById(messageId); 13873 }, 8000); 13874 }); 13875 }, 13876 removeMessage(index) { 13877 // Remove by index 13878 if (index >= 0 && index < this.messages.length) { 13879 this.messages = this.messages.filter((_, i) => i !== index); 13880 } 13881 }, 13882 pauseTimeout(messageId) { 13883 if (this.timeouts[messageId] && !this.pauseData[messageId].isPaused) { 13884 const elapsed = Date.now() - this.pauseData[messageId].startTime; 13885 this.pauseData[messageId].remaining = this.pauseData[messageId].remaining - elapsed; 13886 13887 clearTimeout(this.timeouts[messageId]); 13888 delete this.timeouts[messageId]; 13889 this.pauseData[messageId].isPaused = true; 13890 13891 const message = this.messages.find(m => m._id === messageId); 13892 if (message) { 13893 message.isPaused = true; 13894 } 13895 } 13896 }, 13897 resumeTimeout(messageId) { 13898 if (!this.timeouts[messageId] && this.pauseData[messageId] && this.pauseData[messageId].isPaused) { 13899 this.pauseData[messageId].startTime = Date.now(); 13900 this.pauseData[messageId].isPaused = false; 13901 13902 this.timeouts[messageId] = setTimeout(() => { 13903 this.removeMessageById(messageId); 13904 }, this.pauseData[messageId].remaining); 13905 13906 const message = this.messages.find(m => m._id === messageId); 13907 if (message) { 13908 message.isPaused = false; 13909 } 13910 } 13911 }, 13912 togglePause(messageId) { 13913 const pauseData = this.pauseData[messageId]; 13914 if (!pauseData) { 13915 return; 13916 } 13917 13918 if (pauseData.isPaused) { 13919 this.resumeTimeout(messageId); 13920 } else { 13921 this.pauseTimeout(messageId); 13922 } 13923 }, 13924 removeMessageById(messageId) { 13925 if (this.timeouts[messageId]) { 13926 clearTimeout(this.timeouts[messageId]); 13927 delete this.timeouts[messageId]; 13928 } 13929 if (this.pauseData[messageId]) { 13930 delete this.pauseData[messageId]; 13931 } 13932 this.messages = this.messages.filter(m => m && m._id !== messageId); 13933 }, 13934 closeModal() {
13935 Object.keys(this.timeouts).forEach(timeoutId => { 13936 clearTimeout(this.timeouts[timeoutId]); 13937 }); 13938 this.timeouts = {}; 13939 this.pauseData = {}; 13940 this.messages = []; 13941 }, 13942 clearMessages() { 13943 Object.keys(this.timeouts).forEach(timeoutId => { 13944 clearTimeout(this.timeouts[timeoutId]); 13945 }); 13946 this.timeouts = {}; 13947 this.pauseData = {}; 13948 this.messages = []; 13949 }, 13950 getMessageTypeClass(type) { 13951 switch(type) { 13952 case 'error': 13953 return 'error'; 13954 case 'success': 13955 return 'success'; 13956 case 'warning': 13957 return 'warning'; 13958 case 'info': 13959 case 'notice': 13960 return 'info'; 13961 default: 13962 return ''; 13963 } 13964 }, 13965 init() { 13966 const messageModalShowListener = (event) => { 13967 const messages = event.detail.messages || []; 13968 this.addMessages(messages); 13969 }; 13970 13971 const messagesLoadedListener = (event) => { 13972 const messages = event.detail.messages || []; 13973 this.addMessages(messages); 13974 }; 13975 13976 const privateContentLoadedListener = (event) => { 13977 const data = event.detail && event.detail.data; 13978 if ( 13979 data?.messages?.messages?.length 13980 ) { 13981 this.addMessages(data.messages.messages); 13982 } 13983 }; 13984 13985 this._messageModalShowListener = messageModalShowListener; 13986 this._messagesLoadedListener = messagesLoadedListener; 13987 this._privateContentLoadedListener = privateContentLoadedListener; 13988 13989 window.addEventListener('message-modal-show', messageModalShowListener); 13990 window.addEventListener('messages-loaded', messagesLoadedListener); 13991 window.addEventListener('private-content-loaded', privateContentLoadedListener); 13992 13993 this.$el.addEventListener('alpine:destroying', () => { 13994 if (this._messageModalShowListener) { 13995 window.removeEventListener('message-modal-show', this._messageModalShowListener); 13996 } 13997 if (this._messagesLoadedListener) { 13998 window.removeEventListener('messages-loaded', this._messagesLoadedListener); 13999 } 14000 if (this._privateContentLoadedListener) { 14001 window.removeEventListener('private-content-loaded', this._privateContentLoadedListener); 14002 } 14003 Object.keys(this.timeouts).forEach(timeoutId => { 14004 clearTimeout(this.timeouts[timeoutId]); 14005 }); 14006 this.timeouts = {}; 14007 this.pauseData = {}; 14008 }); 14009 } 14010 } 14011 } 14012 14013 window.addEventListener('alpine:init', () => { 14014 if (!Alpine.$data.initMessageModal) { 14015 Alpine.data('initMessageModal', initMessageModal); 14016 } 14017 }, {once: true}); 14018</script>
14018 14019<div class="notifications fixed right-2 top-2 left-2 md:left-auto md:right-10 md:top-10 mb-4 z-50 pointer-events-none" 14020 x-data="initMessageModal()" 14021 x-cloak 14022> 14023 <template x-for="(message, index) in messages" :key="`${message.type}_${index}`"> 14024 <div x-data="{ show: true }" 14025 x-show="show" 14026 x-transition:enter="duration-300 ease-out" 14027 x-transition:enter-start="opacity-0 -translate-y-2" 14028 x-transition:enter-end="opacity-100 translate-y-0" 14029 x-transition:leave="duration-200 ease-in" 14030 x-transition:leave-start="opacity-100 translate-y-0" 14031 x-transition:leave-end="opacity-0 -translate-y-2" 14032 :role="message.type === 'error' ? 'alert' : 'status'" 14033 :aria-live="message.type === 'error' ? 'assertive' : 'polite'" 14034 aria-atomic="true" 14035 tabindex="-1" 14036 class="notification mt-7 text-white pointer-events-auto" 14037 :class="getMessageTypeClass(message.type)" 14038 data-testid="notificationMessage"> 14039 <div class="flex justify-between items-start p-5"> 14040 <div class="text-white" x-html="message.text"></div> 14041 <button type="button" class="bg-transparent hover:bg-transparent border-none cursor-pointer font-normal text-white" 14042 data-testid="notificationAction1" 14043 @click.stop="show = false; $nextTick(() => removeMessageById(message._id))" 14044 @keydown.escape.stop="show = false; $nextTick(() => removeMessageById(message._id))" 14045 aria-label="Dismiss this notification"> 14046 <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" class="w-6 h-6" width="24" height="24" aria-hidden="true"> 14047 <path stroke-linecap="round" stroke-linejoin="round" d="M6 18L18 6M6 6l12 12"/> 14048</svg> 14049 </button> 14050 </div> 14051 14052 <template x-if="pauseData[message._id]"> 14053 <button type="button" 14054 class="py-2.5 px-5 cursor-pointer font-normal action-border notification-action uppercase flex items-center justify-center text-white" 14055 :class="`border-${getMessageTypeClass(message.type)}`" 14056 @click.stop="togglePause(message._id)" 14057 :aria-label="message.isPaused ? 'Resume\u0020timer' : 'Pause\u0020timer'" 14058 :title="message.isPaused ? 'Resume\u0020timer' : 'Pause\u0020timer'"> 14059 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" class="w-5 h-5" width="20" height="20" aria-hidden="true" x-show="!message.isPaused"> 14060 <path fill-rule="evenodd" d="M18 10a8 8 0 11-16 0 8 8 0 0116 0zM7 8a1 1 0 012 0v4a1 1 0 11-2 0V8zm5-1a1 1 0 00-1 1v4a1 1 0 102 0V8a1 1 0 00-1-1z" clip-rule="evenodd"/> 14061</svg> 14062 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" class="w-5 h-5" width="20" height="20" aria-hidden="true" x-show="message.isPaused"> 14063 <path fill-rule="evenodd" d="M10 18a8 8 0 100-16 8 8 0 000 16zM9.555 7.168A1 1 0 008 8v4a1 1 0 001.555.832l3-2a1 1 0 000-1.664l-3-2z" clip-rule="evenodd"/> 14064</svg> 14065 </button> 14066 </template> 14067 </div> 14068 </template> 14069</div>
14069<script> 14070 function ForgotPasswordForm() { 14071 return Object.assign( 14072 window.hyva.formValidation.apply(this), 14073 { 14074 errors: 0, 14075 hasCaptchaToken: 0, 14076 dispatchModalClose() { 14077 window.hyva.modal.pop() 14078 }, 14079 dispatchSwitchToLogin() { 14080 this.$dispatch('switch-to-login') 14081 }, 14082 submitForm() { 14083 if (this.errors === 0) { 14084 HTMLFormElement.prototype.submit.call(this.$el); 14085 } 14086 }, 14087 actionSubmitForgotPasswordForm() { 14088 this.hasCaptchaToken = 0; 14089 this.errors = 0; 14090 this.validate() 14091 .then(() => { 14092 // Do not rename $form, the variable is expected to be declared in the recaptcha output 14093 const $form = this.$el; 14094 if (!this.hasCaptchaToken) { 14095 this.errors = 1; 14096 14097 14098 const executeGreCaptcha = () => { 14099 grecaptcha.ready(() => { 14100 grecaptcha.execute( 14101 '6LfIe4EpAAAAALE75oNaaOgTw2G3VadtzHYrJItg', 14102 {action: 'customer_forgot_password'} 14103 ).then((token) => { 14104 const tokenElement = $form['g\u002Drecaptcha\u002Dresponse']; 14105 14106 if (tokenElement && token && token.length > 0) { 14107 $form['g\u002Drecaptcha\u002Dresponse'].value = token; 14108 this.errors = 0; 14109 this.hasCaptchaToken = 1; 14110 if (typeof this.submitForm === 'function') { 14111 this.submitForm(); 14112 } else { 14113 HTMLFormElement.prototype.submit.call($form); 14114 } 14115 } else { 14116 this.errors = 1; 14117 const error = tokenElement 14118 ? 'ReCaptcha\u0020validation\u0020failed,\u0020please\u0020try\u0020again' 14119 : 'ReCaptcha\u0020token\u0020element\u0020is\u0020missing.\u0020Please\u0020refresh\u0020the\u0020page\u0020and\u0020trying\u0020again.'; 14120 if (this.setErrorMessages) { 14121 this.setErrorMessages([error]) 14122 this.displayErrorMessage = true; 14123 } else { 14124 window.dispatchMessages && window.dispatchMessages([{type: "error", text: error}], 5000); 14125 } 14126 } 14127 }).catch(exception => { 14128 console.error(exception || `An unknown error occurred during ReCaptcha validation. Are the tokens and the domain correctly set up in the Google console?`) 14129 }); 14130 }) 14131 } 14132 14133 if (window.grecaptcha) { 14134 executeGreCaptcha(); 14135 } else { 14136 const recaptchaUrl = "https://www.google.com/recaptcha/api.js?render=6LfIe4EpAAAAALE75oNaaOgTw2G3VadtzHYrJItg"; 14137 const script = document.createElement('script'); 14138 script.setAttribute('type', 'text/javascript'); 14139 script.setAttribute('src', recaptchaUrl); 14140 document.head.appendChild(script); 14141 14142 script.addEventListener("load", executeGreCaptcha, false); 14143 } 14144 } 14145 14146 if (this.errors === 0) { 14147 this.submitForm(); 14148 } 14149 }) 14150 .catch((invalid) => { 14151 if (invalid.length > 0) { 14152 invalid[0].focus(); 14153 } 14154 }); 14155 } 14156 } 14157 ) 14158 } 14159 14160 window.addEventListener( 14161 'alpine:init', 14162 () => Alpine.data('ForgotPasswordForm', ForgotPasswordForm), 14163 {once: true} 14164 ) 14165</script>
14165 14166
14167<script> 14168 window.STEIFF_PENDING_WISHLIST_PRODUCT_KEY = 'steiff_pending_wishlist_product_id'; 14169 window.STEIFF_WISHLIST_LOGIN_NOTICE_KEY = 'steiff_wishlist_login_notice'; 14170 14171 window.steiffPersistPendingWishlistProduct = function (productId) { 14172 try { 14173 sessionStorage.setItem(window.STEIFF_PENDING_WISHLIST_PRODUCT_KEY, String(productId)); 14174 } catch (_e) {} 14175 }; 14176 14177 window.steiffClearPendingWishlistProductStorage = function () { 14178 try { 14179 sessionStorage.removeItem(window.STEIFF_PENDING_WISHLIST_PRODUCT_KEY); 14180 } catch (_e) {} 14181 }; 14182 14183 window.steiffNotify = function (type, text, timeout = 5000) { 14184 if (typeof window.dispatchMessages === 'function') { 14185 window.dispatchMessages([{ type, text }], timeout); 14186 } 14187 }; 14188 14189 window.steiffReadMageCache = function () { 14190 try { 14191 return JSON.parse(localStorage.getItem('mage-cache-storage') || '{}'); 14192 } catch (_e) { 14193 return {}; 14194 } 14195 }; 14196 14197 /** 14198 * AJAX POST for wishlist remove/add actions using Magento post params 14199 * (same format as delete_item_params / getItemRemoveParams in remove.phtml). 14200 */ 14201 window.steiffPostWishlistForm = function (postParamsJson, options = {}) { 14202 const obj = typeof postParamsJson === 'string' ? JSON.parse(postParamsJson) : postParamsJson; 14203 const postUrl = obj.action; 14204 const warningMessage = options.warningMessage 14205 ?? 'Could\u0020not\u0020remove\u0020item\u0020from\u0020your\u0020Wish\u0020List.'; 14206 14207 // Always use current-page uenc; Magento getRemoveParams() ships an empty uenc 14208 // that would otherwise overwrite hyva.getUenc() (PHP keeps the last duplicate). 14209 let body = `form_key=${encodeURIComponent(hyva.getFormKey())}&uenc=${encodeURIComponent(hyva.getUenc())}`; 14210 Object.entries(obj.data || {}).forEach(([key, value]) => { 14211 if (key === 'uenc') { 14212 return; 14213 } 14214 body += `&${encodeURIComponent(key)}=${encodeURIComponent(String(value))}`; 14215 }); 14216 14217 return fetch(postUrl, { 14218 headers: { 'content-type': 'application/x-www-form-urlencoded; charset=UTF-8' }, 14219 body, 14220 method: 'POST', 14221 mode: 'cors', 14222 credentials: 'include' 14223 }).then((response) => { 14224 if (response.redirected) { 14225 if (response.url.includes('customer/account/login')) { 14226 window.location.href = response.url; 14227 return null; 14228 } 14229 // wishlist/index/remove redirects to referer (PDP) – treat as success 14230 return { success: true }; 14231 } 14232 if (response.ok) { 14233 return response.json(); 14234 } 14235 window.steiffNotify('warning', warningMessage); 14236 return null; 14237 }).catch((error) => { 14238 window.steiffNotify('error', error?.message ?? String(error)); 14239 return null; 14240 }); 14241 }; 14242 14243 window.steiffAddWishlistProduct = function (productId) { 14244 const body = [ 14245 `form_key=${encodeURIComponent(hyva.getFormKey())}`, 14246 `product=${encodeURIComponent(productId)}`, 14247 `uenc=${encodeURIComponent(hyva.getUenc())}` 14248 ].join('&'); 14249 14250 return fetch(`${BASE_URL}wishlist/index/add/`, { 14251 headers: { 'content-type': 'application/x-www-form-urlencoded; charset=UTF-8' }, 14252 body, 14253 method: 'POST', 14254 mode: 'cors', 14255 credentials: 'include' 14256 }); 14257 }; 14258</script>
vendor: 1 bytes, line 14258
14258
14259<script> 14260 window.steiffWishlistMixin = function () { 14261 const AWAITING_SECTION_TIMEOUT_MS = 8000; 14262 const AWAITING_MODE_HAS_REMOVE_PARAMS = 'has-remove-params'; 14263 const AWAITING_MODE_ITEM_GONE = 'item-gone'; 14264 14265 return { 14266 isLoggedIn: false, 14267 privateContentLoaded: false, 14268 pendingProductId: null, 14269 wishlistProductItems: null, 14270 wishlistPending: false, 14271 awaitingSectionProductId: null, 14272 awaitingSectionSelection: null, 14273 awaitingSectionMode: null, 14274 awaitingSectionTimeoutId: null, 14275 14276 clearAwaitingSectionTimeout() { 14277 if (this.awaitingSectionTimeoutId === null) { 14278 return; 14279 } 14280 clearTimeout(this.awaitingSectionTimeoutId); 14281 this.awaitingSectionTimeoutId = null; 14282 }, 14283 14284 releaseAwaitingSectionConfirm() { 14285 this.clearAwaitingSectionTimeout(); 14286 this.awaitingSectionProductId = null; 14287 this.awaitingSectionSelection = null; 14288 this.awaitingSectionMode = null; 14289 this.wishlistPending = false; 14290 this.restoreWishlistButtonFocus(); 14291 }, 14292 14293 hasConfirmedRemoveParams(productId, selection = null) { 14294 if (selection) { 14295 return this.getWishlistRemoveParamsForSelection(productId, selection).length > 0; 14296 } 14297 return this.getWishlistRemoveParams(productId).length > 0; 14298 }, 14299 14300 isSectionConfirmSatisfied() { 14301 const id = this.awaitingSectionProductId; 14302 const selection = this.awaitingSectionSelection; 14303 if (!id || !this.awaitingSectionMode) { 14304 return false; 14305 } 14306 if (this.awaitingSectionMode === AWAITING_MODE_HAS_REMOVE_PARAMS) { 14307 return this.hasConfirmedRemoveParams(id, selection); 14308 } 14309 if (this.awaitingSectionMode === AWAITING_MODE_ITEM_GONE) { 14310 if (selection) { 14311 return !this.isSelectionInWishlist(id, selection); 14312 } 14313 return !this.isInWishlist(id); 14314 } 14315 return false; 14316 }, 14317 14318 beginAwaitingSectionConfirm(productId, selection, mode) { 14319 const id = Number(productId); 14320 if (!id || !mode) { 14321 this.releaseAwaitingSectionConfirm(); 14322 return; 14323 } 14324 14325 this.awaitingSectionProductId = id; 14326 this.awaitingSectionSelection = selection; 14327 this.awaitingSectionMode = mode; 14328 this.wishlistPending = true; 14329 this.clearAwaitingSectionTimeout(); 14330 14331 // After remove, optimistic local state already looks "gone" — wait for section data. 14332 // After add, section may already be fresh (fast reload / cache). 14333 if (mode !== AWAITING_MODE_ITEM_GONE && this.isSectionConfirmSatisfied()) { 14334 this.releaseAwaitingSectionConfirm(); 14335 return; 14336 } 14337 14338 this.awaitingSectionTimeoutId = setTimeout(() => { 14339 this.releaseAwaitingSectionConfirm(); 14340 }, AWAITING_SECTION_TIMEOUT_MS); 14341 }, 14342 14343 beginAwaitingRemoveParams(productId, selection = null) { 14344 this.beginAwaitingSectionConfirm(productId, selection, AWAITING_MODE_HAS_REMOVE_PARAMS); 14345 }, 14346 14347 beginAwaitingItemGone(productId, selection = null) { 14348 this.beginAwaitingSectionConfirm(productId, selection, AWAITING_MODE_ITEM_GONE); 14349 }, 14350 14351 maybeReleasePendingAfterSectionLoad() { 14352 if (!this.awaitingSectionProductId) { 14353 return; 14354 } 14355 if (this.isSectionConfirmSatisfied()) { 14356 this.releaseAwaitingSectionConfirm(); 14357 } 14358 }, 14359 14360 setLoginState(data) { 14361 this.isLoggedIn = !!(data?.customer?.firstname); 14362 this.privateContentLoaded = true; 14363 14364 if (!this.isLoggedIn) { 14365 this.wishlistProductItems = []; 14366 if (this.awaitingSectionProductId) { 14367 this.releaseAwaitingSectionConfirm(); 14368 } 14369 return; 14370 } 14371 14372 const productItems = data?.wishlist?.product_items; 14373 this.wishlistProductItems = Array.isArray(productItems) ? productItems : []; 14374 this.maybeReleasePendingAfterSectionLoad(); 14375 }, 14376 14377 readWishlistSection(key, fallback = null) { 14378 return window.steiffReadMageCache()?.wishlist?.[key] ?? fallback; 14379 }, 14380 14381 normalizeWishlistEventDetail(productIdOrDetail) { 14382 if (productIdOrDetail && typeof productIdOrDetail === 'object') { 14383 return { 14384 productId: productIdOrDetail.productId ?? productIdOrDetail.product_id ?? null, 14385 simpleProductId: productIdOrDetail.simpleProductId 14386 ?? productIdOrDetail.simple_product_id 14387 ?? null, 14388 superAttribute: productIdOrDetail.superAttribute 14389 ?? productIdOrDetail.super_attribute 14390 ?? null, 14391 hasFullSelection: productIdOrDetail.hasFullSelection ?? null 14392 }; 14393 } 14394 return { 14395 productId: productIdOrDetail, 14396 simpleProductId: null, 14397 superAttribute: null, 14398 hasFullSelection: null 14399 }; 14400 }, 14401 14402 normalizeSuperAttribute(superAttribute) { 14403 if (!superAttribute || typeof superAttribute !== 'object') { 14404 return {}; 14405 } 14406 const normalized = {}; 14407 Object.keys(superAttribute).forEach((key) => { 14408 const value = superAttribute[key]; 14409 if (value === null || value === undefined || value === '') { 14410 return; 14411 } 14412 normalized[String(key)] = String(value); 14413 }); 14414 return normalized; 14415 }, 14416 14417 superAttributesEqual(first, second) { 14418 const firstAttributes = this.normalizeSuperAttribute(first); 14419 const secondAttributes = this.normalizeSuperAttribute(second); 14420 const firstAttributeIds = Object.keys(firstAttributes); 14421 const secondAttributeIds = Object.keys(secondAttributes); 14422 if (firstAttributeIds.length !== secondAttributeIds.length) { 14423 return false;
14424 } 14425 return firstAttributeIds.every( 14426 (attributeId) => firstAttributes[attributeId] === secondAttributes[attributeId] 14427 ); 14428 }, 14429 14430 itemHasConfiguration(item) { 14431 if (!item || typeof item !== 'object') { 14432 return false; 14433 } 14434 if (item.simple_product_id) { 14435 return true; 14436 } 14437 return Object.keys(this.normalizeSuperAttribute(item.super_attribute)).length > 0; 14438 }, 14439 14440 matchesWishlistSelection(item, selection = {}) { 14441 const hasFullSelection = !!selection.hasFullSelection; 14442 const simpleProductId = selection.simpleProductId 14443 ? Number(selection.simpleProductId) 14444 : null; 14445 const superAttribute = this.normalizeSuperAttribute(selection.superAttribute); 14446 const itemSimpleId = item.simple_product_id ? Number(item.simple_product_id) : null; 14447 14448 if (hasFullSelection) { 14449 if (simpleProductId && itemSimpleId && simpleProductId === itemSimpleId) { 14450 return true; 14451 } 14452 if (Object.keys(superAttribute).length > 0 14453 && this.superAttributesEqual(item.super_attribute, superAttribute)) { 14454 return true; 14455 } 14456 return false; 14457 } 14458 14459 return !this.itemHasConfiguration(item); 14460 }, 14461 14462 getWishlistProductItems() { 14463 if (Array.isArray(this.wishlistProductItems)) { 14464 return this.wishlistProductItems; 14465 } 14466 14467 const productItems = this.readWishlistSection('product_items'); 14468 if (Array.isArray(productItems)) { 14469 this.wishlistProductItems = productItems; 14470 return this.wishlistProductItems; 14471 } 14472 14473 return []; 14474 }, 14475 14476 getWishlistProductIds() { 14477 return [...new Set( 14478 this.getWishlistProductItems().map((item) => Number(item.product_id)) 14479 )]; 14480 }, 14481 14482 getItemsForProduct(productId) { 14483 const parentId = Number(productId); 14484 return this.getWishlistProductItems().filter( 14485 (item) => Number(item.product_id) === parentId 14486 ); 14487 }, 14488 14489 getWishlistRemoveParams(productId) { 14490 return this.getItemsForProduct(productId) 14491 .map((item) => item.remove_params) 14492 .filter(Boolean); 14493 }, 14494 14495 getWishlistRemoveParamsForSelection(productId, selection = {}) { 14496 const items = this.getItemsForProduct(productId); 14497 if (!items.length) { 14498 return []; 14499 } 14500 return items 14501 .filter((item) => this.matchesWishlistSelection(item, selection)) 14502 .map((item) => item.remove_params) 14503 .filter(Boolean); 14504 }, 14505 14506 isInWishlist(productId) { 14507 if (!this.isLoggedIn && this.isGuest()) { 14508 return false; 14509 } 14510 return this.getWishlistProductIds().includes(Number(productId)); 14511 }, 14512 14513 isSelectionInWishlist(productId, selection = {}) { 14514 if (!this.isLoggedIn && this.isGuest()) { 14515 return false; 14516 } 14517 const items = this.getItemsForProduct(productId); 14518 if (!items.length) { 14519 return false; 14520 } 14521 return items.some((item) => this.matchesWishlistSelection(item, selection)); 14522 }, 14523 14524 handleWishlistProductAdded(productIdOrDetail) { 14525 const detail = this.normalizeWishlistEventDetail(productIdOrDetail); 14526 const id = Number(detail.productId); 14527 if (!id) { 14528 return; 14529 } 14530 14531 const items = [...this.getWishlistProductItems()]; 14532 const simpleProductId = detail.simpleProductId ? Number(detail.simpleProductId) : null; 14533 const superAttribute = this.normalizeSuperAttribute(detail.superAttribute); 14534 const hasFullSelection = !!(simpleProductId || Object.keys(superAttribute).length); 14535 const alreadyPresent = items.some((item) => { 14536 if (Number(item.product_id) !== id) { 14537 return false;
14538 } 14539 return this.matchesWishlistSelection(item, { 14540 simpleProductId, 14541 superAttribute, 14542 hasFullSelection 14543 }); 14544 }); 14545 14546 if (!alreadyPresent) { 14547 items.push({ 14548 product_id: id, 14549 simple_product_id: simpleProductId, 14550 super_attribute: superAttribute, 14551 remove_params: null 14552 }); 14553 this.wishlistProductItems = items; 14554 } 14555 }, 14556 14557 hasSelectionContext(detail) { 14558 return (detail.hasFullSelection !== null && detail.hasFullSelection !== undefined) 14559 || !!detail.simpleProductId 14560 || Object.keys(this.normalizeSuperAttribute(detail.superAttribute)).length > 0; 14561 }, 14562 14563 handleWishlistProductRemoved(productIdOrDetail) { 14564 const detail = this.normalizeWishlistEventDetail(productIdOrDetail); 14565 const id = Number(detail.productId); 14566 if (!id) { 14567 return; 14568 } 14569 14570 if (this.hasSelectionContext(detail)) { 14571 const selection = { 14572 simpleProductId: detail.simpleProductId, 14573 superAttribute: detail.superAttribute, 14574 hasFullSelection: detail.hasFullSelection 14575 }; 14576 this.wishlistProductItems = this.getWishlistProductItems().filter((item) => { 14577 if (Number(item.product_id) !== id) { 14578 return true; 14579 } 14580 return !this.matchesWishlistSelection(item, selection); 14581 }); 14582 return; 14583 } 14584 14585 this.wishlistProductItems = this.getWishlistProductItems().filter( 14586 (item) => Number(item.product_id) !== id 14587 ); 14588 }, 14589
14590 isGuest() { 14591 if (this.privateContentLoaded) { 14592 return !this.isLoggedIn; 14593 } 14594 const cache = window.steiffReadMageCache(); 14595 if (cache.customer?.firstname) { 14596 this.isLoggedIn = true; 14597 this.privateContentLoaded = true; 14598 return false; 14599 } 14600 return true; 14601 }, 14602 14603 toggleWishlist(productId, productName, selection = null) { 14604 if (this.wishlistPending) { 14605 return; 14606 } 14607 if (selection) { 14608 if (this.isSelectionInWishlist(productId, selection)) { 14609 this.removeFromWishlist(productId, productName, selection); 14610 return; 14611 } 14612 this.addToWishlist(productId, productName); 14613 return; 14614 } 14615 if (this.isInWishlist(productId)) { 14616 this.removeFromWishlist(productId, productName); 14617 return; 14618 } 14619 this.addToWishlist(productId, productName); 14620 }, 14621 14622 addToWishlist(productId, productName) { 14623 if (productName) { 14624 this.pendingProductName = productName; 14625 } 14626 if (this.isGuest()) { 14627 if (this.$el instanceof HTMLElement) { 14628 this.$el.blur(); 14629 } 14630 this.pendingProductId = productId; 14631 if (typeof window.steiffPersistPendingWishlistProduct === 'function') { 14632 window.steiffPersistPendingWishlistProduct(productId); 14633 } 14634 window.dispatchEvent(new CustomEvent('auth-modal-wishlist-pending')); 14635 window.dispatchEvent(new CustomEvent('open-auth-modal')); 14636 return; 14637 } 14638 this.performAddToWishlist(productId, true); 14639 }, 14640 14641 removeFromWishlist(productId, productName, selection = null) { 14642 const removeParamsList = selection 14643 ? this.getWishlistRemoveParamsForSelection(productId, selection) 14644 : this.getWishlistRemoveParams(productId); 14645 14646 // Optimistic add may lack remove_params until section data reloads 14647 if (!removeParamsList.length) { 14648 window.dispatchEvent(new CustomEvent('reload-customer-section-data')); 14649 return; 14650 } 14651 14652 this.wishlistPending = true; 14653 let keepPendingForSection = false; 14654 14655 const removedMessageTemplate = '\u00251\u0020has\u0020been\u0020removed\u0020from\u0020your\u0020Wish\u0020List.'; 14656 const removedMessageFallback = 'Product\u0020has\u0020been\u0020removed\u0020from\u0020your\u0020Wish\u0020List.'; 14657 const removedMessage = productName && typeof hyva !== 'undefined' && typeof hyva.str === 'function' 14658 ? hyva.str(removedMessageTemplate, productName) 14659 : removedMessageFallback; 14660 const warningMessage = 'Could\u0020not\u0020remove\u0020item\u0020from\u0020your\u0020Wish\u0020List.'; 14661 const eventDetail = selection 14662 ? { 14663 productId, 14664 simpleProductId: selection.simpleProductId ?? null, 14665 superAttribute: selection.superAttribute ?? null, 14666 hasFullSelection: selection.hasFullSelection ?? null 14667 } 14668 : { productId }; 14669 14670 let removedAny = false; 14671 14672 const removeNext = () => { 14673 if (!removeParamsList.length) { 14674 if (!removedAny) { 14675 return Promise.resolve(); 14676 } 14677 this.handleWishlistProductRemoved(eventDetail); 14678 window.dispatchEvent(new CustomEvent('wishlist-product-removed', { 14679 detail: eventDetail, 14680 bubbles: true 14681 })); 14682 window.steiffNotify('success', removedMessage); 14683 window.dispatchEvent(new CustomEvent('reload-customer-section-data')); 14684 keepPendingForSection = true; 14685 this.beginAwaitingItemGone(productId, selection); 14686 return Promise.resolve(); 14687 } 14688
14689 const paramsJson = removeParamsList.shift(); 14690 return window.steiffPostWishlistForm(paramsJson, { warningMessage }).then((result) => { 14691 if (result?.success) { 14692 removedAny = true; 14693 return removeNext(); 14694 } 14695 if (result && !result.success) { 14696 window.steiffNotify('error', result.error_message ?? warningMessage); 14697 } 14698 if (removedAny) { 14699 window.dispatchEvent(new CustomEvent('reload-customer-section-data')); 14700 } 14701 }); 14702 }; 14703 14704 return removeNext().finally(() => { 14705 if (keepPendingForSection) { 14706 return; 14707 } 14708 this.wishlistPending = false; 14709 this.restoreWishlistButtonFocus(); 14710 }); 14711 }, 14712 14713 handleWishlistAfterAuthLogin() { 14714 if (this.pendingProductId) { 14715 const id = this.pendingProductId; 14716 this.pendingProductId = null; 14717 window.steiffClearPendingWishlistProductStorage(); 14718 this.performAddToWishlist(id); 14719 } 14720 }, 14721 14722 clearPendingWishlist() { 14723 this.pendingProductId = null; 14724 window.steiffClearPendingWishlistProductStorage(); 14725 }, 14726 14727 restoreWishlistButtonFocus() { 14728 if (!(this.$el instanceof HTMLElement)) { 14729 return; 14730 } 14731 requestAnimationFrame(() => { 14732 this.$el.focus({ preventScroll: true }); 14733 }); 14734 } 14735 }; 14736 }; 14737</script>
vendor: 1 bytes, line 14737
14737
14738<script> 14739 window.steiffInitWishlistToggle = function () { 14740 const mixin = window.steiffWishlistMixin(); 14741 return Object.assign(mixin, { 14742 getWishlistSuccessMessage() { 14743 const name = this.pendingProductName || ''; 14744 if (name) { 14745 return "__NAME__\u0020has\u0020been\u0020added\u0020to\u0020your\u0020Wish\u0020List.".replace('__NAME__', name); 14746 } 14747 return "Product\u0020has\u0020been\u0020added\u0020to\u0020your\u0020Wish\u0020List."; 14748 }, 14749 performAddToWishlist(productId, openAuthModalOnLoginRedirect = false) { 14750 this.wishlistPending = true; 14751 let keepPendingForSection = false; 14752 14753 window.steiffAddWishlistProduct(productId).then((response) => { 14754 if (response.redirected) { 14755 if (response.url.includes('wishlist')) { 14756 window.steiffClearPendingWishlistProductStorage(); 14757 window.dispatchEvent(new CustomEvent('wishlist-product-added', { 14758 detail: { productId: String(productId) }, 14759 bubbles: true 14760 })); 14761 window.steiffNotify('success', this.getWishlistSuccessMessage()); 14762 window.dispatchEvent(new CustomEvent('reload-customer-section-data')); 14763 keepPendingForSection = true; 14764 this.beginAwaitingRemoveParams(productId); 14765 return; 14766 } 14767 14768 const redirectedToLogin = response.url.includes('customer/account/login'); 14769 if (openAuthModalOnLoginRedirect && redirectedToLogin) { 14770 this.pendingProductId = productId; 14771 window.dispatchEvent(new CustomEvent('auth-modal-wishlist-pending')); 14772 window.dispatchEvent(new CustomEvent('open-auth-modal')); 14773 return; 14774 } 14775 14776 window.location.href = response.url; 14777 return; 14778 } 14779 if (response.ok) { 14780 return response.json(); 14781 } 14782 window.steiffNotify( 14783 'warning', 14784 'Could\u0020not\u0020add\u0020item\u0020to\u0020wishlist.' 14785 ); 14786 }).then((result) => { 14787 if (!result) { 14788 return; 14789 } 14790 if (!result.success) { 14791 window.steiffNotify('error', result.error_message); 14792 return; 14793 } 14794 window.steiffNotify('success', this.getWishlistSuccessMessage()); 14795 window.dispatchEvent(new CustomEvent('reload-customer-section-data')); 14796 window.dispatchEvent(new CustomEvent('wishlist-product-added', { 14797 detail: { productId: String(productId) }, 14798 bubbles: true 14799 })); 14800 keepPendingForSection = true; 14801 this.beginAwaitingRemoveParams(productId); 14802 }).catch((error) => { 14803 window.steiffNotify('error', error?.message ?? String(error)); 14804 }).finally(() => { 14805 if (keepPendingForSection) { 14806 return; 14807 } 14808 this.wishlistPending = false; 14809 this.restoreWishlistButtonFocus(); 14810 }); 14811 } 14812 }); 14813 }; 14814</script>
vendor: 1 bytes, line 14814
14814
14815<script> 14816 (function () { 14817 const cache = window.steiffReadMageCache(); 14818 if (!cache.customer?.firstname) { 14819 return; 14820 } 14821 let stored; 14822 try { 14823 stored = sessionStorage.getItem(window.STEIFF_PENDING_WISHLIST_PRODUCT_KEY); 14824 } catch (_e) { 14825 return; 14826 } 14827 if (!stored) { 14828 return; 14829 } 14830 window.steiffClearPendingWishlistProductStorage(); 14831 const productId = parseInt(stored, 10); 14832 if (!productId) { 14833 return; 14834 } 14835 14836 const flushPendingWishlist = () => { 14837 if (typeof hyva === 'undefined' || typeof hyva.getFormKey !== 'function' || !hyva.getFormKey()) { 14838 return; 14839 } 14840 window.steiffAddWishlistProduct(productId).then((response) => { 14841 if (response.redirected && response.url.includes('wishlist')) { 14842 window.dispatchEvent(new CustomEvent('wishlist-product-added', { 14843 detail: { productId: String(productId) } 14844 })); 14845 window.steiffNotify( 14846 'success', 14847 'Product\u0020has\u0020been\u0020added\u0020to\u0020your\u0020Wish\u0020List.' 14848 ); 14849 window.dispatchEvent(new CustomEvent('reload-customer-section-data')); 14850 } 14851 }); 14852 }; 14853 14854 if (document.readyState === 'loading') { 14855 document.addEventListener('DOMContentLoaded', flushPendingWishlist); 14856 } else { 14857 flushPendingWishlist(); 14858 } 14859 })(); 14860</script>
vendor: 1 bytes, line 14860
14860
14861<script> 14862 (function () { 14863 const showWishlistLoginNoticeIfNeeded = () => { 14864 const path = window.location.pathname || ''; 14865 if (!path.includes('customer/account/login')) { 14866 return; 14867 } 14868 const noticeKey = window.STEIFF_WISHLIST_LOGIN_NOTICE_KEY || 'steiff_wishlist_login_notice'; 14869 let shouldShowNotice = false; 14870 try { 14871 shouldShowNotice = sessionStorage.getItem(noticeKey) === '1'; 14872 if (shouldShowNotice) { 14873 sessionStorage.removeItem(noticeKey); 14874 } 14875 } catch (_e) { 14876 return; 14877 } 14878 if (!shouldShowNotice) { 14879 return; 14880 } 14881 const messages = [{ 14882 type: 'info', 14883 text: 'Please\u0020sign\u0020in\u0020to\u0020add\u0020products\u0020to\u0020your\u0020Wish\u0020List.' 14884 }]; 14885 const dispatchNotice = () => { 14886 if (typeof window.dispatchMessages === 'function') { 14887 window.dispatchMessages(messages, 8000); 14888 return; 14889 } 14890 window.dispatchEvent(new CustomEvent('message-modal-show', { 14891 detail: { messages } 14892 })); 14893 }; 14894 window.setTimeout(dispatchNotice, 0); 14895 }; 14896 14897 if (document.readyState === 'loading') { 14898 document.addEventListener('DOMContentLoaded', showWishlistLoginNoticeIfNeeded); 14899 } else { 14900 showWishlistLoginNoticeIfNeeded(); 14901 } 14902 })(); 14903</script>
14903 14904 14905<!-- http://FRAUD0.com fraud detection BODY TAG -->
14906<script async src="https://api.fraud0.com/api/v2/fz.js?cid=3b38a0dc-ee4e-4935-bd33-17e2034e595d"></script>
vendor: 1 bytes, line 14906
14906
14907<script>(function(){var i=document.createElement('img');i.alt=' ';i.src='https://api.fraud0.com/api/v2/pixel?cid=3b38a0dc-ee4e-4935-bd33-17e2034e595d&cb='+Math.random()*new Date().getTime();i.width=i.height=1;i.style='width:1px;height:1px;display:inline;position:absolute;margin-top:-1px;';document.body.append(i);})();</script>
14907 14908<!-- End of FRAUD0 BODY TAG -->
14908<script type="text/json" id="default-section-data"> 14909 {"messages":[],"customer":[],"compare-products":[],"last-ordered-items":[],"cart":[],"directory-data":{"BE":{"name":"Belgium","regions":{"1826":{"code":"VAN","name":"Antwerpen"},"1829":{"code":"WBR","name":"Brabant wallon"},"1832":{"code":"BRU","name":"Brussels-Capital Region"},"1835":{"code":"WHT","name":"Hainaut"},"1841":{"code":"WLG","name":"Li\u00e8ge"},"1838":{"code":"VLI","name":"Limburg"},"1844":{"code":"WLX","name":"Luxembourg"},"1847":{"code":"WNA","name":"Namur"},"1850":{"code":"VOV","name":"Oost-Vlaanderen"},"1853":{"code":"VBR","name":"Vlaams-Brabant"},"1856":{"code":"VWV","name":"West-Vlaanderen"}}},"EE":{"name":"Estonia","regions":{"1019":{"code":"EE-37","name":"Harjumaa"},"1022":{"code":"EE-39","name":"Hiiumaa"},"1025":{"code":"EE-44","name":"Ida-Virumaa"},"1031":{"code":"EE-51","name":"J\u00e4rvamaa"},"1028":{"code":"EE-49","name":"J\u00f5gevamaa"},"1037":{"code":"EE-59","name":"L\u00e4\u00e4ne-Virumaa"},"1034":{"code":"EE-57","name":"L\u00e4\u00e4nemaa"},"1043":{"code":"EE-67","name":"P\u00e4rnumaa"},"1040":{"code":"EE-65","name":"P\u00f5lvamaa"},"1046":{"code":"EE-70","name":"Raplamaa"},"1049":{"code":"EE-74","name":"Saaremaa"},"1052":{"code":"EE-78","name":"Tartumaa"},"1055":{"code":"EE-82","name":"Valgamaa"},"1058":{"code":"EE-84","name":"Viljandimaa"},"1061":{"code":"EE-86","name":"V\u00f5rumaa"}}},"ES":{"name":"Spain","regions":{"389":{"code":"A Coru\u0441a","name":"A Coru\u00f1a"},"392":{"code":"Alava","name":"Alava"},"395":{"code":"Albacete","name":"Albacete"},"398":{"code":"Alicante","name":"Alicante"},"401":{"code":"Almeria","name":"Almeria"},"404":{"code":"Asturias","name":"Asturias"},"407":{"code":"Avila","name":"Avila"},"410":{"code":"Badajoz","name":"Badajoz"},"413":{"code":"Baleares","name":"Baleares"},"416":{"code":"Barcelona","name":"Barcelona"},"419":{"code":"Burgos","name":"Burgos"},"422":{"code":"Caceres","name":"Caceres"},"425":{"code":"Cadiz","name":"Cadiz"},"428":{"code":"Cantabria","name":"Cantabria"},"431":{"code":"Castellon","name":"Castellon"},"434":{"code":"Ceuta","name":"Ceuta"},"437":{"code":"Ciudad Real","name":"Ciudad Real"},"440":{"code":"Cordoba","name":"Cordoba"},"443":{"code":"Cuenca","name":"Cuenca"},"446":{"code":"Girona","name":"Girona"},"449":{"code":"Granada","name":"Granada"},"452":{"code":"Guadalajara","name":"Guadalajara"},"455":{"code":"Guipuzcoa","name":"Guipuzcoa"},"458":{"code":"Huelva","name":"Huelva"},"461":{"code":"Huesca","name":"Huesca"},"464":{"code":"Jaen","name":"Jaen"},"467":{"code":"La Rioja","name":"La Rioja"},"470":{"code":"Las Palmas","name":"Las Palmas"},"473":{"code":"Leon","name":"Leon"},"476":{"code":"Lleida","name":"Lleida"},"479":{"code":"Lugo","name":"Lugo"},"482":{"code":"Madrid","name":"Madrid"},"485":{"code":"Malaga","name":"Malaga"},"488":{"code":"Melilla","name":"Melilla"},"491":{"code":"Murcia","name":"Murcia"},"494":{"code":"Navarra","name":"Navarra"},"497":{"code":"Ourense","name":"Ourense"},"500":{"code":"Palencia","name":"Palencia"},"503":{"code":"Pontevedra","name":"Pontevedra"},"506":{"code":"Salamanca","name":"Salamanca"},"509":{"code":"Santa Cruz de Tenerife","name":"Santa Cruz de Tenerife"},"512":{"code":"Segovia","name":"Segovia"},"515":{"code":"Sevilla","name":"Sevilla"},"518":{"code":"Soria","name":"Soria"},"521":{"code":"Tarragona","name":"Tarragona"},"524":{"code":"Teruel","name":"Teruel"},"527":{"code":"Toledo","name":"Toledo"},"530":{"code":"Valencia","name":"Valencia"},"533":{"code":"Valladolid","name":"Valladolid"},"536":{"code":"Vizcaya","name":"Vizcaya"},"539":{"code":"Zamora","name":"Zamora"},"542":{"code":"Zaragoza","name":"Zaragoza"}}},"FI":{"name":"Finland","regions":{"1016":{"code":"Ahvenanmaa","name":"Ahvenanmaa"},"998":{"code":"Etel\u00e4-Karjala","name":"Etel\u00e4-Karjala"},"977":{"code":"Etel\u00e4-Pohjanmaa","name":"Etel\u00e4-Pohjanmaa"},"974":{"code":"Etel\u00e4-Savo","name":"Etel\u00e4-Savo"},"1010":{"code":"It\u00e4-Uusimaa","name":"It\u00e4-Uusimaa"},"965":{"code":"Kainuu","name":"Kainuu"},"1004":{"code":"Kanta-H\u00e4me","name":"Kanta-H\u00e4me"},"989":{"code":"Keski-Pohjanmaa","name":"Keski-Pohjanmaa"},"992":{"code":"Keski-Suomi","name":"Keski-Suomi"},"1013":{"code":"Kymenlaakso","name":"Kymenlaakso"},"959":{"code":"Lappi","name":"Lappi"},"1001":{"code":"P\u00e4ij\u00e4t-H\u00e4me","name":"P\u00e4ij\u00e4t-H\u00e4me"},"983":{"code":"Pirkanmaa","name":"Pirkanmaa"},"980":{"code":"Pohjanmaa","name":"Pohjanmaa"},"968":{"code":"Pohjois-Karjala","name":"Pohjois-Karjala"},"962":{"code":"Pohjois-Pohjanmaa","name":"Pohjois-Pohjanmaa"},"971":{"code":"Pohjois-Savo","name":"Pohjois-Savo"},"986":{"code":"Satakunta","name":"Satakunta"},"1007":{"code":"Uusimaa","name":"Uusimaa"},"995":{"code":"Varsinais-Suomi","name":"Varsinais-Suomi"}}},"FR":{"name":"France","regions":{"545":{"code":"1","name":"Ain"},"548":{"code":"2","name":"Aisne"},"551":{"code":"3","name":"Allier"}
14909,"554":{"code":"4","name":"Alpes-de-Haute-Provence"},"560":{"code":"6","name":"Alpes-Maritimes"},"563":{"code":"7","name":"Ard\u00e8che"},"566":{"code":"8","name":"Ardennes"},"569":{"code":"9","name":"Ari\u00e8ge"},"572":{"code":"10","name":"Aube"},"575":{"code":"11","name":"Aude"},"578":{"code":"12","name":"Aveyron"},"746":{"code":"67","name":"Bas-Rhin"},"581":{"code":"13","name":"Bouches-du-Rh\u00f4ne"},"584":{"code":"14","name":"Calvados"},"587":{"code":"15","name":"Cantal"},"590":{"code":"16","name":"Charente"},"593":{"code":"17","name":"Charente-Maritime"},"596":{"code":"18","name":"Cher"},"599":{"code":"19","name":"Corr\u00e8ze"},"602":{"code":"2A","name":"Corse-du-Sud"},"608":{"code":"21","name":"C\u00f4te-d'Or"},"611":{"code":"22","name":"C\u00f4tes-d'Armor"},"614":{"code":"23","name":"Creuse"},"782":{"code":"79","name":"Deux-S\u00e8vres"},"617":{"code":"24","name":"Dordogne"},"620":{"code":"25","name":"Doubs"},"623":{"code":"26","name":"Dr\u00f4me"},"818":{"code":"91","name":"Essonne"},"626":{"code":"27","name":"Eure"},"629":{"code":"28","name":"Eure-et-Loir"},"632":{"code":"29","name":"Finist\u00e8re"},"635":{"code":"30","name":"Gard"},"641":{"code":"32","name":"Gers"},"644":{"code":"33","name":"Gironde"},"749":{"code":"68","name":"Haut-Rhin"},"605":{"code":"2B","name":"Haute-Corse"},"638":{"code":"31","name":"Haute-Garonne"},"674":{"code":"43","name":"Haute-Loire"},"701":{"code":"52","name":"Haute-Marne"},"755":{"code":"70","name":"Haute-Sa\u00f4ne"},"767":{"code":"74","name":"Haute-Savoie"},"806":{"code":"87","name":"Haute-Vienne"},"557":{"code":"5","name":"Hautes-Alpes"},"740":{"code":"65","name":"Hautes-Pyr\u00e9n\u00e9es"},"821":{"code":"92","name":"Hauts-de-Seine"},"647":{"code":"34","name":"H\u00e9rault"},"650":{"code":"35","name":"Ille-et-Vilaine"},"653":{"code":"36","name":"Indre"},"656":{"code":"37","name":"Indre-et-Loire"},"659":{"code":"38","name":"Is\u00e8re"},"662":{"code":"39","name":"Jura"},"665":{"code":"40","name":"Landes"},"668":{"code":"41","name":"Loir-et-Cher"},"671":{"code":"42","name":"Loire"},"677":{"code":"44","name":"Loire-Atlantique"},"680":{"code":"45","name":"Loiret"},"683":{"code":"46","name":"Lot"},"686":{"code":"47","name":"Lot-et-Garonne"},"689":{"code":"48","name":"Loz\u00e8re"},"692":{"code":"49","name":"Maine-et-Loire"},"695":{"code":"50","name":"Manche"},"698":{"code":"51","name":"Marne"},"704":{"code":"53","name":"Mayenne"},"707":{"code":"54","name":"Meurthe-et-Moselle"},"710":{"code":"55","name":"Meuse"},"713":{"code":"56","name":"Morbihan"},"716":{"code":"57","name":"Moselle"},"719":{"code":"58","name":"Ni\u00e8vre"},"722":{"code":"59","name":"Nord"},"725":{"code":"60","name":"Oise"},"728":{"code":"61","name":"Orne"},"770":{"code":"75","name":"Paris"},"731":{"code":"62","name":"Pas-de-Calais"},"734":{"code":"63","name":"Puy-de-D\u00f4me"},"737":{"code":"64","name":"Pyr\u00e9n\u00e9es-Atlantiques"},"743":{"code":"66","name":"Pyr\u00e9n\u00e9es-Orientales"},"752":{"code":"69","name":"Rh\u00f4ne"},"758":{"code":"71","name":"Sa\u00f4ne-et-Loire"},"761":{"code":"72","name":"Sarthe"},"764":{"code":"73","name":"Savoie"},"776":{"code":"77","name":"Seine-et-Marne"},"773":{"code":"76","name":"Seine-Maritime"},"824":{"code":"93","name":"Seine-Saint-Denis"},"785":{"code":"80","name":"Somme"},"788":{"code":"81","name":"Tarn"},"791":{"code":"82","name":"Tarn-et-Garonne"},"815":{"code":"90","name":"Territoire-de-Belfort"},"830":{"code":"95","name":"Val-d'Oise"},"827":{"code":"94","name":"Val-de-Marne"},"794":{"code":"83","name":"Var"},"797":{"code":"84","name":"Vaucluse"},"800":{"code":"85","name":"Vend\u00e9e"},"803":{"code":"86","name":"Vienne"},"809":{"code":"88","name":"Vosges"},"812":{"code":"89","name":"Yonne"},"779":{"code":"78","name":"Yvelines"}}},"GR":{"name":"Greece","regions":{"2497":{"code":"GR-69","name":"\u00c1gion \u00d3ros"},"2458":{"code":"GR-A","name":"Anatolik\u00ed Makedon\u00eda kai Thr\u00e1ki"},"2461":{"code":"GR-I","name":"Attik\u00ed"},"2464":{"code":"GR-G","name":"Dytik\u00ed Ell\u00e1da"},"2467":{"code":"GR-C","name":"Dytik\u00ed Makedon\u00eda"},"2470":{"code":"GR-F","name":"Ion\u00eda N\u00edsia"},"2473":{"code":"GR-D","name":"\u00cdpeiros"},"2476":{"code":"GR-B","name":"Kentrik\u00ed Makedon\u00eda"},"2479":{"code":"GR-M","name":"Kr\u00edti"},"2482":{"code":"GR-L","name":"N\u00f3tio Aiga\u00edo"},"2485":{"code":"GR-J","name":"Pelop\u00f3nnisos"},"2488":{"code":"GR-H","name":"Stere\u00e1 Ell\u00e1da"}
14909,"2491":{"code":"GR-E","name":"Thessal\u00eda"},"2494":{"code":"GR-K","name":"V\u00f3reio Aiga\u00edo"}}},"IE":{"name":"Ireland"},"IT":{"name":"Italy","regions":{"2554":{"code":"AG","name":"Agrigento"},"2557":{"code":"AL","name":"Alessandria"},"2560":{"code":"AN","name":"Ancona"},"2563":{"code":"AO","name":"Aosta"},"2569":{"code":"AR","name":"Arezzo"},"2572":{"code":"AP","name":"Ascoli-Piceno"},"2575":{"code":"AT","name":"Asti"},"2578":{"code":"AV","name":"Avellino"},"2581":{"code":"BA","name":"Bari"},"2584":{"code":"BT","name":"Barletta-Andria-Trani"},"2587":{"code":"BL","name":"Belluno"},"2590":{"code":"BN","name":"Benevento"},"2593":{"code":"BG","name":"Bergamo"},"2596":{"code":"BI","name":"Biella"},"2599":{"code":"BO","name":"Bologna"},"2602":{"code":"BZ","name":"Bolzano"},"2605":{"code":"BS","name":"Brescia"},"2608":{"code":"BR","name":"Brindisi"},"2611":{"code":"CA","name":"Cagliari"},"2614":{"code":"CL","name":"Caltanissetta"},"2617":{"code":"CB","name":"Campobasso"},"2620":{"code":"CI","name":"Carbonia Iglesias"},"2623":{"code":"CE","name":"Caserta"},"2626":{"code":"CT","name":"Catania"},"2629":{"code":"CZ","name":"Catanzaro"},"2632":{"code":"CH","name":"Chieti"},"2635":{"code":"CO","name":"Como"},"2638":{"code":"CS","name":"Cosenza"},"2641":{"code":"CR","name":"Cremona"},"2644":{"code":"KR","name":"Crotone"},"2647":{"code":"CN","name":"Cuneo"},"2650":{"code":"EN","name":"Enna"},"2653":{"code":"FM","name":"Fermo"},"2656":{"code":"FE","name":"Ferrara"},"2659":{"code":"FI","name":"Firenze"},"2662":{"code":"FG","name":"Foggia"},"2665":{"code":"FC","name":"Forli-Cesena"},"2668":{"code":"FR","name":"Frosinone"},"2671":{"code":"GE","name":"Genova"},"2674":{"code":"GO","name":"Gorizia"},"2677":{"code":"GR","name":"Grosseto"},"2680":{"code":"IM","name":"Imperia"},"2683":{"code":"IS","name":"Isernia"},"2566":{"code":"AQ","name":"L'Aquila"},"2686":{"code":"SP","name":"La-Spezia"},"2689":{"code":"LT","name":"Latina"},"2692":{"code":"LE","name":"Lecce"},"2695":{"code":"LC","name":"Lecco"},"2698":{"code":"LI","name":"Livorno"},"2701":{"code":"LO","name":"Lodi"},"2704":{"code":"LU","name":"Lucca"},"2707":{"code":"MC","name":"Macerata"},"2710":{"code":"MN","name":"Mantova"},"2713":{"code":"MS","name":"Massa-Carrara"},"2716":{"code":"MT","name":"Matera"},"2719":{"code":"VS","name":"Medio Campidano"},"2722":{"code":"ME","name":"Messina"},"2725":{"code":"MI","name":"Milano"},"2728":{"code":"MO","name":"Modena"},"2731":{"code":"MB","name":"Monza-Brianza"},"2734":{"code":"NA","name":"Napoli"},"2737":{"code":"NO","name":"Novara"},"2740":{"code":"NU","name":"Nuoro"},"2743":{"code":"OG","name":"Ogliastra"},"2746":{"code":"OT","name":"Olbia Tempio"},"2749":{"code":"OR","name":"Oristano"},"2752":{"code":"PD","name":"Padova"},"2755":{"code":"PA","name":"Palermo"},"2758":{"code":"PR","name":"Parma"},"2761":{"code":"PV","name":"Pavia"},"2764":{"code":"PG","name":"Perugia"},"2767":{"code":"PU","name":"Pesaro-Urbino"},"2770":{"code":"PE","name":"Pescara"},"2773":{"code":"PC","name":"Piacenza"},"2776":{"code":"PI","name":"Pisa"},"2779":{"code":"PT","name":"Pistoia"},"2782":{"code":"PN","name":"Pordenone"},"2785":{"code":"PZ","name":"Potenza"},"2788":{"code":"PO","name":"Prato"},"2791":{"code":"RG","name":"Ragusa"},"2794":{"code":"RA","name":"Ravenna"},"2797":{"code":"RC","name":"Reggio-Calabria"},"2800":{"code":"RE","name":"Reggio-Emilia"},"2803":{"code":"RI","name":"Rieti"},"2806":{"code":"RN","name":"Rimini"},"2809":{"code":"RM","name":"Roma"},"2812":{"code":"RO","name":"Rovigo"},"2815":{"code":"SA","name":"Salerno"},"2818":{"code":"SS","name":"Sassari"},"2821":{"code":"SV","name":"Savona"},"2824":{"code":"SI","name":"Siena"},"2827":{"code":"SR","name":"Siracusa"},"2830":{"code":"SO","name":"Sondrio"},"2833":{"code":"TA","name":"Taranto"},"2836":{"code":"TE","name":"Teramo"},"2839":{"code":"TR","name":"Terni"},"2842":{"code":"TO","name":"Torino"},"2845":{"code":"TP","name":"Trapani"},"2848":{"code":"TN","name":"Trento"},"2851":{"code":"TV","name":"Treviso"},"2854":{"code":"TS","name":"Trieste"},"2857":{"code":"UD","name":"Udine"},"2860":{"code":"VA","name":"Varese"},"2863":{"code":"VE","name":"Venezia"},"2866":{"code":"VB","name":"Verbania"},"2869":{"code":"VC","name":"Vercelli"},"2872":{"code":"VR","name":"Verona"}
14909,"2875":{"code":"VV","name":"Vibo-Valentia"},"2878":{"code":"VI","name":"Vicenza"},"2881":{"code":"VT","name":"Viterbo"}}},"LT":{"name":"Lithuania","regions":{"1424":{"code":"LT-AL","name":"Alytaus Apskritis"},"1427":{"code":"LT-KU","name":"Kauno Apskritis"},"1430":{"code":"LT-KL","name":"Klaip\u0117dos Apskritis"},"1433":{"code":"LT-MR","name":"Marijampol\u0117s Apskritis"},"1436":{"code":"LT-PN","name":"Panev\u0117\u017eio Apskritis"},"1439":{"code":"LT-SA","name":"\u0160iauli\u0173 Apskritis"},"1442":{"code":"LT-TA","name":"Taurag\u0117s Apskritis"},"1445":{"code":"LT-TE","name":"Tel\u0161i\u0173 Apskritis"},"1448":{"code":"LT-UT","name":"Utenos Apskritis"},"1451":{"code":"LT-VL","name":"Vilniaus Apskritis"}}},"LU":{"name":"Luxembourg"},"LV":{"name":"Latvia","regions":{"1412":{"code":"\u0100da\u017eu novads","name":"\u0100da\u017eu novads"},"1097":{"code":"Aglonas novads","name":"Aglonas novads"},"1100":{"code":"LV-AI","name":"Aizkraukles novads"},"1103":{"code":"Aizputes novads","name":"Aizputes novads"},"1106":{"code":"Akn\u012bstes novads","name":"Akn\u012bstes novads"},"1109":{"code":"Alojas novads","name":"Alojas novads"},"1112":{"code":"Alsungas novads","name":"Alsungas novads"},"1115":{"code":"LV-AL","name":"Al\u016bksnes novads"},"1118":{"code":"Amatas novads","name":"Amatas novads"},"1121":{"code":"Apes novads","name":"Apes novads"},"1124":{"code":"Auces novads","name":"Auces novads"},"1127":{"code":"Bab\u012btes novads","name":"Bab\u012btes novads"},"1130":{"code":"Baldones novads","name":"Baldones novads"},"1133":{"code":"Baltinavas novads","name":"Baltinavas novads"},"1136":{"code":"LV-BL","name":"Balvu novads"},"1139":{"code":"LV-BU","name":"Bauskas novads"},"1142":{"code":"Bever\u012bnas novads","name":"Bever\u012bnas novads"},"1145":{"code":"Broc\u0113nu novads","name":"Broc\u0113nu novads"},"1148":{"code":"Burtnieku novads","name":"Burtnieku novads"},"1151":{"code":"Carnikavas novads","name":"Carnikavas novads"},"1160":{"code":"LV-CE","name":"C\u0113su novads"},"1154":{"code":"Cesvaines novads","name":"Cesvaines novads"},"1157":{"code":"Ciblas novads","name":"Ciblas novads"},"1163":{"code":"Dagdas novads","name":"Dagdas novads"},"1064":{"code":"LV-DGV","name":"Daugavpils"},"1166":{"code":"LV-DA","name":"Daugavpils novads"},"1169":{"code":"LV-DO","name":"Dobeles novads"},"1172":{"code":"Dundagas novads","name":"Dundagas novads"},"1175":{"code":"Durbes novads","name":"Durbes novads"},"1178":{"code":"Engures novads","name":"Engures novads"},"1415":{"code":"\u0112rg\u013cu novads","name":"\u0112rg\u013cu novads"},"1181":{"code":"Garkalnes novads","name":"Garkalnes novads"},"1184":{"code":"Grobi\u0146as novads","name":"Grobi\u0146as novads"},"1187":{"code":"LV-GU","name":"Gulbenes novads"},"1190":{"code":"Iecavas novads","name":"Iecavas novads"},"1193":{"code":"Ik\u0161\u0137iles novads","name":"Ik\u0161\u0137iles novads"},"1196":{"code":"Il\u016bkstes novads","name":"Il\u016bkstes novads"},"1199":{"code":"In\u010dukalna novads","name":"In\u010dukalna novads"},"1202":{"code":"Jaunjelgavas novads","name":"Jaunjelgavas novads"},"1205":{"code":"Jaunpiebalgas novads","name":"Jaunpiebalgas novads"},"1208":{"code":"Jaunpils novads","name":"Jaunpils novads"},"1070":{"code":"J\u0113kabpils","name":"J\u0113kabpils"},"1214":{"code":"LV-JK","name":"J\u0113kabpils novads"},"1067":{"code":"LV-JEL","name":"Jelgava"},"1211":{"code":"LV-JL","name":"Jelgavas novads"},"1073":{"code":"LV-JUR","name":"J\u016brmala"},"1217":{"code":"Kandavas novads","name":"Kandavas novads"},"1235":{"code":"K\u0101rsavas novads","name":"K\u0101rsavas novads"},"1418":{"code":"\u0136eguma novads","name":"\u0136eguma novads"},"1421":{"code":"\u0136ekavas novads","name":"\u0136ekavas novads"},"1220":{"code":"Kokneses novads","name":"Kokneses novads"},"1229":{"code":"LV-KR","name":"Kr\u0101slavas novads"},"1223":{"code":"Krimuldas novads","name":"Krimuldas novads"},"1226":{"code":"Krustpils novads","name":"Krustpils novads"},"1232":{"code":"LV-KU","name":"Kuld\u012bgas novads"},"1238":{"code":"Lielv\u0101rdes novads","name":"Lielv\u0101rdes novads"},"1076":{"code":"LV-LPX","name":"Liep\u0101ja"},"1079":{"code":"LV-LE","name":"Liep\u0101jas novads"},"1250":{"code":"L\u012bgatnes novads","name":"L\u012bgatnes novads"},"1241":{"code":"LV-LM","name":"Limba\u017eu novads"},"1253":{"code":"L\u012bv\u0101nu novads","name":"L\u012bv\u0101nu novads"},"1244":{"code":"Lub\u0101nas novads","name":"Lub\u0101nas novads"},"1247":{"code":"LV-LU","name":"Ludzas novads"},"1256":{"code":"LV-MA","name":"Madonas novads"},"1262":{"code":"M\u0101lpils novads","name":"M\u0101lpils novads"},"1265":{"code":"M\u0101rupes novads","name":"M\u0101rupes novads"},"1259":{"code":"Mazsalacas novads","name":"Mazsalacas novads"},"1268":{"code":"Nauk\u0161\u0113nu novads","name":"Nauk\u0161\u0113nu novads"},"1271":{"code":"Neretas novads","name":"Neretas novads"},"1274":{"code":"N\u012bcas novads","name":"N\u012bcas novads"},"1277":{"code":"LV-OG","name":"Ogres novads"},"1280":{"code":"Olaines novads","name":"Olaines novads"},"1283":{"code":"Ozolnieku novads","name":"Ozolnieku novads"},"1295":{"code":"P\u0101rgaujas novads","name":"P\u0101rgaujas novads"},"1298":{"code":"P\u0101vilostas novads","name":"P\u0101vilostas novads"},"1301":{"code":"P\u013cavi\u0146u novads","name":"P\u013cavi\u0146u novads"},"1286":{"code":"LV-PR","name":"Prei\u013cu novads"},"1289":{"code":"Priekules novads","name":"Priekules novads"},"1292":{"code":"Prieku\u013cu novads","name":"Prieku\u013cu novads"},"1304":{"code":"Raunas novads","name":"Raunas novads"},"1082":{"code":"LV-REZ","name":"R\u0113zekne"},"1325":{"code":"LV-RE","name":"R\u0113zeknes novads"},"1307":{"code":"Riebi\u0146u novads","name":"Riebi\u0146u novads"},"1085":{"code":"LV-RIX","name":"R\u012bga"},"1088":{"code":"LV-RI","name":"R\u012bgas novads"},"1310":{"code":"Rojas novads","name":"Rojas novads"},"1313":{"code":"Ropa\u017eu novads","name":"Ropa\u017eu novads"},"1316":{"code":"Rucavas novads","name":"Rucavas novads"},"1319":{"code":"Rug\u0101ju novads","name":"Rug\u0101ju novads"},"1328":{"code":"R\u016bjienas novads","name":"R\u016bjienas novads"},"1322":{"code":"Rund\u0101les novads","name":"Rund\u0101les novads"},"1331":{"code":"Salacgr\u012bvas novads","name":"Salacgr\u012bvas novads"},"1334":{"code":"Salas novads","name":"Salas novads"},"1337":{"code":"Salaspils novads","name":"Salaspils novads"},"1340":{"code":"LV-SA","name":"Saldus novads"},"1343":{"code":"Saulkrastu novads","name":"Saulkrastu novads"},"1364":{"code":"S\u0113jas novads","name":"S\u0113jas novads"},"1346":{"code":"Siguldas novads","name":"Siguldas novads"}
14909,"1352":{"code":"Skr\u012bveru novads","name":"Skr\u012bveru novads"},"1349":{"code":"Skrundas novads","name":"Skrundas novads"},"1355":{"code":"Smiltenes novads","name":"Smiltenes novads"},"1358":{"code":"Stopi\u0146u novads","name":"Stopi\u0146u novads"},"1361":{"code":"Stren\u010du novads","name":"Stren\u010du novads"},"1367":{"code":"LV-TA","name":"Talsu novads"},"1373":{"code":"T\u0113rvetes novads","name":"T\u0113rvetes novads"},"1370":{"code":"LV-TU","name":"Tukuma novads"},"1376":{"code":"Vai\u0146odes novads","name":"Vai\u0146odes novads"},"1379":{"code":"LV-VK","name":"Valkas novads"},"1091":{"code":"Valmiera","name":"Valmiera"},"1382":{"code":"LV-VM","name":"Valmieras novads"},"1385":{"code":"Varak\u013c\u0101nu novads","name":"Varak\u013c\u0101nu novads"},"1406":{"code":"V\u0101rkavas novads","name":"V\u0101rkavas novads"},"1388":{"code":"Vecpiebalgas novads","name":"Vecpiebalgas novads"},"1391":{"code":"Vecumnieku novads","name":"Vecumnieku novads"},"1094":{"code":"LV-VEN","name":"Ventspils"},"1394":{"code":"LV-VE","name":"Ventspils novads"},"1397":{"code":"Vies\u012btes novads","name":"Vies\u012btes novads"},"1400":{"code":"Vi\u013cakas novads","name":"Vi\u013cakas novads"},"1403":{"code":"Vi\u013c\u0101nu novads","name":"Vi\u013c\u0101nu novads"},"1409":{"code":"Zilupes novads","name":"Zilupes novads"}}},"NL":{"name":"Netherlands"},"PT":{"name":"Portugal","regions":{"3016":{"code":"PT-01","name":"Aveiro"},"3019":{"code":"PT-02","name":"Beja"},"3022":{"code":"PT-03","name":"Braga"},"3025":{"code":"PT-04","name":"Bragan\u00e7a"},"3028":{"code":"PT-05","name":"Castelo Branco"},"3031":{"code":"PT-06","name":"Coimbra"},"3034":{"code":"PT-07","name":"\u00c9vora"},"3037":{"code":"PT-08","name":"Faro"},"3040":{"code":"PT-09","name":"Guarda"},"3043":{"code":"PT-10","name":"Leiria"},"3046":{"code":"PT-11","name":"Lisboa"},"3049":{"code":"PT-12","name":"Portalegre"},"3052":{"code":"PT-13","name":"Porto"},"3073":{"code":"PT-30","name":"Regi\u00e3o Aut\u00f3noma da Madeira"},"3070":{"code":"PT-20","name":"Regi\u00e3o Aut\u00f3noma dos A\u00e7ores"},"3055":{"code":"PT-14","name":"Santar\u00e9m"},"3058":{"code":"PT-15","name":"Set\u00fabal"},"3061":{"code":"PT-16","name":"Viana do Castelo"},"3064":{"code":"PT-17","name":"Vila Real"},"3067":{"code":"PT-18","name":"Viseu"}}},"SI":{"name":"Slovenia"},"SK":{"name":"Slovakia"},"data_id":1790917371},"captcha":[],"wishlist":{"items":[]},"instant-purchase":[],"loggedAsCustomer":[],"multiplewishlist":[],"persistent":[],"review":[],"adyen-express-pdp":[],"hyva_commerce_messages":[],"hyva_checkout":[],"recently_viewed_product":[],"recently_compared_product":[],"product_data_storage":[],"paypal-billing-agreement":[]}</script>
vendor: 1 bytes, line 14909
14909
14910<script> 14911 window.processSectionDataBeforeDispatch && (window.processSectionDataBeforeDispatch = new Proxy(window.processSectionDataBeforeDispatch, { 14912 apply(target, thisArg, [data]) { 14913 data.hyva_commerce_messages = data.hyva_commerce_messages || {}; 14914 return target.call(thisArg, data); 14915 } 14916 })); 14917</script>
14917 14918</div>
14918<script type="text/javascript">window.NREUM||(NREUM={});NREUM.info={"beacon":"bam.nr-data.net","licenseKey":"389bb90676","applicationID":"212573352","transactionName":"YVYEMRNRDENXB0ANVlgcJwYVWQ1eGQdZFxZfXQIAGR8LXlIBTA==","queueTime":0,"applicationTime":1183,"atts":"TRETR1tLHxwUBRZeQktO","errorBeacon":"bam.nr-data.net","agent":""}</script>
14918</body> 14919</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.