1<!doctype html> 2<html lang="pl"> 3<head > 4 <meta charset="utf-8"/> 5<meta name="title" content="MÄ dre zabawki â pomysÅy na wartoÅciowÄ zabawÄ po szkole - Blog Trefl - zainspiruj siÄ najlepszymi treÅciami ze Åwiata zabawek"/> 6<meta name="robots" content="INDEX,FOLLOW"/> 7<meta name="viewport" content="width=device-width, initial-scale=1"/> 8<meta name="theme-color" content="#ce060d"/> 9<title>MÄ dre zabawki â pomysÅy na wartoÅciowÄ zabawÄ po szkole - Blog Trefl - zainspiruj siÄ najlepszymi treÅciami ze Åwiata zabawek</title> 10<link rel="stylesheet" type="text/css" media="all" href="https://www.trefl.com/static/version1790625415/frontend/Trefl/hyva-trefl/pl_PL/css/styles.css" /> 11<link rel="preload" as="font" crossorigin="anonymous" href="https://www.trefl.com/static/version1790625415/frontend/Trefl/hyva-trefl/pl_PL/fonts/Montserrat/Montserrat-Regular.woff2" /> 12<link rel="preload" as="font" crossorigin="anonymous" href="https://www.trefl.com/static/version1790625415/frontend/Trefl/hyva-trefl/pl_PL/fonts/Montserrat/Montserrat-Medium.woff2" /> 13<link rel="preload" as="font" crossorigin="anonymous" href="https://www.trefl.com/static/version1790625415/frontend/Trefl/hyva-trefl/pl_PL/fonts/Montserrat/Montserrat-SemiBold.woff2" /> 14<link rel="preload" as="font" crossorigin="anonymous" href="https://www.trefl.com/static/version1790625415/frontend/Trefl/hyva-trefl/pl_PL/fonts/Montserrat/Montserrat-Bold.woff2" /> 15<link rel="icon" type="image/png" sizes="48x48" href="https://www.trefl.com/static/version1790625415/frontend/Trefl/hyva-trefl/pl_PL/Magento_Theme/favicon-48x48.png" /> 16<link rel="apple-touch-icon" type="image/png" sizes="180x180" href="https://www.trefl.com/static/version1790625415/frontend/Trefl/hyva-trefl/pl_PL/Magento_Theme/apple-touch-icon.png" /> 17<link rel="icon" type="image/png" sizes="192x192" href="https://www.trefl.com/static/version1790625415/frontend/Trefl/hyva-trefl/pl_PL/Magento_Theme/web-app-manifest-192x192.png" /> 18<link rel="icon" type="image/png" sizes="512x512" href="https://www.trefl.com/static/version1790625415/frontend/Trefl/hyva-trefl/pl_PL/Magento_Theme/web-app-manifest-512x512.png" /> 19<link rel="manifest" href="https://www.trefl.com/static/version1790625415/frontend/Trefl/hyva-trefl/pl_PL/Magento_Theme/site.webmanifest" /> 20<link rel="canonical" href="https://www.trefl.com/blog/post/madre-zabawki-pomysly-na-wartosciowa-zabawe-po-szkole" /> 21<link rel="icon" type="image/x-icon" href="https://www.trefl.com/media/favicon/stores/1/favicon.ico" /> 22<link rel="shortcut icon" type="image/x-icon" href="https://www.trefl.com/media/favicon/stores/1/favicon.ico" /> 23<meta name="google-site-verification" content="uqHKypU0BhCxxqIH08N7ZxiHKfOOUJd43j7k3OjXpBQ" /> 24 25<link rel="preconnect" href="https://www.googletagmanager.com"> 26<link rel="preconnect" href="https://www.google-analytics.com"> 27<link rel="preconnect" href="https://app.usercentrics.eu"> 28<link rel="preconnect" href="https://app3.salesmanago.pl"> 29<link rel="dns-prefetch" href="https://fonts.googleapis.com"> 30<link rel="dns-prefetch" href="https://www.clarity.ms"> 31 32<style> 33.catalog-product-view etrusted-widget { 34 display: none; 35} 36</style> 37 <!-- BEGIN GOOGLE ANALYTICS CODE --> 38
38<script type="text/x-magento-init"> 39 { 40 "*": { 41 "BlueMedia_BluePayment/js/analytics/google-analytics": { 42 "pageTrackingData": {"isAnonymizedIpActive":false,"anonymizeIp":"UA-125499597-1"} } 43 } 44 } 45 </script>
45 46 <!-- END GOOGLE ANALYTICS CODE --> 47 48<!-- Structured Data by outer/edge (https://outeredge.agency) -->
49<script type="application/ld+json" id="structured-data"> 50{ 51 "@context": "https://schema.org/", 52 "@type": "WebPage", 53 "publisher": { 54 "@type": "Organization", 55 "name": "Trefl S.A", 56 "url": "https://www.trefl.com/", 57 "logo": { 58 "@type": "ImageObject", 59 "url": "https://www.trefl.com/media/logo/stores/1/logo_small.png" 60 } 61 } 62 } 63</script>
63 64
65<script nonce="NnI0ZHB5ejN3anFyNjY4MDRrbGQ5bzgwMWF0Mmx0anI="> 66 window.YIREO_GOOGLETAGMANAGER2_ENABLED = true; 67 (function (events) { 68 const initYireoGoogleTagManager2 = function () { 69 events.forEach(function (eventType) { 70 window.removeEventListener(eventType, initYireoGoogleTagManager2); 71 }); 72 73 (function (w, d, s, l, i) { 74 w[l] = w[l] || []; 75 w[l].push({'gtm.start': new Date().getTime(), event: 'gtm.js'}); 76 var f = d.getElementsByTagName(s)[0], 77 j = d.createElement(s), 78 dl = l != 'dataLayer' ? '&l=' + l : ''; 79 j.async = true; 80 j.src = 'https://www.googletagmanager.com' + '/gtm.js?id=' + i + dl; 81 f.parentNode.insertBefore(j, f); 82 })(window, document, 'script', 'dataLayer', 'GTM-PC39D52'); 83 } 84 85 events.forEach(function (eventType) { 86 window.addEventListener(eventType, initYireoGoogleTagManager2, {once: true, passive: true}) 87 }) 88 })(['load', 'keydown', 'mouseover', 'scroll', 'touchstart', 'wheel']); 89 90 </script>
vendor: 1 bytes, line 90
90
91<script> 92 var BASE_URL = 'https://www.trefl.com/'; 93 var THEME_PATH = 'https://www.trefl.com/static/version1790625415/frontend/Trefl/hyva-trefl/pl_PL'; 94 var COOKIE_CONFIG = { 95 "expires": null, 96 "path": "\u002F", 97 "domain": ".www.trefl.com", 98 "secure": true, 99 "lifetime": "3600", 100 "cookie_restriction_enabled": false }; 101 var CURRENT_STORE_CODE = 'default'; 102 var CURRENT_WEBSITE_ID = '1'; 103 104 window.hyva = window.hyva || {} 105 106 window.cookie_consent_groups = window.cookie_consent_groups || {} 107 window.cookie_consent_groups['necessary'] = true; 108 109 window.cookie_consent_config = window.cookie_consent_config || {}; 110 window.cookie_consent_config['necessary'] = [].concat( 111 window.cookie_consent_config['necessary'] || [], 112 [ 113 'user_allowed_save_cookie', 114 'form_key', 115 'mage-messages', 116 'private_content_version', 117 'mage-cache-sessid', 118 'last_visited_store', 119 'section_data_ids' 120 ] 121 ); 122</script>
vendor: 1 bytes, line 122
122
123<script> 124 'use strict'; 125 (function( hyva, undefined ) { 126 127 function lifetimeToExpires(options, defaults) { 128 129 const lifetime = options.lifetime || defaults.lifetime; 130 131 if (lifetime) { 132 const date = new Date; 133 date.setTime(date.getTime() + lifetime * 1000); 134 return date; 135 } 136 137 return null; 138 } 139 140 function generateRandomString() { 141 142 const allowedCharacters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ', 143 length = 16; 144 145 let formKey = '', 146 charactersLength = allowedCharacters.length; 147 148 for (let i = 0; i < length; i++) { 149 formKey += allowedCharacters[Math.round(Math.random() * (charactersLength - 1))] 150 } 151 152 return formKey; 153 } 154 155 const sessionCookieMarker = {noLifetime: true} 156 157 const cookieTempStorage = {}; 158 159 const internalCookie = { 160 get(name) { 161 const v = document.cookie.match('(^|;) ?' + name + '=([^;]*)(;|$)'); 162 return v ? v[2] : null; 163 }, 164 set(name, value, days, skipSetDomain) { 165 let expires, 166 path, 167 domain, 168 secure, 169 samesite; 170 171 const defaultCookieConfig = { 172 expires: null, 173 path: '/', 174 domain: null, 175 secure: false, 176 lifetime: null, 177 samesite: 'lax' 178 }; 179 180 const cookieConfig = window.COOKIE_CONFIG || {}; 181 182 expires = days && days !== sessionCookieMarker 183 ? lifetimeToExpires({lifetime: 24 * 60 * 60 * days, expires: null}, defaultCookieConfig) 184 : lifetimeToExpires(window.COOKIE_CONFIG, defaultCookieConfig) || defaultCookieConfig.expires; 185 186 path = cookieConfig.path || defaultCookieConfig.path; 187 domain = !skipSetDomain && (cookieConfig.domain || defaultCookieConfig.domain); 188 secure = cookieConfig.secure || defaultCookieConfig.secure; 189 samesite = cookieConfig.samesite || defaultCookieConfig.samesite; 190 191 document.cookie = name + "=" + encodeURIComponent(value) + 192 (expires && days !== sessionCookieMarker ? '; expires=' + expires.toGMTString() : '') + 193 (path ? '; path=' + path : '') + 194 (domain ? '; domain=' + domain : '') + 195 (secure ? '; secure' : '') + 196 (samesite ? '; samesite=' + samesite : 'lax'); 197 }, 198 isWebsiteAllowedToSaveCookie() { 199 const allowedCookies = this.get('user_allowed_save_cookie'); 200 if (allowedCookies) { 201 const allowedWebsites = JSON.parse(unescape(allowedCookies)); 202 203 return allowedWebsites[CURRENT_WEBSITE_ID] === 1; 204 } 205 return false; 206 }, 207 getGroupByCookieName(name) { 208 const cookieConsentConfig = window.cookie_consent_config || {}; 209 let group = null; 210 for (let prop in cookieConsentConfig) { 211 if (!cookieConsentConfig.hasOwnProperty(prop)) continue; 212 if (cookieConsentConfig[prop].includes(name)) { 213 group = prop; 214 break; 215 } 216 } 217 return group; 218 }, 219 isCookieAllowed(name) { 220 const cookieGroup = this.getGroupByCookieName(name); 221 return cookieGroup 222 ? window.cookie_consent_groups[cookieGroup] 223 : this.isWebsiteAllowedToSaveCookie(); 224 }, 225 saveTempStorageCookies() { 226 for (const [name, data] of Object.entries(cookieTempStorage)) { 227 if (this.isCookieAllowed(name)) { 228 this.set(name, data['value'], data['days'], data['skipSetDomain']); 229 delete cookieTempStorage[name]; 230 } 231 } 232 } 233 }; 234 235 hyva.getCookie = (name) => { 236 const cookieConfig = window.COOKIE_CONFIG || {}; 237 238 if (cookieConfig.cookie_restriction_enabled && ! internalCookie.isCookieAllowed(name)) { 239 return cookieTempStorage[name] ? cookieTempStorage[name]['value'] : null; 240 } 241 242 return internalCookie.get(name); 243 } 244 245 hyva.setCookie = (name, value, days, skipSetDomain) => { 246 const cookieConfig = window.COOKIE_CONFIG || {}; 247 248 if (cookieConfig.cookie_restriction_enabled && ! internalCookie.isCookieAllowed(name)) { 249 cookieTempStorage[name] = {value, days, skipSetDomain}; 250 return; 251 } 252 return internalCookie.set(name, value, days, skipSetDomain); 253 } 254 255 256 hyva.setSessionCookie = (name, value, skipSetDomain) => { 257 return hyva.setCookie(name, value, sessionCookieMarker, skipSetDomain) 258 } 259 260 hyva.getBrowserStorage = () => { 261 const browserStorage = window.localStorage || window.sessionStorage; 262 if (!browserStorage) { 263 console.warn('Browser Storage is unavailable'); 264 return false;
265 } 266 try { 267 browserStorage.setItem('storage_test', '1'); 268 browserStorage.removeItem('storage_test'); 269 } catch (error) { 270 console.warn('Browser Storage is not accessible', error); 271 return false; 272 } 273 return browserStorage; 274 } 275 276 hyva.postForm = (postParams) => { 277 const form = document.createElement("form"); 278 279 let data = postParams.data; 280 281 if (! postParams.skipUenc && ! data.uenc) { 282 data.uenc = btoa(window.location.href); 283 } 284 form.method = "POST"; 285 form.action = postParams.action; 286 287 Object.keys(postParams.data).map(key => { 288 const field = document.createElement("input"); 289 field.type = 'hidden' 290 field.value = postParams.data[key]; 291 field.name = key; 292 form.appendChild(field); 293 }); 294 295 const form_key = document.createElement("input"); 296 form_key.type = 'hidden'; 297 form_key.value = hyva.getFormKey(); 298 form_key.name="form_key"; 299 form.appendChild(form_key); 300 301 document.body.appendChild(form); 302 303 form.submit(); 304 } 305 306 hyva.getFormKey = function () { 307 let formKey = hyva.getCookie('form_key'); 308 309 if (!formKey) { 310 formKey = generateRandomString(); 311 hyva.setCookie('form_key', formKey); 312 } 313 314 return formKey; 315 } 316 317 hyva.formatPrice = (value, showSign, options = {}) => { 318 const groupSeparator = options.groupSeparator; 319 const decimalSeparator = options.decimalSeparator 320 delete options.groupSeparator; 321 delete options.decimalSeparator; 322 const formatter = new Intl.NumberFormat( 323 'pl\u002DPL', 324 Object.assign({ 325 style: 'currency', 326 currency: 'PLN', 327 signDisplay: showSign ? 'always' : 'auto' 328 }, options) 329 ); 330 return (typeof Intl.NumberFormat.prototype.formatToParts === 'function') ? 331 formatter.formatToParts(value).map(({type, value}) => { 332 switch (type) { 333 case 'currency': 334 return 'z\u0142' || value; 335 case 'minusSign': 336 return '- '; 337 case 'plusSign': 338 return '+ '; 339 case 'group': 340 return groupSeparator !== undefined ? groupSeparator : value; 341 case 'decimal': 342 return decimalSeparator !== undefined ? decimalSeparator : value; 343 default : 344 return value; 345 } 346 }).reduce((string, part) => string + part) : 347 formatter.format(value); 348 } 349 350 const formatStr = function (str, nStart) { 351 const args = Array.from(arguments).slice(2); 352 353 return str.replace(/(%+)([0-9]+)/g, (m, p, n) => { 354 const idx = parseInt(n) - nStart; 355 356 if (args[idx] === null || args[idx] === void 0) { 357 return m; 358 } 359 return p.length % 2 360 ? p.slice(0, -1).replace('%%', '%') + args[idx] 361 : p.replace('%%', '%') + n; 362 }) 363 } 364 365 hyva.str = function (string) { 366 const args = Array.from(arguments); 367 args.splice(1, 0, 1); 368 369 return formatStr.apply(undefined, args); 370 } 371 372 hyva.strf = function () { 373 const args = Array.from(arguments); 374 args.splice(1, 0, 0); 375 376 return formatStr.apply(undefined, args); 377 } 378 379 /** 380 * Take a html string as `content` parameter and 381 * extract an element from the DOM to replace in 382 * the current page under the same selector, 383 * defined by `targetSelector` 384 */ 385 hyva.replaceDomElement = (targetSelector, content) => { 386 // Parse the content and extract the DOM node using the `targetSelector` 387 const parser = new DOMParser(); 388 const doc = parser.parseFromString(content, 'text/html');
389 const contentNode = doc.querySelector(targetSelector); 390 391 // Bail if content or target can't be found 392 if (!contentNode || !document.querySelector(targetSelector)) { 393 return; 394 } 395 396 hyva.activateScripts(contentNode); 397 398 // Replace the old DOM node with the new content 399 document.querySelector(targetSelector).replaceWith(contentNode); 400 401 // Reload customerSectionData and display cookie-messages if present 402 window.dispatchEvent(new CustomEvent("reload-customer-section-data")); 403 hyva.initMessages(); 404 } 405 406 hyva.removeScripts = (contentNode) => { 407 const scripts = contentNode.getElementsByTagName('script'); 408 for (let i = 0; i < scripts.length; i++) { 409 scripts[i].parentNode.removeChild(scripts[i]); 410 } 411 const templates = contentNode.getElementsByTagName('template'); 412 for (let i = 0; i < templates.length; i++) { 413 const container = document.createElement('div'); 414 container.innerHTML = templates[i].innerHTML; 415 hyva.removeScripts(container); 416 templates[i].innerHTML = container.innerHTML; 417 } 418 } 419 420 hyva.activateScripts = (contentNode) => { 421 // Create new array from HTMLCollection to avoid mutation of collection while manipulating the DOM. 422 const scripts = Array.from(contentNode.getElementsByTagName('script')); 423 424 // Iterate over all script tags to duplicate+inject each into the head 425 for (const original of scripts) { 426 const script = document.createElement('script'); 427 original.type && (script.type = original.type); 428 script.innerHTML = original.innerHTML; 429 430 // Remove the original (non-executing) script from the contentNode 431 original.parentNode.removeChild(original) 432 433 // Add script to head 434 document.head.appendChild(script); 435 } 436 437 return contentNode; 438 } 439 440 const replace = {['+']: '-', ['/']: '_', ['=']: ','}; 441 hyva.getUenc = () => btoa(window.location.href).replace(/[+/=]/g, match => replace[match]); 442 443 let currentTrap; 444 445 const focusableElements = (rootElement) => { 446 const selector = 'button, [href], input, select, textarea, details, [tabindex]:not([tabindex="-1"]'; 447 return Array.from(rootElement.querySelectorAll(selector)) 448 .filter(el => { 449 return el.style.display !== 'none' 450 && !el.disabled 451 && el.tabIndex !== -1 452 && (el.offsetWidth || el.offsetHeight || el.getClientRects().length) 453 }) 454 } 455 456 const focusTrap = (e) => { 457 const isTabPressed = e.key === 'Tab' || e.keyCode === 9; 458 if (!isTabPressed) return; 459 460 const focusable = focusableElements(currentTrap) 461 const firstFocusableElement = focusable[0] 462 const lastFocusableElement = focusable[focusable.length - 1] 463 464 e.shiftKey 465 ? document.activeElement === firstFocusableElement && (lastFocusableElement.focus(), e.preventDefault()) 466 : document.activeElement === lastFocusableElement && (firstFocusableElement.focus(), e.preventDefault()) 467 }; 468 469 hyva.releaseFocus = (rootElement) => { 470 if (currentTrap && (!rootElement || rootElement === currentTrap)) { 471 currentTrap.removeEventListener('keydown', focusTrap) 472 currentTrap = null 473 } 474 } 475 hyva.trapFocus = (rootElement) => { 476 if (!rootElement) return; 477 hyva.releaseFocus() 478 currentTrap = rootElement 479 rootElement.addEventListener('keydown', focusTrap) 480 const firstElement = focusableElements(rootElement)[0] 481 firstElement && firstElement.focus() 482 } 483 484 hyva.safeParseNumber = (rawValue) => { 485 const number = rawValue ? parseFloat(rawValue) : null; 486 487 return Array.isArray(number) || isNaN(number) ? rawValue : number; 488 } 489 490 const toCamelCase = s => s.split('_').map(word => word.charAt(0).toUpperCase() + word.slice(1)).join(''); 491 hyva.createBooleanObject = (name, value = false, additionalMethods = {}) => { 492 493 const camelCase = toCamelCase(name);
494 const key = '__hyva_bool_' + name 495 496 return new Proxy(Object.assign( 497 additionalMethods, 498 { 499 [key]: !!value, 500 [name]() {return !!this[key]}, 501 ['!' + name]() {return !this[key]}, // @deprecated This does not work with non-CSP Alpine 502 ['not' + camelCase]() {return !this[key]}, 503 ['toggle' + camelCase]() {this[key] = !this[key]}, 504 [`set${camelCase}True`]() {this[key] = true}, 505 [`set${camelCase}False`]() {this[key] = false}, 506 } 507 ), { 508 set(target, prop, value) { 509 return prop === name 510 ? (target[key] = !!value) 511 : Reflect.set(...arguments); 512 } 513 }) 514 } 515 516 hyva.alpineInitialized = (fn) => window.addEventListener('alpine:initialized', fn, {once: true}) 517 window.addEventListener('alpine:init', () => Alpine.data('{}', () => ({})), {once: true}); 518 window.addEventListener('user-allowed-save-cookie', () => internalCookie.saveTempStorageCookies()) 519 520 }( window.hyva = window.hyva || {} )); 521</script>
vendor: 1 bytes, line 521
521
522<script> 523 if (!window.IntersectionObserver) { 524 window.IntersectionObserver = function (callback) { 525 this.observe = el => el && callback(this.takeRecords()); 526 this.takeRecords = () => [{isIntersecting: true, intersectionRatio: 1}]; 527 this.disconnect = () => {}; 528 this.unobserve = () => {}; 529 } 530 } 531</script>
531 532
533<script> 534 const setTransitionNameBetweenGallery = async (url, promise) => { 535 if (window.matchMedia('(prefers-reduced-motion)').matches) return; 536 537 const productGallery = document.getElementById('gallery'); 538 const productListItem = document.querySelector(`.product-item-photo[href="${url}"]`); 539 const targetElement = productListItem 540 ? productListItem 541 : (productGallery ? productGallery.querySelector('img').parentNode : null); 542 543 if (targetElement) { 544 targetElement.style.viewTransitionName = 'view-transition-to-gallery'; 545 await promise; 546 targetElement.style.viewTransitionName = ''; 547 } 548 }; 549 550 window.addEventListener('pageswap', async (e) => { 551 if (!e.viewTransition) return; 552 const targetUrl = new URL(e.activation.entry.url); 553 setTransitionNameBetweenGallery(targetUrl.href, e.viewTransition.finished); 554 }); 555 556 window.addEventListener('pagereveal', async (e) => { 557 if (!e.viewTransition || !navigation.activation.from) return; 558 const fromUrl = new URL(navigation.activation.from.url); 559 // const entryURL = new URL(navigation.activation.entry.url); 560 setTransitionNameBetweenGallery(fromUrl.href, e.viewTransition.ready); 561 }); 562</script>
562 563 564<style> 565 @view-transition { 566 navigation: auto; 567 } 568</style> 569<!--Open Graph Meta tags by Mageplaza--> 570<meta property="og:url" content="https://www.trefl.com/blog/post/madre-zabawki-pomysly-na-wartosciowa-zabawe-po-szkole" /> 571<meta property="og:title" content="MÄ dre zabawki â pomysÅy na wartoÅciowÄ zabawÄ po szkole" /> 572<meta property="og:image" content="https://www.trefl.com/media/mageplaza/blog/post/m/a/madre-zabawki-rozwijaja-umiejetnosci-dziecka.jpg" /> 573<meta property="og:description" content="Szukasz mÄ drej zabawki dla dziecka? Poznaj gry, puzzle, klocki i pojazdy, które ÅÄ czÄ dobrÄ zabawÄ z odkrywaniem, kreatywnoÅciÄ i rozwojem." /> 574<!--End Open Graph Meta tags by Mageplaza--> 575</head> 576<body id="html-body" class="mpblog-post-view page-layout-1column"> 577<a class="action skip sr-only focus:not-sr-only focus:absolute focus:z-40 btn btn-primary 578contentarea" 579 href="#contentarea"> 580 Przejdź do treÅci</a> 581 582 583 584<div id="notice-promo-block" style="background-color:#360C68;color:#ffffff;" class="w-full" aria-label="Komunikat"> 585 <div class="container relative py-3 text-center leading-tight"> 586 <a href="https://www.trefl.com/gry"> <span class="text-xs">ââ <b style="color: #FFFE91">Wielkie ÅwiÄto planszówek!</b> <b>DzieÅ Gier Planszowych trwa u nas dÅużej - z kodem</b> <b style="color: #FFFE91">GRY25</b> <b>do 11.10 wybrane</b> <b style="color: #FFFE91">gry kupisz 25% taniej!</b> ââ 587</span> 588 </a> </div> 589</div>
vendor: 68 bytes, lines 589-590
589 590<noscript><iframe src="https://www.googletagmanager.com/ns.html?id=
590GTM-PC39D52
vendor: 83 bytes, line 590
590" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
591<input name="form_key" type="hidden" value="tE92z8vSIBSZLmG6" /> 592 <noscript> 593 <section class="message global noscript border-b-2 border-blue-500 bg-blue-50 shadow-none m-0 px-0 rounded-none font-normal"> 594 <div class="container text-center"> 595 <p> 596 <strong>WyglÄ da na to, że JavaScript jest wyÅÄ czony w twojej przeglÄ darce.</strong> 597 <span> 598 By w peÅni cieszyÄ siÄ naszÄ stronÄ , upewnij siÄ, że wÅÄ czyÅeÅ JavaScript w swojej przeglÄ darce. </span> 599 </p> 600 </div> 601 </section> 602 </noscript> 603 604
605<script> 606 document.body.addEventListener('touchstart', () => {}, {passive: true}) 607</script>
vendor: 1 bytes, line 607
607
608<script nonce="NnI0ZHB5ejN3anFyNjY4MDRrbGQ5bzgwMWF0Mmx0anI="> 609 function yireoGoogleTagManager2Pusher(eventData, message) { 610 window.YIREO_GOOGLETAGMANAGER2_PAST_EVENTS = window.YIREO_GOOGLETAGMANAGER2_PAST_EVENTS || []; 611 612 const copyEventData = Object.assign({}, eventData); 613 let metaData = {}; 614 if (copyEventData.meta) { 615 metaData = copyEventData.meta; 616 delete copyEventData.meta; 617 } 618 619 const eventHash = btoa(encodeURIComponent(JSON.stringify(copyEventData))); 620 if (window.YIREO_GOOGLETAGMANAGER2_PAST_EVENTS.includes(eventHash)) { 621 yireoGoogleTagManager2Logger('Warning: Event already triggered', eventData); 622 return; 623 } 624 625 if (metaData && metaData.allowed_pages && metaData.allowed_pages.length > 0 626 && false === metaData.allowed_pages.some(page => window.location.pathname.includes(page))) { 627 yireoGoogleTagManager2Logger('Warning: Skipping event, not in allowed pages', window.location.pathname, eventData); 628 return; 629 } 630 631 if (!message) { 632 message = 'push (unknown) [unknown]'; 633 } 634 635 yireoGoogleTagManager2Logger(message, eventData); 636 window.dataLayer = window.dataLayer || []; 637 638 if (eventData.ecommerce) { 639 window.dataLayer.push({ecommerce: null}); 640 } 641 642 window.dataLayer.push(eventData); 643 window.YIREO_GOOGLETAGMANAGER2_PAST_EVENTS.push(eventHash); 644 } 645</script>
vendor: 1 bytes, line 645
645
646<script nonce="NnI0ZHB5ejN3anFyNjY4MDRrbGQ5bzgwMWF0Mmx0anI="> 647 function yireoGoogleTagManager2Logger(...args) { 648 const debug = window.YIREO_GOOGLETAGMANAGER2_DEBUG || false; 649 if (false === debug) { 650 return; 651 } 652 653 var color = 'gray'; 654 if (args[0].toLowerCase().startsWith('push')) { 655 color = 'green'; 656 } 657 658 if (args[0].toLowerCase().startsWith('warning')) { 659 color = 'orange'; 660 } 661 662 var css = 'color:white; background-color:' + color + '; padding:1px;' 663 console.log('%cYireo_GoogleTagManager2', css, ...args); 664 } 665</script>
665 666
667<script> 668 'use strict'; 669 (function(hyva) { 670 const formValidationRules = { 671 required(value, options, field, context) { 672 const el = field.element.type === 'hidden' ? createTextInputFrom(field.element) : field.element, 673 msg = 'To\u0020jest\u0020wymagane\u0020pole.'; 674 675 if (el.type === 'radio' || el.type === 'checkbox') { 676 return (value === undefined || value.length === 0) ? msg : true; 677 } 678 679 el.setAttribute('required', ''); 680 el.checkValidity(); 681 682 return el.validity.valueMissing ? msg : true; 683 }, 684 maxlength(value, options, field, context) { 685 const n = Number(options) 686 if (value.length > n) { 687 return n === 1 688 ? hyva.strf('Please\u0020enter\u0020no\u0020more\u0020than\u00201\u0020character.') 689 : hyva.strf('Please\u0020enter\u0020no\u0020more\u0020than\u0020\u00250\u0020characters.', options) 690 } 691 return true; 692 }, 693 minlength(value, options, field, context) { 694 const n = Number(options) 695 if (value.length > 0 && value.length < n) { 696 return n === 1 697 ? hyva.strf('Minimalna\u0020ilo\u015B\u0107\u0020znak\u00F3w\u0020to\u00201.') 698 : hyva.strf('Minimalna\u0020ilo\u015B\u0107\u0020znak\u00F3w\u0020to\u0020\u00250.', options) 699 } 700 return true; 701 }, 702 max(value, options, field, context) { 703 field.element.setAttribute('max', options); 704 field.element.checkValidity(); 705 if (field.element.validity.rangeOverflow) { 706 return hyva.strf('Please\u0020enter\u0020a\u0020value\u0020less\u0020than\u0020or\u0020equal\u0020to\u0020\u0022\u00250\u0022.', options); 707 } 708 return true; 709 }, 710 min(value, options, field, context) { 711 field.element.setAttribute('min', options); 712 field.element.checkValidity(); 713 if (field.element.validity.rangeUnderflow) { 714 return hyva.strf('Please\u0020enter\u0020a\u0020value\u0020greater\u0020than\u0020or\u0020equal\u0020to\u0020\u0022\u00250\u0022.', options); 715 } 716 return true; 717 }, 718 step(value, options, field, context) { 719 field.element.setAttribute('step', options); 720 field.element.checkValidity(); 721 if (field.element.validity.stepMismatch) { 722 const val = Number(value); 723 const step = Number(options); 724 const msg = 'Please\u0020enter\u0020a\u0020valid\u0020value.\u0020The\u0020two\u0020nearest\u0020valid\u0020values\u0020are\u0020\u0022\u00250\u0022\u0020and\u0020\u0022\u00251\u0022.'; 725 return hyva.strf(msg, Math.floor(val / step) * step, Math.ceil(val / step) * step); 726 } 727 return true; 728 }, 729 pattern(value, options, field, context) { 730 field.element.setAttribute('pattern', options); 731 field.element.checkValidity(); 732 if (field.element.validity.patternMismatch) { 733 return field.element.title 734 ? hyva.strf('Please\u0020match\u0020the\u0020requested\u0020format\u003A\u0020\u00250.', field.element.title) 735 : 'Please\u0020match\u0020the\u0020requested\u0020format.' 736 } 737 return true; 738 }, 739 email(value, options, field, context) { 740 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; 741 if (value.length > 0 && !rule.test(value)) { 742 return 'Prosimy\u0020wpisa\u0107\u0020poprawny\u0020adres\u0020e\u002Dmail'; 743 } 744 return true; 745 }, 746 password(value, options, field, context) { 747 const rule = /^(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9])(?=.*?[#?!@$%^&*-]).{8,}$/; 748 if (value.length > 0 && !rule.test(value)) { 749 return 'Please\u0020provide\u0020at\u0020least\u0020one\u0020upper\u0020case,\u0020one\u0020lower\u0020case,\u0020one\u0020digit\u0020and\u0020one\u0020special\u0020character\u0020\u0028\u0023\u003F\u0021\u0040\u0024\u0025\u005E\u0026\u002A\u002D\u0029'; 750 } 751 return true; 752 }, 753 equalTo(value, options, field, context) { 754 const dependencyField = context.fields[options].element; 755 if (value !== dependencyField.value) { 756 const dependencyFieldName = 757 dependencyField.label || 758 dependencyField.title || 759 (dependencyField.labels && dependencyField.labels[0] && dependencyField.labels[0].innerText) || 760 dependencyField.name; 761 return hyva.strf('Warto\u015B\u0107\u0020tego\u0020pola\u0020musi\u0020by\u0107\u0020taka\u0020sama\u0020jak\u0020\u0022\u00250\u0022.', dependencyFieldName); 762 } 763 return true; 764 } 765 }; 766 767 function raceSome(promises, pred) { 768 return new Promise((resolve, reject) => { 769 770 if (promises.length === 0) { 771 return resolve(); 772 } 773 774 let settled = false, nDone = 0; 775 776 const resolveIf = v => { 777 if (!settled && (pred(v) || ++nDone === promises.length)) { 778 settled = true; 779 resolve(v); 780 } 781 return v; 782 } 783 784 promises.map(promise => {
785 promise.then(resolveIf).catch(reason => { 786 settled = true; 787 reject(reason) 788 }); 789 return promise; 790 }); 791 }); 792 } 793 794 const INPUT_ATTRIBUTE_RULES = {min: 'min', max: 'max', required: 'required', minlength: 'minlength', maxlength: 'maxlength', step: 'step', pattern: 'pattern'} 795 const INPUT_TYPE_RULES = {email: 'email'} 796 797 function getRules(element) { 798 let rules = {}; 799 Object.keys(INPUT_ATTRIBUTE_RULES).forEach(attrName => { 800 if (element.hasAttribute(attrName)) { 801 rules[INPUT_ATTRIBUTE_RULES[attrName]] = element.getAttribute(attrName); 802 } 803 }) 804 if (INPUT_TYPE_RULES[element.type]) { 805 rules[INPUT_TYPE_RULES[element.type]] = true; 806 } 807 808 if (element.dataset.validate) { 809 try { 810 Object.assign(rules, JSON.parse(element.dataset.validate)); 811 } catch (error) { 812 console.error('Validator error. Cannot parse data-validate attribute of element:\n', element); 813 } 814 } 815 816 return rules; 817 } 818 819 function isInvalidRuleResult(ruleState) { 820 return typeof ruleState === 'string' || !ruleState || (ruleState.type && ruleState.content); 821 } 822 823 async function runValidateFn(rule, options, value, field) { 824 return formValidationRules[rule](value, options, field, this); 825 } 826 827 function generateId() { 828 let id; 829 do { 830 id = `${this.idPrefix}-${++this.idSeq}`; 831 } while (document.getElementById(id)); 832 return id; 833 } 834 835 function isVisible(element) { 836 const el = element.type !== 'hidden' ? element : (element.parentElement || {}); 837 return !!(el.offsetWidth || el.offsetHeight || el.getClientRects().length) 838 } 839 840 function elementWillValidate(element) { 841 return (element.willValidate || element.type === 'hidden') 842 && element.tagName !== 'BUTTON' 843 && element.disabled === false 844 && !(element.tagName === 'INPUT' && element.type === 'submit') 845 && (element.hasAttribute('data-validate-hidden') || isVisible(element)) 846 } 847 848 function createMessageContainer(el, fieldWrapperClassName) { 849 if (! el.parentElement) { 850 return; 851 } 852 const refocus = document.activeElement === el; 853 const wrapper = document.createElement('div'); 854 wrapper.classList.add.apply(wrapper.classList, fieldWrapperClassName.split(' ')); 855 el.parentElement.insertBefore(wrapper, el); 856 wrapper.appendChild(el); 857 refocus && document.activeElement !== el && el.focus(); 858 return wrapper; 859 } 860 861 function containerNotFound(selector, el) { 862 const msg = `Cannot find message container element ${selector} of ${el.name}`; 863 console.error(msg, el); 864 throw msg; 865 } 866 867 function createTextInputFrom(el) { 868 const text = document.createElement('INPUT'); 869 text.type = 'text'; 870 text.value = el.value; 871 return text; 872 } 873 874 function classNamesToSelector(classNames) { 875 return classNames.split(' ') 876 .filter(className => className.length > 0) 877 .map(className => `.${className}`) 878 .join('') 879 } 880 881 function hasMessagesWrapper(field, messagesWrapperClassName) { 882 return this.getMessageContainer(field).querySelector(classNamesToSelector(messagesWrapperClassName)); 883 } 884 885 function getMessagesWrapper(field, messagesWrapperClassName) { 886 if (hasMessagesWrapper.call(this, field, messagesWrapperClassName)) { 887 return this.getMessageContainer(field).querySelector(classNamesToSelector(messagesWrapperClassName)); 888 } 889 890 const msgWrapper = document.createElement('ul'); 891 const msgId = generateId.call(this); 892 msgWrapper.id = msgId; 893 field.element.setAttribute('aria-errormessage', msgId); 894 field.element.setAttribute('aria-describedby', msgId); 895 msgWrapper.classList.add.apply(msgWrapper.classList, messagesWrapperClassName.split(' ')); 896 if (field.validateOnChange) { 897 msgWrapper.setAttribute('aria-live', 'polite'); 898 } 899 this.getMessageContainer(field).appendChild(msgWrapper); 900 901 return msgWrapper; 902 } 903 904 function getCheckedValues(field) { 905 const name = field.element.name.replace(/([\\"])/g, '\\$1'); 906 const elements = field.element.form.querySelectorAll('input[name="' + name + '"]:checked'); 907 return Array.from(elements).map(el => el.value); 908 } 909 910 function escapeHtml(s) { 911 const div = document.createElement('div') 912 div.innerText = s; 913 return div.innerHTML; 914 } 915 916 917 function formValidation(form, options = {}) { 918 const formElement = form || this.$el; 919 920 if (formElement.dataset && formElement.dataset.options) { 921 try { 922 options = Object.assign(options, JSON.parse(formElement.dataset.options || '{}')); 923 } catch (e) { 924 throw new Error('Cannot read the form options from the data-options attribute: not val
924id JSON'); 925 } 926 } 927 928 // Disable browser default validation 929 if (formElement.tagName === 'FORM') { 930 formElement.setAttribute('novalidate', ''); 931 } else { 932 console.error('formValidation can be initialized only on FORM element', formElement); 933 return; 934 } 935 936 options = Object.assign({ 937 fieldWrapperClassName: 'field field-reserved', 938 messagesWrapperClassName: 'messages', 939 validClassName: 'field-success', 940 invalidClassName: 'field-error', 941 pageMessagesWrapperSelector: null, 942 scrollToFirstError: true, 943 }, options || {}); 944 945 return { 946 state: { 947 valid: false, 948 }, 949 fields: {}, 950 idSeq: 0, 951 idPrefix: formElement.id || 'vld-msg', 952 setupFields(elements) { 953 this.fields = {}; 954 Array.from(elements).forEach(element => { 955 if (elementWillValidate(element)) { 956 this.setupField(element); 957 } 958 }); 959 }, 960 setupField(element) { 961 if (! element) return; 962 const onChange = !!element.dataset.onChange; 963 if (elementWillValidate(element)) { 964 const rules = getRules(element); 965 if (Object.keys(rules).length > 0) { 966 if (this.fields[element.name]) { 967 Object.assign(this.fields[element.name].rules, rules); 968 } else { 969 this.fields[element.name] = { 970 element, 971 rules: rules, 972 validateOnChange: onChange, 973 state: { 974 valid: null, 975 rules: {} 976 } 977 } 978 } 979 } 980 } else { 981 console.error('Element will not validate', element); 982 } 983 }, 984 onSubmit(event) { 985 if (event.target.tagName === 'FORM') { 986 event.preventDefault(); 987 988 this.validate() 989 .then(() => event.target.submit()) 990 .catch(invalidElements => {}); 991 } 992 }, 993 onChange(event) { 994 event.target.dataset.onChange = 'true'; 995 if (!Object.keys(this.fields).length) { 996 this.setupFields(formElement.elements); 997 } 998 if (!Object.keys(this.fields).includes(event.target.name)) { 999 this.setupField(event.target); 1000 } 1001 const field = this.fields[event.target.name]; 1002 1003 this.validateField(field); 1004 field && field.element.removeAttribute('data-on-change') 1005 }, 1006 validateSafe() { 1007 return new Promise(resolve => this.validate().then(() => resolve(true)).catch(() => {})) 1008 }, 1009 validate() { 1010 if (!Object.keys(this.fields).length || !Object.keys(this.fields).length !== formElement.elements.length) { 1011 this.setupFields(formElement.elements); 1012 } 1013 return new Promise(async (resolve, reject) => { 1014 if (formElement.elements) { 1015 await raceSome(this.validateFields(), result => result !== true) 1016 const invalidFields = Object.values(this.fields).filter(field => !field.state.valid); 1017 this.state.valid = invalidFields.length === 0; 1018 if (this.state.valid) { 1019 resolve(); 1020 } else { 1021 if (options.scrollToFirstError && invalidFields.length > 0) { 1022 invalidFields[0].element.focus() 1023 invalidFields[0].element.select && invalidFields[0].element.select(); 1024 } 1025 reject(invalidFields.map(field => field.element)); 1026 } 1027 } 1028 }); 1029 }, 1030 validateFields() { 1031 const fields = Object.values(this.fields); 1032 1033 fields.forEach(field => { 1034 this.getMessageContainer(field).classList.remove(options.validClassName, options.invalidClassName) 1035 }); 1036 return fields.map(field => this.validateField(field)) 1037 }, 1038 validateField(field) { 1039 if (! field || ! elementWillValidate(field.element)) { 1040 return new Promise(resolve => resolve(true)) 1041 } 1042 1043 let value; 1044 if (field.element.type === 'checkbox') { 1045 value = getCheckedValues(field); 1046 } else if (field.element.type === 'radio') { 1047 value = getCheckedValues(field)[0] || undefined; 1048 } else if (field.element.tagName === 'SELECT' && field.element.multiple) { 1049 value = Array.from(field.element.selectedOptions).map(opt => opt.value); 1050 } else { 1051 value = field.element.value; 1052 } 1053 1054 const rules = field.rules || {}; 1055 1056 field.state.valid = true;
1057 this.showFieldState(field); 1058 1059 1060 const fieldValidations = Object.keys(rules).filter(rule => formValidationRules[rule]).map(async rule => { 1061 return runValidateFn.call(this, rule, rules[rule], value, field).then(result => { 1062 field.state.rules[rule] = result; 1063 return result; 1064 }) 1065 }); 1066 1067 return new Promise(resolve => { 1068 Promise.all(fieldValidations).then(results => { 1069 field.state.valid = !elementWillValidate(field.element) || rules.length === 0 || !results.some(isInvalidRuleResult) 1070 this.showFieldState(field); 1071 resolve(field.state.valid); 1072 }) 1073 }); 1074 }, 1075 getMessagesByField(field) { 1076 const messages = []; 1077 const invalidRules = Object.keys(field.state.rules).filter(rule => isInvalidRuleResult(field.state.rules[rule])); 1078 1079 field.rules && Object.keys(field.rules).forEach((rule) => { 1080 if (invalidRules.includes(rule)) { 1081 const customMessage = field.element.getAttribute('data-msg-' + rule); 1082 const message = customMessage ? customMessage : field.state.rules[rule]; 1083 const ruleOptions = JSON.parse(JSON.stringify(field.rules[rule])); 1084 1085 if (typeof message === 'undefined' || message === null || (typeof message !== 'string' && ! message.type)) { 1086 messages.push(hyva.strf('Validation rule "%0" failed.', rule)); 1087 } else if (Array.isArray(ruleOptions)) { 1088 ruleOptions.unshift(message.type ? message.content : message); 1089 const content = hyva.strf.apply(null, ruleOptions); 1090 messages.push(message.type ? {type: message.type, content} : content); 1091 } else { 1092 const content = hyva.strf(message.type ? message.content : message, ruleOptions) 1093 messages.push(message.type ? {type: message.type, content} : content); 1094 } 1095 } 1096 }); 1097 return messages; 1098 }, 1099 /** @deprecated */ 1100 getFieldWrapper(field) { 1101 return this.getMessageContainer(field) 1102 }, 1103 getMessageContainer(field) { 1104 let container; 1105 const pageSelector = field.element.getAttribute('data-validation-container') || options.pageMessagesContainerSelector; 1106 if (pageSelector) { 1107 container = document.querySelector(pageSelector) 1108 || containerNotFound(pageSelector, field.element) 1109 } else { 1110 const containerSelector = classNamesToSelector(options.fieldWrapperClassName); 1111 container = field.element.closest(containerSelector) 1112 || createMessageContainer(field.element, options.fieldWrapperClassName) 1113 || containerNotFound(containerSelector, field.element); 1114 } 1115 1116 return container; 1117 }, 1118 showFieldState(field) { 1119 const container = this.getMessageContainer(field), 1120 hasErrorMessages = hasMessagesWrapper.call(this, field, options.messagesWrapperClassName), 1121 messages = this.getMessagesByField(field).map(m => { 1122 return m.type !== 'html' ? escapeHtml(m.type ? m.content : m) : m.content; 1123 }); 1124 container.classList.toggle(options.validClassName, field.state.valid && ! hasErrorMessages); 1125 container.classList.toggle(options.invalidClassName, !field.state.valid || hasErrorMessages); 1126 this.createHtmlErrorMessage(field, messages); 1127 1128 if (field.state.valid) { 1129 field.element.removeAttribute('aria-invalid'); 1130 } else { 1131 field.element.setAttribute('aria-invalid', 'true'); 1132 if (! document.activeElement) { 1133 field.element.focus(); 1134 } 1135 } 1136 }, 1137 removeMessages(field, messagesClass) { 1138 if (! hasMessagesWrapper.call(this, field, messagesClass || options.messagesWrapperClassName)) { 1139 return; 1140 } 1141 1142 const msgWrapper = getMessagesWrapper.call(this, field, messagesClass || options.messagesWrapperClassName); 1143 const messages = msgWrapper.querySelectorAll(`[data-msg-field='${field.element.name}']`);
1144 Array.from(messages).forEach(msg => msg.remove()); 1145 if (msgWrapper && msgWrapper.childElementCount === 0) { 1146 field.element.removeAttribute('aria-errormessage'); 1147 field.element.removeAttribute('aria-describedby'); 1148 msgWrapper.remove(); 1149 } 1150 }, 1151 createErrorMessage(field, messages) { 1152 const htmlMessages = (Array.isArray(messages) ? messages : [messages]).map(escapeHtml) 1153 this.createHtmlErrorMessage(field, htmlMessages); 1154 }, 1155 createHtmlErrorMessage(field, messages) { 1156 this.removeMessages(field, options.messagesWrapperClassName); 1157 field.element.removeAttribute('aria-errormessage'); 1158 field.element.removeAttribute('aria-describedby'); 1159 1160 if (!field.state.valid) { 1161 const msgWrapper = this.addHtmlMessages(field, options.messagesWrapperClassName, messages); 1162 field.element.setAttribute('aria-errormessage', msgWrapper.id); 1163 field.element.setAttribute('aria-describedby', msgWrapper.id); 1164 } 1165 }, 1166 /** @deprecated */ 1167 createMessage(field, message) { 1168 return this.addMessages(field, options.messagesWrapperClassName, message); 1169 }, 1170 addMessages(field, messagesClass, messages) { 1171 const htmlMessages = (Array.isArray(messages) ? messages : [messages]).map(escapeHtml) 1172 return this.addHtmlMessages(field, messagesClass, htmlMessages); 1173 }, 1174 addHtmlMessages(field, messagesClass, htmlMessages) { 1175 const msgWrapper = getMessagesWrapper.call(this, field, messagesClass); 1176 1177 (Array.isArray(htmlMessages) ? htmlMessages : [htmlMessages]).forEach((htmlMessage) => { 1178 const li = document.createElement('li'); 1179 li.innerHTML = htmlMessage; 1180 li.setAttribute('data-msg-field', field.element.name); 1181 msgWrapper.appendChild(li); 1182 }); 1183 1184 return msgWrapper; 1185 }, 1186 setField(name, value) { 1187 this.fields[name].element.value = value; 1188 this.fields[name].element.dispatchEvent((new Event('input'))); 1189 this.validateField(this.fields[name]); 1190 } 1191 } 1192 } 1193 1194 hyva.formValidation = formValidation; 1195 hyva.formValidation.rules = formValidationRules; 1196 hyva.formValidation.setInputAttributeRuleName = (attrName, ruleName) => INPUT_ATTRIBUTE_RULES[attrName] = ruleName || attrName; 1197 hyva.formValidation.setInputTypeRuleName = (typeName, ruleName) => INPUT_TYPE_RULES[typeName] = ruleName || typeName; 1198 hyva.formValidation.addRule = (name, validator) => formValidationRules[name] = validator; 1199 }(window.hyva = window.hyva || {})); 1200 1201 window.addEventListener('alpine:init', () => { 1202 Alpine.data('hyva.formValidation', hyva.formValidation); 1203 Alpine.data('hyva.formValidation($el)', hyva.formValidation); 1204 }, {once: true}); 1205</script>
1205 1206<div class="page-wrapper"><header class="page-header"> 1207 1208<div class="bg-header-top py-3 md:py-5"> 1209 <div class="container header-container px-3 lg:px-6 flex justify-between items-center"> 1210 <ul class="social-menu"> 1211 <li> 1212 <a href="https://www.facebook.com/Trefl.toys/" 1213 title="Przejdź na Trefl Facebook" 1214 target="_blank" class="text-header-top" 1215 > 1216 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 14 14" fill="none" width="24" height="24" aria-hidden="true"><path fill-rule="evenodd" clip-rule="evenodd" d="M4 1.5A2.5 2.5 0 0 0 1.5 4v6.003A2.497 2.497 0 0 0 3.997 12.5h6.006a2.497 2.497 0 0 0 2.497-2.497V3.997A2.497 2.497 0 0 0 10.003 1.5H4Zm0-1A3.5 3.5 0 0 0 .5 4v6.003A3.497 3.497 0 0 0 3.997 13.5h6.006a3.497 3.497 0 0 0 3.497-3.497V3.997A3.498 3.498 0 0 0 10.003.5H4Z" fill="currentColor"/><path fill-rule="evenodd" clip-rule="evenodd" d="M5.9 7.6a.5.5 0 0 1 .5-.5H10a.5.5 0 0 1 0 1H6.4a.5.5 0 0 1-.5-.5Z" fill="currentColor"/><path fill-rule="evenodd" clip-rule="evenodd" d="M7.765 4.765A2.27 2.27 0 0 1 9.37 4.1H10a.5.5 0 0 1 0 1h-.63A1.27 1.27 0 0 0 8.1 6.37V13a.5.5 0 0 1-1 0V6.37c0-.602.24-1.18.665-1.605Z" fill="currentColor"/></svg> 1217 </a> 1218 </li> 1219 <li> 1220 <a href="https://pl.linkedin.com/company/trefl-s-a-" 1221 title="Przejdź na Trefl LinkedIn" 1222 target="_blank" class="text-header-top" 1223 > 1224 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 14 14" fill="none" width="24" height="24" aria-hidden="true"><path fill-rule="evenodd" clip-rule="evenodd" d="M4 1.5A2.5 2.5 0 0 0 1.5 4v6.003A2.497 2.497 0 0 0 3.997 12.5h6.006a2.497 2.497 0 0 0 2.497-2.497V3.997A2.497 2.497 0 0 0 10.003 1.5H4Zm0-1A3.5 3.5 0 0 0 .5 4v6.003A3.497 3.497 0 0 0 3.997 13.5h6.006a3.497 3.497 0 0 0 3.497-3.497V3.997A3.498 3.498 0 0 0 10.003.5H4Z" fill="currentColor"/><path fill-rule="evenodd" clip-rule="evenodd" d="M4.413 5.9a.5.5 0 0 1 .5.5V10a.5.5 0 1 1-1 0V6.4a.5.5 0 0 1 .5-.5ZM8.313 6.9a1 1 0 0 0-1 1V10a.5.5 0 1 1-1 0V7.9a2 2 0 1 1 4 0V10a.5.5 0 1 1-1 0V7.9a1 1 0 0 0-1-1ZM4.41 3.725a.65.65 0 1 1 .006 1.3.65.65 0 0 1-.006-1.3Z" fill="currentColor"/></svg> 1225 </a> 1226 </li> 1227 <li> 1228 <a href="mailto:[email protected]" 1229 title="WyÅlij e-mail na [email protected]" 1230 target="_blank" class="text-header-top" 1231 > 1232 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 14 12" fill="none" width="24" height="24" aria-hidden="true"><path fill-rule="evenodd" clip-rule="evenodd" d="M1.545 10.183h10.91c.056 0 .1-.047.1-.104V1.922a.103.103 0 0 0-.1-.105H1.544c-.055 0-.1.047-.1.105v8.157a.103.103 0 0 0 .062.096.099.099 0 0 0 .038.008Zm0 1.15h10.91c.669 0 1.212-.561 1.212-1.254V1.922c0-.693-.543-1.255-1.213-1.255H1.545C.876.667.333 1.229.333 1.922v8.157a1.293 1.293 0 0 0 .355.887 1.176 1.176 0 0 0 .857.367Z" fill="currentColor"/><path d="m1.08 2.05 5.129 3.669a1.333 1.333 0 0 0 1.55.001l5.158-3.68" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/></svg> 1233 </a> 1234 </li> 1235 </ul> <ul class="header-top-links-menu list-none text-xs md:text-header-top gap-2 flex flex-wrap items-center" 1236 role="menubar" 1237 aria-orientation="horizontal" 1238> 1239 <li class="relative flex-wrap lg:flex-nowrap header-top-links-menu__item" 1240 x-data="topMenu_575()" 1241 role="menuitem" 1242 @keydown.escape="toggleSubmenu('575', false, $event)" 1243 @pointerenter="toggleSubmenu('575', true, $event)" 1244 @pointerleave="toggleSubmenu('575', false, $event)" 1245 > 1246 <button aria-haspopup="menu" 1247 aria-controls="top-links-5756abd94b83c75b" 1248 id="top-links-575" 1249 class="flex items-center gap-1" 1250 x-ref="button" 1251 @click.prevent.stop="toggleSubmenu('575', null, $event)" 1252 @keydown.space.prevent="toggleSubmenu('575', null, $event)" 1253 @keydown.enter.prevent="toggleSubmenu('575', null, $event)" 1254 aria-label="Otwórz menu Oferta B2B" 1255 :aria-pressed="openSubmenuId === '575'" 1256 :aria-expanded="openSubmenuId === '575'"> 1257 Oferta B2B <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" class="transition-transform" width="13" height="13" aria-hidden="true"> 1258 <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"/> 1259</svg> 1260 </button> 1261 <ul role="menubar" 1262 aria-orientation="vertical" 1263 aria-labelledby="top-links575" 1264 id="top-links5756abd94b83c75b" 1265 class="lg:absolute left-0 top-full bg-inherit list-none w-full lg:w-auto lg:bg-header-top flex-col p-2 -ml-2 pt-4 hidden" 1266 :class="openSubmenuId === '575' ? 'z-40' : ''" 1267 x-cloak 1268 > 1269 <li class="header-top-links-menu__item whitespace-nowrap" role="menuitem"> 1270 <a 1271 href="https://b2b.trefl.com/" 1272 data-menu="menu-576" class="__inner-link" > 1273 Platforma zamówieÅ hurtowych </a> 1274 1275 </li> 1276 <li class="header-top-links-menu__item whitespace-nowrap" role="menuitem"> 1277 <a 1278 href="https://factory.trefl.com/" 1279 data-menu="menu-577" class="__inner-link" > 1280 Produkty na zlecenie - Trefl Factory </a> 1281 1282 </li> 1283 </ul> 1284 </li> 1285
1285<script> 1286 function topMenu_575() { 1287 return { 1288 openSubmenuId: null, 1289 toggleSubmenu(id, state, event) { 1290 const doNotFocus = event.type === 'pointerenter' || event.type === 'pointerleave'; 1291 1292 if (state === true) { 1293 this.openSubmenuId = id; 1294 } else if (state === false) { 1295 this.openSubmenuId = null; 1296 } else { 1297 this.openSubmenuId = this.openSubmenuId === id ? null : id; 1298 } 1299 1300 if (this.openSubmenuId) { 1301 const submenu = document.getElementById('top-links' + id); 1302 if (submenu && !doNotFocus) { 1303 const firstChild = submenu.querySelector('li a'); 1304 if (firstChild) { 1305 setTimeout(() => { 1306 firstChild.focus({ focusVisible: true }); 1307 }, 0); 1308 } 1309 } 1310 1311 this.$refs.button.setAttribute( 1312 'aria-label', 1313 'Zamknij menu Oferta B2B' 1314 ); 1315 } else { 1316 const button = document.getElementById('top-links-' + id); 1317 if (button && !doNotFocus) { 1318 button.focus({ focusVisible: true }); 1319 } 1320 1321 this.$refs.button.setAttribute( 1322 'aria-label', 1323 'Otwórz menu Oferta B2B' 1324 ); 1325 } 1326 }, 1327 }; 1328 } 1329 </script>
1329 1330 <li class="last:hidden" role="separator" aria-hidden="true"> | </li> 1331 <li class="header-top-links-menu__item" role="menuitem"> 1332<a 1333 href="https://www.trefl.com/grupa-trefl" 1334 class="__link" 1335 data-menu="menu-183"> 1336 Grupa Trefl</a> 1337</li> 1338 <li class="last:hidden" role="separator" aria-hidden="true"> | </li> 1339 <li class="relative flex-wrap lg:flex-nowrap header-top-links-menu__item" 1340 x-data="topMenu_400()" 1341 role="menuitem" 1342 @keydown.escape="toggleSubmenu('400', false, $event)" 1343 @pointerenter="toggleSubmenu('400', true, $event)" 1344 @pointerleave="toggleSubmenu('400', false, $event)" 1345 > 1346 <button aria-haspopup="menu" 1347 aria-controls="top-links-4006abd94b83c75b" 1348 id="top-links-400" 1349 class="flex items-center gap-1" 1350 x-ref="button" 1351 @click.prevent.stop="toggleSubmenu('400', null, $event)" 1352 @keydown.space.prevent="toggleSubmenu('400', null, $event)" 1353 @keydown.enter.prevent="toggleSubmenu('400', null, $event)" 1354 aria-label="Otwórz menu ESG" 1355 :aria-pressed="openSubmenuId === '400'" 1356 :aria-expanded="openSubmenuId === '400'"> 1357 ESG <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" class="transition-transform" width="13" height="13" aria-hidden="true"> 1358 <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"/> 1359</svg> 1360 </button> 1361 <ul role="menubar" 1362 aria-orientation="vertical" 1363 aria-labelledby="top-links400" 1364 id="top-links4006abd94b83c75b" 1365 class="lg:absolute left-0 top-full bg-inherit list-none w-full lg:w-auto lg:bg-header-top flex-col p-2 -ml-2 pt-4 hidden" 1366 :class="openSubmenuId === '400' ? 'z-40' : ''" 1367 x-cloak 1368 > 1369 <li class="header-top-links-menu__item whitespace-nowrap" role="menuitem"> 1370 <a 1371 href="https://www.trefl.com/zrownowazony-rozwoj" 1372 data-menu="menu-401" class="__inner-link" > 1373 Zrównoważony rozwój </a> 1374 1375 </li> 1376 <li class="header-top-links-menu__item whitespace-nowrap" role="menuitem"> 1377 <a 1378 href="https://www.trefl.com/zrownowazony-rozwoj/srodowisko" 1379 data-menu="menu-582" class="__inner-link" > 1380 Årodowisko </a> 1381 1382 </li> 1383 <li class="header-top-links-menu__item whitespace-nowrap" role="menuitem"> 1384 <a 1385 href="https://www.trefl.com/zielona-strona-trefla" 1386 data-menu="menu-402" class="__inner-link" > 1387 Zielona Strona Trefla </a> 1388 1389 </li> 1390 <li class="header-top-links-menu__item whitespace-nowrap" role="menuitem"> 1391 <a 1392 href="https://www.trefl.com/zrownowazony-rozwoj/dokumenty" 1393 data-menu="menu-403" class="__inner-link" > 1394 Dokumenty </a> 1395 1396 </li> 1397 </ul> 1398 </li> 1399
1399<script> 1400 function topMenu_400() { 1401 return { 1402 openSubmenuId: null, 1403 toggleSubmenu(id, state, event) { 1404 const doNotFocus = event.type === 'pointerenter' || event.type === 'pointerleave'; 1405 1406 if (state === true) { 1407 this.openSubmenuId = id; 1408 } else if (state === false) { 1409 this.openSubmenuId = null; 1410 } else { 1411 this.openSubmenuId = this.openSubmenuId === id ? null : id; 1412 } 1413 1414 if (this.openSubmenuId) { 1415 const submenu = document.getElementById('top-links' + id); 1416 if (submenu && !doNotFocus) { 1417 const firstChild = submenu.querySelector('li a'); 1418 if (firstChild) { 1419 setTimeout(() => { 1420 firstChild.focus({ focusVisible: true }); 1421 }, 0); 1422 } 1423 } 1424 1425 this.$refs.button.setAttribute( 1426 'aria-label', 1427 'Zamknij menu ESG' 1428 ); 1429 } else { 1430 const button = document.getElementById('top-links-' + id); 1431 if (button && !doNotFocus) { 1432 button.focus({ focusVisible: true }); 1433 } 1434 1435 this.$refs.button.setAttribute( 1436 'aria-label', 1437 'Otwórz menu ESG' 1438 ); 1439 } 1440 }, 1441 }; 1442 } 1443 </script>
1443 1444 <li class="last:hidden" role="separator" aria-hidden="true"> | </li> 1445 <li class="header-top-links-menu__item" role="menuitem"> 1446<a 1447 href="https://www.trefl.com/kariera" 1448 class="__link" 1449 data-menu="menu-615"> 1450 Kariera</a> 1451</li> 1452 <li class="last:hidden" role="separator" aria-hidden="true"> | </li> 1453 <li class="relative flex-wrap lg:flex-nowrap header-top-links-menu__item" 1454 x-data="topMenu_184()" 1455 role="menuitem" 1456 @keydown.escape="toggleSubmenu('184', false, $event)" 1457 @pointerenter="toggleSubmenu('184', true, $event)" 1458 @pointerleave="toggleSubmenu('184', false, $event)" 1459 > 1460 <button aria-haspopup="menu" 1461 aria-controls="top-links-1846abd94b83c75b" 1462 id="top-links-184" 1463 class="flex items-center gap-1" 1464 x-ref="button" 1465 @click.prevent.stop="toggleSubmenu('184', null, $event)" 1466 @keydown.space.prevent="toggleSubmenu('184', null, $event)" 1467 @keydown.enter.prevent="toggleSubmenu('184', null, $event)" 1468 aria-label="Otwórz menu eGames" 1469 :aria-pressed="openSubmenuId === '184'" 1470 :aria-expanded="openSubmenuId === '184'"> 1471 eGames <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" class="transition-transform" width="13" height="13" aria-hidden="true"> 1472 <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"/> 1473</svg> 1474 </button> 1475 <ul role="menubar" 1476 aria-orientation="vertical" 1477 aria-labelledby="top-links184" 1478 id="top-links1846abd94b83c75b" 1479 class="lg:absolute left-0 top-full bg-inherit list-none w-full lg:w-auto lg:bg-header-top flex-col p-2 -ml-2 pt-4 hidden" 1480 :class="openSubmenuId === '184' ? 'z-40' : ''" 1481 x-cloak 1482 > 1483 <li class="header-top-links-menu__item whitespace-nowrap" role="menuitem"> 1484 <a 1485 href="https://www.roblox.com/pl/games/86253893074445/Treflandia-Wielka-Przygoda-Pomagaj-zwierz-tom" 1486 data-menu="menu-620" class="__inner-link" target="_blank" rel="noopener" > 1487 Treflandia na Roblox </a> 1488 1489 </li> 1490 <li class="header-top-links-menu__item whitespace-nowrap" role="menuitem"> 1491 <a 1492 href="https://www.nintendo.com/us/search/#cat=gme&f=softwarePublisher&softwarePublisher=Trefl%20S.A" 1493 data-menu="menu-621" class="__inner-link" target="_blank" rel="noopener" > 1494 Gry na Nintendo </a> 1495 1496 </li> 1497 <li class="header-top-links-menu__item whitespace-nowrap" role="menuitem"> 1498 <a 1499 href="https://store.steampowered.com/app/2606190/Spy_Guy_Hidden_Objects_Deluxe_Edition/?beta=1" 1500 data-menu="menu-622" class="__inner-link" target="_blank" rel="noopener" > 1501 Gry na PC (Steam) </a> 1502 1503 </li> 1504 <li class="header-top-links-menu__item whitespace-nowrap" role="menuitem"> 1505 <a 1506 href="https://apps.apple.com/pl/developer/trefl-sa/id896381365?l=pl" 1507 data-menu="menu-623" class="__inner-link" target="_blank" rel="noopener" > 1508 Gry mobilne (Apple IOS) </a> 1509 1510 </li> 1511 <li class="header-top-links-menu__item whitespace-nowrap" role="menuitem"> 1512 <a 1513 href="https://play.google.com/store/apps/dev?id=4662821842287727686&hl=pl" 1514 data-menu="menu-624" class="__inner-link" target="_blank" rel="noopener" > 1515 Gry mobilne (Android) </a> 1516 1517 </li> 1518 </ul> 1519 </li> 1520
1520<script> 1521 function topMenu_184() { 1522 return { 1523 openSubmenuId: null, 1524 toggleSubmenu(id, state, event) { 1525 const doNotFocus = event.type === 'pointerenter' || event.type === 'pointerleave'; 1526 1527 if (state === true) { 1528 this.openSubmenuId = id; 1529 } else if (state === false) { 1530 this.openSubmenuId = null; 1531 } else { 1532 this.openSubmenuId = this.openSubmenuId === id ? null : id; 1533 } 1534 1535 if (this.openSubmenuId) { 1536 const submenu = document.getElementById('top-links' + id); 1537 if (submenu && !doNotFocus) { 1538 const firstChild = submenu.querySelector('li a'); 1539 if (firstChild) { 1540 setTimeout(() => { 1541 firstChild.focus({ focusVisible: true }); 1542 }, 0); 1543 } 1544 } 1545 1546 this.$refs.button.setAttribute( 1547 'aria-label', 1548 'Zamknij menu eGames' 1549 ); 1550 } else { 1551 const button = document.getElementById('top-links-' + id); 1552 if (button && !doNotFocus) { 1553 button.focus({ focusVisible: true }); 1554 } 1555 1556 this.$refs.button.setAttribute( 1557 'aria-label', 1558 'Otwórz menu eGames' 1559 ); 1560 } 1561 }, 1562 }; 1563 } 1564 </script>
1564 1565 <li class="last:hidden" role="separator" aria-hidden="true"> | </li> 1566 <li class="header-top-links-menu__item" role="menuitem"> <a 1567 href="/blog" 1568 data-menu="menu-185" class="__link" > 1569 Blog </a> 1570 1571</li> 1572 <li class="last:hidden" role="separator" aria-hidden="true"> | </li> 1573 <li class="header-top-links-menu__item" role="menuitem"> <a 1574 href="/contact" 1575 data-menu="menu-187" class="__link" > 1576 Kontakt </a> 1577 1578</li> 1579 <li class="last:hidden" role="separator" aria-hidden="true"> | </li> 1580 </ul> </div> 1581</div> 1582<div class="header content"><template id="trustedshops-badge_6abe4f41d2764"> 1583</template>
1584<script> 1585window.addEventListener('init-external-scripts', () => { 1586 const template = document.getElementById('trustedshops-badge_6abe4f41d2764'); 1587 if (template?.content) { 1588 const clone = document.importNode(template.content, true); 1589 document.body.appendChild(clone); 1590 } 1591}, {once: true, passive: true}); 1592</script>
1592 1593</div>
1593<script> 1594 function initHeader () { 1595 return { 1596 cart: {}, 1597 isCartOpen: false, 1598 getData(data) { 1599 if (data.cart) { this.cart = data.cart } 1600 }, 1601 isCartEmpty() { 1602 return !this.cart.summary_count 1603 }, 1604 toggleCart(event) { 1605 if (event.detail && event.detail.isOpen !== undefined) { 1606 this.isCartOpen = event.detail.isOpen 1607 if (!this.isCartOpen && this.$refs && this.$refs.cartButton) { 1608 this.$refs.cartButton.focus() 1609 } 1610 } else { 1611 this.isCartOpen = true 1612 } 1613 } 1614 } 1615 } 1616</script>
1616 1617 1618 1619<div id="header" 1620 class="relative z-30 w-full bg-header lg:py-1.5" 1621 x-data="initHeader()" 1622 @private-content-loaded.window="getData(event.detail.data)" 1623> 1624 <div class="header-container container flex flex-wrap lg:flex-nowrap items-center justify-between w-full px-0 md:px-3 lg:p-6 mx-auto mt-0"> 1625 <!--Logo--> 1626 <div class="header-logo-wrap w-full flex items-center justify-center md:w-auto md:bg-transparent"> 1627 <div class="order-1 sm:order-2 lg:order-1 sm:w-auto flex-shrink-0 w-1/3 lg:w-auto"> 1628 <a class="flex items-center justify-center text-xl font-medium tracking-wide text-gray-800 no-underline hover:no-underline font-title" 1629 href="https://www.trefl.com/" 1630 aria-label="Przejdź do strony głównej" 1631 > 1632 <img 1633 src="https://www.trefl.com/static/version1790625415/frontend/Trefl/hyva-trefl/pl_PL/images/logo.svg" 1634 alt="" 1635 width="104" 1636 height="52" 1637 fetchpriority="high" 1638 loading="eager" 1639 class="logo-image" 1640 /> 1641 </a> 1642</div> 1643 </div> 1644 1645 <!--Search--> 1646 <div class="order-3 p-3 pt-0 w-full lg:mx-0 lg:py-0 md:bg-transparent md:order-2 md:w-auto lg:w-full"> 1647 <div class="relative flex justify-center"> 1648 1649<form id="search_mini_form" 1650 action="https://www.trefl.com/catalogsearch/result/" 1651 method="get" 1652 role="search" 1653 class="w-full flex justify-center gap-x-2" 1654> 1655 <div class="w-full flex relative" style="max-width: 580px;"> 1656 <label class="sr-only text-primary" for="search"> 1657 Szukaj w sklepie... </label> 1658 <input id="search" 1659 type="search" 1660 required 1661 class="form-input w-full appearance-none border-gray-light bg-gray-light pr-14 sm:pr-3" 1662 autocapitalize="off" autocomplete="off" autocorrect="off" 1663 name="q" 1664 value="" 1665 placeholder="Czego szukasz?" 1666 maxlength="128" 1667 oninvalid="this.setCustomValidity('Wpisz wyszukiwanÄ frazÄ')" 1668 oninput="this.setCustomValidity('')" 1669 /> 1670 1671 1672<label class="sr-only text-primary" for="search-category"> 1673 Wybierz kategorię</label> 1674<select class="form-select -ml-3 bg-gray-lighter border-gray-lighter min-w-48 hidden sm:block w-auto " 1675 id="search-category" 1676 name="cat"> 1677 <option value="" selected>Wszystkie kategorie</option> 1678 <option value="3"> 1679 Puzzle </option> 1680 <option value="4"> 1681 Gry </option> 1682 <option value="5"> 1683 Zabawki </option> 1684 <option value="167"> 1685 KsiÄ Å¼ki </option> 1686 </select> 1687 </div> 1688 <button class="btn btn-secondary font-bold min-w-12 h-full items-center justify-center p-0 px-2 lg:px-6 absolute right-0 top-0 sm:static" 1689 aria-label="Szukaj"> 1690 <svg xmlns="http://www.w3.org/2000/svg" width="26" height="26" viewBox="0 0 24 24" fill="none" class="lg:!hidden" aria-hidden="true"><path fill="currentColor" fill-rule="evenodd" d="M15.184 7.369a5.526 5.526 0 1 0-7.815 7.815 5.526 5.526 0 0 0 7.815-7.815Zm1.06-1.061a7.026 7.026 0 1 0-9.936 9.936 7.026 7.026 0 0 0 9.936-9.936Z" clip-rule="evenodd"/><path fill="currentColor" fill-rule="evenodd" d="M15.18 15.18a.75.75 0 0 1 1.06 0l3.29 3.29a.75.75 0 1 1-1.06 1.06l-3.29-3.29a.75.75 0 0 1 0-1.06Z" clip-rule="evenodd"/></svg> 1691 <span class="hidden lg:inline">Szukaj</span> 1692 </button> 1693</form> 1694 </div> 1695 </div> 1696 1697 <div class="text-header hidden md:flex items-center justify-end gap-1 sm:gap-2 order-2 w-1/3 md:w-auto md:order-3 lg:-mr-1 md:gap-4"> 1698 <!-- Additional Header Elements --> 1699 1700 <!--Customer Icon & Dropdown--> 1701 1702<div 1703 class="relative inline-block" 1704 x-data="{ open: false }" 1705 @keyup.escape="open = false" 1706 @click.outside="open = false" 1707> 1708 <button 1709 type="button" 1710 id="customer-menu" 1711 class="block rounded p-2 outline-offset-2 md:text-inherit" 1712 @click="open = !open" 1713 :aria-expanded="open ? 'true' : 'false'" 1714 title="Moje konto" 1715 aria-label="Moje konto" 1716 aria-haspopup="true" 1717 > 1718 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 18 20" fill="none" class="md:h-5 md:w-5" width="28" height="28" aria-hidden="true"><path fill-rule="evenodd" clip-rule="evenodd" d="M9 1.75c-2.046 0-3.733 1.706-3.733 3.767A3.744 3.744 0 0 0 9 9.25c2.046 0 3.733-1.706 3.733-3.767A3.744 3.744 0 0 0 9 1.75ZM3.767 5.517C3.767 2.642 6.112.25 9 .25a5.244 5.244 0 0 1 5.233 5.233c0 2.875-2.345 5.267-5.233 5.267a5.244 5.244 0 0 1-5.233-5.233ZM5 13.75A3.262 3.262 0 0 0 1.75 17v1c0 .136.114.25.25.25h14c.136 0 .25-.114.25-.25v-1A3.262 3.262 0 0 0 13 13.75H5ZM.25 17A4.762 4.762 0 0 1 5 12.25h8A4.762 4.762 0 0 1 17.75 17v1c0 .964-.786 1.75-1.75 1.75H2c-.964 0-1.75-.786-1.75-1.75v-1Z" fill="currentColor"/></svg> 1719 </button> 1720 <nav 1721 class=" 1722 absolute right-0 z-20 w-40 py-2 mt-2 -mr-4 px-1 overflow-auto origin-top-right rounded-sm 1723 shadow-lg sm:w-48 lg:mt-3 bg-container-lighter text-black 1724 " 1725 x-cloak 1726 x-show="open" 1727 aria-labelledby="customer-menu" 1728 > 1729 <div> 1730 <a id="customer.header.sign.in.link" 1731 class="block px-4 py-2 lg:px-5 lg:py-2 hover:bg-gray-100" 1732 onclick="hyva.setCookie && hyva.setCookie( 1733 'login_redirect', 1734 window.location.href, 1735 1 1736 )" 1737 href="https://www.trefl.com/customer/account/index/" 1738 title="Zaloguj się" 1739 > 1740 Zaloguj siÄ </a> 1741 1742 </div> 1743
1744<script type="text/javascript"> 1745 function onClick () { 1746 showLogin(); 1747 const modal = document.querySelector('.wrap-modal-login'); 1748 modal.classList.add('mfp-move-from-top-appear'); 1749 openMyDialog(); 1750 1751 } 1752</script>
1752 1753 <div> 1754 <a id="customer.header.register.link" 1755 class="block px-4 py-2 lg:px-5 lg:py-2 hover:bg-gray-100" 1756 href="https://www.trefl.com/customer/account/create/" 1757 title="Utwórz konto" 1758 > 1759 Utwórz konto </a> 1760 </div> 1761
1762<script type="text/javascript"> 1763 function onClickRegister () { 1764 createBtn(); 1765 const modal = document.querySelector('.wrap-modal-login'); 1766 modal.classList.add('mfp-move-from-top-appear'); 1767 openMyDialog(); 1768 1769 1770 } 1771</script>
1771 </nav> 1772</div> 1773 1774 <!--Wishlist Icon--> 1775 <a href="https://www.trefl.com/wishlist/" 1776 class="rounded p-2 outline-offset-2 hidden sm:block md:text-inherit" 1777 title="Ulubione" 1778 > 1779 <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 20 18" class="h-5 w-5" width="20" height="18" aria-hidden="true"><path fill-rule="evenodd" clip-rule="evenodd" d="M6.304 1.75c-2.652 0-4.554 2.526-4.554 5.005 0 2.59 1.624 4.965 3.587 6.742.97.878 1.99 1.58 2.867 2.06.438.24.83.418 1.154.535.338.123.549.158.642.158.093 0 .304-.035.642-.158a8.482 8.482 0 0 0 1.154-.535 15.411 15.411 0 0 0 2.867-2.06c1.963-1.777 3.587-4.152 3.587-6.742 0-2.479-1.902-5.005-4.554-5.005-1.534 0-2.534.756-3.126 1.448a.75.75 0 0 1-1.14 0C8.838 2.506 7.838 1.75 6.304 1.75ZM.25 6.755C.25 3.684 2.606.25 6.304.25 7.964.25 9.176.91 10 1.642A5.445 5.445 0 0 1 13.696.25c3.698 0 6.054 3.434 6.054 6.505 0 3.21-1.987 5.959-4.08 7.854a16.914 16.914 0 0 1-3.154 2.264 9.958 9.958 0 0 1-1.364.63c-.397.143-.8.247-1.152.247-.352 0-.755-.104-1.152-.247a9.961 9.961 0 0 1-1.364-.63 16.913 16.913 0 0 1-3.154-2.264C2.237 12.714.25 9.966.25 6.755Z" fill="currentColor"/></svg> 1780 </a> 1781 1782 <!--Cart Icon--> 1783 <button 1784 id="menu-cart-icon" 1785 class="relative inline-block rounded p-2 outline-offset-2 md:text-inherit" 1786 x-ref="cartButton" 1787 :aria-disabled="isCartEmpty()" 1788 :aria-label="` 1789 Przełącz koszyk w panelu bocznym, 1790 ${isCartEmpty() 1791 ? 'Koszyk jest pusty' 1792 : cart.summary_count > 1 1793 ? hyva.str('%1 elementów', cart.summary_count) 1794 : hyva.str('%1 item', cart.summary_count) 1795 }`" 1796 @click.prevent.stop="() => { 1797 $dispatch('toggle-cart', { isOpen: true }) 1798 }" 1799 @toggle-cart.window="toggleCart($event)" 1800 :aria-expanded="isCartOpen" 1801 aria-haspopup="dialog" 1802 > 1803 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 35 32" class="md:h-5 md:w-5" width="28" height="28" aria-hidden="true"><path d="M9.386 5.564 8.454 0H-.001v2.782h6.1l.734 4.403 1.397 9.074c.549 2.929 2.252 4.613 4.677 4.613H28.54c1.531 0 4.179-.613 4.69-4.658l1.64-10.643H9.385zm21.089 10.261c-.262 2.087-1.098 2.259-1.933 2.259H12.909c-.37 0-1.506 0-1.94-2.297l-1.142-7.44h21.797l-1.149 7.478zM13.215 25.045a3.478 3.478 0 1 0 0 6.956 3.478 3.478 0 0 0 0-6.956zm0 4.173c-.383 0-.696-.313-.696-.695s.313-.695.695-.695.695.313.695.695-.313.695-.695.695zM28.51 25.045a3.478 3.478 0 1 0 0 6.956 3.478 3.478 0 0 0 0-6.956zm0 4.173c-.383 0-.695-.313-.695-.695s.313-.695.695-.695c.383 0 .695.313.695.695s-.306.695-.695.695z" fill="currentColor"/></svg> 1804 <span 1805 x-text="cart.summary_count" 1806 x-show="!isCartEmpty()" 1807 x-cloak 1808 class="absolute -top-2 -right-2.5 h-6 px-2 py-1.5 rounded-full bg-primary md:bg-secondary-darker text-white text-xs font-semibold leading-none text-center uppercase tabular-nums" 1809 aria-hidden="true" 1810 ></span> 1811 </button> 1812 </div> 1813 </div> 1814 1815 <!--Main Navigation--> 1816 <input type="checkbox" 1817 id="mobile-menu-switch" 1818 class="hidden" 1819 aria-hidden="true" 1820 @change="$dispatch('toggle-menu-mobile', { isOpen: $el.checked })" 1821 /> 1822 1823
1823<script> 1824 'use strict'; 1825 1826 const initMenuMobile_6abd94b60a054 = () => ({ 1827 submenuDataAttrName: 'menu', 1828 submenuActiveClass: 'menu-mobile-submenu-active', 1829 init() { 1830 window.addEventListener('toggle-menu-mobile', (event) => { 1831 const isOpen = event.detail?.isOpen; 1832 1833 if (isOpen) { 1834 this.$nextTick(() => hyva.trapFocus(this.$refs['menu-dialog'])) 1835 // Prevent from body scrolling while mobile menu opened 1836 document.body.classList.add('fixed', 'w-full') 1837 } else { 1838 document.body.classList.remove('fixed', 'w-full') 1839 } 1840 }) 1841 }, 1842 closeMenu() { 1843 const menuSwitch = document.getElementById('mobile-menu-switch') 1844 if (menuSwitch) { 1845 menuSwitch.checked = false 1846 } 1847 }, 1848 openSubmenu(menuRef) { 1849 this.$refs[menuRef]?.classList?.add(this.submenuActiveClass) 1850 }, 1851 closeSubmenu(menuRef) { 1852 this.$refs[menuRef]?.classList?.remove(this.submenuActiveClass) 1853 }, 1854 }) 1855 </script>
1855 1856 <nav 1857 class=" menu-mobile z-20 order-2 text-primary-darker sm:order-1 navigation lg:hidden" 1858 x-data="initMenuMobile_6abd94b60a054()" 1859 @keydown.escape="closeMenu()" 1860 aria-label="Menu główne" 1861 role="navigation" 1862 > 1863 <div class="backdrop hidden" 1864 x-transition:enter="ease-in-out duration-500" 1865 x-transition:enter-start="opacity-0" 1866 x-transition:enter-end="opacity-100" 1867 x-transition:leave="ease-in-out duration-500" 1868 x-transition:leave-start="opacity-100" 1869 x-transition:leave-end="opacity-0" 1870 @click="closeMenu()" 1871 x-cloak 1872 style="background: rgba(0, 0, 0, 0.6);" 1873 ></div> 1874 <div class="menu-mobile-container fixed z-30 top-0 right-0 w-full h-full bg-white overflow-y-auto overflow-x-hidden transform transition ease-in-out duration-500 sm:duration-700 translate-x-full" 1875 x-ref="menu-dialog" 1876 role="dialog" 1877 aria-modal="true" 1878 aria-label="Menu główne" 1879 style="max-width:86.5%" 1880 > 1881 <div class="relative h-full"> 1882 <div class="menu-mobile-submenu h-full level1" ><label for="mobile-menu-switch" class="bg-primary h-14 w-full flex items-center text-white z-10 sticky top-0 justify-end px-2 gap-x-8 shrink-0"><span class="relative font-rialto text-xs">zamknij menu<svg xmlns="http://www.w3.org/2000/svg" width="35" height="17" viewBox="0 0 35 17" fill="none" class="arrow-handwriting absolute left-3/4 top-full ml-2 -mt-0.5" role="img"><path class="arrow-body" stroke="currentColor" d="M.94 4.896c3.07 4.892 13.384 12.277 30.086 2.673"/><path class="arrow-head" stroke="currentColor" d="m32.641 14.543 1.627-7.833-8.812-1.83"/><title>arrow-handwriting</title></svg> 1883</span><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" width="26" height="26" role="img"> 1884 <path stroke-linecap="round" stroke-linejoin="round" d="M6 18L18 6M6 6l12 12"/> 1885<title>x</title></svg> 1886</label><ul class="level1"><li class="level1"> 1887 <button @click.prevent="closeSubmenu('menu-46')" class="text-black outline-none active:bg-gray-light aspect-square flex size-10 items-center justify-center"> 1888 <svg xmlns="http://www.w3.org/2000/svg" width="6" height="10" viewBox="0 0 6 10" fill="none" role="img"><path fill="currentColor" fill-rule="evenodd" d="M5.769.231a.79.79 0 0 1 0 1.117L2.116 5 5.77 8.652A.79.79 0 0 1 4.652 9.77l-4.21-4.21a.79.79 0 0 1 0-1.117l4.21-4.21a.79.79 0 0 1 1.117 0Z" clip-rule="evenodd"/><title>arrow-left</title></svg> 1889 </button> 1890<a href="https://www.trefl.com/puzzle" 1891 class="cursor-pointer snowdog-menu-link-topmenu-mobile 1892 is-parent " 1893> 1894 Puzzle</a> 1895 <button @click.prevent="openSubmenu('menu-46')" class="text-black outline-none active:bg-gray-light aspect-square flex size-10 items-center justify-center"> 1896 <svg xmlns="http://www.w3.org/2000/svg" width="6" height="10" viewBox="0 0 6 10" fill="none" role="img"><path fill="currentColor" fill-rule="evenodd" d="M.231 9.769a.79.79 0 0 1 0-1.117L3.884 5 .23 1.348A.79.79
18960 0 1 1.348.23l4.21 4.21a.79.79 0 0 1 0 1.117l-4.21 4.21a.79.79 0 0 1-1.117 0Z" clip-rule="evenodd"/><title>arrow-right</title></svg> 1897 </button> 1898</li><li class="level1"> 1899<a href="https://www.trefl.com/puzzle/fotopuzzle" 1900 class="cursor-pointer snowdog-menu-link-topmenu-mobile 1901 " 1902> 1903 Fotopuzzle</a> 1904</li><li class="level1"> 1905 <button @click.prevent="closeSubmenu('menu-51')" class="text-black outline-none active:bg-gray-light aspect-square flex size-10 items-center justify-center"> 1906 <svg xmlns="http://www.w3.org/2000/svg" width="6" height="10" viewBox="0 0 6 10" fill="none" role="img"><path fill="currentColor" fill-rule="evenodd" d="M5.769.231a.79.79 0 0 1 0 1.117L2.116 5 5.77 8.652A.79.79 0 0 1 4.652 9.77l-4.21-4.21a.79.79 0 0 1 0-1.117l4.21-4.21a.79.79 0 0 1 1.117 0Z" clip-rule="evenodd"/><title>arrow-left</title></svg> 1907 </button> 1908<a href="https://www.trefl.com/gry" 1909 class="cursor-pointer snowdog-menu-link-topmenu-mobile 1910 is-parent " 1911> 1912 Gry planszowe</a> 1913 <button @click.prevent="openSubmenu('menu-51')" class="text-black outline-none active:bg-gray-light aspect-square flex size-10 items-center justify-center"> 1914 <svg xmlns="http://www.w3.org/2000/svg" width="6" height="10" viewBox="0 0 6 10" fill="none" role="img"><path fill="currentColor" fill-rule="evenodd" d="M.231 9.769a.79.79 0 0 1 0-1.117L3.884 5 .23 1.348A.79.79
19140 0 1 1.348.23l4.21 4.21a.79.79 0 0 1 0 1.117l-4.21 4.21a.79.79 0 0 1-1.117 0Z" clip-rule="evenodd"/><title>arrow-right</title></svg> 1915 </button> 1916</li><li class="level1"> 1917 <button @click.prevent="closeSubmenu('menu-54')" class="text-black outline-none active:bg-gray-light aspect-square flex size-10 items-center justify-center"> 1918 <svg xmlns="http://www.w3.org/2000/svg" width="6" height="10" viewBox="0 0 6 10" fill="none" role="img"><path fill="currentColor" fill-rule="evenodd" d="M5.769.231a.79.79 0 0 1 0 1.117L2.116 5 5.77 8.652A.79.79 0 0 1 4.652 9.77l-4.21-4.21a.79.79 0 0 1 0-1.117l4.21-4.21a.79.79 0 0 1 1.117 0Z" clip-rule="evenodd"/><title>arrow-left</title></svg> 1919 </button> 1920<a href="https://www.trefl.com/zabawki" 1921 class="cursor-pointer snowdog-menu-link-topmenu-mobile 1922 is-parent " 1923> 1924 Zabawki</a> 1925 <button @click.prevent="openSubmenu('menu-54')" class="text-black outline-none active:bg-gray-light aspect-square flex size-10 items-center justify-center"> 1926 <svg xmlns="http://www.w3.org/2000/svg" width="6" height="10" viewBox="0 0 6 10" fill="none" role="img"><path fill="currentColor" fill-rule="evenodd" d="M.231 9.769a.79.79 0 0 1 0-1.117L3.884 5 .23 1.348A.79.79
19260 0 1 1.348.23l4.21 4.21a.79.79 0 0 1 0 1.117l-4.21 4.21a.79.79 0 0 1-1.117 0Z" clip-rule="evenodd"/><title>arrow-right</title></svg> 1927 </button> 1928</li><li class="level1"> 1929 <button @click.prevent="closeSubmenu('menu-55')" class="text-black outline-none active:bg-gray-light aspect-square flex size-10 items-center justify-center"> 1930 <svg xmlns="http://www.w3.org/2000/svg" width="6" height="10" viewBox="0 0 6 10" fill="none" role="img"><path fill="currentColor" fill-rule="evenodd" d="M5.769.231a.79.79 0 0 1 0 1.117L2.116 5 5.77 8.652A.79.79 0 0 1 4.652 9.77l-4.21-4.21a.79.79 0 0 1 0-1.117l4.21-4.21a.79.79 0 0 1 1.117 0Z" clip-rule="evenodd"/><title>arrow-left</title></svg> 1931 </button> 1932<a href="https://www.trefl.com/ksiazki" 1933 class="cursor-pointer snowdog-menu-link-topmenu-mobile 1934 is-parent " 1935> 1936 KsiÄ Å¼ki</a> 1937 <button @click.prevent="openSubmenu('menu-55')" class="text-black outline-none active:bg-gray-light aspect-square flex size-10 items-center justify-center"> 1938 <svg xmlns="http://www.w3.org/2000/svg" width="6" height="10" viewBox="0 0 6 10" fill="none" role="img"><path fill="currentColor" fill-rule="evenodd" d="M.231 9.769a.79.79 0 0 1 0-1.117L3.884 5 .23 1.348A.79.79
19380 0 1 1.348.23l4.21 4.21a.79.79 0 0 1 0 1.117l-4.21 4.21a.79.79 0 0 1-1.117 0Z" clip-rule="evenodd"/><title>arrow-right</title></svg> 1939 </button> 1940</li><li class="level1"> 1941 <button @click.prevent="closeSubmenu('menu-56')" class="text-black outline-none active:bg-gray-light aspect-square flex size-10 items-center justify-center"> 1942 <svg xmlns="http://www.w3.org/2000/svg" width="6" height="10" viewBox="0 0 6 10" fill="none" role="img"><path fill="currentColor" fill-rule="evenodd" d="M5.769.231a.79.79 0 0 1 0 1.117L2.116 5 5.77 8.652A.79.79 0 0 1 4.652 9.77l-4.21-4.21a.79.79 0 0 1 0-1.117l4.21-4.21a.79.79 0 0 1 1.117 0Z" clip-rule="evenodd"/><title>arrow-left</title></svg> 1943 </button> 1944<a href="https://www.trefl.com/rodzina-treflikow" 1945 class="cursor-pointer snowdog-menu-link-topmenu-mobile 1946 is-parent " 1947> 1948 Rodzina Treflików</a> 1949 <button @click.prevent="openSubmenu('menu-56')" class="text-black outline-none active:bg-gray-light aspect-square flex size-10 items-center justify-center"> 1950 <svg xmlns="http://www.w3.org/2000/svg" width="6" height="10" viewBox="0 0 6 10" fill="none" role="img"><path fill="currentColor" fill-rule="evenodd" d="M.231 9.769a.79.79 0 0 1 0-1.117L3.884 5 .23 1.348A.79.79
19500 0 1 1.348.23l4.21 4.21a.79.79 0 0 1 0 1.117l-4.21 4.21a.79.79 0 0 1-1.117 0Z" clip-rule="evenodd"/><title>arrow-right</title></svg> 1951 </button> 1952</li><li class="level1"> 1953 <button @click.prevent="closeSubmenu('menu-57')" class="text-black outline-none active:bg-gray-light aspect-square flex size-10 items-center justify-center"> 1954 <svg xmlns="http://www.w3.org/2000/svg" width="6" height="10" viewBox="0 0 6 10" fill="none" role="img"><path fill="currentColor" fill-rule="evenodd" d="M5.769.231a.79.79 0 0 1 0 1.117L2.116 5 5.77 8.652A.79.79 0 0 1 4.652 9.77l-4.21-4.21a.79.79 0 0 1 0-1.117l4.21-4.21a.79.79 0 0 1 1.117 0Z" clip-rule="evenodd"/><title>arrow-left</title></svg> 1955 </button> 1956<a href="https://www.trefl.com/prezenty" 1957 class="cursor-pointer snowdog-menu-link-topmenu-mobile 1958 is-parent " 1959> 1960 Prezenty</a> 1961 <button @click.prevent="openSubmenu('menu-57')" class="text-black outline-none active:bg-gray-light aspect-square flex size-10 items-center justify-center"> 1962 <svg xmlns="http://www.w3.org/2000/svg" width="6" height="10" viewBox="0 0 6 10" fill="none" role="img"><path fill="currentColor" fill-rule="evenodd" d="M.231 9.769a.79.79 0 0 1 0-1.117L3.884 5 .23 1.348A.79.79
19620 0 1 1.348.23l4.21 4.21a.79.79 0 0 1 0 1.117l-4.21 4.21a.79.79 0 0 1-1.117 0Z" clip-rule="evenodd"/><title>arrow-right</title></svg> 1963 </button> 1964</li><li class="level1"> 1965<a href="https://www.trefl.com/nowosci" 1966 class="cursor-pointer snowdog-menu-link-topmenu-mobile 1967 " 1968> 1969 NowoÅci</a> 1970</li><li class="level1"> 1971<a href="https://www.trefl.com/puzzle-gry-zabawki-tylko-u-nas" 1972 class="cursor-pointer snowdog-menu-link-topmenu-mobile 1973 " 1974> 1975 Tylko u nas!</a> 1976</li><li class="level1"> 1977 <button @click.prevent="closeSubmenu('menu-58')" class="text-black outline-none active:bg-gray-light aspect-square flex size-10 items-center justify-center"> 1978 <svg xmlns="http://www.w3.org/2000/svg" width="6" height="10" viewBox="0 0 6 10" fill="none" role="img"><path fill="currentColor" fill-rule="evenodd" d="M5.769.231a.79.79 0 0 1 0 1.117L2.116 5 5.77 8.652A.79.79 0 0 1 4.652 9.77l-4.21-4.21a.79.79 0 0 1 0-1.117l4.21-4.21a.79.79 0 0 1 1.117 0Z" clip-rule="evenodd"/><title>arrow-left</title></svg> 1979 </button> 1980<a href="https://www.trefl.com/promocje" 1981 class="cursor-pointer snowdog-menu-link-topmenu-mobile 1982 is-parent " 1983> 1984 Promocje</a> 1985 <button @click.prevent="openSubmenu('menu-58')" class="text-black outline-none active:bg-gray-light aspect-square flex size-10 items-center justify-center"> 1986 <svg xmlns="http://www.w3.org/2000/svg" width="6" height="10" viewBox="0 0 6 10" fill="none" role="img"><path fill="currentColor" fill-rule="evenodd" d="M.231 9.769a.79.79 0 0 1 0-1.117L3.884 5 .23 1.348A.79.79
19860 0 1 1.348.23l4.21 4.21a.79.79 0 0 1 0 1.117l-4.21 4.21a.79.79 0 0 1-1.117 0Z" clip-rule="evenodd"/><title>arrow-right</title></svg> 1987 </button> 1988</li><li class="level1"> 1989 <button @click.prevent="closeSubmenu('menu-542')" class="text-black outline-none active:bg-gray-light aspect-square flex size-10 items-center justify-center"> 1990 <svg xmlns="http://www.w3.org/2000/svg" width="6" height="10" viewBox="0 0 6 10" fill="none" role="img"><path fill="currentColor" fill-rule="evenodd" d="M5.769.231a.79.79 0 0 1 0 1.117L2.116 5 5.77 8.652A.79.79 0 0 1 4.652 9.77l-4.21-4.21a.79.79 0 0 1 0-1.117l4.21-4.21a.79.79 0 0 1 1.117 0Z" clip-rule="evenodd"/><title>arrow-left</title></svg> 1991 </button> 1992<a href="https://www.trefl.com/marki" 1993 class="cursor-pointer snowdog-menu-link-topmenu-mobile 1994 is-parent " 1995> 1996 Marki i licencje</a> 1997 <button @click.prevent="openSubmenu('menu-542')" class="text-black outline-none active:bg-gray-light aspect-square flex size-10 items-center justify-center"> 1998 <svg xmlns="http://www.w3.org/2000/svg" width="6" height="10" viewBox="0 0 6 10" fill="none" role="img"><path fill="currentColor" fill-rule="evenodd" d="M.231 9.769a.79.79 0 0 1 0-1.117L3.884 5 .23 1.348A.79.79
19980 0 1 1.348.23l4.21 4.21a.79.79 0 0 1 0 1.117l-4.21 4.21a.79.79 0 0 1-1.117 0Z" clip-rule="evenodd"/><title>arrow-right</title></svg> 1999 </button> 2000</li><li class="level1"> 2001 <a class="cursor-pointer snowdog-menu-link-topmenu-mobile " 2002 href="https://www.trefl.com/blog" 2003 data-menu="menu-260" > 2004 Blog </a> 2005</li><li class="level1"> 2006<button class="cursor-pointer snowdog-menu-link-topmenu-mobile 2007 " 2008 @click.prevent="openSubmenu('menu-273')" 2009 > 2010 Gry wirtualne</button> 2011</li></ul><div class="mt-auto pt-6 pb-2 px-8 [&_li]:mb-4 [&_li]:my-1"><ul class="header-top-links-menu list-none text-xs md:text-header-top gap-2 flex flex-wrap items-center" 2012 role="menubar" 2013 aria-orientation="horizontal" 2014> 2015 <li class="relative flex-wrap lg:flex-nowrap header-top-links-menu__item" 2016 x-data="topMenu_575()" 2017 role="menuitem" 2018 @keydown.escape="toggleSubmenu('575', false, $event)" 2019 @pointerenter="toggleSubmenu('575', true, $event)" 2020 @pointerleave="toggleSubmenu('575', false, $event)" 2021 > 2022 <button aria-haspopup="menu" 2023 aria-controls="top-links-5756abd94b5ec419" 2024 id="top-links-575" 2025 class="flex items-center gap-1" 2026 x-ref="button" 2027 @click.prevent.stop="toggleSubmenu('575', null, $event)" 2028 @keydown.space.prevent="toggleSubmenu('575', null, $event)" 2029 @keydown.enter.prevent="toggleSubmenu('575', null, $event)" 2030 aria-label="Otwórz menu Oferta B2B" 2031 :aria-pressed="openSubmenuId === '575'" 2032 :aria-expanded="openSubmenuId === '575'"> 2033 Oferta B2B <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" class="transition-transform" width="13" height="13" aria-hidden="true"> 2034 <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"/> 2035</svg> 2036 </button> 2037 <ul role="menubar" 2038 aria-orientation="vertical" 2039 aria-labelledby="top-links575" 2040 id="top-links5756abd94b5ec419" 2041 class="lg:absolute left-0 top-full bg-inherit list-none w-full lg:w-auto lg:bg-header-top flex-col p-2 -ml-2 pt-4 hidden" 2042 :class="openSubmenuId === '575' ? 'z-40' : ''" 2043 x-cloak 2044 > 2045 <li class="header-top-links-menu__item whitespace-nowrap" role="menuitem"> 2046 <a 2047 href="https://b2b.trefl.com/" 2048 data-menu="menu-576" class="__inner-link" > 2049 Platforma zamówieŠhurtowych </a> 2050 2051 </li> 2052 <li class="header-top-links-menu__item whitespace-nowrap" role="menuitem"> 2053 <a 2054 href="https://factory.trefl.com/" 2055 data-menu="menu-577" class="__inner-link" > 2056 Produkty na zlecenie - Trefl Factory </a> 2057 2058 </li> 2059 </ul> 2060 </li> 2061
2061<script> 2062 function topMenu_575() { 2063 return { 2064 openSubmenuId: null, 2065 toggleSubmenu(id, state, event) { 2066 const doNotFocus = event.type === 'pointerenter' || event.type === 'pointerleave'; 2067 2068 if (state === true) { 2069 this.openSubmenuId = id; 2070 } else if (state === false) { 2071 this.openSubmenuId = null; 2072 } else { 2073 this.openSubmenuId = this.openSubmenuId === id ? null : id; 2074 } 2075 2076 if (this.openSubmenuId) { 2077 const submenu = document.getElementById('top-links' + id); 2078 if (submenu && !doNotFocus) { 2079 const firstChild = submenu.querySelector('li a'); 2080 if (firstChild) { 2081 setTimeout(() => { 2082 firstChild.focus({ focusVisible: true }); 2083 }, 0); 2084 } 2085 } 2086 2087 this.$refs.button.setAttribute( 2088 'aria-label', 2089 'Zamknij menu Oferta B2B' 2090 ); 2091 } else { 2092 const button = document.getElementById('top-links-' + id); 2093 if (button && !doNotFocus) { 2094 button.focus({ focusVisible: true }); 2095 } 2096 2097 this.$refs.button.setAttribute( 2098 'aria-label', 2099 'Otwórz menu Oferta B2B' 2100 ); 2101 } 2102 }, 2103 }; 2104 } 2105 </script>
2105 2106 <li class="last:hidden" role="separator" aria-hidden="true"> | </li> 2107 <li class="header-top-links-menu__item" role="menuitem"> 2108<a 2109 href="https://www.trefl.com/grupa-trefl" 2110 class="__link" 2111 data-menu="menu-183"> 2112 Grupa Trefl</a> 2113</li> 2114 <li class="last:hidden" role="separator" aria-hidden="true"> | </li> 2115 <li class="relative flex-wrap lg:flex-nowrap header-top-links-menu__item" 2116 x-data="topMenu_400()" 2117 role="menuitem" 2118 @keydown.escape="toggleSubmenu('400', false, $event)" 2119 @pointerenter="toggleSubmenu('400', true, $event)" 2120 @pointerleave="toggleSubmenu('400', false, $event)" 2121 > 2122 <button aria-haspopup="menu" 2123 aria-controls="top-links-4006abd94b5ec419" 2124 id="top-links-400" 2125 class="flex items-center gap-1" 2126 x-ref="button" 2127 @click.prevent.stop="toggleSubmenu('400', null, $event)" 2128 @keydown.space.prevent="toggleSubmenu('400', null, $event)" 2129 @keydown.enter.prevent="toggleSubmenu('400', null, $event)" 2130 aria-label="Otwórz menu ESG" 2131 :aria-pressed="openSubmenuId === '400'" 2132 :aria-expanded="openSubmenuId === '400'"> 2133 ESG <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" class="transition-transform" width="13" height="13" aria-hidden="true"> 2134 <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"/> 2135</svg> 2136 </button> 2137 <ul role="menubar" 2138 aria-orientation="vertical" 2139 aria-labelledby="top-links400" 2140 id="top-links4006abd94b5ec419" 2141 class="lg:absolute left-0 top-full bg-inherit list-none w-full lg:w-auto lg:bg-header-top flex-col p-2 -ml-2 pt-4 hidden" 2142 :class="openSubmenuId === '400' ? 'z-40' : ''" 2143 x-cloak 2144 > 2145 <li class="header-top-links-menu__item whitespace-nowrap" role="menuitem"> 2146 <a 2147 href="https://www.trefl.com/zrownowazony-rozwoj" 2148 data-menu="menu-401" class="__inner-link" > 2149 Zrównoważony rozwój </a> 2150 2151 </li> 2152 <li class="header-top-links-menu__item whitespace-nowrap" role="menuitem"> 2153 <a 2154 href="https://www.trefl.com/zrownowazony-rozwoj/srodowisko" 2155 data-menu="menu-582" class="__inner-link" > 2156 Årodowisko </a> 2157 2158 </li> 2159 <li class="header-top-links-menu__item whitespace-nowrap" role="menuitem"> 2160 <a 2161 href="https://www.trefl.com/zielona-strona-trefla" 2162 data-menu="menu-402" class="__inner-link" > 2163 Zielona Strona Trefla </a> 2164 2165 </li> 2166 <li class="header-top-links-menu__item whitespace-nowrap" role="menuitem"> 2167 <a 2168 href="https://www.trefl.com/zrownowazony-rozwoj/dokumenty" 2169 data-menu="menu-403" class="__inner-link" > 2170 Dokumenty </a> 2171 2172 </li> 2173 </ul> 2174 </li> 2175
2175<script> 2176 function topMenu_400() { 2177 return { 2178 openSubmenuId: null, 2179 toggleSubmenu(id, state, event) { 2180 const doNotFocus = event.type === 'pointerenter' || event.type === 'pointerleave'; 2181 2182 if (state === true) { 2183 this.openSubmenuId = id; 2184 } else if (state === false) { 2185 this.openSubmenuId = null; 2186 } else { 2187 this.openSubmenuId = this.openSubmenuId === id ? null : id; 2188 } 2189 2190 if (this.openSubmenuId) { 2191 const submenu = document.getElementById('top-links' + id); 2192 if (submenu && !doNotFocus) { 2193 const firstChild = submenu.querySelector('li a'); 2194 if (firstChild) { 2195 setTimeout(() => { 2196 firstChild.focus({ focusVisible: true }); 2197 }, 0); 2198 } 2199 } 2200 2201 this.$refs.button.setAttribute( 2202 'aria-label', 2203 'Zamknij menu ESG' 2204 ); 2205 } else { 2206 const button = document.getElementById('top-links-' + id); 2207 if (button && !doNotFocus) { 2208 button.focus({ focusVisible: true }); 2209 } 2210 2211 this.$refs.button.setAttribute( 2212 'aria-label', 2213 'Otwórz menu ESG' 2214 ); 2215 } 2216 }, 2217 }; 2218 } 2219 </script>
2219 2220 <li class="last:hidden" role="separator" aria-hidden="true"> | </li> 2221 <li class="header-top-links-menu__item" role="menuitem"> 2222<a 2223 href="https://www.trefl.com/kariera" 2224 class="__link" 2225 data-menu="menu-615"> 2226 Kariera</a> 2227</li> 2228 <li class="last:hidden" role="separator" aria-hidden="true"> | </li> 2229 <li class="relative flex-wrap lg:flex-nowrap header-top-links-menu__item" 2230 x-data="topMenu_184()" 2231 role="menuitem" 2232 @keydown.escape="toggleSubmenu('184', false, $event)" 2233 @pointerenter="toggleSubmenu('184', true, $event)" 2234 @pointerleave="toggleSubmenu('184', false, $event)" 2235 > 2236 <button aria-haspopup="menu" 2237 aria-controls="top-links-1846abd94b5ec419" 2238 id="top-links-184" 2239 class="flex items-center gap-1" 2240 x-ref="button" 2241 @click.prevent.stop="toggleSubmenu('184', null, $event)" 2242 @keydown.space.prevent="toggleSubmenu('184', null, $event)" 2243 @keydown.enter.prevent="toggleSubmenu('184', null, $event)" 2244 aria-label="Otwórz menu eGames" 2245 :aria-pressed="openSubmenuId === '184'" 2246 :aria-expanded="openSubmenuId === '184'"> 2247 eGames <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" class="transition-transform" width="13" height="13" aria-hidden="true"> 2248 <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"/> 2249</svg> 2250 </button> 2251 <ul role="menubar" 2252 aria-orientation="vertical" 2253 aria-labelledby="top-links184" 2254 id="top-links1846abd94b5ec419" 2255 class="lg:absolute left-0 top-full bg-inherit list-none w-full lg:w-auto lg:bg-header-top flex-col p-2 -ml-2 pt-4 hidden" 2256 :class="openSubmenuId === '184' ? 'z-40' : ''" 2257 x-cloak 2258 > 2259 <li class="header-top-links-menu__item whitespace-nowrap" role="menuitem"> 2260 <a 2261 href="https://www.roblox.com/pl/games/86253893074445/Treflandia-Wielka-Przygoda-Pomagaj-zwierz-tom" 2262 data-menu="menu-620" class="__inner-link" target="_blank" rel="noopener" > 2263 Treflandia na Roblox </a> 2264 2265 </li> 2266 <li class="header-top-links-menu__item whitespace-nowrap" role="menuitem"> 2267 <a 2268 href="https://www.nintendo.com/us/search/#cat=gme&f=softwarePublisher&softwarePublisher=Trefl%20S.A" 2269 data-menu="menu-621" class="__inner-link" target="_blank" rel="noopener" > 2270 Gry na Nintendo </a> 2271 2272 </li> 2273 <li class="header-top-links-menu__item whitespace-nowrap" role="menuitem"> 2274 <a 2275 href="https://store.steampowered.com/app/2606190/Spy_Guy_Hidden_Objects_Deluxe_Edition/?beta=1" 2276 data-menu="menu-622" class="__inner-link" target="_blank" rel="noopener" > 2277 Gry na PC (Steam) </a> 2278 2279 </li> 2280 <li class="header-top-links-menu__item whitespace-nowrap" role="menuitem"> 2281 <a 2282 href="https://apps.apple.com/pl/developer/trefl-sa/id896381365?l=pl" 2283 data-menu="menu-623" class="__inner-link" target="_blank" rel="noopener" > 2284 Gry mobilne (Apple IOS) </a> 2285 2286 </li> 2287 <li class="header-top-links-menu__item whitespace-nowrap" role="menuitem"> 2288 <a 2289 href="https://play.google.com/store/apps/dev?id=4662821842287727686&hl=pl" 2290 data-menu="menu-624" class="__inner-link" target="_blank" rel="noopener" > 2291 Gry mobilne (Android) </a> 2292 2293 </li> 2294 </ul> 2295 </li> 2296
2296<script> 2297 function topMenu_184() { 2298 return { 2299 openSubmenuId: null, 2300 toggleSubmenu(id, state, event) { 2301 const doNotFocus = event.type === 'pointerenter' || event.type === 'pointerleave'; 2302 2303 if (state === true) { 2304 this.openSubmenuId = id; 2305 } else if (state === false) { 2306 this.openSubmenuId = null; 2307 } else { 2308 this.openSubmenuId = this.openSubmenuId === id ? null : id; 2309 } 2310 2311 if (this.openSubmenuId) { 2312 const submenu = document.getElementById('top-links' + id); 2313 if (submenu && !doNotFocus) { 2314 const firstChild = submenu.querySelector('li a'); 2315 if (firstChild) { 2316 setTimeout(() => { 2317 firstChild.focus({ focusVisible: true }); 2318 }, 0); 2319 } 2320 } 2321 2322 this.$refs.button.setAttribute( 2323 'aria-label', 2324 'Zamknij menu eGames' 2325 ); 2326 } else { 2327 const button = document.getElementById('top-links-' + id); 2328 if (button && !doNotFocus) { 2329 button.focus({ focusVisible: true }); 2330 } 2331 2332 this.$refs.button.setAttribute( 2333 'aria-label', 2334 'Otwórz menu eGames' 2335 ); 2336 } 2337 }, 2338 }; 2339 } 2340 </script>
2340 2341 <li class="last:hidden" role="separator" aria-hidden="true"> | </li> 2342 <li class="header-top-links-menu__item" role="menuitem"> <a 2343 href="/blog" 2344 data-menu="menu-185" class="__link" > 2345 Blog </a> 2346 2347</li> 2348 <li class="last:hidden" role="separator" aria-hidden="true"> | </li> 2349 <li class="header-top-links-menu__item" role="menuitem"> <a 2350 href="/contact" 2351 data-menu="menu-187" class="__link" > 2352 Kontakt </a> 2353 2354</li> 2355 <li class="last:hidden" role="separator" aria-hidden="true"> | </li> 2356 </ul> 2357</div></div><div class="menu-mobile-submenu h-full level2" x-ref="menu-46"><div class="bg-primary h-14 w-full flex items-center text-white z-10 sticky top-0 justify-between pl-10 pr-3"> 2358<a href="https://www.trefl.com/puzzle" 2359 class="cursor-pointer snowdog-menu-link-topmenu-mobile 2360 menu-mobile-parent-link " 2361> 2362 Puzzle</a> 2363<button type="button" 2364 @click="closeSubmenu('menu-46')" 2365 class="w-10 h-10 flex items-center justify-center" 2366 ><svg xmlns="http://www.w3.org/2000/svg" width="6" height="10" viewBox="0 0 6 10" fill="none" class="text-gray-light" role="img"><path fill="currentColor" fill-rule="evenodd" d="M5.769.231a.79.79 0 0 1 0 1.117L2.116 5 5.77 8.652A.79.79 0 0 1 4.652 9.77l-4.21-4.21a.79.79 0 0 1 0-1.117l4.21-4.21a.79.79 0 0 1 1.117 0Z" clip-rule="evenodd"/><title>arrow-left</title></svg> 2367</button></div><div class="border-b border-gray parent-heading" data-level="2"> 2368 <button @click.prevent="closeSubmenu('menu-46')" class="text-black outline-none active:bg-gray-light aspect-square flex size-10 items-center justify-center"> 2369 <svg xmlns="http://www.w3.org/2000/svg" width="6" height="10" viewBox="0 0 6 10" fill="none" role="img"><path fill="currentColor" fill-rule="evenodd" d="M5.769.231a.79.79 0 0 1 0 1.117L2.116 5 5.77 8.652A.79.79 0 0 1 4.652 9.77l-4.21-4.21a.79.79 0 0 1 0-1.117l4.21-4.21a.79.79 0 0 1 1.117 0Z" clip-rule="evenodd"/><title>arrow-left</title></svg> 2370 </button> 2371<a href="https://www.trefl.com/puzzle" 2372 class="cursor-pointer snowdog-menu-link-topmenu-mobile 2373 is-parent " 2374> 2375 Puzzle</a> 2376 <button @click.prevent="openSubmenu('menu-46')" class="text-black outline-none active:bg-gray-light aspect-square flex size-10 items-center justify-center"> 2377 <svg xmlns="http://www.w3.org/2000/svg" width="6" height="10" viewBox="0 0 6 10" fill="none" role="img"><path fill="currentColor" fill-rule="evenodd" d="M.231 9.769a.79.79 0 0 1 0-1.117L3.884 5 .23 1.348A.79.79
23770 0 1 1.348.23l4.21 4.21a.79.79 0 0 1 0 1.117l-4.21 4.21a.79.79 0 0 1-1.117 0Z" clip-rule="evenodd"/><title>arrow-right</title></svg> 2378 </button> 2379</div><ul class="level2"><li class="level2"> 2380 <button @click.prevent="closeSubmenu('menu-361')" class="text-black outline-none active:bg-gray-light aspect-square flex size-10 items-center justify-center"> 2381 <svg xmlns="http://www.w3.org/2000/svg" width="6" height="10" viewBox="0 0 6 10" fill="none" role="img"><path fill="currentColor" fill-rule="evenodd" d="M5.769.231a.79.79 0 0 1 0 1.117L2.116 5 5.77 8.652A.79.79 0 0 1 4.652 9.77l-4.21-4.21a.79.79 0 0 1 0-1.117l4.21-4.21a.79.79 0 0 1 1.117 0Z" clip-rule="evenodd"/><title>arrow-left</title></svg> 2382 </button> 2383<a href="https://www.trefl.com/puzzle/dla-dzieci" 2384 class="cursor-pointer snowdog-menu-link-topmenu-mobile 2385 is-parent " 2386> 2387 Puzzle dla dzieci</a> 2388 <button @click.prevent="openSubmenu('menu-361')" class="text-black outline-none active:bg-gray-light aspect-square flex size-10 items-center justify-center"> 2389 <svg xmlns="http://www.w3.org/2000/svg" width="6" height="10" viewBox="0 0 6 10" fill="none" role="img"><path fill="currentColor" fill-rule="evenodd" d="M.231 9.769a.79.79 0 0 1 0-1.117L3.884 5 .23 1.348A.79.79
23890 0 1 1.348.23l4.21 4.21a.79.79 0 0 1 0 1.117l-4.21 4.21a.79.79 0 0 1-1.117 0Z" clip-rule="evenodd"/><title>arrow-right</title></svg> 2390 </button> 2391</li><li class="level2"> 2392<a href="https://www.trefl.com/puzzle/dla-doroslych" 2393 class="cursor-pointer snowdog-menu-link-topmenu-mobile 2394 " 2395> 2396 Puzzle dla dorosÅych</a> 2397</li><li class="level2"> 2398<a href="https://www.trefl.com/puzzle/akcesoria" 2399 class="cursor-pointer snowdog-menu-link-topmenu-mobile 2400 " 2401> 2402 Akcesoria do puzzli</a> 2403</li><li class="level2"> 2404<a href="https://www.trefl.com/puzzle/500-elementow" 2405 class="cursor-pointer snowdog-menu-link-topmenu-mobile 2406 " 2407> 2408 Puzzle 500 elementów</a> 2409</li><li class="level2"> 2410<a href="https://www.trefl.com/puzzle/1000-elementow" 2411 class="cursor-pointer snowdog-menu-link-topmenu-mobile 2412 " 2413> 2414 Puzzle 1000 elementów</a> 2415</li><li class="level2"> 2416<a href="https://www.trefl.com/puzzle/1500-elementow" 2417 class="cursor-pointer snowdog-menu-link-topmenu-mobile 2418 " 2419> 2420 Puzzle 1500 elementów</a> 2421</li><li class="level2"> 2422<a href="https://www.trefl.com/puzzle/2000-elementow" 2423 class="cursor-pointer snowdog-menu-link-topmenu-mobile 2424 " 2425> 2426 Puzzle 2000 elementów</a> 2427</li><li class="level2"> 2428<a href="https://www.trefl.com/puzzle/3000-elementow" 2429 class="cursor-pointer snowdog-menu-link-topmenu-mobile 2430 " 2431> 2432 Puzzle 3000 elementów</a> 2433</li><li class="level2"> 2434<a href="https://www.trefl.com/puzzle/4000-elementow" 2435 class="cursor-pointer snowdog-menu-link-topmenu-mobile 2436 " 2437> 2438 Puzzle 4000 elementów</a> 2439</li><li class="level2"> 2440<a href="https://www.trefl.com/puzzle/6000-elementow" 2441 class="cursor-pointer snowdog-menu-link-topmenu-mobile 2442 " 2443> 2444 Puzzle 6000 elementów</a> 2445</li><li class="level2"> 2446<a href="https://www.trefl.com/puzzle/8000-elementow" 2447 class="cursor-pointer snowdog-menu-link-topmenu-mobile 2448 " 2449> 2450 Puzzle 8000 elementów</a> 2451</li><li class="level2"> 2452<a href="https://www.trefl.com/puzzle/prime-uft/prime-9000" 2453 class="cursor-pointer snowdog-menu-link-topmenu-mobile 2454 " 2455> 2456 Puzzle 9000 elementów</a> 2457</li><li class="level2"> 2458 <a class="cursor-pointer snowdog-menu-link-topmenu-mobile " 2459 href="https://www.trefl.com/puzzle-premium-plus-quality-10000-el-windows-of-the-seasons-81051" 2460 data-menu="menu-631" > 2461 Puzzle 10 000 elementów </a> 2462</li><li class="level2"> 2463<a href="https://www.trefl.com/puzzle/prime-uft/prime-13500" 2464 class="cursor-pointer snowdog-menu-link-topmenu-mobile 2465 " 2466> 2467 Puzzle 13 500 elementów</a> 2468</li><li class="level2"> 2469 <a class="cursor-pointer snowdog-menu-link-topmenu-mobile " 2470 href="https://www.trefl.com/puzzle-prime-21000-el-earth-chronicles-from-the-creation-to-the-future-81040" 2471 data-menu="menu-266" > 2472 Puzzle 21 000 elementów </a> 2473</li><li class="level2"> 2474<a href="https://www.trefl.com/puzzle/puzzle-premium-plus-quality" 2475 class="cursor-pointer snowdog-menu-link-topmenu-mobile 2476 " 2477> 2478 Puzzle Premium Plus Quality</a> 2479</li><li class="level2"> 2480<a href="https://www.trefl.com/puzzle/drewniane" 2481 class="cursor-pointer snowdog-menu-link-topmenu-mobile 2482 " 2483> 2484 Puzzle drewniane</a> 2485</li><li class="level2"> 2486<a href="https://www.trefl.com/puzzle/puzzle-filmowe" 2487 class="cursor-pointer snowdog-menu-link-topmenu-mobile 2488 " 2489> 2490 Puzzle filmowe</a> 2491</li><li class="level2"> 2492<a href="https://www.trefl.com/puzzle/puzzle-jubileuszowe" 2493 class="cursor-pointer snowdog-menu-link-topmenu-mobile 2494 " 2495> 2496 Puzzle jubileuszowe na 40-lecie</a> 2497</li><li class="level2"> 2498<a href="https://www.trefl.com/puzzle/puzzle-kosmos" 2499 class="cursor-pointer snowdog-menu-link-topmenu-mobile 2500 " 2501> 2502 Puzzle kosmos</a> 2503</li><li class="level2"> 2504<a href="https://www.trefl.com/puzzle/puzzle-krajobrazy" 2505 class="cursor-pointer snowdog-menu-link-topmenu-mobile 2506 " 2507> 2508 Puzzle krajobrazy</a> 2509</li><li class="level2"> 2510<a href="https://www.trefl.com/puzzle/puzzle-kulinarne" 2511 class="cursor-pointer snowdog-menu-link-topmenu-mobile 2512 " 2513> 2514 Puzzle kulinarne</a> 2515</li><li class="level2"> 2516<a href="https://www.trefl.com/puzzle/puzzle-mapy" 2517 class="cursor-pointer snowdog-menu-link-topmenu-mobile 2518 " 2519> 2520 Puzzle mapy</a> 2521</li><li class="level2"> 2522<a href="https://www.trefl.com/puzzle/puzzle-miasta" 2523 class="cursor-pointer snowdog-menu-link-topmenu-mobile 2524 " 2525> 2526 Puzzle miasta</a> 2527</li><li class="level2"> 2528<a href="https://www.trefl.com/puzzle/puzzle-obrazy" 2529 class="cursor-pointer snowdog-menu-link-topmenu-mobile 2530 " 2531> 2532 Puzzle obrazy</a> 2533</li><li class="level2"> 2534<a href="https://www.trefl.com/puzzle/puzzle-panoramiczne" 2535 class="cursor-pointer snowdog-menu-link-topmenu-mobile 2536 " 2537> 2538 Puzzle panoramiczne</a> 2539</li><li class="level2"> 2540<a href="https://www.trefl.com/puzzle/puzzle-samochody" 2541 class="cursor-pointer snowdog-menu-link-topmenu-mobile 2542 " 2543>
2544 Puzzle samochody</a> 2545</li><li class="level2"> 2546<a href="https://www.trefl.com/puzzle/puzzle-swiateczne" 2547 class="cursor-pointer snowdog-menu-link-topmenu-mobile 2548 " 2549> 2550 Puzzle ÅwiÄ teczne</a> 2551</li><li class="level2"> 2552<a href="https://www.trefl.com/puzzle/puzzloramy" 2553 class="cursor-pointer snowdog-menu-link-topmenu-mobile 2554 " 2555> 2556 PuzzloRamy</a> 2557</li></ul></div><div class="menu-mobile-submenu h-full level3" x-ref="menu-361"><div class="bg-primary h-14 w-full flex items-center text-white z-10 sticky top-0 justify-between pl-10 pr-3"> 2558<a href="https://www.trefl.com/puzzle/dla-dzieci" 2559 class="cursor-pointer snowdog-menu-link-topmenu-mobile 2560 menu-mobile-parent-link " 2561> 2562 Puzzle dla dzieci</a> 2563<button type="button" 2564 @click="closeSubmenu('menu-361')" 2565 class="w-10 h-10 flex items-center justify-center" 2566 ><svg xmlns="http://www.w3.org/2000/svg" width="6" height="10" viewBox="0 0 6 10" fill="none" class="text-gray-light" role="img"><path fill="currentColor" fill-rule="evenodd" d="M5.769.231a.79.79 0 0 1 0 1.117L2.116 5 5.77 8.652A.79.79 0 0 1 4.652 9.77l-4.21-4.21a.79.79 0 0 1 0-1.117l4.21-4.21a.79.79 0 0 1 1.117 0Z" clip-rule="evenodd"/><title>arrow-left</title></svg> 2567</button></div><div class="border-b border-gray parent-heading" data-level="3"> 2568 <button @click.prevent="closeSubmenu('menu-361')" class="text-black outline-none active:bg-gray-light aspect-square flex size-10 items-center justify-center"> 2569 <svg xmlns="http://www.w3.org/2000/svg" width="6" height="10" viewBox="0 0 6 10" fill="none" role="img"><path fill="currentColor" fill-rule="evenodd" d="M5.769.231a.79.79 0 0 1 0 1.117L2.116 5 5.77 8.652A.79.79 0 0 1 4.652 9.77l-4.21-4.21a.79.79 0 0 1 0-1.117l4.21-4.21a.79.79 0 0 1 1.117 0Z" clip-rule="evenodd"/><title>arrow-left</title></svg> 2570 </button> 2571<a href="https://www.trefl.com/puzzle/dla-dzieci" 2572 class="cursor-pointer snowdog-menu-link-topmenu-mobile 2573 is-parent " 2574> 2575 Puzzle dla dzieci</a> 2576 <button @click.prevent="openSubmenu('menu-361')" class="text-black outline-none active:bg-gray-light aspect-square flex size-10 items-center justify-center"> 2577 <svg xmlns="http://www.w3.org/2000/svg" width="6" height="10" viewBox="0 0 6 10" fill="none" role="img"><path fill="currentColor" fill-rule="evenodd" d="M.231 9.769a.79.79 0 0 1 0-1.117L3.884 5 .23 1.348A.79.79
25770 0 1 1.348.23l4.21 4.21a.79.79 0 0 1 0 1.117l-4.21 4.21a.79.79 0 0 1-1.117 0Z" clip-rule="evenodd"/><title>arrow-right</title></svg> 2578 </button> 2579</div><ul class="level3"><li class="level3"> 2580<a href="https://www.trefl.com/puzzle/dla-dzieci/1-3-lata" 2581 class="cursor-pointer snowdog-menu-link-topmenu-mobile 2582 " 2583> 2584 Puzzle dla dzieci 1-3</a> 2585</li><li class="level3"> 2586<a href="https://www.trefl.com/puzzle/dla-dzieci/3-lata" 2587 class="cursor-pointer snowdog-menu-link-topmenu-mobile 2588 " 2589> 2590 Puzzle dla 3 latka</a> 2591</li><li class="level3"> 2592<a href="https://www.trefl.com/puzzle/dla-dzieci/4-lata" 2593 class="cursor-pointer snowdog-menu-link-topmenu-mobile 2594 " 2595> 2596 Puzzle dla 4 latka</a> 2597</li><li class="level3"> 2598<a href="https://www.trefl.com/puzzle/dla-dzieci/4-6-lat" 2599 class="cursor-pointer snowdog-menu-link-topmenu-mobile 2600 " 2601> 2602 Puzzle dla dzieci 4-6</a> 2603</li><li class="level3"> 2604<a href="https://www.trefl.com/puzzle/dla-dzieci/6-8-lat" 2605 class="cursor-pointer snowdog-menu-link-topmenu-mobile 2606 " 2607> 2608 Puzzle dla dzieci 6-8</a> 2609</li><li class="level3"> 2610<a href="https://www.trefl.com/puzzle/dla-dzieci/8-10-lat" 2611 class="cursor-pointer snowdog-menu-link-topmenu-mobile 2612 " 2613> 2614 Puzzle dla dzieci 8-10</a> 2615</li><li class="level3"> 2616<a href="https://www.trefl.com/puzzle/dla-dzieci/auta" 2617 class="cursor-pointer snowdog-menu-link-topmenu-mobile 2618 " 2619> 2620 Puzzle Auta</a> 2621</li><li class="level3"> 2622<a href="https://www.trefl.com/puzzle/dla-dzieci/barbie" 2623 class="cursor-pointer snowdog-menu-link-topmenu-mobile 2624 " 2625> 2626 Puzzle Barbie</a> 2627</li><li class="level3"> 2628<a href="#" 2629 class="cursor-pointer snowdog-menu-link-topmenu-mobile 2630 " 2631> 2632 Puzzle Batman</a> 2633</li><li class="level3"> 2634<a href="https://www.trefl.com/puzzle/dla-dzieci/bing" 2635 class="cursor-pointer snowdog-menu-link-topmenu-mobile 2636 " 2637> 2638 Puzzle Bing</a> 2639</li><li class="level3"> 2640<a href="https://www.trefl.com/puzzle/dla-dzieci/bob-budowniczy" 2641 class="cursor-pointer snowdog-menu-link-topmenu-mobile 2642 " 2643> 2644 Puzzle Bob Budowniczy</a> 2645</li><li class="level3"> 2646<a href="https://www.trefl.com/puzzle/dla-dzieci/enchantimals" 2647 class="cursor-pointer snowdog-menu-link-topmenu-mobile 2648 " 2649> 2650 Puzzle Enchantimals</a> 2651</li><li class="level3"> 2652<a href="#" 2653 class="cursor-pointer snowdog-menu-link-topmenu-mobile 2654 " 2655> 2656 Puzzle Harry Potter</a> 2657</li><li class="level3"> 2658<a href="https://www.trefl.com/puzzle/dla-dzieci/jej-wysokosc-zosia" 2659 class="cursor-pointer snowdog-menu-link-topmenu-mobile 2660 " 2661> 2662 Puzzle Jej WysokoÅÄ Zosia</a> 2663</li><li class="level3"> 2664<a href="https://www.trefl.com/puzzle/dla-dzieci/kicia-kocia" 2665 class="cursor-pointer snowdog-menu-link-topmenu-mobile 2666 " 2667> 2668 Puzzle Kicia Kocia</a> 2669</li><li class="level3"> 2670<a href="https://www.trefl.com/puzzle/dla-dzieci/puzzle-koci-domek-gabi" 2671 class="cursor-pointer snowdog-menu-link-topmenu-mobile 2672 " 2673> 2674 Puzzle Koci Domek Gabi</a> 2675</li><li class="level3"> 2676<a href="https://www.trefl.com/puzzle/dla-dzieci/kraina-lodu" 2677 class="cursor-pointer snowdog-menu-link-topmenu-mobile 2678 " 2679> 2680 Puzzle Kraina Lodu (Frozen)</a> 2681</li><li class="level3"> 2682<a href="https://www.trefl.com/puzzle/dla-dzieci/kubus-puchatek" 2683 class="cursor-pointer snowdog-menu-link-topmenu-mobile 2684 " 2685> 2686 Puzzle KubuÅ Puchatek</a> 2687</li><li class="level3"> 2688<a href="https://www.trefl.com/puzzle/dla-dzieci/minionki" 2689 class="cursor-pointer snowdog-menu-link-topmenu-mobile 2690 " 2691> 2692 Puzzle Minionki</a> 2693</li><li class="level3"> 2694<a href="https://www.trefl.com/puzzle/dla-dzieci/minnie" 2695 class="cursor-pointer snowdog-menu-link-topmenu-mobile 2696 " 2697> 2698 Puzzle Minnie</a> 2699</li><li class="level3"> 2700<a href="https://www.trefl.com/puzzle/dla-dzieci/muminki" 2701 class="cursor-pointer snowdog-menu-link-topmenu-mobile 2702 " 2703> 2704 Puzzle Muminki</a> 2705</li><li class="level3"> 2706<a href="https://www.trefl.com/puzzle/dla-dzieci/my-little-pony" 2707 class="cursor-pointer snowdog-menu-link-topmenu-mobile 2708 " 2709> 2710 Puzzle My Little Pony</a> 2711</li><li class="level3"> 2712<a href="https://www.trefl.com/puzzle/dla-dzieci/myszka-miki" 2713 class="cursor-pointer snowdog-menu-link-topmenu-mobile 2714 " 2715> 2716 Puzzle Myszka Miki</a> 2717</li><li class="level3"> 2718<a href="https://www.trefl.com/puzzle/dla-dzieci/psi-patrol" 2719 class="cursor-pointer snowdog-menu-link-topmenu-mobile 2720 " 2721> 2722 Puzzle Psi Patrol</a> 2723</li><li class="level3"> 2724<a href="https://www.trefl.com/puzzle/dla-dzieci/rodzina-treflikow" 2725 class="cursor-pointer snowdog-menu-link-topmenu-mobile 2726 " 2727> 2728 Puzzle Rodzina Treflików</a> 2729</li><li class="level3"> 2730<a href="#" 2731 class="cursor-pointer snowdog-menu-link-topmenu-mobile 2732 " 2733> 2734 Puzzle Scooby Doo</a> 2735</li><li class="level3"> 2736<a href="https://www.trefl.com/puzzle/dla-dzieci/star-wars" 2737 class="cursor-pointer snowdog-menu-link-topmenu-mobile 2738 " 2739> 2740 Puzzle Star Wars</a> 2741</li><li class="level3"> 2742<a href="https://www.trefl.com/puzzle/dla-dzieci/strazak-sam" 2743 class="cursor-pointer snowdog-menu-link-topmenu-mobile 2744 " 2745> 2746 Puzzle Strażak Sam</a> 2747</li><li class="level3"> 2748<a href="https://www.trefl.com/puzzle/dla-dzieci/swinka-peppa" 2749 class="cursor-pointer snowdog-menu-link-topmenu-mobile 2750 " 2751> 2752 Puzzle Åwinka Peppa</a> 2753</li><li class="level3"> 2754<a href="https://www.trefl.com/puzzle/dla-dzieci/tomek-i-przyjaciele" 2755 class="cursor-pointer snowdog-menu-link-topmenu-mobile 2756 " 2757> 2758 Puzzle Tomek i Przyjaciele</a> 2759</li></ul></div><div class="menu-mobile-submenu h-full level2" x-ref="menu-51"><div class="bg-primary h-14 w-full flex items-center text-white z-10 sticky top-0 justify-between pl-10 pr-3"> 2760<a href="https://www.trefl.com/gry" 2761 class="cursor-pointer snowdog-menu-link-topmenu-mobile 2762 menu-mobile-parent-link " 2763> 2764 Gry planszowe</a> 2765<button type="button" 2766 @click="closeSubmenu('menu-51')" 2767 class="w-10 h-10 flex items-center justify-center" 2768 ><svg xmlns="http://www.w3.org/2000/svg" width="6" height="10" viewB
2768ox="0 0 6 10" fill="none" class="text-gray-light" role="img"><path fill="currentColor" fill-rule="evenodd" d="M5.769.231a.79.79 0 0 1 0 1.117L2.116 5 5.77 8.652A.79.79 0 0 1 4.652 9.77l-4.21-4.21a.79.79 0 0 1 0-1.117l4.21-4.21a.79.79 0 0 1 1.117 0Z" clip-rule="evenodd"/><title>arrow-left</title></svg> 2769</button></div><div class="border-b border-gray parent-heading" data-level="2"> 2770 <button @click.prevent="closeSubmenu('menu-51')" class="text-black outline-none active:bg-gray-light aspect-square flex size-10 items-center justify-center"> 2771 <svg xmlns="http://www.w3.org/2000/svg" width="6" height="10" viewBox="0 0 6 10" fill="none" role="img"><path fill="currentColor" fill-rule="evenodd" d="M5.769.231a.79.79 0 0 1 0 1.117L2.116 5 5.77 8.652A.79.79 0 0 1 4.652 9.77l-4.21-4.21a.79.79 0 0 1 0-1.117l4.21-4.21a.79.79 0 0 1 1.117 0Z" clip-rule="evenodd"/><title>arrow-left</title></svg> 2772 </button> 2773<a href="https://www.trefl.com/gry" 2774 class="cursor-pointer snowdog-menu-link-topmenu-mobile 2775 is-parent " 2776> 2777 Gry planszowe</a> 2778 <button @click.prevent="openSubmenu('menu-51')" class="text-black outline-none active:bg-gray-light aspect-square flex size-10 items-center justify-center"> 2779 <svg xmlns="http://www.w3.org/2000/svg" width="6" height="10" viewBox="0 0 6 10" fill="none" role="img"><path fill="currentColor" fill-rule="evenodd" d="M.231 9.769a.79.79 0 0 1 0-1.117L3.884 5 .23 1.348A.79.79
27790 0 1 1.348.23l4.21 4.21a.79.79 0 0 1 0 1.117l-4.21 4.21a.79.79 0 0 1-1.117 0Z" clip-rule="evenodd"/><title>arrow-right</title></svg> 2780 </button> 2781</div><ul class="level2"><li class="level2"> 2782<a href="https://www.trefl.com/gry/dla-dzieci" 2783 class="cursor-pointer snowdog-menu-link-topmenu-mobile 2784 " 2785> 2786 Gry dla dzieci</a> 2787</li><li class="level2"> 2788<a href="https://www.trefl.com/gry/rodzinne" 2789 class="cursor-pointer snowdog-menu-link-topmenu-mobile 2790 " 2791> 2792 Gry rodzinne</a> 2793</li><li class="level2"> 2794<a href="https://www.trefl.com/gry/towarzyskie" 2795 class="cursor-pointer snowdog-menu-link-topmenu-mobile 2796 " 2797> 2798 Gry towarzyskie</a> 2799</li><li class="level2"> 2800<a href="https://www.trefl.com/gry/edukacyjne" 2801 class="cursor-pointer snowdog-menu-link-topmenu-mobile 2802 " 2803> 2804 Gry edukacyjne</a> 2805</li><li class="level2"> 2806<a href="https://www.trefl.com/gry/dla-grup-przedszkoli" 2807 class="cursor-pointer snowdog-menu-link-topmenu-mobile 2808 " 2809> 2810 Gry dla grup i przedszkoli</a> 2811</li><li class="level2"> 2812<a href="https://www.trefl.com/gry/planszowe-1" 2813 class="cursor-pointer snowdog-menu-link-topmenu-mobile 2814 " 2815> 2816 Gry planszowe</a> 2817</li><li class="level2"> 2818<a href="https://www.trefl.com/gry/karciane" 2819 class="cursor-pointer snowdog-menu-link-topmenu-mobile 2820 " 2821> 2822 Gdy karciane</a> 2823</li><li class="level2"> 2824<a href="https://www.trefl.com/gry/domino-i-memos" 2825 class="cursor-pointer snowdog-menu-link-topmenu-mobile 2826 " 2827> 2828 Domino i Memos</a> 2829</li><li class="level2"> 2830<a href="https://www.trefl.com/gry/dla-3-latka" 2831 class="cursor-pointer snowdog-menu-link-topmenu-mobile 2832 " 2833> 2834 Gry dla 3 latka</a> 2835</li><li class="level2"> 2836<a href="https://www.trefl.com/gry/dla-4-latka" 2837 class="cursor-pointer snowdog-menu-link-topmenu-mobile 2838 " 2839> 2840 Gry dla 4 latka</a> 2841</li><li class="level2"> 2842<a href="https://www.trefl.com/gry/dla-dzieci-4-6-lat" 2843 class="cursor-pointer snowdog-menu-link-topmenu-mobile 2844 " 2845> 2846 Gry dla dzieci 4-6 lat</a> 2847</li><li class="level2"> 2848<a href="https://www.trefl.com/gry/dla-dzieci-6-8-lat" 2849 class="cursor-pointer snowdog-menu-link-topmenu-mobile 2850 " 2851> 2852 Gry dla dzieci 6-8 lat</a> 2853</li><li class="level2"> 2854<a href="https://www.trefl.com/gry/dla-dzieci-8-10-lat" 2855 class="cursor-pointer snowdog-menu-link-topmenu-mobile 2856 " 2857> 2858 Gry dla dzieci 8-10 lat</a> 2859</li><li class="level2"> 2860<a href="https://www.trefl.com/gry/dla-dzieci-12-lat" 2861 class="cursor-pointer snowdog-menu-link-topmenu-mobile 2862 " 2863> 2864 Gry dla dzieci 12+</a> 2865</li></ul></div><div class="menu-mobile-submenu h-full level2" x-ref="menu-54"><div class="bg-primary h-14 w-full flex items-center text-white z-10 sticky top-0 justify-between pl-10 pr-3"> 2866<a href="https://www.trefl.com/zabawki" 2867 class="cursor-pointer snowdog-menu-link-topmenu-mobile 2868 menu-mobile-parent-link " 2869> 2870 Zabawki</a> 2871<button type="button" 2872 @click="closeSubmenu('menu-54')" 2873 class="w-10 h-10 flex items-center justify-center" 2874 ><svg xmlns="http://www.w3.org/2000/svg" width="6" height="10" viewBox="0 0 6 10" fill="none" class="text-gray-light" role="img"><path fill="currentColor" fill-rule="evenodd" d="M5.769.231a.79.79 0 0 1 0 1.117L2.116 5 5.77 8.652A.79.79 0 0 1 4.652 9.77l-4.21-4.21a.79.79 0 0 1 0-1.117l4.21-4.21a.79.79 0 0 1 1.117 0Z" clip-rule="evenodd"/><title>arrow-left</title></svg> 2875</button></div><div class="border-b border-gray parent-heading" data-level="2"> 2876 <button @click.prevent="closeSubmenu('menu-54')" class="text-black outline-none active:bg-gray-light aspect-square flex size-10 items-center justify-center"> 2877 <svg xmlns="http://www.w3.org/2000/svg" width="6" height="10" viewBox="0 0 6 10" fill="none" role="img"><path fill="currentColor" fill-rule="evenodd" d="M5.769.231a.79.79 0 0 1 0 1.117L2.116 5 5.77 8.652A.79.79
28770 0 1 4.652 9.77l-4.21-4.21a.79.79 0 0 1 0-1.117l4.21-4.21a.79.79 0 0 1 1.117 0Z" clip-rule="evenodd"/><title>arrow-left</title></svg> 2878 </button> 2879<a href="https://www.trefl.com/zabawki" 2880 class="cursor-pointer snowdog-menu-link-topmenu-mobile 2881 is-parent " 2882> 2883 Zabawki</a> 2884 <button @click.prevent="openSubmenu('menu-54')" class="text-black outline-none active:bg-gray-light aspect-square flex size-10 items-center justify-center"> 2885 <svg xmlns="http://www.w3.org/2000/svg" width="6" height="10" viewBox="0 0 6 10" fill="none" role="img"><path fill="currentColor" fill-rule="evenodd" d="M.231 9.769a.79.79 0 0 1 0-1.117L3.884 5 .23 1.348A.79.79 0 0 1 1.348.23l4.21 4.21a.79.79 0 0 1 0 1.117l-4.21 4.21a.79.79 0 0 1-1.117 0Z" clip-rule="evenodd"/><title>arrow-right</title></svg> 2886 </button> 2887</div><ul class="level2"><li class="level2"> 2888<a href="https://www.trefl.com/zabawki/dla-niemowlaka" 2889 class="cursor-pointer snowdog-menu-link-topmenu-mobile 2890 " 2891> 2892 Zabawki dla niemowlaka</a> 2893</li><li class="level2"> 2894<a href="https://www.trefl.com/zabawki/1-3-lata" 2895 class="cursor-pointer snowdog-menu-link-topmenu-mobile 2896 " 2897> 2898 Zabawki dla dzieci 1-3</a> 2899</li><li class="level2"> 2900<a href="https://www.trefl.com/zabawki/3-lata" 2901 class="cursor-pointer snowdog-menu-link-topmenu-mobile 2902 " 2903> 2904 Zabawki dla 3 latka</a> 2905</li><li class="level2"> 2906<a href="https://www.trefl.com/zabawki/4-lata" 2907 class="cursor-pointer snowdog-menu-link-topmenu-mobile 2908 " 2909> 2910 Zabawki dla 4 latka</a> 2911</li><li class="level2"> 2912<a href="https://www.trefl.com/zabawki/4-6-lat" 2913 class="cursor-pointer snowdog-menu-link-topmenu-mobile 2914 " 2915> 2916 Zabawki dla dzieci 4-6 lat</a> 2917</li><li class="level2"> 2918<a href="https://www.trefl.com/zabawki/6-8-lat" 2919 class="cursor-pointer snowdog-menu-link-topmenu-mobile 2920 " 2921> 2922 Zabawki dla dzieci 6-8 lat</a> 2923</li><li class="level2"> 2924<a href="https://www.trefl.com/zabawki/8-10-lat" 2925 class="cursor-pointer snowdog-menu-link-topmenu-mobile 2926 " 2927> 2928 Zabawki dla dzieci 8-10 lat</a> 2929</li><li class="level2"> 2930<a href="https://www.trefl.com/zabawki/do-kapieli" 2931 class="cursor-pointer snowdog-menu-link-topmenu-mobile 2932 " 2933> 2934 Zabawki do kÄ pieli</a> 2935</li><li class="level2"> 2936<a href="https://www.trefl.com/zabawki/drewniane" 2937 class="cursor-pointer snowdog-menu-link-topmenu-mobile 2938 " 2939> 2940 Zabawki drewniane</a> 2941</li><li class="level2"> 2942<a href="https://www.trefl.com/zabawki/interaktywne" 2943 class="cursor-pointer snowdog-menu-link-topmenu-mobile 2944 " 2945> 2946 Zabawki interaktywne</a> 2947</li><li class="level2"> 2948<a href="https://www.trefl.com/zabawki/klocki" 2949 class="cursor-pointer snowdog-menu-link-topmenu-mobile 2950 " 2951> 2952 Klocki</a> 2953</li><li class="level2"> 2954<a href="https://www.trefl.com/zabawki/klocki/klocki-ceramiczne" 2955 class="cursor-pointer snowdog-menu-link-topmenu-mobile 2956 " 2957> 2958 Klocki ceramiczne Brick Trick</a> 2959</li><li class="level2"> 2960<a href="https://www.trefl.com/zabawki/klocki/konstrukcyjne" 2961 class="cursor-pointer snowdog-menu-link-topmenu-mobile 2962 " 2963> 2964 Klocki konstrukcyjne</a> 2965</li><li class="level2"> 2966<a href="https://www.trefl.com/zabawki/magiczne-sztuczki" 2967 class="cursor-pointer snowdog-menu-link-topmenu-mobile 2968 " 2969> 2970 Magiczne sztuczki</a> 2971</li><li class="level2"> 2972<a href="https://www.trefl.com/zabawki/modele" 2973 class="cursor-pointer snowdog-menu-link-topmenu-mobile 2974 " 2975> 2976 Modele aut i pojazdów</a> 2977</li><li class="level2"> 2978<a href="https://www.trefl.com/zabawki/outdoorowe" 2979 class="cursor-pointer snowdog-menu-link-topmenu-mobile 2980 " 2981> 2982 Zabawki outdoorowe</a> 2983</li><li class="level2"> 2984<a href="https://www.trefl.com/zabawki/pilki" 2985 class="cursor-pointer snowdog-menu-link-topmenu-mobile 2986 " 2987> 2988 PiÅki</a> 2989</li><li class="level2"> 2990<a href="https://www.trefl.com/zabawki/kreatywne" 2991 class="cursor-pointer snowdog-menu-link-topmenu-mobile 2992 " 2993> 2994 Zabawki kreatywne</a> 2995</li><li class="level2"> 2996<a href="https://www.trefl.com/zabawki/sensoryczne" 2997 class="cursor-pointer snowdog-menu-link-topmenu-mobile 2998 " 2999> 3000 Zabawki sensoryczne</a> 3001</li><li class="level2"> 3002<a href="https://www.trefl.com/zabawki/hape" 3003 class="cursor-pointer snowdog-menu-link-topmenu-mobile 3004 " 3005> 3006 Zabawki Hape</a> 3007</li><li class="level2"> 3008<a href="https://www.trefl.com/zabawki/zestawy-naukowe" 3009 class="cursor-pointer snowdog-menu-link-topmenu-mobile 3010 " 3011> 3012 Zabawki naukowe</a> 3013</li></ul></div><div class="menu-mobile-submenu h-full level2" x-ref="menu-55"><div class="bg-primary h-14 w-full flex items-center text-white z-10 sticky top-0 justify-between pl-10 pr-3"> 3014<a href="https://www.trefl.com/ksiazki" 3015 class="cursor-pointer snowdog-menu-link-topmenu-mobile 3016 menu-mobile-parent-link " 3017> 3018 KsiÄ Å¼ki</a> 3019<button type="button" 3020 @click="closeSubmenu('menu-55')" 3021 class="w-10 h-10 flex items-center justify-center" 3022 ><svg xmlns="http://www.w3.org/2000/svg" width="6" height="10" viewB
3022ox="0 0 6 10" fill="none" class="text-gray-light" role="img"><path fill="currentColor" fill-rule="evenodd" d="M5.769.231a.79.79 0 0 1 0 1.117L2.116 5 5.77 8.652A.79.79 0 0 1 4.652 9.77l-4.21-4.21a.79.79 0 0 1 0-1.117l4.21-4.21a.79.79 0 0 1 1.117 0Z" clip-rule="evenodd"/><title>arrow-left</title></svg> 3023</button></div><div class="border-b border-gray parent-heading" data-level="2"> 3024 <button @click.prevent="closeSubmenu('menu-55')" class="text-black outline-none active:bg-gray-light aspect-square flex size-10 items-center justify-center"> 3025 <svg xmlns="http://www.w3.org/2000/svg" width="6" height="10" viewBox="0 0 6 10" fill="none" role="img"><path fill="currentColor" fill-rule="evenodd" d="M5.769.231a.79.79 0 0 1 0 1.117L2.116 5 5.77 8.652A.79.79 0 0 1 4.652 9.77l-4.21-4.21a.79.79 0 0 1 0-1.117l4.21-4.21a.79.79 0 0 1 1.117 0Z" clip-rule="evenodd"/><title>arrow-left</title></svg> 3026 </button> 3027<a href="https://www.trefl.com/ksiazki" 3028 class="cursor-pointer snowdog-menu-link-topmenu-mobile 3029 is-parent " 3030> 3031 KsiÄ Å¼ki</a> 3032 <button @click.prevent="openSubmenu('menu-55')" class="text-black outline-none active:bg-gray-light aspect-square flex size-10 items-center justify-center"> 3033 <svg xmlns="http://www.w3.org/2000/svg" width="6" height="10" viewBox="0 0 6 10" fill="none" role="img"><path fill="currentColor" fill-rule="evenodd" d="M.231 9.769a.79.79 0 0 1 0-1.117L3.884 5 .23 1.348A.79.79
30330 0 1 1.348.23l4.21 4.21a.79.79 0 0 1 0 1.117l-4.21 4.21a.79.79 0 0 1-1.117 0Z" clip-rule="evenodd"/><title>arrow-right</title></svg> 3034 </button> 3035</div><ul class="level2"><li class="level2"> 3036<a href="https://www.trefl.com/ksiazki/dla-dzieci/dla-dzieci-1-2-lata" 3037 class="cursor-pointer snowdog-menu-link-topmenu-mobile 3038 " 3039> 3040 KsiÄ Å¼ki dla dzieci 1-2 lata</a> 3041</li><li class="level2"> 3042<a href="https://www.trefl.com/ksiazki/dla-dzieci/dla-dzieci-3-5-lat" 3043 class="cursor-pointer snowdog-menu-link-topmenu-mobile 3044 " 3045> 3046 KsiÄ Å¼ki dla dzieci 3-5 lat</a> 3047</li><li class="level2"> 3048<a href="https://www.trefl.com/ksiazki/dla-dzieci/dla-dzieci-6-8-lat" 3049 class="cursor-pointer snowdog-menu-link-topmenu-mobile 3050 " 3051> 3052 KsiÄ Å¼ki dla dzieci 6-8 lat</a> 3053</li><li class="level2"> 3054<a href="https://www.trefl.com/ksiazki/dla-dzieci/dla-dzieci-9-12-lat" 3055 class="cursor-pointer snowdog-menu-link-topmenu-mobile 3056 " 3057> 3058 KsiÄ Å¼ki dla dzieci 9-12 lat</a> 3059</li><li class="level2"> 3060<a href="https://www.trefl.com/ksiazki/ksiazki-dla-rodzicow" 3061 class="cursor-pointer snowdog-menu-link-topmenu-mobile 3062 " 3063> 3064 KsiÄ Å¼ki dla rodziców</a> 3065</li><li class="level2"> 3066<a href="https://www.trefl.com/ksiazki/kolorowanki" 3067 class="cursor-pointer snowdog-menu-link-topmenu-mobile 3068 " 3069> 3070 Kolorowanki</a> 3071</li></ul></div><div class="menu-mobile-submenu h-full level2" x-ref="menu-56"><div class="bg-primary h-14 w-full flex items-center text-white z-10 sticky top-0 justify-between pl-10 pr-3"> 3072<a href="https://www.trefl.com/rodzina-treflikow" 3073 class="cursor-pointer snowdog-menu-link-topmenu-mobile 3074 menu-mobile-parent-link " 3075> 3076 Rodzina Treflików</a> 3077<button type="button" 3078 @click="closeSubmenu('menu-56')" 3079 class="w-10 h-10 flex items-center justify-center" 3080 ><svg xmlns="http://www.w3.org/2000/svg" width="6" height="10" viewBox="0 0 6 10" fill="none" class="text-gray-light" role="img"><path fill="currentColor" fill-rule="evenodd" d="M5.769.231a.79.79 0 0 1 0 1.117L2.116 5 5.77 8.652A.79.79 0 0 1 4.652 9.77l-4.21-4.21a.79.79 0 0 1 0-1.117l4.21-4.21a.79.79 0 0 1 1.117 0Z" clip-rule="evenodd"/><title>arrow-left</title></svg> 3081</button></div><div class="border-b border-gray parent-heading" data-level="2"> 3082 <button @click.prevent="closeSubmenu('menu-56')" class="text-black outline-none active:bg-gray-light aspect-square flex size-10 items-center justify-center"> 3083 <svg xmlns="http://www.w3.org/2000/svg" width="6" height="10" viewBox="0 0 6 10" fill="none" role="img"><path fill="currentColor" fill-rule="evenodd" d="M5.769.231a.79.79 0 0 1 0 1.117L2.116 5 5.77 8.652A.79.79 0 0 1 4.652 9.77l-4.21-4.21a.79.79 0 0 1 0-1.117l4.21-4.21a.79.79 0 0 1 1.117 0Z" clip-rule="evenodd"/><title>arrow-left</title></svg> 3084 </button> 3085<a href="https://www.trefl.com/rodzina-treflikow" 3086 class="cursor-pointer snowdog-menu-link-topmenu-mobile 3087 is-parent " 3088> 3089 Rodzina Treflików</a> 3090 <button @click.prevent="openSubmenu('menu-56')" class="text-black outline-none active:bg-gray-light aspect-square flex size-10 items-center justify-center"> 3091 <svg xmlns="http://www.w3.org/2000/svg" width="6" height="10" viewBox="0 0 6 10" fill="none" role="img"><path fill="currentColor" fill-rule="evenodd" d="M.231 9.769a.79.79 0 0 1 0-1.117L3.884 5 .23 1.348A.79.79
30910 0 1 1.348.23l4.21 4.21a.79.79 0 0 1 0 1.117l-4.21 4.21a.79.79 0 0 1-1.117 0Z" clip-rule="evenodd"/><title>arrow-right</title></svg> 3092 </button> 3093</div><ul class="level2"><li class="level2"> 3094<a href="https://www.trefl.com/rodzina-treflikow/puzzle" 3095 class="cursor-pointer snowdog-menu-link-topmenu-mobile 3096 " 3097> 3098 Puzzle Rodzina Treflików</a> 3099</li><li class="level2"> 3100<a href="https://www.trefl.com/rodzina-treflikow/gry" 3101 class="cursor-pointer snowdog-menu-link-topmenu-mobile 3102 " 3103> 3104 Gry Rodzina Treflików</a> 3105</li><li class="level2"> 3106<a href="https://www.trefl.com/rodzina-treflikow/zabawki" 3107 class="cursor-pointer snowdog-menu-link-topmenu-mobile 3108 " 3109> 3110 Zabawki Rodzina Treflików</a> 3111</li><li class="level2"> 3112<a href="https://www.trefl.com/rodzina-treflikow/ksiazki" 3113 class="cursor-pointer snowdog-menu-link-topmenu-mobile 3114 " 3115> 3116 KsiÄ Å¼ki Rodzina Treflików</a> 3117</li></ul></div><div class="menu-mobile-submenu h-full level2" x-ref="menu-57"><div class="bg-primary h-14 w-full flex items-center text-white z-10 sticky top-0 justify-between pl-10 pr-3"> 3118<a href="https://www.trefl.com/prezenty" 3119 class="cursor-pointer snowdog-menu-link-topmenu-mobile 3120 menu-mobile-parent-link " 3121> 3122 Prezenty</a> 3123<button type="button" 3124 @click="closeSubmenu('menu-57')" 3125 class="w-10 h-10 flex items-center justify-center" 3126 ><svg xmlns="http://www.w3.org/2000/svg" width="6" height="10" viewBox="0 0 6 10" fill="none" class="text-gray-light" role="img"><path fill="currentColor" fill-rule="evenodd" d="M5.769.231a.79.79 0 0 1 0 1.117L2.116 5 5.77 8.652A.79.79 0 0 1 4.652 9.77l-4.21-4.21a.79.79 0 0 1 0-1.117l4.21-4.21a.79.79 0 0 1 1.117 0Z" clip-rule="evenodd"/><title>arrow-left</title></svg> 3127</button></div><div class="border-b border-gray parent-heading" data-level="2"> 3128 <button @click.prevent="closeSubmenu('menu-57')" class="text-black outline-none active:bg-gray-light aspect-square flex size-10 items-center justify-center"> 3129 <svg xmlns="http://www.w3.org/2000/svg" width="6" height="10" viewBox="0 0 6 10" fill="none" role="img"><path fill="currentColor" fill-rule="evenodd" d="M5.769.231a.79.79 0 0 1 0 1.117L2.116 5 5.77 8.652A.79.79 0 0 1 4.652 9.77l-4.21-4.21a.79.79 0 0 1 0-1.117l4.21-4.21a.79.79 0 0 1 1.117 0Z" clip-rule="evenodd"/><title>arrow-left</title></svg> 3130 </button> 3131<a href="https://www.trefl.com/prezenty" 3132 class="cursor-pointer snowdog-menu-link-topmenu-mobile 3133 is-parent " 3134> 3135 Prezenty</a> 3136 <button @click.prevent="openSubmenu('menu-57')" class="text-black outline-none active:bg-gray-light aspect-square flex size-10 items-center justify-center"> 3137 <svg xmlns="http://www.w3.org/2000/svg" width="6" height="10" viewBox="0 0 6 10" fill="none" role="img"><path fill="currentColor" fill-rule="evenodd" d="M.231 9.769a.79.79 0 0 1 0-1.117L3.884 5 .23 1.348A.79.79
31370 0 1 1.348.23l4.21 4.21a.79.79 0 0 1 0 1.117l-4.21 4.21a.79.79 0 0 1-1.117 0Z" clip-rule="evenodd"/><title>arrow-right</title></svg> 3138 </button> 3139</div><ul class="level2"><li class="level2"> 3140 <button @click.prevent="closeSubmenu('menu-483')" class="text-black outline-none active:bg-gray-light aspect-square flex size-10 items-center justify-center"> 3141 <svg xmlns="http://www.w3.org/2000/svg" width="6" height="10" viewBox="0 0 6 10" fill="none" role="img"><path fill="currentColor" fill-rule="evenodd" d="M5.769.231a.79.79 0 0 1 0 1.117L2.116 5 5.77 8.652A.79.79 0 0 1 4.652 9.77l-4.21-4.21a.79.79 0 0 1 0-1.117l4.21-4.21a.79.79 0 0 1 1.117 0Z" clip-rule="evenodd"/><title>arrow-left</title></svg> 3142 </button> 3143<a href="https://www.trefl.com/prezenty/dla-dzieci" 3144 class="cursor-pointer snowdog-menu-link-topmenu-mobile 3145 is-parent " 3146> 3147 Prezenty dla dzieci</a> 3148 <button @click.prevent="openSubmenu('menu-483')" class="text-black outline-none active:bg-gray-light aspect-square flex size-10 items-center justify-center"> 3149 <svg xmlns="http://www.w3.org/2000/svg" width="6" height="10" viewBox="0 0 6 10" fill="none" role="img"><path fill="currentColor" fill-rule="evenodd" d="M.231 9.769a.79.79 0 0 1 0-1.117L3.884 5 .23 1.348A.79.79
31490 0 1 1.348.23l4.21 4.21a.79.79 0 0 1 0 1.117l-4.21 4.21a.79.79 0 0 1-1.117 0Z" clip-rule="evenodd"/><title>arrow-right</title></svg> 3150 </button> 3151</li><li class="level2"> 3152<a href="https://www.trefl.com/prezenty/swiateczne" 3153 class="cursor-pointer snowdog-menu-link-topmenu-mobile 3154 " 3155> 3156 Prezenty ÅwiÄ teczne</a> 3157</li><li class="level2"> 3158<a href="https://www.trefl.com/prezenty/urodzinowe" 3159 class="cursor-pointer snowdog-menu-link-topmenu-mobile 3160 " 3161> 3162 Prezenty urodzinowe</a> 3163</li><li class="level2"> 3164<a href="https://www.trefl.com/prezenty/rodzinne" 3165 class="cursor-pointer snowdog-menu-link-topmenu-mobile 3166 " 3167> 3168 Prezenty rodzinne</a> 3169</li><li class="level2"> 3170<a href="https://www.trefl.com/prezenty/wielkanocne-i-wiosenne" 3171 class="cursor-pointer snowdog-menu-link-topmenu-mobile 3172 " 3173> 3174 Prezenty wielkanocne i wiosenne</a> 3175</li><li class="level2"> 3176<a href="https://www.trefl.com/prezenty/gry-planszowe-na-prezent" 3177 class="cursor-pointer snowdog-menu-link-topmenu-mobile 3178 " 3179> 3180 Gry planszowe na prezent</a> 3181</li></ul></div><div class="menu-mobile-submenu h-full level3" x-ref="menu-483"><div class="bg-primary h-14 w-full flex items-center text-white z-10 sticky top-0 justify-between pl-10 pr-3"> 3182<a href="https://www.trefl.com/prezenty/dla-dzieci" 3183 class="cursor-pointer snowdog-menu-link-topmenu-mobile 3184 menu-mobile-parent-link " 3185> 3186 Prezenty dla dzieci</a> 3187<button type="button" 3188 @click="closeSubmenu('menu-483')" 3189 class="w-10 h-10 flex items-center justify-center" 3190 ><svg xmlns="http://www.w3.org/2000/svg" width="6" height="10" viewBox="0 0 6 10" fill="none" class="text-gray-light" role="img"><path fill="currentColor" fill-rule="evenodd" d="M5.769.231a.79.79 0 0 1 0 1.117L2.116 5 5.77 8.652A.79.79 0 0 1 4.652 9.77l-4.21-4.21a.79.79 0 0 1 0-1.117l4.21-4.21a.79.79 0 0 1 1.117 0Z" clip-rule="evenodd"/><title>arrow-left</title></svg> 3191</button></div><div class="border-b border-gray parent-heading" data-level="3"> 3192 <button @click.prevent="closeSubmenu('menu-483')" class="text-black outline-none active:bg-gray-light aspect-square flex size-10 items-center justify-center"> 3193 <svg xmlns="http://www.w3.org/2000/svg" width="6" height="10" viewBox="0 0 6 10" fill="none" role="img"><path fill="currentColor" fill-rule="evenodd" d="M5.769.231a.79.79 0 0 1 0 1.117L2.116 5 5.77 8.652A.79.79 0 0 1 4.652 9.77l-4.21-4.21a.79.79 0 0 1 0-1.117l4.21-4.21a.79.79 0 0 1 1.117 0Z" clip-rule="evenodd"/><title>arrow-left</title></svg> 3194 </button> 3195<a href="https://www.trefl.com/prezenty/dla-dzieci" 3196 class="cursor-pointer snowdog-menu-link-topmenu-mobile 3197 is-parent " 3198> 3199 Prezenty dla dzieci</a> 3200 <button @click.prevent="openSubmenu('menu-483')" class="text-black outline-none active:bg-gray-light aspect-square flex size-10 items-center justify-center"> 3201 <svg xmlns="http://www.w3.org/2000/svg" width="6" height="10" viewBox="0 0 6 10" fill="none" role="img"><path fill="currentColor" fill-rule="evenodd" d="M.231 9.769a.79.79 0 0 1 0-1.117L3.884 5 .23 1.348A.79.79
32010 0 1 1.348.23l4.21 4.21a.79.79 0 0 1 0 1.117l-4.21 4.21a.79.79 0 0 1-1.117 0Z" clip-rule="evenodd"/><title>arrow-right</title></svg> 3202 </button> 3203</div><ul class="level3"><li class="level3"> 3204<a href="https://www.trefl.com/prezenty/dla-dzieci/0-2-lata" 3205 class="cursor-pointer snowdog-menu-link-topmenu-mobile 3206 " 3207> 3208 Prezenty dla dzieci 0-2 lata</a> 3209</li><li class="level3"> 3210<a href="https://www.trefl.com/prezenty/dla-dzieci/3-5-lat" 3211 class="cursor-pointer snowdog-menu-link-topmenu-mobile 3212 " 3213> 3214 Prezenty dla dzieci 3-5 lat</a> 3215</li><li class="level3"> 3216<a href="https://www.trefl.com/prezenty/dla-dzieci/6-8-lat" 3217 class="cursor-pointer snowdog-menu-link-topmenu-mobile 3218 " 3219> 3220 Prezenty dla dzieci 6-8 lat</a> 3221</li><li class="level3"> 3222<a href="https://www.trefl.com/prezenty/dla-dzieci/9-12-lat" 3223 class="cursor-pointer snowdog-menu-link-topmenu-mobile 3224 " 3225> 3226 Prezenty dla dzieci 9-12 lat</a> 3227</li><li class="level3"> 3228<a href="https://www.trefl.com/prezenty/dla-dzieci/13-lat-i-dorosli" 3229 class="cursor-pointer snowdog-menu-link-topmenu-mobile 3230 " 3231> 3232 Prezenty dla dzieci 13+ i dorosÅych</a> 3233</li></ul></div><div class="menu-mobile-submenu h-full level2" x-ref="menu-58"><div class="bg-primary h-14 w-full flex items-center text-white z-10 sticky top-0 justify-between pl-10 pr-3"> 3234<a href="https://www.trefl.com/promocje" 3235 class="cursor-pointer snowdog-menu-link-topmenu-mobile 3236 menu-mobile-parent-link " 3237> 3238 Promocje</a> 3239<button type="button" 3240 @click="closeSubmenu('menu-58')" 3241 class="w-10 h-10 flex items-center justify-center" 3242 ><svg xmlns="http://www.w3.org/2000/svg" width="6" height="10" viewBox="0 0 6 10" fill="none" class="text-gray-light" role="img"><path fill="currentColor" fill-rule="evenodd" d="M5.769.231a.79.79 0 0 1 0 1.117L2.116 5 5.77 8.652A.79.79 0 0 1 4.652 9.77l-4.21-4.21a.79.79 0 0 1 0-1.117l4.21-4.21a.79.79 0 0 1 1.117 0Z" clip-rule="evenodd"/><title>arrow-left</title></svg> 3243</button></div><div class="border-b border-gray parent-heading" data-level="2"> 3244 <button @click.prevent="closeSubmenu('menu-58')" class="text-black outline-none active:bg-gray-light aspect-square flex size-10 items-center justify-center"> 3245 <svg xmlns="http://www.w3.org/2000/svg" width="6" height="10" viewBox="0 0 6 10" fill="none" role="img"><path fill="currentColor" fill-rule="evenodd" d="M5.769.231a.79.79 0 0 1 0 1.117L2.116 5 5.77 8.652A.79.79 0 0 1 4.652 9.77l-4.21-4.21a.79.79 0 0 1 0-1.117l4.21-4.21a.79.79 0 0 1 1.117 0Z" clip-rule="evenodd"/><title>arrow-left</title></svg> 3246 </button> 3247<a href="https://www.trefl.com/promocje" 3248 class="cursor-pointer snowdog-menu-link-topmenu-mobile 3249 is-parent " 3250> 3251 Promocje</a> 3252 <button @click.prevent="openSubmenu('menu-58')" class="text-black outline-none active:bg-gray-light aspect-square flex size-10 items-center justify-center"> 3253 <svg xmlns="http://www.w3.org/2000/svg" width="6" height="10" viewBox="0 0 6 10" fill="none" role="img"><path fill="currentColor" fill-rule="evenodd" d="M.231 9.769a.79.79 0 0 1 0-1.117L3.884 5 .23 1.348A.79.79
32530 0 1 1.348.23l4.21 4.21a.79.79 0 0 1 0 1.117l-4.21 4.21a.79.79 0 0 1-1.117 0Z" clip-rule="evenodd"/><title>arrow-right</title></svg> 3254 </button> 3255</div><ul class="level2"><li class="level2"> 3256<a href="https://www.trefl.com/promocje/puzzle" 3257 class="cursor-pointer snowdog-menu-link-topmenu-mobile 3258 " 3259> 3260 Puzzle w promocji</a> 3261</li><li class="level2"> 3262<a href="https://www.trefl.com/promocje/gry" 3263 class="cursor-pointer snowdog-menu-link-topmenu-mobile 3264 " 3265> 3266 Gry w promocji</a> 3267</li><li class="level2"> 3268<a href="https://www.trefl.com/promocje/zabawki" 3269 class="cursor-pointer snowdog-menu-link-topmenu-mobile 3270 " 3271> 3272 Zabawki w promocji</a> 3273</li><li class="level2"> 3274<a href="https://www.trefl.com/promocje/ksiazki" 3275 class="cursor-pointer snowdog-menu-link-topmenu-mobile 3276 " 3277> 3278 KsiÄ Å¼ki w promocji</a> 3279</li></ul></div><div class="menu-mobile-submenu h-full level2" x-ref="menu-542"><div class="bg-primary h-14 w-full flex items-center text-white z-10 sticky top-0 justify-between pl-10 pr-3"> 3280<a href="https://www.trefl.com/marki" 3281 class="cursor-pointer snowdog-menu-link-topmenu-mobile 3282 menu-mobile-parent-link " 3283> 3284 Marki i licencje</a> 3285<button type="button" 3286 @click="closeSubmenu('menu-542')" 3287 class="w-10 h-10 flex items-center justify-center" 3288 ><svg xmlns="http://www.w3.org/2000/svg" width="6" height="10" viewBox="0 0 6 10" fill="none" class="text-gray-light" role="img"><path fill="currentColor" fill-rule="evenodd" d="M5.769.231a.79.79 0 0 1 0 1.117L2.116 5 5.77 8.652A.79.79 0 0 1 4.652 9.77l-4.21-4.21a.79.79 0 0 1 0-1.117l4.21-4.21a.79.79 0 0 1 1.117 0Z" clip-rule="evenodd"/><title>arrow-left</title></svg> 3289</button></div><div class="border-b border-gray parent-heading" data-level="2"> 3290 <button @click.prevent="closeSubmenu('menu-542')" class="text-black outline-none active:bg-gray-light aspect-square flex size-10 items-center justify-center"> 3291 <svg xmlns="http://www.w3.org/2000/svg" width="6" height="10" viewBox="0 0 6 10" fill="none" role="img"><path fill="currentColor" fill-rule="evenodd" d="M5.769.231a.79.79 0 0 1 0 1.117L2.116 5 5.77 8.652A.79.79 0 0 1 4.652 9.77l-4.21-4.21a.79.79 0 0 1 0-1.117l4.21-4.21a.79.79 0 0 1 1.117 0Z" clip-rule="evenodd"/><title>arrow-left</title></svg> 3292 </button> 3293<a href="https://www.trefl.com/marki" 3294 class="cursor-pointer snowdog-menu-link-topmenu-mobile 3295 is-parent " 3296> 3297 Marki i licencje</a> 3298 <button @click.prevent="openSubmenu('menu-542')" class="text-black outline-none active:bg-gray-light aspect-square flex size-10 items-center justify-center"> 3299 <svg xmlns="http://www.w3.org/2000/svg" width="6" height="10" viewBox="0 0 6 10" fill="none" role="img"><path fill="currentColor" fill-rule="evenodd" d="M.231 9.769a.79.79 0 0 1 0-1.117L3.884 5 .23 1.348A.79.79
32990 0 1 1.348.23l4.21 4.21a.79.79 0 0 1 0 1.117l-4.21 4.21a.79.79 0 0 1-1.117 0Z" clip-rule="evenodd"/><title>arrow-right</title></svg> 3300 </button> 3301</div><ul class="level2"><li class="level2"> 3302<a href="https://www.trefl.com/marki/avengers" 3303 class="cursor-pointer snowdog-menu-link-topmenu-mobile 3304 " 3305> 3306 Avengers</a> 3307</li><li class="level2"> 3308<a href="https://www.trefl.com/marki/barbie" 3309 class="cursor-pointer snowdog-menu-link-topmenu-mobile 3310 " 3311> 3312 Barbie</a> 3313</li><li class="level2"> 3314<a href="https://www.trefl.com/marki/cars" 3315 class="cursor-pointer snowdog-menu-link-topmenu-mobile 3316 " 3317> 3318 Cars</a> 3319</li><li class="level2"> 3320<a href="https://www.trefl.com/marki/disney" 3321 class="cursor-pointer snowdog-menu-link-topmenu-mobile 3322 " 3323> 3324 Disney</a> 3325</li><li class="level2"> 3326<a href="https://www.trefl.com/marki/garfield" 3327 class="cursor-pointer snowdog-menu-link-topmenu-mobile 3328 " 3329> 3330 Garfield</a> 3331</li><li class="level2"> 3332<a href="https://www.trefl.com/marki/harry-potter" 3333 class="cursor-pointer snowdog-menu-link-topmenu-mobile 3334 " 3335> 3336 Harry Potter</a> 3337</li><li class="level2"> 3338<a href="https://www.trefl.com/marki/hello-kitty" 3339 class="cursor-pointer snowdog-menu-link-topmenu-mobile 3340 " 3341> 3342 Hello Kitty</a> 3343</li><li class="level2"> 3344<a href="https://www.trefl.com/marki/koci-domek-gabi" 3345 class="cursor-pointer snowdog-menu-link-topmenu-mobile 3346 " 3347> 3348 Koci Domek Gabi</a> 3349</li><li class="level2"> 3350<a href="https://www.trefl.com/marki/koci-domek-gabi" 3351 class="cursor-pointer snowdog-menu-link-topmenu-mobile 3352 " 3353> 3354 Kraina Lodu (Frozen)</a> 3355</li><li class="level2"> 3356<a href="https://www.trefl.com/marki/lilo-stitch" 3357 class="cursor-pointer snowdog-menu-link-topmenu-mobile 3358 " 3359> 3360 Lilo & Stitch</a> 3361</li><li class="level2"> 3362<a href="https://www.trefl.com/marki/minionki" 3363 class="cursor-pointer snowdog-menu-link-topmenu-mobile 3364 " 3365> 3366 Minionki</a> 3367</li><li class="level2"> 3368<a href="https://www.trefl.com/marki/myszka-mickey" 3369 class="cursor-pointer snowdog-menu-link-topmenu-mobile 3370 " 3371> 3372 Myszka Mickey</a> 3373</li><li class="level2"> 3374<a href="https://www.trefl.com/marki/psi-patrol" 3375 class="cursor-pointer snowdog-menu-link-topmenu-mobile 3376 " 3377> 3378 Psi Patrol</a> 3379</li><li class="level2"> 3380<a href="https://www.trefl.com/marki/pusheen" 3381 class="cursor-pointer snowdog-menu-link-topmenu-mobile 3382 " 3383> 3384 Pusheen</a> 3385</li><li class="level2"> 3386<a href="https://www.trefl.com/marki/rick-i-morty" 3387 class="cursor-pointer snowdog-menu-link-topmenu-mobile 3388 " 3389> 3390 Rick i Morty</a> 3391</li><li class="level2"> 3392<a href="https://www.trefl.com/marki/smerfy" 3393 class="cursor-pointer snowdog-menu-link-topmenu-mobile 3394 " 3395> 3396 Smerfy</a> 3397</li><li class="level2"> 3398<a href="https://www.trefl.com/marki/diplodok" 3399 class="cursor-pointer snowdog-menu-link-topmenu-mobile 3400 " 3401> 3402 Smok Diplodok</a> 3403</li><li class="level2"> 3404<a href="https://www.trefl.com/marki/spidey" 3405 class="cursor-pointer snowdog-menu-link-topmenu-mobile 3406 " 3407> 3408 Spidey</a> 3409</li><li class="level2"> 3410<a href="https://www.trefl.com/marki/spongebob-kanciastoporty" 3411 class="cursor-pointer snowdog-menu-link-topmenu-mobile 3412 " 3413> 3414 SpongeBob Kanciastoporty</a> 3415</li><li class="level2"> 3416<a href="https://www.trefl.com/marki/star-wars" 3417 class="cursor-pointer snowdog-menu-link-topmenu-mobile 3418 " 3419> 3420 Star Wars</a> 3421</li><li class="level2"> 3422<a href="https://www.trefl.com/marki/strazak-sam" 3423 class="cursor-pointer snowdog-menu-link-topmenu-mobile 3424 " 3425> 3426 Strażak Sam</a> 3427</li><li class="level2"> 3428<a href="https://www.trefl.com/marki/swinka-peppa" 3429 class="cursor-pointer snowdog-menu-link-topmenu-mobile 3430 " 3431> 3432 Åwinka Peppa</a> 3433</li><li class="level2"> 3434<a href="https://www.trefl.com/marki/tomek-i-przyjaciele" 3435 class="cursor-pointer snowdog-menu-link-topmenu-mobile 3436 " 3437> 3438 Tomek i Przyjaciele</a> 3439</li><li class="level2"> 3440<a href="https://www.trefl.com/marki/w-glowie-sie-nie-miesci-2" 3441 class="cursor-pointer snowdog-menu-link-topmenu-mobile 3442 " 3443> 3444 W gÅowie siÄ nie mieÅci</a> 3445</li></ul></div><div class="menu-mobile-submenu h-full level2" x-ref="menu-273"><div class="bg-primary h-14 w-full flex items-center text-white z-10 sticky top-0 justify-between pl-10 pr-3"> 3446<button class="cursor-pointer snowdog-menu-link-topmenu-mobile 3447 menu-mobile-parent-link " 3448 @click.prevent="openSubmenu('menu-273')" 3449 > 3450 Gry wirtualne</button> 3451<button type="button" 3452 @click="closeSubmenu('menu-273')" 3453 class="w-10 h-10 flex items-center justify-center" 3454 ><svg xmlns="http://www.w3.org/2000/svg" width="6" height="10" viewB
3454ox="0 0 6 10" fill="none" class="text-gray-light" role="img"><path fill="currentColor" fill-rule="evenodd" d="M5.769.231a.79.79 0 0 1 0 1.117L2.116 5 5.77 8.652A.79.79 0 0 1 4.652 9.77l-4.21-4.21a.79.79 0 0 1 0-1.117l4.21-4.21a.79.79 0 0 1 1.117 0Z" clip-rule="evenodd"/><title>arrow-left</title></svg> 3455</button></div><div class="border-b border-gray parent-heading" data-level="2"> 3456<button class="cursor-pointer snowdog-menu-link-topmenu-mobile 3457 " 3458 @click.prevent="openSubmenu('menu-273')" 3459 > 3460 Gry wirtualne</button> 3461</div><ul class="level2"><li class="level2"> 3462 <a class="cursor-pointer snowdog-menu-link-topmenu-mobile " 3463 href="https://www.roblox.com/pl/games/86253893074445/Treflandia-Wielka-Przygoda-Pomagaj-zwierz-tom" 3464 target="_blank" 3465 rel="noopener" 3466 data-menu="menu-274" > 3467 Treflandia na Roblox </a> 3468</li><li class="level2"> 3469 <a class="cursor-pointer snowdog-menu-link-topmenu-mobile " 3470 href="https://www.nintendo.com/us/search/#cat=gme&f=softwarePublisher&softwarePublisher=Trefl%20S.A" 3471 target="_blank" 3472 rel="noopener" 3473 data-menu="menu-275" > 3474 Gry na Nintendo </a> 3475</li><li class="level2"> 3476 <a class="cursor-pointer snowdog-menu-link-topmenu-mobile " 3477 href="https://store.steampowered.com/app/2606190/Spy_Guy_Hidden_Objects_Deluxe_Edition/?beta=1" 3478 target="_blank" 3479 rel="noopener" 3480 data-menu="menu-276" > 3481 Gry na PC (Steam) </a> 3482</li><li class="level2"> 3483 <a class="cursor-pointer snowdog-menu-link-topmenu-mobile " 3484 href="https://apps.apple.com/pl/developer/trefl-sa/id896381365?l=pl" 3485 target="_blank" 3486 rel="noopener" 3487 data-menu="menu-277" > 3488 Gry mobilne (Apple) </a> 3489</li><li class="level2"> 3490 <a class="cursor-pointer snowdog-menu-link-topmenu-mobile " 3491 href="https://play.google.com/store/apps/dev?id=4662821842287727686&hl=pl" 3492 target="_blank" 3493 rel="noopener" 3494 data-menu="menu-278" > 3495 Gry mobilne (Android) </a> 3496</li></ul></div> </div> 3497 </div> 3498 </nav> 3499
3500 <!--Cart Drawer--> 3501
3501<script> 3502 function initCartDrawer() { 3503 return { 3504 open: false, 3505 isLoading: false, 3506 cart: {}, 3507 maxItemsToDisplay: 10, 3508 itemsCount: 0, 3509 getData(data) { 3510 if (data.cart) { 3511 this.cart = data.cart; 3512 this.itemsCount = data.cart.items && data.cart.items.length || 0; 3513 this.setCartItems(); 3514 } 3515 this.isLoading = false; 3516 }, 3517 cartItems: [], 3518 getItemCountTitle() { 3519 return hyva.strf('\u00250\u0020of\u0020\u00251\u0020products\u0020in\u0020cart\u0020displayed', this.maxItemsToDisplay, this.itemsCount) 3520 }, 3521 setCartItems() { 3522 this.cartItems = this.cart.items && this.cart.items.sort((a, b) => b.item_id - a.item_id) || []; 3523 3524 if (this.maxItemsToDisplay > 0) { 3525 this.cartItems = this.cartItems.slice(0, parseInt(this.maxItemsToDisplay, 10)); 3526 } 3527 }, 3528 formatOptionValue(value) { 3529 if (!Array.isArray(value)) { 3530 return value; 3531 } 3532 return value 3533 .map(line => line.replace('<span class="price"', '- <span class="price"')) 3534 .join('<br>'); 3535 }, 3536 deleteItemFromCart(itemId) { 3537 this.isLoading = true; 3538 3539 const formKey = hyva.getFormKey(); 3540 const postUrl = BASE_URL + 'checkout/sidebar/removeItem/'; 3541 3542 fetch(postUrl, { 3543 "headers": { 3544 "content-type": "application/x-www-form-urlencoded; charset=UTF-8", 3545 }, 3546 "body": "form_key=" + formKey + "&item_id=" + itemId, 3547 "method": "POST", 3548 "mode": "cors", 3549 "credentials": "include" 3550 }).then(response => { 3551 if (response.redirected) { 3552 window.location.href = response.url; 3553 } else if (response.ok) { 3554 return response.json(); 3555 } else { 3556 window.dispatchMessages && window.dispatchMessages([{ 3557 type: 'warning', 3558 text: 'Could\u0020not\u0020remove\u0020item\u0020from\u0020quote.' 3559 }]); 3560 this.isLoading = false; 3561 } 3562 }).then(result => { 3563 window.dispatchMessages && window.dispatchMessages([{ 3564 type: result.success ? 'success' : 'error', 3565 text: result.success 3566 ? 'Usuni\u0119to\u0020element.' 3567 : result.error_message 3568 }], result.success ? 5000 : 0) 3569 window.dispatchEvent(new CustomEvent('reload-customer-section-data')); 3570 }); 3571 }, 3572 scrollLock(use = true) { 3573 document.body.style.overflow = use ? "hidden" : ""; 3574 }, 3575 toggleCartDrawer(event) { 3576 if (event.detail && event.detail.isOpen !== undefined) { 3577 if (event.detail.isOpen) { 3578 this.openCartDrawer(); 3579 } else { 3580 this.open = false; 3581 this.scrollLock(false); 3582 this.$refs && this.$refs.cartDialogContent && hyva.releaseFocus(this.$refs.cartDialogContent); 3583 } 3584 } else { 3585 this.openCartDrawer() 3586 } 3587 }, 3588 openCartDrawer() { 3589 this.open = true; 3590 this.scrollLock(true); 3591 this.$nextTick(() => { 3592 this.$refs && this.$refs.cartDialogContent && hyva.trapFocus(this.$refs.cartDialogContent) 3593 }) 3594 }, 3595 closeCartDrawer() { 3596 this.$dispatch('toggle-cart', { isOpen: false }) 3597 }, 3598 getSectionDataExtraActions() { 3599 if (!this.cart.extra_actions) { 3600 return ''; 3601 } 3602 3603 const contentNode = document.createElement('div'); 3604 contentNode.innerHTML = this.cart.extra_actions; 3605 3606 hyva.activateScripts(contentNode); 3607 3608 return contentNode.innerHTML; 3609 } 3610 } 3611 } 3612</script>
3612 3613<section x-cloak 3614 x-show="cart" 3615 id="cart-drawer" 3616 x-data="initCartDrawer()" 3617 @private-content-loaded.window="getData($event.detail.data)" 3618 @toggle-cart.window="toggleCartDrawer($event)" 3619 @keydown.escape="closeCartDrawer" 3620> 3621 <div role="dialog" 3622 aria-labelledby="cart-drawer-title" 3623 aria-modal="true" 3624 :aria-hidden="!open" 3625 class="fixed inset-y-0 right-0 z-30 flex max-w-full"> 3626 <div class="backdrop" 3627 x-show="open" 3628 x-transition:enter="ease-in-out duration-500" 3629 x-transition:enter-start="opacity-0" 3630 x-transition:enter-end="opacity-100" 3631 x-transition:leave="ease-in-out duration-500" 3632 x-transition:leave-start="opacity-100" 3633 x-transition:leave-end="opacity-0" 3634 role="button" 3635 @click="closeCartDrawer" 3636 aria-label="Zamknij koszyk"></div> 3637 <div class="relative w-screen max-w-md shadow-2xl" 3638 x-show="open" 3639 x-transition:enter="transform transition ease-in-out duration-500 sm:duration-700" 3640 x-transition:enter-start="translate-x-full" 3641 x-transition:enter-end="translate-x-0" 3642 x-transition:leave="transform transition ease-in-out duration-500 sm:duration-700" 3643 x-transition:leave-start="translate-x-0" 3644 x-transition:leave-end="translate-x-full" 3645 x-ref="cartDialogContent" 3646 role="region" 3647 :tabindex="open ? 0 : -1" 3648 aria-label="Mój koszyk" 3649 3650 > 3651 <div class="flex flex-col h-full max-h-screen bg-white shadow-xl"> 3652 3653 <header class="relative px-4 py-6 sm:px-6"> 3654 <p id="cart-drawer-title" class="text-lg font-medium leading-7 text-gray-900"> 3655 <strong>Mój koszyk</strong> 3656 <span class="items-total text-xs" 3657 x-show="maxItemsToDisplay && maxItemsToDisplay < itemsCount" 3658 x-text="getItemCountTitle()"> 3659 </span> 3660 </p> 3661 </header> 3662 3663 3664 <template x-if="!itemsCount"> 3665 <div class="relative px-4 py-6 bg-white border-bs sm:px-6 border-container"> 3666 Koszyk jest pusty </div> 3667 </template> 3668 3669 <template x-if="itemsCount"> 3670 <div class="relative grid gap-6 sm:gap-8 px-1 py-3 sm:px-3 bg-white border-b border-container overflow-y-auto overscroll-y-contain"> 3671 <template x-for="item in cartItems"> 3672 <div class="product-item flex items-start p-3 space-x-4"> 3673 <a :href="item.product_url" 3674 class="w-1/4" 3675 :aria-label="hyva.strf('Product\u0020\u0022\u00250\u0022', item.product_name)" 3676 > 3677 <img 3678 :src="item.product_image.src" 3679 :width="item.product_image.width" 3680 :height="item.product_image.height" 3681 loading="lazy" 3682 alt="" 3683 /> 3684 </a> 3685 <div class="w-3/4 space-y-2"> 3686 <div> 3687 <p class="text-xl"> 3688 <span x-html="item.qty"></span> x <span x-html="item.product_name"></span> 3689 </p> 3690 </div> 3691 <template x-for="option in item.options"> 3692 <template x-if="option.label !== 'clientDesignId'"> 3693 <div class="text-sm"> 3694 <p class="font-semibold" x-text="option.label + ':'"></p> 3695 <p class="text-secondary" x-html="formatOptionValue(option.value)"></p> 3696 </div> 3697 </template> 3698 </template> 3699 <div class="price-container"> 3700 <template x-if="item.is_discount"> 3701 <div class="price-box price-final_price">
3702 <span class="old-price price" x-html="item.original_price"></span> 3703 <span class="special-price price" x-html="item.price_incl_discount"></span> 3704 </div> 3705 </template> 3706 <template x-if="!item.is_discount"> 3707 <span class="price" x-html="item.product_price"></span> 3708 </template> 3709 </div> 3710 <div> 3711 <a :href="item.configure_url" 3712 x-show="item.product_type !== 'grouped' && item.is_visible_in_site_visibility && item?.options?.some(option => option.label !== 'clientDesignId')" 3713 class="inline-flex p-2 mr-2 btn btn-secondary" 3714 :aria-label="hyva.strf('Edit\u0020product\u0020\u0022\u00250\u0022', item.product_name)" 3715 > 3716 <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"> 3717 <path stroke-linecap="round" stroke-linejoin="round" d="M15.232 5.232l3.536 3.536m-2.036-5.036a2.5 2.5 0 113.536 3.536L6.5 21.036H3v-3.572L16.732 3.732z"/> 3718</svg> 3719 </a> 3720 <button type="button" 3721 class="inline-flex p-2 btn btn-secondary" 3722 @click="deleteItemFromCart(item.item_id)" 3723 :aria-label="hyva.strf('Remove\u0020product\u0020\u0022\u00250\u0022\u0020from\u0020cart', item.product_name)" 3724 > 3725 <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"> 3726 <path stroke-linecap="round" stroke-linejoin="round" d="M19 7l-.867 12.142A2 2 0 0116.138 21H7.862a2 2 0 01-1.995-1.858L5 7m5 4v6m4-6v6m1-10V4a1 1 0 00-1-1h-4a1 1 0 00-1 1v3M4 7h16"/> 3727</svg> 3728 </button> 3729 </div> 3730 3731 </div> 3732 </div> 3733 </template> 3734 </div> 3735 </template> 3736 3737 <template x-if="itemsCount"> 3738 <div> 3739 3740 <div class="relative grid gap-4 py-3 px-1 sm:px-3 bg-white"> 3741 <div class="w-full p-3 space-x-4"> 3742 <p class="text-lg">ÅÄ cznie: 3743 <strong x-html="cart.subtotal" class="font-semibold"></strong> 3744 </p> 3745 </div> 3746 <div class="w-full p-3 pt-0 flex"> 3747 <a href="https://www.trefl.com/checkout/cart/" 3748 class="btn btn-primary"> 3749 Przejdź do koszyka </a> 3750 </div> 3751 <div x-html="getSectionDataExtraActions()"></div> 3752 </div> 3753 </div> 3754 </template> 3755 3756 </div> 3757 3758 <button 3759 type="button" 3760 @click="closeCartDrawer" 3761 aria-label="Zamknij koszyk" 3762 class="absolute top-0 right-2 p-4 mt-2 text-gray-300 transition-colors hover:text-black" 3763 > 3764 <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"> 3765 <path stroke-linecap="round" stroke-linejoin="round" d="M6 18L18 6M6 6l12 12"/> 3766</svg> 3767 </button> 3768 </div> 3769 <div 3770 class="z-50 fixed inset-0 grid place-items-center bg-white/70 text-slate-800" 3771 x-cloak 3772 x-show="isLoading" 3773 x-transition.opacity.duration.200ms 3774> 3775 <div class="flex gap-10 items-center p-4"> 3776 <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"> 3777 <style>
3778 @keyframes spinner-ball-triangle1 { 3779 0% { transform: translate(0%, 0%); } 3780 33% { transform: translate(38%, -79%); } 3781 66% { transform: translate(77%, 0%); } 3782 100% { transform: translate(0%, 0%); } 3783 } 3784 3785 @keyframes spinner-ball-triangle2 { 3786 0% { transform: translate(0%, 0%); } 3787 33% { transform: translate(38%, 79%); } 3788 66% { transform: translate(-38%, 79%); } 3789 100% { transform: translate(0%, 0%); } 3790 } 3791 3792 @keyframes spinner-ball-triangle3 { 3793 0% { transform: translate(0%, 0%); } 3794 33% { transform: translate(-77%, 0%); } 3795 66% { transform: translate(-38%, -79%); } 3796 100% { transform: translate(0%, 0%); } 3797 } 3798 </style> 3799 <circle cx="5" cy="50" r="5" style="animation: spinner-ball-triangle1 2.2s linear infinite"/> 3800 <circle cx="27" cy="5" r="5" style="animation: spinner-ball-triangle2 2.2s linear infinite"/> 3801 <circle cx="49" cy="50" r="5" style="animation: spinner-ball-triangle3 2.2s linear infinite"/> 3802</svg> 3803 <span class="text-xl select-none"> 3804 ÅadujÄ... </span> 3805 </div> 3806</div> 3807 </div> 3808 3809</section> 3810 3811 <!--Authentication Pop-Up--> 3812
3812<script> 3813 function initAuthentication() { 3814 return { 3815 open: false, 3816 close() { 3817 this.open = false; 3818 }, 3819 forceAuthentication: false, 3820 checkoutUrl: 'https://www.trefl.com/checkout/index/', 3821 errors: 0, 3822 hasCaptchaToken: 0, 3823 displayErrorMessage: false, 3824 errorMessages: [], 3825 setErrorMessages(message) { 3826 this.errorMessages = [message]; 3827 this.displayErrorMessage = true; 3828 }, 3829 submitForm() { 3830 // Do not rename $form, the variable is expected to be declared in the recaptcha output 3831 const $form = document.querySelector('#login-form'); 3832 3833 if (this.errors === 0) { 3834 this.dispatchLoginRequest($form); 3835 } 3836 }, 3837 onPrivateContentLoaded() { 3838 const data = this.$event.detail.data; 3839 const isLoggedIn = data.customer && data.customer.firstname; 3840 if (data.cart && !isLoggedIn) { 3841 this.forceAuthentication = !data.cart.isGuestCheckoutAllowed; 3842 } 3843 }, 3844 redirectIfAuthenticated() { 3845 const event = this.$event; 3846 this.open = this.forceAuthentication; 3847 3848 if (event.detail && event.detail.url) { 3849 this.checkoutUrl = event.detail.url; 3850 } 3851 if (!this.forceAuthentication) { 3852 window.location.href = this.checkoutUrl; 3853 } 3854 }, 3855 resetErrors() { 3856 this.errors = 0; 3857 }, 3858 dispatchLoginRequest(form) { 3859 this.isLoading = true; 3860 const username = this.$refs['customer-email'].value; 3861 const password = this.$refs['customer-password'].value; 3862 const formKey = hyva.getFormKey(); 3863 const bodyFields = { 3864 'username': username, 3865 'password': password, 3866 'formKey': formKey 3867 }; 3868 const fieldName = 'g\u002Drecaptcha\u002Dresponse'; 3869 const recaptchaField = fieldName && form[fieldName]; 3870 if (recaptchaField) { 3871 bodyFields[fieldName] = recaptchaField.value; 3872 } 3873 fetch('https://www.trefl.com/customer/ajax/login/', { 3874 method: 'POST', 3875 headers: { 3876 'Content-Type': 'application/json', 3877 'X-Requested-With': 'XMLHttpRequest' 3878 }, 3879 body: JSON.stringify(bodyFields) 3880 } 3881 ).then(response => { 3882 return response.json() 3883 } 3884 ).then(data => { 3885 this.isLoading = false; 3886 if (data.errors) { 3887 this.setErrorMessages(data.message); 3888 this.errors = 1; 3889 this.hasCaptchaToken = 0; 3890 } else { 3891 window.location.href = this.checkoutUrl; 3892 } 3893 }); 3894 } 3895 } 3896 } 3897 3898 window.addEventListener('alpine:init', () => Alpine.data('initAuthentication', initAuthentication), {once: true}) 3899</script>
3899 3900<section id="authentication-popup" 3901 x-data="initAuthentication" 3902 @private-content-loaded.window="onPrivateContentLoaded" 3903 @toggle-authentication.window="redirectIfAuthenticated" 3904 @keydown.window.escape="close" 3905> 3906 <div 3907 class="backdrop" 3908 aria-hidden="true" 3909 x-cloak 3910 x-show="open" 3911 x-transition:enter="ease-in-out duration-500" 3912 x-transition:enter-start="opacity-0" 3913 x-transition:enter-end="opacity-100" 3914 x-transition:leave="ease-in-out duration-500" 3915 x-transition:leave-start="opacity-100" 3916 x-transition:leave-end="opacity-0" 3917 @click="close" 3918 ></div> 3919 <div role="dialog" 3920 aria-modal="true" 3921 @click.outside="close" 3922 class="inset-y-0 right-0 z-30 flex max-w-full fixed" 3923 x-cloak 3924 x-show="open" 3925 > 3926 <div class="relative w-screen max-w-md pt-16 bg-container-lighter" 3927 x-show="open" 3928 x-cloak 3929 x-transition:enter="transform transition ease-in-out duration-500 sm:duration-700" 3930 x-transition:enter-start="translate-x-full" 3931 x-transition:enter-end="translate-x-0" 3932 x-transition:leave="transform transition ease-in-out duration-500 sm:duration-700" 3933 x-transition:leave-start="translate-x-0" 3934 x-transition:leave-end="translate-x-full" 3935 > 3936 <div 3937 x-show="open" 3938 x-cloak 3939 x-transition:enter="ease-in-out duration-500" 3940 x-transition:enter-start="opacity-0" 3941 x-transition:enter-end="opacity-100" 3942 x-transition:leave="ease-in-out duration-500" 3943 x-transition:leave-start="opacity-100" 3944 x-transition:leave-end="opacity-0" class="absolute top-0 right-2 flex p-2 mt-2"> 3945 <button 3946 type="button" 3947 @click="close" 3948 aria-label="Close panel" 3949 class="p-2 text-gray-300 transition duration-150 ease-in-out hover:text-black" 3950 > 3951 <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"> 3952 <path stroke-linecap="round" stroke-linejoin="round" d="M6 18L18 6M6 6l12 12"/> 3953</svg> 3954 </button> 3955 </div> 3956 <template x-if="open"> 3957 <div class="flex flex-col h-full py-6 space-y-6 bg-white shadow-xl overflow-y-auto"> 3958 <div class="mx-4"> 3959 <div class="message error mb-0" x-show="errors" x-cloak> 3960 <template x-for="(message, index) in errorMessages" :key="index"> 3961 <div> 3962 <template x-if="message"> 3963 <span x-html="message"></span> 3964 </template> 3965 </div> 3966 </template> 3967 </div> 3968 </div> 3969 <div class="block-customer-login bg-container border border-container mx-4 p-4 shadow-sm"> 3970 <p id="authenticate-customer-login" class="text-lg leading-7 text-gray-900"> 3971 <strong class="font-medium">Checkout using your account</strong> 3972 </p> 3973 3974 <form class="form form-login" 3975 method="post" 3976 @submit.prevent="submitForm" 3977 id="login-form" 3978 > 3979 <div class="fieldset login"> 3980 <div class="field email required"> 3981 <label class="label" for="form-login-username" form="login-form" > 3982 <span>Adres e-mail</span> 3983 </label> 3984 <div class="control"> 3985 <input name="username" 3986 id="form-login-username" 3987 x-ref="customer-email" 3988 @change="resetErrors" 3989 type="email" 3990 required 3991 autocomplete="off" 3992 class="form-input" 3993 > 3994 </div> 3995 </div> 3996 <div class="field password required"> 3997 <label for="form-login-password" class="label" form="login-form">
3998 <span>HasÅo</span> 3999 </label> 4000 <div class="control"> 4001 <input name="password" 4002 id="form-login-password" 4003 type="password" 4004 class="form-input" 4005 required 4006 x-ref="customer-password" 4007 autocomplete="off" 4008 @change="resetErrors" 4009 > 4010 </div> 4011 </div> 4012 4013 <input name="context" type="hidden" value="checkout" /> 4014 <div class="actions-toolbar pt-6 pb-2"> 4015 <button type="submit" class="inline-flex btn btn-primary disabled:opacity-75" 4016 > 4017 Zaloguj siÄ </button> 4018 <a href="https://www.trefl.com/customer/account/forgotpassword/" 4019 > 4020 ZapomniaÅeÅ hasÅa? </a> 4021 </div> 4022 4023 </div> 4024 </form> 4025 </div> 4026 <div class="mx-4"> 4027 </div> 4028 <div class="block-new-customer bg-container border border-container mx-4 p-4 shadow-sm"> 4029 <p id="authenticate-new-customer" class="text-lg mb-2 leading-7 text-gray-900"> 4030 <strong class="font-medium">Checkout as a new customer</strong> 4031 </p> 4032 4033 <div class="block-content"> 4034 <p class="mb-1"> 4035 Stworzenie konta ma wiele korzyÅci: </p> 4036 <ul class="list-disc pl-5"> 4037 <li> Zobacz zamówienie i stan wysyÅki</li> 4038 <li> Åledzenie historii zamówieÅ</li> 4039 <li> Zamawiaj szybciej</li> 4040 </ul> 4041 <div class="actions-toolbar mt-6 mb-2"> 4042 <a href="https://www.trefl.com/customer/account/create/" 4043 class="inline-flex btn btn-primary"> 4044 Utwórz konto </a> 4045 </div> 4046 </div> 4047 </div> 4048 </div> 4049 </template> 4050 </div> 4051 </div> 4052</section> 4053</div> 4054 4055 4056
4056<script> 4057 'use strict'; 4058 4059 const initTopmenuDesktop_6abd94b857ccd = () => ({ 4060 openSubmenuId: null, 4061 toggleSubmenu(menuNode, state, $event) { 4062 if (state === true) { 4063 this.openSubmenuId = menuNode; 4064 this.focusFirstLinkInSubmenu(menuNode, $event); 4065 } else if (state === false) { 4066 this.openSubmenuId = null; 4067 } else { 4068 if (this.openSubmenuId === menuNode) { 4069 this.openSubmenuId = null; 4070 } else { 4071 this.openSubmenuId = menuNode; 4072 this.focusFirstLinkInSubmenu(menuNode, $event); 4073 } 4074 } 4075 4076 if ($event.code === 'Escape') { 4077 setTimeout(() => { 4078 const parentEl = $event.target?.closest('.menu-desktop-item-wrap')?.querySelector('a'); 4079 console.log(parentEl) 4080 if (parentEl) { 4081 parentEl.focus(); 4082 } 4083 }, 100); 4084 } 4085 }, 4086 focusFirstLinkInSubmenu(menuNode, $event) { 4087 if ($event.code === 'Enter' || $event.code === 'Space') { 4088 const submenu = this.$refs[`submenu-${menuNode}`]; 4089 if (submenu) { 4090 const firstLink = submenu.querySelector('a'); 4091 if (firstLink) { 4092 setTimeout(() => firstLink.focus(), 100); 4093 } 4094 } 4095 } 4096 }, 4097 stickyObserver(navigationEl) { 4098 const headerEl = document.querySelector('header.page-header'); 4099 new IntersectionObserver( 4100 ([e]) => { 4101 headerEl.classList.toggle('contents', e.intersectionRatio < 1) 4102 navigationEl.classList.toggle('shadow-md', e.intersectionRatio < 1) 4103 }, 4104 { threshold: [1] } 4105 ).observe(navigationEl); 4106 } 4107 }) 4108 </script>
4108 4109 4110 <div x-data="initTopmenuDesktop_6abd94b857ccd()" 4111 x-init="stickyObserver($el)" 4112 class=" navigation hidden w-full lg:block sticky -top-px bg-white z-20 transition-shadow"> 4113 <div class="overflow-x-hidden"> 4114 <nav 4115 class="snowdog-topmenu-desktop menu-desktop container lg:flex justify-between items-center" 4116 aria-label="Menu główne" 4117 > 4118 <ul 4119 class="flex gap-x-4" 4120 @mouseleave="openSubmenuId = null" 4121 role="menubar" 4122 > 4123 <li class="menu-desktop-item menu-desktop-item--level1 flex items-center 4124 " 4125 @mouseenter="toggleSubmenu('4', null, $event)" 4126 @keydown.enter.prevent="toggleSubmenu('4', null, $event)" 4127 @keydown.space.prevent="toggleSubmenu('4', null, $event)" 4128 @keydown.escape.prevent="toggleSubmenu('4', false, $event)" 4129 aria-haspopup="true" 4130 :aria-expanded="openSubmenuId === '4'" 4131 :tabindex="openSubmenuId === '4' ? 0 : -1" 4132 role="menuitem" 4133 > 4134 <div class="menu-desktop-item-wrap relative flex items-center"> 4135 4136<a href="https://www.trefl.com/puzzle" 4137 class="snowdog-menu-link " 4138 data-menu="menu-4" 4139 > 4140 Puzzle</a> 4141 4142 <span class="flex items-center justify-center ml-1.5" aria-hidden="true"> 4143 <svg viewBox="0 0 10.012074 6.0120745" fill="currentColor" class="text-gray-gray" aria-hidden="true" width="10.012074" height="6.0120745" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" d="M.2927864.3052882a1 1 0 0 1 1.4140001 0l3.293 3.293 3.293-3.293a1 1 0 1 1 1.414 1.414l-4 4a1 1 0 0 1-1.414 0l-4-4a1 1 0 0 1 0-1.414z" clip-rule="evenodd"/></svg> 4144 </span> 4145 </div> 4146 4147 <div 4148 x-ref="submenu-4" 4149 class="menu-desktop-submenu absolute left-0 top-full w-full z-30 bg-white flex border-t border-gray-light shadow-md" 4150 x-show="openSubmenuId === '4'" 4151 x-cloak 4152 > 4153 <div class="container h-full"> 4154 <ul 4155 class="menu-desktop-list menu-desktop-list--level2 bg-white flex flex-col flex-wrap items-start content-start justify-start h-full" 4156 title="Submenu for Puzzle" 4157 > 4158 <li 4159 class="menu-desktop-item menu-desktop-item--level2 " 4160 > 4161 4162<a href="https://www.trefl.com/puzzle/dla-dzieci" 4163 class="snowdog-menu-link " 4164 data-menu="menu-359" 4165 > 4166 Puzzle dla dzieci</a> 4167 </li> 4168 4169 <li 4170 class="menu-desktop-item menu-desktop-item--level2 " 4171 > 4172 4173<a href="https://www.trefl.com/puzzle/dla-doroslych" 4174 class="snowdog-menu-link " 4175 data-menu="menu-6" 4176 > 4177 Puzzle dla dorosÅych</a> 4178 </li> 4179 4180 <li 4181 class="menu-desktop-item menu-desktop-item--level2 " 4182 > 4183 4184<a href="https://www.trefl.com/puzzle/500-elementow" 4185 class="snowdog-menu-link " 4186 data-menu="menu-217" 4187 > 4188 Puzzle 500 elementów</a> 4189 </li> 4190 4191 <li 4192 class="menu-desktop-item menu-desktop-item--level2 " 4193 > 4194 4195<a href="https://www.trefl.com/puzzle/1000-elementow" 4196 class="snowdog-menu-link " 4197 data-menu="menu-218" 4198 > 4199 Puzzle 1000 elementów</a> 4200 </li> 4201 4202 <li 4203 class="menu-desktop-item menu-desktop-item--level2 " 4204 > 4205 4206<a href="https://www.trefl.com/puzzle/1500-elementow" 4207 class="snowdog-menu-link " 4208 data-menu="menu-219" 4209 > 4210 Puzzle 1500 elementów</a> 4211 </li> 4212 4213 <li 4214 class="menu-desktop-item menu-desktop-item--level2 " 4215 > 4216 4217<a href="https://www.trefl.com/puzzle/2000-elementow" 4218 class="snowdog-menu-link " 4219 data-menu="menu-220" 4220 > 4221 Puzzle 2000 elementów</a> 4222 </li> 4223 4224 <li 4225 class="menu-desktop-item menu-desktop-item--level2 " 4226 > 4227 4228<a href="https://www.trefl.com/puzzle/3000-elementow" 4229 class="snowdog-menu-link " 4230 data-menu="menu-221" 4231 > 4232 Puzzle 3000 elementów</a> 4233 </li> 4234 4235 <li 4236 class="menu-desktop-item menu-desktop-item--level2 " 4237 > 4238 4239<a href="https://www.trefl.com/puzzle/4000-elementow" 4240 class="snowdog-menu-link " 4241 data-menu="menu-222" 4242 > 4243 Puzzle 4000 elementów</a> 4244 </li> 4245
4246 <span class="menu-desktop-separator" aria-hidden="true"></span> 4247 <li 4248 class="menu-desktop-item menu-desktop-item--level2 " 4249 > 4250 4251<a href="https://www.trefl.com/puzzle/6000-elementow" 4252 class="snowdog-menu-link " 4253 data-menu="menu-223" 4254 > 4255 Puzzle 6000 elementów</a> 4256 </li> 4257 4258 <li 4259 class="menu-desktop-item menu-desktop-item--level2 " 4260 > 4261 4262<a href="https://www.trefl.com/puzzle/8000-elementow" 4263 class="snowdog-menu-link " 4264 data-menu="menu-628" 4265 > 4266 Puzzle 8000 elementów</a> 4267 </li> 4268 4269 <li 4270 class="menu-desktop-item menu-desktop-item--level2 " 4271 > 4272 4273<a href="https://www.trefl.com/puzzle/prime-uft/prime-9000" 4274 class="snowdog-menu-link " 4275 data-menu="menu-261" 4276 > 4277 Puzzle 9000 elementów</a> 4278 </li> 4279 4280 <li 4281 class="menu-desktop-item menu-desktop-item--level2 " 4282 > 4283 4284 <a href="https://www.trefl.com/puzzle-premium-plus-quality-10000-el-windows-of-the-seasons-81051" 4285 class="snowdog-menu-link " 4286 data-menu="menu-630" 4287 data-menu="menu-630" > 4288 Puzzle 10 000 elementów </a> 4289 </li> 4290 4291 <li 4292 class="menu-desktop-item menu-desktop-item--level2 " 4293 > 4294 4295<a href="https://www.trefl.com/puzzle/prime-uft/prime-13500" 4296 class="snowdog-menu-link " 4297 data-menu="menu-262" 4298 > 4299 Puzzle 13 500 elementów</a> 4300 </li> 4301 4302 <li 4303 class="menu-desktop-item menu-desktop-item--level2 " 4304 > 4305 4306 <a href="https://www.trefl.com/puzzle-prime-21000-el-earth-chronicles-from-the-creation-to-the-future-81040" 4307 class="snowdog-menu-link " 4308 data-menu="menu-263" 4309 data-menu="menu-263" > 4310 Puzzle 21 000 elementów </a> 4311 </li> 4312 4313 <li 4314 class="menu-desktop-item menu-desktop-item--level2 " 4315 > 4316 4317<a href="https://www.trefl.com/puzzle/puzzle-premium-plus-quality" 4318 class="snowdog-menu-link " 4319 data-menu="menu-224" 4320 > 4321 Puzzle Premium Plus Quality</a> 4322 </li> 4323 4324 <span class="menu-desktop-separator" aria-hidden="true"></span> 4325 <li 4326 class="menu-desktop-item menu-desktop-item--level2 " 4327 > 4328 4329<a href="https://www.trefl.com/puzzle/drewniane" 4330 class="snowdog-menu-link " 4331 data-menu="menu-235" 4332 > 4333 Puzzle drewniane</a> 4334 </li> 4335 4336 <li 4337 class="menu-desktop-item menu-desktop-item--level2 " 4338 > 4339 4340<a href="https://www.trefl.com/puzzle/puzzle-filmowe" 4341 class="snowdog-menu-link " 4342 data-menu="menu-237" 4343 > 4344 Puzzle filmowe</a> 4345 </li> 4346 4347 <li 4348 class="menu-desktop-item menu-desktop-item--level2 " 4349 > 4350 4351<a href="https://www.trefl.com/puzzle/puzzle-jubileuszowe" 4352 class="snowdog-menu-link " 4353 data-menu="menu-5" 4354 > 4355 Puzzle jubileuszowe na 40-lecie</a> 4356 </li> 4357 4358 <li 4359 class="menu-desktop-item menu-desktop-item--level2 " 4360 > 4361 4362<a href="https://www.trefl.com/puzzle/puzzle-kosmos" 4363 class="snowdog-menu-link " 4364 data-menu="menu-238" 4365 > 4366 Puzzle kosmos</a> 4367 </li> 4368 4369 <li 4370 class="menu-desktop-item menu-desktop-item--level2 " 4371 > 4372 4373<a href="https://www.trefl.com/puzzle/puzzle-krajobrazy" 4374 class="snowdog-menu-link " 4375 data-menu="menu-239" 4376 > 4377 Puzzle krajobrazy</a> 4378 </li> 4379 4380 <li 4381 class="menu-desktop-item menu-desktop-item--level2 " 4382 > 4383 4384<a href="https://www.trefl.com/puzzle/puzzle-kulinarne" 4385 class="snowdog-menu-link " 4386 data-menu="menu-240" 4387 > 4388 Puzzle kulinarne</a> 4389 </li> 4390 4391 <li 4392 class="menu-desktop-item menu-desktop-item--level2 " 4393 > 4394 4395<a href="https://www.trefl.com/puzzle/puzzle-mapy" 4396 class="snowdog-menu-link " 4397 data-menu="menu-241" 4398 > 4399 Puzzle mapy</a> 4400 </li> 4401
4402 <span class="menu-desktop-separator" aria-hidden="true"></span> 4403 <li 4404 class="menu-desktop-item menu-desktop-item--level2 " 4405 > 4406 4407<a href="https://www.trefl.com/puzzle/puzzle-miasta" 4408 class="snowdog-menu-link " 4409 data-menu="menu-242" 4410 > 4411 Puzzle miasta</a> 4412 </li> 4413 4414 <li 4415 class="menu-desktop-item menu-desktop-item--level2 " 4416 > 4417 4418<a href="https://www.trefl.com/puzzle/puzzle-obrazy" 4419 class="snowdog-menu-link " 4420 data-menu="menu-243" 4421 > 4422 Puzzle obrazy</a> 4423 </li> 4424 4425 <li 4426 class="menu-desktop-item menu-desktop-item--level2 " 4427 > 4428 4429<a href="https://www.trefl.com/puzzle/puzzle-panoramiczne" 4430 class="snowdog-menu-link " 4431 data-menu="menu-244" 4432 > 4433 Puzzle panoramiczne</a> 4434 </li> 4435 4436 <li 4437 class="menu-desktop-item menu-desktop-item--level2 " 4438 > 4439 4440<a href="https://www.trefl.com/puzzle/puzzle-samochody" 4441 class="snowdog-menu-link " 4442 data-menu="menu-245" 4443 > 4444 Puzzle samochody</a> 4445 </li> 4446 4447 <li 4448 class="menu-desktop-item menu-desktop-item--level2 " 4449 > 4450 4451<a href="https://www.trefl.com/puzzle/puzzle-swiateczne" 4452 class="snowdog-menu-link " 4453 data-menu="menu-236" 4454 > 4455 Puzzle ÅwiÄ teczne</a> 4456 </li> 4457 4458 <li 4459 class="menu-desktop-item menu-desktop-item--level2 " 4460 > 4461 4462<a href="https://www.trefl.com/puzzle/akcesoria" 4463 class="snowdog-menu-link " 4464 data-menu="menu-8" 4465 > 4466 Akcesoria do puzzli</a> 4467 </li> 4468 4469 </ul> 4470 </div> 4471 </div> 4472 </li> 4473 <li class="menu-desktop-item menu-desktop-item--level1 flex items-center 4474 " 4475 @mouseenter="openSubmenuId = null" 4476 role="menuitem" 4477 > 4478 <div class="menu-desktop-item-wrap relative flex items-center"> 4479 4480<a href="https://www.trefl.com/puzzle/fotopuzzle" 4481 class="snowdog-menu-link " 4482 data-menu="menu-360" 4483 > 4484 Fotopuzzle</a> 4485 4486 </div> 4487 4488 </li> 4489 <li class="menu-desktop-item menu-desktop-item--level1 flex items-center 4490 " 4491 @mouseenter="toggleSubmenu('9', null, $event)" 4492 @keydown.enter.prevent="toggleSubmenu('9', null, $event)" 4493 @keydown.space.prevent="toggleSubmenu('9', null, $event)" 4494 @keydown.escape.prevent="toggleSubmenu('9', false, $event)" 4495 aria-haspopup="true" 4496 :aria-expanded="openSubmenuId === '9'" 4497 :tabindex="openSubmenuId === '9' ? 0 : -1" 4498 role="menuitem" 4499 > 4500 <div class="menu-desktop-item-wrap relative flex items-center"> 4501 4502<a href="https://www.trefl.com/gry" 4503 class="snowdog-menu-link " 4504 data-menu="menu-9" 4505 > 4506 Gry</a> 4507 4508 <sp
4508an class="flex items-center justify-center ml-1.5" aria-hidden="true"> 4509 <svg viewBox="0 0 10.012074 6.0120745" fill="currentColor" class="text-gray-gray" aria-hidden="true" width="10.012074" height="6.0120745" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" d="M.2927864.3052882a1 1 0 0 1 1.4140001 0l3.293 3.293 3.293-3.293a1 1 0 1 1 1.414 1.414l-4 4a1 1 0 0 1-1.414 0l-4-4a1 1 0 0 1 0-1.414z" clip-rule="evenodd"/></svg> 4510 </span> 4511 </div> 4512 4513 <div 4514 x-ref="submenu-9" 4515 class="menu-desktop-submenu absolute left-0 top-full w-full z-30 bg-white flex border-t border-gray-light shadow-md" 4516 x-show="openSubmenuId === '9'" 4517 x-cloak 4518 > 4519 <div class="container h-full"> 4520 <ul 4521 class="menu-desktop-list menu-desktop-list--level2 bg-white flex flex-col flex-wrap items-start content-start justify-start h-full" 4522 title="Submenu for Gry" 4523 > 4524 <li 4525 class="menu-desktop-item menu-desktop-item--level2 " 4526 > 4527 4528<a href="https://www.trefl.com/gry/dla-dzieci" 4529 class="snowdog-menu-link " 4530 data-menu="menu-10" 4531 > 4532 Gry dla dzieci</a> 4533 </li> 4534 4535 <li 4536 class="menu-desktop-item menu-desktop-item--level2 " 4537 > 4538 4539<a href="https://www.trefl.com/gry/rodzinne" 4540 class="snowdog-menu-link " 4541 data-menu="menu-11" 4542 > 4543 Gry rodzinne</a> 4544 </li> 4545 4546 <li 4547 class="menu-desktop-item menu-desktop-item--level2 " 4548 > 4549 4550<a href="https://www.trefl.com/gry/towarzyskie" 4551 class="snowdog-menu-link " 4552 data-menu="menu-12" 4553 > 4554 Gry towarzyskie</a> 4555 </li> 4556 4557 <li 4558 class="menu-desktop-item menu-desktop-item--level2 " 4559 > 4560 4561<a href="https://www.trefl.com/gry/edukacyjne" 4562 class="snowdog-menu-link " 4563 data-menu="menu-13" 4564 > 4565 Gry edukacyjne</a> 4566 </li> 4567 4568 <li 4569 class="menu-desktop-item menu-desktop-item--level2 " 4570 > 4571 4572<a href="https://www.trefl.com/gry/dla-grup-przedszkoli" 4573 class="snowdog-menu-link " 4574 data-menu="menu-445" 4575 > 4576 Gry dla grup i przedszkoli</a> 4577 </li> 4578 4579 <li 4580 class="menu-desktop-item menu-desktop-item--level2 " 4581 > 4582 4583<a href="https://www.trefl.com/gry/planszowe-1" 4584 class="snowdog-menu-link " 4585 data-menu="menu-14" 4586 > 4587 Gry planszowe</a> 4588 </li> 4589 4590 <li 4591 class="menu-desktop-item menu-desktop-item--level2 " 4592 > 4593 4594<a href="https://www.trefl.com/gry/karciane" 4595 class="snowdog-menu-link " 4596 data-menu="menu-15" 4597 > 4598 Gry karciane</a> 4599 </li> 4600 4601 <li 4602 class="menu-desktop-item menu-desktop-item--level2 " 4603 > 4604 4605<a href="https://www.trefl.com/gry/domino-i-memos" 4606 class="snowdog-menu-link " 4607 data-menu="menu-16" 4608 > 4609 Domino i Memos</a> 4610 </li> 4611
4612 <span class="menu-desktop-separator" aria-hidden="true"></span> 4613 <li 4614 class="menu-desktop-item menu-desktop-item--level2 " 4615 > 4616 4617<a href="https://www.trefl.com/gry/dla-3-latka" 4618 class="snowdog-menu-link " 4619 data-menu="menu-321" 4620 > 4621 Gry dla 3 latka</a> 4622 </li> 4623 4624 <li 4625 class="menu-desktop-item menu-desktop-item--level2 " 4626 > 4627 4628<a href="https://www.trefl.com/gry/dla-4-latka" 4629 class="snowdog-menu-link " 4630 data-menu="menu-322" 4631 > 4632 Gry dla 4 latka</a> 4633 </li> 4634 4635 <li 4636 class="menu-desktop-item menu-desktop-item--level2 " 4637 > 4638 4639<a href="https://www.trefl.com/gry/dla-dzieci-4-6-lat" 4640 class="snowdog-menu-link " 4641 data-menu="menu-323" 4642 > 4643 Gry dla dzieci 4-6 lat</a> 4644 </li> 4645 4646 <li 4647 class="menu-desktop-item menu-desktop-item--level2 " 4648 > 4649 4650<a href="https://www.trefl.com/gry/dla-dzieci-6-8-lat" 4651 class="snowdog-menu-link " 4652 data-menu="menu-324" 4653 > 4654 Gry dla dzieci 6-8 lat</a> 4655 </li> 4656 4657 <li 4658 class="menu-desktop-item menu-desktop-item--level2 " 4659 > 4660 4661<a href="https://www.trefl.com/gry/dla-dzieci-8-10-lat" 4662 class="snowdog-menu-link " 4663 data-menu="menu-325" 4664 > 4665 Gry dla dzieci 8-10 lat</a> 4666 </li> 4667 4668 <li 4669 class="menu-desktop-item menu-desktop-item--level2 " 4670 > 4671 4672<a href="https://www.trefl.com/gry/dla-dzieci-12-lat" 4673 class="snowdog-menu-link " 4674 data-menu="menu-326" 4675 > 4676 Gry dla dzieci 12+</a> 4677 </li> 4678 4679 </ul> 4680 </div> 4681 </div> 4682 </li> 4683 <li class="menu-desktop-item menu-desktop-item--level1 flex items-center 4684 " 4685 @mouseenter="toggleSubmenu('17', null, $event)" 4686 @keydown.enter.prevent="toggleSubmenu('17', null, $event)" 4687 @keydown.space.prevent="toggleSubmenu('17', null, $event)" 4688 @keydown.escape.prevent="toggleSubmenu('17', false, $event)" 4689 aria-haspopup="true" 4690 :aria-expanded="openSubmenuId === '17'" 4691 :tabindex="openSubmenuId === '17' ? 0 : -1" 4692 role="menuitem" 4693 > 4694 <div class="menu-desktop-item-wrap relative flex items-center"> 4695 4696<a href="https://www.trefl.com/zabawki" 4697 class="snowdog-menu-link " 4698 data-menu="menu-17" 4699 > 4700 Zabawki</a> 4701 4702 <sp
4702an class="flex items-center justify-center ml-1.5" aria-hidden="true"> 4703 <svg viewBox="0 0 10.012074 6.0120745" fill="currentColor" class="text-gray-gray" aria-hidden="true" width="10.012074" height="6.0120745" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" d="M.2927864.3052882a1 1 0 0 1 1.4140001 0l3.293 3.293 3.293-3.293a1 1 0 1 1 1.414 1.414l-4 4a1 1 0 0 1-1.414 0l-4-4a1 1 0 0 1 0-1.414z" clip-rule="evenodd"/></svg> 4704 </span> 4705 </div> 4706 4707 <div 4708 x-ref="submenu-17" 4709 class="menu-desktop-submenu absolute left-0 top-full w-full z-30 bg-white flex border-t border-gray-light shadow-md" 4710 x-show="openSubmenuId === '17'" 4711 x-cloak 4712 > 4713 <div class="container h-full"> 4714 <ul 4715 class="menu-desktop-list menu-desktop-list--level2 bg-white flex flex-col flex-wrap items-start content-start justify-start h-full" 4716 title="Submenu for Zabawki" 4717 > 4718 <li 4719 class="menu-desktop-item menu-desktop-item--level2 " 4720 > 4721 4722<a href="https://www.trefl.com/zabawki/dla-niemowlaka" 4723 class="snowdog-menu-link " 4724 data-menu="menu-18" 4725 > 4726 Zabawki dla niemowlaka</a> 4727 </li> 4728 4729 <li 4730 class="menu-desktop-item menu-desktop-item--level2 " 4731 > 4732 4733<a href="https://www.trefl.com/zabawki/1-3-lata" 4734 class="snowdog-menu-link " 4735 data-menu="menu-19" 4736 > 4737 Zabawki dla dzieci 1-3</a> 4738 </li> 4739 4740 <li 4741 class="menu-desktop-item menu-desktop-item--level2 " 4742 > 4743 4744<a href="https://www.trefl.com/zabawki/3-lata" 4745 class="snowdog-menu-link " 4746 data-menu="menu-20" 4747 > 4748 Zabawki dla 3 latka</a> 4749 </li> 4750 4751 <li 4752 class="menu-desktop-item menu-desktop-item--level2 " 4753 > 4754 4755<a href="https://www.trefl.com/zabawki/4-lata" 4756 class="snowdog-menu-link " 4757 data-menu="menu-21" 4758 > 4759 Zabawki dla 4 latka</a> 4760 </li> 4761 4762 <li 4763 class="menu-desktop-item menu-desktop-item--level2 " 4764 > 4765 4766<a href="https://www.trefl.com/zabawki/4-6-lat" 4767 class="snowdog-menu-link " 4768 data-menu="menu-22" 4769 > 4770 Zabawki dla dzieci 4-6</a> 4771 </li> 4772 4773 <li 4774 class="menu-desktop-item menu-desktop-item--level2 " 4775 > 4776 4777<a href="https://www.trefl.com/zabawki/6-8-lat" 4778 class="snowdog-menu-link " 4779 data-menu="menu-23" 4780 > 4781 Zabawki dla dzieci 6-8</a> 4782 </li> 4783 4784 <li 4785 class="menu-desktop-item menu-desktop-item--level2 " 4786 > 4787 4788<a href="https://www.trefl.com/zabawki/8-10-lat" 4789 class="snowdog-menu-link " 4790 data-menu="menu-24" 4791 > 4792 Zabawki dla dzieci 8-10</a> 4793 </li> 4794 4795 <li 4796 class="menu-desktop-item menu-desktop-item--level2 " 4797 > 4798
4799<a href="https://www.trefl.com/zabawki/do-kapieli" 4800 class="snowdog-menu-link " 4801 data-menu="menu-25" 4802 > 4803 Zabawki do kÄ pieli</a> 4804 </li> 4805 4806 <span class="menu-desktop-separator" aria-hidden="true"></span> 4807 <li 4808 class="menu-desktop-item menu-desktop-item--level2 " 4809 > 4810 4811<a href="https://www.trefl.com/zabawki/drewniane" 4812 class="snowdog-menu-link " 4813 data-menu="menu-26" 4814 > 4815 Zabawki drewniane</a> 4816 </li> 4817 4818 <li 4819 class="menu-desktop-item menu-desktop-item--level2 " 4820 > 4821 4822<a href="https://www.trefl.com/zabawki/interaktywne" 4823 class="snowdog-menu-link " 4824 data-menu="menu-27" 4825 > 4826 Zabawki interaktywne</a> 4827 </li> 4828 4829 <li 4830 class="menu-desktop-item menu-desktop-item--level2 " 4831 > 4832 4833<a href="https://www.trefl.com/zabawki/klocki" 4834 class="snowdog-menu-link " 4835 data-menu="menu-28" 4836 > 4837 Klocki</a> 4838 </li> 4839 4840 <li 4841 class="menu-desktop-item menu-desktop-item--level2 " 4842 > 4843 4844<a href="https://www.trefl.com/zabawki/klocki/klocki-ceramiczne" 4845 class="snowdog-menu-link " 4846 data-menu="menu-399" 4847 > 4848 Klocki ceramiczne Brick Trick</a> 4849 </li> 4850 4851 <li 4852 class="menu-desktop-item menu-desktop-item--level2 " 4853 > 4854 4855<a href="https://www.trefl.com/zabawki/klocki/konstrukcyjne" 4856 class="snowdog-menu-link " 4857 data-menu="menu-599" 4858 > 4859 Klocki konstrukcyjne</a> 4860 </li> 4861 4862 <li 4863 class="menu-desktop-item menu-desktop-item--level2 " 4864 > 4865 4866<a href="https://www.trefl.com/zabawki/magiczne-sztuczki" 4867 class="snowdog-menu-link " 4868 data-menu="menu-449" 4869 > 4870 Magiczne Sztuczki</a> 4871 </li> 4872 4873 <li 4874 class="menu-desktop-item menu-desktop-item--level2 " 4875 > 4876 4877<a href="https://www.trefl.com/zabawki/modele" 4878 class="snowdog-menu-link " 4879 data-menu="menu-29" 4880 > 4881 Modele aut i pojazdów</a> 4882 </li> 4883 4884 <span class="menu-desktop-separator" aria-hidden="true"></span> 4885 <li 4886 class="menu-desktop-item menu-desktop-item--level2 " 4887 > 4888 4889<a href="https://www.trefl.com/zabawki/outdoorowe" 4890 class="snowdog-menu-link " 4891 data-menu="menu-30" 4892 > 4893 Zabawki outdoorowe</a> 4894 </li> 4895 4896 <li 4897 class="menu-desktop-item menu-desktop-item--level2 " 4898 > 4899 4900<a href="https://www.trefl.com/zabawki/pilki" 4901 class="snowdog-menu-link " 4902 data-menu="menu-31" 4903 > 4904 PiÅki</a> 4905 </li> 4906 4907 <li 4908 class="menu-desktop-item menu-desktop-item--level2 " 4909 > 4910 4911<a href="https://www.trefl.com/zabawki/kreatywne" 4912 class="snowdog-menu-link " 4913 data-menu="menu-392" 4914 > 4915 Zabawki kreatywne</a> 4916 </li> 4917 4918 <li 4919 class="menu-desktop-item menu-desktop-item--level2 " 4920 > 4921 4922<a href="https://www.trefl.com/zabawki/sensoryczne" 4923 class="snowdog-menu-link " 4924 data-menu="menu-32" 4925 > 4926 Zabawki sensoryczne</a> 4927 </li> 4928 4929 <li 4930 class="menu-desktop-item menu-desktop-item--level2 " 4931 > 4932 4933<a href="https://www.trefl.com/zabawki/hape" 4934 class="snowdog-menu-link " 4935 data-menu="menu-33" 4936 > 4937 Zabawki Hape</a> 4938 </li> 4939 4940 <li 4941 class="menu-desktop-item menu-desktop-item--level2 " 4942 > 4943 4944<a href="https://www.trefl.com/zabawki/zestawy-naukowe" 4945 class="snowdog-menu-link " 4946 data-menu="menu-34" 4947 > 4948 Zabawki naukowe</a> 4949 </li> 4950 4951 </ul> 4952 </div> 4953 </div> 4954 </li> 4955 <li class="menu-desktop-item menu-desktop-item--level1 flex items-center 4956 " 4957 @mouseenter="toggleSubmenu('35', null, $event)" 4958 @keydown.enter.prevent="toggleSubmenu('35', null, $event)" 4959 @keydown.space.prevent="toggleSubmenu('35', null, $event)" 4960 @keydown.escape.prevent="toggleSubmenu('35', false, $event)" 4961 aria-haspopup="true" 4962 :aria-expanded="openSubmenuId === '35'" 4963 :tabindex="openSubmenuId === '35' ? 0 : -1" 4964 role="menuitem" 4965 > 4966 <div class="menu-desktop-item-wrap relative flex items-center"> 4967 4968<a href="https://www.trefl.com/ksiazki" 4969 class="snowdog-menu-link " 4970 data-menu="menu-35" 4971 > 4972 KsiÄ Å¼ki</a> 4973 4974 <sp
4974an class="flex items-center justify-center ml-1.5" aria-hidden="true"> 4975 <svg viewBox="0 0 10.012074 6.0120745" fill="currentColor" class="text-gray-gray" aria-hidden="true" width="10.012074" height="6.0120745" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" d="M.2927864.3052882a1 1 0 0 1 1.4140001 0l3.293 3.293 3.293-3.293a1 1 0 1 1 1.414 1.414l-4 4a1 1 0 0 1-1.414 0l-4-4a1 1 0 0 1 0-1.414z" clip-rule="evenodd"/></svg> 4976 </span> 4977 </div> 4978 4979 <div 4980 x-ref="submenu-35" 4981 class="menu-desktop-submenu absolute left-0 top-full w-full z-30 bg-white flex border-t border-gray-light shadow-md" 4982 x-show="openSubmenuId === '35'" 4983 x-cloak 4984 > 4985 <div class="container h-full"> 4986 <ul 4987 class="menu-desktop-list menu-desktop-list--level2 bg-white flex flex-col flex-wrap items-start content-start justify-start h-full" 4988 title="Submenu for Książki" 4989 > 4990 <li 4991 class="menu-desktop-item menu-desktop-item--level2 " 4992 > 4993 4994<a href="https://www.trefl.com/ksiazki/dla-dzieci/dla-dzieci-1-2-lata" 4995 class="snowdog-menu-link " 4996 data-menu="menu-602" 4997 > 4998 KsiÄ Å¼ki dla dzieci 1-2 lata</a> 4999 </li> 5000 5001 <li 5002 class="menu-desktop-item menu-desktop-item--level2 " 5003 > 5004 5005<a href="https://www.trefl.com/ksiazki/dla-dzieci/dla-dzieci-3-5-lat" 5006 class="snowdog-menu-link " 5007 data-menu="menu-603" 5008 > 5009 KsiÄ Å¼ki dla dzieci 3-5 lat</a> 5010 </li> 5011 5012 <li 5013 class="menu-desktop-item menu-desktop-item--level2 " 5014 > 5015 5016<a href="https://www.trefl.com/ksiazki/dla-dzieci/dla-dzieci-6-8-lat" 5017 class="snowdog-menu-link " 5018 data-menu="menu-604" 5019 > 5020 KsiÄ Å¼ki dla dzieci 6-8 lat</a> 5021 </li> 5022 5023 <li 5024 class="menu-desktop-item menu-desktop-item--level2 " 5025 > 5026 5027<a href="https://www.trefl.com/ksiazki/dla-dzieci/dla-dzieci-9-12-lat" 5028 class="snowdog-menu-link " 5029 data-menu="menu-605" 5030 > 5031 KsiÄ Å¼ki dla dzieci 9-12 lat</a> 5032 </li> 5033 5034 <li 5035 class="menu-desktop-item menu-desktop-item--level2 " 5036 > 5037 5038<a href="https://www.trefl.com/ksiazki/ksiazki-dla-rodzicow" 5039 class="snowdog-menu-link " 5040 data-menu="menu-37" 5041 > 5042 KsiÄ Å¼ki dla rodziców</a> 5043 </li> 5044 5045 <li 5046 class="menu-desktop-item menu-desktop-item--level2 " 5047 > 5048 5049<a href="https://www.trefl.com/ksiazki/kolorowanki" 5050 class="snowdog-menu-link " 5051 data-menu="menu-606" 5052 > 5053 Kolorowanki</a> 5054 </li> 5055 5056 </ul> 5057 </div> 5058 </div> 5059 </li> 5060 <li class="menu-desktop-item menu-desktop-item--level1 flex items-center 5061 " 5062 @mouseenter="toggleSubmenu('39', null, $event)" 5063 @keydown.enter.prevent="toggleSubmenu('39', null, $event)" 5064 @keydown.space.prevent="toggleSubmenu('39', null, $event)" 5065 @keydown.escape.prevent="toggleSubmenu('39', false, $event)" 5066 aria-haspopup="true" 5067 :aria-expanded="openSubmenuId === '39'" 5068 :tabindex="openSubmenuId === '39' ? 0 : -1" 5069 role="menuitem" 5070 > 5071 <div class="menu-desktop-item-wrap relative flex items-center"> 5072 5073<a href="https://www.trefl.com/rodzina-treflikow" 5074 class="snowdog-menu-link " 5075 data-menu="menu-39" 5076 > 5077 Trefliki</a> 5078 5079 <sp
5079an class="flex items-center justify-center ml-1.5" aria-hidden="true"> 5080 <svg viewBox="0 0 10.012074 6.0120745" fill="currentColor" class="text-gray-gray" aria-hidden="true" width="10.012074" height="6.0120745" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" d="M.2927864.3052882a1 1 0 0 1 1.4140001 0l3.293 3.293 3.293-3.293a1 1 0 1 1 1.414 1.414l-4 4a1 1 0 0 1-1.414 0l-4-4a1 1 0 0 1 0-1.414z" clip-rule="evenodd"/></svg> 5081 </span> 5082 </div> 5083 5084 <div 5085 x-ref="submenu-39" 5086 class="menu-desktop-submenu absolute left-0 top-full w-full z-30 bg-white flex border-t border-gray-light shadow-md" 5087 x-show="openSubmenuId === '39'" 5088 x-cloak 5089 > 5090 <div class="container h-full"> 5091 <ul 5092 class="menu-desktop-list menu-desktop-list--level2 bg-white flex flex-col flex-wrap items-start content-start justify-start h-full" 5093 title="Submenu for Trefliki" 5094 > 5095 <li 5096 class="menu-desktop-item menu-desktop-item--level2 " 5097 > 5098 5099<a href="https://www.trefl.com/rodzina-treflikow/puzzle" 5100 class="snowdog-menu-link " 5101 data-menu="menu-40" 5102 > 5103 Puzzle Rodzina Treflików</a> 5104 </li> 5105 5106 <li 5107 class="menu-desktop-item menu-desktop-item--level2 " 5108 > 5109 5110<a href="https://www.trefl.com/rodzina-treflikow/gry" 5111 class="snowdog-menu-link " 5112 data-menu="menu-41" 5113 > 5114 Gry Rodzina Treflików</a> 5115 </li> 5116 5117 <li 5118 class="menu-desktop-item menu-desktop-item--level2 " 5119 > 5120 5121<a href="https://www.trefl.com/rodzina-treflikow/zabawki" 5122 class="snowdog-menu-link " 5123 data-menu="menu-42" 5124 > 5125 Zabawki Rodzina Treflików</a> 5126 </li> 5127 5128 <li 5129 class="menu-desktop-item menu-desktop-item--level2 " 5130 > 5131 5132<a href="https://www.trefl.com/rodzina-treflikow/ksiazki" 5133 class="snowdog-menu-link " 5134 data-menu="menu-43" 5135 > 5136 KsiÄ Å¼ki Rodzina Treflików</a> 5137 </li> 5138 5139 </ul> 5140 </div> 5141 </div> 5142 </li> 5143 <li class="menu-desktop-item menu-desktop-item--level1 flex items-center 5144 " 5145 @mouseenter="toggleSubmenu('44', null, $event)" 5146 @keydown.enter.prevent="toggleSubmenu('44', null, $event)" 5147 @keydown.space.prevent="toggleSubmenu('44', null, $event)" 5148 @keydown.escape.prevent="toggleSubmenu('44', false, $event)" 5149 aria-haspopup="true" 5150 :aria-expanded="openSubmenuId === '44'" 5151 :tabindex="openSubmenuId === '44' ? 0 : -1" 5152 role="menuitem" 5153 > 5154 <div class="menu-desktop-item-wrap relative flex items-center"> 5155 5156<a href="https://www.trefl.com/prezenty" 5157 class="snowdog-menu-link " 5158 data-menu="menu-44" 5159 > 5160 Prezenty</a> 5161 5162 <sp
5162an class="flex items-center justify-center ml-1.5" aria-hidden="true"> 5163 <svg viewBox="0 0 10.012074 6.0120745" fill="currentColor" class="text-gray-gray" aria-hidden="true" width="10.012074" height="6.0120745" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" d="M.2927864.3052882a1 1 0 0 1 1.4140001 0l3.293 3.293 3.293-3.293a1 1 0 1 1 1.414 1.414l-4 4a1 1 0 0 1-1.414 0l-4-4a1 1 0 0 1 0-1.414z" clip-rule="evenodd"/></svg> 5164 </span> 5165 </div> 5166 5167 <div 5168 x-ref="submenu-44" 5169 class="menu-desktop-submenu absolute left-0 top-full w-full z-30 bg-white flex border-t border-gray-light shadow-md" 5170 x-show="openSubmenuId === '44'" 5171 x-cloak 5172 > 5173 <div class="container h-full"> 5174 <ul 5175 class="menu-desktop-list menu-desktop-list--level2 bg-white flex flex-col flex-wrap items-start content-start justify-start h-full" 5176 title="Submenu for Prezenty" 5177 > 5178 <li 5179 class="menu-desktop-item menu-desktop-item--level2 " 5180 > 5181 5182<a href="https://www.trefl.com/prezenty/dla-dzieci" 5183 class="snowdog-menu-link " 5184 data-menu="menu-578" 5185 > 5186 Prezenty dla dzieci</a> 5187 </li> 5188 5189 <li 5190 class="menu-desktop-item menu-desktop-item--level2 " 5191 > 5192 5193<a href="https://www.trefl.com/prezenty/dla-dzieci/0-2-lata" 5194 class="snowdog-menu-link " 5195 data-menu="menu-490" 5196 > 5197 Prezenty dla dzieci 0-2 lata</a> 5198 </li> 5199 5200 <li 5201 class="menu-desktop-item menu-desktop-item--level2 " 5202 > 5203 5204<a href="https://www.trefl.com/prezenty/dla-dzieci/3-5-lat" 5205 class="snowdog-menu-link " 5206 data-menu="menu-491" 5207 > 5208 Prezenty dla dzieci 3-5 lat</a> 5209 </li> 5210 5211 <li 5212 class="menu-desktop-item menu-desktop-item--level2 " 5213 > 5214 5215<a href="https://www.trefl.com/prezenty/dla-dzieci/6-8-lat" 5216 class="snowdog-menu-link " 5217 data-menu="menu-492" 5218 > 5219 Prezenty dla dzieci 6-8 lat</a> 5220 </li> 5221 5222 <li 5223 class="menu-desktop-item menu-desktop-item--level2 " 5224 > 5225 5226<a href="https://www.trefl.com/prezenty/dla-dzieci/9-12-lat" 5227 class="snowdog-menu-link " 5228 data-menu="menu-493" 5229 > 5230 Prezenty dla dzieci 9-12 lat</a> 5231 </li> 5232 5233 <li 5234 class="menu-desktop-item menu-desktop-item--level2 " 5235 > 5236 5237<a href="https://www.trefl.com/prezenty/dla-dzieci/13-lat-i-dorosli" 5238 class="snowdog-menu-link " 5239 data-menu="menu-494" 5240 > 5241 Prezenty dla dzieci 13+ i dorosÅych</a> 5242 </li> 5243 5244 <li 5245 class="menu-desktop-item menu-desktop-item--level2 " 5246 > 5247 5248<a href="https://www.trefl.com/prezenty/swiateczne" 5249 class="snowdog-menu-link " 5250 data-menu="menu-465" 5251 > 5252 Prezenty ÅwiÄ teczne</a> 5253 </li> 5254 5255 <li 5256 class="menu-desktop-item menu-desktop-item--level2 " 5257 > 5258 5259<a href="https://www.trefl.com/prezenty/urodzinowe" 5260 class="snowdog-menu-link " 5261 data-menu="menu-466" 5262 > 5263 Prezenty urodzinowe</a> 5264 </li> 5265
5266 <span class="menu-desktop-separator" aria-hidden="true"></span> 5267 <li 5268 class="menu-desktop-item menu-desktop-item--level2 " 5269 > 5270 5271<a href="https://www.trefl.com/prezenty/rodzinne" 5272 class="snowdog-menu-link " 5273 data-menu="menu-467" 5274 > 5275 Prezenty rodzinne</a> 5276 </li> 5277 5278 <li 5279 class="menu-desktop-item menu-desktop-item--level2 " 5280 > 5281 5282<a href="https://www.trefl.com/prezenty/wielkanocne-i-wiosenne" 5283 class="snowdog-menu-link " 5284 data-menu="menu-468" 5285 > 5286 Prezenty wielkanocne i wiosenne</a> 5287 </li> 5288 5289 <li 5290 class="menu-desktop-item menu-desktop-item--level2 " 5291 > 5292 5293<a href="https://www.trefl.com/prezenty/gry-planszowe-na-prezent" 5294 class="snowdog-menu-link " 5295 data-menu="menu-469" 5296 > 5297 Gry planszowe na prezent</a> 5298 </li> 5299 5300 </ul> 5301 </div> 5302 </div> 5303 </li> 5304 <li class="menu-desktop-item menu-desktop-item--level1 flex items-center 5305 " 5306 @mouseenter="openSubmenuId = null" 5307 role="menuitem" 5308 > 5309 <div class="menu-desktop-item-wrap relative flex items-center"> 5310 5311<a href="https://www.trefl.com/nowosci" 5312 class="snowdog-menu-link " 5313 data-menu="menu-457" 5314 > 5315 NowoÅci</a> 5316 5317 </div> 5318 5319 </li> 5320 <li class="menu-desktop-item menu-desktop-item--level1 flex items-center 5321 " 5322 @mouseenter="openSubmenuId = null" 5323 role="menuitem" 5324 > 5325 <div class="menu-desktop-item-wrap relative flex items-center"> 5326 5327<a href="https://www.trefl.com/puzzle-gry-zabawki-tylko-u-nas" 5328 class="snowdog-menu-link " 5329 data-menu="menu-568" 5330 > 5331 Tylko u nas!</a> 5332 5333 </div> 5334 5335 </li> 5336 <li class="menu-desktop-item menu-desktop-item--level1 flex items-center 5337 " 5338 @mouseenter="toggleSubmenu('45', null, $event)" 5339 @keydown.enter.prevent="toggleSubmenu('45', null, $event)" 5340 @keydown.space.prevent="toggleSubmenu('45', null, $event)" 5341 @keydown.escape.prevent="toggleSubmenu('45', false, $event)" 5342 aria-haspopup="true" 5343 :aria-expanded="openSubmenuId === '45'" 5344 :tabindex="openSubmenuId === '45' ? 0 : -1" 5345 role="menuitem" 5346 > 5347 <div class="menu-desktop-item-wrap relative flex items-center"> 5348 5349<a href="https://www.trefl.com/promocje" 5350 class="snowdog-menu-link " 5351 data-menu="menu-45" 5352 > 5353 Promocje</a> 5354 5355 <sp
5355an class="flex items-center justify-center ml-1.5" aria-hidden="true"> 5356 <svg viewBox="0 0 10.012074 6.0120745" fill="currentColor" class="text-gray-gray" aria-hidden="true" width="10.012074" height="6.0120745" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" d="M.2927864.3052882a1 1 0 0 1 1.4140001 0l3.293 3.293 3.293-3.293a1 1 0 1 1 1.414 1.414l-4 4a1 1 0 0 1-1.414 0l-4-4a1 1 0 0 1 0-1.414z" clip-rule="evenodd"/></svg> 5357 </span> 5358 </div> 5359 5360 <div 5361 x-ref="submenu-45" 5362 class="menu-desktop-submenu absolute left-0 top-full w-full z-30 bg-white flex border-t border-gray-light shadow-md" 5363 x-show="openSubmenuId === '45'" 5364 x-cloak 5365 > 5366 <div class="container h-full"> 5367 <ul 5368 class="menu-desktop-list menu-desktop-list--level2 bg-white flex flex-col flex-wrap items-start content-start justify-start h-full" 5369 title="Submenu for Promocje" 5370 > 5371 <li 5372 class="menu-desktop-item menu-desktop-item--level2 " 5373 > 5374 5375<a href="https://www.trefl.com/promocje/puzzle" 5376 class="snowdog-menu-link " 5377 data-menu="menu-583" 5378 > 5379 Puzzle w promocji</a> 5380 </li> 5381 5382 <li 5383 class="menu-desktop-item menu-desktop-item--level2 " 5384 > 5385 5386<a href="https://www.trefl.com/promocje/gry" 5387 class="snowdog-menu-link " 5388 data-menu="menu-584" 5389 > 5390 Gry w promocji</a> 5391 </li> 5392 5393 <li 5394 class="menu-desktop-item menu-desktop-item--level2 " 5395 > 5396 5397<a href="https://www.trefl.com/promocje/zabawki" 5398 class="snowdog-menu-link " 5399 data-menu="menu-585" 5400 > 5401 Zabawki w promocji</a> 5402 </li> 5403 5404 <li 5405 class="menu-desktop-item menu-desktop-item--level2 " 5406 > 5407 5408<a href="https://www.trefl.com/promocje/ksiazki" 5409 class="snowdog-menu-link " 5410 data-menu="menu-586" 5411 > 5412 KsiÄ Å¼ki w promocji</a> 5413 </li> 5414 5415 </ul> 5416 </div> 5417 </div> 5418 </li> 5419 </ul> 5420 5421 <div class="free-delivery-truck-animation flex items-center font-sans gap-x-3"> 5422 <span class="font-medium leading-5" style="font-size: 0.775rem;"> 5423 Darmowa dostawa 5424 <span class="block font-bold"> 5425 już od 150 zÅ </span> 5426 </span> 5427 5428 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1446 1024" class="overflow-visible transform-gpu" width="26" height="26" style="color: #858585" aria-hidden="true"> 5429<path class="truck" fill="currentColor" d="M1439.681 518.326l-91.421-117.134-101.625-212.84c-31.63-65.709-97.951-107.747-170.803-107.951h-185.087v-48.976c0-17.346-14.285-31.426-31.63-31.426h-674.64c-17.346 0-31.426 14.081-31.426 31.63s14.081 31.63 31.63 31.63h643.010v353.033c0 17.346 14.081 31.63 31.63 31.63h445.679l78.973 100.808v269.366h-121.419c-16.937-95.299-107.747-158.967-203.045-142.029-72.443 12.856-129.173 69.586-142.029 142.029h-313.444c-16.937-95.299-107.747-1
542958.967-203.045-142.029-72.443 12.856-129.173 69.586-142.029 142.029h-90.197c-17.346 0-31.63 14.081-31.63 31.63 0 17.346 14.081 31.63 31.63 31.63h90.401c17.754 95.299 109.583 157.947 204.678 140.193 71.219-13.264 126.725-68.974 140.193-140.193h312.628c17.754 95.299 109.583 157.947 204.678 140.193 71.219-13.264 126.725-68.974 140.193-140.193h121.623c34.895 0 63.056-28.161 63.056-63.056v-280.59c0-6.938-2.245-13.876-6.53-19.386zM890.745 385.071v-241.613h185.495c48.568 0 93.054 27.957 113.868 72.035l81.014 169.782h-380.378zM543.834 848.708c0 62.036-50.404 112.236-112.236 112.236-62.036 0-112.644-50.2-112.644-112.236s50.2-112.644 112.236-112.644c62.036 0 112.644 50.2 112.644 112.236 0 0.204 0 0.204 0 0.408zM1201.537 848.708c0 62.036-50.404 112.236-112.44 112.236s-112.44-50.404-112.44-112.44c0-62.036 50.404-112.44 112.44-112.44 62.24 0 112.44 50.404 112.44 112.644 0-0.204 0 0 0 0z"/> 5430<path class="truck-line-bottom" fill="currentColor" d="M315.485 606.482c0-17.346-14.081-31.63-31.63-31.63h-173.456c-17.346 0-31.63 14.081-31.63 31.63s14.081 31.63 31.63 31.63h173.456c17.55-0.204 31.63-14.285 31.63-31.63z"/> 5431<path class="truck-line-middle" fill="currentColor" d="M425.884 417.11c0-17.346-14.081-31.63-31.63-31.63h-362.624c-17.346 0-31.63 14.081-31.63 31.63 0 17.346 14.081 31.63 31.63 31.63h362.828c17.346 0 31.426-14.285 31.426-31.63z"/> 5432<path class="truck-line-top" fill="currentColor" d="M110.399 259.367h362.828c17.346 0 31.63-14.081 31.63-31.63s-14.081-31.63-31.63-31.63h-362.828c-17.346 0-31.63 14.081-31.63 31.63s14.285 31.63 31.63 31.63z"/> 5433</svg> 5434 </div> 5435 5436 <style> 5437 .free-delivery-truck-animation { 5438 .truck, 5439 .truck-line-bottom, 5440 .truck-line-middle, 5441 .truck-line-top { 5442 animation-duration: 3s; 5443 animation-iteration-count: infinite; 5444 transform: translateX(-3000px); 5445 will-change: transform; 5446 } 5447 5448 .truck { 5449 animation-name: move-truck; 5450 } 5451 5452 .truck-line-bottom, 5453 .truck-line-middle, 5454 .truck-line-top { 5455 animation-name: move-truck-line; 5456 } 5457 5458 .truck-line-middle { 5459 animation-delay: 25ms; 5460 } 5461 5462 .truck-line-bottom { 5463 animation-delay: 50ms; 5464 } 5465 } 5466 5467 @media (prefers-reduced-motion: reduce) { 5468 .free-delivery-truck-animation { 5469 .truck, 5470 .truck-line-bottom, 5471 .truck-line-middle, 5472 .truck-line-top { 5473 animation-duration: 0s; 5474 transform: translateX(0); 5475 } 5476 } 5477 } 5478 5479 @keyframes move-truck { 5480 0% { 5481 transform: translateX(-3000px); 5482 } 5483 10% { 5484 transform: rotate(6deg); 5485 } 5486 20% { 5487 transform:rotate(4deg); 5488 } 5489 60% { 5490 transform: translateX(-400px); 5491 } 5492 70% { 5493 opacity: 1; 5494 } 5495 92% { 5496 opacity: 0; 5497 } 5498 100% { 5499 transform: translateX(6000px); 5500 opacity: 0; 5501 } 5502 } 5503 5504 @keyframes move-truck-line { 5505 0% { 5506 transform: translateX(-3000px); 5507 } 5508 10% { 5509 transform: rotate(4deg); 5510 } 5511 20% { 5512 transform: rotate(2deg); 5513 } 5514 55%, 60%, 65% { 5515 transform: translateX(-400px); 5516 } 5517 70% { 5518 opacity: 1; 5519 } 5520 92% { 5521 opacity: 0; 5522 } 5523 100% { 5524 transform: translateX(6000px); 5525 opacity: 0; 5526 } 5527 } 5528</style> 5529 </nav> 5530 </div> 5531 </div> 5532</header><main id="maincontent" class="page-main"><div id="contentarea" tabindex="-1"></div> 5533<div class="page messages">
5533<script> 5534 function initMessages() { 5535 "use strict"; 5536 return { 5537 messages: window.mageMessages || [], 5538 isEmpty() { 5539 return this.messages.reduce( 5540 function (isEmpty, message) { 5541 return isEmpty && message === undefined 5542 }, true 5543 ) 5544 }, 5545 hasMessages() { 5546 return !this.isEmpty(); 5547 }, 5548 hasMessage() { 5549 return !!this.message; 5550 }, 5551 removeMessage() { 5552 this.messages[this.index] = undefined; 5553 }, 5554 addMessages(messages, hideAfter) { 5555 messages.map((message) => { 5556 this.messages = this.messages.concat(message); 5557 if (hideAfter === undefined && message.type === 'success' && window.defaultSuccessMessageTimeout) { 5558 hideAfter = window.defaultSuccessMessageTimeout; 5559 } 5560 if (hideAfter) { 5561 this.setHideTimeOut(this.messages.length -1, hideAfter); 5562 } 5563 }); 5564 }, 5565 setHideTimeOut(messageIndex, hideAfter) { 5566 setTimeout((messageIndex) => { 5567 this.messages[messageIndex] = undefined; 5568 }, hideAfter, messageIndex); 5569 }, 5570 eventListeners: { 5571 ['@messages-loaded.window'](event) { 5572 this.addMessages(event.detail.messages, event.detail.hideAfter) 5573 }, 5574 ['@private-content-loaded.window'](event) { 5575 const data = event.detail.data; 5576 if ( 5577 data.messages && 5578 data.messages.messages && 5579 data.messages.messages.length 5580 ) { 5581 this.addMessages(data.messages.messages); 5582 } 5583 }, 5584 ['@clear-messages.window']() { 5585 this.messages = []; 5586 } 5587 }, 5588 getMessageUiId() { 5589 return 'message-' + this.message.type; 5590 } 5591 } 5592 } 5593 5594 window.addEventListener('alpine:init', () => Alpine.data('initMessages', initMessages), {once: true}) 5595</script>
5595 5596<section id="messages" 5597 x-data="initMessages" 5598 x-bind="eventListeners" 5599 role="alert" 5600> 5601 <template x-if="hasMessages"> 5602 <div class="w-full"> 5603 <div class="messages container mx-auto py-3"> 5604 <template x-for="(message, index) in messages" :key="index"> 5605 <div> 5606 <template x-if="hasMessage"> 5607 <div class="message" 5608 :class="message.type" 5609 :ui-id="getMessageUiId" 5610 > 5611 <span x-html="message.text"></span> 5612 <button 5613 type="button" 5614 class="text-gray-600 hover:text-black" 5615 aria-label="Zamknij wiadomoÅÄ" 5616 @click.prevent="removeMessage" 5617 > 5618 <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" class="stroke-current" width="18" height="18" aria-hidden="true"> 5619 <path stroke-linecap="round" stroke-linejoin="round" d="M6 18L18 6M6 6l12 12"/> 5620</svg> 5621 </button> 5622 </div> 5623 </template> 5624 </div> 5625 </template> 5626 </div> 5627 </div> 5628 </template> 5629</section> 5630</div><div id="page-title" class="bg-gray-light mb-6 lg:mb-12"><div class="container pt-8 lg:pt-16 pb-8 lg:pb-48 lg:pl-20 flex flex-col lg:flex-row justify-between items-center gap-4"> <div class="flex flex-col"> 5631 <h1 class="font-sans font-normal text-2xl lg:text-4xl text-black" 5632 > 5633 <span class="base" data-ui-id="page-title-wrapper" >MÄ dre zabawki â pomysÅy na wartoÅciowÄ zabawÄ po szkole</span> </h1> 5634 </div> 5635 <nav class="breadcrumbs" aria-label="Breadcrumb"> 5636 <ol class="items list-reset flex flex-wrap text-xs text-gray-dark font-medium max-w-md"> 5637 <li class="item flex home"> 5638 <a href="https://www.trefl.com/" 5639 title="Przejdź na stronę główną" 5640 class="hover:underline" 5641 >Strona gÅówna</a> 5642 </li> 5643 <li class="item flex blog"> 5644 <span aria-hidden="true" class="separator px-2">/</span> 5645 <a href="https://www.trefl.com/blog" 5646 title="Blog" 5647 class="hover:underline" 5648 >Blog</a> 5649 </li> 5650 <li class="item flex madre-zabawki-pomysly-na-wartosciowa-zabawe-po-szkole"> 5651 <span aria-hidden="true" class="separator px-2">/</span> 5652 <span 5653 class="text-primary line-clamp-1" 5654 aria-current="page" 5655 >MÄ dre zabawki â pomysÅy na wartoÅciowÄ zabawÄ po szkole</span> 5656 </li> 5657 </ol> 5658 </nav> 5659
5659<script type="application/ld+json"> 5660 { 5661 "@context": "http://schema.org", 5662 "@type": "BreadcrumbList", 5663 "itemListElement": [ 5664 { 5665 "@type": "ListItem", 5666 "position": "1", 5667 "item": { 5668 "@id": "https://www.trefl.com/", 5669 "name": "Strona gÅówna" 5670 } 5671 } 5672 , { 5673 "@type": "ListItem", 5674 "position": "2", 5675 "item": { 5676 "@id": "https://www.trefl.com/blog", 5677 "name": "Blog" 5678 } 5679 } 5680 , { 5681 "@type": "ListItem", 5682 "position": "3", 5683 "item": { 5684 "@id": "", 5685 "name": "MÄ dre zabawki â pomysÅy na wartoÅciowÄ zabawÄ po szkole" 5686 } 5687 } 5688 ] 5689 } 5690 </script>
5690 5691</div></div><div class="columns"><div class="column main">
5691<script nonce="NnI0ZHB5ejN3anFyNjY4MDRrbGQ5bzgwMWF0Mmx0anI="> 5692 var feedId = getUrlParam('ff'), 5693 product = getUrlParam('fp'), 5694 currentDate = new Date(), 5695 session = getCookie('feed_session'); 5696 5697 if (!session) { 5698 session = '' + Math.floor(currentDate.getTime() / 1000) + Math.floor(Math.random() * 10000001); 5699 } 5700 5701 if (session && feedId > 0 && product > 0) { 5702 setCookie('feed_session', session, {expires: 365, path: '/'}); 5703 setCookie('feed_id', feedId, 365); 5704 5705 var xhr = new XMLHttpRequest(), 5706 baseUrl = 'https://www.trefl.com/', 5707 url = BASE_URL + '?rnd=' + Math.floor(Math.random() * 10000001) + "&feed=" + feedId + "&session=" + session + "&product=" + product; 5708 5709 xhr.open('GET', url, true); 5710 xhr.setRequestHeader('Content-Type', 'application/json'); 5711 xhr.send(); 5712 } 5713 5714 function getUrlParam(name) { 5715 let results = new RegExp('[\?&]' + name + '=([^&#]*)').exec(window.location.href); 5716 5717 if (results === null) { 5718 return ''; 5719 } else { 5720 return results[1] || 0; 5721 } 5722 } 5723 5724 function getCookie(cookieName) { 5725 var name = cookieName + "=", 5726 decodedCookie = decodeURIComponent(document.cookie), 5727 cookieArray = decodedCookie.split(';'); 5728 5729 for (var i = 0; i < cookieArray.length; i++) { 5730 var cookie = cookieArray[i].trim(); 5731 if (cookie.indexOf(name) === 0) { 5732 return cookie.substring(name.length, cookie.length); 5733 } 5734 } 5735 5736 return null; 5737 } 5738 5739 function setCookie(cookieName, cookieValue, expirationDays) { 5740 var d = new Date(); 5741 d.setTime(d.getTime() + (expirationDays * 24 * 60 * 60 * 1000)); 5742 var expires = "expires=" + d.toUTCString(); 5743 document.cookie = cookieName + "=" + cookieValue + ";" + expires + ";path=/"; 5744 } 5745</script>
5745 5746<article class="prose w-full max-w-none lg:-mt-44"> 5747 <img fetchpriority="high" 5748 srcset="https://www.trefl.com/media/mageplaza/blog/post/resize/1146x/m/a/madre-zabawki-rozwijaja-umiejetnosci-dziecka.jpg 1x, 5749 https://www.trefl.com/media/mageplaza/blog/post/resize/1400x/m/a/madre-zabawki-rozwijaja-umiejetnosci-dziecka.jpg 2x" 5750 src="https://www.trefl.com/media/mageplaza/blog/post/resize/1146x/m/a/madre-zabawki-rozwijaja-umiejetnosci-dziecka.jpg" 5751 alt="Mądre zabawki – pomysły na wartościową zabawę po szkole" 5752 aria-hidden="true" 5753 class="w-full" 5754 /> 5755 5756 <div class="w-full max-w-3xl mx-auto"> 5757 <p><strong>Powrót do szkoÅy oznacza ponowne spotkania z kolegami, nowe wyzwania i mnóstwo nowych doÅwiadczeÅ. Ale kiedy ostatni dzwonek już wybrzmi, przychodzi czas na coÅ równie ważnego â odpoczynek i dobrÄ zabawÄ.</strong></p> 5758<p><strong>Po intensywnym dniu każde dziecko może potrzebowaÄ czegoÅ innego. Jedno najchÄtniej usiÄ dzie do puzzli, drugie rozpocznie budowÄ wÅasnego miasta, a jeszcze inne zaprosi caÅÄ rodzinÄ do wspólnej rozgrywki. WÅaÅnie dlatego mÄ dre zabawki dla dzieci mogÄ mieÄ tak różne formy. Nie zawsze muszÄ przypominaÄ naukÄ â mogÄ zachÄcaÄ do odkrywania, tworzenia, wspóÅpracy, ukÅadania, wymyÅlania wÅasnych historii albo po prostu spÄdzania czasu razem.</strong></p> 5759<p><strong>Poznaj pomysÅy na wartoÅciowÄ zabawÄ po szkole dla dzieci w różnym wieku â od pierwszych gier i puzzli dla najmÅodszych po propozycje dla trochÄ starszych graczy.</strong></p> 5760<h2><strong>MÄ dre zabawki dla dzieci â czym wÅaÅciwie sÄ ?</strong></h2> 5761<p>Co sprawia, że zabawkÄ możemy nazwaÄ âmÄ drÄ â? Nie chodzi wyÅÄ cznie o to, czy pomaga poznawaÄ litery, liczby albo nowe fakty â bo dobra zabawa może przecież rozwijaÄ dziecko na wiele różnych sposobów.</p> 5762<p><strong>MÄ dre zabawki</strong> angażujÄ i zachÄcajÄ do dziaÅania. <strong>DajÄ przestrzeÅ do podejmowania decyzji, Äwiczenia spostrzegawczoÅci, budowania, tworzenia wÅasnych scenariuszy czy wspóÅpracy z innymi</strong>. Czasem pozwalajÄ zdobywaÄ nowÄ wiedzÄ, innym razem<strong> </strong>pobudzajÄ wyobraźniÄ albo pomagajÄ skupiÄ uwagÄ na jednym, angażujÄ cym zadaniu.</p> 5763<p>Dlatego wybierajÄ c zabawkÄ, warto patrzeÄ nie tylko na jej kategoriÄ czy wiek dziecka, ale przede wszystkim na zainteresowania i to, jakie umiejÄtnoÅci może pomóc mu rozwijaÄ. MaÅy miÅoÅnik zwierzÄ t może z zapaÅem ÄwiczyÄ spostrzegawczoÅÄ grajÄ c w grÄ obserwacyjnÄ , w której tropi kapibarÄ. Fan pojazdów â tworzyÄ wÅasne drogowe historie z autami w roli gÅównej, a poczÄ tkujÄ cy konstruktor â zbudowaÄ pierwszy budynek z prawdziwych cegieÅ.</p> 5764<p><img src="https://trefl-magento-prod.s3.eu-central-1.amazonaws.com/Blog+2026/cechy-dobrej-zabawki.webp" alt="MÄ dra zabawka angażuje, motywuje, uczy podejmowaÄ decyzje, Äwiczy spostrzegawczoÅÄ, rozwija kreatywnoÅÄ lub pozwala spÄdziÄ czas z bliskimi" width="800" height="333"></p> 5765<h2><strong>Gry edukacyjne dla dzieci â nauka, która staje siÄ przygodÄ </strong></h2> 5766<p>Gry edukacyjne dla dzieci nie muszÄ oznaczaÄ monotonnego przyswajania wiedzy ani odpytywania z kolejnych zestawów pytaÅ. <strong>Najciekawiej robi siÄ wtedy, gdy nauka staje siÄ czÄÅciÄ wiÄkszej przygody</strong> â trzeba odnaleÅºÄ poszlakÄ, uratowaÄ dinozaura, dotrzeÄ na odlegÅÄ planetÄ albo bezpiecznie pokonaÄ trasÄ na rowerze.</p> 5767<p>Dla najmÅodszych pierwszym krokiem do Åwiata planszówek może byÄ <a title="Gra rodzinna Spy Guy Kids Zwierzaki Cudaki | Trefl" href="https://www.trefl.com/gra-rodzinna-spy-guy-kids-zwierzaki-cudaki-03061"><strong>Spy Guy Kids: Zwierzaki-Cudaki</strong></a>, przeznaczony dla dzieci<strong> </strong>od 3. roku życia. To <strong>kooperacyjna gra obserwacyjna, w której wszyscy gracze majÄ wspólny cel</strong>: tropiÄ kapibarÄ i wypatrujÄ na planszy wskazanych elementów. WiÄksze ilustracje i mniej szczegóÅowa plansza uÅatwiajÄ poszukiwania mÅodszym dzieciom, a karty zwierzÄ t pozwalajÄ przy okazji poznawaÄ ciekawostki o przyrodzie.</p> 5768<p>Starszym odkrywcom, od 6. roku życia, można zaproponowaÄ <strong>edukacyjne misje z RodzinÄ Treflików</strong>. Tutaj wybór zależy przede wszystkim od tego, co najbardziej ciekawi dziecko.</p> 5769<p><a title="Gra edukacyjna Kosmos, Rodzina Treflików | Trefl" href="https://www.trefl.com/gra-edukacyjna-kosmos-rodzina-treflikow-02911"><strong>Kosmos</strong></a> zabiera graczy na miÄdzyplanetarnÄ wyprawÄ. Wspólne rozwiÄ zywanie zagadek, odpowiadanie na pytania i zarzÄ dzanie zasobami prowadzi drużynÄ do celu, a przy okazji <strong>pozwala poznawaÄ podstawowe zagadnienia zwiÄ zane z fizykÄ i astronomiÄ </strong>.</p> 5770<p>MiÅoÅnikom prehistorii spodoba siÄ gra <a title="Gra edukacyjna Dinozaury, Rodzina Treflików | Trefl" href="https://www.trefl.com/gra-edukacyjna-dinozaury-rodzina-treflikow-02912"><strong>Dinozaury</strong></a>. Tym razem drużyna ucieka przed wybuchem wulkanu, odpowiada na pytania quizowe i wspólnie decyduje, jak pokonywaÄ kolejne przeszkody. <strong>Rozgrywka pozwala poznawaÄ ciekawostki o prehistorycznym Åwiecie i dinozaurach</strong>, a jednoczeÅnie opiera siÄ na wspóÅpracy zamiast rywalizacji.</p> 5771<p>Z kolei <a href="https://www.trefl.com/gra-dla-dzieci-karta-rowerowa-rodzina-treflikow-02910"><strong>Karta Rowerowa</strong></a> przenosi naukÄ w bardzo praktyczny obszar. <strong>Gracze wspólnie poznajÄ zasady ruchu drogowego, rozwiÄ zujÄ zadania i mierzÄ siÄ z sytuacjami, które mogÄ spotkaÄ mÅodego rowerzystÄ na drodze</strong>. To propozycja szczególnie ciekawa dla dzieci, które zaczynajÄ samodzielnie jeździÄ na rowerze i przygotowujÄ siÄ do zdobycia karty rowerowej.</p> 5772<p>A co, jeÅli dziecko woli rywalizacjÄ? Od 7. roku życia można siÄgnÄ Ä po <a title="Gra obserwacyjna Spy Guy Europa | Trefl" href="https://www.trefl.com/gra-obserwacyjna-spy-guy-europa-02886"><strong>Spy Guy Europa</strong></a>. Tym razem <strong>gracze dzielÄ siÄ na dwie drużyny i ruszajÄ w wyÅcig po mapie Europy</strong>. Trzeba szybko wypatrywaÄ ukrytych elementów, zbieraÄ turystyczne pamiÄ tki i wyprzedziÄ przeciwników. To poÅÄ czenie obserwacji, refleksu i drużynowych emocji osadzone w europejskiej scenerii.</p> 5773<p>DziÄki tak różnym wariantom Åatwo można dobraÄ<strong> </strong>zabawki edukacyjne dla 6-latka czy gry edukacyjne dla 7-latka nie tylko pod kÄ tem samego wieku dziecka, ale przede wszystkim tego, co naprawdÄ je interesuje.</p> 5774 5775<!-- Import czcionki Raleway z Google Fonts (jeÅli jeszcze nie masz na stronie) -->
5776<link rel="preconnect" href="https://fonts.googleapis.com"> 5777<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> 5778<link href="https://fonts.googleapis.com/css2?family=Raleway:wght@700;800&display=swap" rel="stylesheet"> 5779 5780<style> 5781.trefl-inline-related { 5782 display: flex; 5783 align-items: center; 5784 gap: 12px; 5785 margin: 20px 0; 5786 padding: 12px 16px; 5787 background-color: #f9f9f9; 5788 border: 1px solid #eef0f2; 5789 border-radius: 10px; 5790 text-decoration: none; 5791 font-family: 'Raleway', sans-serif; 5792 font-size: 14px; 5793 line-height: 1.5; 5794 color: #333333; 5795 width: 100%; 5796 box-sizing: border-box; 5797 transition: background-color 0.2s ease, transform 0.2s ease, box-shadow 0.2s ease, border-color 0.2s ease; 5798} 5799 5800.trefl-inline-related::before { 5801 content: ""; 5802 display: block; 5803 flex-shrink: 0; 5804 width: 20px; 5805 height: 20px; 5806 /* Ikona otwartej ksiÄ Å¼ki w kolorze brandowej czerwieni Trefl (#e30613) */ 5807 background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke='%23e30613' stroke-width='2'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' d='M12 6.253v13m0-13C10.832 5.477 9.246 5 7.5 5S4.168 5.477 3 6.253v13C4.168 18.477 5.754 18 7.5 18s3.332.477 4.5 1.253m0-13C13.168 5.477 14.754 5 16.5 5c1.747 0 3.332.477 4.5 1.253v13C19.832 18.477 18.247 18 16.5 18c-1.746 0-3.332.477-4.5 1.253' /%3E%3C/svg%3E"); 5808 background-repeat: no-repeat; 5809 background-position: center; 5810 background-size: contain; 5811 transition: transform 0.2s ease; 5812} 5813 5814.trefl-inline-related:hover { 5815 background-color: #ffffff; 5816 border-color: #e30613; 5817 transform: translateY(-1px); /* Delikatniejsze uniesienie dopasowane do mniejszego gabarytu */ 5818 box-shadow: 0 4px 12px rgba(227, 6, 19, 0.05); 5819} 5820 5821.trefl-inline-related:hover::before { 5822 transform: scale(1.05); 5823} 5824 5825.trefl-inline-text-wrapper { 5826 flex-grow: 1; 5827} 5828 5829.trefl-inline-related .label { 5830 color: #e30613; 5831 font-weight: 800; 5832 margin-right: 4px; 5833 letter-spacing: 0.2px; 5834} 5835 5836.trefl-inline-related .title { 5837 font-weight: 700; 5838 color: #1a1a1a; 5839 transition: color 0.2s ease; 5840} 5841 5842.trefl-inline-related:hover .title { 5843 color: #e30613; 5844} 5845</style> 5846 5847<a href="https://www.trefl.com/blog/post/gra-planszowa-spy-guy-intrygujaca-rozrywka-dla-calej-rodziny" class="trefl-inline-related"> 5848 <div class="trefl-inline-text-wrapper"> 5849 <span class="label">Zobacz także:</span> 5850 <span class="title">Gra planszowa Spy Guy - intrygujÄ ca rozrywka dla caÅej rodziny! 5851</span> 5852 </div> 5853</a> 5854<h2><strong>Zestaw kreatywny dla fanów klocków â czas coÅ zbudowaÄ z prawdziwej cegÅy!</strong></h2> 5855<p>SÄ dzieci, którym trudno przejÅÄ obojÄtnie obok pudeÅka z klockami. Budowanie wedÅug instrukcji to dopiero poczÄ tek â za chwilÄ powstaje dodatkowe piÄtro, nowy budynek albo zupeÅnie inna konstrukcja. Dla takich maÅych twórców ciekawym pomysÅem bÄdzie <a title="Brick Trick My City | Trefl" href="https://www.trefl.com/zabawki/klocki/klocki-ceramiczne/brick-trick-my-city"><strong>Brick Trick My City</strong></a>.</p> 5856<p>Najważniejszy wyróżnik tej serii widaÄ już przy pierwszym kontakcie z zestawem: <strong>tutaj naprawdÄ buduje siÄ z prawdziwych miniaturowych cegieÅ</strong>. SÄ one wypalane w wysokiej temperaturze i wykonane z materiaÅu wykorzystywanego również w tradycyjnym budownictwie â oczywiÅcie w znacznie mniejszym formacie. Zestawy przeznaczone sÄ dla dzieci od 6. roku życia.</p> 5857<p>W serii My City można wznieÅÄ m.in. KawiarniÄ, Gabinet weterynaryjny, RemizÄ strażackÄ czy Pit Stop. Dziecko może skorzystaÄ z instrukcji albo eksperymentowaÄ z wÅasnymi pomysÅami, a po ukoÅczeniu konstrukcji zabawa wcale siÄ nie koÅczy. <strong>Opakowanie po rozÅożeniu zmienia siÄ w barwnÄ sceneriÄ</strong>, a gotowy budynek może staÄ siÄ inspiracjÄ do snucia wÅasnych historii.</p> 5858<p></p> 5859<p>Co wiÄcej, <strong>szeÅciokÄ tne podstawki pozwalajÄ ÅÄ czyÄ poszczególne zestawy</strong>
5859. Jedna konstrukcja może wiÄc z czasem zamieniÄ siÄ w caÅe miasteczko z kawiarniÄ , remizÄ , gabinetem weterynaryjnym i kolejnymi miejscami.</p> 5860<p>JeÅli wiÄc szukasz zestawu kreatywnego dla 6-latka, który ÅÄ czy konstruowanie z późniejszÄ swobodnÄ zabawÄ , <strong>Brick Trick My City daje dziecku możliwoÅÄ przejÅcia przez caÅy proces: od pierwszej cegieÅki, przez dekorowanie budynku, aż po tworzenie wÅasnego Åwiata</strong>.</p> 5861<!-- Import czcionki Raleway z Google Fonts (jeÅli jeszcze nie masz na stronie) --> 5862<link rel="preconnect" href="https://fonts.googleapis.com"> 5863<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> 5864<link href="https://fonts.googleapis.com/css2?family=Raleway:wght@700;800&display=swap" rel="stylesheet"> 5865 5866<style> 5867.trefl-inline-related { 5868 display: flex; 5869 align-items: center; 5870 gap: 12px; 5871 margin: 20px 0; 5872 padding: 12px 16px; 5873 background-color: #f9f9f9; 5874 border: 1px solid #eef0f2; 5875 border-radius: 10px; 5876 text-decoration: none; 5877 font-family: 'Raleway', sans-serif; 5878 font-size: 14px; 5879 line-height: 1.5; 5880 color: #333333; 5881 width: 100%; 5882 box-sizing: border-box; 5883 transition: background-color 0.2s ease, transform 0.2s ease, box-shadow 0.2s ease, border-color 0.2s ease; 5884} 5885 5886.trefl-inline-related::before { 5887 content: ""; 5888 display: block; 5889 flex-shrink: 0; 5890 width: 20px; 5891 height: 20px; 5892 /* Ikona otwartej ksiÄ Å¼ki w kolorze brandowej czerwieni Trefl (#e30613) */ 5893 background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke='%23e30613' stroke-width='2'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' d='M12 6.253v13m0-13C10.832 5.477 9.246 5 7.5 5S4.168 5.477 3 6.253v13C4.168 18.477 5.754 18 7.5 18s3.332.477 4.5 1.253m0-13C13.168 5.477 14.754 5 16.5 5c1.747 0 3.332.477 4.5 1.253v13C19.832 18.477 18.247 18 16.5 18c-1.746 0-3.332.477-4.5 1.253' /%3E%3C/svg%3E"); 5894 background-repeat: no-repeat; 5895 background-position: center; 5896 background-size: contain; 5897 transition: transform 0.2s ease; 5898} 5899 5900.trefl-inline-related:hover { 5901 background-color: #ffffff; 5902 border-color: #e30613; 5903 transform: translateY(-1px); /* Delikatniejsze uniesienie dopasowane do mniejszego gabarytu */ 5904 box-shadow: 0 4px 12px rgba(227, 6, 19, 0.05); 5905} 5906 5907.trefl-inline-related:hover::before { 5908 transform: scale(1.05); 5909} 5910 5911.trefl-inline-text-wrapper { 5912 flex-grow: 1; 5913} 5914 5915.trefl-inline-related .label { 5916 color: #e30613; 5917 font-weight: 800; 5918 margin-right: 4px; 5919 letter-spacing: 0.2px; 5920} 5921 5922.trefl-inline-related .title { 5923 font-weight: 700; 5924 color: #1a1a1a; 5925 transition: color 0.2s ease; 5926} 5927 5928.trefl-inline-related:hover .title { 5929 color: #e30613; 5930} 5931</style> 5932 5933<a href="https://www.trefl.com/blog/post/klocki-trefl-my-connect-buduj-poruszaj-i-transformuj-swiat" class="trefl-inline-related"> 5934 <div class="trefl-inline-text-wrapper"> 5935 <span class="label">Zobacz także:</span> 5936 <span class="title">Klocki konstrukcyjne Trefl & MY CONNECT - buduj, poruszaj i transformuj Åwiat! 5937</span> 5938 </div> 5939</a> 5940<p><img src="https://trefl-magento-prod.s3.eu-central-1.amazonaws.com/Blog+2026/brick-trick-my-city-to-zestawy-kreatywne-dla-dziewczynki-i-chlopca.webp" alt="Brick Trick My City to zestawy kreatywne dla dziewczynki i chÅopca" width="800" height="533"></p> 5941<h2><strong>Samochody dla dziecka â maÅe pojazdy, wielkie historie</strong></h2> 5942<p>Nie każda wartoÅciowa zabawa potrzebuje planszy, instrukcji czy konkretnego celu. <strong>Czasem wystarczy jeden pojazd, kawaÅek podÅogi i dzieciÄca wyobraźnia, żeby rozpoczÄÅa siÄ akcja ratunkowa, wielki transport albo wyprawa na drugi koniec pokoju</strong>.</p> 5943<p><a title="Modele SIKU | Trefl" href="https://www.trefl.com/zabawki/modele"><strong>Modele SIKU</strong></a> dobrze wpisujÄ siÄ w ten rodzaj swobodnej zabawy. W ofercie można znaleÅºÄ samochody osobowe, pojazdy specjalistyczne, maszyny budowlane czy rolnicze. DziÄki temu Åatwo wybraÄ coÅ zgodnego z zainteresowaniami dziecka i stopniowo rozbudowywaÄ wÅasnÄ kolekcjÄ.</p> 5944<p>MaÅy fan wielkich maszyn może siÄgnÄ Ä na przykÅad po <a title="SIKU Super - Volvo wywrotka | Trefl" href="https://www.trefl.com/siku-super-volvo-wywrotka"><strong>wywrotkÄ Volvo SIKU Super</strong></a>. Model wykonano z elementów metalowych i plastikowych, wyposażono w ruchome czÄÅci i gumowe koÅa, a jego wyglÄ d odwzorowuje rzeczywisty pojazd. Inny kierunek daje <a title="SIKU - John Deere 6250R" href="https://www.trefl.com/john-deere-6250r-s1064"><strong>John Deere 6250R</strong></a> â niewielki model traktora, który może staÄ siÄ poczÄ tkiem zabawy w gospodarstwo rolne.</p> 5945<p>Wywrotka może woziÄ klocki na budowÄ, traktor ruszyÄ w pole, a wóz strażacki otrzymaÄ pilne wezwanie do akcji. To dziecko decyduje, co wydarzy siÄ dalej. WÅaÅnie dlatego nawet maÅy samochodzik może staÄ siÄ poczÄ tkiem bardzo dużej historii. A <strong>dziÄki niewielkim rozmiarom wybrane modele SIKU można też spakowaÄ do plecaka i zabraÄ ze sobÄ do szkoÅy, na wycieczkÄ czy do kolegi</strong>.</p> 5946<h2><strong>Puzzle dla dzieci â czas na ukÅadanie i chwilÄ wyciszenia</strong></h2> 5947<p>Po dniu peÅnym lekcji, rozmów i nowych wrażeÅ nie każde dziecko bÄdzie miaÅo ochotÄ na kolejne dynamiczne wyzwanie. Czasami najlepszym pomysÅem jest spokojniejsza aktywnoÅÄ, przy której można usiÄ ÅÄ, skupiÄ siÄ na obrazku i krok po kroku odnajdywaÄ miejsce dla kolejnych elementów.</p> 5948<p>UkÅadanie puzzli to jednak nie tylko sposób na spokojne spÄdzenie czasu. Dopasowywanie fragmentów ukÅadanki oraz stopniowe odtwarzanie caÅego obrazka zachÄca dziecko do uważnej obserw
5948acji i dostrzegania szczegóÅów. <strong>Wspiera koncentracjÄ, Äwiczy spostrzegawczoÅÄ i naukÄ logicznego myÅlenia, pozwala trenowaÄ cierpliwoÅÄ, a także rozwija koordynacjÄ wzrokowo-ruchowÄ i zdolnoÅci manualne dziecka</strong>.</p> 5949<p><a title="Puzzle dla dzieci | Trefl" href="https://www.trefl.com/puzzle/dla-dzieci"><strong>Puzzle dla dzieci</strong></a> dajÄ duÅ¼Ä swobodÄ dopasowania aktywnoÅci do wieku i zainteresowaÅ. Dla jednego dziecka najwiÄkszÄ zachÄtÄ bÄdzie niewielka liczba elementów, dla innego â bardziej wymagajÄ ca ukÅadanka. Duże znaczenie ma też sam wzór, szczególnie jeÅli przedstawia bohaterów lub motywy, które dziecko już zna i lubi.</p> 5950<p><strong>W serii Premium Plus Kids można znaleÅºÄ ukÅadanki z popularnymi dzieciÄcymi licencjami, m.in. Psim Patrolem czy Toy Story</strong>. Z kolei jubileuszowe puzzle, wydane z okazji 10-lecia bajki Rodzina Treflików, pozwalajÄ wybieraÄ spoÅród bardzo różnych Åwiatów i tematów. Seria Inspired By obejmuje m.in. motywy fantasy, naturÄ i aktualne dzieciÄce trendy, natomiast Seek & Find oferuje peÅne szczegóÅów ilustracje, które zachÄcajÄ do uważnego ukÅadania.</p> 5951<p>DziÄki różnej liczbie elementów w ofercie można znaleÅºÄ zarówno puzzle dla 3-latków, jak i ukÅadanki dla starszych dzieci. Nie trzeba wiÄc od razu siÄgaÄ po najbardziej skomplikowany obrazek. Poziom wyzwania powinien rosnÄ Ä razem z umiejÄtnoÅciami dziecka â wtedy ukoÅczenie ukÅadanki daje satysfakcjÄ zamiast zniechÄcenia.</p> 5952<p><strong>Puzzle mogÄ byÄ też dobrÄ odpowiedziÄ na moment, kiedy po intensywnym dniu potrzeba spokojniejszego zajÄcia</strong>. Bez poÅpiechu, bez presji â za to z maÅym celem, który z każdym dopasowanym elementem staje siÄ coraz bliższy.</p> 5953<!-- Import czcionki Raleway z Google Fonts (jeÅli jeszcze nie masz na stronie) --> 5954<link rel="preconnect" href="https://fonts.googleapis.com"> 5955<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> 5956<link href="https://fonts.googleapis.com/css2?family=Raleway:wght@700;800&display=swap" rel="stylesheet"> 5957 5958<style> 5959.trefl-inline-related { 5960 display: flex;
5961 align-items: center; 5962 gap: 12px; 5963 margin: 20px 0; 5964 padding: 12px 16px; 5965 background-color: #f9f9f9; 5966 border: 1px solid #eef0f2; 5967 border-radius: 10px; 5968 text-decoration: none; 5969 font-family: 'Raleway', sans-serif; 5970 font-size: 14px; 5971 line-height: 1.5; 5972 color: #333333; 5973 width: 100%; 5974 box-sizing: border-box; 5975 transition: background-color 0.2s ease, transform 0.2s ease, box-shadow 0.2s ease, border-color 0.2s ease; 5976} 5977 5978.trefl-inline-related::before { 5979 content: ""; 5980 display: block; 5981 flex-shrink: 0; 5982 width: 20px; 5983 height: 20px; 5984 /* Ikona otwartej ksiÄ Å¼ki w kolorze brandowej czerwieni Trefl (#e30613) */ 5985 background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke='%23e30613' stroke-width='2'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' d='M12 6.253v13m0-13C10.832 5.477 9.246 5 7.5 5S4.168 5.477 3 6.253v13C4.168 18.477 5.754 18 7.5 18s3.332.477 4.5 1.253m0-13C13.168 5.477 14.754 5 16.5 5c1.747 0 3.332.477 4.5 1.253v13C19.832 18.477 18.247 18 16.5 18c-1.746 0-3.332.477-4.5 1.253' /%3E%3C/svg%3E"); 5986 background-repeat: no-repeat; 5987 background-position: center; 5988 background-size: contain; 5989 transition: transform 0.2s ease; 5990} 5991 5992.trefl-inline-related:hover { 5993 background-color: #ffffff; 5994 border-color: #e30613; 5995 transform: translateY(-1px); /* Delikatniejsze uniesienie dopasowane do mniejszego gabarytu */ 5996 box-shadow: 0 4px 12px rgba(227, 6, 19, 0.05); 5997} 5998 5999.trefl-inline-related:hover::before { 6000 transform: scale(1.05); 6001} 6002 6003.trefl-inline-text-wrapper { 6004 flex-grow: 1; 6005} 6006 6007.trefl-inline-related .label { 6008 color: #e30613; 6009 font-weight: 800; 6010 margin-right: 4px; 6011 letter-spacing: 0.2px; 6012} 6013 6014.trefl-inline-related .title { 6015 font-weight: 700; 6016 color: #1a1a1a; 6017 transition: color 0.2s ease; 6018} 6019 6020.trefl-inline-related:hover .title { 6021 color: #e30613; 6022} 6023</style> 6024 6025<a href="https://www.trefl.com/blog/post/dlaczego-warto-ukladac-puzzle" class="trefl-inline-related"> 6026 <div class="trefl-inline-text-wrapper"> 6027 <span class="label">Zobacz także:</span> 6028 <span class="title">Dlaczego warto ukÅadaÄ puzzle? 6029</span> 6030 </div> 6031</a> 6032<p><img src="https://trefl-magento-prod.s3.eu-central-1.amazonaws.com/Blog+2026/puzzle-pomagaja-dziecku-wyciszyc-sie-po-dniu-pelnym-wrazen.webp" alt="uzzle pomagajÄ dziecku wyciszyÄ siÄ po dniu peÅnym wrażeÅ" width="800" height="720"></p> 6033<h2><strong>Gra dla dziesiÄciolatka? Postaw na wspólnÄ rozgrywkÄ peÅnÄ Åmiechu</strong></h2> 6034<p>Starsze dzieci mogÄ coraz chÄtniej wybieraÄ gry nastawione przede wszystkim na emocje i wspólnÄ zabawÄ. <strong>Szybkie tempo, rywalizacja i duża dawka humoru sprawiajÄ , że rozgrywka staje siÄ Åwietnym pretekstem do spÄdzenia czasu z rodzinÄ lub znajomymi</strong>.</p> 6035<p>JeÅli szukasz gier dla dziesiÄciolatków, które dobrze sprawdzÄ siÄ wÅaÅnie w takim gronie, ciekawÄ propozycjÄ jest <a title="Gra YAPPA | Trefl" href="https://www.trefl.com/gra-imprezowa-yappa-02965"><strong>YAPPA</strong></a>.</p> 6036<p>Tutaj czas odmierza nietypowy timer â nakrÄcana szczÄka. Gracz losuje hasÅo i musi podaÄ jak najwiÄcej pasujÄ cych odpowiedzi, zanim szczÄka przestanie kÅapaÄ. Proste? Do momentu, kiedy pojawiajÄ siÄ przeszkadzajki utrudniajÄ ce kolejne rundy. Presja czasu sprawia, że nawet oczywista odpowiedź potrafi nagle wypaÅÄ z gÅowy, a wÅaÅnie z takich momentów bierze siÄ najwiÄcej Åmiechu.</p> 6037<p>YAPPA przeznaczona jest dla 2â6 graczy od 10. roku życia, a jedna partia trwa Årednio okoÅo 20 minut. DziÄki temu można szybko rozegraÄ kolejnÄ rundÄ albo wyciÄ gnÄ Ä grÄ wtedy, gdy jest ochota na wspólnÄ zabawÄ, ale niekoniecznie na wielogodzinnÄ rozgrywkÄ.</p> 6038<p>I wÅaÅnie tutaj dobrze widaÄ, że<strong> </strong>âmÄ dra zabawkaâ nie musi oznaczaÄ produktu, który wprost przekazuje szkolnÄ wiedzÄ.<strong> Wspólna gra może zachÄcaÄ do interakcji, szybkiego reagowania i kreatywnego szukania odpowiedzi, a przede wszystkim dawaÄ pretekst do spÄdzenia czasu razem</strong>.</p> 6039<h2><strong>Jak dobraÄ mÄ drÄ zabawkÄ do wieku dziecka?</strong></h2> 6040<p><strong data-start="78" data-end="213">Dobór mÄ drej zabawki do wieku dziecka warto zaczÄ Ä od sprawdzenia oznaczenia producenta, ale nie powinno byÄ ono jedynym kryterium.</strong> Dwoje rówieÅników może mieÄ zupeÅnie inne zainteresowania, doÅwiadczenie i sposób spÄdzania wolnego czasu. Dlatego warto wziÄ Ä pod uwagÄ także poziom trudnoÅci zabawy oraz to, co naprawdÄ sprawia dziecku przyjemnoÅÄ.</p> 6041<ul style="margin-top: 0cm;" type="disc"> 6042<li style="mso-list: l0 level1 lfo1; tab-stops: list 36.0pt;"> 6043<p><strong>mÄ dre zabawki dla 3âlatka, 4-latka i 5-latka:</strong> można zaczÄ Ä od prostych gier obserwacyjnych, takich jak Spy Guy Kids: Zwierzaki-Cudaki, dopasowanych do wieku puzzli oraz wybranych modeli pojazdów SIKU przeznaczonych dla dzieci powyżej 3 lat.</p> 6044</li> 6045<li style="mso-list: l0 level1 lfo1; tab-stops: list 36.0pt;"> 6046<p><strong>mÄ dre zabawki dla 6-latka:</strong> pojawia siÄ wiÄcej możliwoÅci â gry edukacyjne Kosmos, Dinozaury i Karta Rowerowa, zestawy Brick Trick My City oraz puzzle dopasowane liczbÄ elementów do umiejÄtnoÅci dziecka.</p> 6047</li> 6048<li style="mso-list: l0 level1 lfo1; tab-stops: list 36.0pt;"> 6049<p><strong>mÄ dre zabawki dla 7-latka, 8-latka i 9-latka:</strong> do wczeÅniejszych propozycji można doÅÄ czyÄ Spy Guy Europa, a wybór puzzli, klocków i modeli dopasowaÄ już przede wszystkim do zainteresowaÅ dziecka.</p> 6050</li> 6051<li style="mso-list: l0 level1 lfo1; tab-stops: list 36.0pt;"> 6052<p><strong>mÄ dre zabawki dla dziecka 10+:</strong> starszym dzieciom można zaproponowaÄ bardziej dynamicznÄ , towarzyskÄ rozgrywkÄ, takÄ jak YAPPA, nie rezygnujÄ c oczywiÅcie z puzzli, budowania czy kolekcjonowania pojazdów, jeÅli wÅaÅnie takie aktywnoÅci najbardziej lubiÄ .</p> 6053</li> 6054</ul> 6055<p>Nie warto wiÄc szukaÄ jednej uniwersalnej odpowiedzi na pytanie, jakie sÄ najlepsze mÄ dre zabawki dla 5-latka, 6-latka czy 7-latka. <strong>Najlepsza propozycja to taka, która jest odpowiednia dla wieku, ale jednoczeÅnie trafia w aktualne zainteresowania dziecka</strong>.</p> 6056<p><img src="https://trefl-magento-prod.s3.eu-central-1.amazonaws.com/Blog+2026/puzzle-to-madre-zabawki-ktore-rozwijaja-spostrzegawczosc-i-zdolnosci-aktualne.webp" alt="Puzzle to mÄ dre zabawki, które rozwijajÄ spostrzegawczoÅÄ i zdolnoÅci manualne" width="800" height="533"></p> 6057<h2><strong>Powrót do szkoÅy â i do dobrej zabawy</strong></h2> 6058<p>PoczÄ tek roku szkolnego zmienia codzienny rytm caÅej rodziny. WracajÄ lekcje, zadania i obowiÄ zki, ale obok nich nadal powinno znaleÅºÄ siÄ miejsce na swobodnÄ zabawÄ i wspólny czas.</p> 6059<p>Raz wspaniaÅym pomysÅem okaże siÄ detektywistyczna misja ze Spy Guyem, innym razem wyprawa w kosmos z Treflikiem, budowanie miasteczka z prawdziwej cegÅy albo spokojne ukÅadanie puzzli z ulubionym
6059i bohaterami. MaÅy samochodzik SIKU może rozpoczÄ Ä kolejnÄ wymyÅlonÄ przygodÄ, a ze starszym dzieckiem można usiÄ ÅÄ do YAPPY i sprawdziÄ, komu pierwszemu ze Åmiechu âopadnie szczenaâ.</p> 6060<p><strong>Bo wartoÅciowa zabawa może wyglÄ daÄ za każdym razem inaczej. Najważniejsze, żeby angażowaÅa, sprawiaÅa dziecku radoÅÄ i dawaÅa mu przestrzeÅ na to, czego akurat najbardziej potrzebuje po szkolnym dniu.</strong></p> 6061<!-- Import czcionki Raleway z Google Fonts (jeÅli jeszcze nie masz na stronie) --> 6062<link rel="preconnect" href="https://fonts.googleapis.com"> 6063<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> 6064<link href="https://fonts.googleapis.com/css2?family=Raleway:wght@700;800&display=swap" rel="stylesheet"> 6065 6066<style> 6067.trefl-inline-related { 6068 display: flex; 6069 align-items: center; 6070 gap: 12px; 6071 margin: 20px 0; 6072 padding: 12px 16px; 6073 background-color: #f9f9f9; 6074 border: 1px solid #eef0f2; 6075 border-radius: 10px; 6076 text-decoration: none; 6077 font-family: 'Raleway', sans-serif; 6078 font-size: 14px; 6079 line-height: 1.5; 6080 color: #333333; 6081 width: 100%; 6082 box-sizing: border-box; 6083 transition: background-color 0.2s ease, transform 0.2s ease, box-shadow 0.2s ease, border-color 0.2s ease; 6084} 6085 6086.trefl-inline-related::before { 6087 content: ""; 6088 display: block; 6089 flex-shrink: 0; 6090 width: 20px; 6091 height: 20px; 6092 /* Ikona otwartej ksiÄ Å¼ki w kolorze brandowej czerwieni Trefl (#e30613) */ 6093 background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke='%23e30613' stroke-width='2'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' d='M12 6.253v13m0-13C10.832 5.477 9.246 5 7.5 5S4.168 5.477 3 6.253v13C4.168 18.477 5.754 18 7.5 18s3.332.477 4.5 1.253m0-13C13.168 5.477 14.754 5 16.5 5c1.747 0 3.332.477 4.5 1.253v13C19.832 18.477 18.247 18 16.5 18c-1.746 0-3.332.477-4.5 1.253' /%3E%3C/svg%3E"); 6094 background-repeat: no-repeat; 6095 background-position: center; 6096 background-size: contain; 6097 transition: transform 0.2s ease; 6098} 6099 6100.trefl-inline-related:hover { 6101 background-color: #ffffff; 6102 border-color: #e30613; 6103 transform: translateY(-1px); /* Delikatniejsze uniesienie dopasowane do mniejszego gabarytu */ 6104 box-shadow: 0 4px 12px rgba(227, 6, 19, 0.05); 6105} 6106 6107.trefl-inline-related:hover::before { 6108 transform: scale(1.05); 6109} 6110 6111.trefl-inline-text-wrapper { 6112 flex-grow: 1; 6113} 6114 6115.trefl-inline-related .label { 6116 color: #e30613; 6117 font-weight: 800; 6118 margin-right: 4px; 6119 letter-spacing: 0.2px; 6120} 6121 6122.trefl-inline-related .title { 6123 font-weight: 700; 6124 color: #1a1a1a; 6125 transition: color 0.2s ease; 6126} 6127 6128.trefl-inline-related:hover .title { 6129 color: #e30613; 6130} 6131</style> 6132<a href="https://www.trefl.com/blog/post/jaki-plecak-dla-pierwszoklasisty-wybierz-najlepszy-tornister-dla-swojego-dziecka" class="trefl-inline-related"> 6133 <div class="trefl-inline-text-wrapper"> 6134 <span class="label">Zobacz także:</span> 6135 <span class="title">Jaki plecak dla pierwszoklasisty? Wybierz najlepszy tornister dla swojego dziecka! 6136 6137</span> 6138 </div> 6139</a> 6140 6141<p><strong><img src="https://trefl-magento-prod.s3.eu-central-1.amazonaws.com/Blog+2026/zestawy-kreatywne-to-zabawki-ktore-rozwijaja-dziecko-na-wielu-plaszczyznach.webp" alt="ProszÄ bardzo: Zestawy kreatywne to zabawki, które rozwijajÄ dziecko na wielu pÅaszczyznach" width="800" height="533"></strong></p> 6142<h2><strong>FAQ â mÄ dre zabawki dla dzieci</strong></h2> 6143<h3><strong>Co to sÄ mÄ dre zabawki dla dzieci?</strong></h3> 6144<p>MÄ dre zabawki to takie, które nie tylko dostarczajÄ rozrywki, ale także angażujÄ dziecko i zachÄcajÄ je do dziaÅania. MogÄ wspieraÄ rozwój spostrzegawczoÅci, kreatywnoÅci, koncentracji czy wspóÅpracy, pomagaÄ zdobywaÄ nowÄ wiedzÄ albo pobudzaÄ wyobraźniÄ podczas swobodnej zabawy.</p> 6145<h3><strong>Jakie mÄ dre zabawki dla 6-latka warto wybraÄ?</strong></h3> 6146<p>W przypadku 6-latka warto kierowaÄ siÄ przede wszystkim jego zainteresowaniami. Dziecku ciekawemu Åwiata mogÄ spodobaÄ siÄ gry edukacyjne, takie jak Kosmos, Dinozaury czy Karta Rowerowa. MaÅym konstruktorom można zaproponowaÄ zestawy Brick Trick My City do budowania z prawdziwej cegÅy, a miÅoÅnikom spokojniejszych aktywnoÅci â puzzle dopasowane liczbÄ elementów do ich umiejÄtnoÅci.</p> 6147<h3><strong>Jakie mÄ dre zabawki dla 7-latka bÄdÄ dobrym wyborem?</strong></h3> 6148<p>
6148Dla 7-latka można wybieraÄ zarówno gry edukacyjne i obserwacyjne, jak i zestawy konstrukcyjne, puzzle czy pojazdy rozwijajÄ ce swobodnÄ zabawÄ. Dobrym przykÅadem jest Spy Guy Europa, który ÅÄ czy spostrzegawczoÅÄ z drużynowÄ rywalizacjÄ . Warto jednak dopasowaÄ zabawkÄ nie tylko do wieku, ale również do zainteresowaÅ dziecka.</p> 6149<h3><strong>Czy zabawki edukacyjne muszÄ przypominaÄ naukÄ?</strong></h3> 6150<p>Nie. Nauka przez zabawÄ może byÄ czÄÅciÄ przygody, wspólnej misji, quizu czy gry obserwacyjnej. Dziecko może poznawaÄ nowe informacje o kosmosie, dinozaurach lub zasadach ruchu drogowego, jednoczeÅnie dobrze siÄ bawiÄ c i wspóÅpracujÄ c z innymi graczami.</p> 6151<h3><strong>Jakie kreatywne zabawki sprawdzÄ siÄ dla dzieci?</strong></h3> 6152<p>Dobrym wyborem sÄ zabawki, które pozostawiajÄ dziecku przestrzeÅ na wÅasne pomysÅy. MogÄ to byÄ klocki i zestawy konstrukcyjne, puzzle czy pojazdy, inspirujÄ ce do tworzenia wÅasnych historii. PrzykÅadem jest seria Brick Trick My City, z którÄ dziecko buduje z prawdziwych miniaturowych cegieÅ, a nastÄpnie może ÅÄ czyÄ kolejne zestawy i rozwijaÄ wÅasne miasteczko.</p> 6153<h3><strong>Co wybraÄ dla dziecka do zabawy po szkole?</strong></h3> 6154<p>Warto dopasowaÄ aktywnoÅÄ do tego, czego dziecko potrzebuje po caÅym dniu peÅnym wrażeÅ. Puzzle mogÄ zapewniÄ spokojniejszÄ chwilÄ przy ukÅadaniu, klocki zachÄciÄ do tworzenia, gry planszowe â do wspólnego spÄdzenia czasu, a niewielkie pojazdy SIKU daÄ przestrzeÅ do swobodnej zabawy i wymyÅlania wÅasnych przygód.</p> </div> 6155</article> 6156</div></div></main><footer class="page-footer"><div class="footer content"><template id="trustedshops-badge_6abe4f41df16e"> 6157</template>
6158<script> 6159window.addEventListener('init-external-scripts', () => { 6160 const template = document.getElementById('trustedshops-badge_6abe4f41df16e'); 6161 if (template?.content) { 6162 const clone = document.importNode(template.content, true); 6163 document.body.appendChild(clone); 6164 } 6165}, {once: true, passive: true}); 6166</script>
6166 6167<div class="container"> 6168 <div id="newsletter-form-sm" style="width: 100%; max-width: 1200px; margin: 0 auto;"></div> 6169</div> 6170<section data-el="footer-yarn" class="bg-white py-8 lg:py-16 overflow-clip" aria-hidden="true"> 6171 <svg fill="none" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1440 141" class="w-full"> 6172 <g clip-path="url(#footer-yarn-bg)"><path d="M0 110.625h132.699c122.671 0 209.069-37.945 248.88-17.772 19.906 10.079 45.331 9.078 62.941-4.65 2.131-1.658 4.18-3.523 5.396-5.937 1.216-2.413 1.462-5.472 0-7.748-2.022-3.195-6.995-3.675-9.959-1.33-2.965 2.345-3.812 6.774-2.473 10.312 1.339 3.538 4.536 6.157 8.074 7.447 3.552 1.275 7.432 1.343 11.176.905 10.519-1.22 20.534-6.446 27.597-14.372 2.418-2.715 4.918-5.979 8.525-6.35 2.555-.26 5.041 1.07 6.968 2.785 1.926 1.714 3.456 3.826 5.328 5.595 6.899 6.555 17.432 3.675 27.925 2.605l2.978-.274c30.111-3.305 34.688-18.801 39.579-25.095 4.891-6.309 7.241-.96 7.241-.96s7.746 11.89 13.088 5.238c11.134-13.85-7.241-11.642-10.315-14.097-3.088-2.455 3.252-8.434 6.599-12.712 3.087-3.95 1.27-5.664 1.27-5.664s-5-5.663-10.847-9.393c-4.577-2.921-5.438-.042-5.602 1.357-.109.919-.287 1.824-.587 2.702-1.093 3.14-4.03 8.42-10.943 4.8-7.542-3.95-2.009-13.536 1.543-14.317 4.359-.96.164-4.06.164-4.06s-9.891-6.938-12.446-8.337c-2.554-1.399-3.729 0-3.729 0s-4.044 5.87-6.708 9.613c-2.664 3.744-7.036 3.318-7.87-.11-1.065-4.347-8.511-11.108-13.511-3.305-5.001 7.803 4.932 10.45 8.62 11.108 6.9 1.22 4.017 3.387 1.913 6.198-.861 1.139-5.451 7.529-8.238 11.643a4.205 4.205 0 0 0 1.024 5.787c3.594 2.578 8.935 6.445 9.987 7.35 1.599 1.385 7.446 4.17 7.979-2.03.533-6.198 5.957-11.422 11.599-7.267 5.642 4.169.956 11.327-2.978 12.383-3.935 1.07-4.263 4.594-2.664 6.939 1.598 2.345 31.709 18.69 31.709 18.69l4.467 2.14 2.241.96c15.11 6.46 36.081 5.527 50.932-3.346 6.571-3.936 12.227-9.311 18.976-12.945 6.749-3.634 15.302-5.294 21.901-1.413 4.563 2.702 7.404 7.556 11.435 10.998 4.03 3.442 10.834 5.047 14.235.974 3.402-4.087 1.38-11.547 5.834-14.44 2.295-1.495 5.383-.96 7.815.288 2.432 1.248 4.536 3.085 6.981 4.292 6.694 3.278 14.741 1.193 21.531-1.879 13.649-6.157 19.127-28.331 34.101-28.468 75.523-.74-44.06 116.974 16.121 103.809 60.181-13.165 45.521-99.901 119.583-81.306s40.508 52.275 207.145 52.275H1440" stroke="#000" stroke-miterlimit="10"/></g><defs><clipPath id="footer-yarn-bg"><path fill="#fff" d="M0 0h1440v141H0z"/></clipPath></defs> 6173 </svg> 6174</section> 6175 6176 6177<section data-el="footer-social" class="relative z-10"> 6178 <ul class="social-menu"> 6179 <li> 6180 <a href="https://www.facebook.com/Trefl.toys/" 6181 title="Przejdź na Trefl Facebook" 6182 target="_blank" class="text-header-top" 6183 > 6184 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 14 14" fill="none" width="24" height="24" aria-hidden="true"><path fill-rule="evenodd" clip-rule="evenodd" d="M4 1.5A2.5 2.5 0 0 0 1.5 4v6.003A2.497 2.497 0 0 0 3.997 12.5h6.006a2.497 2.497 0 0 0 2.497-2.497V3.997A2.497 2.497 0 0 0 10.003 1.5H4Zm0-1A3.5 3.5 0 0 0 .5 4v6.003A3.497 3.497 0 0 0 3.997 13.5h6.006a3.497 3.497 0 0 0 3.497-3.497V3.997A3.498 3.498 0 0 0 10.003.5H4Z" fill="currentColor"/><path fill-rule="evenodd" clip-rule="evenodd" d="M5.9 7.6a.5.5 0 0 1 .5-.5H10a.5.5 0 0 1 0 1H6.4a.5.5 0 0 1-.5-.5Z" fill="currentColor"/><path fill-rule="evenodd" clip-rule="evenodd" d="M7.765 4.765A2.27 2.27 0 0 1 9.37 4.1H10a.5.5 0 0 1 0 1h-.63A1.27 1.27 0 0 0 8.1 6.37V13a.5.5 0 0 1-1 0V6.37c0-.602.24-1.18.665-1.605Z" fill="currentColor"/></svg> 6185 </a> 6186 </li> 6187 <li> 6188 <a href="https://pl.linkedin.com/company/trefl-s-a-" 6189 title="Przejdź na Trefl LinkedIn" 6190 target="_blank" class="text-header-top" 6191 > 6192 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 14 14" fill="none" width="24" height="24" aria-hidden="true"><path fill-rule="evenodd" clip-rule="evenodd" d="M4 1.5A2.5 2.5 0 0 0 1.5 4v6.003A2.497 2.497 0 0 0 3.997 12.5h6.006a2.497 2.497 0 0 0 2.497-2.497V3.997A2.497 2.497 0 0 0 10.003 1.5H4Zm0-1A3.5 3.5 0 0 0 .5 4v6.003A3.497 3.497 0 0 0 3.997 13.5h6.006a3.497 3.497 0 0 0 3.497-3.497V3.997A3.498 3.498 0 0 0 10.003.5H4Z" fill="currentColor"/><path fill-rule="evenodd" clip-rule="evenodd" d="M4.413 5.9a.5.5 0 0 1 .5.5V10a.5.5 0 1 1-1 0V6.4a.5.5 0 0 1 .5-.5ZM8.313 6.9a1 1 0 0 0-1 1V10a.5.5 0 1 1-1 0V7.9a2 2 0 1 1 4 0V10a.5.5 0 1 1-1 0V7.9a1 1 0 0 0-1-1ZM4.41 3.725a.65.65 0 1 1 .006 1.3.65.65 0 0 1-.006-1.3Z" fill="currentColor"/></svg> 6193 </a> 6194 </li> 6195 <li> 6196 <a href="mailto:[email protected]" 6197 title="WyÅlij e-mail na [email protected]" 6198 target="_blank" class="text-header-top" 6199 > 6200 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 14 12" fill="none" width="24" height="24" aria-hidden="true"><path fill-rule="evenodd" clip-rule="evenodd" d="M1.545 10.183h10.91c.056 0 .1-.047.1-.104V1.922a.103.103 0 0 0-.1-.105H1.544c-.055 0-.1.047-.1.105v8.157a.103.103 0 0 0 .062.096.099.099 0 0 0 .038.008Zm0 1.15h10.91c.669 0 1.212-.561 1.212-1.254V1.922c0-.693-.543-1.255-1.213-1.255H1.545C.876.667.333 1.229.333 1.922v8.157a1.293 1.293 0 0 0 .355.887 1.176 1.176 0 0 0 .857.367Z" fill="currentColor"/><path d="m1.08 2.05 5.129 3.669a1.333 1.333 0 0 0 1.55.001l5.158-3.68" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/></svg> 6201 </a> 6202 </li> 6203 </ul></section> 6204 6205<section data-el="footer-menu" class="bg-gray-light py-12 lg:py-28" aria-hidden="true"> 6206 <div class="container"> 6207 <div x-data="{ activeTab: 0 }" 6208 role="tablist" 6209 @keydown.right.prevent.stop="activeTab = Math.min(activeTab + 1, 1)" 6210 @keydown.left.prevent.stop="activeTab = Math.max(activeTab - 1, 0)" 6211 x-defer="intersect" 6212 > 6213 6214 <div class="flex gap-x-8 overflow-x-auto"> 6215 <button class="px-3.5 py-1 cursor-pointer font-medium transition-colors 6216 bg-white text-red" 6217 role="tab" 6218 @click.prevent="activeTab = 0" 6219 @keypress.enter="activeTab = 0" 6220 :aria-controls="'tab-panel-' + 0" 6221 :aria-selected="activeTab === 0" 6222 :tabindex="activeTab === 0 ? 0 : -1" 6223 class="" 6224 :class="{ 6225 'bg-white text-red': activeTab === 0, 6226 'hover:bg-white/50 focus:bg-white/50': activeTab !== 0 }" 6227 > 6228 Popularne kategorie </button> 6229 <button class="px-3.5 py-1 cursor-pointer font-medium transition-colors 6230 hover:bg-white/50 focus:bg-white/50" 6231 role="tab" 6232 @click.prevent="activeTab = 1" 6233 @keypress.enter="activeTab = 1" 6234 :aria-controls="'tab-panel-' + 1" 6235 :aria-selected="activeTab === 1" 6236 :tabindex="activeTab === 1 ? 0 : -1" 6237 class="" 6238 :class="{ 6239 'bg-white text-red': activeTab === 1, 6240 'hover:bg-white/50 focus:bg-white/50': activeTab !== 1 }" 6241 > 6242 Popularne marki </button> 6243 </div> 6244 6245 <div x-show="activeTab === 0" 6246 role="tabpanel" 6247 tabindex="0" 6248 id="'tab-panel-' + 0" 6249 aria-labelledby="'tab-' + 0" 6250 :hidden="activeTab !== 0" 6251 > 6252 <div class="grid grid-cols-2 md:grid-cols-none md:grid-flow-col md:auto-cols-auto gap-4"> 6253 <ul class="list-none mt-7"> 6254 <li class="[&>
6254a:hover]:hover:underline [&>a]:w-full [&>a]:block py-1 text-xs md:text-sm"> 6255 6256<a 6257 href="https://www.trefl.com/puzzle/puzzle-jubileuszowe" 6258 class="__inner-link" 6259 data-menu="menu-64"> 6260 Puzzle na 40-lecie Trefl</a> 6261 6262 </li> 6263 <li class="[&>a:hover]:hover:underline [&>a]:w-full [&>a]:block py-1 text-xs md:text-sm"> 6264 6265<a 6266 href="https://www.trefl.com/puzzle/500-elementow" 6267 class="__inner-link" 6268 data-menu="menu-338"> 6269 Puzzle 500 elementów</a> 6270 6271 </li> 6272 <li class="[&>a:hover]:hover:underline [&>a]:w-full [&>a]:block py-1 text-xs md:text-sm"> 6273 6274<a 6275 href="https://www.trefl.com/puzzle/1000-elementow" 6276 class="__inner-link" 6277 data-menu="menu-65"> 6278 Puzzle 1000 elementów</a> 6279 6280 </li> 6281 <li class="[&>a:hover]:hover:underline [&>a]:w-full [&>a]:block py-1 text-xs md:text-sm"> 6282 6283<a 6284 href="https://www.trefl.com/puzzle/2000-elementow" 6285 class="__inner-link" 6286 data-menu="menu-66"> 6287 Puzzle 2000 elementów</a> 6288 6289 </li> 6290 <li class="[&>a:hover]:hover:underline [&>a]:w-full [&>a]:block py-1 text-xs md:text-sm"> 6291 6292<a 6293 href="https://www.trefl.com/puzzle/3000-elementow" 6294 class="__inner-link" 6295 data-menu="menu-67"> 6296 Puzzle 3000 elementów</a> 6297 6298 </li> 6299 <li class="[&>a:hover]:hover:underline [&>a]:w-full [&>a]:block py-1 text-xs md:text-sm"> 6300 6301<a 6302 href="https://www.trefl.com/puzzle/4000-elementow" 6303 class="__inner-link" 6304 data-menu="menu-68"> 6305 Puzzle 4000 elementów</a> 6306 6307 </li> 6308 <li class="[&>a:hover]:hover:underline [&>a]:w-full [&>a]:block py-1 text-xs md:text-sm"> 6309 6310<a 6311 href="https://www.trefl.com/puzzle/6000-elementow" 6312 class="__inner-link" 6313 data-menu="menu-69"> 6314 Puzzle 6000 elementów</a> 6315 6316 </li> 6317 <li class="[&>a:hover]:hover:underline [&>a]:w-full [&>a]:block py-1 text-xs md:text-sm"> 6318 6319<a 6320 href="https://www.trefl.com/puzzle/prime-uft/prime-9000" 6321 class="__inner-link" 6322 data-menu="menu-70"> 6323 Puzzle 9000 elementów</a> 6324 6325 </li> 6326 <li class="[&>a:hover]:hover:underline [&>a]:w-full [&>a]:block py-1 text-xs md:text-sm"> 6327 6328<a 6329 href="https://www.trefl.com/puzzle/prime-uft/prime-13500" 6330 class="__inner-link" 6331 data-menu="menu-71"> 6332 Puzzle 13500 elementów</a> 6333 6334 </li> 6335 <li class="[&>a:hover]:hover:underline [&>a]:w-full [&>a]:block py-1 text-xs md:text-sm"> 6336 6337<a 6338 href="https://www.trefl.com/puzzle/prime-uft/prime-21000" 6339 class="__inner-link" 6340 data-menu="menu-339"> 6341 Puzzle 21000 elementów</a> 6342 6343 </li> 6344 </ul> 6345 <ul class="list-none mt-7"> 6346 <li class="[&>a:hover]:hover:underline [&>a]:w-full [&>a]:block py-1 text-xs md:text-sm"> 6347 6348<a 6349 href="https://www.trefl.com/puzzle/dla-dzieci/puzzle-3-w-1" 6350 class="__inner-link" 6351 data-menu="menu-72"> 6352 Puzzle 3 w 1</a> 6353 6354 </li> 6355 <li class="[&>
6355a:hover]:hover:underline [&>a]:w-full [&>a]:block py-1 text-xs md:text-sm"> 6356 6357<a 6358 href="https://www.trefl.com/puzzle/dla-dzieci/puzzle-4-w-1" 6359 class="__inner-link" 6360 data-menu="menu-73"> 6361 Puzzle 4 w 1</a> 6362 6363 </li> 6364 <li class="[&>a:hover]:hover:underline [&>a]:w-full [&>a]:block py-1 text-xs md:text-sm"> 6365 6366<a 6367 href="https://www.trefl.com/puzzle/prime-uft/velvet" 6368 class="__inner-link" 6369 data-menu="menu-74"> 6370 Puzzle Velvet</a> 6371 6372 </li> 6373 <li class="[&>a:hover]:hover:underline [&>a]:w-full [&>a]:block py-1 text-xs md:text-sm"> 6374 6375<a 6376 href="https://www.trefl.com/puzzle/puzzle-premium-plus-quality" 6377 class="__inner-link" 6378 data-menu="menu-75"> 6379 Puzzle Premium Plus</a> 6380 6381 </li> 6382 <li class="[&>a:hover]:hover:underline [&>a]:w-full [&>a]:block py-1 text-xs md:text-sm"> 6383 6384<a 6385 href="https://www.trefl.com/puzzle/drewniane" 6386 class="__inner-link" 6387 data-menu="menu-76"> 6388 Puzzle drewniane</a> 6389 6390 </li> 6391 <li class="[&>a:hover]:hover:underline [&>a]:w-full [&>a]:block py-1 text-xs md:text-sm"> 6392 6393<a 6394 href="https://www.trefl.com/puzzle/puzzle-filmowe" 6395 class="__inner-link" 6396 data-menu="menu-77"> 6397 Puzzle filmowe</a> 6398 6399 </li> 6400 <li class="[&>a:hover]:hover:underline [&>a]:w-full [&>a]:block py-1 text-xs md:text-sm"> 6401 6402<a 6403 href="https://www.trefl.com/puzzle/puzzle-kosmos" 6404 class="__inner-link" 6405 data-menu="menu-78"> 6406 Puzzle kosmos</a> 6407 6408 </li> 6409 <li class="[&>a:hover]:hover:underline [&>a]:w-full [&>a]:block py-1 text-xs md:text-sm"> 6410 6411<a 6412 href="https://www.trefl.com/puzzle/puzzle-krajobrazy" 6413 class="__inner-link" 6414 data-menu="menu-79"> 6415 Puzzle krajobrazy</a> 6416 6417 </li> 6418 <li class="[&>a:hover]:hover:underline [&>a]:w-full [&>a]:block py-1 text-xs md:text-sm"> 6419 6420<a 6421 href="https://www.trefl.com/puzzle/puzzle-kulinarne" 6422 class="__inner-link" 6423 data-menu="menu-80"> 6424 Puzzle kulinarne</a> 6425 6426 </li> 6427 <li class="[&>a:hover]:hover:underline [&>a]:w-full [&>a]:block py-1 text-xs md:text-sm"> 6428 6429<a 6430 href="https://www.trefl.com/puzzle/puzzle-mapy" 6431 class="__inner-link" 6432 data-menu="menu-81"> 6433 Puzzle mapy</a> 6434 6435 </li> 6436 </ul> 6437 <ul class="list-none mt-7"> 6438 <li class="[&>a:hover]:hover:underline [&>a]:w-full [&>a]:block py-1 text-xs md:text-sm"> 6439 6440<a 6441 href="https://www.trefl.com/puzzle/puzzle-miasta" 6442 class="__inner-link" 6443 data-menu="menu-82"> 6444 Puzzle miasta</a> 6445 6446 </li> 6447 <li class="[&>a:hover]:hover:underline [&>a]:w-full [&>a]:block py-1 text-xs md:text-sm"> 6448 6449<a 6450 href="https://www.trefl.com/puzzle/puzzle-obrazy" 6451 class="__inner-link" 6452 data-menu="menu-83"> 6453 Puzzle obrazy</a> 6454 6455 </li> 6456 <li class="[&>
6456a:hover]:hover:underline [&>a]:w-full [&>a]:block py-1 text-xs md:text-sm"> 6457 6458<a 6459 href="https://www.trefl.com/puzzle/puzzle-samochody" 6460 class="__inner-link" 6461 data-menu="menu-84"> 6462 Puzzle samochody</a> 6463 6464 </li> 6465 <li class="[&>a:hover]:hover:underline [&>a]:w-full [&>a]:block py-1 text-xs md:text-sm"> 6466 6467<a 6468 href="https://www.trefl.com/puzzle/puzzle-statki" 6469 class="__inner-link" 6470 data-menu="menu-340"> 6471 Puzzle statki</a> 6472 6473 </li> 6474 <li class="[&>a:hover]:hover:underline [&>a]:w-full [&>a]:block py-1 text-xs md:text-sm"> 6475 6476<a 6477 href="https://www.trefl.com/puzzle/puzzle-zwierzeta" 6478 class="__inner-link" 6479 data-menu="menu-85"> 6480 Puzzle zwierzÄta</a> 6481 6482 </li> 6483 <li class="[&>a:hover]:hover:underline [&>a]:w-full [&>a]:block py-1 text-xs md:text-sm"> 6484 6485<a 6486 href="https://www.trefl.com/puzzle/puzzle-swiateczne" 6487 class="__inner-link" 6488 data-menu="menu-86"> 6489 Puzzle ÅwiÄ teczne</a> 6490 6491 </li> 6492 <li class="[&>a:hover]:hover:underline [&>a]:w-full [&>a]:block py-1 text-xs md:text-sm"> 6493 6494<a 6495 href="https://www.trefl.com/puzzle/puzzloramy" 6496 class="__inner-link" 6497 data-menu="menu-87"> 6498 PuzzloRamy</a> 6499 6500 </li> 6501 <li class="[&>a:hover]:hover:underline [&>a]:w-full [&>a]:block py-1 text-xs md:text-sm"> 6502 6503<a 6504 href="https://www.trefl.com/puzzle/fotopuzzle" 6505 class="__inner-link" 6506 data-menu="menu-395"> 6507 Fotopuzzle</a> 6508 6509 </li> 6510 <li class="[&>a:hover]:hover:underline [&>a]:w-full [&>a]:block py-1 text-xs md:text-sm"> 6511 6512<a 6513 href="https://www.trefl.com/puzzle/akcesoria" 6514 class="__inner-link" 6515 data-menu="menu-350"> 6516 Akcesoria do puzzli</a> 6517 6518 </li> 6519 <li class="[&>a:hover]:hover:underline [&>a]:w-full [&>a]:block py-1 text-xs md:text-sm"> 6520 6521<a 6522 href="https://www.trefl.com/gry/rodzinne" 6523 class="__inner-link" 6524 data-menu="menu-88"> 6525 Gry rodzinne</a> 6526 6527 </li> 6528 </ul> 6529 <ul class="list-none mt-7"> 6530 <li class="[&>a:hover]:hover:underline [&>a]:w-full [&>a]:block py-1 text-xs md:text-sm"> 6531 6532<a 6533 href="https://www.trefl.com/gry/towarzyskie" 6534 class="__inner-link" 6535 data-menu="menu-89"> 6536 Gry towarzyskie</a> 6537 6538 </li> 6539 <li class="[&>a:hover]:hover:underline [&>a]:w-full [&>a]:block py-1 text-xs md:text-sm"> 6540 6541<a 6542 href="https://www.trefl.com/gry/zrecznosciowe" 6543 class="__inner-link" 6544 data-menu="menu-90"> 6545 Gry zrÄcznoÅciowe</a> 6546 6547 </li> 6548 <li class="[&>a:hover]:hover:underline [&>a]:w-full [&>a]:block py-1 text-xs md:text-sm"> 6549 6550<a 6551 href="https://www.trefl.com/gry/edukacyjne" 6552 class="__inner-link" 6553 data-menu="menu-91"> 6554 Gry edukacyjne dla dzieci</a> 6555 6556 </li> 6557 <li class="[&>a:hover]:hover:underline [&>a]:w-full [&>a]:block py-1 text-xs md:text-sm"> 6558 6559<a 6560 href="https://www.trefl.com/gry/dla-grup-przedszkoli" 6561 class="__inner-link" 6562 data-menu="menu-447"> 6563 Gry dla grup i przedszkoli</a> 6564 6565 </li> 6566 <li class="[&>
6566a:hover]:hover:underline [&>a]:w-full [&>a]:block py-1 text-xs md:text-sm"> 6567 6568<a 6569 href="https://www.trefl.com/gry/imprezowe" 6570 class="__inner-link" 6571 data-menu="menu-92"> 6572 Gry imprezowe</a> 6573 6574 </li> 6575 <li class="[&>a:hover]:hover:underline [&>a]:w-full [&>a]:block py-1 text-xs md:text-sm"> 6576 6577<a 6578 href="https://www.trefl.com/gry/domino-i-memos" 6579 class="__inner-link" 6580 data-menu="menu-93"> 6581 Gry memory</a> 6582 6583 </li> 6584 <li class="[&>a:hover]:hover:underline [&>a]:w-full [&>a]:block py-1 text-xs md:text-sm"> 6585 6586<a 6587 href="https://www.trefl.com/gry/1st-game" 6588 class="__inner-link" 6589 data-menu="menu-94"> 6590 Pierwsze gry / 1st games</a> 6591 6592 </li> 6593 <li class="[&>a:hover]:hover:underline [&>a]:w-full [&>a]:block py-1 text-xs md:text-sm"> 6594 6595<a 6596 href="https://www.trefl.com/gry/karciane" 6597 class="__inner-link" 6598 data-menu="menu-95"> 6599 Gry karciane</a> 6600 6601 </li> 6602 <li class="[&>a:hover]:hover:underline [&>a]:w-full [&>a]:block py-1 text-xs md:text-sm"> 6603 6604<a 6605 href="https://www.trefl.com/gry/gry-fantasy" 6606 class="__inner-link" 6607 data-menu="menu-98"> 6608 Gry fantasy</a> 6609 6610 </li> 6611 <li class="[&>a:hover]:hover:underline [&>a]:w-full [&>a]:block py-1 text-xs md:text-sm"> 6612 6613<a 6614 href="https://www.trefl.com/gry/5-sekund" 6615 class="__inner-link" 6616 data-menu="menu-96"> 6617 Gry 5 sekund</a> 6618 6619 </li> 6620 </ul> 6621 <ul class="list-none mt-7"> 6622 <li class="[&>a:hover]:hover:underline [&>a]:w-full [&>a]:block py-1 text-xs md:text-sm"> 6623 6624<a 6625 href="https://www.trefl.com/gry/boom-boom" 6626 class="__inner-link" 6627 data-menu="menu-97"> 6628 Gry Boom Boom</a> 6629 6630 </li> 6631 <li class="[&>a:hover]:hover:underline [&>a]:w-full [&>a]:block py-1 text-xs md:text-sm"> 6632 6633<a 6634 href="https://www.trefl.com/gry/magajaja" 6635 class="__inner-link" 6636 data-menu="menu-352"> 6637 Gry Magajaja</a> 6638 6639 </li> 6640 <li class="[&>a:hover]:hover:underline [&>a]:w-full [&>a]:block py-1 text-xs md:text-sm"> 6641 6642<a 6643 href="https://www.trefl.com/gry/mistakos" 6644 class="__inner-link" 6645 data-menu="menu-353"> 6646 Gry Mistakos</a> 6647 6648 </li> 6649 <li class="[&>a:hover]:hover:underline [&>a]:w-full [&>a]:block py-1 text-xs md:text-sm"> 6650 6651<a 6652 href="https://www.trefl.com/gry/gry-spy-guy" 6653 class="__inner-link" 6654 data-menu="menu-99"> 6655 Gry Spy Guy</a> 6656 6657 </li> 6658 <li class="[&>a:hover]:hover:underline [&>a]:w-full [&>a]:block py-1 text-xs md:text-sm"> 6659 6660<a 6661 href="https://www.trefl.com/gry/skoczki" 6662 class="__inner-link" 6663 data-menu="menu-101"> 6664 Gry Skoczki</a> 6665 6666 </li> 6667 <li class="[&>a:hover]:hover:underline [&>a]:w-full [&>a]:block py-1 text-xs md:text-sm"> 6668 6669<a 6670 href="https://www.trefl.com/gry/level-up" 6671 class="__inner-link" 6672 data-menu="menu-100"> 6673 Gry level up</a> 6674 6675 </li> 6676 <li class="[&>
6676a:hover]:hover:underline [&>a]:w-full [&>a]:block py-1 text-xs md:text-sm"> 6677 6678<a 6679 href="https://www.trefl.com/gry/chinczyk" 6680 class="__inner-link" 6681 data-menu="menu-102"> 6682 ChiÅczyk</a> 6683 6684 </li> 6685 <li class="[&>a:hover]:hover:underline [&>a]:w-full [&>a]:block py-1 text-xs md:text-sm"> 6686 6687<a 6688 href="https://www.trefl.com/gry/warcaby" 6689 class="__inner-link" 6690 data-menu="menu-351"> 6691 Warcaby</a> 6692 6693 </li> 6694 <li class="[&>a:hover]:hover:underline [&>a]:w-full [&>a]:block py-1 text-xs md:text-sm"> 6695 6696<a 6697 href="https://www.trefl.com/zabawki/interaktywne" 6698 class="__inner-link" 6699 data-menu="menu-103"> 6700 Zabawki interaktywne</a> 6701 6702 </li> 6703 <li class="[&>a:hover]:hover:underline [&>a]:w-full [&>a]:block py-1 text-xs md:text-sm"> 6704 6705<a 6706 href="https://www.trefl.com/zabawki/klocki/klocki-ceramiczne" 6707 class="__inner-link" 6708 data-menu="menu-104"> 6709 Klocki ceramiczne</a> 6710 6711 </li> 6712 </ul> 6713 <ul class="list-none mt-7"> 6714 <li class="[&>a:hover]:hover:underline [&>a]:w-full [&>a]:block py-1 text-xs md:text-sm"> 6715 6716<a 6717 href="https://www.trefl.com/zabawki/klocki/konstrukcyjne" 6718 class="__inner-link" 6719 data-menu="menu-354"> 6720 Klocki konstrukcyjne</a> 6721 6722 </li> 6723 <li class="[&>a:hover]:hover:underline [&>a]:w-full [&>a]:block py-1 text-xs md:text-sm"> 6724 6725<a 6726 href="https://www.trefl.com/zabawki/klocki/klocki-magnetyczne-geomag" 6727 class="__inner-link" 6728 data-menu="menu-105"> 6729 Klocki magnetyczne</a> 6730 6731 </li> 6732 <li class="[&>a:hover]:hover:underline [&>a]:w-full [&>a]:block py-1 text-xs md:text-sm"> 6733 6734<a 6735 href="https://www.trefl.com/zabawki/magiczne-sztuczki" 6736 class="__inner-link" 6737 data-menu="menu-489"> 6738 Magiczne Sztuczki</a> 6739 6740 </li> 6741 <li class="[&>a:hover]:hover:underline [&>a]:w-full [&>a]:block py-1 text-xs md:text-sm"> 6742 6743<a 6744 href="https://www.trefl.com/zabawki/drewniane" 6745 class="__inner-link" 6746 data-menu="menu-106"> 6747 Zabawki drewniane</a> 6748 6749 </li> 6750 <li class="[&>a:hover]:hover:underline [&>a]:w-full [&>a]:block py-1 text-xs md:text-sm"> 6751 6752<a 6753 href="https://www.trefl.com/zabawki/outdoorowe" 6754 class="__inner-link" 6755 data-menu="menu-107"> 6756 Zabawki do ogrodu</a> 6757 6758 </li> 6759 <li class="[&>a:hover]:hover:underline [&>a]:w-full [&>a]:block py-1 text-xs md:text-sm"> 6760 6761<a 6762 href="https://www.trefl.com/zabawki/zestawy-naukowe" 6763 class="__inner-link" 6764 data-menu="menu-108"> 6765 Zabawki naukowe</a> 6766 6767 </li> 6768 <li class="[&>a:hover]:hover:underline [&>a]:w-full [&>a]:block py-1 text-xs md:text-sm"> 6769 6770<a 6771 href="https://www.trefl.com/zabawki/modele" 6772 class="__inner-link" 6773 data-menu="menu-109"> 6774 Modele pojazdów</a> 6775 6776 </li> 6777 <li class="[&>
6777a:hover]:hover:underline [&>a]:w-full [&>a]:block py-1 text-xs md:text-sm"> 6778 6779<a 6780 href="https://www.trefl.com/ksiazki" 6781 class="__inner-link" 6782 data-menu="menu-110"> 6783 KsiÄ Å¼ki dla dzieci</a> 6784 6785 </li> 6786 <li class="[&>a:hover]:hover:underline [&>a]:w-full [&>a]:block py-1 text-xs md:text-sm"> 6787 6788<a 6789 href="https://www.trefl.com/ksiazki/ksiazki-dla-rodzicow" 6790 class="__inner-link" 6791 data-menu="menu-355"> 6792 KsiÄ Å¼ki dla rodziców</a> 6793 6794 </li> 6795 <li class="[&>a:hover]:hover:underline [&>a]:w-full [&>a]:block py-1 text-xs md:text-sm"> 6796 6797<a 6798 href="https://www.trefl.com/produkty-fsc" 6799 class="__inner-link" 6800 data-menu="menu-111"> 6801 Produkty FSC</a> 6802 6803 </li> 6804 </ul> 6805 </div> 6806 </div> 6807 <div x-show="activeTab === 1" 6808 role="tabpanel" 6809 tabindex="0" 6810 id="'tab-panel-' + 1" 6811 aria-labelledby="'tab-' + 1" 6812 :hidden="activeTab !== 1" 6813 x-cloak > 6814 <div class="grid grid-cols-2 md:grid-cols-none md:grid-flow-col md:auto-cols-auto gap-4"> 6815 <ul class="list-none mt-7"> 6816 <li class="[&>a:hover]:hover:underline [&>a]:w-full [&>a]:block py-1 text-xs md:text-sm"> 6817 6818<a 6819 href="https://www.trefl.com/marki/44-cats" 6820 class="__inner-link" 6821 data-menu="menu-113"> 6822 44 Cats</a> 6823 6824 </li> 6825 <li class="[&>a:hover]:hover:underline [&>a]:w-full [&>a]:block py-1 text-xs md:text-sm"> 6826 6827<a 6828 href="https://www.trefl.com/marki/avengers" 6829 class="__inner-link" 6830 data-menu="menu-114"> 6831 Avengers</a> 6832 6833 </li> 6834 <li class="[&>a:hover]:hover:underline [&>a]:w-full [&>a]:block py-1 text-xs md:text-sm"> 6835 6836<a 6837 href="https://www.trefl.com/marki/baby-shark" 6838 class="__inner-link" 6839 data-menu="menu-115"> 6840 Baby Shark</a> 6841 6842 </li> 6843 <li class="[&>a:hover]:hover:underline [&>a]:w-full [&>a]:block py-1 text-xs md:text-sm"> 6844 6845<a 6846 href="https://www.trefl.com/marki/barbie" 6847 class="__inner-link" 6848 data-menu="menu-116"> 6849 Barbie</a> 6850 6851 </li> 6852 <li class="[&>a:hover]:hover:underline [&>a]:w-full [&>a]:block py-1 text-xs md:text-sm"> 6853 6854<a 6855 href="https://www.trefl.com/marki/basia" 6856 class="__inner-link" 6857 data-menu="menu-117"> 6858 Basia</a> 6859 6860 </li> 6861 <li class="[&>a:hover]:hover:underline [&>a]:w-full [&>a]:block py-1 text-xs md:text-sm"> 6862 6863<a 6864 href="https://www.trefl.com/marki/bing" 6865 class="__inner-link" 6866 data-menu="menu-118"> 6867 Bing</a> 6868 6869 </li> 6870 <li class="[&>a:hover]:hover:underline [&>a]:w-full [&>a]:block py-1 text-xs md:text-sm"> 6871 6872<a 6873 href="https://www.trefl.com/marki/bobaski-i-mis" 6874 class="__inner-link" 6875 data-menu="menu-119"> 6876 Bobaski i MiÅ</a> 6877 6878 </li> 6879 <li class="[&>a:hover]:hover:underline [&>a]:w-full [&>a]:block py-1 text-xs md:text-sm"> 6880 6881<a 6882 href="https://www.trefl.com/marki/cars" 6883 class="__inner-link" 6884 data-menu="menu-120"> 6885 Cars</a> 6886 6887 </li> 6888 <li class="[&>
6888a:hover]:hover:underline [&>a]:w-full [&>a]:block py-1 text-xs md:text-sm"> 6889 6890<a 6891 href="https://www.trefl.com/marki/cocomelon" 6892 class="__inner-link" 6893 data-menu="menu-356"> 6894 Cocomelon</a> 6895 6896 </li> 6897 <li class="[&>a:hover]:hover:underline [&>a]:w-full [&>a]:block py-1 text-xs md:text-sm"> 6898 6899<a 6900 href="https://www.trefl.com/marki/diplodok" 6901 class="__inner-link" 6902 data-menu="menu-121"> 6903 Diplodok</a> 6904 6905 </li> 6906 </ul> 6907 <ul class="list-none mt-7"> 6908 <li class="[&>a:hover]:hover:underline [&>a]:w-full [&>a]:block py-1 text-xs md:text-sm"> 6909 6910<a 6911 href="https://www.trefl.com/marki/disney" 6912 class="__inner-link" 6913 data-menu="menu-341"> 6914 Disney</a> 6915 6916 </li> 6917 <li class="[&>a:hover]:hover:underline [&>a]:w-full [&>a]:block py-1 text-xs md:text-sm"> 6918 6919<a 6920 href="#" 6921 class="__inner-link" 6922 data-menu="menu-122"> 6923 Dungeons & Dragons</a> 6924 6925 </li> 6926 <li class="[&>a:hover]:hover:underline [&>a]:w-full [&>a]:block py-1 text-xs md:text-sm"> 6927 6928<a 6929 href="https://www.trefl.com/marki/enchantimals" 6930 class="__inner-link" 6931 data-menu="menu-123"> 6932 Enchantimals</a> 6933 6934 </li> 6935 <li class="[&>a:hover]:hover:underline [&>a]:w-full [&>a]:block py-1 text-xs md:text-sm"> 6936 6937<a 6938 href="https://www.trefl.com/marki/friends" 6939 class="__inner-link" 6940 data-menu="menu-124"> 6941 Friends</a> 6942 6943 </li> 6944 <li class="[&>a:hover]:hover:underline [&>a]:w-full [&>a]:block py-1 text-xs md:text-sm"> 6945 6946<a 6947 href="https://www.trefl.com/marki/kraina-lodu" 6948 class="__inner-link" 6949 data-menu="menu-125"> 6950 Frozen / Kraina Lodu</a> 6951 6952 </li> 6953 <li class="[&>a:hover]:hover:underline [&>a]:w-full [&>a]:block py-1 text-xs md:text-sm"> 6954 6955<a 6956 href="https://www.trefl.com/marki/garfield" 6957 class="__inner-link" 6958 data-menu="menu-342"> 6959 Garfield</a> 6960 6961 </li> 6962 <li class="[&>a:hover]:hover:underline [&>a]:w-full [&>a]:block py-1 text-xs md:text-sm"> 6963 6964<a 6965 href="https://www.trefl.com/marki/harry-potter" 6966 class="__inner-link" 6967 data-menu="menu-126"> 6968 Harry Potter</a> 6969 6970 </li> 6971 <li class="[&>a:hover]:hover:underline [&>a]:w-full [&>a]:block py-1 text-xs md:text-sm"> 6972 6973<a 6974 href="https://www.trefl.com/marki/hello-kitty" 6975 class="__inner-link" 6976 data-menu="menu-343"> 6977 Hello Kitty</a> 6978 6979 </li> 6980 <li class="[&>a:hover]:hover:underline [&>a]:w-full [&>a]:block py-1 text-xs md:text-sm"> 6981 6982<a 6983 href="https://www.trefl.com/marki/kicia-kocia" 6984 class="__inner-link" 6985 data-menu="menu-127"> 6986 Kicia Kocia</a> 6987 6988 </li> 6989 <li class="[&>a:hover]:hover:underline [&>a]:w-full [&>a]:block py-1 text-xs md:text-sm"> 6990 6991<a 6992 href="https://www.trefl.com/marki/koci-domek-gabi" 6993 class="__inner-link" 6994 data-menu="menu-128"> 6995 Koci Domek Gabi</a> 6996 6997 </li> 6998 </ul> 6999 <ul class="list-none mt-7"> 7000 <li class="[&>
7000a:hover]:hover:underline [&>a]:w-full [&>a]:block py-1 text-xs md:text-sm"> 7001 7002<a 7003 href="https://www.trefl.com/marki/kucyki-pony" 7004 class="__inner-link" 7005 data-menu="menu-129"> 7006 Kucyki Pony</a> 7007 7008 </li> 7009 <li class="[&>a:hover]:hover:underline [&>a]:w-full [&>a]:block py-1 text-xs md:text-sm"> 7010 7011<a 7012 href="https://www.trefl.com/marki/lilo-stitch" 7013 class="__inner-link" 7014 data-menu="menu-130"> 7015 Lilo & Stitch</a> 7016 7017 </li> 7018 <li class="[&>a:hover]:hover:underline [&>a]:w-full [&>a]:block py-1 text-xs md:text-sm"> 7019 7020<a 7021 href="https://www.trefl.com/marki/lol-surprise" 7022 class="__inner-link" 7023 data-menu="menu-344"> 7024 LOL Surprise</a> 7025 7026 </li> 7027 <li class="[&>a:hover]:hover:underline [&>a]:w-full [&>a]:block py-1 text-xs md:text-sm"> 7028 7029<a 7030 href="https://www.trefl.com/marki/minionki" 7031 class="__inner-link" 7032 data-menu="menu-131"> 7033 Minionki</a> 7034 7035 </li> 7036 <li class="[&>a:hover]:hover:underline [&>a]:w-full [&>a]:block py-1 text-xs md:text-sm"> 7037 7038<a 7039 href="https://www.trefl.com/marki/myszka-mickey" 7040 class="__inner-link" 7041 data-menu="menu-132"> 7042 Myszka Miki</a> 7043 7044 </li> 7045 <li class="[&>a:hover]:hover:underline [&>a]:w-full [&>a]:block py-1 text-xs md:text-sm"> 7046 7047<a 7048 href="https://www.trefl.com/marki/myszka-minnie" 7049 class="__inner-link" 7050 data-menu="menu-133"> 7051 Myszka Minnie</a> 7052 7053 </li> 7054 <li class="[&>a:hover]:hover:underline [&>a]:w-full [&>a]:block py-1 text-xs md:text-sm"> 7055 7056<a 7057 href="https://www.trefl.com/marki/park-jurajski" 7058 class="__inner-link" 7059 data-menu="menu-134"> 7060 Park Jurajski</a> 7061 7062 </li> 7063 <li class="[&>a:hover]:hover:underline [&>a]:w-full [&>a]:block py-1 text-xs md:text-sm"> 7064 7065<a 7066 href="https://www.trefl.com/marki/psi-patrol" 7067 class="__inner-link" 7068 data-menu="menu-135"> 7069 Psi Patrol</a> 7070 7071 </li> 7072 <li class="[&>a:hover]:hover:underline [&>a]:w-full [&>a]:block py-1 text-xs md:text-sm"> 7073 7074<a 7075 href="https://www.trefl.com/marki/pusheen" 7076 class="__inner-link" 7077 data-menu="menu-345"> 7078 Pusheen</a> 7079 7080 </li> 7081 <li class="[&>a:hover]:hover:underline [&>a]:w-full [&>a]:block py-1 text-xs md:text-sm"> 7082 7083<a 7084 href="https://www.trefl.com/marki/rainbow-high" 7085 class="__inner-link" 7086 data-menu="menu-136"> 7087 Rainbow High</a> 7088 7089 </li> 7090 </ul> 7091 <ul class="list-none mt-7"> 7092 <li class="[&>a:hover]:hover:underline [&>a]:w-full [&>a]:block py-1 text-xs md:text-sm"> 7093 7094<a 7095 href="https://www.trefl.com/marki/rick-i-morty" 7096 class="__inner-link" 7097 data-menu="menu-346"> 7098 Rick i Morty</a> 7099 7100 </li> 7101 <li class="[&>a:hover]:hover:underline [&>a]:w-full [&>a]:block py-1 text-xs md:text-sm"> 7102 7103<a 7104 href="https://www.trefl.com/rodzina-treflikow" 7105 class="__inner-link" 7106 data-menu="menu-137"> 7107 Rodzina Treflików</a> 7108 7109 </li> 7110 <li class="[&>
7110a:hover]:hover:underline [&>a]:w-full [&>a]:block py-1 text-xs md:text-sm"> 7111 7112<a 7113 href="https://www.trefl.com/marki/smerfy" 7114 class="__inner-link" 7115 data-menu="menu-138"> 7116 Smerfy</a> 7117 7118 </li> 7119 <li class="[&>a:hover]:hover:underline [&>a]:w-full [&>a]:block py-1 text-xs md:text-sm"> 7120 7121<a 7122 href="https://www.trefl.com/marki/smiley-world" 7123 class="__inner-link" 7124 data-menu="menu-357"> 7125 Smiley World</a> 7126 7127 </li> 7128 <li class="[&>a:hover]:hover:underline [&>a]:w-full [&>a]:block py-1 text-xs md:text-sm"> 7129 7130<a 7131 href="https://www.trefl.com/marki/spiderman" 7132 class="__inner-link" 7133 data-menu="menu-139"> 7134 Spiderman</a> 7135 7136 </li> 7137 <li class="[&>a:hover]:hover:underline [&>a]:w-full [&>a]:block py-1 text-xs md:text-sm"> 7138 7139<a 7140 href="https://www.trefl.com/marki/spidey" 7141 class="__inner-link" 7142 data-menu="menu-140"> 7143 Spidey</a> 7144 7145 </li> 7146 <li class="[&>a:hover]:hover:underline [&>a]:w-full [&>a]:block py-1 text-xs md:text-sm"> 7147 7148<a 7149 href="https://www.trefl.com/marki/spongebob-kanciastoporty" 7150 class="__inner-link" 7151 data-menu="menu-347"> 7152 SpongeBob Kanciastoporty</a> 7153 7154 </li> 7155 <li class="[&>a:hover]:hover:underline [&>a]:w-full [&>a]:block py-1 text-xs md:text-sm"> 7156 7157<a 7158 href="https://www.trefl.com/marki/spy-guy" 7159 class="__inner-link" 7160 data-menu="menu-358"> 7161 Spy Guy</a> 7162 7163 </li> 7164 <li class="[&>a:hover]:hover:underline [&>a]:w-full [&>a]:block py-1 text-xs md:text-sm"> 7165 7166<a 7167 href="https://www.trefl.com/marki/star-wars" 7168 class="__inner-link" 7169 data-menu="menu-141"> 7170 Star Wars</a> 7171 7172 </li> 7173 <li class="[&>a:hover]:hover:underline [&>a]:w-full [&>a]:block py-1 text-xs md:text-sm"> 7174 7175<a 7176 href="https://www.trefl.com/marki/strazak-sam" 7177 class="__inner-link" 7178 data-menu="menu-142"> 7179 Strażak Sam</a> 7180 7181 </li> 7182 </ul> 7183 <ul class="list-none mt-7"> 7184 <li class="[&>a:hover]:hover:underline [&>a]:w-full [&>a]:block py-1 text-xs md:text-sm"> 7185 7186<a 7187 href="https://www.trefl.com/marki/swinka-peppa" 7188 class="__inner-link" 7189 data-menu="menu-143"> 7190 Åwinka Peppa</a> 7191 7192 </li> 7193 <li class="[&>a:hover]:hover:underline [&>a]:w-full [&>a]:block py-1 text-xs md:text-sm"> 7194 7195<a 7196 href="https://www.trefl.com/marki/tomek-i-przyjaciele" 7197 class="__inner-link" 7198 data-menu="menu-144"> 7199 Tomek i Przyjaciele</a> 7200 7201 </li> 7202 <li class="[&>a:hover]:hover:underline [&>a]:w-full [&>a]:block py-1 text-xs md:text-sm"> 7203 7204<a 7205 href="https://www.trefl.com/marki/w-glowie-sie-nie-miesci-2" 7206 class="__inner-link" 7207 data-menu="menu-348"> 7208 W gÅowie siÄ nie mieÅci</a> 7209 7210 </li> 7211 <li class="[&>a:hover]:hover:underline [&>a]:w-full [&>a]:block py-1 text-xs md:text-sm"> 7212 7213<a 7214 href="https://www.trefl.com/marki/wladca-pierscieni" 7215 class="__inner-link" 7216 data-menu="menu-349"> 7217 WÅadca PierÅcieni</a> 7218 7219 </li> 7220 </div> 7221 </div> 7222 </div> </div> 7223</section> 7224 7225<section class="bg-white py-16 relative overflow-clip trefl-bg-logo bg-no-repeat bg-left-bottom" 7226 style="background-size: auto 80%;"> 7227 <div class="container grid grid-cols-1 md:grid-cols-4 gap-4"> 7228 <div class="col-span-1 relative"> 7229 <img src="https://www.trefl.com/static/version1790625415/frontend/Trefl/hyva-trefl/pl_PL/images/logo.svg" 7230 alt="" 7231 width="94" 7232 height="47" 7233 decoding="async" 7234 aria-hidden="true" 7235 /> 7236 7237 <div class="mt-10 [&_a:hover]:underline"> 7238 <p style="display: block;"><img class="lazyload" alt="" data-src="https://www.trefl.com/media/wysiwyg/logo_small.png"></p> 7239<p>ul. Kontenerowa 25</p> 7240<p>81-155 Gdynia</p> 7241<p><a href="mailto:[email protected]">[email protected]</a></p> 7242<p>+48 58 66 67 333</p> </div> 7243 7244 <div class="mt-10"> 7245 7246<div class="field flex gap-4 items-center"> 7247 <label class="label" for="language-selector"> 7248 JÄzyk: 7249 </label> 7250 <div class="control"> 7251 <select class="form-select lowercase select-none" 7252 id="language-selector" 7253 onchange="window.location.href = event.target.value"> 7254 <option value="https://www.trefl.com/" 7255 selected > 7256 polski </option> 7257 <option value="https://www.trefl.com/en/" 7258 > 7259 english </option> 7260 </select> 7261 </div> 7262</div> 7263 </div> 7264 </div> 7265 <div class="col-span-3"> 7266 7267<div class="grid md:grid-flow-col grid-cols-2 md:grid-cols-none md:auto-cols-max justify-end gap-y-6 gap-x-12 md:mt-10" style="padding-top: 47px;"> 7268 <ul class="flex flex-col [&_a:hover]:underline text-xs gap-2" role="menu"> 7269 <li role="menuitem"> 7270<a 7271 href="https://www.trefl.com/komunikacja-z-akcjonariuszami" 7272 class="trtre__inner-link" 7273 data-menu="menu-166"> 7274 Dla akcjonariuszy</a> 7275</li> 7276 <li role="menuitem"> 7277<a 7278 href="https://www.trefl.com/projekty-unijne" 7279 class="trtre__inner-link" 7280 data-menu="menu-165"> 7281 Projekty unijne</a> 7282</li> 7283 <li role="menuitem"> 7284<a 7285 href="https://www.trefl.com/sygnalisci" 7286 class="trtre__inner-link" 7287 data-menu="menu-168"> 7288 SygnaliÅci</a> 7289</li> 7290 <li role="menuitem"> 7291<a
7292 href="https://www.trefl.com/strategia-podatkowa" 7293 class="trtre__inner-link" 7294 data-menu="menu-167"> 7295 Strategia podatkowa</a> 7296</li> 7297 </ul> 7298 <ul class="flex flex-col [&_a:hover]:underline text-xs gap-2" role="menu"> 7299 <li role="menuitem"> <a 7300 href="/blog" 7301 data-menu="menu-406" class="trtre__inner-link" > 7302 Blog </a> 7303 7304</li> 7305 <li role="menuitem"> 7306<a 7307 href="https://www.trefl.com/grupa-trefl" 7308 class="trtre__inner-link" 7309 data-menu="menu-407"> 7310 Grupa Trefl</a> 7311</li> 7312 <li role="menuitem"> 7313<a 7314 href="https://www.trefl.com/kariera" 7315 class="trtre__inner-link" 7316 data-menu="menu-408"> 7317 Kariera</a> 7318</li> 7319 <li role="menuitem"> <a 7320 href="https://www.trefl.com/logo-trefl" 7321 data-menu="menu-409" class="trtre__inner-link" > 7322 Logo Trefl </a> 7323 7324</li> 7325 <li role="menuitem"> 7326<a 7327 href="https://www.trefl.com/regulamin-materialow-promocyjnych" 7328 class="trtre__inner-link" 7329 data-menu="menu-411"> 7330 MateriaÅy promocyjne</a> 7331</li> 7332 <li role="menuitem"> <a 7333 href="https://b2b.trefl.com/" 7334 data-menu="menu-412" class="trtre__inner-link" target="_blank" rel="noopener" > 7335 Platforma zamówieÅ B2B </a> 7336 7337</li> 7338 <li role="menuitem"> 7339<a 7340 href="https://www.trefl.com/b2b" 7341 class="trtre__inner-link" 7342 data-menu="menu-448"> 7343 Oferta B2B</a> 7344</li> 7345 <li role="menuitem"> 7346<a 7347 href="https://www.trefl.com/ankieta" 7348 class="trtre__inner-link" 7349 data-menu="menu-413"> 7350 Przekaż nam opiniÄ</a> 7351</li> 7352 </ul> 7353 <ul class="flex flex-col [&_a:hover]:underline text-xs gap-2" role="menu"> 7354 <li role="menuitem"> <a 7355 href="https://katalogi.trefl.com/" 7356 data-menu="menu-150" class="trtre__inner-link" target="_blank" rel="noopener" > 7357 E-katalog Trefl PL/EN/DE </a> 7358 7359</li> 7360 <li role="menuitem"> <a 7361 href="https://trefl-magento-prod.s3.eu-central-1.amazonaws.com/pr/katalog_AW2026.pdf" 7362 data-menu="menu-151" class="trtre__inner-link" target="_blank" rel="noopener" > 7363 Katalog Puzzle/Gry/Zabawki 2026 AW </a> 7364 7365</li> 7366 <li role="menuitem"> <a 7367 href="https://trefl-magento-prod.s3.eu-central-1.amazonaws.com/pr/Trefl-Catalogue-SS-2026.pdf" 7368 data-menu="menu-626" class="trtre__inner-link" target="_blank" rel="noopener" > 7369 Katalog Puzzle/Gry/Zabawki 2026 SS </a> 7370 7371</li> 7372 <li role="menuitem"> <a 7373 href="https://trefl-magento-prod.s3.eu-central-1.amazonaws.com/pr/Trefl-Catalogue-DE-2025.pdf" 7374 data-menu="menu-336" class="trtre__inner-link" target="_blank" rel="noopener" > 7375 Katalog Puzzle/Gry DE 2025 </a> 7376 7377</li> 7378 <li role="menuitem"> <a 7379 href="https://trefl-magento-prod.s3.eu-central-1.amazonaws.com/pr/The-Treflik_Family-Catalogue-SS-2025.pdf" 7380 data-menu="menu-152" class="trtre__inner-link" target="_blank" rel="noopener" > 7381 Katalog Rodzina Treflików 2025 SS </a> 7382 7383</li> 7384 <li role="menuitem"> <a 7385 href="https://trefl-magento-prod.s3.eu-central-1.amazonaws.com/pr/Katalog+Norymberga+2024.pdf" 7386 data-menu="menu-153" class="trtre__inner-link" target="_blank" rel="noopener" > 7387 Katalog Spielwarenmesse 2024 </a> 7388 7389</li> 7390 <li role="menuitem"> 7391<a 7392 href="https://www.trefl.com/instrukcje-gier-w-jezyku-ukrainskim" 7393 class="trtre__inner-link" 7394 data-menu="menu-159"> 7395 Instrukcje gier UA/ÑнÑÑÑÑкÑÑÑ Ð´Ð¾ гÑи</a> 7396</li> 7397 </ul> 7398 <ul class="flex flex-col [&_a:hover]:underline text-xs gap-2" role="menu"> 7399 <li role="menuitem"> 7400<a 7401 href="https://www.trefl.com/regulamin" 7402 class="trtre__inner-link" 7403 data-menu="menu-171"> 7404 Regulamin</a> 7405</li> 7406 <li role="menuitem"> 7407<a 7408 href="https://www.trefl.com/polityka-prywatnosci" 7409 class="trtre__inner-link" 7410 data-menu="menu-172"> 7411 Polityka prywatnoÅci</a> 7412</li> 7413 <li role="menuitem"> 7414<a 7415 href="https://www.trefl.com/dostawa" 7416 class="trtre__inner-link" 7417 data-menu="menu-174"> 7418 Dostawa</a> 7419</li> 7420 <li role="menuitem"> 7421<a 7422 href="https://www.trefl.com/formy-platnosci" 7423 class="trtre__inner-link" 7424 data-menu="menu-175"> 7425 Formy pÅatnoÅci</a> 7426</li> 7427 <li role="menuitem"> <a 7428 href="/pomoc#Zwroty" 7429 data-menu="menu-178" class="trtre__inner-link" > 7430 Zwroty </a> 7431 7432</li> 7433 <li role="menuitem"> 7434<a 7435 href="https://www.trefl.com/reklamacje" 7436 class="trtre__inner-link" 7437 data-menu="menu-176"> 7438 Reklamacje</a> 7439</li> 7440 <li role="menuitem"> 7441<a 7442 href="https://www.trefl.com/reklamacje-puzzle-prime" 7443 class="trtre__inner-link" 7444 data-menu="menu-177"> 7445 Reklamacje Puzzle Prime</a> 7446</li> 7447 <li role="menuitem"> <a 7448 href="https://www.trefl.com/pomoc" 7449 data-menu="menu-179" class="trtre__inner-link" > 7450 Pomoc / FAQ </a> 7451 7452</li> 7453 <li role="menuitem"> <a 7454 href="/contact" 7455 data-menu="menu-169" class="trtre__inner-link" > 7456 Kontakt </a> 7457 7458</li> 7459 </ul> 7460 </div> 7461 </div> 7462 </div> 7463</section> 7464 7465<div class="container relative"> 7466 <button x-data="usercentricsMobile" 7467 @click.prevent="showUserCentricsLayer" 7468 title="Ustawienia prywatności" 7469 @resize.debounce.100.window="initUsercentricsMobile" 7470 class="absolute right-2 bottom-2 w-11 h-11 bg-primary text-white rounded-full flex items-center justify-center shadow-xl md:!hidden" 7471 x-show="isAvailable" 7472 x-cloak> 7473 <svg xmlns="http://www.w3.org/2000/svg" height="100%" viewB
7473ox="0 0 24 24" width="100%" fill="currentColor" aria-hidden="true" class="size-5"><path d="M0 0h24v24H0V0z" fill="none"></path><path d="M11.19 1.36l-7 3.11C3.47 4.79 3 5.51 3 6.3V11c0 5.55 3.84 10.74 9 12 5.16-1.26 9-6.45 9-12V6.3c0-.79-.47-1.51-1.19-1.83l-7-3.11c-.51-.23-1.11-.23-1.62 0zm-1.9 14.93L6.7 13.7c-.39-.39-.39-1.02 0-1.41.39-.39 1.02-.39 1.41 0L10 14.17l5.88-5.88c.39-.39 1.02-.39 1.41 0 .39.39.39 1.02 0 1.41l-6.59 6.59c-.38.39-1.02.39-1.41 0z"></path></svg> 7474 </button> 7475</div> 7476
7477<script> 7478 function usercentricsMobile() { 7479 return { 7480 isAvailable: false, 7481 originalButton: null, 7482 isInitialized: false, 7483 init() { 7484 if (!this.isInitialized && window.innerWidth <= 768) { 7485 window.addEventListener('UC_UI_INITIALIZED', function () { 7486 this.initUsercentricsMobile() 7487 }.bind(this)); 7488 } 7489 }, 7490 initUsercentricsMobile() { 7491 if (this.isInitialized || window.innerWidth > 768) { 7492 return; 7493 } 7494 7495 if (typeof UC_UI !== 'undefined' && 'showSecondLayer' in UC_UI) { 7496 this.isAvailable = true; 7497 this.isInitialized = true; 7498 this.originalButton = document.getElementById('usercentrics-root'); 7499 7500 if (localStorage.getItem('uc_user_interaction') === 'true') { 7501 this.toggleOriginalButton(false); 7502 } 7503 7504 window.addEventListener('UC_UI_VIEW_CHANGED', (event) => { 7505 const view = event.detail?.view || 'NONE'; 7506 7507 if (view === 'PRIVACY_BUTTON' || view === 'NONE') { 7508 this.toggleOriginalButton(false); 7509 } else if (view === 'SECOND_LAYER') { 7510 this.toggleOriginalButton(true); 7511 } 7512 }); 7513 } 7514 }, 7515 showUserCentricsLayer() { 7516 if (typeof UC_UI !== 'undefined' && 'showSecondLayer' in UC_UI) { 7517 UC_UI.showSecondLayer() 7518 } 7519 }, 7520 toggleOriginalButton(state) { 7521 if (!this.originalButton) { 7522 return; 7523 } 7524 this.originalButton.classList.toggle('hidden', !state); 7525 }, 7526 } 7527 } 7528 window.addEventListener( 7529 'alpine:init', 7530 () => Alpine.data('usercentricsMobile', usercentricsMobile), 7531 {once: true} 7532 ) 7533</script>
7533 7534 7535<div class="mobile-nav-bar bg-white w-screen py-2 fixed bottom-0 left-0 flex z-10 divide-x divide-gray-lighter md:hidden" 7536 x-data="initMobileNavBar()" 7537 @private-content-loaded.window="getData(event.detail.data)" 7538> 7539 <!--Wishlist Icon--> 7540 <a href="https://www.trefl.com/wishlist/" 7541 class="mobile-nav-bar-item" 7542 title="Ulubione" 7543 > 7544 <span class="mobile-nav-bar-item-icon"> 7545 <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 20 18" width="26" height="24" aria-hidden="true"><path fill-rule="evenodd" clip-rule="evenodd" d="M6.304 1.75c-2.652 0-4.554 2.526-4.554 5.005 0 2.59 1.624 4.965 3.587 6.742.97.878 1.99 1.58 2.867 2.06.438.24.83.418 1.154.535.338.123.549.158.642.158.093 0 .304-.035.642-.158a8.482 8.482 0 0 0 1.154-.535 15.411 15.411 0 0 0 2.867-2.06c1.963-1.777 3.587-4.152 3.587-6.742 0-2.479-1.902-5.005-4.554-5.005-1.534 0-2.534.756-3.126 1.448a.75.75 0 0 1-1.14 0C8.838 2.506 7.838 1.75 6.304 1.75ZM.25 6.755C.25 3.684 2.606.25 6.304.25 7.964.25 9.176.91 10 1.642A5.445 5.445 0 0 1 13.696.25c3.698 0 6.054 3.434 6.054 6.505 0 3.21-1.987 5.959-4.08 7.854a16.914 16.914 0 0 1-3.154 2.264 9.958 9.958 0 0 1-1.364.63c-.397.143-.8.247-1.152.247-.352 0-.755-.104-1.152-.247a9.961 9.961 0 0 1-1.364-.63 16.913 16.913 0 0 1-3.154-2.264C2.237 12.714.25 9.966.25 6.755Z" fill="currentColor"/></svg> 7546 </span> 7547 7548 <span class="mobile-nav-bar-item-label"> 7549 Ulubione </span> 7550 </a> 7551 7552 <!--Cart Icon--> 7553 <a id="menu-cart-icon" 7554 class="mobile-nav-bar-item" 7555 x-ref="cartButton" 7556 :aria-disabled="isCartEmpty()" 7557 :aria-label="` 7558 View cart, 7559 ${isCartEmpty() 7560 ? 'Koszyk jest pusty' 7561 : cart.summary_count > 1 7562 ? hyva.str('%1 elementów', cart.summary_count) 7563 : hyva.str('%1 item', cart.summary_count) 7564 }` 7565 " 7566 href="https://www.trefl.com/checkout/cart/index/" 7567 title="View cart" 7568 > 7569 <span class="mobile-nav-bar-item-icon relative" aria-hidden="true"> 7570 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 35 32" width="26" height="26" aria-hidden="true"><path d="M9.386 5.564 8.454 0H-.001v2.782h6.1l.734 4.403 1.397 9.074c.549 2.929 2.252 4.613 4.677 4.613H28.54c1.531 0 4.179-.613 4.69-4.658l1.64-10.643H9.385zm21.089 10.261c-.262 2.087-1.098 2.259-1.933 2.259H12.909c-.37 0-1.506 0-1.94-2.297l-1.142-7.44h21.797l-1.149 7.478zM13.215 25.045a3.478 3.478 0 1 0 0 6.956 3.478 3.478 0 0 0 0-6.956zm0 4.173c-.383 0-.696-.313-.696-.695s.313-.695.695-.695.695.313.695.695-.313.695-.695.695zM28.51 25.045a3.478 3.478 0 1 0 0 6.956 3.478 3.478 0 0 0 0-6.956zm0 4.173c-.383 0-.695-.313-.695-.695s.313-.695.695-.695c.383 0 .695.313.695.695s-.306.695-.695.695z" fill="currentColor"/></svg> 7571 <span 7572 x-text="cart.summary_count" 7573 x-show="!isCartEmpty()" 7574 x-cloak 7575 class="absolute -top-1 -right-2.5 h-4 px-1.5 rounded-full bg-primary text-white 7576 font-semibold leading-4 uppercase tabular-nums" 7577 style="font-size: 10px;" 7578 ></span> 7579 </span> 7580 7581 <span class="mobile-nav-bar-item-label"> 7582 Koszyk </span> 7583 </a> 7584 7585 <!--Customer--> 7586 7587<a href="https://www.trefl.com/customer/account/login/" 7588 class="mobile-nav-bar-item" 7589> 7590 <span class="mobile-nav-bar-item-icon"> 7591 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 18 20" fill="none" width="22" height="24" aria-hidden="true"><path fill-rule="evenodd" clip-rule="evenodd" d="M9 1.75c-2.046 0-3.733 1.706-3.733 3.767A3.744 3.744 0 0 0 9 9.25c2.046 0 3.733-1.706 3.733-3.767A3.744 3.744 0 0 0 9 1.75ZM3.767 5.517C3.767 2.642 6.112.25 9 .25a5.244 5.244 0 0 1 5.233 5.233c0 2.875-2.345 5.267-5.233 5.267a5.244 5.244 0 0 1-5.233-5.233ZM5 13.75A3.262 3.262 0 0 0 1.75 17v1c0 .136.114.25.25.25h14c.136 0 .25-.114.25-.25v-1A3.262 3.262 0 0 0 13 13.75H5ZM.25 17A4.762 4.762 0 0 1 5 12.25h8A4.762 4.762 0 0 1 17.75 17v1c0 .964-.786 1.75-1.75 1.75H2c-.964 0-1.75-.786-1.75-1.75v-1Z" fill="currentColor"/></svg> 7592 </span> 7593 7594 <span class="mobile-nav-bar-item-label"> 7595 Zaloguj siÄ </span> 7596</a> 7597 7598 7599 <!--Mobile menu trigger--> 7600 <label for="mobile-menu-switch" class="mobile-nav-bar-item">
7601 <span class="mobile-nav-bar-item-icon"> 7602 <svg xmlns="http://www.w3.org/2000/svg" width="29" height="24" viewBox="0 0 29 29" fill="none" aria-hidden="true"><path fill="currentColor" fill-rule="evenodd" d="M2.719 6.042c0-.5.405-.907.906-.907h21.75a.906.906 0 0 1 0 1.813H3.625a.906.906 0 0 1-.906-.906ZM2.719 14.5c0-.5.405-.906.906-.906h21.75a.906.906 0 1 1 0 1.812H3.625a.906.906 0 0 1-.906-.906ZM2.719 22.958c0-.5.405-.906.906-.906h21.75a.906.906 0 1 1 0 1.813H3.625a.906.906 0 0 1-.906-.907Z" clip-rule="evenodd"/></svg> 7603 </span> 7604 7605 <span class="mobile-nav-bar-item-label"> 7606 Menu </span> 7607 </label> 7608</div> 7609
7610<script> 7611 function initMobileNavBar() { 7612 return { 7613 cart: {}, 7614 getData(data) { 7615 if (data.cart) { this.cart = data.cart } 7616 }, 7617 isCartEmpty() { 7618 return !this.cart.summary_count 7619 }, 7620 } 7621 } 7622</script>
7622 7623</div></footer><template id="trustedshops-badge_6abe4f41e679a"> 7624 <!-- added by Trusted Shops app: Start --> 7625
7625<script async data-desktop-y-offset="-30" data-mobile-y-offset="0" data-desktop-disable-reviews="false" data-desktop-enable-custom="false" data-desktop-position="right" data-desktop-custom-width="100" data-desktop-enable-fadeout="false" data-disable-mobile="false" data-disable-trustbadge="false" data-mobile-custom-width="100" data-mobile-disable-reviews="false" data-mobile-enable-custom="false" data-mobile-position="right" charset="UTF-8" src="//widgets.trustedshops.com/js/X3232207565856AA7A36E50C23F871137.js" ></script>
7625 <!-- End --> 7626 </template>
7627<script> 7628window.addEventListener('init-external-scripts', () => { 7629 const template = document.getElementById('trustedshops-badge_6abe4f41e679a'); 7630 if (template?.content) { 7631 const clone = document.importNode(template.content, true); 7632 document.body.appendChild(clone); 7633 } 7634}, {once: true, passive: true}); 7635</script>
7635 7636 7637
7638<script> 7639 (() => { 7640 function src_default(Alpine) { 7641 Alpine.directive("intersect", Alpine.skipDuringClone((el, { value, expression, modifiers }, { evaluateLater, cleanup }) => { 7642 let evaluate = evaluateLater(expression); 7643 let options = { 7644 rootMargin: getRootMargin(modifiers), 7645 threshold: getThreshold(modifiers) 7646 }; 7647 let observer = new IntersectionObserver((entries) => { 7648 entries.forEach((entry) => { 7649 if (entry.isIntersecting === (value === "leave")) 7650 return; 7651 evaluate(); 7652 modifiers.includes("once") && observer.disconnect(); 7653 }); 7654 }, options); 7655 observer.observe(el); 7656 cleanup(() => { 7657 observer.disconnect(); 7658 }); 7659 })); 7660 } 7661 function getThreshold(modifiers) { 7662 if (modifiers.includes("full")) 7663 return 0.99; 7664 if (modifiers.includes("half")) 7665 return 0.5; 7666 if (!modifiers.includes("threshold")) 7667 return 0; 7668 let threshold = modifiers[modifiers.indexOf("threshold") + 1]; 7669 if (threshold === "100") 7670 return 1; 7671 if (threshold === "0") 7672 return 0; 7673 return Number(`.${threshold}`); 7674 } 7675 function getLengthValue(rawValue) { 7676 let match = rawValue.match(/^(-?[0-9]+)(px|%)?$/); 7677 return match ? match[1] + (match[2] || "px") : void 0; 7678 } 7679 function getRootMargin(modifiers) { 7680 const key = "margin"; 7681 const fallback = "0px 0px 0px 0px"; 7682 const index = modifiers.indexOf(key); 7683 if (index === -1) 7684 return fallback; 7685 let values = []; 7686 for (let i = 1; i < 5; i++) { 7687 values.push(getLengthValue(modifiers[index + i] || "")); 7688 } 7689 values = values.filter((v) => v !== void 0); 7690 return values.length ? values.join(" ").trim() : fallback; 7691 } 7692 7693 document.addEventListener("alpine:init", () => { 7694 window.Alpine.plugin(src_default); 7695 }); 7696 })(); 7697</script>
vendor: 1 bytes, line 7697
7697
7698<script> 7699 for (const [selector, deferUntil] of Object.entries({".product-slider section[x-data]":"intersect",".product-info [x-data]":"intersect","#filters-content [x-data]":"intersect","#review_form":"intersect","section[x-data^=initRecentlyViewedProductsComponent]":"intersect","div[x-data^=initBundleOptions]":"intersect","#product_addtocart_form [x-data]":"intersect","#notice-cookie-block":"idle"})) { 7700 document.querySelectorAll(selector).forEach(el => el.setAttribute('x-defer', `${deferUntil}`)); 7701 } 7702</script>
vendor: 1 bytes, line 7702
7702
7703<script> 7704 (function () { 7705 "use strict"; 7706 7707 const hasAlpine = new Promise(resolve => { 7708 window.addEventListener('alpine:initialized', resolve, {once: true, passive: true}); 7709 }); 7710 7711 const hasInteract = new Promise(resolve => { 7712 (events => { 7713 const onInteract = () => { 7714 resolve(); 7715 events.forEach(type => window.removeEventListener(type, onInteract)); 7716 } 7717 events.forEach(type => window.addEventListener(type, onInteract, {once: true, passive: true})) 7718 })(['touchstart', 'mouseover', 'wheel', 'scroll', 'keydown']) 7719 }); 7720 7721 const onIntersect = (el) => { 7722 return new Promise(resolve => { 7723 const observer = new IntersectionObserver(entries => { 7724 for (const entry of entries) { 7725 if (entry.isIntersecting) { 7726 observer.disconnect() 7727 resolve(); 7728 } 7729 } 7730 }, {}); 7731 observer.observe(el); 7732 }); 7733 } 7734 7735 function runComponent(el) { 7736 hasAlpine.then(() => { 7737 el.removeAttribute('x-ignore'); 7738 queueMicrotask(() => Alpine.initTree(el)); 7739 }); 7740 } 7741 7742 function initDeferredComponents() { 7743 document.querySelectorAll('[x-data][x-defer]').forEach(el => { 7744 el.setAttribute('x-ignore', ''); 7745 const deferUntil = (el.getAttribute('x-defer') || '').trim(); 7746 switch (deferUntil) { 7747 case 'interact': 7748 hasInteract.then(() => runComponent(el)); 7749 break; 7750 case 'intersect': 7751 onIntersect(el).then(() => runComponent(el)) 7752 break; 7753 case 'idle': 7754 window.requestIdleCallback 7755 ? window.requestIdleCallback(() => runComponent(el), {timeout: 4000}) 7756 : setTimeout(() => runComponent(el), 4000); 7757 break; 7758 case 'eager': 7759 runComponent(el); 7760 break; 7761 default: 7762 if (deferUntil.startsWith('event:') && deferUntil.length > 6) { 7763 window.addEventListener(deferUntil.substring(6), () => runComponent(el), {once: true, passive: true}); 7764 } 7765 } 7766 }); 7767 } 7768 7769 window.addEventListener('alpine:init', initDeferredComponents, {once: true, passive: true}); 7770 })() 7771</script>
vendor: 1 bytes, line 7771
7771
vendor: 1,455 bytes, lines 7772-7774
7772<script> 7773(()=>{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)});})(); 7774</script>
7774 7775
7776<script> 7777 function createAjaxLoader() { 7778 const loader = document.createElement('div'); 7779 loader.className = 'absolute inset-0 flex justify-center items-center loader'; 7780 loader.innerHTML = `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 57 57" width="24" height="24" fill="none" stroke="currentColor" stroke-width="2" class="w-full h-full p-2" role="img"> 7781 <style> 7782 @keyframes spinner-ball-triangle1 { 7783 0% { transform: translate(0%, 0%); } 7784 33% { transform: translate(38%, -79%); } 7785 66% { transform: translate(77%, 0%); } 7786 100% { transform: translate(0%, 0%); } 7787 } 7788 7789 @keyframes spinner-ball-triangle2 { 7790 0% { transform: translate(0%, 0%); } 7791 33% { transform: translate(38%, 79%); } 7792 66% { transform: translate(-38%, 79%); } 7793 100% { transform: translate(0%, 0%); } 7794 } 7795 7796 @keyframes spinner-ball-triangle3 { 7797 0% { transform: translate(0%, 0%); } 7798 33% { transform: translate(-77%, 0%); } 7799 66% { transform: translate(-38%, -79%); } 7800 100% { transform: translate(0%, 0%); } 7801 } 7802 </style> 7803 <circle cx="5" cy="50" r="5" style="animation: spinner-ball-triangle1 2.2s linear infinite"/> 7804 <circle cx="27" cy="5" r="5" style="animation: spinner-ball-triangle2 2.2s linear infinite"/> 7805 <circle cx="49" cy="50" r="5" style="animation: spinner-ball-triangle3 2.2s linear infinite"/> 7806<title>Ładuję...</title></svg> 7807`; 7808 return loader; 7809 } 7810 7811 function addAjaxLoader(button, loader) { 7812 button.setAttribute('data-label', button.getAttribute('aria-label')); 7813 button.removeAttribute('aria-label'); 7814 button.prepend(loader); 7815 button.classList.add('relative', '[&>:not(.loader)]:invisible'); 7816 button.disabled = true; 7817 } 7818 7819 function removeAjaxLoader(button, loader) { 7820 button.setAttribute('aria-label', button.getAttribute('data-label')); 7821 button.removeAttribute('data-label'); 7822 loader.remove(); 7823 button.classList.remove('[&>:not(.loader)]:invisible'); 7824 button.disabled = false; 7825 } 7826 7827 async function addAjaxCartForm(form, extraDelay = 500) { 7828 if (!form) return; 7829 event.preventDefault(); 7830 7831 if (!form.reportValidity()) { 7832 return form.submit(); 7833 } 7834 7835 const formData = new FormData(form); 7836 const button = form.querySelector('button:not([type=button], [type=reset])') 7837 ? form.querySelector('button:not([type=button], [type=reset])') 7838 : document.getElementById('product-addtocart-button'); 7839 const loader = createAjaxLoader(button); 7840 const formUenc = hyva.getUenc(); 7841 const postUrl = event.target.action.replace('%25uenc%25', formUenc); 7842 7843 let bodyUrl = new URLSearchParams(formData); 7844 bodyUrl.append("uenc", formUenc); 7845 addAjaxLoader(button, loader); 7846 7847 try { 7848 const response = await fetch(postUrl, { 7849 method: 'POST', 7850 body: bodyUrl.toString(), 7851 mode: "cors", 7852 credentials: "include", 7853 headers: { 7854 'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8', 7855 'X-Requested-With': 'XMLHttpRequest' 7856 } 7857 }); 7858 7859 if (!response.ok) { 7860 return form.submit(); 7861 } else { 7862 window.dispatchEvent(new CustomEvent("cart-item-added", { 7863 detail: { 7864 form 7865 } 7866 })); 7867 } 7868 7869 if (response.redirected) { 7870 return window.location.href = response.url; 7871 } 7872 7873 const responseData = await response.json(); 7874 if (responseData.backUrl) { 7875 return window.location.href = responseData.backUrl; 7876 } 7877 7878 window.dispatchEvent(new CustomEvent("reload-customer-section-data")); 7879 7880 } catch (err) { 7881 console.warn(err); 7882 window.dispatchEvent(new CustomEvent('product-addtocart-error')); 7883 7884 if (typeof window.dispatchMessages === "undefined") return; 7885 window.dispatchMessages([{ 7886 text:'Wyst\u0105pi\u0142\u0020problem\u0020podczas\u0020dodawania\u0020do\u0020koszyka.', 7887 type: 'error' 7888 }], 5000); 7889 } finally { 7890 setTimeout(() => removeAjaxLoader(button, loader), extraDelay); 7891 } 7892 } 7893 7894 function removeAjaxCartForm(form) { 7895 removeEventListener('submit', form); 7896 } 7897 7898 document.addEventListener('submit', function(event) { 7899 if (!event.target.matches('#product_addtocart_form, .product_addtocart_form')) return; 7900 addAjaxCartForm(event.target, 500); 7901 }); 7902</script>
7902 7903 7904 7905 7906
7907<script> 7908 const CONFETTI_CONFIG = { 7909 productPageAddToCartId: 'product-addtocart-button', 7910 catalogAddToCartSelector: '[data-addto="cart"]' 7911 }; 7912 7913 window.addEventListener('init-external-scripts', () => { 7914 if (document.querySelector(CONFETTI_CONFIG.catalogAddToCartSelector) || document.getElementById(CONFETTI_CONFIG.productPageAddToCartId)) { 7915 const confetti_script = document.createElement('script'); 7916 confetti_script.src = 'https\u003A\u002F\u002Fwww.trefl.com\u002Fstatic\u002Fversion1790625415\u002Ffrontend\u002FTrefl\u002Fhyva\u002Dtrefl\u002Fpl_PL\u002Fjs\u002Fcanvas\u002Dconfetti.min.js'; 7917 confetti_script.onload = () => initAddToCartConfetti(); 7918 document.head.appendChild(confetti_script); 7919 } 7920 }, { once: true, passive: true }); 7921 7922 function initAddToCartConfetti() { 7923 const CONFETTI_OPTIONS = { 7924 spread: 50, 7925 disableForReducedMotion: true, 7926 useWorker: true, 7927 resize: true, 7928 colors: [ 7929 '#8bd93e', 7930 '#de0712', 7931 '#fbaf5d', 7932 '#2e3192' 7933 ], 7934 } 7935 7936 function randomInRange(min, max) { 7937 return Math.random() * (max - min) + min; 7938 } 7939 7940 function celebrateAddToCart(triggeringElement) { 7941 const { top, height, left, width, } = triggeringElement.getBoundingClientRect(); 7942 const x = (left + width / 2) / window.innerWidth; 7943 const y = (top + height / 2) / window.innerHeight; 7944 7945 confetti({ 7946 ...CONFETTI_OPTIONS, 7947 origin: { x, y}, 7948 angle: randomInRange(55, 125), 7949 spread: randomInRange(50, 70), 7950 particleCount: randomInRange(100, 140), 7951 }); 7952 } 7953 7954 window.addEventListener('cart-item-added', (event) => { 7955 if (typeof confetti !== 'function') { 7956 return 7957 } 7958 7959 const eventForm = event.detail?.form; 7960 const confettiElement = eventForm.querySelector(CONFETTI_CONFIG.catalogAddToCartSelector) 7961 || document.getElementById(CONFETTI_CONFIG.productPageAddToCartId) 7962 || eventForm; 7963 7964 celebrateAddToCart(confettiElement); 7965 }); 7966 } 7967</script>
7967 7968
7969<script type="module" 7970 src="https://www.trefl.com/static/version1790625415/frontend/Trefl/hyva-trefl/pl_PL/Hyva_Theme/js/alpine3.min.js" 7971 defer 7972 crossorigin 7973></script>
vendor: 1 bytes, line 7973
7973
7974<script> 7975 'use strict'; 7976 function dispatchMessages(messages, hideAfter) { 7977 const messagesEvent = new CustomEvent("messages-loaded", { 7978 detail: { 7979 messages: messages, 7980 hideAfter: hideAfter 7981 } 7982 }); 7983 window.dispatchEvent(messagesEvent); 7984 } 7985 7986 if (typeof hyva === 'undefined' || (!hyva.getBrowserStorage || !hyva.getCookie || !hyva.setCookie)) { 7987 console.warn("Hyvä helpers are not loaded yet. Make sure they are included before this script"); 7988 } 7989 7990 (function( hyva, undefined ) { 7991 7992 hyva.initFormKey = () => { 7993 const inputSelector = 'input[name="form_key"]', 7994 formKey = hyva.getFormKey(); 7995 7996 Array.from(document.querySelectorAll(inputSelector)).map(function (input) { 7997 input.value = formKey 7998 }); 7999 } 8000 8001 hyva.initMessages = () => { 8002 try { 8003 const messages = hyva.getCookie('mage-messages'); 8004 window.mageMessages = messages ? JSON.parse(decodeURIComponent(messages).replace(/\+/g, ' ')) : []; 8005 8006 dispatchMessages(window.mageMessages); 8007 8008 // empty `mage-messages` cookie 8009 const skipSetDomain = true; 8010 hyva.setCookie('mage-messages','', -1, skipSetDomain); 8011 8012 } catch (error) { 8013 console.warn('Error parsing Cookie Messages:', error); 8014 } 8015 } 8016 8017 window.addEventListener('DOMContentLoaded', hyva.initFormKey); 8018 hyva.alpineInitialized(hyva.initMessages) 8019 8020 }( window.hyva = window.hyva || {} )); 8021</script>
vendor: 1 bytes, line 8021
8021
8022<script> 8023 'use strict'; 8024 { 8025 const private_content_key = 'mage-cache-storage'; 8026 const private_content_expire_key = 'mage-cache-timeout'; 8027 const private_content_version_key = 'private_content_version'; 8028 const section_data_ids_key = 'section_data_ids'; 8029 const mage_cache_session_id_key = 'mage-cache-sessid'; 8030 const last_visited_store_key = 'last_visited_store'; 8031 8032 const ttl = 3600; 8033 8034 if (typeof hyva === 'undefined' || (!hyva.getBrowserStorage || !hyva.getCookie || !hyva.setCookie)) { 8035 console.warn("Hyvä helpers are not loaded yet. Make sure they are included before this script"); 8036 } 8037 8038 function loadSectionData () { 8039 const browserStorage = hyva.getBrowserStorage(); 8040 if (!browserStorage) { 8041 typeof window.dispatchMessages !== "undefined" && window.dispatchMessages( 8042 [{ 8043 type: "warning", 8044 text: "Please enable LocalStorage in your browser." 8045 }] 8046 ); 8047 return; 8048 } 8049 try { 8050 let isInvalid = false; 8051 8052 if (hyva.getCookie(last_visited_store_key) !== CURRENT_STORE_CODE) { 8053 isInvalid = true; 8054 } 8055 hyva.setCookie(last_visited_store_key, CURRENT_STORE_CODE, false, false); 8056 8057 if (!hyva.getCookie(mage_cache_session_id_key)) { 8058 isInvalid = true; 8059 browserStorage.removeItem(private_content_key); 8060 const skipSetDomain = true; 8061 const days = false; 8062 hyva.setCookie(mage_cache_session_id_key, true, days, skipSetDomain) 8063 } 8064 8065 const cookieVersion = hyva.getCookie(private_content_version_key); 8066 const storageVersion = browserStorage.getItem(private_content_version_key); 8067 8068 if (cookieVersion && !storageVersion || cookieVersion !== storageVersion) { 8069 isInvalid = true; 8070 } 8071 8072 const privateContentExpires = browserStorage.getItem(private_content_expire_key); 8073 if (privateContentExpires && new Date(privateContentExpires) < new Date()) { 8074 browserStorage.removeItem(private_content_key); 8075 } 8076 8077 if (isInvalid && cookieVersion) { 8078 fetchPrivateContent([]); 8079 } else if (cookieVersion && storageVersion && cookieVersion === storageVersion) { 8080 const privateContent = JSON.parse(browserStorage.getItem(private_content_key)); 8081 if ( 8082 privateContent && 8083 privateContentExpires && 8084 privateContent.cart && 8085 privateContent.customer 8086 ) { 8087 dispatchPrivateContent(privateContent); 8088 } else { 8089 fetchPrivateContent([]); 8090 } 8091 } else { 8092 if (document.getElementById('default-section-data')) { 8093 const privateContent = JSON.parse(document.getElementById('default-section-data').innerText.trim()); 8094 dispatchPrivateContent(privateContent); 8095 } else { 8096 dispatchPrivateContent({}); 8097 } 8098 } 8099 8100 } catch (error) { 8101 console.warn('Error retrieving Private Content:', error); 8102 } 8103 } 8104 8105 hyva.alpineInitialized(loadSectionData) 8106 window.addEventListener('reload-customer-section-data', loadSectionData); 8107 8108 window.processSectionDataBeforeDispatch = window.processSectionDataBeforeDispatch || (data => data); 8109 8110 function dispatchPrivateContent(data) { 8111 8112 const privateContentEvent = new CustomEvent("private-content-loaded", { 8113 detail: { 8114 data: window.processSectionDataBeforeDispatch(data) 8115 } 8116 }); 8117 window.dispatchEvent(privateContentEvent); 8118 } 8119 8120 function fetchPrivateContent(sections) { 8121 fetch(`${BASE_URL}customer/section/load/?sections=${encodeURIComponent(sections.join(','))}`, { 8122 method: 'GET', 8123 headers: { 8124 'Content-Type': 'application/json', 8125 'X-Requested-With': 'XMLHttpRequest' 8126 } 8127 }) 8128 .then(response => response.ok && response.json()) 8129 .then( 8130 data => { 8131 if (data) { 8132 try { 8133 const browserStorage = hyva.getBrowserStorage(); 8134 8135 // merge new data preserving non-invalidated sections 8136 const oldSectionData = JSON.parse(browserStorage.getItem(private_content_key) || '{}') || {}; 8137 8138 if ((! data.cart || ! data.cart.cartId) && oldSectionData['checkout-data']) { 8139 delete oldSectionData['checkout-data']; 8140 } 8141 const newSectionData = Object.assign(oldSectionData, data); 8142 8143 dispatchPrivateContent(newSectionData); 8144 8145 // don't persist messages, they've been dispatched already 8146 if (newSectionData.messages && newSectionData.messages.messages ) { 8147 newSectionData.messages.messages = []; 8148 } 8149 8150 browserStorage.setItem(private_content_key, JSON.stringify(newSectionData)); 8151 8152 const expiresAt = new Date(Date.now() + (ttl * 1000)).toISOString(); 8153 browserStorage.setItem(private_content_expire_key, expiresAt); 8154 8155 const newCookieVersion = hyva.getCookie(private_content_version_key); 8156 browserStorage.setItem(private_content_version_key, newCookieVersion); 8157 8158 // We don't need the section_data_ids in Hyvä, but we store them for compatibility 8159 // with Luma Fallback. Otherwise, not all sections are loaded in Luma Checkout 8160 hyva.setCookie( 8161 section_data_ids_key, 8162 JSON.stringify( 8163 Object.keys(data).reduce((sectionDataIds, sectionKey) => { 8164 sectionDataIds[sectionKey] = data[sectionKey]['data_id']; 8165 return sectionDataIds; 8166 }, {}) 8167 ), 8168 false, 8169 true 8170 ); 8171 } catch (error) { 8172 console.warn("Couldn't store privateContent", error); 8173 } 8174 } 8175 } 8176 ); 8177 } 8178 } 8179</script>
vendor: 1 bytes, line 8179
8179
8180<script> 8181 (() => { 8182 document.addEventListener('submit', event => event.target.action = event.target.action.replace('%25uenc%25', hyva.getUenc())); 8183 })() 8184</script>
vendor: 1 bytes, line 8184
8184
8185<script> 8186 (events => { 8187 const dispatchUserInteractionEvent = () => { 8188 events.forEach(type => window.removeEventListener(type, dispatchUserInteractionEvent)) 8189 window.dispatchEvent(new Event('init-external-scripts')) 8190 }; 8191 events.forEach(type => window.addEventListener(type, dispatchUserInteractionEvent, {once: true, passive: true})) 8192 })(['touchstart', 'mousemove', 'wheel', 'scroll', 'keydown']) 8193</script>
8193 8194
8195<script type="application/ld+json"> 8196{ 8197"@context": "https://schema.org/", 8198"@type": "WebSite", 8199"url": "https://www.trefl.com/", 8200"potentialAction": { 8201"@type": "SearchAction", 8202"target": "https://www.trefl.com/catalogsearch/result/?q={search_term_string}", 8203"query-input": "required name=search_term_string" 8204} 8205} 8206</script>
8206<script> 8207 'use strict'; 8208 8209 const grecaptchaV2LoadCallbacks = []; 8210 8211 function executeRecaptchaLoadCallbacks () { 8212 while (window.grecaptcha && grecaptchaV2LoadCallbacks.length > 0) { 8213 const callback = grecaptchaV2LoadCallbacks.pop(); 8214 typeof callback === 'string' ? window[callback]() : callback(); 8215 } 8216 } 8217 8218 (function() { 8219 const loadRecaptchaScript = (event) => { 8220 8221 if (window.grecaptcha || !event.target.form) { 8222 return; 8223 } 8224 8225 const url = 'https://www.google.com/recaptcha/api.js?onload=executeRecaptchaLoadCallbacks'; 8226 const siteKey = '6LfQvvEiAAAAANp2t9xf_A7oO5yxUbASHE3tZjzo'; 8227 const script = document.createElement('script'); 8228 script.type = 'text/javascript'; 8229 script.src = siteKey ? `${url}&render=${siteKey}` : `${url}&render=explicit`; 8230 script.async = true; 8231 document.head.appendChild(script); 8232 8233 script.addEventListener('load', () => { 8234 Array.from(document.querySelectorAll('button[data-recaptcha-btn]:disabled')).forEach(btn => btn.removeAttribute('disabled')); 8235 }); 8236 } 8237 8238 window.forceLoadRecaptchaScript = (form) => { 8239 loadRecaptchaScript({target: {form: form || 'dummy'}}); 8240 executeRecaptchaLoadCallbacks(); 8241 }; 8242 8243 document.body.addEventListener('input', loadRecaptchaScript, { once: true }); 8244 document.body.addEventListener('focus', loadRecaptchaScript, { once: true }); 8245 8246 }()); 8247 8248</script>
vendor: 1 bytes, line 8248
8248
8249<script> 8250 'use strict'; 8251 8252 (function () { 8253 const modals = []; 8254 const excludedFromFocusTrapping = new Set(); 8255 8256 function trapFocusInNextModalWithOverlay() { 8257 for (let idx = modals.length -1; idx >= 0; idx--) { 8258 const nextOnStack = modals[idx]; 8259 const nextDialogElement = nextOnStack.instance.$refs[nextOnStack.name]; 8260 if (! isOverlayDisabled(nextDialogElement)) { 8261 hyva.trapFocus(nextDialogElement); 8262 break; 8263 } 8264 } 8265 } 8266 8267 function focusables(dialogElement) { 8268 const selector = 'button, [href], input, textarea, select, details, [tabindex]:not([tabindex="-1"])'; 8269 return Array.from(dialogElement.querySelectorAll(selector)) 8270 .filter(el => !el.hasAttribute('disabled')); 8271 } 8272 8273 function firstVisible(elements) { 8274 const a = Array.from(elements); 8275 for (let i = 0; i < a.length; i++) { 8276 if (a[i].offsetWidth || a[i].offsetHeight || a[i].getClientRects().length) return a[i]; 8277 } 8278 return null; 8279 } 8280 8281 function isInViewport(element) { 8282 const rect = element && element.getBoundingClientRect(); 8283 return rect && 8284 rect.top >= 0 && 8285 rect.left >= 0 && 8286 rect.right <= window.innerWidth && 8287 rect.bottom <= window.innerHeight; 8288 } 8289 8290 function setFocusAfterTransition(dialogElement, duration) { 8291 const nested = Array.from(dialogElement.querySelectorAll('[role="dialog"]')); 8292 const candidates = Array.from(dialogElement.querySelectorAll('[x-focus-first]')); 8293 next: for (let candidate of candidates) { 8294 for (let child of nested) { 8295 if (child.contains(candidate)) continue next; 8296 } 8297 setTimeout(() => candidate.focus(), 50); 8298 break; 8299 } 8300 window.setTimeout(() => { 8301 const focusElement = firstVisible(dialogElement.querySelectorAll('[x-focus-first]')) || 8302 focusables(dialogElement)[0] || 8303 null; 8304 focusElement && isInViewport(focusElement) && focusElement.focus(); 8305 }, Math.max(1, duration)); 8306 } 8307 8308 function determineTrigger($refs, dialog, trigger) { 8309 if (typeof trigger === 'undefined' && typeof dialog === 'object' && dialog.target instanceof HTMLElement) { 8310 return dialog.target; 8311 } 8312 if (typeof dialog === 'string' && typeof trigger === 'object' && trigger.target instanceof HTMLElement) { 8313 return trigger.target; 8314 } 8315 if (typeof trigger === 'string') { 8316 try { 8317 return $refs[trigger] || document.querySelector(trigger) 8318 } catch (e) {} 8319 } 8320 if (trigger instanceof Element) { 8321 return trigger; 8322 } 8323 8324 return null; 8325 } 8326 8327 function isOverlayDisabled(dialog) { 8328 return dialog && dialog.hasAttribute('x-no-overlay') 8329 } 8330 8331 function areRemainingModalsWithoutOverlay(modals) 8332 { 8333 const overflowDisabled = modals.map(modal => modal.instance.$refs[modal.name]).filter(isOverlayDisabled); 8334 8335 return overflowDisabled.length === modals.length; 8336 } 8337 8338 window.hyva.modal = function(options = {}) { 8339 if (this.$el && this.$el.dataset && this.$el.dataset.options) { 8340 try { 8341 options = Object.assign(options, JSON.parse(this.$el.dataset.options || '{}')); 8342 } catch (e) { 8343 throw new Error('Cannot read the dialog options from the data-options attribute: not valid JSON'); 8344 } 8345 } 8346 8347 const config = Object.assign({ 8348 dialog: 'dialog', duration: 300, transitionEnter: 'transition ease-out duration-300', 8349 transitionEnterStart: 'opacity-0', 8350 transitionEnterEnd: 'opacity-100', 8351 transitionLeave: 'transition ease-in duration-300', 8352 transitionLeaveStart: 'opacity-100', 8353 transitionLeaveEnd: 'opacity-0', 8354 }, options); 8355 let lastHide = 0; 8356 8357 return { 8358 opened: {}, 8359 show(dialog, trigger) { 8360 const focusTargetAfterHide = determineTrigger(this.$refs, dialog, trigger); 8361 const name = typeof dialog === 'string' ? dialog : config.dialog; 8362 const dialogElement = this.$refs[name]; 8363 if (! dialogElement) { 8364 return; 8365 } 8366 const useOverlay = ! dialogElement.hasAttribute('x-no-overlay'); 8367 8368 dialogElement.scrollTop = 0; 8369 8370 if (this.opened[name]) { 8371 return; 8372 } 8373 8374 if (focusTargetAfterHide) { 8375 focusTargetAfterHide.setAttribute('aria-expanded', 'true'); 8376 } 8377 8378 this.opened[name] = true; 8379 useOverlay && this.$nextTick(() => hyva.trapFocus(dialogElement)); 8380 setFocusAfterTransition(dialogElement, config.duration); 8381 8382 const frame = {name, instance: this, focusTarget: focu
8382sTargetAfterHide, time: Date.now()}; 8383 8384 modals.push(frame); 8385 if (useOverlay) { 8386 document.body.classList.add('overflow-hidden'); 8387 } 8388 return new Promise(resolve => frame.resolve = resolve); 8389 }, 8390 cancel() { 8391 this.hide(false); 8392 }, 8393 ok() { 8394 this.hide(true); 8395 }, 8396 hide(value) { 8397 if (Date.now() - lastHide < config.duration) { 8398 return; 8399 } 8400 lastHide = Date.now(); 8401 8402 const modal = modals.pop() || {}; 8403 if (! modal.instance) { 8404 return; 8405 } 8406 8407 const name = modal.name; 8408 this.opened[name] = false; 8409 hyva.releaseFocus(modal.instance.$refs[modal.name]) 8410 trapFocusInNextModalWithOverlay(); 8411 8412 const nextFocusAfterHide = modal.focusTarget; 8413 nextFocusAfterHide && setTimeout(() => { 8414 nextFocusAfterHide.setAttribute('aria-expanded', 'false'); 8415 nextFocusAfterHide.focus() 8416 }, config.duration); 8417 8418 if (modals.length === 0 || areRemainingModalsWithoutOverlay(modals)) { 8419 document.body.classList.remove('overflow-hidden'); 8420 } 8421 8422 modal.resolve(value); 8423 }, 8424 overlay(dialog) { 8425 dialog = this.$el.dataset.dialogRefName || dialog; 8426 const name = typeof dialog === 'string' ? dialog : config.dialog; 8427 return { 8428 ['x-show']() { 8429 return this.opened[name] 8430 }, 8431 ['x-transition:enter']: config.transitionEnter, 8432 ['x-transition:enter-start']: config.transitionEnterStart, 8433 ['x-transition:enter-end']: config.transitionEnterEnd, 8434 ['x-transition:leave']: config.transitionLeave, 8435 ['x-transition:leave-start']: config.transitionLeaveStart, 8436 ['x-transition:leave-end']: config.transitionLeaveEnd, 8437 ['@hyva-modal-show.window'](event) { 8438 event.detail && event.detail.dialog === name && this.show(name, event.detail.focusAfterHide) 8439 } 8440 }; 8441 }, 8442 showDialogOnInit() { 8443 const parent = this.$el.closest('[data-dialog-ref-name]'); 8444 if (parent && parent.dataset.dialogRefName) { 8445 this.$dispatch('hyva-modal-show', {dialog: parent.dataset.dialogRefName}) 8446 } 8447 } 8448 }; 8449 } 8450 8451 window.hyva.modal.peek = () => modals.length > 0 && modals[modals.length -1] 8452 8453 window.hyva.modal.pop = function () { 8454 if (modals.length > 0) { 8455 const modal = modals[modals.length -1]; 8456 modal.instance.hide(); 8457 } 8458 } 8459 8460 window.hyva.modal.excludeSelectorsFromFocusTrap = function (selectors) { 8461 typeof selectors === 'string' || selectors instanceof String 8462 ? excludedFromFocusTrapping.add(selectors) 8463 : selectors.map(selector => excludedFromFocusTrapping.add(selector)); 8464 } 8465 8466 window.hyva.modal.eventListeners = { 8467 keydown: event => { 8468 if (event.key === 'Escape') { 8469 window.hyva.modal.pop(); 8470 } 8471 }, 8472 click: event => { 8473 if (modals.length > 0) { 8474 const modal = modals[modals.length -1]; 8475 const dialog = modal.instance.$refs[modal.name]; 8476 if (modal.time + 50 < Date.now() && // if last click processing is more than 50ms ago 8477 ! isOverlayDisabled(dialog) && // if dialog has overlay 8478 ! dialog.contains(event.target)) { // if click is outside of dialog 8479 modal.instance.hide(); 8480 } 8481 } 8482 } 8483 }; 8484 8485 document.addEventListener('keydown', window.hyva.modal.eventListeners.keydown); 8486 8487 document.addEventListener('click', window.hyva.modal.eventListeners.click); 8488 })(); 8489 window.addEventListener('alpine:init', () => { 8490 Alpine.data('hyvaModal', window.hyva.modal); 8491 }, {once: true}); 8492</script>
8492 8493 8494<section x-data="{isLoading: false}" 8495 @amgdpr-loading-start.window="isLoading = true" @amgdpr-loading-stop.window="isLoading = false"> 8496 <div 8497 class="z-50 fixed inset-0 grid place-items-center bg-white/70 text-slate-800" 8498 x-cloak 8499 x-show="isLoading" 8500 x-transition.opacity.duration.200ms 8501> 8502 <div class="flex gap-10 items-center p-4"> 8503 <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"> 8504 <style> 8505 @keyframes spinner-ball-triangle1 { 8506 0% { transform: translate(0%, 0%); } 8507 33% { transform: translate(38%, -79%); } 8508 66% { transform: translate(77%, 0%); } 8509 100% { transform: translate(0%, 0%); } 8510 } 8511 8512 @keyframes spinner-ball-triangle2 { 8513 0% { transform: translate(0%, 0%); } 8514 33% { transform: translate(38%, 79%); } 8515 66% { transform: translate(-38%, 79%); } 8516 100% { transform: translate(0%, 0%); } 8517 } 8518 8519 @keyframes spinner-ball-triangle3 { 8520 0% { transform: translate(0%, 0%); } 8521 33% { transform: translate(-77%, 0%); } 8522 66% { transform: translate(-38%, -79%); } 8523 100% { transform: translate(0%, 0%); } 8524 } 8525 </style> 8526 <circle cx="5" cy="50" r="5" style="animation: spinner-ball-triangle1 2.2s linear infinite"/> 8527 <circle cx="27" cy="5" r="5" style="animation: spinner-ball-triangle2 2.2s linear infinite"/> 8528 <circle cx="49" cy="50" r="5" style="animation: spinner-ball-triangle3 2.2s linear infinite"/> 8529</svg> 8530 <span class="text-xl select-none"> 8531 ÅadujÄ... </span> 8532 </div> 8533</div> 8534</section> 8535
8536<script>var _smid='p17e0wlol3lt2dk6'; var _smapp=5; var _smcustom = true; var _smclt = 864000; (function(w, r, a, sm, s ) { w['SalesmanagoObject'] = r; w[r] = w[r] || function () {( w[r].q = w[r].q || [] ).push(arguments)}; sm = document.createElement('script'); sm.type = 'text/javascript'; sm.async = true; sm.src = a; s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(sm, s); })(window, 'sm', ('https:' == document.location.protocol ? 'https://' : 'http://') + 'app3.salesmanago.pl/static/sm.js');</script>
8536<script type="text/json" id="default-section-data"> 8537 {"messages":[],"customer":[],"compare-products":[],"last-ordered-items":[],"cart":[],"directory-data":{"PL":{"name":"Polska","regions":{"686":{"code":"PL-02","name":"dolno\u015bl\u0105skie"},"687":{"code":"PL-04","name":"kujawsko-pomorskie"},"688":{"code":"PL-06","name":"lubelskie"},"689":{"code":"PL-08","name":"lubuskie"},"692":{"code":"PL-14","name":"mazowieckie"},"691":{"code":"PL-12","name":"ma\u0142opolskie"},"693":{"code":"PL-16","name":"opolskie"},"694":{"code":"PL-18","name":"podkarpackie"},"695":{"code":"PL-20","name":"podlaskie"},"696":{"code":"PL-22","name":"pomorskie"},"697":{"code":"PL-24","name":"\u015bl\u0105skie"},"698":{"code":"PL-26","name":"\u015bwi\u0119tokrzyskie"},"699":{"code":"PL-28","name":"warmi\u0144sko-mazurskie"},"700":{"code":"PL-30","name":"wielkopolskie"},"701":{"code":"PL-32","name":"zachodniopomorskie"},"690":{"code":"PL-10","name":"\u0142\u00f3dzkie"}}},"data_id":1790857025},"captcha":[],"loggedAsCustomer":[],"persistent":[],"review":[],"wishlist":{"items":[]},"hyva_checkout":[],"gtm-checkout":[],"recently_viewed_product":[],"recently_compared_product":[],"product_data_storage":[],"paypal-billing-agreement":[]}</script>
8537 8538<!-- added by Trusted Shops app: Start -->
8539<script src="https://integrations.etrusted.com/applications/widget.js/v2" async defer></script>
8539 8540<!-- added by Trusted Shops app: End --> 8541</div>
8541<script nonce="NnI0ZHB5ejN3anFyNjY4MDRrbGQ5bzgwMWF0Mmx0anI="> 8542 yireoGoogleTagManager2Pusher({"version":"3.9.13","page_type":"mpblog\/post\/view","page_path":"https:\/\/www.trefl.com\/blog\/post\/madre-zabawki-pomysly-na-wartosciowa-zabawe-po-szkole","page_title":"M\u0105dre zabawki \u2013 pomys\u0142y na warto\u015bciow\u0105 zabaw\u0119 po szkole - Blog Trefl - zainspiruj si\u0119 najlepszymi tre\u015bciami ze \u015bwiata zabawek","virtual_page":"\/blog\/post\/madre-zabawki-pomysly-na-wartosciowa-zabawe-po-szkole","breadcrumb":[],"user":{"has_transacted":false}}, 'push (initial page) [data-layer.phtml]'); 8543 </script>
vendor: 1 bytes, line 8543
8543
8544<script nonce="NnI0ZHB5ejN3anFyNjY4MDRrbGQ5bzgwMWF0Mmx0anI="> 8545 function yireoGoogleTagManager2FindParentElementWithName(element, parentTagName) { 8546 if (!element.parentElement) { 8547 return null; 8548 } 8549 8550 if (element.parentElement.tagName.toLowerCase() === parentTagName) { 8551 return element.parentElement; 8552 } 8553 8554 return yireoGoogleTagManager2FindParentElementWithName(element.parentElement, parentTagName); 8555 } 8556 8557 const products = document.querySelectorAll('.products a.product'); 8558 if (products && products.length > 0) { 8559 products.forEach(function(product) { 8560 product.addEventListener('click', function(event, s) { 8561 let parentElement = yireoGoogleTagManager2FindParentElementWithName(event.target, 'form'); 8562 const inputElement = parentElement.querySelector('input[name="product"]'); 8563 const productId = inputElement.value; 8564 const productData = window['YIREO_GOOGLETAGMANAGER2_PRODUCT_DATA_ID_' + productId] || {}; 8565 productData.item_id = productId; 8566 8567 const eventData = { 8568 'event': 'select_item', 8569 'ecommerce': { 8570 'items': [productData] 8571 } 8572 } 8573 8574 yireoGoogleTagManager2Pusher(eventData, 'push (page event "select_item") [script-product-clicks.phtml]'); 8575 8576 if (window['YIREO_GOOGLETAGMANAGER2_DEBUG_CLICKS'] && confirm("Press to continue with redirect") === false) { 8577 event.preventDefault(); 8578 } 8579 }); 8580 }) 8581 } 8582</script>
vendor: 1 bytes, line 8582
8582
8583<script nonce="NnI0ZHB5ejN3anFyNjY4MDRrbGQ5bzgwMWF0Mmx0anI="> 8584 window.addEventListener('private-content-loaded', function(event) { 8585 window.dataLayer = window.dataLayer || []; 8586 8587 var isEmpty = function (variable) { 8588 if (typeof variable === 'undefined') { 8589 return true; 8590 } 8591 8592 if (Array.isArray(variable) && variable.length === 0) { 8593 return true; 8594 } 8595 8596 return typeof variable === 'object' && Object.keys(variable).length === 0; 8597 } 8598 8599 var getSectionNames = function () { 8600 return ['cart', 'customer']; 8601 } 8602 8603 getSectionNames().forEach(function (sectionName) { 8604 if (!event.detail.data[sectionName].gtm) { 8605 return; 8606 } 8607 8608 const attributes = event.detail.data[sectionName].gtm; 8609 if (!Object.keys(attributes).length > 0) { 8610 return; 8611 } 8612 8613 yireoGoogleTagManager2Pusher(attributes, 'push (attributes) [script-additions.phtml]'); 8614 }); 8615 8616 let attributes = {}; 8617 getSectionNames().forEach(function (sectionName) { 8618 if (!event.detail.data[sectionName].gtm_events) { 8619 return; 8620 } 8621 8622 const gtmEvents = event.detail.data[sectionName].gtm_events; 8623 for (const [eventId, eventData] of Object.entries(gtmEvents)) { 8624 yireoGoogleTagManager2Logger('found event in section "' + sectionName + '"', eventData); 8625 8626 const metaData = eventData.meta; 8627 yireoGoogleTagManager2Pusher(eventData, 'push (customerData "' + sectionName + '" event "' + eventId + '")'); 8628 8629 if (!metaData || metaData.cacheable !== true) { 8630 yireoGoogleTagManager2Logger('removing event "' + eventId + '" from section "' + sectionName + '"') 8631 8632 let mageCacheStorage = event.detail.data; 8633 8634 if (mageCacheStorage !== null 8635 && typeof mageCacheStorage[sectionName] !== 'undefined' 8636 && typeof mageCacheStorage[sectionName].gtm_events !== 'undefined' 8637 && eventId in mageCacheStorage[sectionName].gtm_events) { 8638 delete mageCacheStorage[sectionName].gtm_events[eventId]; 8639 } 8640 8641 window.localStorage.setItem('mage-cache-storage', JSON.stringify(mageCacheStorage)); 8642 } 8643 } 8644 }); 8645 8646 if (false === isEmpty(attributes)) { 8647 yireoGoogleTagManager2Pusher(attributes, 'dataLayer (initial js) [script-additions.phtml]'); 8648 } 8649 }); 8650</script>
8650 8651</body> 8652</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.