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/version1790253198/frontend/Steiff/default/en_GB/css/styles.css" /> 13<link rel="stylesheet" type="text/css" media="all" href="https://www.steiff.com/static/version1790253198/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://app.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://app.usercentrics.eu/browser-ui/latest/loader.js" 47 nonce="aXNvdHRhYjg0cWZka2Rpb29vdXc5MzQyMWZmbGF3eW4=" 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/version1790253198/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="X9I3NZicMzz63u9D" /> 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\/version1790253198\/frontend\/Steiff\/default\/en_GB\/languageIcons\/DE.svg"},{"id":3,"label":"Austria","store":"de-at","icon":"https:\/\/www.steiff.com\/static\/version1790253198\/frontend\/Steiff\/default\/en_GB\/languageIcons\/AT.svg"},{"id":4,"label":"United Kingdom","store":"en-uk","icon":"https:\/\/www.steiff.com\/static\/version1790253198\/frontend\/Steiff\/default\/en_GB\/languageIcons\/GB.svg"},{"id":21,"label":"USA \u0026 Canada","store":"en-us","icon":"https:\/\/www.steiff.com\/static\/version1790253198\/frontend\/Steiff\/default\/en_GB\/languageIcons\/US-CA.svg"},{"id":5,"label":"Belgium (English)","store":"en","icon":"https:\/\/www.steiff.com\/static\/version1790253198\/frontend\/Steiff\/default\/en_GB\/languageIcons\/BE.svg"},{"id":6,"label":"Belgium (French)","store":"fr","icon":"https:\/\/www.steiff.com\/static\/version1790253198\/frontend\/Steiff\/default\/en_GB\/languageIcons\/BE.svg"},{"id":7,"label":"France","store":"fr","icon":"https:\/\/www.steiff.com\/static\/version1790253198\/frontend\/Steiff\/default\/en_GB\/languageIcons\/FR.svg"},{"id":8,"label":"Netherlands","store":"en","icon":"https:\/\/www.steiff.com\/static\/version1790253198\/frontend\/Steiff\/default\/en_GB\/languageIcons\/NL.svg"},{"id":9,"label":"Luxembourg","store":"en","icon":"https:\/\/www.steiff.com\/static\/version1790253198\/frontend\/Steiff\/default\/en_GB\/languageIcons\/LU.svg"},{"id":10,"label":"Spain","store":"en","icon":"https:\/\/www.steiff.com\/static\/version1790253198\/frontend\/Steiff\/default\/en_GB\/languageIcons\/ES.svg"},{"id":11,"label":"Portugal","store":"en","icon":"https:\/\/www.steiff.com\/static\/version1790253198\/frontend\/Steiff\/default\/en_GB\/languageIcons\/PT.svg"},{"id":12,"label":"Estonia","store":"en","icon":"https:\/\/www.steiff.com\/static\/version1790253198\/frontend\/Steiff\/default\/en_GB\/languageIcons\/EE.svg"},{"id":13,"label":"Finland","store":"en","icon":"https:\/\/www.steiff.com\/static\/version1790253198\/frontend\/Steiff\/default\/en_GB\/languageIcons\/FI.svg"},{"id":14,"label":"Greece","store":"en","icon":"https:\/\/www.steiff.com\/static\/version1790253198\/frontend\/Steiff\/default\/en_GB\/languageIcons\/GR.svg"},{"id":15,"label":"Ireland","store":"en","icon":"https:\/\/www.steiff.com\/static\/version1790253198\/frontend\/Steiff\/default\/en_GB\/languageIcons\/IE.svg"},{"id":16,"label":"Italy","store":"en","icon":"https:\/\/www.steiff.com\/static\/version1790253198\/frontend\/Steiff\/default\/en_GB\/languageIcons\/IT.svg"},{"id":17,"label":"Latvia","store":"en","icon":"https:\/\/www.steiff.com\/static\/version1790253198\/frontend\/Steiff\/default\/en_GB\/languageIcons\/LV.svg"},{"id":18,"label":"Lithuania","store":"en","icon":"https:\/\/www.steiff.com\/static\/version1790253198\/frontend\/Steiff\/default\/en_GB\/languageIcons\/LT.svg"},{"id":19,"label":"Slovakia","store":"en","icon":"https:\/\/www.steiff.com\/static\/version1790253198\/frontend\/Steiff\/default\/en_GB\/languageIcons\/SK.svg"},{"id":20,"label":"Slovenia","store":"en","icon":"https:\/\/www.steiff.com\/static\/version1790253198\/frontend\/Steiff\/default\/en_GB\/languageIcons\/SI.svg"},{"id":22,"label":"Switzerland (German)","store":"de-ch","icon":"https:\/\/www.steiff.com\/static\/version1790253198\/frontend\/Steiff\/default\/en_GB\/languageIcons\/CH.svg"},{"id":23,"label":"Switzerland (French)","store":"fr-ch","icon":"https:\/\/www.steiff.com\/static\/version1790253198\/frontend\/Steiff\/default\/en_GB\/languageIcons\/CH.svg"},{"id":1,"label":"Europe (English)","store":"en","icon":"https:\/\/www.steiff.com\/static\/version1790253198\/frontend\/Steiff\/default\/en_GB\/languageIcons\/EUR.svg"}], 1144 currentStoreCode: 'en', 1145 countryHtmlMapping: {"1":"\u003Cimg src=\"https:\/\/www.steiff.com\/static\/version1790253198\/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\/version1790253198\/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\/version1790253198\/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\/version1790253198\/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\/version1790253198\/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\/version1790253198\/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\/version1790253198\/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\/version1790253198\/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\/version1790253198\/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\/version1790253198\/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\/version1790253198\/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\/version1790253198\/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\/version1790253198\/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\/version1790253198\/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\/version1790253198\/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\/version1790253198\/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\/version1790253198\/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\/version1790253198\/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\/version1790253198\/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\/version1790253198\/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\/version1790253198\/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\/version1790253198\/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\/version1790253198\/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\/version1790253198\/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/version1790253198/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/version1790253198/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/version1790253198/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/version1790253198/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/version1790253198/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/version1790253198/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/version1790253198/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/version1790253198/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/version1790253198/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/version1790253198/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/version1790253198/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/version1790253198/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/version1790253198/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/version1790253198/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/version1790253198/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/version1790253198/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/version1790253198/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/version1790253198/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/version1790253198/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/version1790253198/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/version1790253198/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/version1790253198/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/version1790253198/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_6ab52aa72c66d = 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_6ab52aa72c66d()" 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\/version1790253198\/frontend\/Steiff\/default\/en_GB\/languageIcons\/DE.svg"},{"id":3,"label":"Austria","store":"de-at","icon":"https:\/\/www.steiff.com\/static\/version1790253198\/frontend\/Steiff\/default\/en_GB\/languageIcons\/AT.svg"},{"id":4,"label":"United Kingdom","store":"en-uk","icon":"https:\/\/www.steiff.com\/static\/version1790253198\/frontend\/Steiff\/default\/en_GB\/languageIcons\/GB.svg"},{"id":21,"label":"USA \u0026 Canada","store":"en-us","icon":"https:\/\/www.steiff.com\/static\/version1790253198\/frontend\/Steiff\/default\/en_GB\/languageIcons\/US-CA.svg"},{"id":5,"label":"Belgium (English)","store":"en","icon":"https:\/\/www.steiff.com\/static\/version1790253198\/frontend\/Steiff\/default\/en_GB\/languageIcons\/BE.svg"},{"id":6,"label":"Belgium (French)","store":"fr","icon":"https:\/\/www.steiff.com\/static\/version1790253198\/frontend\/Steiff\/default\/en_GB\/languageIcons\/BE.svg"},{"id":7,"label":"France","store":"fr","icon":"https:\/\/www.steiff.com\/static\/version1790253198\/frontend\/Steiff\/default\/en_GB\/languageIcons\/FR.svg"},{"id":8,"label":"Netherlands","store":"en","icon":"https:\/\/www.steiff.com\/static\/version1790253198\/frontend\/Steiff\/default\/en_GB\/languageIcons\/NL.svg"},{"id":9,"label":"Luxembourg","store":"en","icon":"https:\/\/www.steiff.com\/static\/version1790253198\/frontend\/Steiff\/default\/en_GB\/languageIcons\/LU.svg"},{"id":10,"label":"Spain","store":"en","icon":"https:\/\/www.steiff.com\/static\/version1790253198\/frontend\/Steiff\/default\/en_GB\/languageIcons\/ES.svg"},{"id":11,"label":"Portugal","store":"en","icon":"https:\/\/www.steiff.com\/static\/version1790253198\/frontend\/Steiff\/default\/en_GB\/languageIcons\/PT.svg"},{"id":12,"label":"Estonia","store":"en","icon":"https:\/\/www.steiff.com\/static\/version1790253198\/frontend\/Steiff\/default\/en_GB\/languageIcons\/EE.svg"},{"id":13,"label":"Finland","store":"en","icon":"https:\/\/www.steiff.com\/static\/version1790253198\/frontend\/Steiff\/default\/en_GB\/languageIcons\/FI.svg"},{"id":14,"label":"Greece","store":"en","icon":"https:\/\/www.steiff.com\/static\/version1790253198\/frontend\/Steiff\/default\/en_GB\/languageIcons\/GR.svg"},{"id":15,"label":"Ireland","store":"en","icon":"https:\/\/www.steiff.com\/static\/version1790253198\/frontend\/Steiff\/default\/en_GB\/languageIcons\/IE.svg"},{"id":16,"label":"Italy","store":"en","icon":"https:\/\/www.steiff.com\/static\/version1790253198\/frontend\/Steiff\/default\/en_GB\/languageIcons\/IT.svg"},{"id":17,"label":"Latvia","store":"en","icon":"https:\/\/www.steiff.com\/static\/version1790253198\/frontend\/Steiff\/default\/en_GB\/languageIcons\/LV.svg"},{"id":18,"label":"Lithuania","store":"en","icon":"https:\/\/www.steiff.com\/static\/version1790253198\/frontend\/Steiff\/default\/en_GB\/languageIcons\/LT.svg"},{"id":19,"label":"Slovakia","store":"en","icon":"https:\/\/www.steiff.com\/static\/version1790253198\/frontend\/Steiff\/default\/en_GB\/languageIcons\/SK.svg"},{"id":20,"label":"Slovenia","store":"en","icon":"https:\/\/www.steiff.com\/static\/version1790253198\/frontend\/Steiff\/default\/en_GB\/languageIcons\/SI.svg"},{"id":22,"label":"Switzerland (German)","store":"de-ch","icon":"https:\/\/www.steiff.com\/static\/version1790253198\/frontend\/Steiff\/default\/en_GB\/languageIcons\/CH.svg"},{"id":23,"label":"Switzerland (French)","store":"fr-ch","icon":"https:\/\/www.steiff.com\/static\/version1790253198\/frontend\/Steiff\/default\/en_GB\/languageIcons\/CH.svg"},{"id":1,"label":"Europe (English)","store":"en","icon":"https:\/\/www.steiff.com\/static\/version1790253198\/frontend\/Steiff\/default\/en_GB\/languageIcons\/EUR.svg"}], 4103 currentStoreCode: 'en', 4104 countryHtmlMapping: {"1":"\u003Cimg src=\"https:\/\/www.steiff.com\/static\/version1790253198\/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\/version1790253198\/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\/version1790253198\/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\/version1790253198\/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\/version1790253198\/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\/version1790253198\/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\/version1790253198\/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\/version1790253198\/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\/version1790253198\/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\/version1790253198\/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\/version1790253198\/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\/version1790253198\/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\/version1790253198\/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\/version1790253198\/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\/version1790253198\/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\/version1790253198\/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\/version1790253198\/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\/version1790253198\/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\/version1790253198\/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\/version1790253198\/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\/version1790253198\/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\/version1790253198\/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\/version1790253198\/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\/version1790253198\/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" 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')" 4253 > 4254 <img src="https://www.steiff.com/static/version1790253198/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" 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')" 4259 > 4260 <img src="https://www.steiff.com/static/version1790253198/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"> 4261 Austria </a> 4262 <a href="https://www.steiff.com/en-uk" 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')" 4265 > 4266 <img src="https://www.steiff.com/static/version1790253198/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" 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')" 4271 > 4272 <img src="https://www.steiff.com/static/version1790253198/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/catalogsearch/result/" 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\u002Fcatalogsearch\u002Fresult\u002F')" 4277 > 4278 <img src="https://www.steiff.com/static/version1790253198/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" 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')" 4283 > 4284 <img src="https://www.steiff.com/static/version1790253198/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" 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')" 4289 > 4290 <img src="https://www.steiff.com/static/version1790253198/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/catalogsearch/result/" 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\u002Fcatalogsearch\u002Fresult\u002F')" 4295 > 4296 <img src="https://www.steiff.com/static/version1790253198/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/catalogsearch/result/" 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\u002Fcatalogsearch\u002Fresult\u002F')" 4301 > 4302 <img src="https://www.steiff.com/static/version1790253198/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/catalogsearch/result/" 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\u002Fcatalogsearch\u002Fresult\u002F')" 4307 > 4308 <img src="https://www.steiff.com/static/version1790253198/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/catalogsearch/result/" 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\u002Fcatalogsearch\u002Fresult\u002F')" 4313 > 4314 <img src="https://www.steiff.com/static/version1790253198/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/catalogsearch/result/" 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\u002Fcatalogsearch\u002Fresult\u002F')" 4319 > 4320 <img src="https://www.steiff.com/static/version1790253198/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/catalogsearch/result/" 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\u002Fcatalogsearch\u002Fresult\u002F')" 4325 > 4326 <img src="https://www.steiff.com/static/version1790253198/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/catalogsearch/result/" 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\u002Fcatalogsearch\u002Fresult\u002F')" 4331 > 4332 <img src="https://www.steiff.com/static/version1790253198/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/catalogsearch/result/" 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\u002Fcatalogsearch\u002Fresult\u002F')" 4337 > 4338 <img src="https://www.steiff.com/static/version1790253198/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/catalogsearch/result/" 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\u002Fcatalogsearch\u002Fresult\u002F')" 4343 > 4344 <img src="https://www.steiff.com/static/version1790253198/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/catalogsearch/result/" 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\u002Fcatalogsearch\u002Fresult\u002F')" 4349 > 4350 <img src="https://www.steiff.com/static/version1790253198/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/catalogsearch/result/" 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\u002Fcatalogsearch\u002Fresult\u002F')" 4355 > 4356 <img src="https://www.steiff.com/static/version1790253198/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/catalogsearch/result/" 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\u002Fcatalogsearch\u002Fresult\u002F')" 4361 > 4362 <img src="https://www.steiff.com/static/version1790253198/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/catalogsearch/result/" 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\u002Fcatalogsearch\u002Fresult\u002F')" 4367 > 4368 <img src="https://www.steiff.com/static/version1790253198/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" 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')" 4373 > 4374 <img src="https://www.steiff.com/static/version1790253198/frontend/Steiff/def
4374ault/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" 4377 class="text-black text-nowrap block px-4 py-1 lg:px-5 hover:bg-gray-light text-sm" 4378 @click.prevent="setCurrentCountry('23', 'https\u003A\u002F\u002Fwww.steiff.com\u002Ffr\u002Dch')" 4379 > 4380 <img src="https://www.steiff.com/static/version1790253198/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/version1790253198/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="X9I3NZicMzz63u9D" /> <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/version1790253198/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\u002Fversion1790253198\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":6000,"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/hello-kitty-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/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 "> 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/baby-kids-fashion/collections/autumn-winter-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/260805_steiff_HW-Fashion-LT1_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/260805_steiff_HW-Fashion-LT1_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/260805_steiff_HW-Fashion-LT1_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/260805_steiff_HW-Fashion-LT1_slide_750x750px__EN.jpg?format=avif 1x"><source type="image/webp" srcset="https://www.steiff.com/media/wysiwyg/Homepage/Slider_2026/260805_steiff_HW-Fashion-LT1_slide_750x750px__EN.jpg?format=webp 1x"><source type="image/jpeg" srcset="https://www.steiff.com/media/wysiwyg/Homepage/Slider_2026/260805_steiff_HW-Fashion-LT1_slide_750x750px__EN.jpg?format=auto 1x"><img src="https://www.steiff.com/media/wysiwyg/Homepage/Slider_2026/260805_steiff_HW-Fashion-LT1_slide_750x750px__EN.jpg?format=webp" width="1500" height="1500" alt="New fashion collection first 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 "> 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/version1790253198/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\u002Fversion1790253198\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/340363/" 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="112706" 7948 > 7949 <input name="form_key" type="hidden" value="1aHgrAsZWj2chSze" /> <input type="hidden" name="product" value="340363"/> 7950 <div class="relative"> 7951 <a href="https://www.steiff.com/en/pendant-hoppie-rabbit-love-112706" 7952 title="Pendant Hoppie rabbit – Love" 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-340363.window="$root.src = $event.detail" 7959 src="https://www.steiff.com/media/catalog/product/a/n/anhaenger-hoppie-hase-love-112706.jpg?format=webp&width=480" 7960 loading="lazy" 7961 width="240" 7962 height="300" 7963 alt="Anhänger Hoppie Hase – Love" 7964 title="Anhänger Hoppie Hase – Love" 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(340363, 'Pendant\u0020Hoppie\u0020rabbit\u0020\u2013\u0020Love')" 7976 :aria-disabled="wishlistPending" 7977 :aria-busy="wishlistPending" 7978 aria-label="Add to Wish List Pendant Hoppie rabbit – Love" 7979 :aria-label="isInWishlist(340363) ? 'Remove\u0020from\u0020Wish\u0020List\u0020Pendant\u0020Hoppie\u0020rabbit\u0020\u2013\u0020Love' : 'Add\u0020to\u0020Wish\u0020List\u0020Pendant\u0020Hoppie\u0020rabbit\u0020\u2013\u0020Love'" 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(340363) 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(340363) 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 Pendant Hoppie rabbit – Love" 8005 aria-label="Add to Cart Pendant Hoppie rabbit – Love" 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 15 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/pendant-hoppie-rabbit-love-112706" 8025 onclick="window.steiffTrackSliderProductClick?.("productslider-category-migrated_1782888533_6a44b8557eaca",0);" 8026 > 8027 Pendant Hoppie rabbit – Love </a> 8028 </div> 8029 8030 8031 <div class="pt-1 text-gray-dark" 8032 x-data="initPriceBox()" 8033 x-defer="intersect" 8034 @update-prices-340363.window="updatePrice($event.detail);" 8035 > 8036 <div class="price-box price-final_price" data-role="priceBox" data-product-id="340363" data-price-box="product-id-340363"> 8037 <span 8038 x-data x-id="['product\u002Dprice\u002D340363']" class="price-container price-final_price tax weee" 8039 > 8040 <span :id="$id('product\u002Dprice\u002D340363')" data-price-amount="24.95" 8041 data-price-type="finalPrice" 8042 class="price-wrapper " 8043 ><span class="price">€24.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/287102/" 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="081026" 8064 > 8065 <input name="form_key" type="hidden" value="1aHgrAsZWj2chSze" /> <input type="hidden" name="product" value="287102"/> 8066 <div class="relative"> 8067 <a href="https://www.steiff.com/en/light-at-night-hoppie-rabbit-081026" 8068 title="Light at Night Hoppie rabbit" 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-287102.window="$root.src = $event.detail" 8075 src="https://www.steiff.com/media/catalog/product/l/i/light-at-night-hoppie-hase-081026-10.jpg?format=webp&width=480" 8076 loading="lazy" 8077 width="240" 8078 height="300" 8079 alt="Light at Night Hoppie Hase" 8080 title="Light at Night Hoppie Hase" 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(287102, 'Light\u0020at\u0020Night\u0020Hoppie\u0020rabbit')" 8092 :aria-disabled="wishlistPending" 8093 :aria-busy="wishlistPending" 8094 aria-label="Add to Wish List Light at Night Hoppie rabbit" 8095 :aria-label="isInWishlist(287102) ? 'Remove\u0020from\u0020Wish\u0020List\u0020Light\u0020at\u0020Night\u0020Hoppie\u0020rabbit' : 'Add\u0020to\u0020Wish\u0020List\u0020Light\u0020at\u0020Night\u0020Hoppie\u0020rabbit'" 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(287102) 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(287102) 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 Light at Night Hoppie rabbit" 8121 aria-label="Add to Cart Light at Night Hoppie rabbit" 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 28 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/light-at-night-hoppie-rabbit-081026" 8141 onclick="window.steiffTrackSliderProductClick?.("productslider-category-migrated_1782888533_6a44b8557eaca",1);" 8142 > 8143 Light at Night Hoppie rabbit </a> 8144 </div> 8145 8146 8147 <div class="pt-1 text-gray-dark" 8148 x-data="initPriceBox()" 8149 x-defer="intersect" 8150 @update-prices-287102.window="updatePrice($event.detail);" 8151 > 8152 <div class="price-box price-final_price" data-role="priceBox" data-product-id="287102" data-price-box="product-id-287102"> 8153 <span
8154 x-data x-id="['product\u002Dprice\u002D287102']" class="price-container price-final_price tax weee" 8155 > 8156 <span :id="$id('product\u002Dprice\u002D287102')" data-price-amount="70" 8157 data-price-type="finalPrice" 8158 class="price-wrapper " 8159 ><span class="price">€70.00</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/85480/" 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="073427" 8180 > 8181 <input name="form_key" type="hidden" value="1aHgrAsZWj2chSze" /> <input type="hidden" name="product" value="85480"/> 8182 <div class="relative"> 8183 <a href="https://www.steiff.com/en/lita-lamb-073427" 8184 title="Lita lamb" 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-85480.window="$root.src = $event.detail" 8191 src="https://www.steiff.com/media/catalog/product/s/o/soft-cuddly-friends-lita-lamm-073427-13.jpg?format=webp&width=480" 8192 loading="lazy" 8193 width="240" 8194 height="300" 8195 alt="Lita Lamm" 8196 title="Lita Lamm" 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(85480, 'Lita\u0020lamb')" 8208 :aria-disabled="wishlistPending" 8209 :aria-busy="wishlistPending" 8210 aria-label="Add to Wish List Lita lamb" 8211 :aria-label="isInWishlist(85480) ? 'Remove\u0020from\u0020Wish\u0020List\u0020Lita\u0020lamb' : 'Add\u0020to\u0020Wish\u0020List\u0020Lita\u0020lamb'" 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(85480) 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(85480) 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 Lita lamb" 8237 aria-label="Add to Cart Lita lamb" 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 30 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/lita-lamb-073427" 8257 onclick="window.steiffTrackSliderProductClick?.("productslider-category-migrated_1782888533_6a44b8557eaca",2);" 8258 > 8259 Lita lamb </a> 8260 </div> 8261 8262 8263 <div class="pt-1 text-gray-dark" 8264 x-data="initPriceBox()" 8265 x-defer="intersect" 8266 @update-prices-85480.window="updatePrice($event.detail);" 8267 > 8268 <div class="price-box price-final_price" data-role="priceBox" data-product-id="85480" data-price-box="product-id-85480"> 8269 <span 8270 x-data x-id="['product\u002Dprice\u002D85480']" class="price-container price-final_price tax weee" 8271 > 8272 <span :id="$id('product\u002Dprice\u002D85480')" data-price-amount="39.95" 8273 data-price-type="finalPrice" 8274 class="price-wrapper " 8275 ><span class="price">€39.95</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/85744/" 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="241833" 8296 > 8297 <input name="form_key" type="hidden" value="1aHgrAsZWj2chSze" /> <input type="hidden" name="product" value="85744"/> 8298 <div class="relative"> 8299 <a href="https://www.steiff.com/en/ollie-owl-241833" 8300 title="Ollie owl" 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-85744.window="$root.src = $event.detail" 8307 src="https://www.steiff.com/media/catalog/product/s/o/soft-cuddly-friends-ollie-eule-241833-7.jpg?format=webp&width=480" 8308 loading="lazy" 8309 width="240" 8310 height="300" 8311 alt="Ollie Eule" 8312 title="Ollie Eule" 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(85744, 'Ollie\u0020owl')" 8324 :aria-disabled="wishlistPending" 8325 :aria-busy="wishlistPending" 8326 aria-label="Add to Wish List Ollie owl" 8327 :aria-label="isInWishlist(85744) ? 'Remove\u0020from\u0020Wish\u0020List\u0020Ollie\u0020owl' : 'Add\u0020to\u0020Wish\u0020List\u0020Ollie\u0020owl'" 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(85744) 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(85744) 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 Ollie owl" 8353 aria-label="Add to Cart Ollie owl" 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 23 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/ollie-owl-241833" 8373 onclick="window.steiffTrackSliderProductClick?.("productslider-category-migrated_1782888533_6a44b8557eaca",3);" 8374 > 8375 Ollie owl </a> 8376 </div> 8377 8378 8379 <div class="pt-1 text-gray-dark" 8380 x-data="initPriceBox()" 8381 x-defer="intersect" 8382 @update-prices-85744.window="updatePrice($event.detail);" 8383 > 8384 <div class="price-box price-final_price" data-role="priceBox" data-product-id="85744" data-price-box="product-id-85744"> 8385 <span 8386 x-data x-id="['product\u002Dprice\u002D85744']" class="price-container price-final_price tax weee" 8387 > 8388 <span :id="$id('product\u002Dprice\u002D85744')" data-price-amount="37.95" 8389 data-price-type="finalPrice" 8390 class="price-wrapper " 8391 ><span class="price">€37.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/320853/" 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="074417" 8412 > 8413 <input name="form_key" type="hidden" value="1aHgrAsZWj2chSze" /> <input type="hidden" name="product" value="320853"/>
8413 8414 <div class="relative"> 8415 <a href="https://www.steiff.com/en/pedro-racoon-074417" 8416 title="Pedro racoon" 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-320853.window="$root.src = $event.detail" 8423 src="https://www.steiff.com/media/catalog/product/p/e/pedro-waschbaer-074417.jpg?format=webp&width=480" 8424 loading="lazy" 8425 width="240" 8426 height="300" 8427 alt="Pedro Waschbär" 8428 title="Pedro Waschbär" 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(320853, 'Pedro\u0020racoon')" 8440 :aria-disabled="wishlistPending" 8441 :aria-busy="wishlistPending" 8442 aria-label="Add to Wish List Pedro racoon" 8443 :aria-label="isInWishlist(320853) ? 'Remove\u0020from\u0020Wish\u0020List\u0020Pedro\u0020racoon' : 'Add\u0020to\u0020Wish\u0020List\u0020Pedro\u0020racoon'" 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(320853) 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(320853) 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 Pedro racoon" 8469 aria-label="Add to Cart Pedro racoon" 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 23 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/pedro-racoon-074417" 8489 onclick="window.steiffTrackSliderProductClick?.("productslider-category-migrated_1782888533_6a44b8557eaca",4);" 8490 > 8491 Pedro racoon </a> 8492 </div> 8493 8494 8495 <div class="pt-1 text-gray-dark" 8496 x-data="initPriceBox()" 8497 x-defer="intersect" 8498 @update-prices-320853.window="updatePrice($event.detail);" 8499 > 8500 <div class="price-box price-final_price" data-role="priceBox" data-product-id="320853" data-price-box="product-id-320853"> 8501 <span
8502 x-data x-id="['product\u002Dprice\u002D320853']" class="price-container price-final_price tax weee" 8503 > 8504 <span :id="$id('product\u002Dprice\u002D320853')" 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/84727/" 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="099663" 8528 > 8529 <input name="form_key" type="hidden" value="1aHgrAsZWj2chSze" /> <input type="hidden" name="product" value="84727"/> 8530 <div class="relative"> 8531 <a href="https://www.steiff.com/en/lucy-cat-099663" 8532 title="Lucy cat" 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-84727.window="$root.src = $event.detail" 8539 src="https://www.steiff.com/media/catalog/product/l/u/lucy-katze-099663-13.jpg?format=webp&width=480" 8540 loading="lazy" 8541 width="240" 8542 height="300" 8543 alt="Lucy Katze" 8544 title="Lucy Katze" 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(84727, 'Lucy\u0020cat')" 8556 :aria-disabled="wishlistPending" 8557 :aria-busy="wishlistPending" 8558 aria-label="Add to Wish List Lucy cat" 8559 :aria-label="isInWishlist(84727) ? 'Remove\u0020from\u0020Wish\u0020List\u0020Lucy\u0020cat' : 'Add\u0020to\u0020Wish\u0020List\u0020Lucy\u0020cat'" 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(84727) 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(84727) 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 Lucy cat" 8585 aria-label="Add to Cart Lucy cat" 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 18 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/lucy-cat-099663" 8605 onclick="window.steiffTrackSliderProductClick?.("productslider-category-migrated_1782888533_6a44b8557eaca",5);" 8606 > 8607 Lucy cat </a> 8608 </div> 8609 8610 8611 <div class="pt-1 text-gray-dark" 8612 x-data="initPriceBox()" 8613 x-defer="intersect" 8614 @update-prices-84727.window="updatePrice($event.detail);" 8615 > 8616 <div class="price-box price-final_price" data-role="priceBox" data-product-id="84727" data-price-box="product-id-84727"> 8617 <span 8618 x-data x-id="['product\u002Dprice\u002D84727']" class="price-container price-final_price tax weee" 8619 > 8620 <span :id="$id('product\u002Dprice\u002D84727')" data-price-amount="49.95" 8621 data-price-type="finalPrice" 8622 class="price-wrapper " 8623 ><span class="price">€49.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/161640/" 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="063978" 8644 > 8645 <input name="form_key" type="hidden" value="1aHgrAsZWj2chSze" /> <input type="hidden" name="product" value="161640"/> 8646 <div class="relative"> 8647 <a href="https://www.steiff.com/en/piko-pig-063978" 8648 title="Piko pig" 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-161640.window="$root.src = $event.detail" 8655 src="https://www.steiff.com/media/catalog/product/s/o/soft-cuddly-friends-piko-schwein-063978-1.jpg?format=webp&width=480" 8656 loading="lazy" 8657 width="240" 8658 height="300" 8659 alt="Piko Schwein" 8660 title="Piko Schwein" 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(161640, 'Piko\u0020pig')" 8672 :aria-disabled="wishlistPending" 8673 :aria-busy="wishlistPending" 8674 aria-label="Add to Wish List Piko pig" 8675 :aria-label="isInWishlist(161640) ? 'Remove\u0020from\u0020Wish\u0020List\u0020Piko\u0020pig' : 'Add\u0020to\u0020Wish\u0020List\u0020Piko\u0020pig'" 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(161640) 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(161640) 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 Piko pig" 8701 aria-label="Add to Cart Piko pig" 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 28 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/piko-pig-063978" 8721 onclick="window.steiffTrackSliderProductClick?.("productslider-category-migrated_1782888533_6a44b8557eaca",6);" 8722 > 8723 Piko pig </a> 8724 </div> 8725 8726 8727 <div class="pt-1 text-gray-dark" 8728 x-data="initPriceBox()" 8729 x-defer="intersect" 8730 @update-prices-161640.window="updatePrice($event.detail);" 8731 > 8732 <div class="price-box price-final_price" data-role="priceBox" data-product-id="161640" data-price-box="product-id-161640"> 8733 <span 8734 x-data x-id="['product\u002Dprice\u002D161640']" class="price-container price-final_price tax weee" 8735 > 8736 <span :id="$id('product\u002Dprice\u002D161640')" 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/84241/" 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="080470" 8760 > 8761 <input name="form_key" type="hidden" value="1aHgrAsZWj2chSze" /> <input type="hidden" name="product" value="84241"/> 8762 <div class="relative"> 8763 <a href="https://www.steiff.com/en/hoppie-rabbit-080470" 8764 title="Hoppie rabbit" 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-84241.window="$root.src = $event.detail" 8771 src="https://www.steiff.com/media/catalog/product/s/o/soft-cuddly-friends-hoppie-hase-080470-8.jpg?format=webp&width=480" 8772 loading="lazy" 8773 width="240" 8774 height="300" 8775 alt="Hoppie Hase" 8776 title="Hoppie Hase" 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(84241, 'Hoppie\u0020rabbit')" 8788 :aria-disabled="wishlistPending" 8789 :aria-busy="wishlistPending" 8790 aria-label="Add to Wish List Hoppie rabbit" 8791 :aria-label="isInWishlist(84241) ? 'Remove\u0020from\u0020Wish\u0020List\u0020Hoppie\u0020rabbit' : 'Add\u0020to\u0020Wish\u0020List\u0020Hoppie\u0020rabbit'" 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(84241) 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(84241) 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 Hoppie rabbit" 8817 aria-label="Add to Cart Hoppie rabbit" 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 28 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/hoppie-rabbit-080470" 8837 onclick="window.steiffTrackSliderProductClick?.("productslider-category-migrated_1782888533_6a44b8557eaca",7);" 8838 > 8839 Hoppie rabbit </a> 8840 </div> 8841 8842 8843 <div class="pt-1 text-gray-dark" 8844 x-data="initPriceBox()" 8845 x-defer="intersect" 8846 @update-prices-84241.window="updatePrice($event.detail);" 8847 > 8848 <div class="price-box price-final_price" data-role="priceBox" data-product-id="84241" data-price-box="product-id-84241"> 8849 <span 8850 x-data x-id="['product\u002Dprice\u002D84241']" class="price-container price-final_price tax weee" 8851 >
8852 <span :id="$id('product\u002Dprice\u002D84241')" data-price-amount="37.95" 8853 data-price-type="finalPrice" 8854 class="price-wrapper " 8855 ><span class="price">€37.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/278494/" 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="242717" 8876 > 8877 <input name="form_key" type="hidden" value="1aHgrAsZWj2chSze" /> <input type="hidden" name="product" value="278494"/> 8878 <div class="relative"> 8879 <a href="https://www.steiff.com/en/my-first-steiff-ellie-elephant-242717" 8880 title="My first Steiff Ellie elephant" 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-278494.window="$root.src = $event.detail" 8887 src="https://www.steiff.com/media/catalog/product/m/y/my-first-steiff-ellie-elefant-242717.jpg?format=webp&width=480" 8888 loading="lazy" 8889 width="240" 8890 height="300" 8891 alt="My first Steiff Ellie Elefant" 8892 title="My first Steiff Ellie Elefant" 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(278494, 'My\u0020first\u0020Steiff\u0020Ellie\u0020elephant')" 8904 :aria-disabled="wishlistPending" 8905 :aria-busy="wishlistPending" 8906 aria-label="Add to Wish List My first Steiff Ellie elephant" 8907 :aria-label="isInWishlist(278494) ? 'Remove\u0020from\u0020Wish\u0020List\u0020My\u0020first\u0020Steiff\u0020Ellie\u0020elephant' : 'Add\u0020to\u0020Wish\u0020List\u0020My\u0020first\u0020Steiff\u0020Ellie\u0020elephant'" 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(278494) 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(278494) 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 My first Steiff Ellie elephant" 8933 aria-label="Add to Cart My first Steiff Ellie elephant" 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 24 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/my-first-steiff-ellie-elephant-242717" 8953 onclick="window.steiffTrackSliderProductClick?.("productslider-category-migrated_1782888533_6a44b8557eaca",8);" 8954 > 8955 My first Steiff Ellie elephant </a> 8956 </div> 8957 8958 8959 <div class="pt-1 text-gray-dark" 8960 x-data="initPriceBox()" 8961 x-defer="intersect" 8962 @update-prices-278494.window="updatePrice($event.detail);" 8963 > 8964 <div class="price-box price-final_price" data-role="priceBox" data-product-id="278494" data-price-box="product-id-278494"> 8965 <span 8966 x-data x-id="['product\u002Dprice\u002D278494']" class="price-container price-final_price tax weee" 8967 > 8968 <span :id="$id('product\u002Dprice\u002D278494')" data-price-amount="37.95" 8969 data-price-type="finalPrice" 8970 class="price-wrapper " 8971 ><span class="price">€37.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/85555/" 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="073922" 8992 > 8993 <input name="form_key" type="hidden" value="1aHgrAsZWj2chSze" /> <input type="hidden" name="product" value="85555"/> 8994 <div class="relative"> 8995 <a href="https://www.steiff.com/en/dinkie-donkey-073922" 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-85555.window="$root.src = $event.detail" 9003 src="https://www.steiff.com/media/catalog/product/s/o/soft-cuddly-friends-dinkie-esel-073922-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(85555, 'Dinkie\u0020donkey')" 9020 :aria-disabled="wishlistPending" 9021 :aria-busy="wishlistPending" 9022 aria-label="Add to Wish List Dinkie donkey" 9023 :aria-label="isInWishlist(85555) ? '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(85555) 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(85555) 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 20 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-073922" 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-85555.window="updatePrice($event.detail);" 9079 > 9080 <div class="price-box price-final_price" data-role="priceBox" data-product-id="85555" data-price-box="product-id-85555"> 9081 <span 9082 x-data x-id="['product\u002Dprice\u002D85555']" class="price-container price-final_price tax weee" 9083 > 9084 <span :id="$id('product\u002Dprice\u002D85555')" data-price-amount="27.95" 9085 data-price-type="finalPrice" 9086 class="price-wrapper " 9087 ><span class="price">€27.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/320865/" 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="024375" 9108 > 9109 <input name="form_key" type="hidden" value="1aHgrAsZWj2chSze" /> <input type="hidden" name="product" value="320865"/> 9110 <div class="relative"> 9111 <a href="https://www.steiff.com/en/snoopy-love-024375" 9112 title="Snoopy Love" 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-320865.window="$root.src = $event.detail" 9119 src="https://www.steiff.com/media/catalog/product/s/n/snoopy-love-024375.jpg?format=webp&width=480" 9120 loading="lazy" 9121 width="240" 9122 height="300" 9123 alt="Snoopy Love" 9124 title="Snoopy Love" 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(320865, 'Snoopy\u0020Love')" 9136 :aria-disabled="wishlistPending" 9137 :aria-busy="wishlistPending" 9138 aria-label="Add to Wish List Snoopy Love" 9139 :aria-label="isInWishlist(320865) ? 'Remove\u0020from\u0020Wish\u0020List\u0020Snoopy\u0020Love' : 'Add\u0020to\u0020Wish\u0020List\u0020Snoopy\u0020Love'" 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(320865) 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(320865) 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 Snoopy Love" 9165 aria-label="Add to Cart Snoopy Love" 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 30 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/snoopy-love-024375" 9185 onclick="window.steiffTrackSliderProductClick?.("productslider-category-migrated_1782888533_6a44b8557eaca",10);" 9186 > 9187 Snoopy Love </a> 9188 </div> 9189 9190 9191 <div class="pt-1 text-gray-dark" 9192 x-data="initPriceBox()" 9193 x-defer="intersect" 9194 @update-prices-320865.window="updatePrice($event.detail);" 9195 > 9196 <div class="price-box price-final_price" data-role="priceBox" data-product-id="320865" data-price-box="product-id-320865"> 9197 <span 9198 x-data x-id="['product\u002Dprice\u002D320865']" class="price-container price-final_price tax weee" 9199 >
9200 <span :id="$id('product\u002Dprice\u002D320865')" data-price-amount="49.95" 9201 data-price-type="finalPrice" 9202 class="price-wrapper " 9203 ><span class="price">€49.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/85540/" 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="073748" 9224 > 9225 <input name="form_key" type="hidden" value="1aHgrAsZWj2chSze" /> <input type="hidden" name="product" value="85540"/> 9226 <div class="relative"> 9227 <a href="https://www.steiff.com/en/dinkie-donkey-073748" 9228 title="Dinkie donkey" 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-85540.window="$root.src = $event.detail" 9235 src="https://www.steiff.com/media/catalog/product/s/o/soft-cuddly-friends-dinkie-esel-073748-3.jpg?format=webp&width=480" 9236 loading="lazy" 9237 width="240" 9238 height="300" 9239 alt="Dinkie Esel" 9240 title="Dinkie Esel" 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(85540, 'Dinkie\u0020donkey')" 9252 :aria-disabled="wishlistPending" 9253 :aria-busy="wishlistPending" 9254 aria-label="Add to Wish List Dinkie donkey" 9255 :aria-label="isInWishlist(85540) ? 'Remove\u0020from\u0020Wish\u0020List\u0020Dinkie\u0020donkey' : 'Add\u0020to\u0020Wish\u0020List\u0020Dinkie\u0020donkey'" 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(85540) 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(85540) 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 Dinkie donkey" 9281 aria-label="Add to Cart Dinkie donkey" 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 30 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/dinkie-donkey-073748" 9301 onclick="window.steiffTrackSliderProductClick?.("productslider-category-migrated_1782888533_6a44b8557eaca",11);" 9302 > 9303 Dinkie donkey </a> 9304 </div> 9305 9306 9307 <div class="pt-1 text-gray-dark" 9308 x-data="initPriceBox()" 9309 x-defer="intersect" 9310 @update-prices-85540.window="updatePrice($event.detail);" 9311 > 9312 <div class="price-box price-final_price" data-role="priceBox" data-product-id="85540" data-price-box="product-id-85540"> 9313 <span 9314 x-data x-id="['product\u002Dprice\u002D85540']" class="price-container price-final_price tax weee" 9315 > 9316 <span :id="$id('product\u002Dprice\u002D85540')" data-price-amount="39.95" 9317 data-price-type="finalPrice" 9318 class="price-wrapper " 9319 ><span class="price">€39.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/294171/" 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="024696" 9340 > 9341 <input name="form_key" type="hidden" value="1aHgrAsZWj2chSze" /> <input type="hidden" name="product" value="294171"/> 9342 <div class="relative"> 9343 <a href="https://www.steiff.com/en/disney-originals-stitch-024696" 9344 title="Disney Originals Stitch" 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-294171.window="$root.src = $event.detail" 9351 src="https://www.steiff.com/media/catalog/product/d/i/disney-originals-stitch-024696.jpg?format=webp&width=480" 9352 loading="lazy" 9353 width="240" 9354 height="300" 9355 alt="Disney Originals Stitch" 9356 title="Disney Originals Stitch" 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(294171, 'Disney\u0020Originals\u0020Stitch')" 9368 :aria-disabled="wishlistPending" 9369 :aria-busy="wishlistPending" 9370 aria-label="Add to Wish List Disney Originals Stitch" 9371 :aria-label="isInWishlist(294171) ? 'Remove\u0020from\u0020Wish\u0020List\u0020Disney\u0020Originals\u0020Stitch' : 'Add\u0020to\u0020Wish\u0020List\u0020Disney\u0020Originals\u0020Stitch'" 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(294171) 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(294171) 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 Disney Originals Stitch" 9397 aria-label="Add to Cart Disney Originals Stitch" 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 22 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/disney-originals-stitch-024696" 9417 onclick="window.steiffTrackSliderProductClick?.("productslider-category-migrated_1782888533_6a44b8557eaca",12);" 9418 > 9419 Disney Originals Stitch </a> 9420 </div> 9421 9422 9423 <div class="pt-1 text-gray-dark" 9424 x-data="initPriceBox()" 9425 x-defer="intersect" 9426 @update-prices-294171.window="updatePrice($event.detail);" 9427 > 9428 <div class="price-box price-final_price" data-role="priceBox" data-product-id="294171" data-price-box="product-id-294171"> 9429 <span 9430 x-data x-id="['product\u002Dprice\u002D294171']" class="price-container price-final_price tax weee" 9431 > 9432 <span :id="$id('product\u002Dprice\u002D294171')" data-price-amount="55" 9433 data-price-type="finalPrice" 9434 class="price-wrapper " 9435 ><span class="price">€55.00</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/287057/" 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="095375" 9456 > 9457 <input name="form_key" type="hidden" value="1aHgrAsZWj2chSze" /> <input type="hidden" name="product" value="287057"/> 9458 <div class="relative"> 9459 <a href="https://www.steiff.com/en/gin-snake-095375" 9460 title="Gin snake" 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-287057.window="$root.src = $event.detail" 9467 src="https://www.steiff.com/media/catalog/product/g/i/gin-schlange-095375.jpg?format=webp&width=480" 9468 loading="lazy" 9469 width="240" 9470 height="300" 9471 alt="Gin Schlange" 9472 title="Gin Schlange" 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(287057, 'Gin\u0020snake')" 9484 :aria-disabled="wishlistPending" 9485 :aria-busy="wishlistPending" 9486 aria-label="Add to Wish List Gin snake" 9487 :aria-label="isInWishlist(287057) ? 'Remove\u0020from\u0020Wish\u0020List\u0020Gin\u0020snake' : 'Add\u0020to\u0020Wish\u0020List\u0020Gin\u0020snake'" 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(287057) 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(287057) 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 Gin snake" 9513 aria-label="Add to Cart Gin snake" 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 130 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/gin-snake-095375" 9533 onclick="window.steiffTrackSliderProductClick?.("productslider-category-migrated_1782888533_6a44b8557eaca",13);" 9534 > 9535 Gin snake </a> 9536 </div> 9537 9538 9539 <div class="pt-1 text-gray-dark" 9540 x-data="initPriceBox()" 9541 x-defer="intersect" 9542 @update-prices-287057.window="updatePrice($event.detail);" 9543 > 9544 <div class="price-box price-final_price" data-role="priceBox" data-product-id="287057" data-price-box="product-id-287057"> 9545 <span 9546 x-data x-id="['product\u002Dprice\u002D287057']" class="price-container price-final_price tax weee" 9547 >
9548 <span :id="$id('product\u002Dprice\u002D287057')" data-price-amount="44.95" 9549 data-price-type="finalPrice" 9550 class="price-wrapper " 9551 ><span class="price">€44.95</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/276505/" 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="074318" 9572 > 9573 <input name="form_key" type="hidden" value="1aHgrAsZWj2chSze" /> <input type="hidden" name="product" value="276505"/> 9574 <div class="relative"> 9575 <a href="https://www.steiff.com/en/gola-horse-074318" 9576 title="Gola horse" 9577 class="product photo product-item-photo block mx-auto mb-3 w-full aspect-[4/5]" 9578 tabindex="-1" 9579 onclick="window.steiffTrackSliderProductClick?.("productslider-category-migrated_1782888533_6a44b8557eaca",14);" 9580 > 9581 <img class="object-contain w-full product-image-photo" 9582 @update-gallery-276505.window="$root.src = $event.detail" 9583 src="https://www.steiff.com/media/catalog/product/s/o/soft-cuddly-friends-gola-pferd-074318-15.jpg?format=webp&width=480" 9584 loading="lazy" 9585 width="240" 9586 height="300" 9587 alt="Gola Pferd" 9588 title="Gola Pferd" 9589/> 9590 </a> 9591 <div class="flex flex-row gap-2 w-full justify-end md:absolute md:bottom-4"> 9592 <button x-data="initWishlist()" 9593 x-defer="intersect" 9594 @private-content-loaded.window="setLoginState($event.detail.data)" 9595 @wishlist-after-auth-login.window="handleWishlistAfterAuthLogin()" 9596 @auth-modal-wishlist-cancelled.window="clearPendingWishlist()" 9597 @wishlist-product-added.window="handleWishlistProductAdded($event.detail)" 9598 @wishlist-product-removed.window="handleWishlistProductRemoved($event.detail)" 9599 @click.prevent.stop="toggleWishlist(276505, 'Gola\u0020horse')" 9600 :aria-disabled="wishlistPending" 9601 :aria-busy="wishlistPending" 9602 aria-label="Add to Wish List Gola horse" 9603 :aria-label="isInWishlist(276505) ? 'Remove\u0020from\u0020Wish\u0020List\u0020Gola\u0020horse' : 'Add\u0020to\u0020Wish\u0020List\u0020Gola\u0020horse'" 9604 type="button" 9605 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" 9606 :class="{ 'opacity-50 pointer-events-none': wishlistPending }" 9607 data-addto="wishlist" 9608 > 9609 <span x-cloak 9610 :class="isInWishlist(276505) 9611 ? 'flex group-hover:hidden' 9612 : 'hidden group-hover:flex'"> 9613 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" width="20" height="20" aria-hidden="true"> 9614 <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"/> 9615</svg> 9616 </span> 9617 <span :class="isInWishlist(276505) 9618 ? 'hidden group-hover:flex' 9619 : 'flex group-hover:hidden'"> 9620 <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"> 9621 <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"/> 9622</svg> 9623 </span> 9624 </button> 9625 9626 <button 9627 class="btn btn-primary rounded-full p-2 justify-center cmsp511-text-sm" 9628 title="Add to Cart Gola horse" 9629 aria-label="Add to Cart Gola horse" 9630 data-addto="cart" 9631 > 9632 <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"> 9633 <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
96330 014 0z"/> 9634</svg> 9635 </button> 9636 </div> 9637 </div> 9638 9639 <div class="product-info flex flex-col grow min-h-32"> 9640 <div class="w-fit"> 9641 <p class="cmsp511-text-sm text-gray-medium"> 9642 Size: 9643 27 cm </p> 9644 </div> 9645 <div class="mt-2 mb-1 items-center justify-left font-semibold cmsp511-text-base cmsp511-text-left"> 9646 <a 9647 class="product-item-link line-clamp-2 text-ellipsis overflow-hidden text-black" 9648 href="https://www.steiff.com/en/gola-horse-074318" 9649 onclick="window.steiffTrackSliderProductClick?.("productslider-category-migrated_1782888533_6a44b8557eaca",14);" 9650 > 9651 Gola horse </a> 9652 </div> 9653 9654 9655 <div class="pt-1 text-gray-dark" 9656 x-data="initPriceBox()" 9657 x-defer="intersect" 9658 @update-prices-276505.window="updatePrice($event.detail);" 9659 > 9660 <div class="price-box price-final_price" data-role="priceBox" data-product-id="276505" data-price-box="product-id-276505"> 9661 <span 9662 x-data x-id="['product\u002Dprice\u002D276505']" class="price-container price-final_price tax weee" 9663 > 9664 <span :id="$id('product\u002Dprice\u002D276505')" data-price-amount="44.95" 9665 data-price-type="finalPrice" 9666 class="price-wrapper " 9667 ><span class="price">€44.95</span></span> 9668 </span> 9669 9670 9671</div> </div> 9672 9673 </div> 9674</form> 9675 </div> 9676 <div class="swiper-slide p-2 flex shrink-0 md:w-1/2 lg:w-1/3 xl:w-1/4" 9677 role="group" 9678 aria-roledescription="slide" 9679 aria-label="16 of 20" 9680 > 9681 9682<form method="post" 9683 action="https://www.steiff.com/en/checkout/cart/add/uenc/%25uenc%25/product/284266/" 9684 class="item product relative product-item transition-shadow product_addtocart_form card hover:bg-white grow flex flex-col w-full" 9685 data-product-type="simple" 9686 onsubmit="this.elements.form_key.value = hyva.getFormKey()" 9687 data-sku="081019" 9688 > 9689 <input name="form_key" type="hidden" value="1aHgrAsZWj2chSze" /> <input type="hidden" name="product" value="284266"/> 9690 <div class="relative"> 9691 <a href="https://www.steiff.com/en/melly-rabbit-081019" 9692 title="Melly rabbit" 9693 class="product photo product-item-photo block mx-auto mb-3 w-full aspect-[4/5]" 9694 tabindex="-1" 9695 onclick="window.steiffTrackSliderProductClick?.("productslider-category-migrated_1782888533_6a44b8557eaca",15);" 9696 > 9697 <img class="object-contain w-full product-image-photo" 9698 @update-gallery-284266.window="$root.src = $event.detail" 9699 src="https://www.steiff.com/media/catalog/product/m/e/melly-hase-081019-1.jpg?format=webp&width=480" 9700 loading="lazy" 9701 width="240" 9702 height="300" 9703 alt="Melly Hase" 9704 title="Melly Hase" 9705/> 9706 </a> 9707 <div class="flex flex-row gap-2 w-full justify-end md:absolute md:bottom-4"> 9708 <button x-data="initWishlist()" 9709 x-defer="intersect" 9710 @private-content-loaded.window="setLoginState($event.detail.data)" 9711 @wishlist-after-auth-login.window="handleWishlistAfterAuthLogin()" 9712 @auth-modal-wishlist-cancelled.window="clearPendingWishlist()" 9713 @wishlist-product-added.window="handleWishlistProductAdded($event.detail)" 9714 @wishlist-product-removed.window="handleWishlistProductRemoved($event.detail)" 9715 @click.prevent.stop="toggleWishlist(284266, 'Melly\u0020rabbit')" 9716 :aria-disabled="wishlistPending" 9717 :aria-busy="wishlistPending" 9718 aria-label="Add to Wish List Melly rabbit" 9719 :aria-label="isInWishlist(284266) ? 'Remove\u0020from\u0020Wish\u0020List\u0020Melly\u0020rabbit' : 'Add\u0020to\u0020Wish\u0020List\u0020Melly\u0020rabbit'" 9720 type="button" 9721 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" 9722 :class="{ 'opacity-50 pointer-events-none': wishlistPending }" 9723 data-addto="wishlist" 9724 >
9725 <span x-cloak 9726 :class="isInWishlist(284266) 9727 ? 'flex group-hover:hidden' 9728 : 'hidden group-hover:flex'"> 9729 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" width="20" height="20" aria-hidden="true"> 9730 <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"/> 9731</svg> 9732 </span> 9733 <span :class="isInWishlist(284266) 9734 ? 'hidden group-hover:flex' 9735 : 'flex group-hover:hidden'"> 9736 <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"> 9737 <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"/> 9738</svg> 9739 </span> 9740 </button> 9741 9742 <button 9743 class="btn btn-primary rounded-full p-2 justify-center cmsp511-text-sm" 9744 title="Add to Cart Melly rabbit" 9745 aria-label="Add to Cart Melly rabbit" 9746 data-addto="cart" 9747 > 9748 <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"> 9749 <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"/> 9750</svg> 9751 </button> 9752 </div> 9753 </div> 9754 9755 <div class="product-info flex flex-col grow min-h-32"> 9756 <div class="w-fit"> 9757 <p class="cmsp511-text-sm text-gray-medium"> 9758 Size: 9759 20 cm </p> 9760 </div> 9761 <div class="mt-2 mb-1 items-center justify-left font-semibold cmsp511-text-base cmsp511-text-left"> 9762 <a 9763 class="product-item-link line-clamp-2 text-ellipsis overflow-hidden text-black" 9764 href="https://www.steiff.com/en/melly-rabbit-081019" 9765 onclick="window.steiffTrackSliderProductClick?.("productslider-category-migrated_1782888533_6a44b8557eaca",15);" 9766 > 9767 Melly rabbit </a> 9768 </div> 9769 9770 9771 <div class="pt-1 text-gray-dark" 9772 x-data="initPriceBox()" 9773 x-defer="intersect" 9774 @update-prices-284266.window="updatePrice($event.detail);" 9775 > 9776 <div class="price-box price-final_price" data-role="priceBox" data-product-id="284266" data-price-box="product-id-284266"> 9777 <span 9778 x-data x-id="['product\u002Dprice\u002D284266']" class="price-container price-final_price tax weee" 9779 > 9780 <span :id="$id('product\u002Dprice\u002D284266')" data-price-amount="49.95" 9781 data-price-type="finalPrice" 9782 class="price-wrapper " 9783 ><span class="price">€49.95</span></span> 9784 </span> 9785 9786 9787</div> </div> 9788 9789 </div> 9790</form> 9791 </div> 9792 <div class="swiper-slide p-2 flex shrink-0 md:w-1/2 lg:w-1/3 xl:w-1/4" 9793 role="group" 9794 aria-roledescription="slide" 9795 aria-label="17 of 20" 9796 > 9797 9798<form method="post" 9799 action="https://www.steiff.com/en/checkout/cart/add/uenc/%25uenc%25/product/85948/" 9800 class="item product relative product-item transition-shadow product_addtocart_form card hover:bg-white grow flex flex-col w-full" 9801 data-product-type="simple" 9802 onsubmit="this.elements.form_key.value = hyva.getFormKey()" 9803 data-sku="087806" 9804 > 9805 <input name="form_key" type="hidden" value="1aHgrAsZWj2chSze" /> <input type="hidden" name="product" value="85948"/> 9806 <div class="relative"> 9807 <a href="https://www.steiff.com/en/dixi-triceratops-087806" 9808 title="Dixi triceratops" 9809 class="product photo product-item-photo block mx-auto mb-3 w-full aspect-[4/5]" 9810 tabindex="-1" 9811 onclick="window.steiffTrackSliderProductClick?.("productslider-category-migrated_1782888533_6a44b8557eaca",16);" 9812 > 9813 <img class="object-contain w-full product-image-photo" 9814 @update-gallery-85948.window="$root.src = $event.detail" 9815 src="https://www.steiff.com/media/catalog/product/s/o/soft-cuddly-friends-dixi-triceratops-087806-5.jpg?format=webp&width=480" 9816 loading="lazy" 9817 width="240" 9818 height="300" 9819 alt="Dixi Triceratops" 9820 title="Dixi Triceratops" 9821/> 9822 </a> 9823 <div class="flex flex-row gap-2 w-full justify-end md:absolute md:bottom-4"> 9824 <button x-data="initWishlist()" 9825 x-defer="intersect"
9826 @private-content-loaded.window="setLoginState($event.detail.data)" 9827 @wishlist-after-auth-login.window="handleWishlistAfterAuthLogin()" 9828 @auth-modal-wishlist-cancelled.window="clearPendingWishlist()" 9829 @wishlist-product-added.window="handleWishlistProductAdded($event.detail)" 9830 @wishlist-product-removed.window="handleWishlistProductRemoved($event.detail)" 9831 @click.prevent.stop="toggleWishlist(85948, 'Dixi\u0020triceratops')" 9832 :aria-disabled="wishlistPending" 9833 :aria-busy="wishlistPending" 9834 aria-label="Add to Wish List Dixi triceratops" 9835 :aria-label="isInWishlist(85948) ? 'Remove\u0020from\u0020Wish\u0020List\u0020Dixi\u0020triceratops' : 'Add\u0020to\u0020Wish\u0020List\u0020Dixi\u0020triceratops'" 9836 type="button" 9837 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" 9838 :class="{ 'opacity-50 pointer-events-none': wishlistPending }" 9839 data-addto="wishlist" 9840 > 9841 <span x-cloak 9842 :class="isInWishlist(85948) 9843 ? 'flex group-hover:hidden' 9844 : 'hidden group-hover:flex'"> 9845 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" width="20" height="20" aria-hidden="true"> 9846 <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"/> 9847</svg> 9848 </span> 9849 <span :class="isInWishlist(85948) 9850 ? 'hidden group-hover:flex' 9851 : 'flex group-hover:hidden'"> 9852 <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"> 9853 <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"/> 9854</svg> 9855 </span> 9856 </button> 9857 9858 <button 9859 class="btn btn-primary rounded-full p-2 justify-center cmsp511-text-sm" 9860 title="Add to Cart Dixi triceratops" 9861 aria-label="Add to Cart Dixi triceratops" 9862 data-addto="cart" 9863 > 9864 <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"> 9865 <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"/> 9866</svg> 9867 </button> 9868 </div> 9869 </div> 9870 9871 <div class="product-info flex flex-col grow min-h-32"> 9872 <div class="w-fit"> 9873 <p class="cmsp511-text-sm text-gray-medium"> 9874 Size: 9875 28 cm </p> 9876 </div> 9877 <div class="mt-2 mb-1 items-center justify-left font-semibold cmsp511-text-base cmsp511-text-left"> 9878 <a 9879 class="product-item-link line-clamp-2 text-ellipsis overflow-hidden text-black" 9880 href="https://www.steiff.com/en/dixi-triceratops-087806" 9881 onclick="window.steiffTrackSliderProductClick?.("productslider-category-migrated_1782888533_6a44b8557eaca",16);" 9882 > 9883 Dixi triceratops </a> 9884 </div> 9885 9886 9887 <div class="pt-1 text-gray-dark" 9888 x-data="initPriceBox()" 9889 x-defer="intersect" 9890 @update-prices-85948.window="updatePrice($event.detail);" 9891 > 9892 <div class="price-box price-final_price" data-role="priceBox" data-product-id="85948" data-price-box="product-id-85948"> 9893 <span
9894 x-data x-id="['product\u002Dprice\u002D85948']" class="price-container price-final_price tax weee" 9895 > 9896 <span :id="$id('product\u002Dprice\u002D85948')" data-price-amount="39.95" 9897 data-price-type="finalPrice" 9898 class="price-wrapper " 9899 ><span class="price">€39.95</span></span> 9900 </span> 9901 9902 9903</div> </div> 9904 9905 </div> 9906</form> 9907 </div> 9908 <div class="swiper-slide p-2 flex shrink-0 md:w-1/2 lg:w-1/3 xl:w-1/4" 9909 role="group" 9910 aria-roledescription="slide" 9911 aria-label="18 of 20" 9912 > 9913 9914<form method="post" 9915 action="https://www.steiff.com/en/checkout/cart/add/uenc/%25uenc%25/product/239470/" 9916 class="item product relative product-item transition-shadow product_addtocart_form card hover:bg-white grow flex flex-col w-full" 9917 data-product-type="simple" 9918 onsubmit="this.elements.form_key.value = hyva.getFormKey()" 9919 data-sku="067471" 9920 > 9921 <input name="form_key" type="hidden" value="1aHgrAsZWj2chSze" /> <input type="hidden" name="product" value="239470"/> 9922 <div class="relative"> 9923 <a href="https://www.steiff.com/en/bommel-dangling-rabbit-067471" 9924 title="Bommel dangling rabbit" 9925 class="product photo product-item-photo block mx-auto mb-3 w-full aspect-[4/5]" 9926 tabindex="-1" 9927 onclick="window.steiffTrackSliderProductClick?.("productslider-category-migrated_1782888533_6a44b8557eaca",17);" 9928 > 9929 <img class="object-contain w-full product-image-photo" 9930 @update-gallery-239470.window="$root.src = $event.detail" 9931 src="https://www.steiff.com/media/catalog/product/b/o/bommel-schlenker-hase-067471-20.jpg?format=webp&width=480" 9932 loading="lazy" 9933 width="240" 9934 height="300" 9935 alt="Bommel Schlenker-Hase" 9936 title="Bommel Schlenker-Hase" 9937/> 9938 </a> 9939 <div class="flex flex-row gap-2 w-full justify-end md:absolute md:bottom-4"> 9940 <button x-data="initWishlist()" 9941 x-defer="intersect" 9942 @private-content-loaded.window="setLoginState($event.detail.data)" 9943 @wishlist-after-auth-login.window="handleWishlistAfterAuthLogin()" 9944 @auth-modal-wishlist-cancelled.window="clearPendingWishlist()" 9945 @wishlist-product-added.window="handleWishlistProductAdded($event.detail)" 9946 @wishlist-product-removed.window="handleWishlistProductRemoved($event.detail)" 9947 @click.prevent.stop="toggleWishlist(239470, 'Bommel\u0020dangling\u0020rabbit')" 9948 :aria-disabled="wishlistPending" 9949 :aria-busy="wishlistPending" 9950 aria-label="Add to Wish List Bommel dangling rabbit" 9951 :aria-label="isInWishlist(239470) ? 'Remove\u0020from\u0020Wish\u0020List\u0020Bommel\u0020dangling\u0020rabbit' : 'Add\u0020to\u0020Wish\u0020List\u0020Bommel\u0020dangling\u0020rabbit'" 9952 type="button" 9953 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" 9954 :class="{ 'opacity-50 pointer-events-none': wishlistPending }" 9955 data-addto="wishlist" 9956 > 9957 <span x-cloak 9958 :class="isInWishlist(239470) 9959 ? 'flex group-hover:hidden' 9960 : 'hidden group-hover:flex'"> 9961 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" width="20" height="20" aria-hidden="true"> 9962 <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"/> 9963</svg> 9964 </span> 9965 <span :class="isInWishlist(239470) 9966 ? 'hidden group-hover:flex' 9967 : 'flex group-hover:hidden'"> 9968 <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"> 9969 <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"/> 9970</svg> 9971 </span> 9972 </button> 9973 9974 <button 9975 class="btn btn-primary rounded-full p-2 justify-center cmsp511-text-sm" 9976 title="Add to Cart Bommel dangling rabbit" 9977 aria-label="Add to Cart Bommel dangling rabbit" 9978 data-addto="cart" 9979 > 9980 <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"> 9981 <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
99810 014 0z"/> 9982</svg> 9983 </button> 9984 </div> 9985 </div> 9986 9987 <div class="product-info flex flex-col grow min-h-32"> 9988 <div class="w-fit"> 9989 <p class="cmsp511-text-sm text-gray-medium"> 9990 Size: 9991 28 cm </p> 9992 </div> 9993 <div class="mt-2 mb-1 items-center justify-left font-semibold cmsp511-text-base cmsp511-text-left"> 9994 <a 9995 class="product-item-link line-clamp-2 text-ellipsis overflow-hidden text-black" 9996 href="https://www.steiff.com/en/bommel-dangling-rabbit-067471" 9997 onclick="window.steiffTrackSliderProductClick?.("productslider-category-migrated_1782888533_6a44b8557eaca",17);" 9998 > 9999 Bommel dangling rabbit </a> 10000 </div> 10001 10002 10003 <div class="pt-1 text-gray-dark" 10004 x-data="initPriceBox()" 10005 x-defer="intersect" 10006 @update-prices-239470.window="updatePrice($event.detail);" 10007 > 10008 <div class="price-box price-final_price" data-role="priceBox" data-product-id="239470" data-price-box="product-id-239470"> 10009 <span 10010 x-data x-id="['product\u002Dprice\u002D239470']" class="price-container price-final_price tax weee" 10011 > 10012 <span :id="$id('product\u002Dprice\u002D239470')" data-price-amount="75" 10013 data-price-type="finalPrice" 10014 class="price-wrapper " 10015 ><span class="price">€75.00</span></span> 10016 </span> 10017 10018 10019</div> </div> 10020 10021 </div> 10022</form> 10023 </div> 10024 <div class="swiper-slide p-2 flex shrink-0 md:w-1/2 lg:w-1/3 xl:w-1/4" 10025 role="group" 10026 aria-roledescription="slide" 10027 aria-label="19 of 20" 10028 > 10029 10030<form method="post" 10031 action="https://www.steiff.com/en/checkout/cart/add/uenc/%25uenc%25/product/161631/" 10032 class="item product relative product-item transition-shadow product_addtocart_form card hover:bg-white grow flex flex-col w-full" 10033 data-product-type="simple" 10034 onsubmit="this.elements.form_key.value = hyva.getFormKey()" 10035 data-sku="079986" 10036 > 10037 <input name="form_key" type="hidden" value="1aHgrAsZWj2chSze" /> <input type="hidden" name="product" value="161631"/> 10038 <div class="relative"> 10039 <a href="https://www.steiff.com/en/schnucki-rabbit-079986" 10040 title="Schnucki rabbit" 10041 class="product photo product-item-photo block mx-auto mb-3 w-full aspect-[4/5]" 10042 tabindex="-1" 10043 onclick="window.steiffTrackSliderProductClick?.("productslider-category-migrated_1782888533_6a44b8557eaca",18);" 10044 > 10045 <img class="object-contain w-full product-image-photo" 10046 @update-gallery-161631.window="$root.src = $event.detail" 10047 src="https://www.steiff.com/media/catalog/product/s/c/schnucki-hase-079986-4.jpg?format=webp&width=480" 10048 loading="lazy" 10049 width="240" 10050 height="300" 10051 alt="Schnucki Hase" 10052 title="Schnucki Hase" 10053/> 10054 </a> 10055 <div class="flex flex-row gap-2 w-full justify-end md:absolute md:bottom-4"> 10056 <button x-data="initWishlist()" 10057 x-defer="intersect" 10058 @private-content-loaded.window="setLoginState($event.detail.data)" 10059 @wishlist-after-auth-login.window="handleWishlistAfterAuthLogin()" 10060 @auth-modal-wishlist-cancelled.window="clearPendingWishlist()" 10061 @wishlist-product-added.window="handleWishlistProductAdded($event.detail)" 10062 @wishlist-product-removed.window="handleWishlistProductRemoved($event.detail)" 10063 @click.prevent.stop="toggleWishlist(161631, 'Schnucki\u0020rabbit')" 10064 :aria-disabled="wishlistPending" 10065 :aria-busy="wishlistPending" 10066 aria-label="Add to Wish List Schnucki rabbit" 10067 :aria-label="isInWishlist(161631) ? 'Remove\u0020from\u0020Wish\u0020List\u0020Schnucki\u0020rabbit' : 'Add\u0020to\u0020Wish\u0020List\u0020Schnucki\u0020rabbit'" 10068 type="button" 10069 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" 10070 :class="{ 'opacity-50 pointer-events-none': wishlistPending }" 10071 data-addto="wishlist" 10072 >
10073 <span x-cloak 10074 :class="isInWishlist(161631) 10075 ? 'flex group-hover:hidden' 10076 : 'hidden group-hover:flex'"> 10077 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" width="20" height="20" aria-hidden="true"> 10078 <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"/> 10079</svg> 10080 </span> 10081 <span :class="isInWishlist(161631) 10082 ? 'hidden group-hover:flex' 10083 : 'flex group-hover:hidden'"> 10084 <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"> 10085 <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"/> 10086</svg> 10087 </span> 10088 </button> 10089 10090 <button 10091 class="btn btn-primary rounded-full p-2 justify-center cmsp511-text-sm" 10092 title="Add to Cart Schnucki rabbit" 10093 aria-label="Add to Cart Schnucki rabbit" 10094 data-addto="cart" 10095 > 10096 <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"> 10097 <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"/> 10098</svg> 10099 </button> 10100 </div> 10101 </div> 10102 10103 <div class="product-info flex flex-col grow min-h-32"> 10104 <div class="w-fit"> 10105 <p class="cmsp511-text-sm text-gray-medium"> 10106 Size: 10107 24 cm </p> 10108 </div> 10109 <div class="mt-2 mb-1 items-center justify-left font-semibold cmsp511-text-base cmsp511-text-left"> 10110 <a 10111 class="product-item-link line-clamp-2 text-ellipsis overflow-hidden text-black" 10112 href="https://www.steiff.com/en/schnucki-rabbit-079986" 10113 onclick="window.steiffTrackSliderProductClick?.("productslider-category-migrated_1782888533_6a44b8557eaca",18);" 10114 > 10115 Schnucki rabbit </a> 10116 </div> 10117 10118 10119 <div class="pt-1 text-gray-dark" 10120 x-data="initPriceBox()" 10121 x-defer="intersect" 10122 @update-prices-161631.window="updatePrice($event.detail);" 10123 > 10124 <div class="price-box price-final_price" data-role="priceBox" data-product-id="161631" data-price-box="product-id-161631"> 10125 <span 10126 x-data x-id="['product\u002Dprice\u002D161631']" class="price-container price-final_price tax weee" 10127 > 10128 <span :id="$id('product\u002Dprice\u002D161631')" data-price-amount="49.95" 10129 data-price-type="finalPrice" 10130 class="price-wrapper " 10131 ><span class="price">€49.95</span></span> 10132 </span> 10133 10134 10135</div> </div> 10136 10137 </div> 10138</form> 10139 </div> 10140 <div class="swiper-slide p-2 flex shrink-0 md:w-1/2 lg:w-1/3 xl:w-1/4" 10141 role="group" 10142 aria-roledescription="slide" 10143 aria-label="20 of 20" 10144 > 10145 10146<form method="post" 10147 action="https://www.steiff.com/en/checkout/cart/add/uenc/%25uenc%25/product/287099/" 10148 class="item product relative product-item transition-shadow product_addtocart_form card hover:bg-white grow flex flex-col w-full" 10149 data-product-type="simple" 10150 onsubmit="this.elements.form_key.value = hyva.getFormKey()" 10151 data-sku="114076" 10152 > 10153 <input name="form_key" type="hidden" value="1aHgrAsZWj2chSze" /> <input type="hidden" name="product" value="287099"/> 10154 <div class="relative"> 10155 <a href="https://www.steiff.com/en/light-at-night-caspar-teddy-bear-114076" 10156 title="Light at Night Caspar Teddy bear" 10157 class="product photo product-item-photo block mx-auto mb-3 w-full aspect-[4/5]" 10158 tabindex="-1" 10159 onclick="window.steiffTrackSliderProductClick?.("productslider-category-migrated_1782888533_6a44b8557eaca",19);" 10160 > 10161 <img class="object-contain w-full product-image-photo" 10162 @update-gallery-287099.window="$root.src = $event.detail" 10163 src="https://www.steiff.com/media/catalog/product/l/i/light-at-night-caspar-teddybaer-114076-10.jpg?format=webp&width=480" 10164 loading="lazy" 10165 width="240" 10166 height="300" 10167 alt="Light at Night Caspar Teddybär" 10168 title="Light at Night Caspar Teddybär" 10169/> 10170 </a> 10171 <div class="flex flex-row gap-2 w-full justify-end md:absolute md:bottom-4"> 10172 <button x-data="initWishlist()" 10173 x-defer="intersect"
10174 @private-content-loaded.window="setLoginState($event.detail.data)" 10175 @wishlist-after-auth-login.window="handleWishlistAfterAuthLogin()" 10176 @auth-modal-wishlist-cancelled.window="clearPendingWishlist()" 10177 @wishlist-product-added.window="handleWishlistProductAdded($event.detail)" 10178 @wishlist-product-removed.window="handleWishlistProductRemoved($event.detail)" 10179 @click.prevent.stop="toggleWishlist(287099, 'Light\u0020at\u0020Night\u0020Caspar\u0020Teddy\u0020bear')" 10180 :aria-disabled="wishlistPending" 10181 :aria-busy="wishlistPending" 10182 aria-label="Add to Wish List Light at Night Caspar Teddy bear" 10183 :aria-label="isInWishlist(287099) ? 'Remove\u0020from\u0020Wish\u0020List\u0020Light\u0020at\u0020Night\u0020Caspar\u0020Teddy\u0020bear' : 'Add\u0020to\u0020Wish\u0020List\u0020Light\u0020at\u0020Night\u0020Caspar\u0020Teddy\u0020bear'" 10184 type="button" 10185 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" 10186 :class="{ 'opacity-50 pointer-events-none': wishlistPending }" 10187 data-addto="wishlist" 10188 > 10189 <span x-cloak 10190 :class="isInWishlist(287099) 10191 ? 'flex group-hover:hidden' 10192 : 'hidden group-hover:flex'"> 10193 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" width="20" height="20" aria-hidden="true"> 10194 <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"/> 10195</svg> 10196 </span> 10197 <span :class="isInWishlist(287099) 10198 ? 'hidden group-hover:flex' 10199 : 'flex group-hover:hidden'"> 10200 <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"> 10201 <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"/> 10202</svg> 10203 </span> 10204 </button> 10205 10206 <button 10207 class="btn btn-primary rounded-full p-2 justify-center cmsp511-text-sm" 10208 title="Add to Cart Light at Night Caspar Teddy bear" 10209 aria-label="Add to Cart Light at Night Caspar Teddy bear" 10210 data-addto="cart" 10211 > 10212 <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"> 10213 <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"/> 10214</svg> 10215 </button> 10216 </div> 10217 </div> 10218 10219 <div class="product-info flex flex-col grow min-h-32"> 10220 <div class="w-fit"> 10221 <p class="cmsp511-text-sm text-gray-medium"> 10222 Size: 10223 28 cm </p> 10224 </div> 10225 <div class="mt-2 mb-1 items-center justify-left font-semibold cmsp511-text-base cmsp511-text-left"> 10226 <a 10227 class="product-item-link line-clamp-2 text-ellipsis overflow-hidden text-black" 10228 href="https://www.steiff.com/en/light-at-night-caspar-teddy-bear-114076" 10229 onclick="window.steiffTrackSliderProductClick?.("productslider-category-migrated_1782888533_6a44b8557eaca",19);" 10230 > 10231 Light at Night Caspar Teddy bear </a> 10232 </div> 10233 10234 10235 <div class="pt-1 text-gray-dark" 10236 x-data="initPriceBox()" 10237 x-defer="intersect" 10238 @update-prices-287099.window="updatePrice($event.detail);" 10239 > 10240 <div class="price-box price-final_price" data-role="priceBox" data-product-id="287099" data-price-box="product-id-287099"> 10241 <span
10242 x-data x-id="['product\u002Dprice\u002D287099']" class="price-container price-final_price tax weee" 10243 > 10244 <span :id="$id('product\u002Dprice\u002D287099')" data-price-amount="70" 10245 data-price-type="finalPrice" 10246 class="price-wrapper " 10247 ><span class="price">€70.00</span></span> 10248 </span> 10249 10250 10251</div> </div> 10252 10253 </div> 10254</form> 10255 </div> 10256 </div> 10257 <div class="swiper-scrollbar" x-ref="swiperScrollbar"></div> 10258 </div> 10259 <div class="flex justify-between py-4 top-1/2 absolute -mx-6 w-[calc(100%+48px)] xl:w-full xl:mx-0"> 10260 <button 10261 type="button" 10262 aria-label="Previous slide" 10263 :disabled="active === 0" 10264 class="text-black flex-none px-2 py-8 z-10 disabled:invisible bg-greenGray opacity-70 hover:opacity-100 shadow-lg rounded" 10265 @click="prev()" 10266 > 10267 <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"> 10268 <path stroke-linecap="round" stroke-linejoin="round" d="M15 19l-7-7 7-7"/> 10269</svg> 10270 </button> 10271 <button 10272 type="button" 10273 aria-label="Next slide" 10274 :disabled="isEnd" 10275 class="text-black flex-none px-2 py-8 z-10 disabled:invisible bg-greenGray opacity-70 hover:opacity-100 shadow-lg rounded" 10276 @click="next()" 10277 > 10278 <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"> 10279 <path stroke-linecap="round" stroke-linejoin="round" d="M9 5l7 7-7 7"/> 10280</svg> 10281 </button> 10282 </div> 10283 <span id="productslider-category-migrated_1782888533_6a44b8557eaca-slider-end" tabindex="-1"></span> 10284 </div> 10285 </section>
10286<script>(function(){if(typeof window.SteiffGTMAddToCartProducts==="undefined")window.SteiffGTMAddToCartProducts={};Object.assign(window.SteiffGTMAddToCartProducts,{"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},"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},"84727":{"id":"099663","quote_item_id":"84727","entity_id":84727,"name":"Lucy cat","brand":"Steiff","variant":"beige","price":"49.95","metric1":"49.95","dimension6":"plush","dimension10":"","dimension11":"18 cm","dimension12":400,"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},"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},"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},"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},"320865":{"id":"024375","quote_item_id":"320865","entity_id":320865,"name":"Snoopy Love","brand":"Steiff","variant":"white","price":"49.95","metric1":"49.95","dimension6":"plush","dimension10":"","dimension11":"30 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},"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},"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},"276505":{"id":"074318","quote_item_id":"276505","entity_id":276505,"name":"Gola horse","brand":"Steiff","variant":"beige","price":"44.95","metric1":"44.95","dimension6":"plush","dimension10":"","dimension11":"27 cm","dimension12":300,"quantity":1},"284266":{"id":"081019","quote_item_id":"284266","entity_id":284266,"name":"Melly rabbit","brand":"Steiff","variant":"brown","price":"49.95","metric1":"49.95","dimension6":"plush","dimension10":"","dimension11":"20 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},"239470":{"id":"067471","quote_item_id":"239470","entity_id":239470,"name":"Bommel dangling rabbit","brand":"Steiff","variant":"light brow","price":"75.00","metric1":"75.00","dimension6":"plush","dimension10":"","dimension11":"28 cm","dimension12":300,"quantity":1},"161631":{"id":"079986","quote_item_id":"161631","entity_id":161631,"name":"Schnucki rabbit","brand":"Steiff","variant":"beige","price":"49.95","metric1":"49.95","dimension6":"plush","dimension10":"","dimension11":"24 cm","dimension12":300,"quantity":1},"287099":{"id":"114076","quote_item_id":"287099","entity_id":287099,"
10286name":"Light at Night Caspar Teddy bear","brand":"Steiff","variant":"light brow","price":"70.00","metric1":"70.00","dimension6":"plush","dimension10":"","dimension11":"28 cm","dimension12":300,"quantity":1}});})();</script>
vendor: 1 bytes, line 10286
10286
10287<script> 10288(function() { 10289 'use strict'; 10290 const impressions = [{"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":1,"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":2,"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":3,"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":4,"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":5,"list":"productslider-category-migrated_1782888533_6a44b8557eaca"},{"id":"099663","quote_item_id":"84727","entity_id":84727,"name":"Lucy cat","brand":"Steiff","variant":"beige","price":"49.95","metric1":"49.95","dimension6":"plush","dimension10":"","dimension11":"18 cm","dimension12":400,"position":6,"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":7,"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":8,"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":9,"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":10,"list":"productslider-category-migrated_1782888533_6a44b8557eaca"},{"id":"024375","quote_item_id":"320865","entity_id":320865,"name":"Snoopy Love","brand":"Steiff","variant":"white","price":"49.95","metric1":"49.95","dimension6":"plush","dimension10":"","dimension11":"30 cm","dimension12":300,"position":11,"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":12,"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":13,"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":14,"list":"productslider-category-migrated_1782888533_6a44b8557eaca"},{"id":"074318","quote_item_id":"276505","entity_id":276505,"name":"Gola horse","brand":"Steiff","variant":"beige","price":"44.95","metric1":"44.95","dimension6":"plush","dimension10":"","dimension11":"27 cm","dimension12":300,"position":15,"list":"productslider-category-migrated_1782888533_6a44b8557eaca"},{"id":"081019","quote_item_id":"284266","entity_id":284266,"name":"Melly rabbit","brand":"Steiff","variant":"brown","price":"49.95","metric1":"49.95","dimension6":"plush","dimension10":"","dimension11":"20 cm","dimension12":300,"position":16,"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":17,"list":"productslider-category-migrated_1782888533_6a44b8557eaca"},{"id":"067471","quote_item_id":"239470","entity_id":239470,"name":"Bommel dangling rabbit","brand":"Steiff","variant":"light brow","price":"75.00","metric1":"75.00","dimension6":"plush","dimension10":"","dimension11":"28 cm","dimension12":300,"position":18,"list":"productslider-category-migrated_1782888533_6a44b8557eaca"},{"id":"079986","quote_item_id":"161631","entity_id":161631,"name":"Schnucki rabbit","brand":"Steiff","variant":"beige","price":"49.95","metric1":"49.95","dimension6":"plush","dimension10":"","dimension11":"24 cm","dimension12":300,"position":19,"list":"productslider-category-migrated_1782888533_6a44b8557eaca"}
10290,{"id":"114076","quote_item_id":"287099","entity_id":287099,"name":"Light at Night Caspar Teddy bear","brand":"Steiff","variant":"light brow","price":"70.00","metric1":"70.00","dimension6":"plush","dimension10":"","dimension11":"28 cm","dimension12":300,"position":20,"list":"productslider-category-migrated_1782888533_6a44b8557eaca"}]; 10291 const currencyCode = 'EUR'; 10292 const sliderId = "productslider-category-migrated_1782888533_6a44b8557eaca"; 10293 const listName = "productslider-category-migrated_1782888533_6a44b8557eaca"; 10294 if (typeof window.SteiffGTMSliderProductClicks === 'undefined') { 10295 window.SteiffGTMSliderProductClicks = {}; 10296 } 10297 window.SteiffGTMSliderProductClicks[sliderId] = { list: listName, currencyCode, impressions }; 10298 function push() { 10299 window.SteiffTracking.waitForUsercentricsLoaded().then(function() { 10300 window.SteiffTracking.trackEvent({ 10301 event: 'ee.productImpression', 10302 ecommerce: { currencyCode, impressions } 10303 }); 10304 }); 10305 } 10306 if (typeof window.SteiffTracking !== 'undefined') { 10307 push(); 10308 } else { 10309 let attempts = 0; 10310 const run = function() { 10311 if (typeof window.SteiffTracking !== 'undefined') { 10312 push(); 10313 return; 10314 } 10315 attempts += 1; 10316 if (attempts < 150) { 10317 requestAnimationFrame(run); 10318 } 10319 }; 10320 requestAnimationFrame(run); 10321 } 10322})(); 10323</script>
vendor: 1 bytes, line 10323
10323
10324<script> 10325'use strict'; 10326window.steiffTrackSliderProductClick = function (sliderId, slideIndex) { 10327 const clickData = sliderId && window.SteiffGTMSliderProductClicks?.[sliderId]; 10328 const idx = parseInt(slideIndex, 10); 10329 const gtmProduct = clickData?.impressions?.[Number.isNaN(idx) ? -1 : idx]; 10330 if (!clickData || !gtmProduct || typeof window.SteiffTracking === 'undefined') { 10331 return; 10332 } 10333 window.SteiffTracking.waitForUsercentricsLoaded().then(function () { 10334 window.SteiffTracking.trackEvent({ 10335 event: 'ee.productClick', 10336 ecommerce: { 10337 currencyCode: clickData.currencyCode, 10338 click: { actionField: { list: clickData.list }, products: [gtmProduct] } 10339 } 10340 }); 10341 }); 10342}; 10343</script>
10343 10344 </div> 10345 </div> 10346 </div> 10347 <div data-liveview-element="steiff_row" 10348 class=" not-prose container" 10349 > 10350 <div data-liveview-element="steiff_row" 10351 class=" not-prose" 10352 style="padding-top: 1rem; padding-bottom: 1rem;" > 10353 <div 10354 id="steiff-column-migrated_1782888533_6a44b855aa814" 10355 class="grid" 10356 data-liveview-element="steiff_column" 10357 style="background-color: ; color: ;"> 10358 <div 10359 id="steiff-column-item-steiff_content_migration_6a44b855abba5" 10360 class="min-w-0 justify-self-start flex items-start order-none sm:order-none lg:order-none h-full" 10361 data-liveview-element="steiff_column_item" 10362 > 10363 <div 10364 data-liveview-element="steiff_text" 10365 class="steiff-text-content cmsp511-text-left cmsp511-text-base cmsp511-font-normal" 10366 > 10367 <h2>The World of Steiff</h2></div> 10368 </div> 10369 <style> 10370 :where(#steiff-column-migrated_1782888533_6a44b855aa814) { 10371 --cols: repeat(1, minmax(0px, 1fr)); 10372 --gap: 1rem; 10373 grid-template-columns: var(--cols); 10374 gap: var(--gap); 10375 } 10376 10377 10378 </style> 10379</div> 10380 </div> 10381 <div data-liveview-element="steiff_row" 10382 class=" not-prose" 10383 style="padding-top: 1rem; padding-bottom: 1rem;" > 10384 <div 10385 id="steiff-column-migrated_1782888533_6a44b855acd27" 10386 class="grid" 10387 data-liveview-element="steiff_column" 10388 style="background-color: ; color: ;"> 10389 <div 10390 id="steiff-column-item-steiff_content_migration_6a44b855b9eb5" 10391 class="min-w-0 justify-self-start flex items-start order-none sm:order-none lg:order-none w-full h-full" 10392 data-liveview-element="steiff_column_item" 10393 > 10394 <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"> 10395 <div class=" group-[.navigation-cms]:!bg-transparent" 10396 style="background-color: #cdd7d7;" > 10397 <a href="https://www.steiff.com/en/steiff-museum" class="flex flex-col h-full group-[.teaser-alternative-design]:relative" target="_self"> 10398 <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"> 10399 <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> 10400 <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"> 10401 <div class="cmsp511-text-center p-6 group-[.navigation-cms]:p-0 group-[.teaser-alternative-design]:px-4 group-[.teaser-alternative-design]:py-6"> 10402 <h3 data-liveview-element="steiff-headline" 10403 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]" 10404 > 10405 Steiff Museum</h3> 10406 <sp
10406an 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" 10407 > 10408 <span class="group-[.navigation-cms]:text-inherit">Find out more</span> 10409 </span> 10410 </div> 10411 </div> 10412 </a> 10413 </div> 10414 </div> 10415 </div> 10416 <div 10417 id="steiff-column-item-steiff_content_migration_6a44b855bf441" 10418 class="min-w-0 justify-self-start flex items-start order-none sm:order-none lg:order-none w-full h-full" 10419 data-liveview-element="steiff_column_item" 10420 > 10421 <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"> 10422 <div class=" group-[.navigation-cms]:!bg-transparent" 10423 style="background-color: #d7cdd7;" > 10424 <a href="https://www.steiff.com/en/club" class="flex flex-col h-full group-[.teaser-alternative-design]:relative" target="_self"> 10425 <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"> 10426 <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> 10427 <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"> 10428 <div class="cmsp511-text-center p-6 group-[.navigation-cms]:p-0 group-[.teaser-alternative-design]:px-4 group-[.teaser-alternative-design]:py-6"> 10429 <h3 data-liveview-element="steiff-headline" 10430 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]" 10431 > 10432 Steiff Club</h3> 10433 <sp
10433an 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" 10434 > 10435 <span class="group-[.navigation-cms]:text-inherit">Find out more</span> 10436 </span> 10437 </div> 10438 </div> 10439 </a> 10440 </div> 10441 </div> 10442 </div> 10443 <style> 10444 :where(#steiff-column-migrated_1782888533_6a44b855acd27) { 10445 --cols: repeat(1, minmax(0px, 1fr)); 10446 --gap: 1rem; 10447 grid-template-columns: var(--cols); 10448 gap: var(--gap); 10449 } 10450 10451 @media (min-width: 640px) { 10452 :where(#steiff-column-migrated_1782888533_6a44b855acd27) { 10453 --cols: repeat(2, minmax(0px, 1fr)); } 10454 } 10455 10456 </style> 10457</div> 10458 </div> 10459 <div data-liveview-element="steiff_row" 10460 class=" not-prose" 10461 style="padding-top: 1rem; padding-bottom: 1rem;" > 10462 <div 10463 id="steiff-column-migrated_1782888533_6a44b855c0940" 10464 class="grid" 10465 data-liveview-element="steiff_column" 10466 style="background-color: ; color: ;"> 10467 <div 10468 id="steiff-column-item-steiff_content_migration_6a44b855cd2a2" 10469 class="min-w-0 justify-self-start flex items-start order-none sm:order-none lg:order-none w-full h-full" 10470 data-liveview-element="steiff_column_item" 10471 > 10472 <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"> 10473 <div class=" group-[.navigation-cms]:!bg-transparent" 10474 style="background-color: #c8cdd7;" > 10475 <a href="https://www.steiff.com/en/sustainabilitty" class="flex flex-col h-full group-[.teaser-alternative-design]:relative" target="_self"> 10476 <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"> 10477 <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> 10478 <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"> 10479 <div class="cmsp511-text-center p-6 group-[.navigation-cms]:p-0 group-[.teaser-alternative-design]:px-4 group-[.teaser-alternative-design]:py-6"> 10480 <h3 data-liveview-element="steiff-headline" 10481 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]" 10482 > 10483 Sustainability promise</h3> 10484 <sp
10484an 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" 10485 > 10486 <span class="group-[.navigation-cms]:text-inherit">Find out more</span> 10487 </span> 10488 </div> 10489 </div> 10490 </a> 10491 </div> 10492 </div> 10493 </div> 10494 <div 10495 id="steiff-column-item-steiff_content_migration_6a44b855d9f1e" 10496 class="min-w-0 justify-self-start flex items-start order-none sm:order-none lg:order-none w-full h-full" 10497 data-liveview-element="steiff_column_item" 10498 > 10499 <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"> 10500 <div class=" group-[.navigation-cms]:!bg-transparent" 10501 style="background-color: #fae1d7;" > 10502 <a href="https://www.steiff.com/en/steiff-shops" class="flex flex-col h-full group-[.teaser-alternative-design]:relative" target="_self"> 10503 <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"> 10504 <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> 10505 <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"> 10506 <div class="cmsp511-text-center p-6 group-[.navigation-cms]:p-0 group-[.teaser-alternative-design]:px-4 group-[.teaser-alternative-design]:py-6"> 10507 <h3 data-liveview-element="steiff-headline" 10508 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]" 10509 > 10510 Steiff Shops</h3> 10511 <sp
10511an 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" 10512 > 10513 <span class="group-[.navigation-cms]:text-inherit">Find out more</span> 10514 </span> 10515 </div> 10516 </div> 10517 </a> 10518 </div> 10519 </div> 10520 </div> 10521 <style> 10522 :where(#steiff-column-migrated_1782888533_6a44b855c0940) { 10523 --cols: repeat(1, minmax(0px, 1fr)); 10524 --gap: 1rem; 10525 grid-template-columns: var(--cols); 10526 gap: var(--gap); 10527 } 10528 10529 @media (min-width: 640px) { 10530 :where(#steiff-column-migrated_1782888533_6a44b855c0940) { 10531 --cols: repeat(2, minmax(0px, 1fr)); } 10532 } 10533 10534 </style> 10535</div> 10536 </div> 10537 </div> 10538 <div data-liveview-element="steiff_row" 10539 class=" not-prose" 10540 > 10541 <div data-liveview-element="steiff_row" 10542 class=" not-prose" 10543 style="padding-top: 1rem; padding-bottom: 1rem;" > 10544 <div 10545 id="steiff-column-migrated_1782888533_6a44b855dbde6" 10546 class="grid" 10547 data-liveview-element="steiff_column" 10548 style="background-color: ; color: ;"> 10549 <div 10550 id="steiff-column-item-steiff_content_migration_6a44b855dd0ff" 10551 class="min-w-0 justify-self-start flex items-start order-none sm:order-none lg:order-none w-full h-full" 10552 data-liveview-element="steiff_column_item" 10553 > 10554 <div id="newsletter-hyva-71867750-container" 10555 class="relative w-full" 10556 data-liveview-element="newsletter" 10557 x-data="newsletterTeaserForm({ 10558 subscribeEndpoint: 'https\u003A\u002F\u002Fwww.steiff.com\u002Fen\u002Frest\u002Fen\u002FV1\u002Fsteiff\u002Dnewsletter\u002Fsubscribe\u002F', 10559 storeId: '2', 10560 recaptchaEnabled: true, 10561 recaptchaTokenFieldName: 'g\u002Drecaptcha\u002Dresponse' 10562 })" 10563 x-cloak 10564 > 10565 10566 <picture class="absolute inset-0 z-0 w-full overflow-hidden" aria-hidden="true"> 10567 <source srcset="https://www.steiff.com/media/steiff_newsletter/teaser/default/250613_steiff_nl-teaser-desktop_3840x628px__hell_2.jpg" media="(min-width: 1024px)"> 10568 <source srcset="https://www.steiff.com/media/steiff_newsletter/teaser/default/250613_steiff_nl-teaser-desktop_3840x628px__hell_2.jpg" media="(min-width: 768px)"> 10569 <img src="https://www.steiff.com/media/steiff_newsletter/teaser/default/250613_steiff_nl-teaser-mobile_750x1220px__hell_1.jpg?format=webp" 10570 alt="" 10571 class="z-0 w-full h-full object-cover object-right-bottom" 10572 width="750" 10573 height="1220" 10574 loading="lazy"> 10575</picture> 10576 <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]"> 10577 <span class="absolute inset-0 w-full h-full md:block hidden" 10578 style="mask: url('https://www.steiff.com/static/version1790253198/frontend/Steiff/default/en_GB/images/newsletter/nl-bubble-desktop.svg') center/contain no-repeat; -webkit-mask: url('https://www.steiff.com/static/version1790253198/frontend/Steiff/default/en_GB/images/newsletter/nl-bubble-desktop.svg') center/contain no-repeat; background-color:#9BB4AF;"></span> 10579 <span class="absolute inset-0 w-full h-full rotate-180 md:hidden" 10580 style="mask: url('https://www.steiff.com/static/version1790253198/frontend/Steiff/default/en_GB/images/newsletter/nl-bubble-mobile.svg') center/contain no-repeat; -webkit-mask: url('https://www.steiff.com/static/version1790253198/frontend/Steiff/default/en_GB/images/newsletter/nl-bubble-mobile.svg') center/contain no-repeat; background-color:#9BB4AF;"></span> 10581 <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"> 10582 <p class="font-bold relative lg:text-3xl" style="color:#ffffff;">discount**</p> 10583 <p class="text-4xl font-bold relative lg:text-6xl" style="color:#ffffff;">10%</p> 10584 </div> 10585</div> 10586 10587 <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"> 10588 <h2 class="text-2xl font-bold mb-4" 10589 > 10590 Newsletter </h2> 10591 10592 <div> 10593 <div class="sr-only" 10594 role="status"
10595 aria-live="polite" 10596 aria-atomic="true" 10597 tabindex="-1" 10598 x-ref="srSuccessRegion" 10599 x-text="srAnnouncement"></div> 10600 <div class="sr-only" 10601 aria-live="assertive" 10602 aria-atomic="true" 10603 x-show="srError !== ''" 10604 x-text="srError"></div> 10605 <form id="newsletter-hyva-71867750-subscribe" 10606 class="newsletter-teaser-form" 10607 x-ref="subscribeForm" 10608 @input="onFormInteraction()" 10609 @change="onFormInteraction()" 10610 @submit.prevent="submitForm()" 10611 :aria-label="'Subscribe to Newsletter'"> 10612 <div class="md:grid md:grid-cols-5 md:gap-6 mb-6 md:mb-0"> 10613 <div class="field required flex flex-col !mb-0 md:col-span-3"> 10614 <label for="newsletter-hyva-71867750-email" class="label cmsp511-text-sm text-black mb-2"> 10615 e-mail address </label> 10616 <input type="email" 10617 name="email" 10618 id="newsletter-hyva-71867750-email" 10619 required 10620 aria-required="true" 10621 placeholder="Enter your email address here" 10622 autocomplete="email" 10623 inputmode="email" 10624 aria-describedby="newsletter-hyva-71867750-required-hint" 10625 class="form-input cmsp511-text-base"> 10626 </div> 10627 10628 <button type="submit" 10629 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" 10630 :disabled="isLoading" 10631 :aria-busy="isLoading"> 10632 Subscribe now </button> 10633 </div> 10634 10635 <fieldset> 10636 <div class="md:grid md:grid-cols-3 md:gap-6"> 10637 <legend class="sr-only">Interests (optional)</legend> 10638 <div class="relative md:col-span-1 checkbox-choice"> 10639 <input type="checkbox" 10640 name="interests" id="newsletter-hyva-71867750-interest-kuscheltier" value="kuscheltier-spielzeug" > 10641 <label for="newsletter-hyva-71867750-interest-kuscheltier"> 10642 <span class="font-bold flex items-center">Cuddly Animals & Toys</span> 10643 </label> 10644 </div> 10645 <div class="relative md:col-span-1 checkbox-choice"> 10646 <input type="checkbox" 10647 name="interests" id="newsletter-hyva-71867750-interest-baby" value="baby-kindermode" > 10648 <label for="newsletter-hyva-71867750-interest-baby"> 10649 <span class="font-bold flex items-center">Baby & children fashion</span> 10650 </label> 10651 </div> 10652 <div class="relative md:col-span-1 checkbox-choice"> 10653 <input type="checkbox" 10654 name="interests" id="newsletter-hyva-71867750-interest-sammler" value="sammler" > 10655 <label for="newsletter-hyva-71867750-interest-sammler"> 10656 <span class="font-bold flex items-center">Collector's World</span> 10657 </label> 10658 </div> 10659 </div> 10660</fieldset> 10661 10662 <div class="field required relative md:mt-4 checkbox-choice required"> 10663 <input type="checkbox" 10664 id="newsletter-hyva-71867750-terms" 10665 name="privacy_accepted" 10666 required 10667 aria-required="true" 10668 aria-describedby="newsletter-hyva-71867750-required-hint"> 10669 <label for="newsletter-hyva-71867750-terms">
10670 <span> 10671 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> 10672 and agree to it. </span> 10673 </label> 10674 </div> 10675 10676 <button type="submit" 10677 class="btn btn-primary mb-6 w-fit md:hidden disabled:opacity-80 disabled:cursor-not-allowed" 10678 :disabled="isLoading" 10679 :aria-busy="isLoading"> 10680 Subscribe now </button> 10681 10682 <div class="text-xxs text-black"> 10683 <p id="newsletter-hyva-71867750-required-hint"> 10684 *Required fields </p> 10685 </div> 10686 10687 <div class="cmsp511-text-left text-xxs"> 10688 **One-time discount for new subscribers on your next order. Minimum order value 40€. Cannot be combined with other vouchers/promotions. </div> 10689 <div class="control"> 10690 <input type="hidden" 10691 value="" 10692 name="g-recaptcha-response" 10693 /> 10694</div> 10695 </form> 10696 <div class="w-full [&_p]:text-xs"> 10697 <p class="my-4 cmsp511-text-sm text-gray-dark [&_a]:text-cherryRed [&_a]:underline [&_a:hover]:no-underline"> 10698This 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> 10699 </div> 10700 </div> 10701 </div> 10702</div> 10703
10704<script src="https://www.steiff.com/static/version1790253198/frontend/Steiff/default/en_GB/Steiff_Newsletter/js/newsletter-api.js"></script>
vendor: 1 bytes, line 10704
10704
10705<script> 10706 function newsletterTeaserForm(config) { 10707 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'; 10708 const errorFallback = 'Something\u0020went\u0020wrong.\u0020Please\u0020try\u0020again\u0020or\u0020contact\u0020our\u0020service\u0020line.'; 10709 return { 10710 subscribeEndpoint: config.subscribeEndpoint || '', 10711 storeId: config.storeId || '1', 10712 recaptchaEnabled: Boolean(config.recaptchaEnabled), 10713 recaptchaTokenFieldName: config.recaptchaTokenFieldName || '', 10714 errors: 0, 10715 hasCaptchaToken: 0, 10716 isLoading: false, 10717 srAnnouncement: '', 10718 srError: '', 10719 getSubscribeApiUrl() { 10720 return (this.subscribeEndpoint || '').replace(/\/+$/, ''); 10721 }, 10722 onFormInteraction() { 10723 this.srError = ''; 10724 }, 10725 resetRecaptchaState(form) { 10726 this.hasCaptchaToken = 0; 10727 this.errors = 0; 10728 if (!this.recaptchaTokenFieldName || !(form instanceof HTMLFormElement)) { 10729 return; 10730 } 10731 const tokenField = form.elements[this.recaptchaTokenFieldName]; 10732 if (tokenField instanceof HTMLInputElement) { 10733 tokenField.value = ''; 10734 } 10735 }, 10736 getRecaptchaHeaders(form) { 10737 if (!this.recaptchaEnabled || !this.recaptchaTokenFieldName || !(form instanceof HTMLFormElement)) { 10738 return {}; 10739 } 10740 const tokenField = form.elements[this.recaptchaTokenFieldName]; 10741 const token = tokenField instanceof HTMLInputElement ? tokenField.value.trim() : ''; 10742 return token !== '' ? { 'X-ReCaptcha': token } : {}; 10743 }, 10744 async submitForm() { 10745 const form = this.$refs.subscribeForm; 10746 if (!form || !(form instanceof HTMLFormElement)) return; 10747 this.srError = ''; 10748 this.srAnnouncement = ''; 10749 if (!form.checkValidity()) { form.reportValidity(); return; } 10750 10751 if (this.recaptchaEnabled) { 10752 // Do not rename $form, the variable is expected to be declared in the recaptcha output 10753 const $form = form; 10754 if (!this.hasCaptchaToken) { 10755 this.errors = 1; 10756 10757 10758 const executeGreCaptcha = () => { 10759 grecaptcha.ready(() => { 10760 grecaptcha.execute( 10761 '6LfIe4EpAAAAALE75oNaaOgTw2G3VadtzHYrJItg', 10762 {action: 'newsletter'} 10763 ).then((token) => { 10764 const tokenElement = $form['g\u002Drecaptcha\u002Dresponse']; 10765 10766 if (tokenElement && token && token.length > 0) { 10767 $form['g\u002Drecaptcha\u002Dresponse'].value = token; 10768 this.errors = 0; 10769 this.hasCaptchaToken = 1; 10770 if (typeof this.submitForm === 'function') { 10771 this.submitForm(); 10772 } else { 10773 HTMLFormElement.prototype.submit.call($form); 10774 } 10775 } else { 10776 this.errors = 1; 10777 const error = tokenElement 10778 ? 'ReCaptcha\u0020validation\u0020failed,\u0020please\u0020try\u0020again' 10779 : 'ReCaptcha\u0020token\u0020element\u0020is\u0020missing.\u0020Please\u0020refresh\u0020the\u0020page\u0020and\u0020trying\u0020again.'; 10780 if (this.setErrorMessages) { 10781 this.setErrorMessages([error]) 10782 this.displayErrorMessage = true; 10783 } else { 10784 window.dispatchMessages && window.dispatchMessages([{type: "error", text: error}], 5000); 10785 } 10786 } 10787 }).catch(exception => { 10788 console.error(exception || `An unknown error occurred during ReCaptcha validation. Are the tokens and the domain correctly set up in the Google console?`) 10789 }); 10790 }) 10791 } 10792 10793 if (window.grecaptcha) { 10794 executeGreCaptcha(); 10795 } else { 10796 const recaptchaUrl = "https://www.google.com/recaptcha/api.js?render=6LfIe4EpAAAAALE75oNaaOgTw2G3VadtzHYrJItg"; 10797 const script = document.createElement('script'); 10798 script.setAttribute('type', 'text/javascript'); 10799 script.setAttribute('src', recaptchaUrl); 10800 document.head.appendChild(script); 10801 10802 script.addEventListener("load", executeGreCaptcha, false); 10803 } 10804 } 10805 if (this.errors !== 0) { 10806 return; 10807 } 10808 } 10809 10810 this.isLoading = true; 10811 10812 const formData = new FormData(form);
10813 const result = await window.SteiffNewsletterApi.post( 10814 this.getSubscribeApiUrl(), 10815 { 10816 email: String(formData.get('email') || '').trim(), 10817 storeId: String(this.storeId), 10818 interests: formData.getAll('interests').join(',') 10819 }, 10820 errorFallback, 10821 this.getRecaptchaHeaders(form) 10822 ); 10823 10824 this.isLoading = false; 10825 this.resetRecaptchaState(form); 10826 10827 if (result.ok) { 10828 this.srAnnouncement = successMsg; 10829 if (typeof window.dispatchMessages === 'function') { 10830 window.dispatchMessages([{ type: 'success', text: successMsg }]); 10831 } 10832 form.reset(); 10833 this.$nextTick(() => { 10834 const region = this.$refs.srSuccessRegion; 10835 if (region instanceof HTMLElement) region.focus({ preventScroll: true }); 10836 }); 10837 } else { 10838 this.srError = result.message; 10839 if (typeof window.dispatchMessages === 'function') { 10840 window.dispatchMessages([{ type: 'error', text: result.message }], 10000); 10841 } 10842 } 10843 } 10844 }; 10845 } 10846 10847 window.addEventListener( 10848 'alpine:init', 10849 () => Alpine.data('newsletterTeaserForm', newsletterTeaserForm),
10850 { once: true } 10851 ); 10852</script>
10852 10853 </div> 10854 <style> 10855 :where(#steiff-column-migrated_1782888533_6a44b855dbde6) { 10856 --cols: repeat(1, minmax(0px, 1fr)); 10857 --gap: 1rem; 10858 grid-template-columns: var(--cols); 10859 gap: var(--gap); 10860 } 10861 10862 10863 </style> 10864</div> 10865 </div> 10866 </div> 10867 </div></div></main><footer class="page-footer"><div class="footer content"> 10868<div class="flex items-center bg-greenGray justify-center gap-4 py-4"> 10869 <a href="https://www.facebook.com/Steiff.global" 10870 target="_blank" 10871 rel="noopener noreferrer" 10872 aria-label="Facebook (opens in new tab)" 10873 class="bg-white rounded-full p-2 hover:bg-opacity-70"> 10874 <img src="https://www.steiff.com/static/version1790253198/frontend/Steiff/default/en_GB/icons/social/facebook.svg" 10875 alt="Facebook" 10876 class="w-6 h-6" 10877 aria-hidden="true" /> 10878 </a> 10879 <a href="https://www.youtube.com/user/MargareteSteiff" 10880 target="_blank" 10881 rel="noopener noreferrer" 10882 aria-label="Youtube (opens in new tab)" 10883 class="bg-white rounded-full p-2 hover:bg-opacity-70"> 10884 <img src="https://www.steiff.com/static/version1790253198/frontend/Steiff/default/en_GB/icons/social/youtube.svg" 10885 alt="Youtube" 10886 class="w-6 h-6" 10887 aria-hidden="true" /> 10888 </a> 10889 <a href="https://www.instagram.com/steiff_official" 10890 target="_blank" 10891 rel="noopener noreferrer" 10892 aria-label="Instagram (opens in new tab)" 10893 class="bg-white rounded-full p-2 hover:bg-opacity-70"> 10894 <img src="https://www.steiff.com/static/version1790253198/frontend/Steiff/default/en_GB/icons/social/instagram.svg" 10895 alt="Instagram" 10896 class="w-6 h-6" 10897 aria-hidden="true" /> 10898 </a> 10899 </div> 10900<button 10901 type="button" 10902 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" 10903 x-bind:tabindex="visible ? 0 : -1" 10904 x-data="{ 10905 visible: false, 10906 scrollThreshold: 300, 10907 syncVisibility() { 10908 this.visible = window.scrollY > this.scrollThreshold; 10909 }, 10910 scrollToTop(moveFocusToTop = false) { 10911 let focusHandled = false; 10912 const focusTopOfPage = () => { 10913 if (focusHandled) { 10914 return; 10915 } 10916 focusHandled = true; 10917 const firstElement = document.querySelector('header.page-header a.action.skip'); 10918 if (firstElement && typeof firstElement.focus === 'function') { 10919 firstElement.focus({ preventScroll: true }); 10920 return; 10921 } 10922 const contentArea = document.getElementById('contentarea'); 10923 if (contentArea && typeof contentArea.focus === 'function') { 10924 contentArea.focus({ preventScroll: true }); 10925 } 10926 }; 10927 window.scrollTo({ top: 0, behavior: window.matchMedia('(prefers-reduced-motion)').matches ? 'instant' : 'smooth' }); 10928 if (moveFocusToTop) { 10929 window.addEventListener('scrollend', focusTopOfPage, { once: true }); 10930 setTimeout(focusTopOfPage, 800); 10931 return; 10932 } 10933 this.$el.blur(); 10934 } 10935 }" 10936 x-init="syncVisibility()" 10937 @scroll.window.debounce.100ms="syncVisibility()" 10938 x-show="visible" 10939 x-cloak 10940 x-transition:enter="transition ease-out duration-200" 10941 x-transition:enter-start="opacity-0" 10942 x-transition:enter-end="opacity-100" 10943 x-transition:leave="transition ease-in duration-150" 10944 x-transition:leave-start="opacity-100" 10945 x-transition:leave-end="opacity-0" 10946 @click="scrollToTop()" 10947 @keydown.enter.prevent="scrollToTop(true)" 10948 @keydown.space.prevent="scrollToTop(true)" 10949 aria-label="Back to top" 10950> 10951 <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"> 10952 <path stroke-linecap="round" stroke-linejoin="round" d="M5 10l7-7m0 0l7 7m-7-7v18"/> 10953</svg> 10954</button> 10955 10956<!-- social media links --> 10957<div> 10958 </div> 10959 10960<!-- footer menu --> 10961<div class="body-font md:pt-7 md:pb-4 md:px-12"> 10962 <div class="container min-w-full md:min-w-0 p-0"> 10963 <div class="flex flex-wrap justify-center md:justify-start order-first md:gap-y-16"> 10964 <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"> 10965 <button type="button" 10966 @click="open = !open" 10967 :aria-expanded="open" 10968 :aria-controls="'footer-menu-6ab5738c320b4'" 10969 aria-label="Company menu toggle" 10970 class="md:hidden text-base w-full grid grid-cols-7 font-bold hover:cursor-pointer">
10971 <span class="col-start-2 col-span-5 w-full text-center"> 10972 Company </span> 10973 <span class="col-start-7 mr-2 self-center justify-self-end" :class="{ 'rotate-180': open }" aria-hidden="true"> 10974 <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"> 10975 <path stroke-linecap="round" stroke-linejoin="round" d="M19 9l-7 7-7-7"/> 10976</svg> 10977 </span> 10978 </button> 10979 <span class="hidden md:block text-base font-bold mb-4"> 10980 Company </span> 10981 <ul x-cloak 10982 id="footer-menu-6ab5738c320b4" 10983 class="list-none px-4 pt-4 m-0 md:block md:px-0 md:pt-0 " 10984 x-show="open" 10985 :aria-hidden="!open" 10986 role="list" 10987 > 10988 <li class="py-2"> 10989 <a href="https://corporate.steiff.com/en/company/history/" 10990 target="_blank" 10991 rel="noopener noreferrer" class="text-gray-dark text-base hover:underline "> 10992 History <span class="sr-only">(opens in new tab)</span> 10993 </a> 10994 </li> 10995 <li class="py-2"> 10996 <a href="https://www.steiff.com/en/sustainabilitty" 10997 target="_self" 10998 class="text-gray-dark text-base hover:underline "> 10999 Sustainability </a> 11000 </li> 11001 <li class="py-2"> 11002 <a href="https://www.steiff.com/en/club" 11003 target="_self" 11004 class="text-gray-dark text-base hover:underline "> 11005 Steiff Club </a> 11006 </li> 11007 <li class="py-2"> 11008 <a href="https://www.steiff.com/en/corporate-business" 11009 target="_self" 11010 class="text-gray-dark text-base hover:underline "> 11011 Corporate Business </a> 11012 </li> 11013 </ul> 11014 </nav> 11015 <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"> 11016 <button type="button" 11017 @click="open = !open" 11018 :aria-expanded="open" 11019 :aria-controls="'footer-menu-6ab5738c338d5'" 11020 aria-label="Museum & Shops menu toggle" 11021 class="md:hidden text-base w-full grid grid-cols-7 font-bold hover:cursor-pointer">
11022 <span class="col-start-2 col-span-5 w-full text-center"> 11023 Museum & Shops </span> 11024 <span class="col-start-7 mr-2 self-center justify-self-end" :class="{ 'rotate-180': open }" aria-hidden="true"> 11025 <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"> 11026 <path stroke-linecap="round" stroke-linejoin="round" d="M19 9l-7 7-7-7"/> 11027</svg> 11028 </span> 11029 </button> 11030 <span class="hidden md:block text-base font-bold mb-4"> 11031 Museum & Shops </span> 11032 <ul x-cloak 11033 id="footer-menu-6ab5738c338d5" 11034 class="list-none px-4 pt-4 m-0 md:block md:px-0 md:pt-0 " 11035 x-show="open" 11036 :aria-hidden="!open" 11037 role="list" 11038 > 11039 <li class="py-2"> 11040 <a href="https://corporate.steiff.com/en/museum/opening-hours/" 11041 target="_blank" 11042 rel="noopener noreferrer" class="text-gray-dark text-base hover:underline "> 11043 Museum opening hours & tickets <span class="sr-only">(opens in new tab)</span> 11044 </a> 11045 </li> 11046 <li class="py-2"> 11047 <a href="https://corporate.steiff.com/en/museum/directions-contact/" 11048 target="_blank" 11049 rel="noopener noreferrer" class="text-gray-dark text-base hover:underline "> 11050 Museum direction & contact <span class="sr-only">(opens in new tab)</span> 11051 </a> 11052 </li> 11053 <li class="py-2"> 11054 <a href="https://corporate.steiff.com/en/museum/shop/" 11055 target="_blank" 11056 rel="noopener noreferrer" class="text-gray-dark text-base hover:underline "> 11057 Museum shop & factory outlet <sp
11057an class="sr-only">(opens in new tab)</span> 11058 </a> 11059 </li> 11060 <li class="py-2"> 11061 <a href="https://www.steiff.com/en/steiff-shops" 11062 target="_self" 11063 class="text-gray-dark text-base hover:underline "> 11064 Steiff shops </a> 11065 </li> 11066 <li class="py-2"> 11067 <a href="https://www.steiff.com/en/storefinder" 11068 target="_self" 11069 class="text-gray-dark text-base hover:underline "> 11070 Storefinder </a> 11071 </li> 11072 </ul> 11073 </nav> 11074 <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"> 11075 <button type="button" 11076 @click="open = !open" 11077 :aria-expanded="open" 11078 :aria-controls="'footer-menu-6ab5738c344b1'" 11079 aria-label="Top categories menu toggle" 11080 class="md:hidden text-base w-full grid grid-cols-7 font-bold hover:cursor-pointer"> 11081 <span class="col-start-2 col-span-5 w-full text-center"> 11082 Top categories </span> 11083 <span class="col-start-7 mr-2 self-center justify-self-end" :class="{ 'rotate-180': open }" aria-hidden="true"> 11084 <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"> 11085 <path stroke-linecap="round" stroke-linejoin="round" d="M19 9l-7 7-7-7"/> 11086</svg> 11087 </span> 11088 </button> 11089 <span class="hidden md:block text-base font-bold mb-4"> 11090 Top categories </span> 11091 <ul x-cloak 11092 id="footer-menu-6ab5738c344b1" 11093 class="list-none px-4 pt-4 m-0 md:block md:px-0 md:pt-0 " 11094 x-show="open" 11095 :aria-hidden="!open" 11096 role="list" 11097 > 11098 <li class="py-2"> 11099 <a href="https://www.steiff.com/en/baby-kids-fashion" 11100 target="_self" 11101 class="text-gray-dark text-base hover:underline "> 11102 Baby- & Kids fashion </a> 11103 </li> 11104 <li class="py-2"> 11105 <a href="https://www.steiff.com/en/baby-kids-fashion/sale" 11106 target="_self" 11107 class="text-gray-dark text-base hover:underline "> 11108 Baby- & Kids fashion Sale </a> 11109 </li> 11110 <li class="py-2"> 11111 <a href="https://www.steiff.com/en/stuffed-animals-toys/teddy-bears" 11112 target="_self" 11113 class="text-gray-dark text-base hover:underline "> 11114 Teddy bears </a> 11115 </li> 11116 <li class="py-2"> 11117 <a href="https://www.steiff.com/en/stuffed-animals-toys/stuffed-animals" 11118 target="_self" 11119 class="text-gray-dark text-base hover:underline "> 11120 Stuffed animals </a> 11121 </li> 11122 <li class="py-2"> 11123 <a href="https://www.steiff.com/en/exclusive-world-of-collectors" 11124 target="_self" 11125 class="text-gray-dark text-base hover:underline "> 11126 Collectors world </a> 11127 </li> 11128 </ul> 11129 </nav> 11130 <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"> 11131 <button type="button" 11132 @click="open = !open" 11133 :aria-expanded="open" 11134 :aria-controls="'footer-menu-6ab5738c346a3'" 11135 aria-label="Contact & Legal menu toggle" 11136 class="md:hidden text-base w-full grid grid-cols-7 font-bold hover:cursor-pointer">
11137 <span class="col-start-2 col-span-5 w-full text-center"> 11138 Contact & Legal </span> 11139 <span class="col-start-7 mr-2 self-center justify-self-end" :class="{ 'rotate-180': open }" aria-hidden="true"> 11140 <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"> 11141 <path stroke-linecap="round" stroke-linejoin="round" d="M19 9l-7 7-7-7"/> 11142</svg> 11143 </span> 11144 </button> 11145 <span class="hidden md:block text-base font-bold mb-4"> 11146 Contact & Legal </span> 11147 <ul x-cloak 11148 id="footer-menu-6ab5738c346a3" 11149 class="list-none px-4 pt-4 m-0 md:block md:px-0 md:pt-0 " 11150 x-show="open" 11151 :aria-hidden="!open" 11152 role="list" 11153 > 11154 <li class="py-2"> 11155 <a href="https://www.steiff.com/en/i/help" 11156 target="_self" 11157 class="text-gray-dark text-base hover:underline "> 11158 Help, FAQ & Contact </a> 11159 </li> 11160 <li class="py-2"> 11161 <a href="https://www.steiff.com/en/gtc" 11162 target="_self" 11163 class="text-gray-dark text-base hover:underline "> 11164 GTC </a> 11165 </li> 11166 <li class="py-2"> 11167 <a href="https://www.steiff.com/en/imprint" 11168 target="_self" 11169 class="text-gray-dark text-base hover:underline "> 11170 Imprint </a> 11171 </li> 11172 <li class="py-2"> 11173 <a href="https://www.steiff.com/en/privacy" 11174 target="_self" 11175 class="text-gray-dark text-base hover:underline "> 11176 Privacy </a> 11177 </li> 11178 <li class="py-2"> 11179 <a href="https://www.steiff.com/en/accessibility" 11180 target="_self" 11181 class="text-gray-dark text-base hover:underline "> 11182 Accessibility Statement </a> 11183 </li> 11184 <li class="py-2"> 11185 <a href="https://www.steiff.com/en/newsletter" 11186 target="_self" 11187 class="text-gray-dark text-base hover:underline "> 11188 Newsletter </a> 11189 </li> 11190 <li class="py-2"> 11191 <a href="https://www.steiff.com/en/legal-guarantee-rights" 11192 target="_blank" 11193 rel="noopener noreferrer" class="text-gray-dark text-base hover:underline "> 11194 Legal Guarantee <sp
11194an class="sr-only">(opens in new tab)</span> 11195 </a> 11196 </li> 11197 <li class="py-2"> 11198 <a href="https://www.steiff.com/en/withdraw-from-contract" 11199 target="_self" 11200 class="text-gray-dark text-base hover:underline font-bold"> 11201 Withdraw from contract </a> 11202 </li> 11203 </ul> 11204 </nav> 11205 <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:"> 11206 <button type="button" 11207 @click="open = !open" 11208 :aria-expanded="open" 11209 :aria-controls="'footer-menu-6ab5738c37034'" 11210 aria-label="Pay with: menu toggle" 11211 class="md:hidden text-base w-full grid grid-cols-7 font-bold hover:cursor-pointer"> 11212 <span class="col-start-2 col-span-5 w-full text-center"> 11213 Pay with: </span> 11214 <span class="col-start-7 mr-2 self-center justify-self-end" :class="{ 'rotate-180': open }" aria-hidden="true"> 11215 <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"> 11216 <path stroke-linecap="round" stroke-linejoin="round" d="M19 9l-7 7-7-7"/> 11217</svg> 11218 </span> 11219 </button> 11220 <span class="hidden md:block text-base font-bold mb-4"> 11221 Pay with: </span> 11222 <ul x-cloak 11223 id="footer-menu-6ab5738c37034" 11224 class="list-none px-4 pt-4 m-0 md:block md:px-0 md:pt-0 md:grid md:grid-cols-3" 11225 x-show="open" 11226 :aria-hidden="!open" 11227 role="list" 11228 > 11229 <li class="py-2"> 11230 <img src="https://www.steiff.com/static/version1790253198/frontend/Steiff/default/en_GB/Steiff_SvgIcons/svg/payment/paypal.svg" 11231 alt="Paypal" 11232 class="h-6 mb-2 w-auto max-h-6 grayscale opacity-100 text-base" /> 11233 </li> 11234 <li class="py-2"> 11235 <img src="https://www.steiff.com/static/version1790253198/frontend/Steiff/default/en_GB/Steiff_SvgIcons/svg/payment/mastercard_large.svg" 11236 alt="Master Card" 11237 class="h-6 mb-2 w-auto max-h-6 grayscale opacity-100 text-base" /> 11238 </li> 11239 <li class="py-2"> 11240 <sp
11240an class="text-gray-dark text-base "> 11241 Google Pay </span> 11242 </li> 11243 <li class="py-2"> 11244 <img src="https://www.steiff.com/static/version1790253198/frontend/Steiff/default/en_GB/Steiff_SvgIcons/svg/payment/visa.svg" 11245 alt="Visa" 11246 class="h-6 mb-2 w-auto max-h-6 grayscale opacity-100 text-base" /> 11247 </li> 11248 <li class="py-2"> 11249 <span class="text-gray-dark text-base "> 11250 Invoice (only Netherlands) </span> 11251 </li> 11252 <li class="py-2"> 11253 <span class="text-gray-dark text-base "> 11254 Apple Pay </span> 11255 </li> 11256 </ul> 11257 </nav> 11258 <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"> 11259 <button type="button" 11260 @click="open = !open" 11261 :aria-expanded="open" 11262 :aria-controls="'footer-menu-6ab5738c372cc'" 11263 aria-label="Shipping partner menu toggle" 11264 class="md:hidden text-base w-full grid grid-cols-7 font-bold hover:cursor-pointer"> 11265 <span class="col-start-2 col-span-5 w-full text-center"> 11266 Shipping partner </span> 11267 <span class="col-start-7 mr-2 self-center justify-self-end" :class="{ 'rotate-180': open }" aria-hidden="true"> 11268 <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"> 11269 <path stroke-linecap="round" stroke-linejoin="round" d="M19 9l-7 7-7-7"/> 11270</svg> 11271 </span> 11272 </button> 11273 <span class="hidden md:block text-base font-bold mb-4"> 11274 Shipping partner </span> 11275 <ul x-cloak 11276 id="footer-menu-6ab5738c372cc" 11277 class="list-none px-4 pt-4 m-0 md:block md:px-0 md:pt-0 " 11278 x-show="open" 11279 :aria-hidden="!open" 11280 role="list" 11281 > 11282 <li class="py-2"> 11283 <img src="https://www.steiff.com/static/version1790253198/frontend/Steiff/default/en_GB/logos/DHL.svg" 11284 alt="DHL" 11285 class="h-6 mb-2 w-auto max-h-6 grayscale opacity-100 text-base" /> 11286 </li> 11287 </ul> 11288 </nav> 11289 </div> 11290 </div> 11291</div> 11292 11293<!-- shop logo --> 11294<div class="w-full flex justify-center border-t border-gray-light py-3"> 11295 <a href="https://www.steiff.com/en" 11296 aria-label="Go to the main page" 11297 class="flex items-center"> 11298 <img src="https://www.steiff.com/static/version1790253198/frontend/Steiff/default/en_GB/logos/logo-bear.svg" 11299 alt="Steiff logo" 11300 width="143" 11301 height="58" /> 11302 </a> 11303</div> 11304<!-- copyright --> 11305<div class="bg-black text-white text-center py-6 text-xs"> 11306 <div class="container mx-auto px-4">
11307 <span class="mb-0">© 2026 Margarete Steiff GmbH</span> 11308 <div class="inline" x-data="hyva.modal()"> 11309 <span class="mt-0 text-xs leading-relaxed"> 11310 <span>|</span> 11311 All prices incl. VAT plus <button 11312 type="button" 11313 id="footer-shipping-costs-trigger" 11314 class="underline underline-offset-2 p-0 m-0 align-baseline font-inherit text-inherit bg-transparent border-0 cursor-pointer hover:opacity-90" 11315 aria-haspopup="dialog" 11316 @click="$dispatch('hyva-modal-show', {dialog: 'footer-shipping-priceinfo-modal', focusAfterHide: '#footer-shipping-costs-trigger'})" 11317 >Shipping costs</button> 11318 . Crossed-out prices correspond to the previous price at Steiff. </span> 11319 <div x-cloak data-dialog-ref-name="footer-shipping-priceinfo-modal" 11320 x-bind="overlay" 11321 class="fixed inset-0 bg-black/50 z-50"> 11322 <div class="fixed flex justify-center items-center text-left z-40 inset-0"> 11323 <div x-ref="footer-shipping-priceinfo-modal" role="dialog" aria-modal="true" 11324 aria-labelledby="footer-shipping-priceinfo-modal-title" 11325 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]"> 11326 11327<div class="shipping-payment-info-modal relative"> 11328 <!-- Close Button --> 11329 <button 11330 type="button" 11331 @click="cancel()" 11332 class="absolute top-0 right-0 p-2 text-black" 11333 aria-label="Close" 11334 > 11335 <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"> 11336 <path stroke-linecap="round" stroke-linejoin="round" d="M6 18L18 6M6 6l12 12"/> 11337</svg> 11338 </button> 11339 11340 <!-- Header --> 11341 <div class="flex items-center gap-2 mb-6 pr-10"> 11342 <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"> 11343 <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"/> 11344 <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"/> 11345</svg> 11346 <h4 id="footer-shipping-priceinfo-modal-title" class="font-bold text-left text-black"> 11347 Shipping & payment information </h4> 11348 </div> 11349 11350 <!-- CMS content --> 11351 <div class="shipping-payment-info-modal__cms text-black text-left text-base"> 11352 <!-- HyväCMS cms_block --> 11353 <div data-liveview-element="steiff_row" 11354 class=" not-prose container" 11355 style="padding-top: 1rem; padding-bottom: 1rem;" > 11356 <div data-liveview-element="steiff_row" 11357 class=" not-prose" 11358 style="padding-top: 1rem; padding-bottom: 1rem;" > 11359 <div 11360 id="steiff-column-migrated_1782888403_6a44b7d3461ad" 11361 class="grid" 11362 data-liveview-element="steiff_column" 11363 style="background-color: ; color: ;"> 11364 <div 11365 id="steiff-column-item-steiff_content_migration_6a44b7d346b91" 11366 class="min-w-0 justify-self-start flex items-start order-none sm:order-none lg:order-none h-full" 11367 data-liveview-element="steiff_column_item" 11368 > 11369 <div 11370 data-liveview-element="steiff_text" 11371 class="steiff-text-content text-left text-base font-normal" 11372 > 11373 <p>The prices are always without shipping costs but VAT included.</p> 11374<p>The<strong> fee</strong> for shipping is within:</p> 11375<p><strong>Portugal and Greece 19,95€</strong></p> 11376<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> 11377<p>From an order value of <strong>more than 100, - €</strong> the shipping to<strong> Germany and Austria is free of charge</strong>.</p> 11378<p>For shipping to <strong>UK</strong> additional <strong>customs fees</strong> may apply.</p></div> 11379 </div> 11380 <style>
11381 :where(#steiff-column-migrated_1782888403_6a44b7d3461ad) { 11382 --cols: repeat(1, minmax(0px, 1fr)); 11383 --gap: 1rem; 11384 grid-template-columns: var(--cols); 11385 gap: var(--gap); 11386 } 11387 11388 11389 </style> 11390</div> 11391 </div> 11392 </div> 11393 </div> 11394</div> 11395 </div> 11396 </div> 11397 </div> 11398 </div> 11399 </div> 11400</div> 11401</div></footer>
11401<script> 11402 window.cspNonce = "aXNvdHRhYjg0cWZka2Rpb29vdXc5MzQyMWZmbGF3eW4="; 11403</script>
vendor: 1 bytes, line 11403
11403
11404<script> 11405/** 11406 * Usercentrics Privacy Layer Link Handler 11407 * 11408 * Opens the Usercentrics second layer (cookie settings) when clicking 11409 * on links with href="#data-privacy-layer" 11410 */ 11411(function() { 11412 'use strict'; 11413 11414 document.addEventListener('click', function(event) { 11415 let target = event.target; 11416 11417 // Check if clicked element or its parent is a link with #data-privacy-layer 11418 while (target && target !== document) { 11419 if (target.matches && target.matches('a[href="#data-privacy-layer"]')) { 11420 event.preventDefault(); 11421 11422 if (window.UC_UI && typeof window.UC_UI.showSecondLayer === 'function') { 11423 window.UC_UI.showSecondLayer(); 11424 } else { 11425 console.warn('Usercentrics UI not loaded yet'); 11426 } 11427 return; 11428 } 11429 target = target.parentNode; 11430 } 11431 }); 11432})(); 11433</script>
11433 11434
11435<script> 11436 let SnapSlider = class { 11437 constructor(el, { 11438 labelSepparator = 'of', 11439 autoPager, 11440 groupPager 11441 } = {}) { 11442 this.el = el; 11443 this.track = this.el.querySelector("[data-track]"); 11444 if (!this.track) { 11445 console.warn( 11446 "No Slider track defined, reverting back to CSS slider.\nPlease create a wrapper for your slides with the attribute data-track", 11447 this.el 11448 ); 11449 return; 11450 } 11451 this.initialLoad = true; 11452 this.slides = []; 11453 this.inViewObserver; 11454 this.mutationObserver; 11455 this.resizeObserver; 11456 this.pager = this.el.querySelector("[data-pager]"); 11457 this.navBtns = Array.from( 11458 this.el.querySelectorAll("[data-next], [data-prev]") 11459 ); 11460 this.slideLabelSepparator = this.el.dataset.slideLabelSepparator || labelSepparator; 11461 this.useAutoPager = autoPager || this.el.hasAttribute("data-auto-pager") || false; 11462 this.useGroupPager = groupPager || this.el.hasAttribute("data-group-pager") || false; 11463 this.sliderLabel = this.el.hasAttribute("aria-label") && this.el.getAttribute("aria-label").toLowerCase().trim().replace(/[^a-z0-9_-]+/g, "-").replace(/^-+|-+$/g, ""); 11464 this.sliderId = this.el.id || this.sliderLabel || "slider"; 11465 this.markerIdName = "data-target-id"; 11466 this.pagerClasses = this.el.dataset.pagerClass || "snap-pager"; 11467 this.markerClasses = this.el.dataset.markerClass || "snap-marker"; 11468 this.init(); 11469 } 11470 init() { 11471 this.setupSlides(); 11472 this.setupNav(); 11473 if (this.useAutoPager) { 11474 this.createPager(); 11475 } else { 11476 this.setupPager(); 11477 } 11478 this.setupObservers(); 11479 this.setupMutationObserver(); 11480 this.setupResizeObserver(); 11481 this.el.addEventListener("click", this.eventHandler.bind(this)); 11482 this.el.addEventListener("keydown", this.eventHandler.bind(this)); 11483 } 11484 destroy() { 11485 this.inViewObserver?.disconnect(); 11486 this.mutationObserver?.disconnect(); 11487 this.resizeObserver?.disconnect(); 11488 this.el.removeEventListener("click", this.eventHandler.bind(this)); 11489 this.el.removeEventListener("keydown", this.eventHandler.bind(this)); 11490 } 11491 roundUpIfGreaterThan(number, min = 8) { 11492 const decimalPart = number - Math.floor(number); 11493 return decimalPart >= min ? Math.ceil(number) : Math.floor(number); 11494 } 11495 getInViewItems() { 11496 const inViewSlides = this.track.querySelectorAll("[data-in-view]"); 11497 const firstInViewSlide = inViewSlides[0] || null; 11498 const lastInViewSlide = inViewSlides[inViewSlides.length - 1] || null; 11499 const isAtStart = firstInViewSlide === this.slides[0]; 11500 const isAtEnd = lastInViewSlide === this.slides[this.slides.length - 1]; 11501 return { 11502 inViewSlides, 11503 totalInViewSlides: inViewSlides.length, 11504 firstInViewSlide, 11505 lastInViewSlide, 11506 isAtStart, 11507 isAtEnd, 11508 hasNoOverflow: isAtStart && isAtEnd 11509 }; 11510 } 11511 groupPagerMarkers() { 11512 if (this.slides.length === 0 || !this.pager || !this.useGroupPager) return; 11513 const totalVisibleSlides = this.roundUpIfGreaterThan( 11514 this.track.offsetWidth / this.slides[0].offsetWidth 11515 ); 11516 const markers = Array.from(this.pager.querySelectorAll("a, button")); 11517 markers.forEach((marker, index) => { 11518 marker.style.display = index % totalVisibleSlides === 0 ? null : "none"; 11519 }); 11520 } 11521 handleInView(entries) { 11522 entries.forEach((entry) => { 11523 const marker = this.pager && (this.pager.querySelector(`[href="#${entry.target.id}"]`) || this.pager.querySelector( 11524 `[${this.markerIdName}="${entry.target.id}"]` 11525 )); 11526 entry.target.toggleAttribute("data-in-view", entry.isIntersecting); 11527 entry.target.toggleAttribute("inert", !entry.isIntersecting); 11528 marker?.setAttribute("aria-current", entry.isIntersecting); 11529 marker?.setAttribute("tabindex", entry.isIntersecting ? "0" : "-1"); 11530 }); 11531 const { 11532 isAtStart, 11533 isAtEnd, 11534 hasNoOverflow 11535 } = this.getInViewItems(); 11536 this.navBtns.forEach((btn) => { 11537 if (btn.hasAttribute("data-next")) { 11538 btn.style.visibility = hasNoOverflow ? "hidden" : null; 11539 isAtEnd ? btn.setAttribute("disabled", "") : btn.removeAttribute("disabled"); 11540 } 11541 if (btn.hasAttribute("data-prev")) { 11542 btn.style.visibility = hasNoOverflow ? "hidden" : null; 11543 isAtStart ? btn.setAttribute("disabled", "") : btn.removeAttribute("disabled"); 11544 } 11545 }); 11546 if (this.pager) { 11547 this.pager.style.visibility = hasNoOverflow ? "hidden" : null; 11548 } 11549 if (!this.initialLoad) { 11550 this.el.dispatchEvent( 11551 new CustomEvent("slideChange", { 11552 detail: this.getInViewItems() 11553 }) 11554 ); 11555 } else { 11556 this.initialLoad = false;
11557 } 11558 if (document.activeElement.parentElement.hasAttribute("data-pager")) { 11559 const activeItems = this.pager.querySelectorAll('[tabindex="0"]'); 11560 if (activeItems.length) { 11561 activeItems[0].focus({ preventScroll: true }); 11562 } 11563 } 11564 } 11565 getSlides() { 11566 if (!this.track) return []; 11567 return Array.from(this.track.children).filter( 11568 (child) => child.tagName.toLowerCase() !== "template" && child.tagName.toLowerCase() !== "style" && child.tagName.toLowerCase() !== "script" 11569 ); 11570 } 11571 refreshSlides() { 11572 this.initialLoad = true; 11573 this.slides = this.getSlides(); 11574 this.setupSlides(); 11575 if (this.useAutoPager) { 11576 this.createPager(); 11577 } else { 11578 this.setupPager(); 11579 } 11580 this.groupPagerMarkers(); 11581 this.setupObservers(); 11582 } 11583 setupSlides() { 11584 this.slides = this.getSlides(); 11585 this.slides.forEach((slide, index) => { 11586 const totalSlides = this.slides.length; 11587 const currentSlide = index + 1; 11588 const existingLabel = slide.getAttribute("aria-label") || ""; 11589 const isImage = slide.tagName.toLowerCase() === "img" || slide.tagName.toLowerCase() === "picture"; 11590 const slideLabelTag = isImage ? "alt" : "aria-label"; 11591 const hasAutoLabel = existingLabel.startsWith( 11592 `${currentSlide} ${this.slideLabelSepparator} ` 11593 ); 11594 if (!slide.hasAttribute("id")) { 11595 slide.setAttribute( 11596 "id", 11597 `${this.sliderId}-item-${currentSlide}` 11598 ); 11599 } 11600 if (!slide.hasAttribute(slideLabelTag) || slide.getAttribute(slideLabelTag) === "" || hasAutoLabel) { 11601 slide.setAttribute( 11602 slideLabelTag, 11603 `${currentSlide} ${this.slideLabelSepparator} ${totalSlides}` 11604 ); 11605 } 11606 if (slide.tagName.toLowerCase() === "div" && !slide.hasAttribute("role")) { 11607 slide.setAttribute("role", "group"); 11608 } 11609 if (this.pager && !isImage) { 11610 slide.setAttribute("role", "tabpanel"); 11611 } 11612 if (slide.getAttribute("role") === "group") { 11613 slide.setAttribute("aria-roledescription", "item"); 11614 } 11615 }); 11616 if (!this.el.hasAttribute("role") && this.el.tagName !== "SECTION") { 11617 this.el.setAttribute("role", "region"); 11618 } 11619 if (!this.el.hasAttribute("aria-roledescription")) { 11620 this.el.setAttribute("aria-roledescription", "carousel"); 11621 } 11622 this.track.setAttribute("tabindex", 0); 11623 this.track.setAttribute("aria-live", "polite"); 11624 } 11625 setupNav() { 11626 this.navBtns.forEach((btn) => { 11627 btn.setAttribute("disabled", ""); 11628 btn.removeAttribute("hidden"); 11629 btn.classList.remove("invisible"); 11630 btn.style.visibility = null; 11631 }); 11632 } 11633 createPager() { 11634 const newPager = document.createElement("nav"); 11635 newPager.setAttribute("data-pager", ""); 11636 newPager.setAttribute("role", "tablist"); 11637 newPager.classList.add(...this.pagerClasses.split(" ")); 11638 this.slides.forEach((slide, index) => { 11639 const marker = document.createElement("button"); 11640 const slideId = slide.id || `${this.sliderId}-item-${index + 1}`; 11641 marker.setAttribute(this.markerIdName, slideId); 11642 marker.classList.add(...this.markerClasses.split(" ")); 11643 this.setupPagerMarker(marker, index); 11644 newPager.appendChild(marker); 11645 if (slide.tagName.toLowerCase() !== "img" && slide.tagName.toLowerCase() !== "picture") { 11646 slide.removeAttribute("aria-roledescription"); 11647 slide.setAttribute("role", "tabpanel"); 11648 } 11649 }); 11650 if (this.pager) { 11651 this.pager.setAttribute("role", "tablist"); 11652 this.pager.replaceChildren(...newPager.children); 11653 } else { 11654 this.track.after(newPager); 11655 this.pager = this.el.querySelector("[data-pager]"); 11656 } 11657 } 11658 setupPager() { 11659 if (!this.pager) return; 11660 this.pager.setAttribute("role", "tablist"); 11661 const items = Array.from(this.pager.querySelectorAll("a, button"));
11662 items.forEach((marker, index) => this.setupPagerMarker(marker, index)); 11663 } 11664 setupPagerMarker(marker, index) { 11665 const markerId = marker.getAttribute("href")?.slice(1) || marker.getAttribute(this.markerIdName); 11666 const slideId = markerId || `${this.sliderId}-item-${index + 1}`; 11667 if (!markerId) { 11668 marker.setAttribute(this.markerIdName, slideId); 11669 } 11670 marker.setAttribute("role", "tab"); 11671 marker.setAttribute("aria-controls", slideId); 11672 marker.setAttribute("aria-posinset", index + 1); 11673 marker.setAttribute("aria-setsize", this.slides.length); 11674 marker.setAttribute("tabindex", "-1"); 11675 if (!marker.hasAttribute("aria-label")) { 11676 marker.setAttribute("aria-label", `Slide ${index + 1}`); 11677 } 11678 } 11679 setupObservers() { 11680 if (this.inViewObserver) { 11681 this.inViewObserver.disconnect(); 11682 } 11683 this.inViewObserver = new IntersectionObserver( 11684 this.handleInView.bind(this), { 11685 root: this.track, 11686 threshold: 0.8 11687 } 11688 ); 11689 this.slides.forEach((slide) => this.inViewObserver.observe(slide)); 11690 } 11691 setupMutationObserver() { 11692 this.mutationObserver = new MutationObserver( 11693 this.refreshSlides.bind(this) 11694 ); 11695 this.mutationObserver.observe(this.track, { 11696 childList: true, 11697 subtree: false 11698 }); 11699 } 11700 setupResizeObserver() { 11701 this.resizeObserver = new ResizeObserver( 11702 this.groupPagerMarkers.bind(this) 11703 ); 11704 this.resizeObserver.observe(this.el); 11705 } 11706 goToSlideDir(dir = "next") { 11707 const { 11708 firstInViewSlide, 11709 lastInViewSlide 11710 } = this.getInViewItems(); 11711 const isPrev = dir === "prev"; 11712 let targetSlide = isPrev ? firstInViewSlide?.previousElementSibling : lastInViewSlide?.nextElementSibling; 11713 if (!targetSlide) return; 11714 if (targetSlide.tagName.toLowerCase() === "template") { 11715 targetSlide = isPrev ? targetSlide?.previousElementSibling : targetSlide?.nextElementSibling; 11716 } 11717 targetSlide.scrollIntoView({ block: "nearest", inline: isPrev ? "end" : "start" }); 11718 } 11719 pagerToSlide(event) { 11720 if (!event.target.closest("[data-pager]")) return; 11721 const marker = event.target.closest("a, button"); 11722 if (!marker) return; 11723 event.preventDefault(); 11724 const slideId = marker.getAttribute("href")?.slice(1) || marker.getAttribute(this.markerIdName); 11725 const targetSlide = this.track.querySelector(`#${slideId}`); 11726 targetSlide?.scrollIntoView({ block: "nearest", inline: "start" }); 11727 } 11728 eventHandler(event) { 11729 const target = event.target.closest( 11730 "[data-next], [data-prev], [data-pager]" 11731 ); 11732 if (!target) return; 11733 if (event.type === "click") { 11734 if (target.hasAttribute("data-next")) { 11735 this.goToSlideDir("next"); 11736 } else if (target.hasAttribute("data-prev")) { 11737 this.goToSlideDir("prev"); 11738 } else if (target.closest("[data-pager]")) { 11739 this.pagerToSlide(event); 11740 } 11741 } 11742 if (event.type === "keydown" && target.closest("[data-pager]")) { 11743 if (event.key === "ArrowRight") { 11744 this.goToSlideDir("next"); 11745 } else if (event.key === "ArrowLeft") { 11746 this.goToSlideDir("prev"); 11747 } 11748 } 11749 } 11750 }; 11751 11752 (() => { 11753 function alpineSnapSlider(Alpine) { 11754 Alpine.directive("snap-slider", (el, { 11755 modifiers 11756 }, { 11757 cleanup 11758 }) => { 11759 const autoPager = modifiers.includes("auto-pager");
11760 const groupPager = modifiers.includes("group-pager"); 11761 const slider = new SnapSlider(el, { 11762 autoPager, 11763 groupPager 11764 }); 11765 cleanup(() => { 11766 slider.destroy(); 11767 }); 11768 }); 11769 } 11770 11771 document.addEventListener("alpine:init", () => { 11772 window.Alpine.plugin(alpineSnapSlider); 11773 }); 11774 })(); 11775 //# sourceURL=alpine-snap-slider.js 11776</script>
vendor: 1 bytes, line 11776
11776
11777<script> 11778 (() => { 11779 // src/dialog.js 11780 function dialog_default(Alpine) { 11781 Alpine.directive("htmldialog", fylgjaAlpineDialog); 11782 function fylgjaAlpineDialog(el, { expression, modifiers }, { evaluateLater, cleanup }) { 11783 const evaluate = expression.length ? evaluateLater(expression) : () => {}; 11784 const canEvaluate = expression.length > 0; 11785 const lockPageScroll = modifiers.includes("noscroll"); 11786 const closeBy = el.getAttribute("closeby") || modifierValue(modifiers, "closeby", "closerequest"); 11787 el.style.display = null; 11788 el.style.length === 0 && el.removeAttribute("style"); 11789 if (el._x_isShown) { 11790 open(); 11791 } 11792 const closeBySupported = (() => { 11793 return "closedBy" in HTMLDialogElement.prototype; 11794 })(); 11795 function scrollLock(use = true) { 11796 document.body.style.overflow = use ? "hidden" : ""; 11797 } 11798 function dialogSubmit(event) { 11799 if (event.target.getAttribute("method") === "dialog" || event.submitter?.getAttribute("formmethod") === "dialog") { 11800 event.preventDefault(); 11801 evaluate(); 11802 } 11803 } 11804 function escapeDialog(event) { 11805 if (event.key !== "Escape") return; 11806 event.preventDefault(); 11807 if (closeBy === "none") return; 11808 evaluate(); 11809 } 11810 function handleCloseByEvent(event) { 11811 if (event.target !== el) return; 11812 const rect = el.getBoundingClientRect(); 11813 const isInDialog = rect.top <= event.clientY && event.clientY <= rect.top + rect.height && rect.left <= event.clientX && event.clientX <= rect.left + rect.width; 11814 if (!isInDialog) { 11815 if (closeBy === "any") { 11816 if (closeBySupported) { 11817 event.preventDefault(); 11818 } 11819 evaluate(); 11820 } 11821 } 11822 } 11823 function handleCloseEvent() { 11824 evaluate(); 11825 } 11826 function open() { 11827 if (el.hasAttribute("open")) return; 11828 el.showModal(); 11829 scrollLock(lockPageScroll); 11830 } 11831 function close() { 11832 if (!el.hasAttribute("open")) return; 11833 el.close(); 11834 scrollLock(false); 11835 } 11836 el._x_doShow = () => open(); 11837 el._x_doHide = () => close(); 11838 el.addEventListener("keydown", escapeDialog); 11839 el.addEventListener("submit", dialogSubmit); 11840 el.addEventListener("click", handleCloseByEvent); 11841 el.addEventListener("cancel", handleCloseEvent); 11842 cleanup(() => { 11843 el.removeEventListener("keydown", escapeDialog); 11844 el.removeEventListener("submit", dialogSubmit); 11845 el.removeEventListener("click", handleCloseByEvent); 11846 el.removeEventListener("cancel", handleCloseEvent); 11847 scrollLock(false); 11848 }); 11849 } 11850 } 11851 function modifierValue(modifiers, key, fallback) { 11852 if (modifiers.indexOf(key) === -1) return fallback; 11853 const rawValue = modifiers[modifiers.indexOf(key) + 1]; 11854 if (!rawValue) return fallback; 11855 if (key === "closeby") { 11856 const allowedValues = ["auto", "none", "closerequest", "any"]; 11857 const options = allowedValues.join(", "); 11858 if (!allowedValues.includes(rawValue)) { 11859 console.warn( 11860 `"${rawValue}" is not one of the allowed values for closeby: ${options}` 11861 ); 11862 return fallback; 11863 } 11864 } 11865 return rawValue; 11866 } 11867 11868 // src/cdn.js 11869 document.addEventListener("alpine:init", () => { 11870 window.Alpine.plugin(dialog_default); 11871 }); 11872 })(); 11873 //# sourceURL=alpine-htmldialog.js 11874</script>
vendor: 1 bytes, line 11874
11874
vendor: 2,386 bytes, lines 11875-11935
11875<script> 11876 (() => { 11877 function src_default(Alpine) { 11878 Alpine.directive("intersect", Alpine.skipDuringClone((el, { value, expression, modifiers }, { evaluateLater, cleanup }) => { 11879 let evaluate = evaluateLater(expression); 11880 let options = { 11881 rootMargin: getRootMargin(modifiers), 11882 threshold: getThreshold(modifiers) 11883 }; 11884 let observer = new IntersectionObserver((entries) => { 11885 entries.forEach((entry) => { 11886 if (entry.isIntersecting === (value === "leave")) 11887 return; 11888 evaluate(); 11889 modifiers.includes("once") && observer.disconnect(); 11890 }); 11891 }, options); 11892 observer.observe(el); 11893 cleanup(() => { 11894 observer.disconnect(); 11895 }); 11896 })); 11897 } 11898 function getThreshold(modifiers) { 11899 if (modifiers.includes("full")) 11900 return 0.99; 11901 if (modifiers.includes("half")) 11902 return 0.5; 11903 if (!modifiers.includes("threshold")) 11904 return 0; 11905 let threshold = modifiers[modifiers.indexOf("threshold") + 1]; 11906 if (threshold === "100") 11907 return 1; 11908 if (threshold === "0") 11909 return 0; 11910 return Number(`.${threshold}`); 11911 } 11912 function getLengthValue(rawValue) { 11913 let match = rawValue.match(/^(-?[0-9]+)(px|%)?$/); 11914 return match ? match[1] + (match[2] || "px") : void 0; 11915 } 11916 function getRootMargin(modifiers) { 11917 const key = "margin"; 11918 const fallback = "0px 0px 0px 0px"; 11919 const index = modifiers.indexOf(key); 11920 if (index === -1) 11921 return fallback; 11922 let values = []; 11923 for (let i = 1; i < 5; i++) { 11924 values.push(getLengthValue(modifiers[index + i] || "")); 11925 } 11926 values = values.filter((v) => v !== void 0); 11927 return values.length ? values.join(" ").trim() : fallback; 11928 } 11929 11930 document.addEventListener("alpine:init", () => { 11931 window.Alpine.plugin(src_default); 11932 }); 11933 })(); 11934 //# sourceURL=alpine-intersect.js 11935</script>
vendor: 1 bytes, line 11935
11935
11936<script> 11937 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"})) { 11938 document.querySelectorAll(selector).forEach(el => el.setAttribute('x-defer', `${deferUntil}`)); 11939 } 11940 //# sourceURL=alpine-defer-rules.js 11941</script>
vendor: 1 bytes, line 11941
11941
11942<script> 11943 (() => { 11944 const hasAlpine = new Promise(resolve => { 11945 window.addEventListener('alpine:initialized', resolve, {once: true, passive: true}); 11946 }); 11947 11948 const hasInteract = new Promise(resolve => { 11949 (events => { 11950 const onInteract = () => { 11951 resolve(); 11952 events.forEach(type => window.removeEventListener(type, onInteract)); 11953 } 11954 events.forEach(type => window.addEventListener(type, onInteract, {once: true, passive: true})) 11955 })(['touchstart', 'mouseover', 'wheel', 'scroll', 'keydown']) 11956 }); 11957 11958 const onIntersect = (el) => { 11959 return new Promise(resolve => { 11960 const observer = new IntersectionObserver(entries => { 11961 for (const entry of entries) { 11962 if (entry.isIntersecting) { 11963 observer.disconnect() 11964 resolve(); 11965 } 11966 } 11967 }, {}); 11968 observer.observe(el); 11969 }); 11970 } 11971 11972 function runComponent(el) { 11973 hasAlpine.then(() => { 11974 el.removeAttribute('x-ignore'); 11975 queueMicrotask(() => Alpine.initTree(el)); 11976 }); 11977 } 11978 11979 function initDeferredComponents() { 11980 document.querySelectorAll('[x-data][x-defer]').forEach(el => { 11981 el.setAttribute('x-ignore', ''); 11982 const deferUntil = (el.getAttribute('x-defer') || '').trim(); 11983 switch (deferUntil) { 11984 case 'interact': 11985 hasInteract.then(() => runComponent(el)); 11986 break; 11987 case 'intersect': 11988 onIntersect(el).then(() => runComponent(el)) 11989 break; 11990 case 'idle': 11991 window.requestIdleCallback 11992 ? window.requestIdleCallback(() => runComponent(el), {timeout: 4000}) 11993 : setTimeout(() => runComponent(el), 4000); 11994 break; 11995 case 'eager': 11996 runComponent(el); 11997 break; 11998 default: 11999 if (deferUntil.startsWith('event:') && deferUntil.length > 6) { 12000 window.addEventListener(deferUntil.substring(6), () => runComponent(el), {once: true, passive: true}); 12001 } 12002 } 12003 }); 12004 } 12005 12006 window.addEventListener('alpine:init', initDeferredComponents, {once: true, passive: true}); 12007 })(); 12008 //# sourceURL=alpine-defer.js 12009</script>
vendor: 1 bytes, line 12009
12009
vendor: 1,455 bytes, lines 12010-12012
12010<script> 12011(()=>{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)});})(); 12012</script>
12012 12013
12014<script type="module" 12015 src="https://www.steiff.com/static/version1790253198/frontend/Steiff/default/en_GB/Hyva_Theme/js/alpine3.min.js" 12016 defer 12017 crossorigin 12018 nonce="aXNvdHRhYjg0cWZka2Rpb29vdXc5MzQyMWZmbGF3eW4="></script>
vendor: 1 bytes, line 12018
12018
12019<script> 12020 document.addEventListener("alpine:init", () => { 12021 Alpine.data('hyvaCmsToggle', () => ({ 12022 open: false, 12023 notOpen() { 12024 return !this.open; 12025 }, 12026 show() { 12027 this.open = true 12028 }, 12029 hide() { 12030 this.open = false 12031 }, 12032 toggle() { 12033 this.open = !this.open 12034 } 12035 })) 12036 }); 12037</script>
vendor: 1 bytes, line 12037
12037
12038<script> 12039 function calculateJavascriptVariables() { 12040 document.querySelector(':root').style.setProperty('--header-height', (document.querySelector('.page-header')?.clientHeight || 0) + 'px'); 12041 12042 window.dispatchEvent(new CustomEvent('javascript-variables-recalculated')) 12043 } 12044 12045 window.addEventListener('recalculate-javascript-variables', calculateJavascriptVariables) 12046 window.addEventListener('resize', calculateJavascriptVariables) 12047 window.addEventListener('alpine:initialized', calculateJavascriptVariables) 12048 12049 calculateJavascriptVariables(); 12050 12051 window.requestIdleCallback 12052 ? window.requestIdleCallback(() => calculateJavascriptVariables()) 12053 : setTimeout(() => calculateJavascriptVariables(), 4000); 12054</script>
vendor: 1 bytes, line 12054
12054
12055<script> 12056 function dispatchMessages(messages, hideAfter) { 12057 const messagesEvent = new CustomEvent("messages-loaded", { 12058 detail: { 12059 messages: messages, 12060 hideAfter: hideAfter 12061 } 12062 }); 12063 window.dispatchEvent(messagesEvent); 12064 } 12065 12066 if (typeof hyva === 'undefined' || (!hyva.getBrowserStorage || !hyva.getCookie || !hyva.setCookie)) { 12067 console.warn("Hyvä helpers are not loaded yet. Make sure they are included before this script"); 12068 } 12069 12070 (function( hyva, undefined ) { 12071 12072 hyva.initFormKey = () => { 12073 const inputSelector = 'input[name="form_key"]', 12074 formKey = hyva.getFormKey(); 12075 12076 Array.from(document.querySelectorAll(inputSelector)).map(function (input) { 12077 input.value = formKey 12078 }); 12079 } 12080 12081 hyva.initMessages = () => { 12082 try { 12083 const messages = hyva.getCookie('mage-messages'); 12084 window.mageMessages = messages ? JSON.parse(decodeURIComponent(messages).replace(/\+/g, ' ')) : []; 12085 12086 dispatchMessages(window.mageMessages); 12087 12088 // empty `mage-messages` cookie 12089 const skipSetDomain = true; 12090 hyva.setCookie('mage-messages','', -1, skipSetDomain); 12091 12092 } catch (error) { 12093 console.warn('Error parsing Cookie Messages:', error); 12094 } 12095 } 12096 12097 window.addEventListener('DOMContentLoaded', hyva.initFormKey); 12098 hyva.alpineInitialized(hyva.initMessages) 12099 12100 }( window.hyva = window.hyva || {} )); 12101 //# sourceURL=hyva-cookies.js 12102</script>
vendor: 1 bytes, line 12102
12102
12103<script> 12104 (function () { 12105 function getCookie(name) { 12106 const match = document.cookie.match(new RegExp('(?:^|;\\s*)' + name + '=([^;]*)')); 12107 return match ? decodeURIComponent(match[1]) : null; 12108 } 12109 12110 const marker = getCookie('session_marker'); 12111 12112 if (marker === 'guest') { 12113 const cached = localStorage.getItem('mage-cache-storage'); 12114 if (cached) { 12115 try { 12116 const data = JSON.parse(cached); 12117 if (data.customer && data.customer.firstname) { 12118 localStorage.removeItem('mage-cache-storage'); 12119 localStorage.removeItem('mage-cache-timeout'); 12120 localStorage.removeItem('private_content_version'); 12121 document.cookie = 'mage-cache-sessid=; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/'; 12122 } 12123 } catch (e) {} 12124 } 12125 } 12126 })(); 12127</script>
vendor: 1 bytes, line 12127
12127
12128<script> 12129 { 12130 const private_content_key = 'mage-cache-storage'; 12131 const private_content_expire_key = 'mage-cache-timeout'; 12132 const private_content_version_key = 'private_content_version'; 12133 const section_data_ids_key = 'section_data_ids'; 12134 const mage_cache_session_id_key = 'mage-cache-sessid'; 12135 const last_visited_store_key = 'last_visited_store'; 12136 12137 const ttl = 3600; 12138 12139 if (typeof hyva === 'undefined' || (!hyva.getBrowserStorage || !hyva.getCookie || !hyva.setCookie)) { 12140 console.warn("Hyvä helpers are not loaded yet. Make sure they are included before this script"); 12141 } 12142 12143 function loadSectionData () { 12144 const browserStorage = hyva.getBrowserStorage(); 12145 if (!browserStorage) { 12146 typeof window.dispatchMessages !== "undefined" && window.dispatchMessages( 12147 [{ 12148 type: "warning", 12149 text: "Please enable LocalStorage in your browser." 12150 }] 12151 ); 12152 return; 12153 } 12154 try { 12155 let isInvalid = false; 12156 12157 if (hyva.getCookie(last_visited_store_key) !== CURRENT_STORE_CODE) { 12158 isInvalid = true; 12159 } 12160 hyva.setCookie(last_visited_store_key, CURRENT_STORE_CODE, false, false); 12161 12162 if (!hyva.getCookie(mage_cache_session_id_key)) { 12163 isInvalid = true; 12164 browserStorage.removeItem(private_content_key); 12165 const skipSetDomain = true; 12166 const days = false; 12167 hyva.setCookie(mage_cache_session_id_key, true, days, skipSetDomain) 12168 } 12169 12170 const cookieVersion = hyva.getCookie(private_content_version_key); 12171 const storageVersion = browserStorage.getItem(private_content_version_key); 12172 12173 if (cookieVersion && !storageVersion || cookieVersion !== storageVersion) { 12174 isInvalid = true; 12175 } 12176 12177 const privateContentExpires = browserStorage.getItem(private_content_expire_key); 12178 if (privateContentExpires && new Date(privateContentExpires) < new Date()) { 12179 browserStorage.removeItem(private_content_key); 12180 } 12181 12182 if (isInvalid && cookieVersion) { 12183 fetchPrivateContent([]); 12184 } else if (cookieVersion && storageVersion && cookieVersion === storageVersion) { 12185 const privateContent = JSON.parse(browserStorage.getItem(private_content_key)); 12186 if ( 12187 privateContent && 12188 privateContentExpires && 12189 privateContent.cart && 12190 privateContent.customer 12191 ) { 12192 dispatchPrivateContent(privateContent); 12193 } else { 12194 fetchPrivateContent([]); 12195 } 12196 } else { 12197 if (document.getElementById('default-section-data')) { 12198 const privateContent = JSON.parse(document.getElementById('default-section-data').innerText.trim()); 12199 dispatchPrivateContent(privateContent); 12200 } else { 12201 dispatchPrivateContent({}); 12202 } 12203 } 12204 12205 } catch (error) { 12206 console.warn('Error retrieving Private Content:', error); 12207 } 12208 } 12209 12210 hyva.alpineInitialized(loadSectionData) 12211 window.addEventListener('reload-customer-section-data', loadSectionData); 12212 12213 window.processSectionDataBeforeDispatch = window.processSectionDataBeforeDispatch || (data => data); 12214 12215 function dispatchPrivateContent(data) { 12216 12217 const privateContentEvent = new CustomEvent("private-content-loaded", { 12218 detail: { 12219 data: window.processSectionDataBeforeDispatch(data) 12220 } 12221 }); 12222 window.dispatchEvent(privateContentEvent); 12223 } 12224 12225 function fetchPrivateContent(sections) { 12226 fetch(`${BASE_URL}customer/section/load/?sections=${encodeURIComponent(sections.join(','))}`, { 12227 method: 'GET', 12228 headers: { 12229 'Content-Type': 'application/json', 12230 'X-Requested-With': 'XMLHttpRequest' 12231 } 12232 }) 12233 .then(response => response.ok && response.json()) 12234 .then( 12235 data => { 12236 if (data) { 12237 try { 12238 const browserStorage = hyva.getBrowserStorage(); 12239 12240 // merge new data preserving non-invalidated sections 12241 const oldSectionData = JSON.parse(browserStorage.getItem(private_content_key) || '{}') || {}; 12242 12243 if ((! data.cart || ! data.cart.cartId) && oldSectionData['checkout-data']) { 12244 delete oldSectionData['checkout-data']; 12245 } 12246 const newSectionData = Object.assign(oldSectionData, data); 12247 12248 dispatchPrivateContent(newSectionData); 12249 12250 // don't persist messages, they've been dispatched already 12251 if (newSectionData.messages && newSectionData.messages.messages ) { 12252 newSectionData.messages.messages = []; 12253 } 12254 12255 browserStorage.setItem(private_content_key, JSON.stringify(newSectionData)); 12256 12257 const expiresAt = new Date(Date.now() + (ttl * 1000)).toISOString(); 12258 browserStorage.setItem(private_content_expire_key, expiresAt); 12259 12260 const newCookieVersion = hyva.getCookie(private_content_version_key); 12261 browserStorage.setItem(private_content_version_key, newCookieVersion); 12262 12263 // We don't need the section_data_ids in Hyvä, but we store them for compatibility 12264 // with Luma Fallback. Otherwise, not all sections are loaded in Luma Checkout 12265 hyva.setCookie( 12266 section_data_ids_key, 12267 JSON.stringify( 12268 Object.keys(data).reduce((sectionDataIds, sectionKey) => { 12269 sectionDataIds[sectionKey] = data[sectionKey]['data_id']; 12270 return sectionDataIds; 12271 }, {}) 12272 ), 12273 false, 12274 true 12275 ); 12276 } catch (error) { 12277 console.warn("Couldn't store privateContent", error); 12278 } 12279 } 12280 } 12281 ); 12282 } 12283 } 12284 //# sourceURL=hyva-private-content.js 12285</script>
vendor: 1 bytes, line 12285
12285
12286<script> 12287 (() => { 12288 document.addEventListener('submit', event => event.target.action = event.target.action.replace('%25uenc%25', hyva.getUenc())); 12289 })() 12290</script>
vendor: 1 bytes, line 12290
12290
12291<script> 12292 (events => { 12293 const dispatchUserInteractionEvent = () => { 12294 events.forEach(type => window.removeEventListener(type, dispatchUserInteractionEvent)) 12295 window.dispatchEvent(new Event('init-external-scripts')) 12296 }; 12297 events.forEach(type => window.addEventListener(type, dispatchUserInteractionEvent, {once: true, passive: true})) 12298 })(['touchstart', 'mousemove', 'wheel', 'scroll', 'keydown']); 12299 //# sourceURL=hyva-init-external-scripts.js 12300</script>
vendor: 1 bytes, line 12300
12300
12301<script> 12302 function initWishlist() { 12303 return window.steiffInitWishlistToggle(); 12304 } 12305</script>
vendor: 1 bytes, line 12305
12305
12306<script> 12307 function initCompareOnProductList() { 12308 return { 12309 addToCompare(productId) { 12310 const formKey = hyva.getFormKey(); 12311 const postUrl = BASE_URL + 'catalog/product_compare/add/'; 12312 12313 fetch(postUrl, { 12314 "headers": { 12315 "content-type": "application/x-www-form-urlencoded; charset=UTF-8", 12316 }, 12317 "body": "form_key=" + formKey + "&product=" + productId + "&uenc=" + hyva.getUenc(), 12318 "method": "POST", 12319 "mode": "cors", 12320 "credentials": "include" 12321 }).then(function (response) { 12322 if (response.redirected) { 12323 window.location.href = response.url; 12324 } 12325 }).catch(function (error) { 12326 typeof window.dispatchMessages !== "undefined" && window.dispatchMessages( 12327 [{ 12328 type: "error", 12329 text: error 12330 }], 5000 12331 ); 12332 }); 12333 } 12334 }; 12335 } 12336</script>
vendor: 1 bytes, line 12336
12336
12337<script> 12338 function initPriceBox() 12339 { 12340 return { 12341 updatePrice(priceData) { 12342 const regularPriceLabel = this.$root.querySelector('.normal-price .price-label'); 12343 const regularPriceElement = this.$root.querySelector('.normal-price [data-price-type=finalPrice].price-wrapper .price'); 12344 const basePriceElement = this.$root.querySelector('.normal-price [data-price-type=basePrice].price-wrapper .price'); 12345 if (priceData.finalPrice.amount < priceData.oldPrice.amount) { 12346 regularPriceLabel && regularPriceLabel.classList.add('hidden'); 12347 } else { 12348 regularPriceLabel && regularPriceLabel.classList.remove('hidden'); 12349 } 12350 regularPriceElement && (regularPriceElement.innerText = hyva.formatPrice(priceData.finalPrice.amount)); 12351 basePriceElement && (basePriceElement.innerText = hyva.formatPrice(priceData.basePrice.amount)); 12352 } 12353 } 12354 } 12355</script>
vendor: 1 bytes, line 12355
12355
12356<script> 12357 function initConfigurableOptions(productId, optionConfig) { 12358 12359 function findPathParam(key) { 12360 const baseUrl = (BASE_URL.substring(0, 2) === '//' ? 'http:' : '') + BASE_URL; 12361 const baseUrlParts = (new URL(baseUrl)).pathname.replace(/\/$/, '').split('/'); 12362 const pathParts = window.location.pathname.split('/').slice(baseUrlParts.length + 3); 12363 for (let i = 0; i < pathParts.length; i += 2) { 12364 if (pathParts[i] === key && pathParts.length > i) { 12365 return pathParts[i + 1]; 12366 } 12367 } 12368 } 12369 12370 return { 12371 optionConfig, 12372 productId, 12373 itemId: (new URLSearchParams(window.location.search)).get('id') || findPathParam('id'), 12374 allowedAttributeOptions: [], 12375 selectedValues: [], 12376 init() { 12377 this.findAllowedAttributeOptions(); 12378 this.$nextTick(() => { 12379 if (typeof this.optionConfig.defaultValues === 'object') { 12380 for (const [attributeId, value] of Object.entries(this.optionConfig.defaultValues)) { 12381 this.changeOption(attributeId, value + ''); 12382 } 12383 } 12384 this.preselectQuerystringItems(); 12385 this.preselectLocationHashItems(); 12386 }); 12387 }, 12388 productIndex: 0, 12389 productIndexForPrice: 0, 12390 optionIsActive(attributeId, optionId) { 12391 return !!this.getAllowedAttributeOptions(attributeId).find( 12392 option => option.id === optionId 12393 ) 12394 }, 12395 optionIsEnabled(attributeId, optionId) { 12396 for (const productId in this.optionConfig.index) { 12397 if (this.optionConfig.index[productId][attributeId] === optionId) { 12398 return true; 12399 } 12400 } 12401 return false; 12402 }, 12403 findSimpleIndex() { 12404 this.productIndex = this.calculateSimpleIndexForPartialSelection(this.selectedValues); 12405 this.productIndexForPrice = this.findCheapestProductForPartialSelection(this.selectedValues); 12406 }, 12407 calculateSimpleIndexForPartialSelection(selectedValues) { 12408 if (selectedValues.length === 0) return 0; 12409 return this.findProductIdsForPartialSelection(selectedValues)[0]; 12410 }, 12411 calculateSimpleIndexForFullSelection(selectedValues) { 12412 if (! this.isFullSelection(selectedValues)) return false; 12413 12414 const productIndexes = this.optionConfig.index; 12415 return Object.keys(productIndexes).find(productIndex => { 12416 const productCandidateOptions = productIndexes[productIndex]; 12417 12418 for (const productOption in productCandidateOptions) { 12419 if ( 12420 !selectedValues[productOption] || 12421 selectedValues[productOption] !== productCandidateOptions[productOption] 12422 ) { 12423 return false; 12424 } 12425 } 12426 return productIndex; 12427 }); 12428 }, 12429 findAllowedAttributeOptions() { 12430 this.allowedAttributeOptions = this.calculateAllowedAttributeOptions(this.selectedValues); 12431 }, 12432 calculateAllowedAttributeOptions(selectedValues) { 12433 const allAttributes = this.optionConfig.attributes; 12434 const allAttributesSorted = Object.values(allAttributes).sort((a,b) => { 12435 return a.position - b.position 12436 }); 12437 12438 const newAllowedAttributeOptions = []; 12439 12440 allAttributesSorted.forEach(attribute => { 12441 const selectionWithoutAttr = Object.assign({}, this.removeAttrFromSelection(selectedValues, attribute.id)); 12442 const availableIndexes = this.calculateAvailableProductIndexes(selectionWithoutAttr); 12443 newAllowedAttributeOptions[attribute.id] = allAttributes[attribute.id].options.filter(option => { 12444 return !!option.products.find(product => { 12445 return availableIndexes.includes(product); 12446 }) 12447 }); 12448 }); 12449 return newAllowedAttributeOptions; 12450 }, 12451 calculateAvailableProductIndexes(selectedOptions) { 12452 if (Object.keys(selectedOptions).length === 0) { 12453 if (Object.values(this.optionConfig.salable || {}).length) { 12454 return [].concat.apply([], [].concat.apply([], Object.values(this.optionConfig.salable).map(Object.values))).filter((x, i, a) => a.indexOf(x) === i) 12455 } 12456 return Object.keys(this.optionConfig.index); 12457 } 12458 12459 const selectedIds = Object.keys(selectedOptions); 12460 if (Object.values(this.optionConfig.salable || {}).length) { 12461 const selectedOptionIndexes = selectedIds.map(attrId => { 12462 const optionValue = selectedOptions[attrId]; 12463 return this.optionConfig.salable[attrId] && this.optionConfig.salable[attrId][optionValue] || [] 12464 }) 12465 return selectedOptionIndexes.reduce((acc, optionIndexes) => { 12466 return acc.filter(index => optionIndexes.includes(index)); 12467 }); 12468 } else { 12469 const productIndexes = this.optionConfig.index; 12470 return Object.keys(productIndexes).filter(index => { 12471 for (const attrId of selectedIds) { 12472 if (productIndexes[index][attrId] !== `${selectedOptions[attrId]}`) return false 12473 } 12474 return true 12475 }); 12476 } 12477 }, 12478 findAttributeByOptionId(optionId) { 12479 for (const attributeId in this.optionConfig.attributes) { 12480 const attributeOptions = this.optionConfig.attributes[attributeId].options || []; 12481 if (attributeOptions.find(option => option.id === optionId)) { 12482 return attributeId; 12483 } 12484 } 12485 }, 12486 getAllowedAttributeOptions(attributeId) { 12487 return this.allowedAttributeOptions[attributeId] || [] 12488 }, 12489 getAllAttributeOptions(attributeId) { 12490 return ( 12491 this.optionConfig.attributes[attributeId] && 12492 this.optionConfig.attributes[attributeId].options 12493 ) || [] 12494 }, 12495 getProductIdsForOption(option) { 12496 const attributeId = this.findAttributeByOptionId(option.id); 12497 const allOptions = this.optionConfig.attributes[attributeId]; 12498 const opt = (allOptions && allOptions.options || []).find(o => o.id === option.id); 12499 return opt && opt.products 12500 ? opt.products 12501 : []; 12502 }, 12503 findProductIdsForPartialSelection(optionSelection) { 12504 const candidateProducts = Object.values(optionSelection).reduce((candidates, optionId) => { 12505 const newCandidates = this.getProductIdsForOption({id: optionId}); 12506 return candidates === null 12507 ? newCandidates 12508 : candidates.filter(productId => newCandidates.includes(productId)); 12509 }, null); 12510 return candidateProducts || []; 12511 },
12512 findCheapestProductForPartialSelection(optionSelection) { 12513 const candidateProducts = this.findProductIdsForPartialSelection(optionSelection); 12514 return candidateProducts.reduce((cheapest, simpleIdx) => { 12515 // in the first iteration we start with simpleIdx as the currently cheapest product 12516 if (! this.optionConfig.optionPrices[cheapest]) return simpleIdx; 12517 const knownCheapestPrice = this.optionConfig.optionPrices[cheapest].finalPrice.amount; 12518 return knownCheapestPrice > this.optionConfig.optionPrices[simpleIdx].finalPrice.amount 12519 ? simpleIdx 12520 : cheapest; 12521 }, 0) 12522 }, 12523 findProductIdToUseForOptionPrice(option) { 12524 // try to find a product for a complete selection 12525 const attributeId = this.findAttributeByOptionId(option.id); 12526 const optionSelection = Object.assign({}, this.selectedValues, {[attributeId]: option.id}); 12527 const matchingSimpleIndex = this.calculateSimpleIndexForFullSelection(optionSelection); 12528 // if there is no complete selection, use the cheapest product for the option 12529 return matchingSimpleIndex || this.findCheapestProductForPartialSelection(optionSelection); 12530 }, 12531 getAttributeOptionLabel(option) { 12532 const optionProduct = this.findProductIdToUseForOptionPrice(option); 12533 12534 if ((! optionProduct) || (optionProduct === this.productIndexForPrice)) { 12535 return option.label; 12536 } 12537 12538 const currentPrice = this.getOptionPriceAdjustmentBasePrice(); 12539 12540 if (this.optionConfig.optionPrices[optionProduct]) { 12541 const optionPrice = this.optionConfig.optionPrices[optionProduct].finalPrice.amount; 12542 if (optionPrice !== currentPrice){ 12543 return option.label + ' ' + hyva.formatPrice(optionPrice - currentPrice, true); 12544 } 12545 } 12546 return option.label; 12547 }, 12548 getOptionPriceAdjustmentBasePrice() { 12549 if (this.optionConfig.optionPrices[this.productIndexForPrice]) { 12550 return this.optionConfig.optionPrices[this.productIndexForPrice].finalPrice.amount 12551 } 12552 return this.optionConfig.prices.finalPrice.amount; // default price if no option selection 12553 }, 12554 clearOptionIfActive(optionId, value) { 12555 if (this.selectedValues[optionId] === value) { 12556 this.blurLabel() 12557 this.changeOption(optionId, '') 12558 } 12559 }, 12560 removeAttrFromSelection(selectedValues, attributeId) { 12561 attributeId = parseInt(attributeId); 12562 return selectedValues.reduce((newSelection, val, attr) => { 12563 if (attr !== attributeId) { 12564 newSelection[attr] = val; 12565 } 12566 return newSelection; 12567 }, []); 12568 }, 12569 changeOption(attributeId, value) { 12570 if (value === '') { 12571 this.selectedValues = this.removeAttrFromSelection(this.selectedValues, attributeId) 12572 } else if (value && this.getAllowedAttributeOptions(attributeId).find(option => option.id === value)) { 12573 this.selectedValues[attributeId] = value; 12574 } 12575 this.findSimpleIndex(); 12576 this.findAllowedAttributeOptions(); 12577 this.updatePrices(); 12578 this.updateGallery(); 12579 12580 const candidates = this.findProductIdsForPartialSelection(this.selectedValues); 12581 12582 window.dispatchEvent( 12583 new CustomEvent( 12584 'configurable-selection-changed', 12585 { 12586 detail: { 12587 productId: this.productId, 12588 optionId: attributeId, 12589 value: value, 12590 productIndex: this.productIndex, 12591 selectedValues: this.selectedValues, 12592 candidates: candidates, 12593 skuCandidates: Object.values(candidates).map(id =>
12593 this.optionConfig.sku?.[id] ?? null).filter(Boolean), 12594 } 12595 } 12596 ) 12597 ); 12598 }, 12599 calculateIsMinimalPrice() { 12600 return ! this.isFullSelection(this.selectedValues); 12601 }, 12602 isFullSelection(selectedValues) { 12603 return Object.values(selectedValues).length === Object.keys(this.optionConfig.attributes).length; 12604 }, 12605 updatePrices() { 12606 const value = this.optionConfig.optionPrices[this.productIndexForPrice] || this.optionConfig.prices; 12607 window.dispatchEvent( 12608 new CustomEvent( 12609 "update-prices-" + this.productId, 12610 { 12611 detail: Object.assign( 12612 value, 12613 { isMinimalPrice: this.calculateIsMinimalPrice() } 12614 ) 12615 } 12616 ) 12617 ); 12618 }, 12619 updateGallery () { 12620 if (this.productIndex) { 12621 const images = this.optionConfig.images[this.productIndex]; 12622 images && window.dispatchEvent(new CustomEvent( 12623 "update-gallery", 12624 { detail: this.sortImagesByPosition(images) } 12625 )); 12626 } else { 12627 window.dispatchEvent(new Event("reset-gallery")); 12628 } 12629 }, 12630 sortImagesByPosition(images) { 12631 return images.sort((x, y) => { 12632 return x.position === y.position ? 0 : (parseInt(x.position) > parseInt(y.position) ? 1 : -1) 12633 }); 12634 }, 12635 onGetCartData(data) { 12636 }, 12637 preselectCartItems(data) { 12638 // pre-select options based on cart data for current (quote) itemId 12639 const cart = data && data.cart; 12640 if (cart && cart.items) { 12641 const cartItem = cart.items.find((item) => { 12642 return ( 12643 item.item_id === this.itemId 12644 && item.product_id === this.productId 12645 ) 12646 }); 12647 if (cartItem && cartItem.options && cartItem.options.length) { 12648 cartItem.options.map(option => { 12649 this.changeOption(option.option_id, option.option_value); 12650 }) 12651 } 12652 } 12653 }, 12654 preselectQuerystringItems() { 12655 // pre-select option like ?size=167 12656 const urlQueryParams = new URLSearchParams(window.location.search.replace('?','')); 12657 this.preselectItemsBasedOnLocation(attribute => urlQueryParams.get(attribute.code)); 12658 }, 12659 preselectLocationHashItems() { 12660 // pre-select option like #144=167 12661 const urlHashParams = new URLSearchParams(window.location.hash.replace('#','')); 12662 this.preselectItemsBasedOnLocation(attribute => urlHashParams.get(attribute.id)); 12663 }, 12664 preselectItemsBasedOnLocation(getLocationValue) { 12665 Object.values(this.optionConfig.attributes).map(attribute => { 12666 const v = getLocationValue(attribute); 12667 v && this.changeOption(attribute.id, v) 12668 }); 12669 } 12670 } 12671 } 12672</script>
vendor: 1 bytes, line 12672
12672
12673<script> 12674 function initSwatchOptions(swatchConfig) { 12675 return { 12676 swatchConfig, 12677 getAttributeSwatchData(attributeId) { 12678 const swatchConfig = Object.assign({}, this.swatchConfig[attributeId]); 12679 swatchConfig['details'] = JSON.parse(swatchConfig['additional_data']); 12680 12681 return swatchConfig; 12682 }, 12683 mapSwatchTypeNumberToTypeCode(typeNumber) { 12684 switch ("" + typeNumber) { 12685 case "1": 12686 return "color" 12687 case "2": 12688 return "image" 12689 case "3": 12690 return "empty" 12691 case "0": 12692 default: 12693 return "text" 12694 } 12695 }, 12696 getTypeOfFirstOption(attributeId) { 12697 for (const optionId in this.swatchConfig[attributeId]) { 12698 const option = this.swatchConfig[attributeId][optionId]; 12699 if (typeof option.type !== 'undefined') { 12700 return this.mapSwatchTypeNumberToTypeCode(option.type); 12701 } 12702 } 12703 }, 12704 getVisualSwatchType(attributeId, targetOptionId) { 12705 // If a type configuration is present for the given option id, use it 12706 const config = this.swatchConfig[attributeId]; 12707 if (config[targetOptionId] && typeof config[targetOptionId].type !== 'undefined') { 12708 return this.mapSwatchTypeNumberToTypeCode(config[targetOptionId].type); 12709 } 12710 12711 // Otherwise - if no config is present for the target option - use the type of the first option 12712 // with a type property from the attribute, thus assuming its the same type as the target option. 12713 // (This edge case condition can occur on single swatch products if some options are not salable) 12714 return this.getTypeOfFirstOption(attributeId); 12715 }, 12716 getSwatchType(attributeId, optionId) { 12717 // Deserialize the attribute details the first time they are used 12718 if (this.swatchConfig[attributeId] && ! this.swatchConfig[attributeId].details) { 12719 this.swatchConfig[attributeId] = this.getAttributeSwatchData(attributeId); 12720 } 12721 const type = this.swatchConfig[attributeId] && 12722 this.swatchConfig[attributeId].details && 12723 this.swatchConfig[attributeId].details.swatch_input_type || 12724 "empty"; 12725 return type === 'visual' ? this.getVisualSwatchType(attributeId, optionId) : type; 12726 }, 12727 isTextSwatch(attributeId, optionId) { 12728 return this.getSwatchType(attributeId, optionId) === 'text'; 12729 }, 12730 isVisualSwatch(attributeId, optionId) { 12731 const type = this.getSwatchType(attributeId, optionId); 12732 12733 return ['image', 'color'].includes(type); 12734 }, 12735 getSwatchBackgroundStyle(attributeId, optionId) { 12736 const config = this.getSwatchConfig(attributeId, optionId); 12737 const type = this.getSwatchType(attributeId, optionId); 12738 12739 if (type === "color") { 12740 return 'background-color:' + config.value; 12741 } else if (type === "image") { 12742 return "background: #fff url('" + config.value + "') no-repeat center"; 12743 } else { 12744 return ''; 12745 } 12746 }, 12747 getSwatchText(attributeId, optionId) { 12748 const config = this.getSwatchConfig(attributeId, optionId); 12749 return config.label || config.value || this.getOptionLabelFromOptionConfig(attributeId, optionId); 12750 }, 12751 getOptionLabelFromOptionConfig(attributeId, optionId) { 12752 // Fallback if no value is present in swatchConfig data 12753 // Reference issue https://gitlab.hyva.io/hyva-themes/magento2-default-theme/-/issues/190 12754 const option = this.getAllAttributeOptions(attributeId).filter(option => option.id === optionId); 12755 return option && option[0] && option[0].label ||''; 12756 }, 12757 getSwatchConfig(attributeId, optionId) { 12758 return this.swatchConfig[attributeId] && this.swatchConfig[attributeId][optionId] 12759 ? this.swatchConfig[attributeId][optionId] 12760 : false;
12761 }, 12762 activeTooltipItem: false, 12763 tooltipPositionElement: false, 12764 isTooltipVisible() { 12765 return this.activeTooltipItem && 12766 this.getSwatchConfig( 12767 this.activeTooltipItem.attribute, 12768 this.activeTooltipItem.item 12769 ); 12770 }, 12771 isFirstItemCol() { 12772 return this.activeTooltipItem.index === 0; 12773 }, 12774 getTooltipImageStyle(attributeId, optionId) { 12775 const config = this.getSwatchConfig(attributeId, optionId); 12776 const type = this.getSwatchType(attributeId, optionId); 12777 12778 if (type === "color") { 12779 return 'background-color:' + config.value + '; width: 110px; height: 90px;'; 12780 } else if (type === "image") { 12781 return "background: #ffffff url('" + config.thumb + 12782 "') center center no-repeat; width: 110px; height: 90px;"; 12783 } else { 12784 return 'display:none'; 12785 } 12786 }, 12787 getTooltipPosition() { 12788 return this.tooltipPositionElement ? 12789 `top: ${this.tooltipPositionElement.offsetTop}px;` + 12790 `left: ${ 12791 this.tooltipPositionElement.offsetLeft - ( 12792 this.tooltipPositionElement.closest('.snap') && 12793 this.tooltipPositionElement.closest('.snap').scrollLeft || 12794 0 12795 ) 12796 }px;` : '' 12797 }, 12798 getTooltipLabel() { 12799 return this.getSwatchConfig(this.activeTooltipItem.attribute, this.activeTooltipItem.item).label 12800 }, 12801 focusedLabel: false, 12802 focusLabel(optionId) { 12803 this.focusedLabel = optionId; 12804 }, 12805 blurLabel() { 12806 this.focusedLabel = false; 12807 }, 12808 showSwatches: false, 12809 initShowSwatchesIntersect() { 12810 if ('IntersectionObserver' in window && !window.scrollY) { 12811 let io = new IntersectionObserver( 12812 entries => { 12813 entries.map(entry => { 12814 if (entry.isIntersecting) { 12815 this.showSwatches = true; 12816 io.unobserve(this.$root); 12817 } 12818 }) 12819 } 12820 ); 12821 io.observe(this.$root); 12822 } else { 12823 this.showSwatches = true 12824 } 12825 } 12826 } 12827 } 12828</script>
vendor: 1 bytes, line 12828
12828
12829<script> 12830 'use strict'; 12831 12832 const grecaptchaV2LoadCallbacks = []; 12833 12834 function executeRecaptchaLoadCallbacks () { 12835 while (window.grecaptcha && grecaptchaV2LoadCallbacks.length > 0) { 12836 const callback = grecaptchaV2LoadCallbacks.pop(); 12837 typeof callback === 'string' ? window[callback]() : callback(); 12838 } 12839 } 12840 12841 (function() { 12842 const loadRecaptchaScript = (event) => { 12843 12844 if (window.grecaptcha || !event.target.form) { 12845 return; 12846 } 12847 12848 const url = 'https://www.google.com/recaptcha/api.js?onload=executeRecaptchaLoadCallbacks'; 12849 const siteKey = '6LfIe4EpAAAAALE75oNaaOgTw2G3VadtzHYrJItg'; 12850 const script = document.createElement('script'); 12851 script.type = 'text/javascript'; 12852 script.src = siteKey ? `${url}&render=${siteKey}` : `${url}&render=explicit`; 12853 script.async = true; 12854 document.head.appendChild(script); 12855 12856 script.addEventListener('load', () => { 12857 Array.from(document.querySelectorAll('button[data-recaptcha-btn]:disabled')).forEach(btn => btn.removeAttribute('disabled')); 12858 }); 12859 } 12860 12861 window.forceLoadRecaptchaScript = (form) => { 12862 loadRecaptchaScript({target: {form: form || 'dummy'}}); 12863 executeRecaptchaLoadCallbacks(); 12864 }; 12865 12866 document.body.addEventListener('input', loadRecaptchaScript, { once: true }); 12867 document.body.addEventListener('focus', loadRecaptchaScript, { once: true }); 12868 12869 }()); 12870 12871</script>
vendor: 1 bytes, line 12871
12871
12872<script> 12873(function() { 12874 'use strict'; 12875 12876 window.dataLayer = window.dataLayer || []; 12877 window.uetq = window.uetq || []; 12878 const dataLayerRef = window.dataLayer; 12879 12880 if (!dataLayerRef) { 12881 return; 12882 } 12883 12884 const nativeDataLayerPush = dataLayerRef.push.bind(dataLayerRef); 12885 12886 dataLayerRef.push = function() { 12887 const guardFailureReason = window.dataLayer !== dataLayerRef ? 'dataLayerReplaced' : (!Array.isArray(dataLayerRef) ? 'notArray' : (typeof nativeDataLayerPush !== 'function' ? 'noOrigPush' : null)); 12888 if (guardFailureReason) { 12889 return 0; 12890 } 12891 const filteredDataLayerArgs = []; 12892 for (const dataLayerArg of Array.from(arguments)) { 12893 const isValueOnlyPayload = dataLayerArg && typeof dataLayerArg === 'object' && !Array.isArray(dataLayerArg) && Object.keys(dataLayerArg).length === 1 && Object.hasOwn(dataLayerArg, 'value'); 12894 if (isValueOnlyPayload) { 12895 continue; 12896 } 12897 filteredDataLayerArgs.push(dataLayerArg); 12898 } 12899 if (filteredDataLayerArgs.length === 0) { 12900 return 0; 12901 } 12902 for (const dataLayerEntry of filteredDataLayerArgs) { 12903 if (dataLayerEntry && typeof dataLayerEntry === 'object' && !Array.isArray(dataLayerEntry)) { 12904 if (dataLayerEntry.ecommerce && typeof dataLayerEntry.ecommerce === 'object' && !Array.isArray(dataLayerEntry.ecommerce)) { 12905 if (typeof dataLayerEntry.ecommerce.items === 'undefined') { 12906 dataLayerEntry.ecommerce.items = []; 12907 } 12908 } 12909 } 12910 } 12911 return nativeDataLayerPush.apply(dataLayerRef, filteredDataLayerArgs); 12912 }; 12913 dataLayerRef.push({ 12914 'gtm.start': new Date().getTime(), 12915 event: 'gtm.js' 12916 }); 12917 12918 const firstScript = document.getElementsByTagName('script')[0]; 12919 const gtmScript = document.createElement('script'); 12920 gtmScript.async = true; 12921 gtmScript.src = 'https://www.googletagmanager.com/gtm.js?id=GTM\u002DP5R4DP'; 12922 firstScript.parentNode.insertBefore(gtmScript, firstScript); 12923})(); 12924</script>
12924 12925<noscript> 12926 <iframe src="https://www.googletagmanager.com/ns.html?id=GTM-P5R4DP" 12927 height="0" 12928 width="0" 12929 style="display:none;visibility:hidden" 12930 title=""></iframe> 12931</noscript>
12932<script> 12933(function() { 12934 'use strict'; 12935 12936 window.SteiffTracking = window.SteiffTracking || {}; 12937 12938 /** Must match the service name in Usercentrics dashboard (e.g. "Google Tag Manager") */ 12939 const GTM_CONSENT_SERVICE_NAME = 'Google Tag Manager'; 12940 const UC_SDK_EVENT = 'UC_SDK_EVENT'; 12941 const UC_CHECK_MS = 100; 12942 const UC_MAX_ATTEMPTS = 100; 12943 const consentQueue = []; 12944 let consentFlushPollId = null; 12945 12946 const getDataLayer = () => { 12947 if (typeof window.dataLayer === 'undefined') { 12948 window.dataLayer = []; 12949 } 12950 if (!Array.isArray(window.dataLayer)) { 12951 window.dataLayer = []; 12952 } 12953 return window.dataLayer; 12954 }; 12955 12956 const isGtagConsentUpdate = (entry) => 12957 entry 12958 && typeof entry === 'object' 12959 && entry[0] === 'consent' 12960 && entry[1] === 'update'; 12961 12962 const isExplicitConsentStatus = (entry) => 12963 entry 12964 && entry.event === 'consent_status' 12965 && String(entry.type).toLowerCase() === 'explicit'; 12966 12967 const isConsentGrantedValue = (value) => 12968 value === true || value === 'granted' || value === 'GRANTED'; 12969 12970 const getLatestGtagConsentUpdate = () => { 12971 const dataLayer = getDataLayer(); 12972 for (let i = dataLayer.length - 1; i >= 0; i -= 1) { 12973 if (isGtagConsentUpdate(dataLayer[i])) { 12974 return dataLayer[i]; 12975 } 12976 } 12977 return null; 12978 }; 12979 12980 const getLatestExplicitConsentStatus = () => { 12981 const dataLayer = getDataLayer(); 12982 for (let i = dataLayer.length - 1; i >= 0; i -= 1) { 12983 if (isExplicitConsentStatus(dataLayer[i])) { 12984 return dataLayer[i]; 12985 } 12986 } 12987 return null; 12988 }; 12989 12990 const gtagUpdateOccurred = () => getLatestGtagConsentUpdate() !== null; 12991 12992 const explicitConsentInDataLayer = () => getLatestExplicitConsentStatus() !== null; 12993 12994 /** 12995 * UC fires consent_status/type explicit and gtag consent update even on deny. 12996 * Require analytics consent to be granted before pushing tracking events. 12997 */ 12998 const hasAnalyticsTrackingConsent = () => { 12999 const consentSettings = getLatestGtagConsentUpdate()?.[2]; 13000 if (consentSettings && isConsentGrantedValue(consentSettings.analytics_storage)) { 13001 return true; 13002 } 13003 13004 const consentStatus = getLatestExplicitConsentStatus(); 13005 if (consentStatus && isConsentGrantedValue(consentStatus['Google Analytics'])) { 13006 return true; 13007 } 13008 13009 if (window.UC_UI) { 13010 try { 13011 const services = window.UC_UI.getServicesBaseInfo(); 13012 const analyticsService = services?.find((s) => s.name === 'Google Analytics'); 13013 if (analyticsService?.consent?.status !== undefined 13014 && isConsentGrantedValue(analyticsService.consent.status)) { 13015 return true; 13016 } 13017 } catch (err) { 13018 console.warn('[Steiff GTM] hasAnalyticsTrackingConsent failed', err); 13019 } 13020 } 13021 13022 return false; 13023 }; 13024 13025 const isConsentReady = () => 13026 explicitConsentInDataLayer() 13027 && gtagUpdateOccurred() 13028 && hasAnalyticsTrackingConsent(); 13029 13030 const flushConsentQueue = () => { 13031 if (!isConsentReady()) { 13032 return; 13033 } 13034 while (consentQueue.length > 0) { 13035 const callback = consentQueue.shift(); 13036 try { 13037 callback(); 13038 } catch (err) { 13039 console.warn('[Steiff GTM] consent queue callback failed', err); 13040 } 13041 } 13042 if (consentQueue.length === 0 && consentFlushPollId !== null) { 13043 window.clearInterval(consentFlushPollId); 13044 consentFlushPollId = null; 13045 } 13046 }; 13047 13048 const scheduleConsentFlushPoll = () => { 13049 if (consentFlushPollId !== null || consentQueue.length === 0) { 13050 return; 13051 } 13052 let attempts = 0; 13053 consentFlushPollId = window.setInterval(() => { 13054 attempts += 1; 13055 flushConsentQueue(); 13056 if (consentQueue.length === 0 || attempts >= UC_MAX_ATTEMPTS) { 13057 window.clearInterval(consentFlushPollId); 13058 consentFlushPollId = null; 13059 } 13060 }, UC_CHECK_MS); 13061 }; 13062 13063 const installDataLayerConsentFlushHook = () => { 13064 const dataLayer = getDataLayer(); 13065 if (dataLayer.__steiffConsentFlushHook) { 13066 return; 13067 } 13068 const nativePush = dataLayer.push.bind(dataLayer); 13069 dataLayer.push = function(...args) { 13070 const result = nativePush.apply(this, args); 13071 flushConsentQueue(); 13072 return result; 13073 }; 13074 dataLayer.__steiffConsentFlushHook = true; 13075 }; 13076 13077 installDataLayerConsentFlushHook(); 13078 13079 /** 13080 * Run callback once UC explicit consent, gtag update and analytics grant are ready. 13081 * @param {Function} callback 13082 */ 13083 window.SteiffTracking.runWhenConsented = (callback) => { 13084 if (typeof callback !== 'function') { 13085 return; 13086 } 13087 if (isConsentReady()) { 13088 callback(); 13089 return; 13090 } 13091 consentQueue.push(callback); 13092 scheduleConsentFlushPoll(); 13093 }; 13094 13095 /** 13096 * Push tracking payload after consent is ready (alias for gated trackEvent). 13097 * @param {Object} data 13098 */ 13099 window.SteiffTracking.pushWhenReady = (data) => { 13100 window.SteiffTracking.runWhenConsented(() => { 13101 window.SteiffTracking.rawPushEvent(data); 13102 }); 13103 }; 13104 13105 /** 13106 * Inject GTM preconnect into head only when user has consented to GTM service. 13107 * Called on initial load and when consent changes (UC_UI_VIEW_CHANGED). 13108 */ 13109 window.SteiffTracking.injectGtmPreconnectIfConsented = function() { 13110 if (!window.UC_UI || !document.head) return; 13111 13112 try { 13113 const services = window.UC_UI.getServicesBaseInfo(); 13114 if (!services || !services.length) return; 13115 13116 const gtmService = services.find( 13117 (s) => s.name && s.name.trim() === GTM_CONSENT_SERVICE_NAME 13118 ); 13119 if (!gtmService || !gtmService.consent) return; 13120 13121 const status = gtmService.consent.status; 13122 const hasConsent = status === true || status === 'granted'; 13123 13124 if (!hasConsent) return; 13125 13126 const href = 'https://www.googletagmanager.com';
13127 if (document.querySelector('link[rel="preconnect"][href="' + href + '"]')) { 13128 return; 13129 } 13130 13131 const link = document.createElement('link'); 13132 link.rel = 'preconnect'; 13133 link.href = href; 13134 document.head.appendChild(link); 13135 } catch (err) { 13136 console.warn('[Steiff GTM] injectGtmPreconnectIfConsented failed:', err); 13137 } 13138 }; 13139 13140 /** 13141 * Reset GTM dataLayer and push setOldUrl event 13142 * @param {string} [customReferrer] - Override referrer URL 13143 */ 13144 window.SteiffTracking.resetDataLayer = function(customReferrer) { 13145 const referrer = customReferrer || document.referrer || window.location.href; 13146 13147 if (window.google_tag_manager) { 13148 for (const gtmId of Object.keys(window.google_tag_manager)) { 13149 const gtm = window.google_tag_manager[gtmId]; 13150 if (gtm?.dataLayer) { 13151 try { 13152 gtm.dataLayer.reset(); 13153 break; 13154 } catch (err) { 13155 console.warn('GTM dataLayer reset failed:', err); 13156 } 13157 } 13158 } 13159 } 13160 13161 window.dataLayer = window.dataLayer || []; 13162 window.dataLayer.push({ 13163 event: 'setOldUrl', 13164 oldUrl: referrer 13165 }); 13166 13167 if (!window.TRACKING_READY) { 13168 window.TRACKING_READY = true; 13169 } 13170 }; 13171 13172 /** 13173 * Listen for Usercentrics consent layer close (view === NONE). 13174 * Runs in module template so it is active regardless of theme (e.g. Hyva). 13175 */ 13176 window.addEventListener('UC_UI_VIEW_CHANGED', (event) => { 13177 if (event.detail && event.detail.view === 'NONE') { 13178 getDataLayer().push({ event: 'trackAfterConsentChange' }); 13179 window.SteiffTracking.injectGtmPreconnectIfConsented(); 13180 flushConsentQueue(); 13181 } 13182 }, true); 13183 13184 window.addEventListener(UC_SDK_EVENT, () => { 13185 flushConsentQueue(); 13186 scheduleConsentFlushPoll(); 13187 }); 13188 13189 /** 13190 * Wait for Usercentrics UI to be loaded 13191 * @returns {Promise<object|null>} 13192 */ 13193 window.SteiffTracking.waitForUsercentricsLoaded = function() { 13194 const { promise, resolve } = Promise.withResolvers(); 13195 let attempts = 0; 13196 const checkInterval = setInterval(() => { 13197 attempts++; 13198 if (window.UC_UI) { 13199 clearInterval(checkInterval); 13200 resolve(window.UC_UI); 13201 } else if (attempts >= UC_MAX_ATTEMPTS) { 13202 clearInterval(checkInterval); 13203 resolve(null); 13204 } 13205 }, UC_CHECK_MS); 13206 return promise; 13207 }; 13208 13209 /** 13210 * Push event to dataLayer without consent gate (internal use). 13211 * @param {Object} data - Event data object 13212 */ 13213 window.SteiffTracking.rawPushEvent = (data) => { 13214 if (!data || typeof window === 'undefined') { 13215 return; 13216 } 13217 try { 13218 getDataLayer().push(data); 13219 } catch (e) { 13220 console.warn('[Steiff GTM] rawPushEvent failed', e); 13221 } 13222 }; 13223 13224 /** 13225 * Push event to dataLayer after UC explicit consent and gtag update are ready. 13226 * @param {Object} data - Event data object 13227 */ 13228 window.SteiffTracking.trackEvent = (data) => { 13229 if (!data) { 13230 return; 13231 } 13232 window.SteiffTracking.runWhenConsented(() => { 13233 window.SteiffTracking.rawPushEvent(data); 13234 }); 13235 }; 13236 13237 /** 13238 * Format price to 2 decimal places 13239 * @param {number|string} price 13240 * @returns {string} 13241 */ 13242 window.SteiffTracking.roundPrice = function(price) { 13243 if (price === null || price === undefined || price === '') { 13244 return '0.00'; 13245 } 13246 return parseFloat(price).toFixed(2); 13247 }; 13248 13249 window.SteiffTracking.waitForUsercentricsLoaded().then((ucUI) => { 13250 if (ucUI) { 13251 window.SteiffTracking.injectGtmPreconnectIfConsented(); 13252 flushConsentQueue(); 13253 } 13254 }); 13255
13256 window.SteiffTracking.resolveCartItemQuantity = function(cartItem) { 13257 if (!cartItem) { 13258 return null; 13259 } 13260 13261 const itemId = cartItem.item_id ?? cartItem.quote_item_id; 13262 if (itemId !== undefined && itemId !== null && itemId !== '') { 13263 const qtyInput = document.getElementById('cart-' + itemId + '-qty'); 13264 if (qtyInput) { 13265 const fromInput = parseInt(String(qtyInput.value), 10); 13266 if (!Number.isNaN(fromInput) && fromInput > 0) { 13267 return fromInput; 13268 } 13269 } 13270 } 13271 13272 if (cartItem.qty !== undefined && cartItem.qty !== null && cartItem.qty !== '') { 13273 const fromCartItem = parseInt(String(cartItem.qty), 10); 13274 if (!Number.isNaN(fromCartItem) && fromCartItem > 0) { 13275 return fromCartItem; 13276 } 13277 } 13278 13279 if (cartItem.quantity !== undefined && cartItem.quantity !== null && cartItem.quantity !== '') { 13280 const fromProduct = parseInt(String(cartItem.quantity), 10); 13281 if (!Number.isNaN(fromProduct) && fromProduct > 0) { 13282 return fromProduct; 13283 } 13284 } 13285 13286 return null; 13287 }; 13288 13289 window.SteiffTracking.mapToGtm4Products = function(items) { 13290 return (items || []).map(function(item) { 13291 return Alpine.raw(item['ga4-data']) 13292 }); 13293 } 13294 13295 window.SteiffTracking.mapToUAProducts = function(items) { 13296 return (items || []).reduce(function(mapped, item) { 13297 if (!item) { 13298 return mapped; 13299 } 13300 13301 const product = item['ua-data'] ? Alpine.raw(item['ua-data']) : item; 13302 if (!product || typeof product !== 'object') { 13303 return mapped; 13304 } 13305 13306 const quantity = window.SteiffTracking.resolveCartItemQuantity(item); 13307 if (quantity !== null) { 13308 mapped.push(Object.assign({}, product, { quantity: quantity })); 13309 return mapped; 13310 } 13311 13312 mapped.push(product); 13313 return mapped; 13314 }, []); 13315 } 13316})(); 13317</script>
vendor: 1 bytes, line 13317
13317
13318<script> 13319(function() { 13320 'use strict'; 13321 13322 if (typeof window.SteiffTracking === 'undefined') return; 13323 const payload = {"event":"initialDL","virtualUrl":"\/","virtualUrlPageTitle":"Onlineshop","canonicalUrl":"https:\/\/www.steiff.com\/en","pageType":"home","pageCategoryMain":"","pageCategoryFull":"","pageLanguage":"en_GB","pageCountry":"FR","loginStatus":""}; 13324 payload.virtualUrl = window.location.pathname + window.location.search; 13325 payload.virtualUrlPageTitle = document.title || payload.virtualUrlPageTitle; 13326 13327 window.SteiffTracking.resetDataLayer(document.referrer || undefined); 13328 window.SteiffTracking.trackEvent(payload); 13329})(); 13330</script>
vendor: 1 bytes, line 13330
13330
13331<script> 13332(function() { 13333 'use strict'; 13334 13335 if (typeof window.SteiffTracking === 'undefined') return; 13336 13337 window.SteiffGTMWishlistProducts = Object.assign(window.SteiffGTMWishlistProducts || {}, []); 13338 const currencyCode = 'EUR'; 13339 window.SteiffGTMCurrencyCode = currencyCode; 13340 13341 function fireWishlistTracking(productId, productDataFromEvent) { 13342 const productIdStr = String(productId); 13343 const productData = productDataFromEvent ?? window.SteiffGTMWishlistProducts[productIdStr] ?? window.SteiffGTMWishlistProducts[productId]; 13344 if (!productData || typeof window.SteiffTracking === 'undefined') return; 13345 13346 const eventLabel = productData.id ?? productData.item_id ?? productIdStr; 13347 if (eventLabel) { 13348 try { 13349 window.SteiffTracking.trackEvent({ 13350 event: 'analytics event', 13351 eventCategory: 'ecommerce', 13352 eventAction: 'add to wishlist', 13353 eventLabel: String(eventLabel) 13354 }); 13355 } catch (err) { 13356 console.warn('[GTM Wishlist] analytics event push failed', err); 13357 } 13358 } 13359 13360 const ga4Item = buildGA4WishlistItem(productData); 13361 const priceVal = productData.price ?? productData.price_range?.minimum_price?.final_price?.value; 13362 const value = Number(parseFloat(priceVal)) || 0; 13363 const ecommercePayload = { 13364 value: value, 13365 currency: String(currencyCode || 'EUR'), 13366 items: [ga4Item] 13367 }; 13368 try { 13369 window.SteiffTracking.trackEvent({ 13370 event: 'add_to_wishlist', 13371 ecommerce: ecommercePayload 13372 }); 13373 } catch (err) { 13374 console.warn('[GTM Wishlist] trackEvent failed', err); 13375 } 13376 } 13377 13378 function buildGA4WishlistItem(productData) { 13379 const priceVal = productData.price ?? productData.price_range?.minimum_price?.final_price?.value; 13380 const numPrice = Number(parseFloat(priceVal)) || 0; 13381 const itemId = (productData.item_id ?? productData.sku ?? productData.id ?? '').toString(); 13382 const itemName = (productData.item_name ?? productData.name ?? '').toString(); 13383 const itemBrand = (productData.brand ?? 'Steiff').toString(); 13384 return { 13385 item_id: itemId || String(productData.id ?? ''), 13386 item_name: itemName || 'Product', 13387 item_brand: itemBrand, 13388 price: numPrice, 13389 quantity: Number(productData.quantity) || 1 13390 }; 13391 } 13392 13393 window.addEventListener('wishlist-product-added', function(event) { 13394 const productId = event.detail?.productId; 13395 const productDataFromEvent = event.detail?.productData; 13396 if (productId) { 13397 fireWishlistTracking(productId, productDataFromEvent); 13398 } 13399 }); 13400})(); 13401</script>
vendor: 1 bytes, line 13401
13401
13402<script> 13403(function() { 13404 'use strict'; 13405 13406 window.SteiffGTMAddToCartProducts = Object.assign(window.SteiffGTMAddToCartProducts || {}, []); 13407 const gtmCurrencyCode = 'EUR'; 13408 13409 /** 13410 * @param {HTMLElement|null|undefined} el – Add-to-cart button (or any element inside the form) 13411 */ 13412 window.steiffTrackAddToCart = function(el) { 13413 if (!el || typeof window.SteiffTracking === 'undefined') { 13414 return; 13415 } 13416 const formId = el.getAttribute && el.getAttribute('form'); 13417 const form = formId 13418 ? document.getElementById(formId) 13419 : el.closest && el.closest('form'); 13420 if (!form || form.tagName !== 'FORM') { 13421 return; 13422 } 13423 if (form.id !== 'product_addtocart_form' && !form.classList.contains('product_addtocart_form')) { 13424 return; 13425 } 13426 13427 const productIdInput = form.querySelector('input[name="product"]'); 13428 // PDP qty uses form="product_addtocart_form" outside the <form> — form.elements includes those controls. 13429 const qtyControl = form.elements?.qty ?? form.querySelector('input[name="qty"]'); 13430 const productId = productIdInput ? productIdInput.value : null; 13431 let addToCartQty = qtyControl ? parseInt(String(qtyControl.value), 10) : 1; 13432 if (!productId) { 13433 return; 13434 } 13435 if (Number.isNaN(addToCartQty)) { 13436 addToCartQty = 1; 13437 } 13438 13439 const gtmProductData = window.SteiffGTMAddToCartProducts[productId] 13440 ?? window.SteiffGTMAddToCartProducts[String(productId)]; 13441 if (!gtmProductData) { 13442 return; 13443 } 13444 window.SteiffTracking.trackEvent({ 13445 event: 'ee.addToCart', 13446 ecommerce: { 13447 currencyCode: gtmCurrencyCode, 13448 add: { 13449 products: [{ ...gtmProductData, quantity: addToCartQty }] 13450 } 13451 } 13452 }); 13453 }; 13454})(); 13455</script>
vendor: 1 bytes, line 13455
13455
13456<script> 13457(function() { 13458 'use strict'; 13459 13460 13461 if (typeof window.SteiffTracking === 'undefined') return; 13462 13463 /** 13464 * Logout tracking (e.g. onclick signout link). 13465 */ 13466 window.steiffTrackLogout = function steiffTrackLogout() { 13467 window.SteiffTracking.trackEvent({ 13468 event: 'analytics event', 13469 eventCategory: 'login', 13470 eventAction: 'logout', 13471 eventLabel: window.location.pathname || '', 13472 transport: 'beacon' 13473 }); 13474 }; 13475 13476 /** 13477 * Login attempt (e.g. before submit / AJAX login). 13478 */ 13479 window.steiffTrackLogin = function steiffTrackLogin() { 13480 window.SteiffTracking.trackEvent({ 13481 event: 'analytics event', 13482 eventCategory: 'login', 13483 eventAction: 'login', 13484 transport: 'beacon' 13485 }); 13486 }; 13487 13488 /** 13489 * Registration (e.g. start of submitForm on create account page). 13490 */ 13491 window.steiffTrackRegistration = function steiffTrackRegistration() { 13492 window.SteiffTracking.trackEvent({ 13493 event: 'analytics event', 13494 eventCategory: 'registration', 13495 eventAction: 'registration', 13496 transport: 'beacon' 13497 }); 13498 }; 13499 13500 /** 13501 * Color choice (onclick / @click on swatch link, aria-label as label). 13502 */ 13503 window.steiffTrackColorChoice = function steiffTrackColorChoice(ariaLabel) { 13504 window.SteiffTracking.trackEvent({ 13505 event: 'analytics event', 13506 eventCategory: 'ecommerce', 13507 eventAction: 'color choice', 13508 eventLabel: ariaLabel || '', 13509 transport: 'beacon' 13510 }); 13511 }; 13512})(); 13513</script>
vendor: 1 bytes, line 13513
13513
13514<script> 13515(function() { 13516 'use strict'; 13517 13518 if (typeof window.SteiffTracking === 'undefined') return; 13519 13520 window.addEventListener('steiff-gtm-remove-from-sidebar-cart', function(event) { 13521 const detail = event.detail || {}; 13522 const items = detail.items; 13523 if (!items || !items.length) return; 13524 const removed = window.SteiffTracking.mapToUAProducts(items); 13525 if (removed.length === 0) return; 13526 13527 window.SteiffTracking.trackEvent({ 13528 event: 'ee.removeFromCart', 13529 ecommerce: { 13530 currencyCode: 'EUR', 13531 remove: { products: removed } 13532 } 13533 }); 13534 }); 13535})(); 13536</script>
vendor: 1 bytes, line 13536
13536
13537<script> 13538 (function () { 13539 const modals = []; 13540 const excludedFromFocusTrapping = new Set(); 13541 13542 function trapFocusInNextModalWithOverlay() { 13543 for (let idx = modals.length -1; idx >= 0; idx--) { 13544 const nextOnStack = modals[idx]; 13545 const nextDialogElement = nextOnStack.instance.$refs[nextOnStack.name]; 13546 if (! isOverlayDisabled(nextDialogElement)) { 13547 hyva.trapFocus(nextDialogElement); 13548 break; 13549 } 13550 } 13551 } 13552 13553 function focusables(dialogElement) { 13554 const selector = 'button, [href], input, textarea, select, details, [tabindex]:not([tabindex="-1"])'; 13555 return Array.from(dialogElement.querySelectorAll(selector)) 13556 .filter(el => !el.hasAttribute('disabled')); 13557 } 13558 13559 function firstVisible(elements) { 13560 const a = Array.from(elements); 13561 for (let i = 0; i < a.length; i++) { 13562 if (a[i].offsetWidth || a[i].offsetHeight || a[i].getClientRects().length) return a[i]; 13563 } 13564 return null; 13565 } 13566 13567 function isInViewport(element) { 13568 const rect = element && element.getBoundingClientRect(); 13569 return rect && 13570 rect.top >= 0 && 13571 rect.left >= 0 && 13572 rect.right <= window.innerWidth && 13573 rect.bottom <= window.innerHeight; 13574 } 13575 13576 function setFocusAfterTransition(dialogElement, duration) { 13577 const nested = Array.from(dialogElement.querySelectorAll('[role="dialog"]')); 13578 const candidates = Array.from(dialogElement.querySelectorAll('[x-focus-first]')); 13579 next: for (let candidate of candidates) { 13580 for (let child of nested) { 13581 if (child.contains(candidate)) continue next; 13582 } 13583 setTimeout(() => candidate.focus(), 50); 13584 break; 13585 } 13586 window.setTimeout(() => { 13587 const focusElement = firstVisible(dialogElement.querySelectorAll('[x-focus-first]')) || 13588 focusables(dialogElement)[0] || 13589 null; 13590 focusElement && isInViewport(focusElement) && focusElement.focus(); 13591 }, Math.max(1, duration)); 13592 } 13593 13594 function determineTrigger($refs, dialog, trigger) { 13595 if (typeof trigger === 'undefined' && typeof dialog === 'object' && dialog.target instanceof HTMLElement) { 13596 return dialog.target; 13597 } 13598 if (typeof dialog === 'string' && typeof trigger === 'object' && trigger.target instanceof HTMLElement) { 13599 return trigger.target; 13600 } 13601 if (typeof trigger === 'string') { 13602 try { 13603 return $refs[trigger] || document.querySelector(trigger) 13604 } catch (e) {} 13605 } 13606 if (trigger instanceof Element) { 13607 return trigger; 13608 } 13609 13610 return null; 13611 } 13612 13613 function isOverlayDisabled(dialog) { 13614 return dialog && dialog.hasAttribute('x-no-overlay') 13615 } 13616 13617 function areRemainingModalsWithoutOverlay(modals) 13618 { 13619 const overflowDisabled = modals.map(modal => modal.instance.$refs[modal.name]).filter(isOverlayDisabled); 13620 13621 return overflowDisabled.length === modals.length; 13622 } 13623 13624 window.hyva.modal = function(options = {}) { 13625 if (this.$el && this.$el.dataset && this.$el.dataset.options) { 13626 try { 13627 options = Object.assign(options, JSON.parse(this.$el.dataset.options || '{}')); 13628 } catch (e) { 13629 throw new Error('Cannot read the dialog options from the data-options attribute: not valid JSON'); 13630 } 13631 } 13632 13633 const config = Object.assign({ 13634 dialog: 'dialog', duration: 300, transitionEnter: 'transition ease-out duration-300', 13635 transitionEnterStart: 'opacity-0', 13636 transitionEnterEnd: 'opacity-100', 13637 transitionLeave: 'transition ease-in duration-300', 13638 transitionLeaveStart: 'opacity-100', 13639 transitionLeaveEnd: 'opacity-0', 13640 }, options); 13641 let lastHide = 0; 13642 13643 return { 13644 opened: {}, 13645 show(dialog, trigger) { 13646 const focusTargetAfterHide = determineTrigger(this.$refs, dialog, trigger); 13647 const name = typeof dialog === 'string' ? dialog : config.dialog; 13648 const dialogElement = this.$refs[name]; 13649 if (! dialogElement) { 13650 return; 13651 } 13652 const useOverlay = ! dialogElement.hasAttribute('x-no-overlay'); 13653 13654 dialogElement.scrollTop = 0; 13655 13656 if (this.opened[name]) { 13657 return; 13658 } 13659 13660 if (focusTargetAfterHide) { 13661 focusTargetAfterHide.setAttribute('aria-expanded', 'true'); 13662 } 13663 13664 this.opened[name] = true; 13665 useOverlay && this.$nextTick(() => hyva.trapFocus(dialogElement)); 13666 setFocusAfterTransition(dialogElement, config.duration); 13667 13668 const frame = {name, instance: this, focusTarget: focu
13668sTargetAfterHide, time: Date.now()}; 13669 13670 modals.push(frame); 13671 if (useOverlay) { 13672 document.body.classList.add('overflow-hidden'); 13673 } 13674 return new Promise(resolve => frame.resolve = resolve); 13675 }, 13676 cancel() { 13677 this.hide(false); 13678 }, 13679 ok() { 13680 this.hide(true); 13681 }, 13682 hide(value) { 13683 if (Date.now() - lastHide < config.duration) { 13684 return; 13685 } 13686 lastHide = Date.now(); 13687 13688 const modal = modals.pop() || {}; 13689 if (! modal.instance) { 13690 return; 13691 } 13692 13693 const name = modal.name; 13694 this.opened[name] = false; 13695 hyva.releaseFocus(modal.instance.$refs[modal.name]) 13696 trapFocusInNextModalWithOverlay(); 13697 13698 const nextFocusAfterHide = modal.focusTarget; 13699 nextFocusAfterHide && setTimeout(() => { 13700 nextFocusAfterHide.setAttribute('aria-expanded', 'false'); 13701 nextFocusAfterHide.focus() 13702 }, config.duration); 13703 13704 if (modals.length === 0 || areRemainingModalsWithoutOverlay(modals)) { 13705 document.body.classList.remove('overflow-hidden'); 13706 } 13707 13708 modal.resolve(value); 13709 }, 13710 overlay(dialog) { 13711 dialog = this.$el.dataset.dialogRefName || dialog; 13712 const name = typeof dialog === 'string' ? dialog : config.dialog; 13713 return { 13714 ['x-show']() { 13715 return this.opened[name] 13716 }, 13717 ['x-transition:enter']: config.transitionEnter, 13718 ['x-transition:enter-start']: config.transitionEnterStart, 13719 ['x-transition:enter-end']: config.transitionEnterEnd, 13720 ['x-transition:leave']: config.transitionLeave, 13721 ['x-transition:leave-start']: config.transitionLeaveStart, 13722 ['x-transition:leave-end']: config.transitionLeaveEnd, 13723 ['@hyva-modal-show.window'](event) { 13724 event.detail && event.detail.dialog === name && this.show(name, event.detail.focusAfterHide) 13725 } 13726 }; 13727 }, 13728 showDialogOnInit() { 13729 const parent = this.$el.closest('[data-dialog-ref-name]'); 13730 if (parent && parent.dataset.dialogRefName) { 13731 this.$dispatch('hyva-modal-show', {dialog: parent.dataset.dialogRefName}) 13732 } 13733 } 13734 }; 13735 } 13736 13737 window.hyva.modal.peek = () => modals.length > 0 && modals[modals.length -1] 13738 13739 window.hyva.modal.pop = function () { 13740 if (modals.length > 0) { 13741 const modal = modals[modals.length -1]; 13742 modal.instance.hide(); 13743 } 13744 } 13745 13746 window.hyva.modal.excludeSelectorsFromFocusTrap = function (selectors) { 13747 typeof selectors === 'string' || selectors instanceof String 13748 ? excludedFromFocusTrapping.add(selectors) 13749 : selectors.map(selector => excludedFromFocusTrapping.add(selector)); 13750 } 13751 13752 window.hyva.modal.eventListeners = { 13753 keydown: event => { 13754 if (event.key === 'Escape') { 13755 window.hyva.modal.pop(); 13756 } 13757 }, 13758 click: event => { 13759 if (modals.length > 0) { 13760 const modal = modals[modals.length -1]; 13761 const dialog = modal.instance.$refs[modal.name]; 13762 if (modal.time + 50 < Date.now() && // if last click processing is more than 50ms ago 13763 ! isOverlayDisabled(dialog) && // if dialog has overlay 13764 ! dialog.contains(event.target)) { // if click is outside of dialog 13765 modal.instance.hide(); 13766 } 13767 } 13768 } 13769 }; 13770 13771 document.addEventListener('keydown', window.hyva.modal.eventListeners.keydown); 13772 13773 document.addEventListener('click', window.hyva.modal.eventListeners.click); 13774 })(); 13775 window.addEventListener('alpine:init', () => { 13776 Alpine.data('hyvaModal', window.hyva.modal); 13777 }, {once: true}); 13778</script>
vendor: 1 bytes, line 13778
13778
13779<script> 13780 function initMessageModal() { 13781 return { 13782 messages: [], 13783 isVisible: false, 13784 timeouts: {}, 13785 pauseData: {}, 13786 hasMessages() { 13787 return this.messages && this.messages.length > 0; 13788 }, 13789 addMessages(newMessages) { 13790 if (!newMessages || newMessages.length === 0) { 13791 return; 13792 } 13793 13794 const instance = this; 13795 const now = Date.now(); 13796 newMessages.forEach((messageObj) => { 13797 // Check if this message already exists to prevent duplicates 13798 const messageText = messageObj.text || messageObj.message || ''; 13799 const existingMessage = instance.messages.find(m => m.text === messageText); 13800 13801 if (existingMessage) { 13802 return; 13803 } 13804 13805 const messageId = 'msg_' + now + '_' + Math.random(); 13806 const messageWithId = { 13807 ...messageObj, 13808 _id: messageId, 13809 show: true, 13810 isPaused: false 13811 }; 13812 13813 instance.messages.push(messageWithId); 13814 13815 instance.pauseData[messageId] = { 13816 startTime: Date.now(), 13817 remaining: 8000 13818 }; 13819 instance.timeouts[messageId] = setTimeout(() => { 13820 instance.removeMessageById(messageId); 13821 }, 8000); 13822 }); 13823 }, 13824 removeMessage(index) { 13825 // Remove by index 13826 if (index >= 0 && index < this.messages.length) { 13827 this.messages = this.messages.filter((_, i) => i !== index); 13828 } 13829 }, 13830 pauseTimeout(messageId) { 13831 if (this.timeouts[messageId] && !this.pauseData[messageId].isPaused) { 13832 const elapsed = Date.now() - this.pauseData[messageId].startTime; 13833 this.pauseData[messageId].remaining = this.pauseData[messageId].remaining - elapsed; 13834 13835 clearTimeout(this.timeouts[messageId]); 13836 delete this.timeouts[messageId]; 13837 this.pauseData[messageId].isPaused = true; 13838 13839 const message = this.messages.find(m => m._id === messageId); 13840 if (message) { 13841 message.isPaused = true; 13842 } 13843 } 13844 }, 13845 resumeTimeout(messageId) { 13846 if (!this.timeouts[messageId] && this.pauseData[messageId] && this.pauseData[messageId].isPaused) { 13847 this.pauseData[messageId].startTime = Date.now(); 13848 this.pauseData[messageId].isPaused = false; 13849 13850 this.timeouts[messageId] = setTimeout(() => { 13851 this.removeMessageById(messageId); 13852 }, this.pauseData[messageId].remaining); 13853 13854 const message = this.messages.find(m => m._id === messageId); 13855 if (message) { 13856 message.isPaused = false; 13857 } 13858 } 13859 }, 13860 togglePause(messageId) { 13861 const pauseData = this.pauseData[messageId]; 13862 if (!pauseData) { 13863 return; 13864 } 13865 13866 if (pauseData.isPaused) { 13867 this.resumeTimeout(messageId); 13868 } else { 13869 this.pauseTimeout(messageId); 13870 } 13871 }, 13872 removeMessageById(messageId) { 13873 if (this.timeouts[messageId]) { 13874 clearTimeout(this.timeouts[messageId]); 13875 delete this.timeouts[messageId]; 13876 } 13877 if (this.pauseData[messageId]) { 13878 delete this.pauseData[messageId]; 13879 } 13880 this.messages = this.messages.filter(m => m && m._id !== messageId); 13881 }, 13882 closeModal() {
13883 Object.keys(this.timeouts).forEach(timeoutId => { 13884 clearTimeout(this.timeouts[timeoutId]); 13885 }); 13886 this.timeouts = {}; 13887 this.pauseData = {}; 13888 this.messages = []; 13889 }, 13890 clearMessages() { 13891 Object.keys(this.timeouts).forEach(timeoutId => { 13892 clearTimeout(this.timeouts[timeoutId]); 13893 }); 13894 this.timeouts = {}; 13895 this.pauseData = {}; 13896 this.messages = []; 13897 }, 13898 getMessageTypeClass(type) { 13899 switch(type) { 13900 case 'error': 13901 return 'error'; 13902 case 'success': 13903 return 'success'; 13904 case 'warning': 13905 return 'warning'; 13906 case 'info': 13907 case 'notice': 13908 return 'info'; 13909 default: 13910 return ''; 13911 } 13912 }, 13913 init() { 13914 const messageModalShowListener = (event) => { 13915 const messages = event.detail.messages || []; 13916 this.addMessages(messages); 13917 }; 13918 13919 const messagesLoadedListener = (event) => { 13920 const messages = event.detail.messages || []; 13921 this.addMessages(messages); 13922 }; 13923 13924 const privateContentLoadedListener = (event) => { 13925 const data = event.detail && event.detail.data; 13926 if ( 13927 data?.messages?.messages?.length 13928 ) { 13929 this.addMessages(data.messages.messages); 13930 } 13931 }; 13932 13933 this._messageModalShowListener = messageModalShowListener; 13934 this._messagesLoadedListener = messagesLoadedListener; 13935 this._privateContentLoadedListener = privateContentLoadedListener; 13936 13937 window.addEventListener('message-modal-show', messageModalShowListener); 13938 window.addEventListener('messages-loaded', messagesLoadedListener); 13939 window.addEventListener('private-content-loaded', privateContentLoadedListener); 13940 13941 this.$el.addEventListener('alpine:destroying', () => { 13942 if (this._messageModalShowListener) { 13943 window.removeEventListener('message-modal-show', this._messageModalShowListener); 13944 } 13945 if (this._messagesLoadedListener) { 13946 window.removeEventListener('messages-loaded', this._messagesLoadedListener); 13947 } 13948 if (this._privateContentLoadedListener) { 13949 window.removeEventListener('private-content-loaded', this._privateContentLoadedListener); 13950 } 13951 Object.keys(this.timeouts).forEach(timeoutId => { 13952 clearTimeout(this.timeouts[timeoutId]); 13953 }); 13954 this.timeouts = {}; 13955 this.pauseData = {}; 13956 }); 13957 } 13958 } 13959 } 13960 13961 window.addEventListener('alpine:init', () => { 13962 if (!Alpine.$data.initMessageModal) { 13963 Alpine.data('initMessageModal', initMessageModal); 13964 } 13965 }, {once: true}); 13966</script>
13966 13967<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" 13968 x-data="initMessageModal()" 13969 x-cloak 13970> 13971 <template x-for="(message, index) in messages" :key="`${message.type}_${index}`"> 13972 <div x-data="{ show: true }" 13973 x-show="show" 13974 x-transition:enter="duration-300 ease-out" 13975 x-transition:enter-start="opacity-0 -translate-y-2" 13976 x-transition:enter-end="opacity-100 translate-y-0" 13977 x-transition:leave="duration-200 ease-in" 13978 x-transition:leave-start="opacity-100 translate-y-0" 13979 x-transition:leave-end="opacity-0 -translate-y-2" 13980 :role="message.type === 'error' ? 'alert' : 'status'" 13981 :aria-live="message.type === 'error' ? 'assertive' : 'polite'" 13982 aria-atomic="true" 13983 tabindex="-1" 13984 class="notification mt-7 text-white pointer-events-auto" 13985 :class="getMessageTypeClass(message.type)" 13986 data-testid="notificationMessage"> 13987 <div class="flex justify-between items-start p-5"> 13988 <div class="text-white" x-html="message.text"></div> 13989 <button type="button" class="bg-transparent hover:bg-transparent border-none cursor-pointer font-normal text-white" 13990 data-testid="notificationAction1" 13991 @click.stop="show = false; $nextTick(() => removeMessageById(message._id))" 13992 @keydown.escape.stop="show = false; $nextTick(() => removeMessageById(message._id))" 13993 aria-label="Dismiss this notification"> 13994 <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"> 13995 <path stroke-linecap="round" stroke-linejoin="round" d="M6 18L18 6M6 6l12 12"/> 13996</svg> 13997 </button> 13998 </div> 13999 14000 <template x-if="pauseData[message._id]"> 14001 <button type="button" 14002 class="py-2.5 px-5 cursor-pointer font-normal action-border notification-action uppercase flex items-center justify-center text-white" 14003 :class="`border-${getMessageTypeClass(message.type)}`" 14004 @click.stop="togglePause(message._id)" 14005 :aria-label="message.isPaused ? 'Resume\u0020timer' : 'Pause\u0020timer'" 14006 :title="message.isPaused ? 'Resume\u0020timer' : 'Pause\u0020timer'"> 14007 <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"> 14008 <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"/> 14009</svg> 14010 <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"> 14011 <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"/> 14012</svg> 14013 </button> 14014 </template> 14015 </div> 14016 </template> 14017</div>
14017<script> 14018 function ForgotPasswordForm() { 14019 return Object.assign( 14020 window.hyva.formValidation.apply(this), 14021 { 14022 errors: 0, 14023 hasCaptchaToken: 0, 14024 dispatchModalClose() { 14025 window.hyva.modal.pop() 14026 }, 14027 dispatchSwitchToLogin() { 14028 this.$dispatch('switch-to-login') 14029 }, 14030 submitForm() { 14031 if (this.errors === 0) { 14032 HTMLFormElement.prototype.submit.call(this.$el); 14033 } 14034 }, 14035 actionSubmitForgotPasswordForm() { 14036 this.hasCaptchaToken = 0; 14037 this.errors = 0; 14038 this.validate() 14039 .then(() => { 14040 // Do not rename $form, the variable is expected to be declared in the recaptcha output 14041 const $form = this.$el; 14042 if (!this.hasCaptchaToken) { 14043 this.errors = 1; 14044 14045 14046 const executeGreCaptcha = () => { 14047 grecaptcha.ready(() => { 14048 grecaptcha.execute( 14049 '6LfIe4EpAAAAALE75oNaaOgTw2G3VadtzHYrJItg', 14050 {action: 'customer_forgot_password'} 14051 ).then((token) => { 14052 const tokenElement = $form['g\u002Drecaptcha\u002Dresponse']; 14053 14054 if (tokenElement && token && token.length > 0) { 14055 $form['g\u002Drecaptcha\u002Dresponse'].value = token; 14056 this.errors = 0; 14057 this.hasCaptchaToken = 1; 14058 if (typeof this.submitForm === 'function') { 14059 this.submitForm(); 14060 } else { 14061 HTMLFormElement.prototype.submit.call($form); 14062 } 14063 } else { 14064 this.errors = 1; 14065 const error = tokenElement 14066 ? 'ReCaptcha\u0020validation\u0020failed,\u0020please\u0020try\u0020again' 14067 : 'ReCaptcha\u0020token\u0020element\u0020is\u0020missing.\u0020Please\u0020refresh\u0020the\u0020page\u0020and\u0020trying\u0020again.'; 14068 if (this.setErrorMessages) { 14069 this.setErrorMessages([error]) 14070 this.displayErrorMessage = true; 14071 } else { 14072 window.dispatchMessages && window.dispatchMessages([{type: "error", text: error}], 5000); 14073 } 14074 } 14075 }).catch(exception => { 14076 console.error(exception || `An unknown error occurred during ReCaptcha validation. Are the tokens and the domain correctly set up in the Google console?`) 14077 }); 14078 }) 14079 } 14080 14081 if (window.grecaptcha) { 14082 executeGreCaptcha(); 14083 } else { 14084 const recaptchaUrl = "https://www.google.com/recaptcha/api.js?render=6LfIe4EpAAAAALE75oNaaOgTw2G3VadtzHYrJItg"; 14085 const script = document.createElement('script'); 14086 script.setAttribute('type', 'text/javascript'); 14087 script.setAttribute('src', recaptchaUrl); 14088 document.head.appendChild(script); 14089 14090 script.addEventListener("load", executeGreCaptcha, false); 14091 } 14092 } 14093 14094 if (this.errors === 0) { 14095 this.submitForm(); 14096 } 14097 }) 14098 .catch((invalid) => { 14099 if (invalid.length > 0) { 14100 invalid[0].focus(); 14101 } 14102 }); 14103 } 14104 } 14105 ) 14106 } 14107 14108 window.addEventListener( 14109 'alpine:init', 14110 () => Alpine.data('ForgotPasswordForm', ForgotPasswordForm), 14111 {once: true} 14112 ) 14113</script>
14113 14114
14115<script> 14116 window.STEIFF_PENDING_WISHLIST_PRODUCT_KEY = 'steiff_pending_wishlist_product_id'; 14117 window.STEIFF_WISHLIST_LOGIN_NOTICE_KEY = 'steiff_wishlist_login_notice'; 14118 14119 window.steiffPersistPendingWishlistProduct = function (productId) { 14120 try { 14121 sessionStorage.setItem(window.STEIFF_PENDING_WISHLIST_PRODUCT_KEY, String(productId)); 14122 } catch (_e) {} 14123 }; 14124 14125 window.steiffClearPendingWishlistProductStorage = function () { 14126 try { 14127 sessionStorage.removeItem(window.STEIFF_PENDING_WISHLIST_PRODUCT_KEY); 14128 } catch (_e) {} 14129 }; 14130 14131 window.steiffNotify = function (type, text, timeout = 5000) { 14132 if (typeof window.dispatchMessages === 'function') { 14133 window.dispatchMessages([{ type, text }], timeout); 14134 } 14135 }; 14136 14137 window.steiffReadMageCache = function () { 14138 try { 14139 return JSON.parse(localStorage.getItem('mage-cache-storage') || '{}'); 14140 } catch (_e) { 14141 return {}; 14142 } 14143 }; 14144 14145 /** 14146 * AJAX POST for wishlist remove/add actions using Magento post params 14147 * (same format as delete_item_params / getItemRemoveParams in remove.phtml). 14148 */ 14149 window.steiffPostWishlistForm = function (postParamsJson, options = {}) { 14150 const obj = typeof postParamsJson === 'string' ? JSON.parse(postParamsJson) : postParamsJson; 14151 const postUrl = obj.action; 14152 const warningMessage = options.warningMessage 14153 ?? 'Could\u0020not\u0020remove\u0020item\u0020from\u0020your\u0020Wish\u0020List.'; 14154 14155 // Always use current-page uenc; Magento getRemoveParams() ships an empty uenc 14156 // that would otherwise overwrite hyva.getUenc() (PHP keeps the last duplicate). 14157 let body = `form_key=${encodeURIComponent(hyva.getFormKey())}&uenc=${encodeURIComponent(hyva.getUenc())}`; 14158 Object.entries(obj.data || {}).forEach(([key, value]) => { 14159 if (key === 'uenc') { 14160 return; 14161 } 14162 body += `&${encodeURIComponent(key)}=${encodeURIComponent(String(value))}`; 14163 }); 14164 14165 return fetch(postUrl, { 14166 headers: { 'content-type': 'application/x-www-form-urlencoded; charset=UTF-8' }, 14167 body, 14168 method: 'POST', 14169 mode: 'cors', 14170 credentials: 'include' 14171 }).then((response) => { 14172 if (response.redirected) { 14173 if (response.url.includes('customer/account/login')) { 14174 window.location.href = response.url; 14175 return null; 14176 } 14177 // wishlist/index/remove redirects to referer (PDP) – treat as success 14178 return { success: true }; 14179 } 14180 if (response.ok) { 14181 return response.json(); 14182 } 14183 window.steiffNotify('warning', warningMessage); 14184 return null; 14185 }).catch((error) => { 14186 window.steiffNotify('error', error?.message ?? String(error)); 14187 return null; 14188 }); 14189 }; 14190 14191 window.steiffAddWishlistProduct = function (productId) { 14192 const body = [ 14193 `form_key=${encodeURIComponent(hyva.getFormKey())}`, 14194 `product=${encodeURIComponent(productId)}`, 14195 `uenc=${encodeURIComponent(hyva.getUenc())}` 14196 ].join('&'); 14197 14198 return fetch(`${BASE_URL}wishlist/index/add/`, { 14199 headers: { 'content-type': 'application/x-www-form-urlencoded; charset=UTF-8' }, 14200 body, 14201 method: 'POST', 14202 mode: 'cors', 14203 credentials: 'include' 14204 }); 14205 }; 14206</script>
vendor: 1 bytes, line 14206
14206
14207<script> 14208 window.steiffWishlistMixin = function () { 14209 const AWAITING_SECTION_TIMEOUT_MS = 8000; 14210 const AWAITING_MODE_HAS_REMOVE_PARAMS = 'has-remove-params'; 14211 const AWAITING_MODE_ITEM_GONE = 'item-gone'; 14212 14213 return { 14214 isLoggedIn: false, 14215 privateContentLoaded: false, 14216 pendingProductId: null, 14217 wishlistProductItems: null, 14218 wishlistPending: false, 14219 awaitingSectionProductId: null, 14220 awaitingSectionSelection: null, 14221 awaitingSectionMode: null, 14222 awaitingSectionTimeoutId: null, 14223 14224 clearAwaitingSectionTimeout() { 14225 if (this.awaitingSectionTimeoutId === null) { 14226 return; 14227 } 14228 clearTimeout(this.awaitingSectionTimeoutId); 14229 this.awaitingSectionTimeoutId = null; 14230 }, 14231 14232 releaseAwaitingSectionConfirm() { 14233 this.clearAwaitingSectionTimeout(); 14234 this.awaitingSectionProductId = null; 14235 this.awaitingSectionSelection = null; 14236 this.awaitingSectionMode = null; 14237 this.wishlistPending = false; 14238 this.restoreWishlistButtonFocus(); 14239 }, 14240 14241 hasConfirmedRemoveParams(productId, selection = null) { 14242 if (selection) { 14243 return this.getWishlistRemoveParamsForSelection(productId, selection).length > 0; 14244 } 14245 return this.getWishlistRemoveParams(productId).length > 0; 14246 }, 14247 14248 isSectionConfirmSatisfied() { 14249 const id = this.awaitingSectionProductId; 14250 const selection = this.awaitingSectionSelection; 14251 if (!id || !this.awaitingSectionMode) { 14252 return false; 14253 } 14254 if (this.awaitingSectionMode === AWAITING_MODE_HAS_REMOVE_PARAMS) { 14255 return this.hasConfirmedRemoveParams(id, selection); 14256 } 14257 if (this.awaitingSectionMode === AWAITING_MODE_ITEM_GONE) { 14258 if (selection) { 14259 return !this.isSelectionInWishlist(id, selection); 14260 } 14261 return !this.isInWishlist(id); 14262 } 14263 return false; 14264 }, 14265 14266 beginAwaitingSectionConfirm(productId, selection, mode) { 14267 const id = Number(productId); 14268 if (!id || !mode) { 14269 this.releaseAwaitingSectionConfirm(); 14270 return; 14271 } 14272 14273 this.awaitingSectionProductId = id; 14274 this.awaitingSectionSelection = selection; 14275 this.awaitingSectionMode = mode; 14276 this.wishlistPending = true; 14277 this.clearAwaitingSectionTimeout(); 14278 14279 // After remove, optimistic local state already looks "gone" — wait for section data. 14280 // After add, section may already be fresh (fast reload / cache). 14281 if (mode !== AWAITING_MODE_ITEM_GONE && this.isSectionConfirmSatisfied()) { 14282 this.releaseAwaitingSectionConfirm(); 14283 return; 14284 } 14285 14286 this.awaitingSectionTimeoutId = setTimeout(() => { 14287 this.releaseAwaitingSectionConfirm(); 14288 }, AWAITING_SECTION_TIMEOUT_MS); 14289 }, 14290 14291 beginAwaitingRemoveParams(productId, selection = null) { 14292 this.beginAwaitingSectionConfirm(productId, selection, AWAITING_MODE_HAS_REMOVE_PARAMS); 14293 }, 14294 14295 beginAwaitingItemGone(productId, selection = null) { 14296 this.beginAwaitingSectionConfirm(productId, selection, AWAITING_MODE_ITEM_GONE); 14297 }, 14298 14299 maybeReleasePendingAfterSectionLoad() { 14300 if (!this.awaitingSectionProductId) { 14301 return; 14302 } 14303 if (this.isSectionConfirmSatisfied()) { 14304 this.releaseAwaitingSectionConfirm(); 14305 } 14306 }, 14307 14308 setLoginState(data) { 14309 this.isLoggedIn = !!(data?.customer?.firstname); 14310 this.privateContentLoaded = true; 14311 14312 if (!this.isLoggedIn) { 14313 this.wishlistProductItems = []; 14314 if (this.awaitingSectionProductId) { 14315 this.releaseAwaitingSectionConfirm(); 14316 } 14317 return; 14318 } 14319 14320 const productItems = data?.wishlist?.product_items; 14321 this.wishlistProductItems = Array.isArray(productItems) ? productItems : []; 14322 this.maybeReleasePendingAfterSectionLoad(); 14323 }, 14324 14325 readWishlistSection(key, fallback = null) { 14326 return window.steiffReadMageCache()?.wishlist?.[key] ?? fallback; 14327 }, 14328 14329 normalizeWishlistEventDetail(productIdOrDetail) { 14330 if (productIdOrDetail && typeof productIdOrDetail === 'object') { 14331 return { 14332 productId: productIdOrDetail.productId ?? productIdOrDetail.product_id ?? null, 14333 simpleProductId: productIdOrDetail.simpleProductId 14334 ?? productIdOrDetail.simple_product_id 14335 ?? null, 14336 superAttribute: productIdOrDetail.superAttribute 14337 ?? productIdOrDetail.super_attribute 14338 ?? null, 14339 hasFullSelection: productIdOrDetail.hasFullSelection ?? null 14340 }; 14341 } 14342 return { 14343 productId: productIdOrDetail, 14344 simpleProductId: null, 14345 superAttribute: null, 14346 hasFullSelection: null 14347 }; 14348 }, 14349 14350 normalizeSuperAttribute(superAttribute) { 14351 if (!superAttribute || typeof superAttribute !== 'object') { 14352 return {}; 14353 } 14354 const normalized = {}; 14355 Object.keys(superAttribute).forEach((key) => { 14356 const value = superAttribute[key]; 14357 if (value === null || value === undefined || value === '') { 14358 return; 14359 } 14360 normalized[String(key)] = String(value); 14361 }); 14362 return normalized; 14363 }, 14364 14365 superAttributesEqual(first, second) { 14366 const firstAttributes = this.normalizeSuperAttribute(first); 14367 const secondAttributes = this.normalizeSuperAttribute(second); 14368 const firstAttributeIds = Object.keys(firstAttributes); 14369 const secondAttributeIds = Object.keys(secondAttributes); 14370 if (firstAttributeIds.length !== secondAttributeIds.length) { 14371 return false;
14372 } 14373 return firstAttributeIds.every( 14374 (attributeId) => firstAttributes[attributeId] === secondAttributes[attributeId] 14375 ); 14376 }, 14377 14378 itemHasConfiguration(item) { 14379 if (!item || typeof item !== 'object') { 14380 return false; 14381 } 14382 if (item.simple_product_id) { 14383 return true; 14384 } 14385 return Object.keys(this.normalizeSuperAttribute(item.super_attribute)).length > 0; 14386 }, 14387 14388 matchesWishlistSelection(item, selection = {}) { 14389 const hasFullSelection = !!selection.hasFullSelection; 14390 const simpleProductId = selection.simpleProductId 14391 ? Number(selection.simpleProductId) 14392 : null; 14393 const superAttribute = this.normalizeSuperAttribute(selection.superAttribute); 14394 const itemSimpleId = item.simple_product_id ? Number(item.simple_product_id) : null; 14395 14396 if (hasFullSelection) { 14397 if (simpleProductId && itemSimpleId && simpleProductId === itemSimpleId) { 14398 return true; 14399 } 14400 if (Object.keys(superAttribute).length > 0 14401 && this.superAttributesEqual(item.super_attribute, superAttribute)) { 14402 return true; 14403 } 14404 return false; 14405 } 14406 14407 return !this.itemHasConfiguration(item); 14408 }, 14409 14410 getWishlistProductItems() { 14411 if (Array.isArray(this.wishlistProductItems)) { 14412 return this.wishlistProductItems; 14413 } 14414 14415 const productItems = this.readWishlistSection('product_items'); 14416 if (Array.isArray(productItems)) { 14417 this.wishlistProductItems = productItems; 14418 return this.wishlistProductItems; 14419 } 14420 14421 return []; 14422 }, 14423 14424 getWishlistProductIds() { 14425 return [...new Set( 14426 this.getWishlistProductItems().map((item) => Number(item.product_id)) 14427 )]; 14428 }, 14429 14430 getItemsForProduct(productId) { 14431 const parentId = Number(productId); 14432 return this.getWishlistProductItems().filter( 14433 (item) => Number(item.product_id) === parentId 14434 ); 14435 }, 14436 14437 getWishlistRemoveParams(productId) { 14438 return this.getItemsForProduct(productId) 14439 .map((item) => item.remove_params) 14440 .filter(Boolean); 14441 }, 14442 14443 getWishlistRemoveParamsForSelection(productId, selection = {}) { 14444 const items = this.getItemsForProduct(productId); 14445 if (!items.length) { 14446 return []; 14447 } 14448 return items 14449 .filter((item) => this.matchesWishlistSelection(item, selection)) 14450 .map((item) => item.remove_params) 14451 .filter(Boolean); 14452 }, 14453 14454 isInWishlist(productId) { 14455 if (!this.isLoggedIn && this.isGuest()) { 14456 return false; 14457 } 14458 return this.getWishlistProductIds().includes(Number(productId)); 14459 }, 14460 14461 isSelectionInWishlist(productId, selection = {}) { 14462 if (!this.isLoggedIn && this.isGuest()) { 14463 return false; 14464 } 14465 const items = this.getItemsForProduct(productId); 14466 if (!items.length) { 14467 return false; 14468 } 14469 return items.some((item) => this.matchesWishlistSelection(item, selection)); 14470 }, 14471 14472 handleWishlistProductAdded(productIdOrDetail) { 14473 const detail = this.normalizeWishlistEventDetail(productIdOrDetail); 14474 const id = Number(detail.productId); 14475 if (!id) { 14476 return; 14477 } 14478 14479 const items = [...this.getWishlistProductItems()]; 14480 const simpleProductId = detail.simpleProductId ? Number(detail.simpleProductId) : null; 14481 const superAttribute = this.normalizeSuperAttribute(detail.superAttribute); 14482 const hasFullSelection = !!(simpleProductId || Object.keys(superAttribute).length); 14483 const alreadyPresent = items.some((item) => { 14484 if (Number(item.product_id) !== id) { 14485 return false;
14486 } 14487 return this.matchesWishlistSelection(item, { 14488 simpleProductId, 14489 superAttribute, 14490 hasFullSelection 14491 }); 14492 }); 14493 14494 if (!alreadyPresent) { 14495 items.push({ 14496 product_id: id, 14497 simple_product_id: simpleProductId, 14498 super_attribute: superAttribute, 14499 remove_params: null 14500 }); 14501 this.wishlistProductItems = items; 14502 } 14503 }, 14504 14505 hasSelectionContext(detail) { 14506 return (detail.hasFullSelection !== null && detail.hasFullSelection !== undefined) 14507 || !!detail.simpleProductId 14508 || Object.keys(this.normalizeSuperAttribute(detail.superAttribute)).length > 0; 14509 }, 14510 14511 handleWishlistProductRemoved(productIdOrDetail) { 14512 const detail = this.normalizeWishlistEventDetail(productIdOrDetail); 14513 const id = Number(detail.productId); 14514 if (!id) { 14515 return; 14516 } 14517 14518 if (this.hasSelectionContext(detail)) { 14519 const selection = { 14520 simpleProductId: detail.simpleProductId, 14521 superAttribute: detail.superAttribute, 14522 hasFullSelection: detail.hasFullSelection 14523 }; 14524 this.wishlistProductItems = this.getWishlistProductItems().filter((item) => { 14525 if (Number(item.product_id) !== id) { 14526 return true; 14527 } 14528 return !this.matchesWishlistSelection(item, selection); 14529 }); 14530 return; 14531 } 14532 14533 this.wishlistProductItems = this.getWishlistProductItems().filter( 14534 (item) => Number(item.product_id) !== id 14535 ); 14536 }, 14537
14538 isGuest() { 14539 if (this.privateContentLoaded) { 14540 return !this.isLoggedIn; 14541 } 14542 const cache = window.steiffReadMageCache(); 14543 if (cache.customer?.firstname) { 14544 this.isLoggedIn = true; 14545 this.privateContentLoaded = true; 14546 return false; 14547 } 14548 return true; 14549 }, 14550 14551 toggleWishlist(productId, productName, selection = null) { 14552 if (this.wishlistPending) { 14553 return; 14554 } 14555 if (selection) { 14556 if (this.isSelectionInWishlist(productId, selection)) { 14557 this.removeFromWishlist(productId, productName, selection); 14558 return; 14559 } 14560 this.addToWishlist(productId, productName); 14561 return; 14562 } 14563 if (this.isInWishlist(productId)) { 14564 this.removeFromWishlist(productId, productName); 14565 return; 14566 } 14567 this.addToWishlist(productId, productName); 14568 }, 14569 14570 addToWishlist(productId, productName) { 14571 if (productName) { 14572 this.pendingProductName = productName; 14573 } 14574 if (this.isGuest()) { 14575 if (this.$el instanceof HTMLElement) { 14576 this.$el.blur(); 14577 } 14578 this.pendingProductId = productId; 14579 if (typeof window.steiffPersistPendingWishlistProduct === 'function') { 14580 window.steiffPersistPendingWishlistProduct(productId); 14581 } 14582 window.dispatchEvent(new CustomEvent('auth-modal-wishlist-pending')); 14583 window.dispatchEvent(new CustomEvent('open-auth-modal')); 14584 return; 14585 } 14586 this.performAddToWishlist(productId, true); 14587 }, 14588 14589 removeFromWishlist(productId, productName, selection = null) { 14590 const removeParamsList = selection 14591 ? this.getWishlistRemoveParamsForSelection(productId, selection) 14592 : this.getWishlistRemoveParams(productId); 14593 14594 // Optimistic add may lack remove_params until section data reloads 14595 if (!removeParamsList.length) { 14596 window.dispatchEvent(new CustomEvent('reload-customer-section-data')); 14597 return; 14598 } 14599 14600 this.wishlistPending = true; 14601 let keepPendingForSection = false; 14602 14603 const removedMessageTemplate = '\u00251\u0020has\u0020been\u0020removed\u0020from\u0020your\u0020Wish\u0020List.'; 14604 const removedMessageFallback = 'Product\u0020has\u0020been\u0020removed\u0020from\u0020your\u0020Wish\u0020List.'; 14605 const removedMessage = productName && typeof hyva !== 'undefined' && typeof hyva.str === 'function' 14606 ? hyva.str(removedMessageTemplate, productName) 14607 : removedMessageFallback; 14608 const warningMessage = 'Could\u0020not\u0020remove\u0020item\u0020from\u0020your\u0020Wish\u0020List.'; 14609 const eventDetail = selection 14610 ? { 14611 productId, 14612 simpleProductId: selection.simpleProductId ?? null, 14613 superAttribute: selection.superAttribute ?? null, 14614 hasFullSelection: selection.hasFullSelection ?? null 14615 } 14616 : { productId }; 14617 14618 let removedAny = false; 14619 14620 const removeNext = () => { 14621 if (!removeParamsList.length) { 14622 if (!removedAny) { 14623 return Promise.resolve(); 14624 } 14625 this.handleWishlistProductRemoved(eventDetail); 14626 window.dispatchEvent(new CustomEvent('wishlist-product-removed', { 14627 detail: eventDetail, 14628 bubbles: true 14629 })); 14630 window.steiffNotify('success', removedMessage); 14631 window.dispatchEvent(new CustomEvent('reload-customer-section-data')); 14632 keepPendingForSection = true; 14633 this.beginAwaitingItemGone(productId, selection); 14634 return Promise.resolve(); 14635 } 14636
14637 const paramsJson = removeParamsList.shift(); 14638 return window.steiffPostWishlistForm(paramsJson, { warningMessage }).then((result) => { 14639 if (result?.success) { 14640 removedAny = true; 14641 return removeNext(); 14642 } 14643 if (result && !result.success) { 14644 window.steiffNotify('error', result.error_message ?? warningMessage); 14645 } 14646 if (removedAny) { 14647 window.dispatchEvent(new CustomEvent('reload-customer-section-data')); 14648 } 14649 }); 14650 }; 14651 14652 return removeNext().finally(() => { 14653 if (keepPendingForSection) { 14654 return; 14655 } 14656 this.wishlistPending = false; 14657 this.restoreWishlistButtonFocus(); 14658 }); 14659 }, 14660 14661 handleWishlistAfterAuthLogin() { 14662 if (this.pendingProductId) { 14663 const id = this.pendingProductId; 14664 this.pendingProductId = null; 14665 window.steiffClearPendingWishlistProductStorage(); 14666 this.performAddToWishlist(id); 14667 } 14668 }, 14669 14670 clearPendingWishlist() { 14671 this.pendingProductId = null; 14672 window.steiffClearPendingWishlistProductStorage(); 14673 }, 14674 14675 restoreWishlistButtonFocus() { 14676 if (!(this.$el instanceof HTMLElement)) { 14677 return; 14678 } 14679 requestAnimationFrame(() => { 14680 this.$el.focus({ preventScroll: true }); 14681 }); 14682 } 14683 }; 14684 }; 14685</script>
vendor: 1 bytes, line 14685
14685
14686<script> 14687 window.steiffInitWishlistToggle = function () { 14688 const mixin = window.steiffWishlistMixin(); 14689 return Object.assign(mixin, { 14690 getWishlistSuccessMessage() { 14691 const name = this.pendingProductName || ''; 14692 if (name) { 14693 return "__NAME__\u0020has\u0020been\u0020added\u0020to\u0020your\u0020Wish\u0020List.".replace('__NAME__', name); 14694 } 14695 return "Product\u0020has\u0020been\u0020added\u0020to\u0020your\u0020Wish\u0020List."; 14696 }, 14697 performAddToWishlist(productId, openAuthModalOnLoginRedirect = false) { 14698 this.wishlistPending = true; 14699 let keepPendingForSection = false; 14700 14701 window.steiffAddWishlistProduct(productId).then((response) => { 14702 if (response.redirected) { 14703 if (response.url.includes('wishlist')) { 14704 window.steiffClearPendingWishlistProductStorage(); 14705 window.dispatchEvent(new CustomEvent('wishlist-product-added', { 14706 detail: { productId: String(productId) }, 14707 bubbles: true 14708 })); 14709 window.steiffNotify('success', this.getWishlistSuccessMessage()); 14710 window.dispatchEvent(new CustomEvent('reload-customer-section-data')); 14711 keepPendingForSection = true; 14712 this.beginAwaitingRemoveParams(productId); 14713 return; 14714 } 14715 14716 const redirectedToLogin = response.url.includes('customer/account/login'); 14717 if (openAuthModalOnLoginRedirect && redirectedToLogin) { 14718 this.pendingProductId = productId; 14719 window.dispatchEvent(new CustomEvent('auth-modal-wishlist-pending')); 14720 window.dispatchEvent(new CustomEvent('open-auth-modal')); 14721 return; 14722 } 14723 14724 window.location.href = response.url; 14725 return; 14726 } 14727 if (response.ok) { 14728 return response.json(); 14729 } 14730 window.steiffNotify( 14731 'warning', 14732 'Could\u0020not\u0020add\u0020item\u0020to\u0020wishlist.' 14733 ); 14734 }).then((result) => { 14735 if (!result) { 14736 return; 14737 } 14738 if (!result.success) { 14739 window.steiffNotify('error', result.error_message); 14740 return; 14741 } 14742 window.steiffNotify('success', this.getWishlistSuccessMessage()); 14743 window.dispatchEvent(new CustomEvent('reload-customer-section-data')); 14744 window.dispatchEvent(new CustomEvent('wishlist-product-added', { 14745 detail: { productId: String(productId) }, 14746 bubbles: true 14747 })); 14748 keepPendingForSection = true; 14749 this.beginAwaitingRemoveParams(productId); 14750 }).catch((error) => { 14751 window.steiffNotify('error', error?.message ?? String(error)); 14752 }).finally(() => { 14753 if (keepPendingForSection) { 14754 return; 14755 } 14756 this.wishlistPending = false; 14757 this.restoreWishlistButtonFocus(); 14758 }); 14759 } 14760 }); 14761 }; 14762</script>
vendor: 1 bytes, line 14762
14762
14763<script> 14764 (function () { 14765 const cache = window.steiffReadMageCache(); 14766 if (!cache.customer?.firstname) { 14767 return; 14768 } 14769 let stored; 14770 try { 14771 stored = sessionStorage.getItem(window.STEIFF_PENDING_WISHLIST_PRODUCT_KEY); 14772 } catch (_e) { 14773 return; 14774 } 14775 if (!stored) { 14776 return; 14777 } 14778 window.steiffClearPendingWishlistProductStorage(); 14779 const productId = parseInt(stored, 10); 14780 if (!productId) { 14781 return; 14782 } 14783 14784 const flushPendingWishlist = () => { 14785 if (typeof hyva === 'undefined' || typeof hyva.getFormKey !== 'function' || !hyva.getFormKey()) { 14786 return; 14787 } 14788 window.steiffAddWishlistProduct(productId).then((response) => { 14789 if (response.redirected && response.url.includes('wishlist')) { 14790 window.dispatchEvent(new CustomEvent('wishlist-product-added', { 14791 detail: { productId: String(productId) } 14792 })); 14793 window.steiffNotify( 14794 'success', 14795 'Product\u0020has\u0020been\u0020added\u0020to\u0020your\u0020Wish\u0020List.' 14796 ); 14797 window.dispatchEvent(new CustomEvent('reload-customer-section-data')); 14798 } 14799 }); 14800 }; 14801 14802 if (document.readyState === 'loading') { 14803 document.addEventListener('DOMContentLoaded', flushPendingWishlist); 14804 } else { 14805 flushPendingWishlist(); 14806 } 14807 })(); 14808</script>
vendor: 1 bytes, line 14808
14808
14809<script> 14810 (function () { 14811 const showWishlistLoginNoticeIfNeeded = () => { 14812 const path = window.location.pathname || ''; 14813 if (!path.includes('customer/account/login')) { 14814 return; 14815 } 14816 const noticeKey = window.STEIFF_WISHLIST_LOGIN_NOTICE_KEY || 'steiff_wishlist_login_notice'; 14817 let shouldShowNotice = false; 14818 try { 14819 shouldShowNotice = sessionStorage.getItem(noticeKey) === '1'; 14820 if (shouldShowNotice) { 14821 sessionStorage.removeItem(noticeKey); 14822 } 14823 } catch (_e) { 14824 return; 14825 } 14826 if (!shouldShowNotice) { 14827 return; 14828 } 14829 const messages = [{ 14830 type: 'info', 14831 text: 'Please\u0020sign\u0020in\u0020to\u0020add\u0020products\u0020to\u0020your\u0020Wish\u0020List.' 14832 }]; 14833 const dispatchNotice = () => { 14834 if (typeof window.dispatchMessages === 'function') { 14835 window.dispatchMessages(messages, 8000); 14836 return; 14837 } 14838 window.dispatchEvent(new CustomEvent('message-modal-show', { 14839 detail: { messages } 14840 })); 14841 }; 14842 window.setTimeout(dispatchNotice, 0); 14843 }; 14844 14845 if (document.readyState === 'loading') { 14846 document.addEventListener('DOMContentLoaded', showWishlistLoginNoticeIfNeeded); 14847 } else { 14848 showWishlistLoginNoticeIfNeeded(); 14849 } 14850 })(); 14851</script>
14851 14852 14853<!-- http://FRAUD0.com fraud detection BODY TAG -->
14854<script async src="https://api.fraud0.com/api/v2/fz.js?cid=3b38a0dc-ee4e-4935-bd33-17e2034e595d"></script>
vendor: 1 bytes, line 14854
14854
14855<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>
14855 14856<!-- End of FRAUD0 BODY TAG -->
14856<script type="text/json" id="default-section-data"> 14857 {"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"}
14857,"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"}
14857,"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"}
14857,"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"}
14857,"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":1790276492},"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 14857
14857
14858<script> 14859 window.processSectionDataBeforeDispatch && (window.processSectionDataBeforeDispatch = new Proxy(window.processSectionDataBeforeDispatch, { 14860 apply(target, thisArg, [data]) { 14861 data.hyva_commerce_messages = data.hyva_commerce_messages || {}; 14862 return target.call(thisArg, data); 14863 } 14864 })); 14865</script>
14865 14866</div>
14866<script type="text/javascript">window.NREUM||(NREUM={});NREUM.info={"beacon":"bam.nr-data.net","licenseKey":"389bb90676","applicationID":"212573352","transactionName":"YVYEMRNRDENXB0ANVlgcJwYVWQ1eGQdZFxZfXQIAGR8LXlIBTA==","queueTime":0,"applicationTime":1723,"atts":"TRETR1tLHxwUBRZeQktO","errorBeacon":"bam.nr-data.net","agent":""}</script>
14866</body> 14867</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.