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/version1789064390/frontend/Trefl/hyva-trefl/pl_PL/css/styles.css" /> 11<link rel="preload" as="font" crossorigin="anonymous" href="https://www.trefl.com/static/version1789064390/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/version1789064390/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/version1789064390/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/version1789064390/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/version1789064390/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/version1789064390/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/version1789064390/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/version1789064390/frontend/Trefl/hyva-trefl/pl_PL/Magento_Theme/web-app-manifest-512x512.png" /> 19<link rel="manifest" href="https://www.trefl.com/static/version1789064390/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="ODN6OGg5cXdsazIxaWMyMWozb2h2Y3FuajFnNXJ5MGI="> 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/version1789064390/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:#A42157;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/promocje"> <span class="text-xs">âï¸ DÅuższe wieczory? Postaw na gry, puzzle i zabawki z jesiennym rabatem. Zajrzyj do <b>strefy Promocje</b> i zgarnij <b>dodatkowe -10% z kodem SP10</b> âï¸</span> 587 </a> </div> 588</div>
vendor: 68 bytes, lines 588-589
588 589<noscript><iframe src="https://www.googletagmanager.com/ns.html?id=
589GTM-PC39D52
vendor: 83 bytes, line 589
589" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
590<input name="form_key" type="hidden" value="Wy4zYBn55dtJ43Ct" /> 591 <noscript> 592 <section class="message global noscript border-b-2 border-blue-500 bg-blue-50 shadow-none m-0 px-0 rounded-none font-normal"> 593 <div class="container text-center"> 594 <p> 595 <strong>WyglÄ da na to, że JavaScript jest wyÅÄ czony w twojej przeglÄ darce.</strong> 596 <span> 597 By w peÅni cieszyÄ siÄ naszÄ stronÄ , upewnij siÄ, że wÅÄ czyÅeÅ JavaScript w swojej przeglÄ darce. </span> 598 </p> 599 </div> 600 </section> 601 </noscript> 602 603
604<script> 605 document.body.addEventListener('touchstart', () => {}, {passive: true}) 606</script>
vendor: 1 bytes, line 606
606
607<script nonce="ODN6OGg5cXdsazIxaWMyMWozb2h2Y3FuajFnNXJ5MGI="> 608 function yireoGoogleTagManager2Pusher(eventData, message) { 609 window.YIREO_GOOGLETAGMANAGER2_PAST_EVENTS = window.YIREO_GOOGLETAGMANAGER2_PAST_EVENTS || []; 610 611 const copyEventData = Object.assign({}, eventData); 612 let metaData = {}; 613 if (copyEventData.meta) { 614 metaData = copyEventData.meta; 615 delete copyEventData.meta; 616 } 617 618 const eventHash = btoa(encodeURIComponent(JSON.stringify(copyEventData))); 619 if (window.YIREO_GOOGLETAGMANAGER2_PAST_EVENTS.includes(eventHash)) { 620 yireoGoogleTagManager2Logger('Warning: Event already triggered', eventData); 621 return; 622 } 623 624 if (metaData && metaData.allowed_pages && metaData.allowed_pages.length > 0 625 && false === metaData.allowed_pages.some(page => window.location.pathname.includes(page))) { 626 yireoGoogleTagManager2Logger('Warning: Skipping event, not in allowed pages', window.location.pathname, eventData); 627 return; 628 } 629 630 if (!message) { 631 message = 'push (unknown) [unknown]'; 632 } 633 634 yireoGoogleTagManager2Logger(message, eventData); 635 window.dataLayer = window.dataLayer || []; 636 637 if (eventData.ecommerce) { 638 window.dataLayer.push({ecommerce: null}); 639 } 640 641 window.dataLayer.push(eventData); 642 window.YIREO_GOOGLETAGMANAGER2_PAST_EVENTS.push(eventHash); 643 } 644</script>
vendor: 1 bytes, line 644
644
645<script nonce="ODN6OGg5cXdsazIxaWMyMWozb2h2Y3FuajFnNXJ5MGI="> 646 function yireoGoogleTagManager2Logger(...args) { 647 const debug = window.YIREO_GOOGLETAGMANAGER2_DEBUG || false; 648 if (false === debug) { 649 return; 650 } 651 652 var color = 'gray'; 653 if (args[0].toLowerCase().startsWith('push')) { 654 color = 'green'; 655 } 656 657 if (args[0].toLowerCase().startsWith('warning')) { 658 color = 'orange'; 659 } 660 661 var css = 'color:white; background-color:' + color + '; padding:1px;' 662 console.log('%cYireo_GoogleTagManager2', css, ...args); 663 } 664</script>
664 665
666<script> 667 'use strict'; 668 (function(hyva) { 669 const formValidationRules = { 670 required(value, options, field, context) { 671 const el = field.element.type === 'hidden' ? createTextInputFrom(field.element) : field.element, 672 msg = 'To\u0020jest\u0020wymagane\u0020pole.'; 673 674 if (el.type === 'radio' || el.type === 'checkbox') { 675 return (value === undefined || value.length === 0) ? msg : true; 676 } 677 678 el.setAttribute('required', ''); 679 el.checkValidity(); 680 681 return el.validity.valueMissing ? msg : true; 682 }, 683 maxlength(value, options, field, context) { 684 const n = Number(options) 685 if (value.length > n) { 686 return n === 1 687 ? hyva.strf('Please\u0020enter\u0020no\u0020more\u0020than\u00201\u0020character.') 688 : hyva.strf('Please\u0020enter\u0020no\u0020more\u0020than\u0020\u00250\u0020characters.', options) 689 } 690 return true; 691 }, 692 minlength(value, options, field, context) { 693 const n = Number(options) 694 if (value.length > 0 && value.length < n) { 695 return n === 1 696 ? hyva.strf('Minimalna\u0020ilo\u015B\u0107\u0020znak\u00F3w\u0020to\u00201.') 697 : hyva.strf('Minimalna\u0020ilo\u015B\u0107\u0020znak\u00F3w\u0020to\u0020\u00250.', options) 698 } 699 return true; 700 }, 701 max(value, options, field, context) { 702 field.element.setAttribute('max', options); 703 field.element.checkValidity(); 704 if (field.element.validity.rangeOverflow) { 705 return hyva.strf('Please\u0020enter\u0020a\u0020value\u0020less\u0020than\u0020or\u0020equal\u0020to\u0020\u0022\u00250\u0022.', options); 706 } 707 return true; 708 }, 709 min(value, options, field, context) { 710 field.element.setAttribute('min', options); 711 field.element.checkValidity(); 712 if (field.element.validity.rangeUnderflow) { 713 return hyva.strf('Please\u0020enter\u0020a\u0020value\u0020greater\u0020than\u0020or\u0020equal\u0020to\u0020\u0022\u00250\u0022.', options); 714 } 715 return true; 716 }, 717 step(value, options, field, context) { 718 field.element.setAttribute('step', options); 719 field.element.checkValidity(); 720 if (field.element.validity.stepMismatch) { 721 const val = Number(value); 722 const step = Number(options); 723 const msg = 'Please\u0020enter\u0020a\u0020valid\u0020value.\u0020The\u0020two\u0020nearest\u0020valid\u0020values\u0020are\u0020\u0022\u00250\u0022\u0020and\u0020\u0022\u00251\u0022.'; 724 return hyva.strf(msg, Math.floor(val / step) * step, Math.ceil(val / step) * step); 725 } 726 return true; 727 }, 728 pattern(value, options, field, context) { 729 field.element.setAttribute('pattern', options); 730 field.element.checkValidity(); 731 if (field.element.validity.patternMismatch) { 732 return field.element.title 733 ? hyva.strf('Please\u0020match\u0020the\u0020requested\u0020format\u003A\u0020\u00250.', field.element.title) 734 : 'Please\u0020match\u0020the\u0020requested\u0020format.' 735 } 736 return true; 737 }, 738 email(value, options, field, context) { 739 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; 740 if (value.length > 0 && !rule.test(value)) { 741 return 'Prosimy\u0020wpisa\u0107\u0020poprawny\u0020adres\u0020e\u002Dmail'; 742 } 743 return true; 744 }, 745 password(value, options, field, context) { 746 const rule = /^(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9])(?=.*?[#?!@$%^&*-]).{8,}$/; 747 if (value.length > 0 && !rule.test(value)) { 748 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'; 749 } 750 return true; 751 }, 752 equalTo(value, options, field, context) { 753 const dependencyField = context.fields[options].element; 754 if (value !== dependencyField.value) { 755 const dependencyFieldName = 756 dependencyField.label || 757 dependencyField.title || 758 (dependencyField.labels && dependencyField.labels[0] && dependencyField.labels[0].innerText) || 759 dependencyField.name; 760 return hyva.strf('Warto\u015B\u0107\u0020tego\u0020pola\u0020musi\u0020by\u0107\u0020taka\u0020sama\u0020jak\u0020\u0022\u00250\u0022.', dependencyFieldName); 761 } 762 return true; 763 } 764 }; 765 766 function raceSome(promises, pred) { 767 return new Promise((resolve, reject) => { 768 769 if (promises.length === 0) { 770 return resolve(); 771 } 772 773 let settled = false, nDone = 0; 774 775 const resolveIf = v => { 776 if (!settled && (pred(v) || ++nDone === promises.length)) { 777 settled = true; 778 resolve(v); 779 } 780 return v; 781 } 782 783 promises.map(promise => {
784 promise.then(resolveIf).catch(reason => { 785 settled = true; 786 reject(reason) 787 }); 788 return promise; 789 }); 790 }); 791 } 792 793 const INPUT_ATTRIBUTE_RULES = {min: 'min', max: 'max', required: 'required', minlength: 'minlength', maxlength: 'maxlength', step: 'step', pattern: 'pattern'} 794 const INPUT_TYPE_RULES = {email: 'email'} 795 796 function getRules(element) { 797 let rules = {}; 798 Object.keys(INPUT_ATTRIBUTE_RULES).forEach(attrName => { 799 if (element.hasAttribute(attrName)) { 800 rules[INPUT_ATTRIBUTE_RULES[attrName]] = element.getAttribute(attrName); 801 } 802 }) 803 if (INPUT_TYPE_RULES[element.type]) { 804 rules[INPUT_TYPE_RULES[element.type]] = true; 805 } 806 807 if (element.dataset.validate) { 808 try { 809 Object.assign(rules, JSON.parse(element.dataset.validate)); 810 } catch (error) { 811 console.error('Validator error. Cannot parse data-validate attribute of element:\n', element); 812 } 813 } 814 815 return rules; 816 } 817 818 function isInvalidRuleResult(ruleState) { 819 return typeof ruleState === 'string' || !ruleState || (ruleState.type && ruleState.content); 820 } 821 822 async function runValidateFn(rule, options, value, field) { 823 return formValidationRules[rule](value, options, field, this); 824 } 825 826 function generateId() { 827 let id; 828 do { 829 id = `${this.idPrefix}-${++this.idSeq}`; 830 } while (document.getElementById(id)); 831 return id; 832 } 833 834 function isVisible(element) { 835 const el = element.type !== 'hidden' ? element : (element.parentElement || {}); 836 return !!(el.offsetWidth || el.offsetHeight || el.getClientRects().length) 837 } 838 839 function elementWillValidate(element) { 840 return (element.willValidate || element.type === 'hidden') 841 && element.tagName !== 'BUTTON' 842 && element.disabled === false 843 && !(element.tagName === 'INPUT' && element.type === 'submit') 844 && (element.hasAttribute('data-validate-hidden') || isVisible(element)) 845 } 846 847 function createMessageContainer(el, fieldWrapperClassName) { 848 if (! el.parentElement) { 849 return; 850 } 851 const refocus = document.activeElement === el; 852 const wrapper = document.createElement('div'); 853 wrapper.classList.add.apply(wrapper.classList, fieldWrapperClassName.split(' ')); 854 el.parentElement.insertBefore(wrapper, el); 855 wrapper.appendChild(el); 856 refocus && document.activeElement !== el && el.focus(); 857 return wrapper; 858 } 859 860 function containerNotFound(selector, el) { 861 const msg = `Cannot find message container element ${selector} of ${el.name}`; 862 console.error(msg, el); 863 throw msg; 864 } 865 866 function createTextInputFrom(el) { 867 const text = document.createElement('INPUT'); 868 text.type = 'text'; 869 text.value = el.value; 870 return text; 871 } 872 873 function classNamesToSelector(classNames) { 874 return classNames.split(' ') 875 .filter(className => className.length > 0) 876 .map(className => `.${className}`) 877 .join('') 878 } 879 880 function hasMessagesWrapper(field, messagesWrapperClassName) { 881 return this.getMessageContainer(field).querySelector(classNamesToSelector(messagesWrapperClassName)); 882 } 883 884 function getMessagesWrapper(field, messagesWrapperClassName) { 885 if (hasMessagesWrapper.call(this, field, messagesWrapperClassName)) { 886 return this.getMessageContainer(field).querySelector(classNamesToSelector(messagesWrapperClassName)); 887 } 888 889 const msgWrapper = document.createElement('ul'); 890 const msgId = generateId.call(this); 891 msgWrapper.id = msgId; 892 field.element.setAttribute('aria-errormessage', msgId); 893 field.element.setAttribute('aria-describedby', msgId); 894 msgWrapper.classList.add.apply(msgWrapper.classList, messagesWrapperClassName.split(' ')); 895 if (field.validateOnChange) { 896 msgWrapper.setAttribute('aria-live', 'polite'); 897 } 898 this.getMessageContainer(field).appendChild(msgWrapper); 899 900 return msgWrapper; 901 } 902 903 function getCheckedValues(field) { 904 const name = field.element.name.replace(/([\\"])/g, '\\$1'); 905 const elements = field.element.form.querySelectorAll('input[name="' + name + '"]:checked'); 906 return Array.from(elements).map(el => el.value); 907 } 908 909 function escapeHtml(s) { 910 const div = document.createElement('div') 911 div.innerText = s; 912 return div.innerHTML; 913 } 914 915 916 function formValidation(form, options = {}) { 917 const formElement = form || this.$el; 918 919 if (formElement.dataset && formElement.dataset.options) { 920 try { 921 options = Object.assign(options, JSON.parse(formElement.dataset.options || '{}')); 922 } catch (e) { 923 throw new Error('Cannot read the form options from the data-options attribute: not val
923id JSON'); 924 } 925 } 926 927 // Disable browser default validation 928 if (formElement.tagName === 'FORM') { 929 formElement.setAttribute('novalidate', ''); 930 } else { 931 console.error('formValidation can be initialized only on FORM element', formElement); 932 return; 933 } 934 935 options = Object.assign({ 936 fieldWrapperClassName: 'field field-reserved', 937 messagesWrapperClassName: 'messages', 938 validClassName: 'field-success', 939 invalidClassName: 'field-error', 940 pageMessagesWrapperSelector: null, 941 scrollToFirstError: true, 942 }, options || {}); 943 944 return { 945 state: { 946 valid: false, 947 }, 948 fields: {}, 949 idSeq: 0, 950 idPrefix: formElement.id || 'vld-msg', 951 setupFields(elements) { 952 this.fields = {}; 953 Array.from(elements).forEach(element => { 954 if (elementWillValidate(element)) { 955 this.setupField(element); 956 } 957 }); 958 }, 959 setupField(element) { 960 if (! element) return; 961 const onChange = !!element.dataset.onChange; 962 if (elementWillValidate(element)) { 963 const rules = getRules(element); 964 if (Object.keys(rules).length > 0) { 965 if (this.fields[element.name]) { 966 Object.assign(this.fields[element.name].rules, rules); 967 } else { 968 this.fields[element.name] = { 969 element, 970 rules: rules, 971 validateOnChange: onChange, 972 state: { 973 valid: null, 974 rules: {} 975 } 976 } 977 } 978 } 979 } else { 980 console.error('Element will not validate', element); 981 } 982 }, 983 onSubmit(event) { 984 if (event.target.tagName === 'FORM') { 985 event.preventDefault(); 986 987 this.validate() 988 .then(() => event.target.submit()) 989 .catch(invalidElements => {}); 990 } 991 }, 992 onChange(event) { 993 event.target.dataset.onChange = 'true'; 994 if (!Object.keys(this.fields).length) { 995 this.setupFields(formElement.elements); 996 } 997 if (!Object.keys(this.fields).includes(event.target.name)) { 998 this.setupField(event.target); 999 } 1000 const field = this.fields[event.target.name]; 1001 1002 this.validateField(field); 1003 field && field.element.removeAttribute('data-on-change') 1004 }, 1005 validateSafe() { 1006 return new Promise(resolve => this.validate().then(() => resolve(true)).catch(() => {})) 1007 }, 1008 validate() { 1009 if (!Object.keys(this.fields).length || !Object.keys(this.fields).length !== formElement.elements.length) { 1010 this.setupFields(formElement.elements); 1011 } 1012 return new Promise(async (resolve, reject) => { 1013 if (formElement.elements) { 1014 await raceSome(this.validateFields(), result => result !== true) 1015 const invalidFields = Object.values(this.fields).filter(field => !field.state.valid); 1016 this.state.valid = invalidFields.length === 0; 1017 if (this.state.valid) { 1018 resolve(); 1019 } else { 1020 if (options.scrollToFirstError && invalidFields.length > 0) { 1021 invalidFields[0].element.focus() 1022 invalidFields[0].element.select && invalidFields[0].element.select(); 1023 } 1024 reject(invalidFields.map(field => field.element)); 1025 } 1026 } 1027 }); 1028 }, 1029 validateFields() { 1030 const fields = Object.values(this.fields); 1031 1032 fields.forEach(field => { 1033 this.getMessageContainer(field).classList.remove(options.validClassName, options.invalidClassName) 1034 }); 1035 return fields.map(field => this.validateField(field)) 1036 }, 1037 validateField(field) { 1038 if (! field || ! elementWillValidate(field.element)) { 1039 return new Promise(resolve => resolve(true)) 1040 } 1041 1042 let value; 1043 if (field.element.type === 'checkbox') { 1044 value = getCheckedValues(field); 1045 } else if (field.element.type === 'radio') { 1046 value = getCheckedValues(field)[0] || undefined; 1047 } else if (field.element.tagName === 'SELECT' && field.element.multiple) { 1048 value = Array.from(field.element.selectedOptions).map(opt => opt.value); 1049 } else { 1050 value = field.element.value; 1051 } 1052 1053 const rules = field.rules || {}; 1054 1055 field.state.valid = true;
1056 this.showFieldState(field); 1057 1058 1059 const fieldValidations = Object.keys(rules).filter(rule => formValidationRules[rule]).map(async rule => { 1060 return runValidateFn.call(this, rule, rules[rule], value, field).then(result => { 1061 field.state.rules[rule] = result; 1062 return result; 1063 }) 1064 }); 1065 1066 return new Promise(resolve => { 1067 Promise.all(fieldValidations).then(results => { 1068 field.state.valid = !elementWillValidate(field.element) || rules.length === 0 || !results.some(isInvalidRuleResult) 1069 this.showFieldState(field); 1070 resolve(field.state.valid); 1071 }) 1072 }); 1073 }, 1074 getMessagesByField(field) { 1075 const messages = []; 1076 const invalidRules = Object.keys(field.state.rules).filter(rule => isInvalidRuleResult(field.state.rules[rule])); 1077 1078 field.rules && Object.keys(field.rules).forEach((rule) => { 1079 if (invalidRules.includes(rule)) { 1080 const customMessage = field.element.getAttribute('data-msg-' + rule); 1081 const message = customMessage ? customMessage : field.state.rules[rule]; 1082 const ruleOptions = JSON.parse(JSON.stringify(field.rules[rule])); 1083 1084 if (typeof message === 'undefined' || message === null || (typeof message !== 'string' && ! message.type)) { 1085 messages.push(hyva.strf('Validation rule "%0" failed.', rule)); 1086 } else if (Array.isArray(ruleOptions)) { 1087 ruleOptions.unshift(message.type ? message.content : message); 1088 const content = hyva.strf.apply(null, ruleOptions); 1089 messages.push(message.type ? {type: message.type, content} : content); 1090 } else { 1091 const content = hyva.strf(message.type ? message.content : message, ruleOptions) 1092 messages.push(message.type ? {type: message.type, content} : content); 1093 } 1094 } 1095 }); 1096 return messages; 1097 }, 1098 /** @deprecated */ 1099 getFieldWrapper(field) { 1100 return this.getMessageContainer(field) 1101 }, 1102 getMessageContainer(field) { 1103 let container; 1104 const pageSelector = field.element.getAttribute('data-validation-container') || options.pageMessagesContainerSelector; 1105 if (pageSelector) { 1106 container = document.querySelector(pageSelector) 1107 || containerNotFound(pageSelector, field.element) 1108 } else { 1109 const containerSelector = classNamesToSelector(options.fieldWrapperClassName); 1110 container = field.element.closest(containerSelector) 1111 || createMessageContainer(field.element, options.fieldWrapperClassName) 1112 || containerNotFound(containerSelector, field.element); 1113 } 1114 1115 return container; 1116 }, 1117 showFieldState(field) { 1118 const container = this.getMessageContainer(field), 1119 hasErrorMessages = hasMessagesWrapper.call(this, field, options.messagesWrapperClassName), 1120 messages = this.getMessagesByField(field).map(m => { 1121 return m.type !== 'html' ? escapeHtml(m.type ? m.content : m) : m.content; 1122 }); 1123 container.classList.toggle(options.validClassName, field.state.valid && ! hasErrorMessages); 1124 container.classList.toggle(options.invalidClassName, !field.state.valid || hasErrorMessages); 1125 this.createHtmlErrorMessage(field, messages); 1126 1127 if (field.state.valid) { 1128 field.element.removeAttribute('aria-invalid'); 1129 } else { 1130 field.element.setAttribute('aria-invalid', 'true'); 1131 if (! document.activeElement) { 1132 field.element.focus(); 1133 } 1134 } 1135 }, 1136 removeMessages(field, messagesClass) { 1137 if (! hasMessagesWrapper.call(this, field, messagesClass || options.messagesWrapperClassName)) { 1138 return; 1139 } 1140 1141 const msgWrapper = getMessagesWrapper.call(this, field, messagesClass || options.messagesWrapperClassName); 1142 const messages = msgWrapper.querySelectorAll(`[data-msg-field='${field.element.name}']`);
1143 Array.from(messages).forEach(msg => msg.remove()); 1144 if (msgWrapper && msgWrapper.childElementCount === 0) { 1145 field.element.removeAttribute('aria-errormessage'); 1146 field.element.removeAttribute('aria-describedby'); 1147 msgWrapper.remove(); 1148 } 1149 }, 1150 createErrorMessage(field, messages) { 1151 const htmlMessages = (Array.isArray(messages) ? messages : [messages]).map(escapeHtml) 1152 this.createHtmlErrorMessage(field, htmlMessages); 1153 }, 1154 createHtmlErrorMessage(field, messages) { 1155 this.removeMessages(field, options.messagesWrapperClassName); 1156 field.element.removeAttribute('aria-errormessage'); 1157 field.element.removeAttribute('aria-describedby'); 1158 1159 if (!field.state.valid) { 1160 const msgWrapper = this.addHtmlMessages(field, options.messagesWrapperClassName, messages); 1161 field.element.setAttribute('aria-errormessage', msgWrapper.id); 1162 field.element.setAttribute('aria-describedby', msgWrapper.id); 1163 } 1164 }, 1165 /** @deprecated */ 1166 createMessage(field, message) { 1167 return this.addMessages(field, options.messagesWrapperClassName, message); 1168 }, 1169 addMessages(field, messagesClass, messages) { 1170 const htmlMessages = (Array.isArray(messages) ? messages : [messages]).map(escapeHtml) 1171 return this.addHtmlMessages(field, messagesClass, htmlMessages); 1172 }, 1173 addHtmlMessages(field, messagesClass, htmlMessages) { 1174 const msgWrapper = getMessagesWrapper.call(this, field, messagesClass); 1175 1176 (Array.isArray(htmlMessages) ? htmlMessages : [htmlMessages]).forEach((htmlMessage) => { 1177 const li = document.createElement('li'); 1178 li.innerHTML = htmlMessage; 1179 li.setAttribute('data-msg-field', field.element.name); 1180 msgWrapper.appendChild(li); 1181 }); 1182 1183 return msgWrapper; 1184 }, 1185 setField(name, value) { 1186 this.fields[name].element.value = value; 1187 this.fields[name].element.dispatchEvent((new Event('input'))); 1188 this.validateField(this.fields[name]); 1189 } 1190 } 1191 } 1192 1193 hyva.formValidation = formValidation; 1194 hyva.formValidation.rules = formValidationRules; 1195 hyva.formValidation.setInputAttributeRuleName = (attrName, ruleName) => INPUT_ATTRIBUTE_RULES[attrName] = ruleName || attrName; 1196 hyva.formValidation.setInputTypeRuleName = (typeName, ruleName) => INPUT_TYPE_RULES[typeName] = ruleName || typeName; 1197 hyva.formValidation.addRule = (name, validator) => formValidationRules[name] = validator; 1198 }(window.hyva = window.hyva || {})); 1199 1200 window.addEventListener('alpine:init', () => { 1201 Alpine.data('hyva.formValidation', hyva.formValidation); 1202 Alpine.data('hyva.formValidation($el)', hyva.formValidation); 1203 }, {once: true}); 1204</script>
1204 1205<div class="page-wrapper"><header class="page-header"> 1206 1207<div class="bg-header-top py-3 md:py-5"> 1208 <div class="container header-container px-3 lg:px-6 flex justify-between items-center"> 1209 <ul class="social-menu"> 1210 <li> 1211 <a href="https://www.facebook.com/Trefl.toys/" 1212 title="Przejdź na Trefl Facebook" 1213 target="_blank" class="text-header-top" 1214 > 1215 <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> 1216 </a> 1217 </li> 1218 <li> 1219 <a href="https://pl.linkedin.com/company/trefl-s-a-" 1220 title="Przejdź na Trefl LinkedIn" 1221 target="_blank" class="text-header-top" 1222 > 1223 <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> 1224 </a> 1225 </li> 1226 <li> 1227 <a href="mailto:[email protected]" 1228 title="WyÅlij e-mail na [email protected]" 1229 target="_blank" class="text-header-top" 1230 > 1231 <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> 1232 </a> 1233 </li> 1234 </ul> <ul class="header-top-links-menu list-none text-xs md:text-header-top gap-2 flex flex-wrap items-center" 1235 role="menubar" 1236 aria-orientation="horizontal" 1237> 1238 <li class="relative flex-wrap lg:flex-nowrap header-top-links-menu__item" 1239 x-data="topMenu_575()" 1240 role="menuitem" 1241 @keydown.escape="toggleSubmenu('575', false, $event)" 1242 @pointerenter="toggleSubmenu('575', true, $event)" 1243 @pointerleave="toggleSubmenu('575', false, $event)" 1244 > 1245 <button aria-haspopup="menu" 1246 aria-controls="top-links-5756ab45a3cc8d7b" 1247 id="top-links-575" 1248 class="flex items-center gap-1" 1249 x-ref="button" 1250 @click.prevent.stop="toggleSubmenu('575', null, $event)" 1251 @keydown.space.prevent="toggleSubmenu('575', null, $event)" 1252 @keydown.enter.prevent="toggleSubmenu('575', null, $event)" 1253 aria-label="Otwórz menu Oferta B2B" 1254 :aria-pressed="openSubmenuId === '575'" 1255 :aria-expanded="openSubmenuId === '575'"> 1256 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"> 1257 <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"/> 1258</svg> 1259 </button> 1260 <ul role="menubar" 1261 aria-orientation="vertical" 1262 aria-labelledby="top-links575" 1263 id="top-links5756ab45a3cc8d7b" 1264 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" 1265 :class="openSubmenuId === '575' ? 'z-40' : ''" 1266 x-cloak 1267 > 1268 <li class="header-top-links-menu__item whitespace-nowrap" role="menuitem"> 1269 <a 1270 href="https://b2b.trefl.com/" 1271 data-menu="menu-576" class="__inner-link" > 1272 Platforma zamówieÅ hurtowych </a> 1273 1274 </li> 1275 <li class="header-top-links-menu__item whitespace-nowrap" role="menuitem"> 1276 <a 1277 href="https://factory.trefl.com/" 1278 data-menu="menu-577" class="__inner-link" > 1279 Produkty na zlecenie - Trefl Factory </a> 1280 1281 </li> 1282 </ul> 1283 </li> 1284
1284<script> 1285 function topMenu_575() { 1286 return { 1287 openSubmenuId: null, 1288 toggleSubmenu(id, state, event) { 1289 const doNotFocus = event.type === 'pointerenter' || event.type === 'pointerleave'; 1290 1291 if (state === true) { 1292 this.openSubmenuId = id; 1293 } else if (state === false) { 1294 this.openSubmenuId = null; 1295 } else { 1296 this.openSubmenuId = this.openSubmenuId === id ? null : id; 1297 } 1298 1299 if (this.openSubmenuId) { 1300 const submenu = document.getElementById('top-links' + id); 1301 if (submenu && !doNotFocus) { 1302 const firstChild = submenu.querySelector('li a'); 1303 if (firstChild) { 1304 setTimeout(() => { 1305 firstChild.focus({ focusVisible: true }); 1306 }, 0); 1307 } 1308 } 1309 1310 this.$refs.button.setAttribute( 1311 'aria-label', 1312 'Zamknij menu Oferta B2B' 1313 ); 1314 } else { 1315 const button = document.getElementById('top-links-' + id); 1316 if (button && !doNotFocus) { 1317 button.focus({ focusVisible: true }); 1318 } 1319 1320 this.$refs.button.setAttribute( 1321 'aria-label', 1322 'Otwórz menu Oferta B2B' 1323 ); 1324 } 1325 }, 1326 }; 1327 } 1328 </script>
1328 1329 <li class="last:hidden" role="separator" aria-hidden="true"> | </li> 1330 <li class="header-top-links-menu__item" role="menuitem"> 1331<a 1332 href="https://www.trefl.com/grupa-trefl" 1333 class="__link" 1334 data-menu="menu-183"> 1335 Grupa Trefl</a> 1336</li> 1337 <li class="last:hidden" role="separator" aria-hidden="true"> | </li> 1338 <li class="relative flex-wrap lg:flex-nowrap header-top-links-menu__item" 1339 x-data="topMenu_400()" 1340 role="menuitem" 1341 @keydown.escape="toggleSubmenu('400', false, $event)" 1342 @pointerenter="toggleSubmenu('400', true, $event)" 1343 @pointerleave="toggleSubmenu('400', false, $event)" 1344 > 1345 <button aria-haspopup="menu" 1346 aria-controls="top-links-4006ab45a3cc8d7b" 1347 id="top-links-400" 1348 class="flex items-center gap-1" 1349 x-ref="button" 1350 @click.prevent.stop="toggleSubmenu('400', null, $event)" 1351 @keydown.space.prevent="toggleSubmenu('400', null, $event)" 1352 @keydown.enter.prevent="toggleSubmenu('400', null, $event)" 1353 aria-label="Otwórz menu ESG" 1354 :aria-pressed="openSubmenuId === '400'" 1355 :aria-expanded="openSubmenuId === '400'"> 1356 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"> 1357 <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"/> 1358</svg> 1359 </button> 1360 <ul role="menubar" 1361 aria-orientation="vertical" 1362 aria-labelledby="top-links400" 1363 id="top-links4006ab45a3cc8d7b" 1364 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" 1365 :class="openSubmenuId === '400' ? 'z-40' : ''" 1366 x-cloak 1367 > 1368 <li class="header-top-links-menu__item whitespace-nowrap" role="menuitem"> 1369 <a 1370 href="https://www.trefl.com/zrownowazony-rozwoj" 1371 data-menu="menu-401" class="__inner-link" > 1372 Zrównoważony rozwój </a> 1373 1374 </li> 1375 <li class="header-top-links-menu__item whitespace-nowrap" role="menuitem"> 1376 <a 1377 href="https://www.trefl.com/zrownowazony-rozwoj/srodowisko" 1378 data-menu="menu-582" class="__inner-link" > 1379 Årodowisko </a> 1380 1381 </li> 1382 <li class="header-top-links-menu__item whitespace-nowrap" role="menuitem"> 1383 <a 1384 href="https://www.trefl.com/zielona-strona-trefla" 1385 data-menu="menu-402" class="__inner-link" > 1386 Zielona Strona Trefla </a> 1387 1388 </li> 1389 <li class="header-top-links-menu__item whitespace-nowrap" role="menuitem"> 1390 <a 1391 href="https://www.trefl.com/zrownowazony-rozwoj/dokumenty" 1392 data-menu="menu-403" class="__inner-link" > 1393 Dokumenty </a> 1394 1395 </li> 1396 </ul> 1397 </li> 1398
1398<script> 1399 function topMenu_400() { 1400 return { 1401 openSubmenuId: null, 1402 toggleSubmenu(id, state, event) { 1403 const doNotFocus = event.type === 'pointerenter' || event.type === 'pointerleave'; 1404 1405 if (state === true) { 1406 this.openSubmenuId = id; 1407 } else if (state === false) { 1408 this.openSubmenuId = null; 1409 } else { 1410 this.openSubmenuId = this.openSubmenuId === id ? null : id; 1411 } 1412 1413 if (this.openSubmenuId) { 1414 const submenu = document.getElementById('top-links' + id); 1415 if (submenu && !doNotFocus) { 1416 const firstChild = submenu.querySelector('li a'); 1417 if (firstChild) { 1418 setTimeout(() => { 1419 firstChild.focus({ focusVisible: true }); 1420 }, 0); 1421 } 1422 } 1423 1424 this.$refs.button.setAttribute( 1425 'aria-label', 1426 'Zamknij menu ESG' 1427 ); 1428 } else { 1429 const button = document.getElementById('top-links-' + id); 1430 if (button && !doNotFocus) { 1431 button.focus({ focusVisible: true }); 1432 } 1433 1434 this.$refs.button.setAttribute( 1435 'aria-label', 1436 'Otwórz menu ESG' 1437 ); 1438 } 1439 }, 1440 }; 1441 } 1442 </script>
1442 1443 <li class="last:hidden" role="separator" aria-hidden="true"> | </li> 1444 <li class="header-top-links-menu__item" role="menuitem"> 1445<a 1446 href="https://www.trefl.com/kariera" 1447 class="__link" 1448 data-menu="menu-615"> 1449 Kariera</a> 1450</li> 1451 <li class="last:hidden" role="separator" aria-hidden="true"> | </li> 1452 <li class="relative flex-wrap lg:flex-nowrap header-top-links-menu__item" 1453 x-data="topMenu_184()" 1454 role="menuitem" 1455 @keydown.escape="toggleSubmenu('184', false, $event)" 1456 @pointerenter="toggleSubmenu('184', true, $event)" 1457 @pointerleave="toggleSubmenu('184', false, $event)" 1458 > 1459 <button aria-haspopup="menu" 1460 aria-controls="top-links-1846ab45a3cc8d7b" 1461 id="top-links-184" 1462 class="flex items-center gap-1" 1463 x-ref="button" 1464 @click.prevent.stop="toggleSubmenu('184', null, $event)" 1465 @keydown.space.prevent="toggleSubmenu('184', null, $event)" 1466 @keydown.enter.prevent="toggleSubmenu('184', null, $event)" 1467 aria-label="Otwórz menu eGames" 1468 :aria-pressed="openSubmenuId === '184'" 1469 :aria-expanded="openSubmenuId === '184'"> 1470 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"> 1471 <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"/> 1472</svg> 1473 </button> 1474 <ul role="menubar" 1475 aria-orientation="vertical" 1476 aria-labelledby="top-links184" 1477 id="top-links1846ab45a3cc8d7b" 1478 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" 1479 :class="openSubmenuId === '184' ? 'z-40' : ''" 1480 x-cloak 1481 > 1482 <li class="header-top-links-menu__item whitespace-nowrap" role="menuitem"> 1483 <a 1484 href="https://www.roblox.com/pl/games/86253893074445/Treflandia-Wielka-Przygoda-Pomagaj-zwierz-tom" 1485 data-menu="menu-620" class="__inner-link" target="_blank" rel="noopener" > 1486 Treflandia na Roblox </a> 1487 1488 </li> 1489 <li class="header-top-links-menu__item whitespace-nowrap" role="menuitem"> 1490 <a 1491 href="https://www.nintendo.com/us/search/#cat=gme&f=softwarePublisher&softwarePublisher=Trefl%20S.A" 1492 data-menu="menu-621" class="__inner-link" target="_blank" rel="noopener" > 1493 Gry na Nintendo </a> 1494 1495 </li> 1496 <li class="header-top-links-menu__item whitespace-nowrap" role="menuitem"> 1497 <a 1498 href="https://store.steampowered.com/app/2606190/Spy_Guy_Hidden_Objects_Deluxe_Edition/?beta=1" 1499 data-menu="menu-622" class="__inner-link" target="_blank" rel="noopener" > 1500 Gry na PC (Steam) </a> 1501 1502 </li> 1503 <li class="header-top-links-menu__item whitespace-nowrap" role="menuitem"> 1504 <a 1505 href="https://apps.apple.com/pl/developer/trefl-sa/id896381365?l=pl" 1506 data-menu="menu-623" class="__inner-link" target="_blank" rel="noopener" > 1507 Gry mobilne (Apple IOS) </a> 1508 1509 </li> 1510 <li class="header-top-links-menu__item whitespace-nowrap" role="menuitem"> 1511 <a 1512 href="https://play.google.com/store/apps/dev?id=4662821842287727686&hl=pl" 1513 data-menu="menu-624" class="__inner-link" target="_blank" rel="noopener" > 1514 Gry mobilne (Android) </a> 1515 1516 </li> 1517 </ul> 1518 </li> 1519
1519<script> 1520 function topMenu_184() { 1521 return { 1522 openSubmenuId: null, 1523 toggleSubmenu(id, state, event) { 1524 const doNotFocus = event.type === 'pointerenter' || event.type === 'pointerleave'; 1525 1526 if (state === true) { 1527 this.openSubmenuId = id; 1528 } else if (state === false) { 1529 this.openSubmenuId = null; 1530 } else { 1531 this.openSubmenuId = this.openSubmenuId === id ? null : id; 1532 } 1533 1534 if (this.openSubmenuId) { 1535 const submenu = document.getElementById('top-links' + id); 1536 if (submenu && !doNotFocus) { 1537 const firstChild = submenu.querySelector('li a'); 1538 if (firstChild) { 1539 setTimeout(() => { 1540 firstChild.focus({ focusVisible: true }); 1541 }, 0); 1542 } 1543 } 1544 1545 this.$refs.button.setAttribute( 1546 'aria-label', 1547 'Zamknij menu eGames' 1548 ); 1549 } else { 1550 const button = document.getElementById('top-links-' + id); 1551 if (button && !doNotFocus) { 1552 button.focus({ focusVisible: true }); 1553 } 1554 1555 this.$refs.button.setAttribute( 1556 'aria-label', 1557 'Otwórz menu eGames' 1558 ); 1559 } 1560 }, 1561 }; 1562 } 1563 </script>
1563 1564 <li class="last:hidden" role="separator" aria-hidden="true"> | </li> 1565 <li class="header-top-links-menu__item" role="menuitem"> <a 1566 href="/blog" 1567 data-menu="menu-185" class="__link" > 1568 Blog </a> 1569 1570</li> 1571 <li class="last:hidden" role="separator" aria-hidden="true"> | </li> 1572 <li class="header-top-links-menu__item" role="menuitem"> <a 1573 href="/contact" 1574 data-menu="menu-187" class="__link" > 1575 Kontakt </a> 1576 1577</li> 1578 <li class="last:hidden" role="separator" aria-hidden="true"> | </li> 1579 </ul> </div> 1580</div> 1581<div class="header content"><template id="trustedshops-badge_6ab4f37e1143a"> 1582</template>
1583<script> 1584window.addEventListener('init-external-scripts', () => { 1585 const template = document.getElementById('trustedshops-badge_6ab4f37e1143a'); 1586 if (template?.content) { 1587 const clone = document.importNode(template.content, true); 1588 document.body.appendChild(clone); 1589 } 1590}, {once: true, passive: true}); 1591</script>
1591 1592</div>
1592<script> 1593 function initHeader () { 1594 return { 1595 cart: {}, 1596 isCartOpen: false, 1597 getData(data) { 1598 if (data.cart) { this.cart = data.cart } 1599 }, 1600 isCartEmpty() { 1601 return !this.cart.summary_count 1602 }, 1603 toggleCart(event) { 1604 if (event.detail && event.detail.isOpen !== undefined) { 1605 this.isCartOpen = event.detail.isOpen 1606 if (!this.isCartOpen && this.$refs && this.$refs.cartButton) { 1607 this.$refs.cartButton.focus() 1608 } 1609 } else { 1610 this.isCartOpen = true 1611 } 1612 } 1613 } 1614 } 1615</script>
1615 1616 1617 1618<div id="header" 1619 class="relative z-30 w-full bg-header lg:py-1.5" 1620 x-data="initHeader()" 1621 @private-content-loaded.window="getData(event.detail.data)" 1622> 1623 <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"> 1624 <!--Logo--> 1625 <div class="header-logo-wrap w-full flex items-center justify-center md:w-auto md:bg-transparent"> 1626 <div class="order-1 sm:order-2 lg:order-1 sm:w-auto flex-shrink-0 w-1/3 lg:w-auto"> 1627 <a class="flex items-center justify-center text-xl font-medium tracking-wide text-gray-800 no-underline hover:no-underline font-title" 1628 href="https://www.trefl.com/" 1629 aria-label="Przejdź do strony głównej" 1630 > 1631 <img 1632 src="https://www.trefl.com/static/version1789064390/frontend/Trefl/hyva-trefl/pl_PL/images/logo.svg" 1633 alt="" 1634 width="104" 1635 height="52" 1636 fetchpriority="high" 1637 loading="eager" 1638 class="logo-image" 1639 /> 1640 </a> 1641</div> 1642 </div> 1643 1644 <!--Search--> 1645 <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"> 1646 <div class="relative flex justify-center"> 1647 1648<form id="search_mini_form" 1649 action="https://www.trefl.com/catalogsearch/result/" 1650 method="get" 1651 role="search" 1652 class="w-full flex justify-center gap-x-2" 1653> 1654 <div class="w-full flex relative" style="max-width: 580px;"> 1655 <label class="sr-only text-primary" for="search"> 1656 Szukaj w sklepie... </label> 1657 <input id="search" 1658 type="search" 1659 required 1660 class="form-input w-full appearance-none border-gray-light bg-gray-light pr-14 sm:pr-3" 1661 autocapitalize="off" autocomplete="off" autocorrect="off" 1662 name="q" 1663 value="" 1664 placeholder="Czego szukasz?" 1665 maxlength="128" 1666 oninvalid="this.setCustomValidity('Wpisz wyszukiwanÄ frazÄ')" 1667 oninput="this.setCustomValidity('')" 1668 /> 1669 1670 1671<label class="sr-only text-primary" for="search-category"> 1672 Wybierz kategorię</label> 1673<select class="form-select -ml-3 bg-gray-lighter border-gray-lighter min-w-48 hidden sm:block w-auto " 1674 id="search-category" 1675 name="cat"> 1676 <option value="" selected>Wszystkie kategorie</option> 1677 <option value="3"> 1678 Puzzle </option> 1679 <option value="4"> 1680 Gry </option> 1681 <option value="5"> 1682 Zabawki </option> 1683 <option value="167"> 1684 KsiÄ Å¼ki </option> 1685 </select> 1686 </div> 1687 <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" 1688 aria-label="Szukaj"> 1689 <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> 1690 <span class="hidden lg:inline">Szukaj</span> 1691 </button> 1692</form> 1693 </div> 1694 </div> 1695 1696 <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"> 1697 <!-- Additional Header Elements --> 1698 1699 <!--Customer Icon & Dropdown--> 1700 1701<div 1702 class="relative inline-block" 1703 x-data="{ open: false }" 1704 @keyup.escape="open = false" 1705 @click.outside="open = false" 1706> 1707 <button 1708 type="button" 1709 id="customer-menu" 1710 class="block rounded p-2 outline-offset-2 md:text-inherit" 1711 @click="open = !open" 1712 :aria-expanded="open ? 'true' : 'false'" 1713 title="Moje konto" 1714 aria-label="Moje konto" 1715 aria-haspopup="true" 1716 > 1717 <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> 1718 </button> 1719 <nav 1720 class=" 1721 absolute right-0 z-20 w-40 py-2 mt-2 -mr-4 px-1 overflow-auto origin-top-right rounded-sm 1722 shadow-lg sm:w-48 lg:mt-3 bg-container-lighter text-black 1723 " 1724 x-cloak 1725 x-show="open" 1726 aria-labelledby="customer-menu" 1727 > 1728 <div> 1729 <a id="customer.header.sign.in.link" 1730 class="block px-4 py-2 lg:px-5 lg:py-2 hover:bg-gray-100" 1731 onclick="hyva.setCookie && hyva.setCookie( 1732 'login_redirect', 1733 window.location.href, 1734 1 1735 )" 1736 href="https://www.trefl.com/customer/account/index/" 1737 title="Zaloguj się" 1738 > 1739 Zaloguj siÄ </a> 1740 1741 </div> 1742
1743<script type="text/javascript"> 1744 function onClick () { 1745 showLogin(); 1746 const modal = document.querySelector('.wrap-modal-login'); 1747 modal.classList.add('mfp-move-from-top-appear'); 1748 openMyDialog(); 1749 1750 } 1751</script>
1751 1752 <div> 1753 <a id="customer.header.register.link" 1754 class="block px-4 py-2 lg:px-5 lg:py-2 hover:bg-gray-100" 1755 href="https://www.trefl.com/customer/account/create/" 1756 title="Utwórz konto" 1757 > 1758 Utwórz konto </a> 1759 </div> 1760
1761<script type="text/javascript"> 1762 function onClickRegister () { 1763 createBtn(); 1764 const modal = document.querySelector('.wrap-modal-login'); 1765 modal.classList.add('mfp-move-from-top-appear'); 1766 openMyDialog(); 1767 1768 1769 } 1770</script>
1770 </nav> 1771</div> 1772 1773 <!--Wishlist Icon--> 1774 <a href="https://www.trefl.com/wishlist/" 1775 class="rounded p-2 outline-offset-2 hidden sm:block md:text-inherit" 1776 title="Ulubione" 1777 > 1778 <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> 1779 </a> 1780 1781 <!--Cart Icon--> 1782 <button 1783 id="menu-cart-icon" 1784 class="relative inline-block rounded p-2 outline-offset-2 md:text-inherit" 1785 x-ref="cartButton" 1786 :aria-disabled="isCartEmpty()" 1787 :aria-label="` 1788 Przełącz koszyk w panelu bocznym, 1789 ${isCartEmpty() 1790 ? 'Koszyk jest pusty' 1791 : cart.summary_count > 1 1792 ? hyva.str('%1 elementów', cart.summary_count) 1793 : hyva.str('%1 item', cart.summary_count) 1794 }`" 1795 @click.prevent.stop="() => { 1796 $dispatch('toggle-cart', { isOpen: true }) 1797 }" 1798 @toggle-cart.window="toggleCart($event)" 1799 :aria-expanded="isCartOpen" 1800 aria-haspopup="dialog" 1801 > 1802 <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> 1803 <span 1804 x-text="cart.summary_count" 1805 x-show="!isCartEmpty()" 1806 x-cloak 1807 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" 1808 aria-hidden="true" 1809 ></span> 1810 </button> 1811 </div> 1812 </div> 1813 1814 <!--Main Navigation--> 1815 <input type="checkbox" 1816 id="mobile-menu-switch" 1817 class="hidden" 1818 aria-hidden="true" 1819 @change="$dispatch('toggle-menu-mobile', { isOpen: $el.checked })" 1820 /> 1821 1822
1822<script> 1823 'use strict'; 1824 1825 const initMenuMobile_6ab476688c625 = () => ({ 1826 submenuDataAttrName: 'menu', 1827 submenuActiveClass: 'menu-mobile-submenu-active', 1828 init() { 1829 window.addEventListener('toggle-menu-mobile', (event) => { 1830 const isOpen = event.detail?.isOpen; 1831 1832 if (isOpen) { 1833 this.$nextTick(() => hyva.trapFocus(this.$refs['menu-dialog'])) 1834 // Prevent from body scrolling while mobile menu opened 1835 document.body.classList.add('fixed', 'w-full') 1836 } else { 1837 document.body.classList.remove('fixed', 'w-full') 1838 } 1839 }) 1840 }, 1841 closeMenu() { 1842 const menuSwitch = document.getElementById('mobile-menu-switch') 1843 if (menuSwitch) { 1844 menuSwitch.checked = false 1845 } 1846 }, 1847 openSubmenu(menuRef) { 1848 this.$refs[menuRef]?.classList?.add(this.submenuActiveClass) 1849 }, 1850 closeSubmenu(menuRef) { 1851 this.$refs[menuRef]?.classList?.remove(this.submenuActiveClass) 1852 }, 1853 }) 1854 </script>
1854 1855 <nav 1856 class=" menu-mobile z-20 order-2 text-primary-darker sm:order-1 navigation lg:hidden" 1857 x-data="initMenuMobile_6ab476688c625()" 1858 @keydown.escape="closeMenu()" 1859 aria-label="Menu główne" 1860 role="navigation" 1861 > 1862 <div class="backdrop hidden" 1863 x-transition:enter="ease-in-out duration-500" 1864 x-transition:enter-start="opacity-0" 1865 x-transition:enter-end="opacity-100" 1866 x-transition:leave="ease-in-out duration-500" 1867 x-transition:leave-start="opacity-100" 1868 x-transition:leave-end="opacity-0" 1869 @click="closeMenu()" 1870 x-cloak 1871 style="background: rgba(0, 0, 0, 0.6);" 1872 ></div> 1873 <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" 1874 x-ref="menu-dialog" 1875 role="dialog" 1876 aria-modal="true" 1877 aria-label="Menu główne" 1878 style="max-width:86.5%" 1879 > 1880 <div class="relative h-full"> 1881 <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> 1882</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"> 1883 <path stroke-linecap="round" stroke-linejoin="round" d="M6 18L18 6M6 6l12 12"/> 1884<title>x</title></svg> 1885</label><ul class="level1"><li class="level1"> 1886 <button @click.prevent="closeSubmenu('menu-46')" class="text-black outline-none active:bg-gray-light aspect-square flex size-10 items-center justify-center"> 1887 <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> 1888 </button> 1889<a href="https://www.trefl.com/puzzle" 1890 class="cursor-pointer snowdog-menu-link-topmenu-mobile 1891 is-parent " 1892> 1893 Puzzle</a> 1894 <button @click.prevent="openSubmenu('menu-46')" class="text-black outline-none active:bg-gray-light aspect-square flex size-10 items-center justify-center"> 1895 <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
18950 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> 1896 </button> 1897</li><li class="level1"> 1898<a href="https://www.trefl.com/puzzle/fotopuzzle" 1899 class="cursor-pointer snowdog-menu-link-topmenu-mobile 1900 " 1901> 1902 Fotopuzzle</a> 1903</li><li class="level1"> 1904 <button @click.prevent="closeSubmenu('menu-51')" class="text-black outline-none active:bg-gray-light aspect-square flex size-10 items-center justify-center"> 1905 <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> 1906 </button> 1907<a href="https://www.trefl.com/gry" 1908 class="cursor-pointer snowdog-menu-link-topmenu-mobile 1909 is-parent " 1910> 1911 Gry planszowe</a> 1912 <button @click.prevent="openSubmenu('menu-51')" class="text-black outline-none active:bg-gray-light aspect-square flex size-10 items-center justify-center"> 1913 <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
19130 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> 1914 </button> 1915</li><li class="level1"> 1916 <button @click.prevent="closeSubmenu('menu-54')" class="text-black outline-none active:bg-gray-light aspect-square flex size-10 items-center justify-center"> 1917 <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> 1918 </button> 1919<a href="https://www.trefl.com/zabawki" 1920 class="cursor-pointer snowdog-menu-link-topmenu-mobile 1921 is-parent " 1922> 1923 Zabawki</a> 1924 <button @click.prevent="openSubmenu('menu-54')" class="text-black outline-none active:bg-gray-light aspect-square flex size-10 items-center justify-center"> 1925 <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
19250 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> 1926 </button> 1927</li><li class="level1"> 1928 <button @click.prevent="closeSubmenu('menu-55')" class="text-black outline-none active:bg-gray-light aspect-square flex size-10 items-center justify-center"> 1929 <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> 1930 </button> 1931<a href="https://www.trefl.com/ksiazki" 1932 class="cursor-pointer snowdog-menu-link-topmenu-mobile 1933 is-parent " 1934> 1935 KsiÄ Å¼ki</a> 1936 <button @click.prevent="openSubmenu('menu-55')" class="text-black outline-none active:bg-gray-light aspect-square flex size-10 items-center justify-center"> 1937 <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
19370 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> 1938 </button> 1939</li><li class="level1"> 1940 <button @click.prevent="closeSubmenu('menu-56')" class="text-black outline-none active:bg-gray-light aspect-square flex size-10 items-center justify-center"> 1941 <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> 1942 </button> 1943<a href="https://www.trefl.com/rodzina-treflikow" 1944 class="cursor-pointer snowdog-menu-link-topmenu-mobile 1945 is-parent " 1946> 1947 Rodzina Treflików</a> 1948 <button @click.prevent="openSubmenu('menu-56')" class="text-black outline-none active:bg-gray-light aspect-square flex size-10 items-center justify-center"> 1949 <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
19490 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> 1950 </button> 1951</li><li class="level1"> 1952 <button @click.prevent="closeSubmenu('menu-57')" class="text-black outline-none active:bg-gray-light aspect-square flex size-10 items-center justify-center"> 1953 <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> 1954 </button> 1955<a href="https://www.trefl.com/prezenty" 1956 class="cursor-pointer snowdog-menu-link-topmenu-mobile 1957 is-parent " 1958> 1959 Prezenty</a> 1960 <button @click.prevent="openSubmenu('menu-57')" class="text-black outline-none active:bg-gray-light aspect-square flex size-10 items-center justify-center"> 1961 <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
19610 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> 1962 </button> 1963</li><li class="level1"> 1964<a href="https://www.trefl.com/nowosci" 1965 class="cursor-pointer snowdog-menu-link-topmenu-mobile 1966 " 1967> 1968 NowoÅci</a> 1969</li><li class="level1"> 1970<a href="https://www.trefl.com/puzzle-gry-zabawki-tylko-u-nas" 1971 class="cursor-pointer snowdog-menu-link-topmenu-mobile 1972 " 1973> 1974 Tylko u nas!</a> 1975</li><li class="level1"> 1976 <button @click.prevent="closeSubmenu('menu-58')" class="text-black outline-none active:bg-gray-light aspect-square flex size-10 items-center justify-center"> 1977 <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> 1978 </button> 1979<a href="https://www.trefl.com/promocje" 1980 class="cursor-pointer snowdog-menu-link-topmenu-mobile 1981 is-parent " 1982> 1983 Promocje</a> 1984 <button @click.prevent="openSubmenu('menu-58')" class="text-black outline-none active:bg-gray-light aspect-square flex size-10 items-center justify-center"> 1985 <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
19850 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> 1986 </button> 1987</li><li class="level1"> 1988 <button @click.prevent="closeSubmenu('menu-542')" class="text-black outline-none active:bg-gray-light aspect-square flex size-10 items-center justify-center"> 1989 <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> 1990 </button> 1991<a href="https://www.trefl.com/marki" 1992 class="cursor-pointer snowdog-menu-link-topmenu-mobile 1993 is-parent " 1994> 1995 Marki i licencje</a> 1996 <button @click.prevent="openSubmenu('menu-542')" class="text-black outline-none active:bg-gray-light aspect-square flex size-10 items-center justify-center"> 1997 <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
19970 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> 1998 </button> 1999</li><li class="level1"> 2000 <a class="cursor-pointer snowdog-menu-link-topmenu-mobile " 2001 href="https://www.trefl.com/blog" 2002 data-menu="menu-260" > 2003 Blog </a> 2004</li><li class="level1"> 2005<button class="cursor-pointer snowdog-menu-link-topmenu-mobile 2006 " 2007 @click.prevent="openSubmenu('menu-273')" 2008 > 2009 Gry wirtualne</button> 2010</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" 2011 role="menubar" 2012 aria-orientation="horizontal" 2013> 2014 <li class="relative flex-wrap lg:flex-nowrap header-top-links-menu__item" 2015 x-data="topMenu_575()" 2016 role="menuitem" 2017 @keydown.escape="toggleSubmenu('575', false, $event)" 2018 @pointerenter="toggleSubmenu('575', true, $event)" 2019 @pointerleave="toggleSubmenu('575', false, $event)" 2020 > 2021 <button aria-haspopup="menu" 2022 aria-controls="top-links-5756ab45a3cc8d7b" 2023 id="top-links-575" 2024 class="flex items-center gap-1" 2025 x-ref="button" 2026 @click.prevent.stop="toggleSubmenu('575', null, $event)" 2027 @keydown.space.prevent="toggleSubmenu('575', null, $event)" 2028 @keydown.enter.prevent="toggleSubmenu('575', null, $event)" 2029 aria-label="Otwórz menu Oferta B2B" 2030 :aria-pressed="openSubmenuId === '575'" 2031 :aria-expanded="openSubmenuId === '575'"> 2032 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"> 2033 <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"/> 2034</svg> 2035 </button> 2036 <ul role="menubar" 2037 aria-orientation="vertical" 2038 aria-labelledby="top-links575" 2039 id="top-links5756ab45a3cc8d7b" 2040 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" 2041 :class="openSubmenuId === '575' ? 'z-40' : ''" 2042 x-cloak 2043 > 2044 <li class="header-top-links-menu__item whitespace-nowrap" role="menuitem"> 2045 <a 2046 href="https://b2b.trefl.com/" 2047 data-menu="menu-576" class="__inner-link" > 2048 Platforma zamówieŠhurtowych </a> 2049 2050 </li> 2051 <li class="header-top-links-menu__item whitespace-nowrap" role="menuitem"> 2052 <a 2053 href="https://factory.trefl.com/" 2054 data-menu="menu-577" class="__inner-link" > 2055 Produkty na zlecenie - Trefl Factory </a> 2056 2057 </li> 2058 </ul> 2059 </li> 2060
2060<script> 2061 function topMenu_575() { 2062 return { 2063 openSubmenuId: null, 2064 toggleSubmenu(id, state, event) { 2065 const doNotFocus = event.type === 'pointerenter' || event.type === 'pointerleave'; 2066 2067 if (state === true) { 2068 this.openSubmenuId = id; 2069 } else if (state === false) { 2070 this.openSubmenuId = null; 2071 } else { 2072 this.openSubmenuId = this.openSubmenuId === id ? null : id; 2073 } 2074 2075 if (this.openSubmenuId) { 2076 const submenu = document.getElementById('top-links' + id); 2077 if (submenu && !doNotFocus) { 2078 const firstChild = submenu.querySelector('li a'); 2079 if (firstChild) { 2080 setTimeout(() => { 2081 firstChild.focus({ focusVisible: true }); 2082 }, 0); 2083 } 2084 } 2085 2086 this.$refs.button.setAttribute( 2087 'aria-label', 2088 'Zamknij menu Oferta B2B' 2089 ); 2090 } else { 2091 const button = document.getElementById('top-links-' + id); 2092 if (button && !doNotFocus) { 2093 button.focus({ focusVisible: true }); 2094 } 2095 2096 this.$refs.button.setAttribute( 2097 'aria-label', 2098 'Otwórz menu Oferta B2B' 2099 ); 2100 } 2101 }, 2102 }; 2103 } 2104 </script>
2104 2105 <li class="last:hidden" role="separator" aria-hidden="true"> | </li> 2106 <li class="header-top-links-menu__item" role="menuitem"> 2107<a 2108 href="https://www.trefl.com/grupa-trefl" 2109 class="__link" 2110 data-menu="menu-183"> 2111 Grupa Trefl</a> 2112</li> 2113 <li class="last:hidden" role="separator" aria-hidden="true"> | </li> 2114 <li class="relative flex-wrap lg:flex-nowrap header-top-links-menu__item" 2115 x-data="topMenu_400()" 2116 role="menuitem" 2117 @keydown.escape="toggleSubmenu('400', false, $event)" 2118 @pointerenter="toggleSubmenu('400', true, $event)" 2119 @pointerleave="toggleSubmenu('400', false, $event)" 2120 > 2121 <button aria-haspopup="menu" 2122 aria-controls="top-links-4006ab45a3cc8d7b" 2123 id="top-links-400" 2124 class="flex items-center gap-1" 2125 x-ref="button" 2126 @click.prevent.stop="toggleSubmenu('400', null, $event)" 2127 @keydown.space.prevent="toggleSubmenu('400', null, $event)" 2128 @keydown.enter.prevent="toggleSubmenu('400', null, $event)" 2129 aria-label="Otwórz menu ESG" 2130 :aria-pressed="openSubmenuId === '400'" 2131 :aria-expanded="openSubmenuId === '400'"> 2132 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"> 2133 <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"/> 2134</svg> 2135 </button> 2136 <ul role="menubar" 2137 aria-orientation="vertical" 2138 aria-labelledby="top-links400" 2139 id="top-links4006ab45a3cc8d7b" 2140 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" 2141 :class="openSubmenuId === '400' ? 'z-40' : ''" 2142 x-cloak 2143 > 2144 <li class="header-top-links-menu__item whitespace-nowrap" role="menuitem"> 2145 <a 2146 href="https://www.trefl.com/zrownowazony-rozwoj" 2147 data-menu="menu-401" class="__inner-link" > 2148 Zrównoważony rozwój </a> 2149 2150 </li> 2151 <li class="header-top-links-menu__item whitespace-nowrap" role="menuitem"> 2152 <a 2153 href="https://www.trefl.com/zrownowazony-rozwoj/srodowisko" 2154 data-menu="menu-582" class="__inner-link" > 2155 Årodowisko </a> 2156 2157 </li> 2158 <li class="header-top-links-menu__item whitespace-nowrap" role="menuitem"> 2159 <a 2160 href="https://www.trefl.com/zielona-strona-trefla" 2161 data-menu="menu-402" class="__inner-link" > 2162 Zielona Strona Trefla </a> 2163 2164 </li> 2165 <li class="header-top-links-menu__item whitespace-nowrap" role="menuitem"> 2166 <a 2167 href="https://www.trefl.com/zrownowazony-rozwoj/dokumenty" 2168 data-menu="menu-403" class="__inner-link" > 2169 Dokumenty </a> 2170 2171 </li> 2172 </ul> 2173 </li> 2174
2174<script> 2175 function topMenu_400() { 2176 return { 2177 openSubmenuId: null, 2178 toggleSubmenu(id, state, event) { 2179 const doNotFocus = event.type === 'pointerenter' || event.type === 'pointerleave'; 2180 2181 if (state === true) { 2182 this.openSubmenuId = id; 2183 } else if (state === false) { 2184 this.openSubmenuId = null; 2185 } else { 2186 this.openSubmenuId = this.openSubmenuId === id ? null : id; 2187 } 2188 2189 if (this.openSubmenuId) { 2190 const submenu = document.getElementById('top-links' + id); 2191 if (submenu && !doNotFocus) { 2192 const firstChild = submenu.querySelector('li a'); 2193 if (firstChild) { 2194 setTimeout(() => { 2195 firstChild.focus({ focusVisible: true }); 2196 }, 0); 2197 } 2198 } 2199 2200 this.$refs.button.setAttribute( 2201 'aria-label', 2202 'Zamknij menu ESG' 2203 ); 2204 } else { 2205 const button = document.getElementById('top-links-' + id); 2206 if (button && !doNotFocus) { 2207 button.focus({ focusVisible: true }); 2208 } 2209 2210 this.$refs.button.setAttribute( 2211 'aria-label', 2212 'Otwórz menu ESG' 2213 ); 2214 } 2215 }, 2216 }; 2217 } 2218 </script>
2218 2219 <li class="last:hidden" role="separator" aria-hidden="true"> | </li> 2220 <li class="header-top-links-menu__item" role="menuitem"> 2221<a 2222 href="https://www.trefl.com/kariera" 2223 class="__link" 2224 data-menu="menu-615"> 2225 Kariera</a> 2226</li> 2227 <li class="last:hidden" role="separator" aria-hidden="true"> | </li> 2228 <li class="relative flex-wrap lg:flex-nowrap header-top-links-menu__item" 2229 x-data="topMenu_184()" 2230 role="menuitem" 2231 @keydown.escape="toggleSubmenu('184', false, $event)" 2232 @pointerenter="toggleSubmenu('184', true, $event)" 2233 @pointerleave="toggleSubmenu('184', false, $event)" 2234 > 2235 <button aria-haspopup="menu" 2236 aria-controls="top-links-1846ab45a3cc8d7b" 2237 id="top-links-184" 2238 class="flex items-center gap-1" 2239 x-ref="button" 2240 @click.prevent.stop="toggleSubmenu('184', null, $event)" 2241 @keydown.space.prevent="toggleSubmenu('184', null, $event)" 2242 @keydown.enter.prevent="toggleSubmenu('184', null, $event)" 2243 aria-label="Otwórz menu eGames" 2244 :aria-pressed="openSubmenuId === '184'" 2245 :aria-expanded="openSubmenuId === '184'"> 2246 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"> 2247 <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"/> 2248</svg> 2249 </button> 2250 <ul role="menubar" 2251 aria-orientation="vertical" 2252 aria-labelledby="top-links184" 2253 id="top-links1846ab45a3cc8d7b" 2254 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" 2255 :class="openSubmenuId === '184' ? 'z-40' : ''" 2256 x-cloak 2257 > 2258 <li class="header-top-links-menu__item whitespace-nowrap" role="menuitem"> 2259 <a 2260 href="https://www.roblox.com/pl/games/86253893074445/Treflandia-Wielka-Przygoda-Pomagaj-zwierz-tom" 2261 data-menu="menu-620" class="__inner-link" target="_blank" rel="noopener" > 2262 Treflandia na Roblox </a> 2263 2264 </li> 2265 <li class="header-top-links-menu__item whitespace-nowrap" role="menuitem"> 2266 <a 2267 href="https://www.nintendo.com/us/search/#cat=gme&f=softwarePublisher&softwarePublisher=Trefl%20S.A" 2268 data-menu="menu-621" class="__inner-link" target="_blank" rel="noopener" > 2269 Gry na Nintendo </a> 2270 2271 </li> 2272 <li class="header-top-links-menu__item whitespace-nowrap" role="menuitem"> 2273 <a 2274 href="https://store.steampowered.com/app/2606190/Spy_Guy_Hidden_Objects_Deluxe_Edition/?beta=1" 2275 data-menu="menu-622" class="__inner-link" target="_blank" rel="noopener" > 2276 Gry na PC (Steam) </a> 2277 2278 </li> 2279 <li class="header-top-links-menu__item whitespace-nowrap" role="menuitem"> 2280 <a 2281 href="https://apps.apple.com/pl/developer/trefl-sa/id896381365?l=pl" 2282 data-menu="menu-623" class="__inner-link" target="_blank" rel="noopener" > 2283 Gry mobilne (Apple IOS) </a> 2284 2285 </li> 2286 <li class="header-top-links-menu__item whitespace-nowrap" role="menuitem"> 2287 <a 2288 href="https://play.google.com/store/apps/dev?id=4662821842287727686&hl=pl" 2289 data-menu="menu-624" class="__inner-link" target="_blank" rel="noopener" > 2290 Gry mobilne (Android) </a> 2291 2292 </li> 2293 </ul> 2294 </li> 2295
2295<script> 2296 function topMenu_184() { 2297 return { 2298 openSubmenuId: null, 2299 toggleSubmenu(id, state, event) { 2300 const doNotFocus = event.type === 'pointerenter' || event.type === 'pointerleave'; 2301 2302 if (state === true) { 2303 this.openSubmenuId = id; 2304 } else if (state === false) { 2305 this.openSubmenuId = null; 2306 } else { 2307 this.openSubmenuId = this.openSubmenuId === id ? null : id; 2308 } 2309 2310 if (this.openSubmenuId) { 2311 const submenu = document.getElementById('top-links' + id); 2312 if (submenu && !doNotFocus) { 2313 const firstChild = submenu.querySelector('li a'); 2314 if (firstChild) { 2315 setTimeout(() => { 2316 firstChild.focus({ focusVisible: true }); 2317 }, 0); 2318 } 2319 } 2320 2321 this.$refs.button.setAttribute( 2322 'aria-label', 2323 'Zamknij menu eGames' 2324 ); 2325 } else { 2326 const button = document.getElementById('top-links-' + id); 2327 if (button && !doNotFocus) { 2328 button.focus({ focusVisible: true }); 2329 } 2330 2331 this.$refs.button.setAttribute( 2332 'aria-label', 2333 'Otwórz menu eGames' 2334 ); 2335 } 2336 }, 2337 }; 2338 } 2339 </script>
2339 2340 <li class="last:hidden" role="separator" aria-hidden="true"> | </li> 2341 <li class="header-top-links-menu__item" role="menuitem"> <a 2342 href="/blog" 2343 data-menu="menu-185" class="__link" > 2344 Blog </a> 2345 2346</li> 2347 <li class="last:hidden" role="separator" aria-hidden="true"> | </li> 2348 <li class="header-top-links-menu__item" role="menuitem"> <a 2349 href="/contact" 2350 data-menu="menu-187" class="__link" > 2351 Kontakt </a> 2352 2353</li> 2354 <li class="last:hidden" role="separator" aria-hidden="true"> | </li> 2355 </ul> 2356</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"> 2357<a href="https://www.trefl.com/puzzle" 2358 class="cursor-pointer snowdog-menu-link-topmenu-mobile 2359 menu-mobile-parent-link " 2360> 2361 Puzzle</a> 2362<button type="button" 2363 @click="closeSubmenu('menu-46')" 2364 class="w-10 h-10 flex items-center justify-center" 2365 ><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> 2366</button></div><div class="border-b border-gray parent-heading" data-level="2"> 2367 <button @click.prevent="closeSubmenu('menu-46')" class="text-black outline-none active:bg-gray-light aspect-square flex size-10 items-center justify-center"> 2368 <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> 2369 </button> 2370<a href="https://www.trefl.com/puzzle" 2371 class="cursor-pointer snowdog-menu-link-topmenu-mobile 2372 is-parent " 2373> 2374 Puzzle</a> 2375 <button @click.prevent="openSubmenu('menu-46')" class="text-black outline-none active:bg-gray-light aspect-square flex size-10 items-center justify-center"> 2376 <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
23760 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> 2377 </button> 2378</div><ul class="level2"><li class="level2"> 2379 <button @click.prevent="closeSubmenu('menu-361')" class="text-black outline-none active:bg-gray-light aspect-square flex size-10 items-center justify-center"> 2380 <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> 2381 </button> 2382<a href="https://www.trefl.com/puzzle/dla-dzieci" 2383 class="cursor-pointer snowdog-menu-link-topmenu-mobile 2384 is-parent " 2385> 2386 Puzzle dla dzieci</a> 2387 <button @click.prevent="openSubmenu('menu-361')" class="text-black outline-none active:bg-gray-light aspect-square flex size-10 items-center justify-center"> 2388 <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
23880 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> 2389 </button> 2390</li><li class="level2"> 2391<a href="https://www.trefl.com/puzzle/dla-doroslych" 2392 class="cursor-pointer snowdog-menu-link-topmenu-mobile 2393 " 2394> 2395 Puzzle dla dorosÅych</a> 2396</li><li class="level2"> 2397<a href="https://www.trefl.com/puzzle/akcesoria" 2398 class="cursor-pointer snowdog-menu-link-topmenu-mobile 2399 " 2400> 2401 Akcesoria do puzzli</a> 2402</li><li class="level2"> 2403<a href="https://www.trefl.com/puzzle/500-elementow" 2404 class="cursor-pointer snowdog-menu-link-topmenu-mobile 2405 " 2406> 2407 Puzzle 500 elementów</a> 2408</li><li class="level2"> 2409<a href="https://www.trefl.com/puzzle/1000-elementow" 2410 class="cursor-pointer snowdog-menu-link-topmenu-mobile 2411 " 2412> 2413 Puzzle 1000 elementów</a> 2414</li><li class="level2"> 2415<a href="https://www.trefl.com/puzzle/1500-elementow" 2416 class="cursor-pointer snowdog-menu-link-topmenu-mobile 2417 " 2418> 2419 Puzzle 1500 elementów</a> 2420</li><li class="level2"> 2421<a href="https://www.trefl.com/puzzle/2000-elementow" 2422 class="cursor-pointer snowdog-menu-link-topmenu-mobile 2423 " 2424> 2425 Puzzle 2000 elementów</a> 2426</li><li class="level2"> 2427<a href="https://www.trefl.com/puzzle/3000-elementow" 2428 class="cursor-pointer snowdog-menu-link-topmenu-mobile 2429 " 2430> 2431 Puzzle 3000 elementów</a> 2432</li><li class="level2"> 2433<a href="https://www.trefl.com/puzzle/4000-elementow" 2434 class="cursor-pointer snowdog-menu-link-topmenu-mobile 2435 " 2436> 2437 Puzzle 4000 elementów</a> 2438</li><li class="level2"> 2439<a href="https://www.trefl.com/puzzle/6000-elementow" 2440 class="cursor-pointer snowdog-menu-link-topmenu-mobile 2441 " 2442> 2443 Puzzle 6000 elementów</a> 2444</li><li class="level2"> 2445<a href="https://www.trefl.com/puzzle/8000-elementow" 2446 class="cursor-pointer snowdog-menu-link-topmenu-mobile 2447 " 2448> 2449 Puzzle 8000 elementów</a> 2450</li><li class="level2"> 2451<a href="https://www.trefl.com/puzzle/prime-uft/prime-9000" 2452 class="cursor-pointer snowdog-menu-link-topmenu-mobile 2453 " 2454> 2455 Puzzle 9000 elementów</a> 2456</li><li class="level2"> 2457 <a class="cursor-pointer snowdog-menu-link-topmenu-mobile " 2458 href="https://www.trefl.com/puzzle-premium-plus-quality-10000-el-windows-of-the-seasons-81051" 2459 data-menu="menu-631" > 2460 Puzzle 10 000 elementów </a> 2461</li><li class="level2"> 2462<a href="https://www.trefl.com/puzzle/prime-uft/prime-13500" 2463 class="cursor-pointer snowdog-menu-link-topmenu-mobile 2464 " 2465> 2466 Puzzle 13 500 elementów</a> 2467</li><li class="level2"> 2468 <a class="cursor-pointer snowdog-menu-link-topmenu-mobile " 2469 href="https://www.trefl.com/puzzle-prime-21000-el-earth-chronicles-from-the-creation-to-the-future-81040" 2470 data-menu="menu-266" > 2471 Puzzle 21 000 elementów </a> 2472</li><li class="level2"> 2473<a href="https://www.trefl.com/puzzle/puzzle-premium-plus-quality" 2474 class="cursor-pointer snowdog-menu-link-topmenu-mobile 2475 " 2476> 2477 Puzzle Premium Plus Quality</a> 2478</li><li class="level2"> 2479<a href="https://www.trefl.com/puzzle/drewniane" 2480 class="cursor-pointer snowdog-menu-link-topmenu-mobile 2481 " 2482> 2483 Puzzle drewniane</a> 2484</li><li class="level2"> 2485<a href="https://www.trefl.com/puzzle/puzzle-filmowe" 2486 class="cursor-pointer snowdog-menu-link-topmenu-mobile 2487 " 2488> 2489 Puzzle filmowe</a> 2490</li><li class="level2"> 2491<a href="https://www.trefl.com/puzzle/puzzle-jubileuszowe" 2492 class="cursor-pointer snowdog-menu-link-topmenu-mobile 2493 " 2494> 2495 Puzzle jubileuszowe na 40-lecie</a> 2496</li><li class="level2"> 2497<a href="https://www.trefl.com/puzzle/puzzle-kosmos" 2498 class="cursor-pointer snowdog-menu-link-topmenu-mobile 2499 " 2500> 2501 Puzzle kosmos</a> 2502</li><li class="level2"> 2503<a href="https://www.trefl.com/puzzle/puzzle-krajobrazy" 2504 class="cursor-pointer snowdog-menu-link-topmenu-mobile 2505 " 2506> 2507 Puzzle krajobrazy</a> 2508</li><li class="level2"> 2509<a href="https://www.trefl.com/puzzle/puzzle-kulinarne" 2510 class="cursor-pointer snowdog-menu-link-topmenu-mobile 2511 " 2512> 2513 Puzzle kulinarne</a> 2514</li><li class="level2"> 2515<a href="https://www.trefl.com/puzzle/puzzle-mapy" 2516 class="cursor-pointer snowdog-menu-link-topmenu-mobile 2517 " 2518> 2519 Puzzle mapy</a> 2520</li><li class="level2"> 2521<a href="https://www.trefl.com/puzzle/puzzle-miasta" 2522 class="cursor-pointer snowdog-menu-link-topmenu-mobile 2523 " 2524> 2525 Puzzle miasta</a> 2526</li><li class="level2"> 2527<a href="https://www.trefl.com/puzzle/puzzle-obrazy" 2528 class="cursor-pointer snowdog-menu-link-topmenu-mobile 2529 " 2530> 2531 Puzzle obrazy</a> 2532</li><li class="level2"> 2533<a href="https://www.trefl.com/puzzle/puzzle-panoramiczne" 2534 class="cursor-pointer snowdog-menu-link-topmenu-mobile 2535 " 2536> 2537 Puzzle panoramiczne</a> 2538</li><li class="level2"> 2539<a href="https://www.trefl.com/puzzle/puzzle-samochody" 2540 class="cursor-pointer snowdog-menu-link-topmenu-mobile 2541 " 2542>
2543 Puzzle samochody</a> 2544</li><li class="level2"> 2545<a href="https://www.trefl.com/puzzle/puzzle-swiateczne" 2546 class="cursor-pointer snowdog-menu-link-topmenu-mobile 2547 " 2548> 2549 Puzzle ÅwiÄ teczne</a> 2550</li><li class="level2"> 2551<a href="https://www.trefl.com/puzzle/puzzloramy" 2552 class="cursor-pointer snowdog-menu-link-topmenu-mobile 2553 " 2554> 2555 PuzzloRamy</a> 2556</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"> 2557<a href="https://www.trefl.com/puzzle/dla-dzieci" 2558 class="cursor-pointer snowdog-menu-link-topmenu-mobile 2559 menu-mobile-parent-link " 2560> 2561 Puzzle dla dzieci</a> 2562<button type="button" 2563 @click="closeSubmenu('menu-361')" 2564 class="w-10 h-10 flex items-center justify-center" 2565 ><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> 2566</button></div><div class="border-b border-gray parent-heading" data-level="3"> 2567 <button @click.prevent="closeSubmenu('menu-361')" class="text-black outline-none active:bg-gray-light aspect-square flex size-10 items-center justify-center"> 2568 <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> 2569 </button> 2570<a href="https://www.trefl.com/puzzle/dla-dzieci" 2571 class="cursor-pointer snowdog-menu-link-topmenu-mobile 2572 is-parent " 2573> 2574 Puzzle dla dzieci</a> 2575 <button @click.prevent="openSubmenu('menu-361')" class="text-black outline-none active:bg-gray-light aspect-square flex size-10 items-center justify-center"> 2576 <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
25760 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> 2577 </button> 2578</div><ul class="level3"><li class="level3"> 2579<a href="https://www.trefl.com/puzzle/dla-dzieci/1-3-lata" 2580 class="cursor-pointer snowdog-menu-link-topmenu-mobile 2581 " 2582> 2583 Puzzle dla dzieci 1-3</a> 2584</li><li class="level3"> 2585<a href="https://www.trefl.com/puzzle/dla-dzieci/3-lata" 2586 class="cursor-pointer snowdog-menu-link-topmenu-mobile 2587 " 2588> 2589 Puzzle dla 3 latka</a> 2590</li><li class="level3"> 2591<a href="https://www.trefl.com/puzzle/dla-dzieci/4-lata" 2592 class="cursor-pointer snowdog-menu-link-topmenu-mobile 2593 " 2594> 2595 Puzzle dla 4 latka</a> 2596</li><li class="level3"> 2597<a href="https://www.trefl.com/puzzle/dla-dzieci/4-6-lat" 2598 class="cursor-pointer snowdog-menu-link-topmenu-mobile 2599 " 2600> 2601 Puzzle dla dzieci 4-6</a> 2602</li><li class="level3"> 2603<a href="https://www.trefl.com/puzzle/dla-dzieci/6-8-lat" 2604 class="cursor-pointer snowdog-menu-link-topmenu-mobile 2605 " 2606> 2607 Puzzle dla dzieci 6-8</a> 2608</li><li class="level3"> 2609<a href="https://www.trefl.com/puzzle/dla-dzieci/8-10-lat" 2610 class="cursor-pointer snowdog-menu-link-topmenu-mobile 2611 " 2612> 2613 Puzzle dla dzieci 8-10</a> 2614</li><li class="level3"> 2615<a href="https://www.trefl.com/puzzle/dla-dzieci/auta" 2616 class="cursor-pointer snowdog-menu-link-topmenu-mobile 2617 " 2618> 2619 Puzzle Auta</a> 2620</li><li class="level3"> 2621<a href="https://www.trefl.com/puzzle/dla-dzieci/barbie" 2622 class="cursor-pointer snowdog-menu-link-topmenu-mobile 2623 " 2624> 2625 Puzzle Barbie</a> 2626</li><li class="level3"> 2627<a href="#" 2628 class="cursor-pointer snowdog-menu-link-topmenu-mobile 2629 " 2630> 2631 Puzzle Batman</a> 2632</li><li class="level3"> 2633<a href="https://www.trefl.com/puzzle/dla-dzieci/bing" 2634 class="cursor-pointer snowdog-menu-link-topmenu-mobile 2635 " 2636> 2637 Puzzle Bing</a> 2638</li><li class="level3"> 2639<a href="https://www.trefl.com/puzzle/dla-dzieci/bob-budowniczy" 2640 class="cursor-pointer snowdog-menu-link-topmenu-mobile 2641 " 2642> 2643 Puzzle Bob Budowniczy</a> 2644</li><li class="level3"> 2645<a href="https://www.trefl.com/puzzle/dla-dzieci/enchantimals" 2646 class="cursor-pointer snowdog-menu-link-topmenu-mobile 2647 " 2648> 2649 Puzzle Enchantimals</a> 2650</li><li class="level3"> 2651<a href="#" 2652 class="cursor-pointer snowdog-menu-link-topmenu-mobile 2653 " 2654> 2655 Puzzle Harry Potter</a> 2656</li><li class="level3"> 2657<a href="https://www.trefl.com/puzzle/dla-dzieci/jej-wysokosc-zosia" 2658 class="cursor-pointer snowdog-menu-link-topmenu-mobile 2659 " 2660> 2661 Puzzle Jej WysokoÅÄ Zosia</a> 2662</li><li class="level3"> 2663<a href="https://www.trefl.com/puzzle/dla-dzieci/kicia-kocia" 2664 class="cursor-pointer snowdog-menu-link-topmenu-mobile 2665 " 2666> 2667 Puzzle Kicia Kocia</a> 2668</li><li class="level3"> 2669<a href="https://www.trefl.com/puzzle/dla-dzieci/puzzle-koci-domek-gabi" 2670 class="cursor-pointer snowdog-menu-link-topmenu-mobile 2671 " 2672> 2673 Puzzle Koci Domek Gabi</a> 2674</li><li class="level3"> 2675<a href="https://www.trefl.com/puzzle/dla-dzieci/kraina-lodu" 2676 class="cursor-pointer snowdog-menu-link-topmenu-mobile 2677 " 2678> 2679 Puzzle Kraina Lodu (Frozen)</a> 2680</li><li class="level3"> 2681<a href="https://www.trefl.com/puzzle/dla-dzieci/kubus-puchatek" 2682 class="cursor-pointer snowdog-menu-link-topmenu-mobile 2683 " 2684> 2685 Puzzle KubuÅ Puchatek</a> 2686</li><li class="level3"> 2687<a href="https://www.trefl.com/puzzle/dla-dzieci/minionki" 2688 class="cursor-pointer snowdog-menu-link-topmenu-mobile 2689 " 2690> 2691 Puzzle Minionki</a> 2692</li><li class="level3"> 2693<a href="https://www.trefl.com/puzzle/dla-dzieci/minnie" 2694 class="cursor-pointer snowdog-menu-link-topmenu-mobile 2695 " 2696> 2697 Puzzle Minnie</a> 2698</li><li class="level3"> 2699<a href="https://www.trefl.com/puzzle/dla-dzieci/muminki" 2700 class="cursor-pointer snowdog-menu-link-topmenu-mobile 2701 " 2702> 2703 Puzzle Muminki</a> 2704</li><li class="level3"> 2705<a href="https://www.trefl.com/puzzle/dla-dzieci/my-little-pony" 2706 class="cursor-pointer snowdog-menu-link-topmenu-mobile 2707 " 2708> 2709 Puzzle My Little Pony</a> 2710</li><li class="level3"> 2711<a href="https://www.trefl.com/puzzle/dla-dzieci/myszka-miki" 2712 class="cursor-pointer snowdog-menu-link-topmenu-mobile 2713 " 2714> 2715 Puzzle Myszka Miki</a> 2716</li><li class="level3"> 2717<a href="https://www.trefl.com/puzzle/dla-dzieci/psi-patrol" 2718 class="cursor-pointer snowdog-menu-link-topmenu-mobile 2719 " 2720> 2721 Puzzle Psi Patrol</a> 2722</li><li class="level3"> 2723<a href="https://www.trefl.com/puzzle/dla-dzieci/rodzina-treflikow" 2724 class="cursor-pointer snowdog-menu-link-topmenu-mobile 2725 " 2726> 2727 Puzzle Rodzina Treflików</a> 2728</li><li class="level3"> 2729<a href="#" 2730 class="cursor-pointer snowdog-menu-link-topmenu-mobile 2731 " 2732> 2733 Puzzle Scooby Doo</a> 2734</li><li class="level3"> 2735<a href="https://www.trefl.com/puzzle/dla-dzieci/star-wars" 2736 class="cursor-pointer snowdog-menu-link-topmenu-mobile 2737 " 2738> 2739 Puzzle Star Wars</a> 2740</li><li class="level3"> 2741<a href="https://www.trefl.com/puzzle/dla-dzieci/strazak-sam" 2742 class="cursor-pointer snowdog-menu-link-topmenu-mobile 2743 " 2744> 2745 Puzzle Strażak Sam</a> 2746</li><li class="level3"> 2747<a href="https://www.trefl.com/puzzle/dla-dzieci/swinka-peppa" 2748 class="cursor-pointer snowdog-menu-link-topmenu-mobile 2749 " 2750> 2751 Puzzle Åwinka Peppa</a> 2752</li><li class="level3"> 2753<a href="https://www.trefl.com/puzzle/dla-dzieci/tomek-i-przyjaciele" 2754 class="cursor-pointer snowdog-menu-link-topmenu-mobile 2755 " 2756> 2757 Puzzle Tomek i Przyjaciele</a> 2758</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"> 2759<a href="https://www.trefl.com/gry" 2760 class="cursor-pointer snowdog-menu-link-topmenu-mobile 2761 menu-mobile-parent-link " 2762> 2763 Gry planszowe</a> 2764<button type="button" 2765 @click="closeSubmenu('menu-51')" 2766 class="w-10 h-10 flex items-center justify-center" 2767 ><svg xmlns="http://www.w3.org/2000/svg" width="6" height="10" viewB
2767ox="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> 2768</button></div><div class="border-b border-gray parent-heading" data-level="2"> 2769 <button @click.prevent="closeSubmenu('menu-51')" class="text-black outline-none active:bg-gray-light aspect-square flex size-10 items-center justify-center"> 2770 <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> 2771 </button> 2772<a href="https://www.trefl.com/gry" 2773 class="cursor-pointer snowdog-menu-link-topmenu-mobile 2774 is-parent " 2775> 2776 Gry planszowe</a> 2777 <button @click.prevent="openSubmenu('menu-51')" class="text-black outline-none active:bg-gray-light aspect-square flex size-10 items-center justify-center"> 2778 <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
27780 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> 2779 </button> 2780</div><ul class="level2"><li class="level2"> 2781<a href="https://www.trefl.com/gry/dla-dzieci" 2782 class="cursor-pointer snowdog-menu-link-topmenu-mobile 2783 " 2784> 2785 Gry dla dzieci</a> 2786</li><li class="level2"> 2787<a href="https://www.trefl.com/gry/rodzinne" 2788 class="cursor-pointer snowdog-menu-link-topmenu-mobile 2789 " 2790> 2791 Gry rodzinne</a> 2792</li><li class="level2"> 2793<a href="https://www.trefl.com/gry/towarzyskie" 2794 class="cursor-pointer snowdog-menu-link-topmenu-mobile 2795 " 2796> 2797 Gry towarzyskie</a> 2798</li><li class="level2"> 2799<a href="https://www.trefl.com/gry/edukacyjne" 2800 class="cursor-pointer snowdog-menu-link-topmenu-mobile 2801 " 2802> 2803 Gry edukacyjne</a> 2804</li><li class="level2"> 2805<a href="https://www.trefl.com/gry/dla-grup-przedszkoli" 2806 class="cursor-pointer snowdog-menu-link-topmenu-mobile 2807 " 2808> 2809 Gry dla grup i przedszkoli</a> 2810</li><li class="level2"> 2811<a href="https://www.trefl.com/gry/planszowe-1" 2812 class="cursor-pointer snowdog-menu-link-topmenu-mobile 2813 " 2814> 2815 Gry planszowe</a> 2816</li><li class="level2"> 2817<a href="https://www.trefl.com/gry/karciane" 2818 class="cursor-pointer snowdog-menu-link-topmenu-mobile 2819 " 2820> 2821 Gdy karciane</a> 2822</li><li class="level2"> 2823<a href="https://www.trefl.com/gry/domino-i-memos" 2824 class="cursor-pointer snowdog-menu-link-topmenu-mobile 2825 " 2826> 2827 Domino i Memos</a> 2828</li><li class="level2"> 2829<a href="https://www.trefl.com/gry/dla-3-latka" 2830 class="cursor-pointer snowdog-menu-link-topmenu-mobile 2831 " 2832> 2833 Gry dla 3 latka</a> 2834</li><li class="level2"> 2835<a href="https://www.trefl.com/gry/dla-4-latka" 2836 class="cursor-pointer snowdog-menu-link-topmenu-mobile 2837 " 2838> 2839 Gry dla 4 latka</a> 2840</li><li class="level2"> 2841<a href="https://www.trefl.com/gry/dla-dzieci-4-6-lat" 2842 class="cursor-pointer snowdog-menu-link-topmenu-mobile 2843 " 2844> 2845 Gry dla dzieci 4-6 lat</a> 2846</li><li class="level2"> 2847<a href="https://www.trefl.com/gry/dla-dzieci-6-8-lat" 2848 class="cursor-pointer snowdog-menu-link-topmenu-mobile 2849 " 2850> 2851 Gry dla dzieci 6-8 lat</a> 2852</li><li class="level2"> 2853<a href="https://www.trefl.com/gry/dla-dzieci-8-10-lat" 2854 class="cursor-pointer snowdog-menu-link-topmenu-mobile 2855 " 2856> 2857 Gry dla dzieci 8-10 lat</a> 2858</li><li class="level2"> 2859<a href="https://www.trefl.com/gry/dla-dzieci-12-lat" 2860 class="cursor-pointer snowdog-menu-link-topmenu-mobile 2861 " 2862> 2863 Gry dla dzieci 12+</a> 2864</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"> 2865<a href="https://www.trefl.com/zabawki" 2866 class="cursor-pointer snowdog-menu-link-topmenu-mobile 2867 menu-mobile-parent-link " 2868> 2869 Zabawki</a> 2870<button type="button" 2871 @click="closeSubmenu('menu-54')" 2872 class="w-10 h-10 flex items-center justify-center" 2873 ><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> 2874</button></div><div class="border-b border-gray parent-heading" data-level="2"> 2875 <button @click.prevent="closeSubmenu('menu-54')" class="text-black outline-none active:bg-gray-light aspect-square flex size-10 items-center justify-center"> 2876 <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
28760 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> 2877 </button> 2878<a href="https://www.trefl.com/zabawki" 2879 class="cursor-pointer snowdog-menu-link-topmenu-mobile 2880 is-parent " 2881> 2882 Zabawki</a> 2883 <button @click.prevent="openSubmenu('menu-54')" class="text-black outline-none active:bg-gray-light aspect-square flex size-10 items-center justify-center"> 2884 <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> 2885 </button> 2886</div><ul class="level2"><li class="level2"> 2887<a href="https://www.trefl.com/zabawki/dla-niemowlaka" 2888 class="cursor-pointer snowdog-menu-link-topmenu-mobile 2889 " 2890> 2891 Zabawki dla niemowlaka</a> 2892</li><li class="level2"> 2893<a href="https://www.trefl.com/zabawki/1-3-lata" 2894 class="cursor-pointer snowdog-menu-link-topmenu-mobile 2895 " 2896> 2897 Zabawki dla dzieci 1-3</a> 2898</li><li class="level2"> 2899<a href="https://www.trefl.com/zabawki/3-lata" 2900 class="cursor-pointer snowdog-menu-link-topmenu-mobile 2901 " 2902> 2903 Zabawki dla 3 latka</a> 2904</li><li class="level2"> 2905<a href="https://www.trefl.com/zabawki/4-lata" 2906 class="cursor-pointer snowdog-menu-link-topmenu-mobile 2907 " 2908> 2909 Zabawki dla 4 latka</a> 2910</li><li class="level2"> 2911<a href="https://www.trefl.com/zabawki/4-6-lat" 2912 class="cursor-pointer snowdog-menu-link-topmenu-mobile 2913 " 2914> 2915 Zabawki dla dzieci 4-6 lat</a> 2916</li><li class="level2"> 2917<a href="https://www.trefl.com/zabawki/6-8-lat" 2918 class="cursor-pointer snowdog-menu-link-topmenu-mobile 2919 " 2920> 2921 Zabawki dla dzieci 6-8 lat</a> 2922</li><li class="level2"> 2923<a href="https://www.trefl.com/zabawki/8-10-lat" 2924 class="cursor-pointer snowdog-menu-link-topmenu-mobile 2925 " 2926> 2927 Zabawki dla dzieci 8-10 lat</a> 2928</li><li class="level2"> 2929<a href="https://www.trefl.com/zabawki/do-kapieli" 2930 class="cursor-pointer snowdog-menu-link-topmenu-mobile 2931 " 2932> 2933 Zabawki do kÄ pieli</a> 2934</li><li class="level2"> 2935<a href="https://www.trefl.com/zabawki/drewniane" 2936 class="cursor-pointer snowdog-menu-link-topmenu-mobile 2937 " 2938> 2939 Zabawki drewniane</a> 2940</li><li class="level2"> 2941<a href="https://www.trefl.com/zabawki/interaktywne" 2942 class="cursor-pointer snowdog-menu-link-topmenu-mobile 2943 " 2944> 2945 Zabawki interaktywne</a> 2946</li><li class="level2"> 2947<a href="https://www.trefl.com/zabawki/klocki" 2948 class="cursor-pointer snowdog-menu-link-topmenu-mobile 2949 " 2950> 2951 Klocki</a> 2952</li><li class="level2"> 2953<a href="https://www.trefl.com/zabawki/klocki/klocki-ceramiczne" 2954 class="cursor-pointer snowdog-menu-link-topmenu-mobile 2955 " 2956> 2957 Klocki ceramiczne Brick Trick</a> 2958</li><li class="level2"> 2959<a href="https://www.trefl.com/zabawki/klocki/konstrukcyjne" 2960 class="cursor-pointer snowdog-menu-link-topmenu-mobile 2961 " 2962> 2963 Klocki konstrukcyjne</a> 2964</li><li class="level2"> 2965<a href="https://www.trefl.com/zabawki/magiczne-sztuczki" 2966 class="cursor-pointer snowdog-menu-link-topmenu-mobile 2967 " 2968> 2969 Magiczne sztuczki</a> 2970</li><li class="level2"> 2971<a href="https://www.trefl.com/zabawki/modele" 2972 class="cursor-pointer snowdog-menu-link-topmenu-mobile 2973 " 2974> 2975 Modele aut i pojazdów</a> 2976</li><li class="level2"> 2977<a href="https://www.trefl.com/zabawki/outdoorowe" 2978 class="cursor-pointer snowdog-menu-link-topmenu-mobile 2979 " 2980> 2981 Zabawki outdoorowe</a> 2982</li><li class="level2"> 2983<a href="https://www.trefl.com/zabawki/pilki" 2984 class="cursor-pointer snowdog-menu-link-topmenu-mobile 2985 " 2986> 2987 PiÅki</a> 2988</li><li class="level2"> 2989<a href="https://www.trefl.com/zabawki/kreatywne" 2990 class="cursor-pointer snowdog-menu-link-topmenu-mobile 2991 " 2992> 2993 Zabawki kreatywne</a> 2994</li><li class="level2"> 2995<a href="https://www.trefl.com/zabawki/sensoryczne" 2996 class="cursor-pointer snowdog-menu-link-topmenu-mobile 2997 " 2998> 2999 Zabawki sensoryczne</a> 3000</li><li class="level2"> 3001<a href="https://www.trefl.com/zabawki/hape" 3002 class="cursor-pointer snowdog-menu-link-topmenu-mobile 3003 " 3004> 3005 Zabawki Hape</a> 3006</li><li class="level2"> 3007<a href="https://www.trefl.com/zabawki/zestawy-naukowe" 3008 class="cursor-pointer snowdog-menu-link-topmenu-mobile 3009 " 3010> 3011 Zabawki naukowe</a> 3012</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"> 3013<a href="https://www.trefl.com/ksiazki" 3014 class="cursor-pointer snowdog-menu-link-topmenu-mobile 3015 menu-mobile-parent-link " 3016> 3017 KsiÄ Å¼ki</a> 3018<button type="button" 3019 @click="closeSubmenu('menu-55')" 3020 class="w-10 h-10 flex items-center justify-center" 3021 ><svg xmlns="http://www.w3.org/2000/svg" width="6" height="10" viewB
3021ox="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> 3022</button></div><div class="border-b border-gray parent-heading" data-level="2"> 3023 <button @click.prevent="closeSubmenu('menu-55')" class="text-black outline-none active:bg-gray-light aspect-square flex size-10 items-center justify-center"> 3024 <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> 3025 </button> 3026<a href="https://www.trefl.com/ksiazki" 3027 class="cursor-pointer snowdog-menu-link-topmenu-mobile 3028 is-parent " 3029> 3030 KsiÄ Å¼ki</a> 3031 <button @click.prevent="openSubmenu('menu-55')" class="text-black outline-none active:bg-gray-light aspect-square flex size-10 items-center justify-center"> 3032 <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
30320 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> 3033 </button> 3034</div><ul class="level2"><li class="level2"> 3035<a href="https://www.trefl.com/ksiazki/dla-dzieci/dla-dzieci-1-2-lata" 3036 class="cursor-pointer snowdog-menu-link-topmenu-mobile 3037 " 3038> 3039 KsiÄ Å¼ki dla dzieci 1-2 lata</a> 3040</li><li class="level2"> 3041<a href="https://www.trefl.com/ksiazki/dla-dzieci/dla-dzieci-3-5-lat" 3042 class="cursor-pointer snowdog-menu-link-topmenu-mobile 3043 " 3044> 3045 KsiÄ Å¼ki dla dzieci 3-5 lat</a> 3046</li><li class="level2"> 3047<a href="https://www.trefl.com/ksiazki/dla-dzieci/dla-dzieci-6-8-lat" 3048 class="cursor-pointer snowdog-menu-link-topmenu-mobile 3049 " 3050> 3051 KsiÄ Å¼ki dla dzieci 6-8 lat</a> 3052</li><li class="level2"> 3053<a href="https://www.trefl.com/ksiazki/dla-dzieci/dla-dzieci-9-12-lat" 3054 class="cursor-pointer snowdog-menu-link-topmenu-mobile 3055 " 3056> 3057 KsiÄ Å¼ki dla dzieci 9-12 lat</a> 3058</li><li class="level2"> 3059<a href="https://www.trefl.com/ksiazki/ksiazki-dla-rodzicow" 3060 class="cursor-pointer snowdog-menu-link-topmenu-mobile 3061 " 3062> 3063 KsiÄ Å¼ki dla rodziców</a> 3064</li><li class="level2"> 3065<a href="https://www.trefl.com/ksiazki/kolorowanki" 3066 class="cursor-pointer snowdog-menu-link-topmenu-mobile 3067 " 3068> 3069 Kolorowanki</a> 3070</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"> 3071<a href="https://www.trefl.com/rodzina-treflikow" 3072 class="cursor-pointer snowdog-menu-link-topmenu-mobile 3073 menu-mobile-parent-link " 3074> 3075 Rodzina Treflików</a> 3076<button type="button" 3077 @click="closeSubmenu('menu-56')" 3078 class="w-10 h-10 flex items-center justify-center" 3079 ><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> 3080</button></div><div class="border-b border-gray parent-heading" data-level="2"> 3081 <button @click.prevent="closeSubmenu('menu-56')" class="text-black outline-none active:bg-gray-light aspect-square flex size-10 items-center justify-center"> 3082 <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> 3083 </button> 3084<a href="https://www.trefl.com/rodzina-treflikow" 3085 class="cursor-pointer snowdog-menu-link-topmenu-mobile 3086 is-parent " 3087> 3088 Rodzina Treflików</a> 3089 <button @click.prevent="openSubmenu('menu-56')" class="text-black outline-none active:bg-gray-light aspect-square flex size-10 items-center justify-center"> 3090 <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
30900 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> 3091 </button> 3092</div><ul class="level2"><li class="level2"> 3093<a href="https://www.trefl.com/rodzina-treflikow/puzzle" 3094 class="cursor-pointer snowdog-menu-link-topmenu-mobile 3095 " 3096> 3097 Puzzle Rodzina Treflików</a> 3098</li><li class="level2"> 3099<a href="https://www.trefl.com/rodzina-treflikow/gry" 3100 class="cursor-pointer snowdog-menu-link-topmenu-mobile 3101 " 3102> 3103 Gry Rodzina Treflików</a> 3104</li><li class="level2"> 3105<a href="https://www.trefl.com/rodzina-treflikow/zabawki" 3106 class="cursor-pointer snowdog-menu-link-topmenu-mobile 3107 " 3108> 3109 Zabawki Rodzina Treflików</a> 3110</li><li class="level2"> 3111<a href="https://www.trefl.com/rodzina-treflikow/ksiazki" 3112 class="cursor-pointer snowdog-menu-link-topmenu-mobile 3113 " 3114> 3115 KsiÄ Å¼ki Rodzina Treflików</a> 3116</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"> 3117<a href="https://www.trefl.com/prezenty" 3118 class="cursor-pointer snowdog-menu-link-topmenu-mobile 3119 menu-mobile-parent-link " 3120> 3121 Prezenty</a> 3122<button type="button" 3123 @click="closeSubmenu('menu-57')" 3124 class="w-10 h-10 flex items-center justify-center" 3125 ><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> 3126</button></div><div class="border-b border-gray parent-heading" data-level="2"> 3127 <button @click.prevent="closeSubmenu('menu-57')" class="text-black outline-none active:bg-gray-light aspect-square flex size-10 items-center justify-center"> 3128 <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> 3129 </button> 3130<a href="https://www.trefl.com/prezenty" 3131 class="cursor-pointer snowdog-menu-link-topmenu-mobile 3132 is-parent " 3133> 3134 Prezenty</a> 3135 <button @click.prevent="openSubmenu('menu-57')" class="text-black outline-none active:bg-gray-light aspect-square flex size-10 items-center justify-center"> 3136 <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
31360 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> 3137 </button> 3138</div><ul class="level2"><li class="level2"> 3139 <button @click.prevent="closeSubmenu('menu-483')" class="text-black outline-none active:bg-gray-light aspect-square flex size-10 items-center justify-center"> 3140 <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> 3141 </button> 3142<a href="https://www.trefl.com/prezenty/dla-dzieci" 3143 class="cursor-pointer snowdog-menu-link-topmenu-mobile 3144 is-parent " 3145> 3146 Prezenty dla dzieci</a> 3147 <button @click.prevent="openSubmenu('menu-483')" class="text-black outline-none active:bg-gray-light aspect-square flex size-10 items-center justify-center"> 3148 <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
31480 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> 3149 </button> 3150</li><li class="level2"> 3151<a href="https://www.trefl.com/prezenty/swiateczne" 3152 class="cursor-pointer snowdog-menu-link-topmenu-mobile 3153 " 3154> 3155 Prezenty ÅwiÄ teczne</a> 3156</li><li class="level2"> 3157<a href="https://www.trefl.com/prezenty/urodzinowe" 3158 class="cursor-pointer snowdog-menu-link-topmenu-mobile 3159 " 3160> 3161 Prezenty urodzinowe</a> 3162</li><li class="level2"> 3163<a href="https://www.trefl.com/prezenty/rodzinne" 3164 class="cursor-pointer snowdog-menu-link-topmenu-mobile 3165 " 3166> 3167 Prezenty rodzinne</a> 3168</li><li class="level2"> 3169<a href="https://www.trefl.com/prezenty/wielkanocne-i-wiosenne" 3170 class="cursor-pointer snowdog-menu-link-topmenu-mobile 3171 " 3172> 3173 Prezenty wielkanocne i wiosenne</a> 3174</li><li class="level2"> 3175<a href="https://www.trefl.com/prezenty/gry-planszowe-na-prezent" 3176 class="cursor-pointer snowdog-menu-link-topmenu-mobile 3177 " 3178> 3179 Gry planszowe na prezent</a> 3180</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"> 3181<a href="https://www.trefl.com/prezenty/dla-dzieci" 3182 class="cursor-pointer snowdog-menu-link-topmenu-mobile 3183 menu-mobile-parent-link " 3184> 3185 Prezenty dla dzieci</a> 3186<button type="button" 3187 @click="closeSubmenu('menu-483')" 3188 class="w-10 h-10 flex items-center justify-center" 3189 ><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> 3190</button></div><div class="border-b border-gray parent-heading" data-level="3"> 3191 <button @click.prevent="closeSubmenu('menu-483')" class="text-black outline-none active:bg-gray-light aspect-square flex size-10 items-center justify-center"> 3192 <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> 3193 </button> 3194<a href="https://www.trefl.com/prezenty/dla-dzieci" 3195 class="cursor-pointer snowdog-menu-link-topmenu-mobile 3196 is-parent " 3197> 3198 Prezenty dla dzieci</a> 3199 <button @click.prevent="openSubmenu('menu-483')" class="text-black outline-none active:bg-gray-light aspect-square flex size-10 items-center justify-center"> 3200 <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
32000 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> 3201 </button> 3202</div><ul class="level3"><li class="level3"> 3203<a href="https://www.trefl.com/prezenty/dla-dzieci/0-2-lata" 3204 class="cursor-pointer snowdog-menu-link-topmenu-mobile 3205 " 3206> 3207 Prezenty dla dzieci 0-2 lata</a> 3208</li><li class="level3"> 3209<a href="https://www.trefl.com/prezenty/dla-dzieci/3-5-lat" 3210 class="cursor-pointer snowdog-menu-link-topmenu-mobile 3211 " 3212> 3213 Prezenty dla dzieci 3-5 lat</a> 3214</li><li class="level3"> 3215<a href="https://www.trefl.com/prezenty/dla-dzieci/6-8-lat" 3216 class="cursor-pointer snowdog-menu-link-topmenu-mobile 3217 " 3218> 3219 Prezenty dla dzieci 6-8 lat</a> 3220</li><li class="level3"> 3221<a href="https://www.trefl.com/prezenty/dla-dzieci/9-12-lat" 3222 class="cursor-pointer snowdog-menu-link-topmenu-mobile 3223 " 3224> 3225 Prezenty dla dzieci 9-12 lat</a> 3226</li><li class="level3"> 3227<a href="https://www.trefl.com/prezenty/dla-dzieci/13-lat-i-dorosli" 3228 class="cursor-pointer snowdog-menu-link-topmenu-mobile 3229 " 3230> 3231 Prezenty dla dzieci 13+ i dorosÅych</a> 3232</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"> 3233<a href="https://www.trefl.com/promocje" 3234 class="cursor-pointer snowdog-menu-link-topmenu-mobile 3235 menu-mobile-parent-link " 3236> 3237 Promocje</a> 3238<button type="button" 3239 @click="closeSubmenu('menu-58')" 3240 class="w-10 h-10 flex items-center justify-center" 3241 ><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> 3242</button></div><div class="border-b border-gray parent-heading" data-level="2"> 3243 <button @click.prevent="closeSubmenu('menu-58')" class="text-black outline-none active:bg-gray-light aspect-square flex size-10 items-center justify-center"> 3244 <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> 3245 </button> 3246<a href="https://www.trefl.com/promocje" 3247 class="cursor-pointer snowdog-menu-link-topmenu-mobile 3248 is-parent " 3249> 3250 Promocje</a> 3251 <button @click.prevent="openSubmenu('menu-58')" class="text-black outline-none active:bg-gray-light aspect-square flex size-10 items-center justify-center"> 3252 <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
32520 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> 3253 </button> 3254</div><ul class="level2"><li class="level2"> 3255<a href="https://www.trefl.com/promocje/puzzle" 3256 class="cursor-pointer snowdog-menu-link-topmenu-mobile 3257 " 3258> 3259 Puzzle w promocji</a> 3260</li><li class="level2"> 3261<a href="https://www.trefl.com/promocje/gry" 3262 class="cursor-pointer snowdog-menu-link-topmenu-mobile 3263 " 3264> 3265 Gry w promocji</a> 3266</li><li class="level2"> 3267<a href="https://www.trefl.com/promocje/zabawki" 3268 class="cursor-pointer snowdog-menu-link-topmenu-mobile 3269 " 3270> 3271 Zabawki w promocji</a> 3272</li><li class="level2"> 3273<a href="https://www.trefl.com/promocje/ksiazki" 3274 class="cursor-pointer snowdog-menu-link-topmenu-mobile 3275 " 3276> 3277 KsiÄ Å¼ki w promocji</a> 3278</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"> 3279<a href="https://www.trefl.com/marki" 3280 class="cursor-pointer snowdog-menu-link-topmenu-mobile 3281 menu-mobile-parent-link " 3282> 3283 Marki i licencje</a> 3284<button type="button" 3285 @click="closeSubmenu('menu-542')" 3286 class="w-10 h-10 flex items-center justify-center" 3287 ><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> 3288</button></div><div class="border-b border-gray parent-heading" data-level="2"> 3289 <button @click.prevent="closeSubmenu('menu-542')" class="text-black outline-none active:bg-gray-light aspect-square flex size-10 items-center justify-center"> 3290 <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> 3291 </button> 3292<a href="https://www.trefl.com/marki" 3293 class="cursor-pointer snowdog-menu-link-topmenu-mobile 3294 is-parent " 3295> 3296 Marki i licencje</a> 3297 <button @click.prevent="openSubmenu('menu-542')" class="text-black outline-none active:bg-gray-light aspect-square flex size-10 items-center justify-center"> 3298 <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
32980 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> 3299 </button> 3300</div><ul class="level2"><li class="level2"> 3301<a href="https://www.trefl.com/marki/avengers" 3302 class="cursor-pointer snowdog-menu-link-topmenu-mobile 3303 " 3304> 3305 Avengers</a> 3306</li><li class="level2"> 3307<a href="https://www.trefl.com/marki/barbie" 3308 class="cursor-pointer snowdog-menu-link-topmenu-mobile 3309 " 3310> 3311 Barbie</a> 3312</li><li class="level2"> 3313<a href="https://www.trefl.com/marki/cars" 3314 class="cursor-pointer snowdog-menu-link-topmenu-mobile 3315 " 3316> 3317 Cars</a> 3318</li><li class="level2"> 3319<a href="https://www.trefl.com/marki/disney" 3320 class="cursor-pointer snowdog-menu-link-topmenu-mobile 3321 " 3322> 3323 Disney</a> 3324</li><li class="level2"> 3325<a href="https://www.trefl.com/marki/garfield" 3326 class="cursor-pointer snowdog-menu-link-topmenu-mobile 3327 " 3328> 3329 Garfield</a> 3330</li><li class="level2"> 3331<a href="https://www.trefl.com/marki/harry-potter" 3332 class="cursor-pointer snowdog-menu-link-topmenu-mobile 3333 " 3334> 3335 Harry Potter</a> 3336</li><li class="level2"> 3337<a href="https://www.trefl.com/marki/hello-kitty" 3338 class="cursor-pointer snowdog-menu-link-topmenu-mobile 3339 " 3340> 3341 Hello Kitty</a> 3342</li><li class="level2"> 3343<a href="https://www.trefl.com/marki/koci-domek-gabi" 3344 class="cursor-pointer snowdog-menu-link-topmenu-mobile 3345 " 3346> 3347 Koci Domek Gabi</a> 3348</li><li class="level2"> 3349<a href="https://www.trefl.com/marki/koci-domek-gabi" 3350 class="cursor-pointer snowdog-menu-link-topmenu-mobile 3351 " 3352> 3353 Kraina Lodu (Frozen)</a> 3354</li><li class="level2"> 3355<a href="https://www.trefl.com/marki/lilo-stitch" 3356 class="cursor-pointer snowdog-menu-link-topmenu-mobile 3357 " 3358> 3359 Lilo & Stitch</a> 3360</li><li class="level2"> 3361<a href="https://www.trefl.com/marki/minionki" 3362 class="cursor-pointer snowdog-menu-link-topmenu-mobile 3363 " 3364> 3365 Minionki</a> 3366</li><li class="level2"> 3367<a href="https://www.trefl.com/marki/myszka-mickey" 3368 class="cursor-pointer snowdog-menu-link-topmenu-mobile 3369 " 3370> 3371 Myszka Mickey</a> 3372</li><li class="level2"> 3373<a href="https://www.trefl.com/marki/psi-patrol" 3374 class="cursor-pointer snowdog-menu-link-topmenu-mobile 3375 " 3376> 3377 Psi Patrol</a> 3378</li><li class="level2"> 3379<a href="https://www.trefl.com/marki/pusheen" 3380 class="cursor-pointer snowdog-menu-link-topmenu-mobile 3381 " 3382> 3383 Pusheen</a> 3384</li><li class="level2"> 3385<a href="https://www.trefl.com/marki/rick-i-morty" 3386 class="cursor-pointer snowdog-menu-link-topmenu-mobile 3387 " 3388> 3389 Rick i Morty</a> 3390</li><li class="level2"> 3391<a href="https://www.trefl.com/marki/smerfy" 3392 class="cursor-pointer snowdog-menu-link-topmenu-mobile 3393 " 3394> 3395 Smerfy</a> 3396</li><li class="level2"> 3397<a href="https://www.trefl.com/marki/diplodok" 3398 class="cursor-pointer snowdog-menu-link-topmenu-mobile 3399 " 3400> 3401 Smok Diplodok</a> 3402</li><li class="level2"> 3403<a href="https://www.trefl.com/marki/spidey" 3404 class="cursor-pointer snowdog-menu-link-topmenu-mobile 3405 " 3406> 3407 Spidey</a> 3408</li><li class="level2"> 3409<a href="https://www.trefl.com/marki/spongebob-kanciastoporty" 3410 class="cursor-pointer snowdog-menu-link-topmenu-mobile 3411 " 3412> 3413 SpongeBob Kanciastoporty</a> 3414</li><li class="level2"> 3415<a href="https://www.trefl.com/marki/star-wars" 3416 class="cursor-pointer snowdog-menu-link-topmenu-mobile 3417 " 3418> 3419 Star Wars</a> 3420</li><li class="level2"> 3421<a href="https://www.trefl.com/marki/strazak-sam" 3422 class="cursor-pointer snowdog-menu-link-topmenu-mobile 3423 " 3424> 3425 Strażak Sam</a> 3426</li><li class="level2"> 3427<a href="https://www.trefl.com/marki/swinka-peppa" 3428 class="cursor-pointer snowdog-menu-link-topmenu-mobile 3429 " 3430> 3431 Åwinka Peppa</a> 3432</li><li class="level2"> 3433<a href="https://www.trefl.com/marki/tomek-i-przyjaciele" 3434 class="cursor-pointer snowdog-menu-link-topmenu-mobile 3435 " 3436> 3437 Tomek i Przyjaciele</a> 3438</li><li class="level2"> 3439<a href="https://www.trefl.com/marki/w-glowie-sie-nie-miesci-2" 3440 class="cursor-pointer snowdog-menu-link-topmenu-mobile 3441 " 3442> 3443 W gÅowie siÄ nie mieÅci</a> 3444</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"> 3445<button class="cursor-pointer snowdog-menu-link-topmenu-mobile 3446 menu-mobile-parent-link " 3447 @click.prevent="openSubmenu('menu-273')" 3448 > 3449 Gry wirtualne</button> 3450<button type="button" 3451 @click="closeSubmenu('menu-273')" 3452 class="w-10 h-10 flex items-center justify-center" 3453 ><svg xmlns="http://www.w3.org/2000/svg" width="6" height="10" viewB
3453ox="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> 3454</button></div><div class="border-b border-gray parent-heading" data-level="2"> 3455<button class="cursor-pointer snowdog-menu-link-topmenu-mobile 3456 " 3457 @click.prevent="openSubmenu('menu-273')" 3458 > 3459 Gry wirtualne</button> 3460</div><ul class="level2"><li class="level2"> 3461 <a class="cursor-pointer snowdog-menu-link-topmenu-mobile " 3462 href="https://www.roblox.com/pl/games/86253893074445/Treflandia-Wielka-Przygoda-Pomagaj-zwierz-tom" 3463 target="_blank" 3464 rel="noopener" 3465 data-menu="menu-274" > 3466 Treflandia na Roblox </a> 3467</li><li class="level2"> 3468 <a class="cursor-pointer snowdog-menu-link-topmenu-mobile " 3469 href="https://www.nintendo.com/us/search/#cat=gme&f=softwarePublisher&softwarePublisher=Trefl%20S.A" 3470 target="_blank" 3471 rel="noopener" 3472 data-menu="menu-275" > 3473 Gry na Nintendo </a> 3474</li><li class="level2"> 3475 <a class="cursor-pointer snowdog-menu-link-topmenu-mobile " 3476 href="https://store.steampowered.com/app/2606190/Spy_Guy_Hidden_Objects_Deluxe_Edition/?beta=1" 3477 target="_blank" 3478 rel="noopener" 3479 data-menu="menu-276" > 3480 Gry na PC (Steam) </a> 3481</li><li class="level2"> 3482 <a class="cursor-pointer snowdog-menu-link-topmenu-mobile " 3483 href="https://apps.apple.com/pl/developer/trefl-sa/id896381365?l=pl" 3484 target="_blank" 3485 rel="noopener" 3486 data-menu="menu-277" > 3487 Gry mobilne (Apple) </a> 3488</li><li class="level2"> 3489 <a class="cursor-pointer snowdog-menu-link-topmenu-mobile " 3490 href="https://play.google.com/store/apps/dev?id=4662821842287727686&hl=pl" 3491 target="_blank" 3492 rel="noopener" 3493 data-menu="menu-278" > 3494 Gry mobilne (Android) </a> 3495</li></ul></div> </div> 3496 </div> 3497 </nav> 3498
3499 <!--Cart Drawer--> 3500
3500<script> 3501 function initCartDrawer() { 3502 return { 3503 open: false, 3504 isLoading: false, 3505 cart: {}, 3506 maxItemsToDisplay: 10, 3507 itemsCount: 0, 3508 getData(data) { 3509 if (data.cart) { 3510 this.cart = data.cart; 3511 this.itemsCount = data.cart.items && data.cart.items.length || 0; 3512 this.setCartItems(); 3513 } 3514 this.isLoading = false; 3515 }, 3516 cartItems: [], 3517 getItemCountTitle() { 3518 return hyva.strf('\u00250\u0020of\u0020\u00251\u0020products\u0020in\u0020cart\u0020displayed', this.maxItemsToDisplay, this.itemsCount) 3519 }, 3520 setCartItems() { 3521 this.cartItems = this.cart.items && this.cart.items.sort((a, b) => b.item_id - a.item_id) || []; 3522 3523 if (this.maxItemsToDisplay > 0) { 3524 this.cartItems = this.cartItems.slice(0, parseInt(this.maxItemsToDisplay, 10)); 3525 } 3526 }, 3527 formatOptionValue(value) { 3528 if (!Array.isArray(value)) { 3529 return value; 3530 } 3531 return value 3532 .map(line => line.replace('<span class="price"', '- <span class="price"')) 3533 .join('<br>'); 3534 }, 3535 deleteItemFromCart(itemId) { 3536 this.isLoading = true; 3537 3538 const formKey = hyva.getFormKey(); 3539 const postUrl = BASE_URL + 'checkout/sidebar/removeItem/'; 3540 3541 fetch(postUrl, { 3542 "headers": { 3543 "content-type": "application/x-www-form-urlencoded; charset=UTF-8", 3544 }, 3545 "body": "form_key=" + formKey + "&item_id=" + itemId, 3546 "method": "POST", 3547 "mode": "cors", 3548 "credentials": "include" 3549 }).then(response => { 3550 if (response.redirected) { 3551 window.location.href = response.url; 3552 } else if (response.ok) { 3553 return response.json(); 3554 } else { 3555 window.dispatchMessages && window.dispatchMessages([{ 3556 type: 'warning', 3557 text: 'Could\u0020not\u0020remove\u0020item\u0020from\u0020quote.' 3558 }]); 3559 this.isLoading = false; 3560 } 3561 }).then(result => { 3562 window.dispatchMessages && window.dispatchMessages([{ 3563 type: result.success ? 'success' : 'error', 3564 text: result.success 3565 ? 'Usuni\u0119to\u0020element.' 3566 : result.error_message 3567 }], result.success ? 5000 : 0) 3568 window.dispatchEvent(new CustomEvent('reload-customer-section-data')); 3569 }); 3570 }, 3571 scrollLock(use = true) { 3572 document.body.style.overflow = use ? "hidden" : ""; 3573 }, 3574 toggleCartDrawer(event) { 3575 if (event.detail && event.detail.isOpen !== undefined) { 3576 if (event.detail.isOpen) { 3577 this.openCartDrawer(); 3578 } else { 3579 this.open = false; 3580 this.scrollLock(false); 3581 this.$refs && this.$refs.cartDialogContent && hyva.releaseFocus(this.$refs.cartDialogContent); 3582 } 3583 } else { 3584 this.openCartDrawer() 3585 } 3586 }, 3587 openCartDrawer() { 3588 this.open = true; 3589 this.scrollLock(true); 3590 this.$nextTick(() => { 3591 this.$refs && this.$refs.cartDialogContent && hyva.trapFocus(this.$refs.cartDialogContent) 3592 }) 3593 }, 3594 closeCartDrawer() { 3595 this.$dispatch('toggle-cart', { isOpen: false }) 3596 }, 3597 getSectionDataExtraActions() { 3598 if (!this.cart.extra_actions) { 3599 return ''; 3600 } 3601 3602 const contentNode = document.createElement('div'); 3603 contentNode.innerHTML = this.cart.extra_actions; 3604 3605 hyva.activateScripts(contentNode); 3606 3607 return contentNode.innerHTML; 3608 } 3609 } 3610 } 3611</script>
3611 3612<section x-cloak 3613 x-show="cart" 3614 id="cart-drawer" 3615 x-data="initCartDrawer()" 3616 @private-content-loaded.window="getData($event.detail.data)" 3617 @toggle-cart.window="toggleCartDrawer($event)" 3618 @keydown.escape="closeCartDrawer" 3619> 3620 <div role="dialog" 3621 aria-labelledby="cart-drawer-title" 3622 aria-modal="true" 3623 :aria-hidden="!open" 3624 class="fixed inset-y-0 right-0 z-30 flex max-w-full"> 3625 <div class="backdrop" 3626 x-show="open" 3627 x-transition:enter="ease-in-out duration-500" 3628 x-transition:enter-start="opacity-0" 3629 x-transition:enter-end="opacity-100" 3630 x-transition:leave="ease-in-out duration-500" 3631 x-transition:leave-start="opacity-100" 3632 x-transition:leave-end="opacity-0" 3633 role="button" 3634 @click="closeCartDrawer" 3635 aria-label="Zamknij koszyk"></div> 3636 <div class="relative w-screen max-w-md shadow-2xl" 3637 x-show="open" 3638 x-transition:enter="transform transition ease-in-out duration-500 sm:duration-700" 3639 x-transition:enter-start="translate-x-full" 3640 x-transition:enter-end="translate-x-0" 3641 x-transition:leave="transform transition ease-in-out duration-500 sm:duration-700" 3642 x-transition:leave-start="translate-x-0" 3643 x-transition:leave-end="translate-x-full" 3644 x-ref="cartDialogContent" 3645 role="region" 3646 :tabindex="open ? 0 : -1" 3647 aria-label="Mój koszyk" 3648 3649 > 3650 <div class="flex flex-col h-full max-h-screen bg-white shadow-xl"> 3651 3652 <header class="relative px-4 py-6 sm:px-6"> 3653 <p id="cart-drawer-title" class="text-lg font-medium leading-7 text-gray-900"> 3654 <strong>Mój koszyk</strong> 3655 <span class="items-total text-xs" 3656 x-show="maxItemsToDisplay && maxItemsToDisplay < itemsCount" 3657 x-text="getItemCountTitle()"> 3658 </span> 3659 </p> 3660 </header> 3661 3662 3663 <template x-if="!itemsCount"> 3664 <div class="relative px-4 py-6 bg-white border-bs sm:px-6 border-container"> 3665 Koszyk jest pusty </div> 3666 </template> 3667 3668 <template x-if="itemsCount"> 3669 <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"> 3670 <template x-for="item in cartItems"> 3671 <div class="product-item flex items-start p-3 space-x-4"> 3672 <a :href="item.product_url" 3673 class="w-1/4" 3674 :aria-label="hyva.strf('Product\u0020\u0022\u00250\u0022', item.product_name)" 3675 > 3676 <img 3677 :src="item.product_image.src" 3678 :width="item.product_image.width" 3679 :height="item.product_image.height" 3680 loading="lazy" 3681 alt="" 3682 /> 3683 </a> 3684 <div class="w-3/4 space-y-2"> 3685 <div> 3686 <p class="text-xl"> 3687 <span x-html="item.qty"></span> x <span x-html="item.product_name"></span> 3688 </p> 3689 </div> 3690 <template x-for="option in item.options"> 3691 <template x-if="option.label !== 'clientDesignId'"> 3692 <div class="text-sm"> 3693 <p class="font-semibold" x-text="option.label + ':'"></p> 3694 <p class="text-secondary" x-html="formatOptionValue(option.value)"></p> 3695 </div> 3696 </template> 3697 </template> 3698 <div class="price-container"> 3699 <template x-if="item.is_discount"> 3700 <div class="price-box price-final_price">
3701 <span class="old-price price" x-html="item.original_price"></span> 3702 <span class="special-price price" x-html="item.price_incl_discount"></span> 3703 </div> 3704 </template> 3705 <template x-if="!item.is_discount"> 3706 <span class="price" x-html="item.product_price"></span> 3707 </template> 3708 </div> 3709 <div> 3710 <a :href="item.configure_url" 3711 x-show="item.product_type !== 'grouped' && item.is_visible_in_site_visibility && item?.options?.some(option => option.label !== 'clientDesignId')" 3712 class="inline-flex p-2 mr-2 btn btn-secondary" 3713 :aria-label="hyva.strf('Edit\u0020product\u0020\u0022\u00250\u0022', item.product_name)" 3714 > 3715 <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"> 3716 <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"/> 3717</svg> 3718 </a> 3719 <button type="button" 3720 class="inline-flex p-2 btn btn-secondary" 3721 @click="deleteItemFromCart(item.item_id)" 3722 :aria-label="hyva.strf('Remove\u0020product\u0020\u0022\u00250\u0022\u0020from\u0020cart', item.product_name)" 3723 > 3724 <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"> 3725 <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"/> 3726</svg> 3727 </button> 3728 </div> 3729 3730 </div> 3731 </div> 3732 </template> 3733 </div> 3734 </template> 3735 3736 <template x-if="itemsCount"> 3737 <div> 3738 3739 <div class="relative grid gap-4 py-3 px-1 sm:px-3 bg-white"> 3740 <div class="w-full p-3 space-x-4"> 3741 <p class="text-lg">ÅÄ cznie: 3742 <strong x-html="cart.subtotal" class="font-semibold"></strong> 3743 </p> 3744 </div> 3745 <div class="w-full p-3 pt-0 flex"> 3746 <a href="https://www.trefl.com/checkout/cart/" 3747 class="btn btn-primary"> 3748 Przejdź do koszyka </a> 3749 </div> 3750 <div x-html="getSectionDataExtraActions()"></div> 3751 </div> 3752 </div> 3753 </template> 3754 3755 </div> 3756 3757 <button 3758 type="button" 3759 @click="closeCartDrawer" 3760 aria-label="Zamknij koszyk" 3761 class="absolute top-0 right-2 p-4 mt-2 text-gray-300 transition-colors hover:text-black" 3762 > 3763 <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"> 3764 <path stroke-linecap="round" stroke-linejoin="round" d="M6 18L18 6M6 6l12 12"/> 3765</svg> 3766 </button> 3767 </div> 3768 <div 3769 class="z-50 fixed inset-0 grid place-items-center bg-white/70 text-slate-800" 3770 x-cloak 3771 x-show="isLoading" 3772 x-transition.opacity.duration.200ms 3773> 3774 <div class="flex gap-10 items-center p-4"> 3775 <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"> 3776 <style>
3777 @keyframes spinner-ball-triangle1 { 3778 0% { transform: translate(0%, 0%); } 3779 33% { transform: translate(38%, -79%); } 3780 66% { transform: translate(77%, 0%); } 3781 100% { transform: translate(0%, 0%); } 3782 } 3783 3784 @keyframes spinner-ball-triangle2 { 3785 0% { transform: translate(0%, 0%); } 3786 33% { transform: translate(38%, 79%); } 3787 66% { transform: translate(-38%, 79%); } 3788 100% { transform: translate(0%, 0%); } 3789 } 3790 3791 @keyframes spinner-ball-triangle3 { 3792 0% { transform: translate(0%, 0%); } 3793 33% { transform: translate(-77%, 0%); } 3794 66% { transform: translate(-38%, -79%); } 3795 100% { transform: translate(0%, 0%); } 3796 } 3797 </style> 3798 <circle cx="5" cy="50" r="5" style="animation: spinner-ball-triangle1 2.2s linear infinite"/> 3799 <circle cx="27" cy="5" r="5" style="animation: spinner-ball-triangle2 2.2s linear infinite"/> 3800 <circle cx="49" cy="50" r="5" style="animation: spinner-ball-triangle3 2.2s linear infinite"/> 3801</svg> 3802 <span class="text-xl select-none"> 3803 ÅadujÄ... </span> 3804 </div> 3805</div> 3806 </div> 3807 3808</section> 3809 3810 <!--Authentication Pop-Up--> 3811
3811<script> 3812 function initAuthentication() { 3813 return { 3814 open: false, 3815 close() { 3816 this.open = false; 3817 }, 3818 forceAuthentication: false, 3819 checkoutUrl: 'https://www.trefl.com/checkout/index/', 3820 errors: 0, 3821 hasCaptchaToken: 0, 3822 displayErrorMessage: false, 3823 errorMessages: [], 3824 setErrorMessages(message) { 3825 this.errorMessages = [message]; 3826 this.displayErrorMessage = true; 3827 }, 3828 submitForm() { 3829 // Do not rename $form, the variable is expected to be declared in the recaptcha output 3830 const $form = document.querySelector('#login-form'); 3831 3832 if (this.errors === 0) { 3833 this.dispatchLoginRequest($form); 3834 } 3835 }, 3836 onPrivateContentLoaded() { 3837 const data = this.$event.detail.data; 3838 const isLoggedIn = data.customer && data.customer.firstname; 3839 if (data.cart && !isLoggedIn) { 3840 this.forceAuthentication = !data.cart.isGuestCheckoutAllowed; 3841 } 3842 }, 3843 redirectIfAuthenticated() { 3844 const event = this.$event; 3845 this.open = this.forceAuthentication; 3846 3847 if (event.detail && event.detail.url) { 3848 this.checkoutUrl = event.detail.url; 3849 } 3850 if (!this.forceAuthentication) { 3851 window.location.href = this.checkoutUrl; 3852 } 3853 }, 3854 resetErrors() { 3855 this.errors = 0; 3856 }, 3857 dispatchLoginRequest(form) { 3858 this.isLoading = true; 3859 const username = this.$refs['customer-email'].value; 3860 const password = this.$refs['customer-password'].value; 3861 const formKey = hyva.getFormKey(); 3862 const bodyFields = { 3863 'username': username, 3864 'password': password, 3865 'formKey': formKey 3866 }; 3867 const fieldName = 'g\u002Drecaptcha\u002Dresponse'; 3868 const recaptchaField = fieldName && form[fieldName]; 3869 if (recaptchaField) { 3870 bodyFields[fieldName] = recaptchaField.value; 3871 } 3872 fetch('https://www.trefl.com/customer/ajax/login/', { 3873 method: 'POST', 3874 headers: { 3875 'Content-Type': 'application/json', 3876 'X-Requested-With': 'XMLHttpRequest' 3877 }, 3878 body: JSON.stringify(bodyFields) 3879 } 3880 ).then(response => { 3881 return response.json() 3882 } 3883 ).then(data => { 3884 this.isLoading = false; 3885 if (data.errors) { 3886 this.setErrorMessages(data.message); 3887 this.errors = 1; 3888 this.hasCaptchaToken = 0; 3889 } else { 3890 window.location.href = this.checkoutUrl; 3891 } 3892 }); 3893 } 3894 } 3895 } 3896 3897 window.addEventListener('alpine:init', () => Alpine.data('initAuthentication', initAuthentication), {once: true}) 3898</script>
3898 3899<section id="authentication-popup" 3900 x-data="initAuthentication" 3901 @private-content-loaded.window="onPrivateContentLoaded" 3902 @toggle-authentication.window="redirectIfAuthenticated" 3903 @keydown.window.escape="close" 3904> 3905 <div 3906 class="backdrop" 3907 aria-hidden="true" 3908 x-cloak 3909 x-show="open" 3910 x-transition:enter="ease-in-out duration-500" 3911 x-transition:enter-start="opacity-0" 3912 x-transition:enter-end="opacity-100" 3913 x-transition:leave="ease-in-out duration-500" 3914 x-transition:leave-start="opacity-100" 3915 x-transition:leave-end="opacity-0" 3916 @click="close" 3917 ></div> 3918 <div role="dialog" 3919 aria-modal="true" 3920 @click.outside="close" 3921 class="inset-y-0 right-0 z-30 flex max-w-full fixed" 3922 x-cloak 3923 x-show="open" 3924 > 3925 <div class="relative w-screen max-w-md pt-16 bg-container-lighter" 3926 x-show="open" 3927 x-cloak 3928 x-transition:enter="transform transition ease-in-out duration-500 sm:duration-700" 3929 x-transition:enter-start="translate-x-full" 3930 x-transition:enter-end="translate-x-0" 3931 x-transition:leave="transform transition ease-in-out duration-500 sm:duration-700" 3932 x-transition:leave-start="translate-x-0" 3933 x-transition:leave-end="translate-x-full" 3934 > 3935 <div 3936 x-show="open" 3937 x-cloak 3938 x-transition:enter="ease-in-out duration-500" 3939 x-transition:enter-start="opacity-0" 3940 x-transition:enter-end="opacity-100" 3941 x-transition:leave="ease-in-out duration-500" 3942 x-transition:leave-start="opacity-100" 3943 x-transition:leave-end="opacity-0" class="absolute top-0 right-2 flex p-2 mt-2"> 3944 <button 3945 type="button" 3946 @click="close" 3947 aria-label="Close panel" 3948 class="p-2 text-gray-300 transition duration-150 ease-in-out hover:text-black" 3949 > 3950 <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"> 3951 <path stroke-linecap="round" stroke-linejoin="round" d="M6 18L18 6M6 6l12 12"/> 3952</svg> 3953 </button> 3954 </div> 3955 <template x-if="open"> 3956 <div class="flex flex-col h-full py-6 space-y-6 bg-white shadow-xl overflow-y-auto"> 3957 <div class="mx-4"> 3958 <div class="message error mb-0" x-show="errors" x-cloak> 3959 <template x-for="(message, index) in errorMessages" :key="index"> 3960 <div> 3961 <template x-if="message"> 3962 <span x-html="message"></span> 3963 </template> 3964 </div> 3965 </template> 3966 </div> 3967 </div> 3968 <div class="block-customer-login bg-container border border-container mx-4 p-4 shadow-sm"> 3969 <p id="authenticate-customer-login" class="text-lg leading-7 text-gray-900"> 3970 <strong class="font-medium">Checkout using your account</strong> 3971 </p> 3972 3973 <form class="form form-login" 3974 method="post" 3975 @submit.prevent="submitForm" 3976 id="login-form" 3977 > 3978 <div class="fieldset login"> 3979 <div class="field email required"> 3980 <label class="label" for="form-login-username" form="login-form" > 3981 <span>Adres e-mail</span> 3982 </label> 3983 <div class="control"> 3984 <input name="username" 3985 id="form-login-username" 3986 x-ref="customer-email" 3987 @change="resetErrors" 3988 type="email" 3989 required 3990 autocomplete="off" 3991 class="form-input" 3992 > 3993 </div> 3994 </div> 3995 <div class="field password required"> 3996 <label for="form-login-password" class="label" form="login-form">
3997 <span>HasÅo</span> 3998 </label> 3999 <div class="control"> 4000 <input name="password" 4001 id="form-login-password" 4002 type="password" 4003 class="form-input" 4004 required 4005 x-ref="customer-password" 4006 autocomplete="off" 4007 @change="resetErrors" 4008 > 4009 </div> 4010 </div> 4011 4012 <input name="context" type="hidden" value="checkout" /> 4013 <div class="actions-toolbar pt-6 pb-2"> 4014 <button type="submit" class="inline-flex btn btn-primary disabled:opacity-75" 4015 > 4016 Zaloguj siÄ </button> 4017 <a href="https://www.trefl.com/customer/account/forgotpassword/" 4018 > 4019 ZapomniaÅeÅ hasÅa? </a> 4020 </div> 4021 4022 </div> 4023 </form> 4024 </div> 4025 <div class="mx-4"> 4026 </div> 4027 <div class="block-new-customer bg-container border border-container mx-4 p-4 shadow-sm"> 4028 <p id="authenticate-new-customer" class="text-lg mb-2 leading-7 text-gray-900"> 4029 <strong class="font-medium">Checkout as a new customer</strong> 4030 </p> 4031 4032 <div class="block-content"> 4033 <p class="mb-1"> 4034 Stworzenie konta ma wiele korzyÅci: </p> 4035 <ul class="list-disc pl-5"> 4036 <li> Zobacz zamówienie i stan wysyÅki</li> 4037 <li> Åledzenie historii zamówieÅ</li> 4038 <li> Zamawiaj szybciej</li> 4039 </ul> 4040 <div class="actions-toolbar mt-6 mb-2"> 4041 <a href="https://www.trefl.com/customer/account/create/" 4042 class="inline-flex btn btn-primary"> 4043 Utwórz konto </a> 4044 </div> 4045 </div> 4046 </div> 4047 </div> 4048 </template> 4049 </div> 4050 </div> 4051</section> 4052</div> 4053 4054 4055
4055<script> 4056 'use strict'; 4057 4058 const initTopmenuDesktop_6ab45a3cd87f7 = () => ({ 4059 openSubmenuId: null, 4060 toggleSubmenu(menuNode, state, $event) { 4061 if (state === true) { 4062 this.openSubmenuId = menuNode; 4063 this.focusFirstLinkInSubmenu(menuNode, $event); 4064 } else if (state === false) { 4065 this.openSubmenuId = null; 4066 } else { 4067 if (this.openSubmenuId === menuNode) { 4068 this.openSubmenuId = null; 4069 } else { 4070 this.openSubmenuId = menuNode; 4071 this.focusFirstLinkInSubmenu(menuNode, $event); 4072 } 4073 } 4074 4075 if ($event.code === 'Escape') { 4076 setTimeout(() => { 4077 const parentEl = $event.target?.closest('.menu-desktop-item-wrap')?.querySelector('a'); 4078 console.log(parentEl) 4079 if (parentEl) { 4080 parentEl.focus(); 4081 } 4082 }, 100); 4083 } 4084 }, 4085 focusFirstLinkInSubmenu(menuNode, $event) { 4086 if ($event.code === 'Enter' || $event.code === 'Space') { 4087 const submenu = this.$refs[`submenu-${menuNode}`]; 4088 if (submenu) { 4089 const firstLink = submenu.querySelector('a'); 4090 if (firstLink) { 4091 setTimeout(() => firstLink.focus(), 100); 4092 } 4093 } 4094 } 4095 }, 4096 stickyObserver(navigationEl) { 4097 const headerEl = document.querySelector('header.page-header'); 4098 new IntersectionObserver( 4099 ([e]) => { 4100 headerEl.classList.toggle('contents', e.intersectionRatio < 1) 4101 navigationEl.classList.toggle('shadow-md', e.intersectionRatio < 1) 4102 }, 4103 { threshold: [1] } 4104 ).observe(navigationEl); 4105 } 4106 }) 4107 </script>
4107 4108 4109 <div x-data="initTopmenuDesktop_6ab45a3cd87f7()" 4110 x-init="stickyObserver($el)" 4111 class=" navigation hidden w-full lg:block sticky -top-px bg-white z-20 transition-shadow"> 4112 <div class="overflow-x-hidden"> 4113 <nav 4114 class="snowdog-topmenu-desktop menu-desktop container lg:flex justify-between items-center" 4115 aria-label="Menu główne" 4116 > 4117 <ul 4118 class="flex gap-x-4" 4119 @mouseleave="openSubmenuId = null" 4120 role="menubar" 4121 > 4122 <li class="menu-desktop-item menu-desktop-item--level1 flex items-center 4123 " 4124 @mouseenter="toggleSubmenu('4', null, $event)" 4125 @keydown.enter.prevent="toggleSubmenu('4', null, $event)" 4126 @keydown.space.prevent="toggleSubmenu('4', null, $event)" 4127 @keydown.escape.prevent="toggleSubmenu('4', false, $event)" 4128 aria-haspopup="true" 4129 :aria-expanded="openSubmenuId === '4'" 4130 :tabindex="openSubmenuId === '4' ? 0 : -1" 4131 role="menuitem" 4132 > 4133 <div class="menu-desktop-item-wrap relative flex items-center"> 4134 4135<a href="https://www.trefl.com/puzzle" 4136 class="snowdog-menu-link " 4137 data-menu="menu-4" 4138 > 4139 Puzzle</a> 4140 4141 <span class="flex items-center justify-center ml-1.5" aria-hidden="true"> 4142 <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> 4143 </span> 4144 </div> 4145 4146 <div 4147 x-ref="submenu-4" 4148 class="menu-desktop-submenu absolute left-0 top-full w-full z-30 bg-white flex border-t border-gray-light shadow-md" 4149 x-show="openSubmenuId === '4'" 4150 x-cloak 4151 > 4152 <div class="container h-full"> 4153 <ul 4154 class="menu-desktop-list menu-desktop-list--level2 bg-white flex flex-col flex-wrap items-start content-start justify-start h-full" 4155 title="Submenu for Puzzle" 4156 > 4157 <li 4158 class="menu-desktop-item menu-desktop-item--level2 " 4159 > 4160 4161<a href="https://www.trefl.com/puzzle/dla-dzieci" 4162 class="snowdog-menu-link " 4163 data-menu="menu-359" 4164 > 4165 Puzzle dla dzieci</a> 4166 </li> 4167 4168 <li 4169 class="menu-desktop-item menu-desktop-item--level2 " 4170 > 4171 4172<a href="https://www.trefl.com/puzzle/dla-doroslych" 4173 class="snowdog-menu-link " 4174 data-menu="menu-6" 4175 > 4176 Puzzle dla dorosÅych</a> 4177 </li> 4178 4179 <li 4180 class="menu-desktop-item menu-desktop-item--level2 " 4181 > 4182 4183<a href="https://www.trefl.com/puzzle/500-elementow" 4184 class="snowdog-menu-link " 4185 data-menu="menu-217" 4186 > 4187 Puzzle 500 elementów</a> 4188 </li> 4189 4190 <li 4191 class="menu-desktop-item menu-desktop-item--level2 " 4192 > 4193 4194<a href="https://www.trefl.com/puzzle/1000-elementow" 4195 class="snowdog-menu-link " 4196 data-menu="menu-218" 4197 > 4198 Puzzle 1000 elementów</a> 4199 </li> 4200 4201 <li 4202 class="menu-desktop-item menu-desktop-item--level2 " 4203 > 4204 4205<a href="https://www.trefl.com/puzzle/1500-elementow" 4206 class="snowdog-menu-link " 4207 data-menu="menu-219" 4208 > 4209 Puzzle 1500 elementów</a> 4210 </li> 4211 4212 <li 4213 class="menu-desktop-item menu-desktop-item--level2 " 4214 > 4215 4216<a href="https://www.trefl.com/puzzle/2000-elementow" 4217 class="snowdog-menu-link " 4218 data-menu="menu-220" 4219 > 4220 Puzzle 2000 elementów</a> 4221 </li> 4222 4223 <li 4224 class="menu-desktop-item menu-desktop-item--level2 " 4225 > 4226 4227<a href="https://www.trefl.com/puzzle/3000-elementow" 4228 class="snowdog-menu-link " 4229 data-menu="menu-221" 4230 > 4231 Puzzle 3000 elementów</a> 4232 </li> 4233 4234 <li 4235 class="menu-desktop-item menu-desktop-item--level2 " 4236 > 4237 4238<a href="https://www.trefl.com/puzzle/4000-elementow" 4239 class="snowdog-menu-link " 4240 data-menu="menu-222" 4241 > 4242 Puzzle 4000 elementów</a> 4243 </li> 4244
4245 <span class="menu-desktop-separator" aria-hidden="true"></span> 4246 <li 4247 class="menu-desktop-item menu-desktop-item--level2 " 4248 > 4249 4250<a href="https://www.trefl.com/puzzle/6000-elementow" 4251 class="snowdog-menu-link " 4252 data-menu="menu-223" 4253 > 4254 Puzzle 6000 elementów</a> 4255 </li> 4256 4257 <li 4258 class="menu-desktop-item menu-desktop-item--level2 " 4259 > 4260 4261<a href="https://www.trefl.com/puzzle/8000-elementow" 4262 class="snowdog-menu-link " 4263 data-menu="menu-628" 4264 > 4265 Puzzle 8000 elementów</a> 4266 </li> 4267 4268 <li 4269 class="menu-desktop-item menu-desktop-item--level2 " 4270 > 4271 4272<a href="https://www.trefl.com/puzzle/prime-uft/prime-9000" 4273 class="snowdog-menu-link " 4274 data-menu="menu-261" 4275 > 4276 Puzzle 9000 elementów</a> 4277 </li> 4278 4279 <li 4280 class="menu-desktop-item menu-desktop-item--level2 " 4281 > 4282 4283 <a href="https://www.trefl.com/puzzle-premium-plus-quality-10000-el-windows-of-the-seasons-81051" 4284 class="snowdog-menu-link " 4285 data-menu="menu-630" 4286 data-menu="menu-630" > 4287 Puzzle 10 000 elementów </a> 4288 </li> 4289 4290 <li 4291 class="menu-desktop-item menu-desktop-item--level2 " 4292 > 4293 4294<a href="https://www.trefl.com/puzzle/prime-uft/prime-13500" 4295 class="snowdog-menu-link " 4296 data-menu="menu-262" 4297 > 4298 Puzzle 13 500 elementów</a> 4299 </li> 4300 4301 <li 4302 class="menu-desktop-item menu-desktop-item--level2 " 4303 > 4304 4305 <a href="https://www.trefl.com/puzzle-prime-21000-el-earth-chronicles-from-the-creation-to-the-future-81040" 4306 class="snowdog-menu-link " 4307 data-menu="menu-263" 4308 data-menu="menu-263" > 4309 Puzzle 21 000 elementów </a> 4310 </li> 4311 4312 <li 4313 class="menu-desktop-item menu-desktop-item--level2 " 4314 > 4315 4316<a href="https://www.trefl.com/puzzle/puzzle-premium-plus-quality" 4317 class="snowdog-menu-link " 4318 data-menu="menu-224" 4319 > 4320 Puzzle Premium Plus Quality</a> 4321 </li> 4322 4323 <span class="menu-desktop-separator" aria-hidden="true"></span> 4324 <li 4325 class="menu-desktop-item menu-desktop-item--level2 " 4326 > 4327 4328<a href="https://www.trefl.com/puzzle/drewniane" 4329 class="snowdog-menu-link " 4330 data-menu="menu-235" 4331 > 4332 Puzzle drewniane</a> 4333 </li> 4334 4335 <li 4336 class="menu-desktop-item menu-desktop-item--level2 " 4337 > 4338 4339<a href="https://www.trefl.com/puzzle/puzzle-filmowe" 4340 class="snowdog-menu-link " 4341 data-menu="menu-237" 4342 > 4343 Puzzle filmowe</a> 4344 </li> 4345 4346 <li 4347 class="menu-desktop-item menu-desktop-item--level2 " 4348 > 4349 4350<a href="https://www.trefl.com/puzzle/puzzle-jubileuszowe" 4351 class="snowdog-menu-link " 4352 data-menu="menu-5" 4353 > 4354 Puzzle jubileuszowe na 40-lecie</a> 4355 </li> 4356 4357 <li 4358 class="menu-desktop-item menu-desktop-item--level2 " 4359 > 4360 4361<a href="https://www.trefl.com/puzzle/puzzle-kosmos" 4362 class="snowdog-menu-link " 4363 data-menu="menu-238" 4364 > 4365 Puzzle kosmos</a> 4366 </li> 4367 4368 <li 4369 class="menu-desktop-item menu-desktop-item--level2 " 4370 > 4371 4372<a href="https://www.trefl.com/puzzle/puzzle-krajobrazy" 4373 class="snowdog-menu-link " 4374 data-menu="menu-239" 4375 > 4376 Puzzle krajobrazy</a> 4377 </li> 4378 4379 <li 4380 class="menu-desktop-item menu-desktop-item--level2 " 4381 > 4382 4383<a href="https://www.trefl.com/puzzle/puzzle-kulinarne" 4384 class="snowdog-menu-link " 4385 data-menu="menu-240" 4386 > 4387 Puzzle kulinarne</a> 4388 </li> 4389 4390 <li 4391 class="menu-desktop-item menu-desktop-item--level2 " 4392 > 4393 4394<a href="https://www.trefl.com/puzzle/puzzle-mapy" 4395 class="snowdog-menu-link " 4396 data-menu="menu-241" 4397 > 4398 Puzzle mapy</a> 4399 </li> 4400
4401 <span class="menu-desktop-separator" aria-hidden="true"></span> 4402 <li 4403 class="menu-desktop-item menu-desktop-item--level2 " 4404 > 4405 4406<a href="https://www.trefl.com/puzzle/puzzle-miasta" 4407 class="snowdog-menu-link " 4408 data-menu="menu-242" 4409 > 4410 Puzzle miasta</a> 4411 </li> 4412 4413 <li 4414 class="menu-desktop-item menu-desktop-item--level2 " 4415 > 4416 4417<a href="https://www.trefl.com/puzzle/puzzle-obrazy" 4418 class="snowdog-menu-link " 4419 data-menu="menu-243" 4420 > 4421 Puzzle obrazy</a> 4422 </li> 4423 4424 <li 4425 class="menu-desktop-item menu-desktop-item--level2 " 4426 > 4427 4428<a href="https://www.trefl.com/puzzle/puzzle-panoramiczne" 4429 class="snowdog-menu-link " 4430 data-menu="menu-244" 4431 > 4432 Puzzle panoramiczne</a> 4433 </li> 4434 4435 <li 4436 class="menu-desktop-item menu-desktop-item--level2 " 4437 > 4438 4439<a href="https://www.trefl.com/puzzle/puzzle-samochody" 4440 class="snowdog-menu-link " 4441 data-menu="menu-245" 4442 > 4443 Puzzle samochody</a> 4444 </li> 4445 4446 <li 4447 class="menu-desktop-item menu-desktop-item--level2 " 4448 > 4449 4450<a href="https://www.trefl.com/puzzle/puzzle-swiateczne" 4451 class="snowdog-menu-link " 4452 data-menu="menu-236" 4453 > 4454 Puzzle ÅwiÄ teczne</a> 4455 </li> 4456 4457 <li 4458 class="menu-desktop-item menu-desktop-item--level2 " 4459 > 4460 4461<a href="https://www.trefl.com/puzzle/akcesoria" 4462 class="snowdog-menu-link " 4463 data-menu="menu-8" 4464 > 4465 Akcesoria do puzzli</a> 4466 </li> 4467 4468 </ul> 4469 </div> 4470 </div> 4471 </li> 4472 <li class="menu-desktop-item menu-desktop-item--level1 flex items-center 4473 " 4474 @mouseenter="openSubmenuId = null" 4475 role="menuitem" 4476 > 4477 <div class="menu-desktop-item-wrap relative flex items-center"> 4478 4479<a href="https://www.trefl.com/puzzle/fotopuzzle" 4480 class="snowdog-menu-link " 4481 data-menu="menu-360" 4482 > 4483 Fotopuzzle</a> 4484 4485 </div> 4486 4487 </li> 4488 <li class="menu-desktop-item menu-desktop-item--level1 flex items-center 4489 " 4490 @mouseenter="toggleSubmenu('9', null, $event)" 4491 @keydown.enter.prevent="toggleSubmenu('9', null, $event)" 4492 @keydown.space.prevent="toggleSubmenu('9', null, $event)" 4493 @keydown.escape.prevent="toggleSubmenu('9', false, $event)" 4494 aria-haspopup="true" 4495 :aria-expanded="openSubmenuId === '9'" 4496 :tabindex="openSubmenuId === '9' ? 0 : -1" 4497 role="menuitem" 4498 > 4499 <div class="menu-desktop-item-wrap relative flex items-center"> 4500 4501<a href="https://www.trefl.com/gry" 4502 class="snowdog-menu-link " 4503 data-menu="menu-9" 4504 > 4505 Gry</a> 4506 4507 <sp
4507an class="flex items-center justify-center ml-1.5" aria-hidden="true"> 4508 <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> 4509 </span> 4510 </div> 4511 4512 <div 4513 x-ref="submenu-9" 4514 class="menu-desktop-submenu absolute left-0 top-full w-full z-30 bg-white flex border-t border-gray-light shadow-md" 4515 x-show="openSubmenuId === '9'" 4516 x-cloak 4517 > 4518 <div class="container h-full"> 4519 <ul 4520 class="menu-desktop-list menu-desktop-list--level2 bg-white flex flex-col flex-wrap items-start content-start justify-start h-full" 4521 title="Submenu for Gry" 4522 > 4523 <li 4524 class="menu-desktop-item menu-desktop-item--level2 " 4525 > 4526 4527<a href="https://www.trefl.com/gry/dla-dzieci" 4528 class="snowdog-menu-link " 4529 data-menu="menu-10" 4530 > 4531 Gry dla dzieci</a> 4532 </li> 4533 4534 <li 4535 class="menu-desktop-item menu-desktop-item--level2 " 4536 > 4537 4538<a href="https://www.trefl.com/gry/rodzinne" 4539 class="snowdog-menu-link " 4540 data-menu="menu-11" 4541 > 4542 Gry rodzinne</a> 4543 </li> 4544 4545 <li 4546 class="menu-desktop-item menu-desktop-item--level2 " 4547 > 4548 4549<a href="https://www.trefl.com/gry/towarzyskie" 4550 class="snowdog-menu-link " 4551 data-menu="menu-12" 4552 > 4553 Gry towarzyskie</a> 4554 </li> 4555 4556 <li 4557 class="menu-desktop-item menu-desktop-item--level2 " 4558 > 4559 4560<a href="https://www.trefl.com/gry/edukacyjne" 4561 class="snowdog-menu-link " 4562 data-menu="menu-13" 4563 > 4564 Gry edukacyjne</a> 4565 </li> 4566 4567 <li 4568 class="menu-desktop-item menu-desktop-item--level2 " 4569 > 4570 4571<a href="https://www.trefl.com/gry/dla-grup-przedszkoli" 4572 class="snowdog-menu-link " 4573 data-menu="menu-445" 4574 > 4575 Gry dla grup i przedszkoli</a> 4576 </li> 4577 4578 <li 4579 class="menu-desktop-item menu-desktop-item--level2 " 4580 > 4581 4582<a href="https://www.trefl.com/gry/planszowe-1" 4583 class="snowdog-menu-link " 4584 data-menu="menu-14" 4585 > 4586 Gry planszowe</a> 4587 </li> 4588 4589 <li 4590 class="menu-desktop-item menu-desktop-item--level2 " 4591 > 4592 4593<a href="https://www.trefl.com/gry/karciane" 4594 class="snowdog-menu-link " 4595 data-menu="menu-15" 4596 > 4597 Gry karciane</a> 4598 </li> 4599 4600 <li 4601 class="menu-desktop-item menu-desktop-item--level2 " 4602 > 4603 4604<a href="https://www.trefl.com/gry/domino-i-memos" 4605 class="snowdog-menu-link " 4606 data-menu="menu-16" 4607 > 4608 Domino i Memos</a> 4609 </li> 4610
4611 <span class="menu-desktop-separator" aria-hidden="true"></span> 4612 <li 4613 class="menu-desktop-item menu-desktop-item--level2 " 4614 > 4615 4616<a href="https://www.trefl.com/gry/dla-3-latka" 4617 class="snowdog-menu-link " 4618 data-menu="menu-321" 4619 > 4620 Gry dla 3 latka</a> 4621 </li> 4622 4623 <li 4624 class="menu-desktop-item menu-desktop-item--level2 " 4625 > 4626 4627<a href="https://www.trefl.com/gry/dla-4-latka" 4628 class="snowdog-menu-link " 4629 data-menu="menu-322" 4630 > 4631 Gry dla 4 latka</a> 4632 </li> 4633 4634 <li 4635 class="menu-desktop-item menu-desktop-item--level2 " 4636 > 4637 4638<a href="https://www.trefl.com/gry/dla-dzieci-4-6-lat" 4639 class="snowdog-menu-link " 4640 data-menu="menu-323" 4641 > 4642 Gry dla dzieci 4-6 lat</a> 4643 </li> 4644 4645 <li 4646 class="menu-desktop-item menu-desktop-item--level2 " 4647 > 4648 4649<a href="https://www.trefl.com/gry/dla-dzieci-6-8-lat" 4650 class="snowdog-menu-link " 4651 data-menu="menu-324" 4652 > 4653 Gry dla dzieci 6-8 lat</a> 4654 </li> 4655 4656 <li 4657 class="menu-desktop-item menu-desktop-item--level2 " 4658 > 4659 4660<a href="https://www.trefl.com/gry/dla-dzieci-8-10-lat" 4661 class="snowdog-menu-link " 4662 data-menu="menu-325" 4663 > 4664 Gry dla dzieci 8-10 lat</a> 4665 </li> 4666 4667 <li 4668 class="menu-desktop-item menu-desktop-item--level2 " 4669 > 4670 4671<a href="https://www.trefl.com/gry/dla-dzieci-12-lat" 4672 class="snowdog-menu-link " 4673 data-menu="menu-326" 4674 > 4675 Gry dla dzieci 12+</a> 4676 </li> 4677 4678 </ul> 4679 </div> 4680 </div> 4681 </li> 4682 <li class="menu-desktop-item menu-desktop-item--level1 flex items-center 4683 " 4684 @mouseenter="toggleSubmenu('17', null, $event)" 4685 @keydown.enter.prevent="toggleSubmenu('17', null, $event)" 4686 @keydown.space.prevent="toggleSubmenu('17', null, $event)" 4687 @keydown.escape.prevent="toggleSubmenu('17', false, $event)" 4688 aria-haspopup="true" 4689 :aria-expanded="openSubmenuId === '17'" 4690 :tabindex="openSubmenuId === '17' ? 0 : -1" 4691 role="menuitem" 4692 > 4693 <div class="menu-desktop-item-wrap relative flex items-center"> 4694 4695<a href="https://www.trefl.com/zabawki" 4696 class="snowdog-menu-link " 4697 data-menu="menu-17" 4698 > 4699 Zabawki</a> 4700 4701 <sp
4701an class="flex items-center justify-center ml-1.5" aria-hidden="true"> 4702 <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> 4703 </span> 4704 </div> 4705 4706 <div 4707 x-ref="submenu-17" 4708 class="menu-desktop-submenu absolute left-0 top-full w-full z-30 bg-white flex border-t border-gray-light shadow-md" 4709 x-show="openSubmenuId === '17'" 4710 x-cloak 4711 > 4712 <div class="container h-full"> 4713 <ul 4714 class="menu-desktop-list menu-desktop-list--level2 bg-white flex flex-col flex-wrap items-start content-start justify-start h-full" 4715 title="Submenu for Zabawki" 4716 > 4717 <li 4718 class="menu-desktop-item menu-desktop-item--level2 " 4719 > 4720 4721<a href="https://www.trefl.com/zabawki/dla-niemowlaka" 4722 class="snowdog-menu-link " 4723 data-menu="menu-18" 4724 > 4725 Zabawki dla niemowlaka</a> 4726 </li> 4727 4728 <li 4729 class="menu-desktop-item menu-desktop-item--level2 " 4730 > 4731 4732<a href="https://www.trefl.com/zabawki/1-3-lata" 4733 class="snowdog-menu-link " 4734 data-menu="menu-19" 4735 > 4736 Zabawki dla dzieci 1-3</a> 4737 </li> 4738 4739 <li 4740 class="menu-desktop-item menu-desktop-item--level2 " 4741 > 4742 4743<a href="https://www.trefl.com/zabawki/3-lata" 4744 class="snowdog-menu-link " 4745 data-menu="menu-20" 4746 > 4747 Zabawki dla 3 latka</a> 4748 </li> 4749 4750 <li 4751 class="menu-desktop-item menu-desktop-item--level2 " 4752 > 4753 4754<a href="https://www.trefl.com/zabawki/4-lata" 4755 class="snowdog-menu-link " 4756 data-menu="menu-21" 4757 > 4758 Zabawki dla 4 latka</a> 4759 </li> 4760 4761 <li 4762 class="menu-desktop-item menu-desktop-item--level2 " 4763 > 4764 4765<a href="https://www.trefl.com/zabawki/4-6-lat" 4766 class="snowdog-menu-link " 4767 data-menu="menu-22" 4768 > 4769 Zabawki dla dzieci 4-6</a> 4770 </li> 4771 4772 <li 4773 class="menu-desktop-item menu-desktop-item--level2 " 4774 > 4775 4776<a href="https://www.trefl.com/zabawki/6-8-lat" 4777 class="snowdog-menu-link " 4778 data-menu="menu-23" 4779 > 4780 Zabawki dla dzieci 6-8</a> 4781 </li> 4782 4783 <li 4784 class="menu-desktop-item menu-desktop-item--level2 " 4785 > 4786 4787<a href="https://www.trefl.com/zabawki/8-10-lat" 4788 class="snowdog-menu-link " 4789 data-menu="menu-24" 4790 > 4791 Zabawki dla dzieci 8-10</a> 4792 </li> 4793 4794 <li 4795 class="menu-desktop-item menu-desktop-item--level2 " 4796 > 4797
4798<a href="https://www.trefl.com/zabawki/do-kapieli" 4799 class="snowdog-menu-link " 4800 data-menu="menu-25" 4801 > 4802 Zabawki do kÄ pieli</a> 4803 </li> 4804 4805 <span class="menu-desktop-separator" aria-hidden="true"></span> 4806 <li 4807 class="menu-desktop-item menu-desktop-item--level2 " 4808 > 4809 4810<a href="https://www.trefl.com/zabawki/drewniane" 4811 class="snowdog-menu-link " 4812 data-menu="menu-26" 4813 > 4814 Zabawki drewniane</a> 4815 </li> 4816 4817 <li 4818 class="menu-desktop-item menu-desktop-item--level2 " 4819 > 4820 4821<a href="https://www.trefl.com/zabawki/interaktywne" 4822 class="snowdog-menu-link " 4823 data-menu="menu-27" 4824 > 4825 Zabawki interaktywne</a> 4826 </li> 4827 4828 <li 4829 class="menu-desktop-item menu-desktop-item--level2 " 4830 > 4831 4832<a href="https://www.trefl.com/zabawki/klocki" 4833 class="snowdog-menu-link " 4834 data-menu="menu-28" 4835 > 4836 Klocki</a> 4837 </li> 4838 4839 <li 4840 class="menu-desktop-item menu-desktop-item--level2 " 4841 > 4842 4843<a href="https://www.trefl.com/zabawki/klocki/klocki-ceramiczne" 4844 class="snowdog-menu-link " 4845 data-menu="menu-399" 4846 > 4847 Klocki ceramiczne Brick Trick</a> 4848 </li> 4849 4850 <li 4851 class="menu-desktop-item menu-desktop-item--level2 " 4852 > 4853 4854<a href="https://www.trefl.com/zabawki/klocki/konstrukcyjne" 4855 class="snowdog-menu-link " 4856 data-menu="menu-599" 4857 > 4858 Klocki konstrukcyjne</a> 4859 </li> 4860 4861 <li 4862 class="menu-desktop-item menu-desktop-item--level2 " 4863 > 4864 4865<a href="https://www.trefl.com/zabawki/magiczne-sztuczki" 4866 class="snowdog-menu-link " 4867 data-menu="menu-449" 4868 > 4869 Magiczne Sztuczki</a> 4870 </li> 4871 4872 <li 4873 class="menu-desktop-item menu-desktop-item--level2 " 4874 > 4875 4876<a href="https://www.trefl.com/zabawki/modele" 4877 class="snowdog-menu-link " 4878 data-menu="menu-29" 4879 > 4880 Modele aut i pojazdów</a> 4881 </li> 4882 4883 <span class="menu-desktop-separator" aria-hidden="true"></span> 4884 <li 4885 class="menu-desktop-item menu-desktop-item--level2 " 4886 > 4887 4888<a href="https://www.trefl.com/zabawki/outdoorowe" 4889 class="snowdog-menu-link " 4890 data-menu="menu-30" 4891 > 4892 Zabawki outdoorowe</a> 4893 </li> 4894 4895 <li 4896 class="menu-desktop-item menu-desktop-item--level2 " 4897 > 4898 4899<a href="https://www.trefl.com/zabawki/pilki" 4900 class="snowdog-menu-link " 4901 data-menu="menu-31" 4902 > 4903 PiÅki</a> 4904 </li> 4905 4906 <li 4907 class="menu-desktop-item menu-desktop-item--level2 " 4908 > 4909 4910<a href="https://www.trefl.com/zabawki/kreatywne" 4911 class="snowdog-menu-link " 4912 data-menu="menu-392" 4913 > 4914 Zabawki kreatywne</a> 4915 </li> 4916 4917 <li 4918 class="menu-desktop-item menu-desktop-item--level2 " 4919 > 4920 4921<a href="https://www.trefl.com/zabawki/sensoryczne" 4922 class="snowdog-menu-link " 4923 data-menu="menu-32" 4924 > 4925 Zabawki sensoryczne</a> 4926 </li> 4927 4928 <li 4929 class="menu-desktop-item menu-desktop-item--level2 " 4930 > 4931 4932<a href="https://www.trefl.com/zabawki/hape" 4933 class="snowdog-menu-link " 4934 data-menu="menu-33" 4935 > 4936 Zabawki Hape</a> 4937 </li> 4938 4939 <li 4940 class="menu-desktop-item menu-desktop-item--level2 " 4941 > 4942 4943<a href="https://www.trefl.com/zabawki/zestawy-naukowe" 4944 class="snowdog-menu-link " 4945 data-menu="menu-34" 4946 > 4947 Zabawki naukowe</a> 4948 </li> 4949 4950 </ul> 4951 </div> 4952 </div> 4953 </li> 4954 <li class="menu-desktop-item menu-desktop-item--level1 flex items-center 4955 " 4956 @mouseenter="toggleSubmenu('35', null, $event)" 4957 @keydown.enter.prevent="toggleSubmenu('35', null, $event)" 4958 @keydown.space.prevent="toggleSubmenu('35', null, $event)" 4959 @keydown.escape.prevent="toggleSubmenu('35', false, $event)" 4960 aria-haspopup="true" 4961 :aria-expanded="openSubmenuId === '35'" 4962 :tabindex="openSubmenuId === '35' ? 0 : -1" 4963 role="menuitem" 4964 > 4965 <div class="menu-desktop-item-wrap relative flex items-center"> 4966 4967<a href="https://www.trefl.com/ksiazki" 4968 class="snowdog-menu-link " 4969 data-menu="menu-35" 4970 > 4971 KsiÄ Å¼ki</a> 4972 4973 <sp
4973an class="flex items-center justify-center ml-1.5" aria-hidden="true"> 4974 <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> 4975 </span> 4976 </div> 4977 4978 <div 4979 x-ref="submenu-35" 4980 class="menu-desktop-submenu absolute left-0 top-full w-full z-30 bg-white flex border-t border-gray-light shadow-md" 4981 x-show="openSubmenuId === '35'" 4982 x-cloak 4983 > 4984 <div class="container h-full"> 4985 <ul 4986 class="menu-desktop-list menu-desktop-list--level2 bg-white flex flex-col flex-wrap items-start content-start justify-start h-full" 4987 title="Submenu for Książki" 4988 > 4989 <li 4990 class="menu-desktop-item menu-desktop-item--level2 " 4991 > 4992 4993<a href="https://www.trefl.com/ksiazki/dla-dzieci/dla-dzieci-1-2-lata" 4994 class="snowdog-menu-link " 4995 data-menu="menu-602" 4996 > 4997 KsiÄ Å¼ki dla dzieci 1-2 lata</a> 4998 </li> 4999 5000 <li 5001 class="menu-desktop-item menu-desktop-item--level2 " 5002 > 5003 5004<a href="https://www.trefl.com/ksiazki/dla-dzieci/dla-dzieci-3-5-lat" 5005 class="snowdog-menu-link " 5006 data-menu="menu-603" 5007 > 5008 KsiÄ Å¼ki dla dzieci 3-5 lat</a> 5009 </li> 5010 5011 <li 5012 class="menu-desktop-item menu-desktop-item--level2 " 5013 > 5014 5015<a href="https://www.trefl.com/ksiazki/dla-dzieci/dla-dzieci-6-8-lat" 5016 class="snowdog-menu-link " 5017 data-menu="menu-604" 5018 > 5019 KsiÄ Å¼ki dla dzieci 6-8 lat</a> 5020 </li> 5021 5022 <li 5023 class="menu-desktop-item menu-desktop-item--level2 " 5024 > 5025 5026<a href="https://www.trefl.com/ksiazki/dla-dzieci/dla-dzieci-9-12-lat" 5027 class="snowdog-menu-link " 5028 data-menu="menu-605" 5029 > 5030 KsiÄ Å¼ki dla dzieci 9-12 lat</a> 5031 </li> 5032 5033 <li 5034 class="menu-desktop-item menu-desktop-item--level2 " 5035 > 5036 5037<a href="https://www.trefl.com/ksiazki/ksiazki-dla-rodzicow" 5038 class="snowdog-menu-link " 5039 data-menu="menu-37" 5040 > 5041 KsiÄ Å¼ki dla rodziców</a> 5042 </li> 5043 5044 <li 5045 class="menu-desktop-item menu-desktop-item--level2 " 5046 > 5047 5048<a href="https://www.trefl.com/ksiazki/kolorowanki" 5049 class="snowdog-menu-link " 5050 data-menu="menu-606" 5051 > 5052 Kolorowanki</a> 5053 </li> 5054 5055 </ul> 5056 </div> 5057 </div> 5058 </li> 5059 <li class="menu-desktop-item menu-desktop-item--level1 flex items-center 5060 " 5061 @mouseenter="toggleSubmenu('39', null, $event)" 5062 @keydown.enter.prevent="toggleSubmenu('39', null, $event)" 5063 @keydown.space.prevent="toggleSubmenu('39', null, $event)" 5064 @keydown.escape.prevent="toggleSubmenu('39', false, $event)" 5065 aria-haspopup="true" 5066 :aria-expanded="openSubmenuId === '39'" 5067 :tabindex="openSubmenuId === '39' ? 0 : -1" 5068 role="menuitem" 5069 > 5070 <div class="menu-desktop-item-wrap relative flex items-center"> 5071 5072<a href="https://www.trefl.com/rodzina-treflikow" 5073 class="snowdog-menu-link " 5074 data-menu="menu-39" 5075 > 5076 Trefliki</a> 5077 5078 <sp
5078an class="flex items-center justify-center ml-1.5" aria-hidden="true"> 5079 <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> 5080 </span> 5081 </div> 5082 5083 <div 5084 x-ref="submenu-39" 5085 class="menu-desktop-submenu absolute left-0 top-full w-full z-30 bg-white flex border-t border-gray-light shadow-md" 5086 x-show="openSubmenuId === '39'" 5087 x-cloak 5088 > 5089 <div class="container h-full"> 5090 <ul 5091 class="menu-desktop-list menu-desktop-list--level2 bg-white flex flex-col flex-wrap items-start content-start justify-start h-full" 5092 title="Submenu for Trefliki" 5093 > 5094 <li 5095 class="menu-desktop-item menu-desktop-item--level2 " 5096 > 5097 5098<a href="https://www.trefl.com/rodzina-treflikow/puzzle" 5099 class="snowdog-menu-link " 5100 data-menu="menu-40" 5101 > 5102 Puzzle Rodzina Treflików</a> 5103 </li> 5104 5105 <li 5106 class="menu-desktop-item menu-desktop-item--level2 " 5107 > 5108 5109<a href="https://www.trefl.com/rodzina-treflikow/gry" 5110 class="snowdog-menu-link " 5111 data-menu="menu-41" 5112 > 5113 Gry Rodzina Treflików</a> 5114 </li> 5115 5116 <li 5117 class="menu-desktop-item menu-desktop-item--level2 " 5118 > 5119 5120<a href="https://www.trefl.com/rodzina-treflikow/zabawki" 5121 class="snowdog-menu-link " 5122 data-menu="menu-42" 5123 > 5124 Zabawki Rodzina Treflików</a> 5125 </li> 5126 5127 <li 5128 class="menu-desktop-item menu-desktop-item--level2 " 5129 > 5130 5131<a href="https://www.trefl.com/rodzina-treflikow/ksiazki" 5132 class="snowdog-menu-link " 5133 data-menu="menu-43" 5134 > 5135 KsiÄ Å¼ki Rodzina Treflików</a> 5136 </li> 5137 5138 </ul> 5139 </div> 5140 </div> 5141 </li> 5142 <li class="menu-desktop-item menu-desktop-item--level1 flex items-center 5143 " 5144 @mouseenter="toggleSubmenu('44', null, $event)" 5145 @keydown.enter.prevent="toggleSubmenu('44', null, $event)" 5146 @keydown.space.prevent="toggleSubmenu('44', null, $event)" 5147 @keydown.escape.prevent="toggleSubmenu('44', false, $event)" 5148 aria-haspopup="true" 5149 :aria-expanded="openSubmenuId === '44'" 5150 :tabindex="openSubmenuId === '44' ? 0 : -1" 5151 role="menuitem" 5152 > 5153 <div class="menu-desktop-item-wrap relative flex items-center"> 5154 5155<a href="https://www.trefl.com/prezenty" 5156 class="snowdog-menu-link " 5157 data-menu="menu-44" 5158 > 5159 Prezenty</a> 5160 5161 <sp
5161an class="flex items-center justify-center ml-1.5" aria-hidden="true"> 5162 <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> 5163 </span> 5164 </div> 5165 5166 <div 5167 x-ref="submenu-44" 5168 class="menu-desktop-submenu absolute left-0 top-full w-full z-30 bg-white flex border-t border-gray-light shadow-md" 5169 x-show="openSubmenuId === '44'" 5170 x-cloak 5171 > 5172 <div class="container h-full"> 5173 <ul 5174 class="menu-desktop-list menu-desktop-list--level2 bg-white flex flex-col flex-wrap items-start content-start justify-start h-full" 5175 title="Submenu for Prezenty" 5176 > 5177 <li 5178 class="menu-desktop-item menu-desktop-item--level2 " 5179 > 5180 5181<a href="https://www.trefl.com/prezenty/dla-dzieci" 5182 class="snowdog-menu-link " 5183 data-menu="menu-578" 5184 > 5185 Prezenty dla dzieci</a> 5186 </li> 5187 5188 <li 5189 class="menu-desktop-item menu-desktop-item--level2 " 5190 > 5191 5192<a href="https://www.trefl.com/prezenty/dla-dzieci/0-2-lata" 5193 class="snowdog-menu-link " 5194 data-menu="menu-490" 5195 > 5196 Prezenty dla dzieci 0-2 lata</a> 5197 </li> 5198 5199 <li 5200 class="menu-desktop-item menu-desktop-item--level2 " 5201 > 5202 5203<a href="https://www.trefl.com/prezenty/dla-dzieci/3-5-lat" 5204 class="snowdog-menu-link " 5205 data-menu="menu-491" 5206 > 5207 Prezenty dla dzieci 3-5 lat</a> 5208 </li> 5209 5210 <li 5211 class="menu-desktop-item menu-desktop-item--level2 " 5212 > 5213 5214<a href="https://www.trefl.com/prezenty/dla-dzieci/6-8-lat" 5215 class="snowdog-menu-link " 5216 data-menu="menu-492" 5217 > 5218 Prezenty dla dzieci 6-8 lat</a> 5219 </li> 5220 5221 <li 5222 class="menu-desktop-item menu-desktop-item--level2 " 5223 > 5224 5225<a href="https://www.trefl.com/prezenty/dla-dzieci/9-12-lat" 5226 class="snowdog-menu-link " 5227 data-menu="menu-493" 5228 > 5229 Prezenty dla dzieci 9-12 lat</a> 5230 </li> 5231 5232 <li 5233 class="menu-desktop-item menu-desktop-item--level2 " 5234 > 5235 5236<a href="https://www.trefl.com/prezenty/dla-dzieci/13-lat-i-dorosli" 5237 class="snowdog-menu-link " 5238 data-menu="menu-494" 5239 > 5240 Prezenty dla dzieci 13+ i dorosÅych</a> 5241 </li> 5242 5243 <li 5244 class="menu-desktop-item menu-desktop-item--level2 " 5245 > 5246 5247<a href="https://www.trefl.com/prezenty/swiateczne" 5248 class="snowdog-menu-link " 5249 data-menu="menu-465" 5250 > 5251 Prezenty ÅwiÄ teczne</a> 5252 </li> 5253 5254 <li 5255 class="menu-desktop-item menu-desktop-item--level2 " 5256 > 5257 5258<a href="https://www.trefl.com/prezenty/urodzinowe" 5259 class="snowdog-menu-link " 5260 data-menu="menu-466" 5261 > 5262 Prezenty urodzinowe</a> 5263 </li> 5264
5265 <span class="menu-desktop-separator" aria-hidden="true"></span> 5266 <li 5267 class="menu-desktop-item menu-desktop-item--level2 " 5268 > 5269 5270<a href="https://www.trefl.com/prezenty/rodzinne" 5271 class="snowdog-menu-link " 5272 data-menu="menu-467" 5273 > 5274 Prezenty rodzinne</a> 5275 </li> 5276 5277 <li 5278 class="menu-desktop-item menu-desktop-item--level2 " 5279 > 5280 5281<a href="https://www.trefl.com/prezenty/wielkanocne-i-wiosenne" 5282 class="snowdog-menu-link " 5283 data-menu="menu-468" 5284 > 5285 Prezenty wielkanocne i wiosenne</a> 5286 </li> 5287 5288 <li 5289 class="menu-desktop-item menu-desktop-item--level2 " 5290 > 5291 5292<a href="https://www.trefl.com/prezenty/gry-planszowe-na-prezent" 5293 class="snowdog-menu-link " 5294 data-menu="menu-469" 5295 > 5296 Gry planszowe na prezent</a> 5297 </li> 5298 5299 </ul> 5300 </div> 5301 </div> 5302 </li> 5303 <li class="menu-desktop-item menu-desktop-item--level1 flex items-center 5304 " 5305 @mouseenter="openSubmenuId = null" 5306 role="menuitem" 5307 > 5308 <div class="menu-desktop-item-wrap relative flex items-center"> 5309 5310<a href="https://www.trefl.com/nowosci" 5311 class="snowdog-menu-link " 5312 data-menu="menu-457" 5313 > 5314 NowoÅci</a> 5315 5316 </div> 5317 5318 </li> 5319 <li class="menu-desktop-item menu-desktop-item--level1 flex items-center 5320 " 5321 @mouseenter="openSubmenuId = null" 5322 role="menuitem" 5323 > 5324 <div class="menu-desktop-item-wrap relative flex items-center"> 5325 5326<a href="https://www.trefl.com/puzzle-gry-zabawki-tylko-u-nas" 5327 class="snowdog-menu-link " 5328 data-menu="menu-568" 5329 > 5330 Tylko u nas!</a> 5331 5332 </div> 5333 5334 </li> 5335 <li class="menu-desktop-item menu-desktop-item--level1 flex items-center 5336 " 5337 @mouseenter="toggleSubmenu('45', null, $event)" 5338 @keydown.enter.prevent="toggleSubmenu('45', null, $event)" 5339 @keydown.space.prevent="toggleSubmenu('45', null, $event)" 5340 @keydown.escape.prevent="toggleSubmenu('45', false, $event)" 5341 aria-haspopup="true" 5342 :aria-expanded="openSubmenuId === '45'" 5343 :tabindex="openSubmenuId === '45' ? 0 : -1" 5344 role="menuitem" 5345 > 5346 <div class="menu-desktop-item-wrap relative flex items-center"> 5347 5348<a href="https://www.trefl.com/promocje" 5349 class="snowdog-menu-link " 5350 data-menu="menu-45" 5351 > 5352 Promocje</a> 5353 5354 <sp
5354an class="flex items-center justify-center ml-1.5" aria-hidden="true"> 5355 <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> 5356 </span> 5357 </div> 5358 5359 <div 5360 x-ref="submenu-45" 5361 class="menu-desktop-submenu absolute left-0 top-full w-full z-30 bg-white flex border-t border-gray-light shadow-md" 5362 x-show="openSubmenuId === '45'" 5363 x-cloak 5364 > 5365 <div class="container h-full"> 5366 <ul 5367 class="menu-desktop-list menu-desktop-list--level2 bg-white flex flex-col flex-wrap items-start content-start justify-start h-full" 5368 title="Submenu for Promocje" 5369 > 5370 <li 5371 class="menu-desktop-item menu-desktop-item--level2 " 5372 > 5373 5374<a href="https://www.trefl.com/promocje/puzzle" 5375 class="snowdog-menu-link " 5376 data-menu="menu-583" 5377 > 5378 Puzzle w promocji</a> 5379 </li> 5380 5381 <li 5382 class="menu-desktop-item menu-desktop-item--level2 " 5383 > 5384 5385<a href="https://www.trefl.com/promocje/gry" 5386 class="snowdog-menu-link " 5387 data-menu="menu-584" 5388 > 5389 Gry w promocji</a> 5390 </li> 5391 5392 <li 5393 class="menu-desktop-item menu-desktop-item--level2 " 5394 > 5395 5396<a href="https://www.trefl.com/promocje/zabawki" 5397 class="snowdog-menu-link " 5398 data-menu="menu-585" 5399 > 5400 Zabawki w promocji</a> 5401 </li> 5402 5403 <li 5404 class="menu-desktop-item menu-desktop-item--level2 " 5405 > 5406 5407<a href="https://www.trefl.com/promocje/ksiazki" 5408 class="snowdog-menu-link " 5409 data-menu="menu-586" 5410 > 5411 KsiÄ Å¼ki w promocji</a> 5412 </li> 5413 5414 </ul> 5415 </div> 5416 </div> 5417 </li> 5418 </ul> 5419 5420 <div class="free-delivery-truck-animation flex items-center font-sans gap-x-3"> 5421 <span class="font-medium leading-5" style="font-size: 0.775rem;"> 5422 Darmowa dostawa 5423 <span class="block font-bold"> 5424 już od 150 zÅ </span> 5425 </span> 5426 5427 <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"> 5428<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
542858.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"/> 5429<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"/> 5430<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"/> 5431<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"/> 5432</svg> 5433 </div> 5434 5435 <style> 5436 .free-delivery-truck-animation { 5437 .truck, 5438 .truck-line-bottom, 5439 .truck-line-middle, 5440 .truck-line-top { 5441 animation-duration: 3s; 5442 animation-iteration-count: infinite; 5443 transform: translateX(-3000px); 5444 will-change: transform; 5445 } 5446 5447 .truck { 5448 animation-name: move-truck; 5449 } 5450 5451 .truck-line-bottom, 5452 .truck-line-middle, 5453 .truck-line-top { 5454 animation-name: move-truck-line; 5455 } 5456 5457 .truck-line-middle { 5458 animation-delay: 25ms; 5459 } 5460 5461 .truck-line-bottom { 5462 animation-delay: 50ms; 5463 } 5464 } 5465 5466 @media (prefers-reduced-motion: reduce) { 5467 .free-delivery-truck-animation { 5468 .truck, 5469 .truck-line-bottom, 5470 .truck-line-middle, 5471 .truck-line-top { 5472 animation-duration: 0s; 5473 transform: translateX(0); 5474 } 5475 } 5476 } 5477 5478 @keyframes move-truck { 5479 0% { 5480 transform: translateX(-3000px); 5481 } 5482 10% { 5483 transform: rotate(6deg); 5484 } 5485 20% { 5486 transform:rotate(4deg); 5487 } 5488 60% { 5489 transform: translateX(-400px); 5490 } 5491 70% { 5492 opacity: 1; 5493 } 5494 92% { 5495 opacity: 0; 5496 } 5497 100% { 5498 transform: translateX(6000px); 5499 opacity: 0; 5500 } 5501 } 5502 5503 @keyframes move-truck-line { 5504 0% { 5505 transform: translateX(-3000px); 5506 } 5507 10% { 5508 transform: rotate(4deg); 5509 } 5510 20% { 5511 transform: rotate(2deg); 5512 } 5513 55%, 60%, 65% { 5514 transform: translateX(-400px); 5515 } 5516 70% { 5517 opacity: 1; 5518 } 5519 92% { 5520 opacity: 0; 5521 } 5522 100% { 5523 transform: translateX(6000px); 5524 opacity: 0; 5525 } 5526 } 5527</style> 5528 </nav> 5529 </div> 5530 </div> 5531</header><main id="maincontent" class="page-main"><div id="contentarea" tabindex="-1"></div> 5532<div class="page messages">
5532<script> 5533 function initMessages() { 5534 "use strict"; 5535 return { 5536 messages: window.mageMessages || [], 5537 isEmpty() { 5538 return this.messages.reduce( 5539 function (isEmpty, message) { 5540 return isEmpty && message === undefined 5541 }, true 5542 ) 5543 }, 5544 hasMessages() { 5545 return !this.isEmpty(); 5546 }, 5547 hasMessage() { 5548 return !!this.message; 5549 }, 5550 removeMessage() { 5551 this.messages[this.index] = undefined; 5552 }, 5553 addMessages(messages, hideAfter) { 5554 messages.map((message) => { 5555 this.messages = this.messages.concat(message); 5556 if (hideAfter === undefined && message.type === 'success' && window.defaultSuccessMessageTimeout) { 5557 hideAfter = window.defaultSuccessMessageTimeout; 5558 } 5559 if (hideAfter) { 5560 this.setHideTimeOut(this.messages.length -1, hideAfter); 5561 } 5562 }); 5563 }, 5564 setHideTimeOut(messageIndex, hideAfter) { 5565 setTimeout((messageIndex) => { 5566 this.messages[messageIndex] = undefined; 5567 }, hideAfter, messageIndex); 5568 }, 5569 eventListeners: { 5570 ['@messages-loaded.window'](event) { 5571 this.addMessages(event.detail.messages, event.detail.hideAfter) 5572 }, 5573 ['@private-content-loaded.window'](event) { 5574 const data = event.detail.data; 5575 if ( 5576 data.messages && 5577 data.messages.messages && 5578 data.messages.messages.length 5579 ) { 5580 this.addMessages(data.messages.messages); 5581 } 5582 }, 5583 ['@clear-messages.window']() { 5584 this.messages = []; 5585 } 5586 }, 5587 getMessageUiId() { 5588 return 'message-' + this.message.type; 5589 } 5590 } 5591 } 5592 5593 window.addEventListener('alpine:init', () => Alpine.data('initMessages', initMessages), {once: true}) 5594</script>
5594 5595<section id="messages" 5596 x-data="initMessages" 5597 x-bind="eventListeners" 5598 role="alert" 5599> 5600 <template x-if="hasMessages"> 5601 <div class="w-full"> 5602 <div class="messages container mx-auto py-3"> 5603 <template x-for="(message, index) in messages" :key="index"> 5604 <div> 5605 <template x-if="hasMessage"> 5606 <div class="message" 5607 :class="message.type" 5608 :ui-id="getMessageUiId" 5609 > 5610 <span x-html="message.text"></span> 5611 <button 5612 type="button" 5613 class="text-gray-600 hover:text-black" 5614 aria-label="Zamknij wiadomoÅÄ" 5615 @click.prevent="removeMessage" 5616 > 5617 <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"> 5618 <path stroke-linecap="round" stroke-linejoin="round" d="M6 18L18 6M6 6l12 12"/> 5619</svg> 5620 </button> 5621 </div> 5622 </template> 5623 </div> 5624 </template> 5625 </div> 5626 </div> 5627 </template> 5628</section> 5629</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"> 5630 <h1 class="font-sans font-normal text-2xl lg:text-4xl text-black" 5631 > 5632 <span class="base" data-ui-id="page-title-wrapper" >MÄ dre zabawki â pomysÅy na wartoÅciowÄ zabawÄ po szkole</span> </h1> 5633 </div> 5634 <nav class="breadcrumbs" aria-label="Breadcrumb"> 5635 <ol class="items list-reset flex flex-wrap text-xs text-gray-dark font-medium max-w-md"> 5636 <li class="item flex home"> 5637 <a href="https://www.trefl.com/" 5638 title="Przejdź na stronę główną" 5639 class="hover:underline" 5640 >Strona gÅówna</a> 5641 </li> 5642 <li class="item flex blog"> 5643 <span aria-hidden="true" class="separator px-2">/</span> 5644 <a href="https://www.trefl.com/blog" 5645 title="Blog" 5646 class="hover:underline" 5647 >Blog</a> 5648 </li> 5649 <li class="item flex madre-zabawki-pomysly-na-wartosciowa-zabawe-po-szkole"> 5650 <span aria-hidden="true" class="separator px-2">/</span> 5651 <span 5652 class="text-primary line-clamp-1" 5653 aria-current="page" 5654 >MÄ dre zabawki â pomysÅy na wartoÅciowÄ zabawÄ po szkole</span> 5655 </li> 5656 </ol> 5657 </nav> 5658
5658<script type="application/ld+json"> 5659 { 5660 "@context": "http://schema.org", 5661 "@type": "BreadcrumbList", 5662 "itemListElement": [ 5663 { 5664 "@type": "ListItem", 5665 "position": "1", 5666 "item": { 5667 "@id": "https://www.trefl.com/", 5668 "name": "Strona gÅówna" 5669 } 5670 } 5671 , { 5672 "@type": "ListItem", 5673 "position": "2", 5674 "item": { 5675 "@id": "https://www.trefl.com/blog", 5676 "name": "Blog" 5677 } 5678 } 5679 , { 5680 "@type": "ListItem", 5681 "position": "3", 5682 "item": { 5683 "@id": "", 5684 "name": "MÄ dre zabawki â pomysÅy na wartoÅciowÄ zabawÄ po szkole" 5685 } 5686 } 5687 ] 5688 } 5689 </script>
5689 5690</div></div><div class="columns"><div class="column main">
5690<script nonce="ODN6OGg5cXdsazIxaWMyMWozb2h2Y3FuajFnNXJ5MGI="> 5691 var feedId = getUrlParam('ff'), 5692 product = getUrlParam('fp'), 5693 currentDate = new Date(), 5694 session = getCookie('feed_session'); 5695 5696 if (!session) { 5697 session = '' + Math.floor(currentDate.getTime() / 1000) + Math.floor(Math.random() * 10000001); 5698 } 5699 5700 if (session && feedId > 0 && product > 0) { 5701 setCookie('feed_session', session, {expires: 365, path: '/'}); 5702 setCookie('feed_id', feedId, 365); 5703 5704 var xhr = new XMLHttpRequest(), 5705 baseUrl = 'https://www.trefl.com/', 5706 url = BASE_URL + '?rnd=' + Math.floor(Math.random() * 10000001) + "&feed=" + feedId + "&session=" + session + "&product=" + product; 5707 5708 xhr.open('GET', url, true); 5709 xhr.setRequestHeader('Content-Type', 'application/json'); 5710 xhr.send(); 5711 } 5712 5713 function getUrlParam(name) { 5714 let results = new RegExp('[\?&]' + name + '=([^&#]*)').exec(window.location.href); 5715 5716 if (results === null) { 5717 return ''; 5718 } else { 5719 return results[1] || 0; 5720 } 5721 } 5722 5723 function getCookie(cookieName) { 5724 var name = cookieName + "=", 5725 decodedCookie = decodeURIComponent(document.cookie), 5726 cookieArray = decodedCookie.split(';'); 5727 5728 for (var i = 0; i < cookieArray.length; i++) { 5729 var cookie = cookieArray[i].trim(); 5730 if (cookie.indexOf(name) === 0) { 5731 return cookie.substring(name.length, cookie.length); 5732 } 5733 } 5734 5735 return null; 5736 } 5737 5738 function setCookie(cookieName, cookieValue, expirationDays) { 5739 var d = new Date(); 5740 d.setTime(d.getTime() + (expirationDays * 24 * 60 * 60 * 1000)); 5741 var expires = "expires=" + d.toUTCString(); 5742 document.cookie = cookieName + "=" + cookieValue + ";" + expires + ";path=/"; 5743 } 5744</script>
5744 5745<article class="prose w-full max-w-none lg:-mt-44"> 5746 <img fetchpriority="high" 5747 srcset="https://www.trefl.com/media/mageplaza/blog/post/resize/1146x/m/a/madre-zabawki-rozwijaja-umiejetnosci-dziecka.jpg 1x, 5748 https://www.trefl.com/media/mageplaza/blog/post/resize/1400x/m/a/madre-zabawki-rozwijaja-umiejetnosci-dziecka.jpg 2x" 5749 src="https://www.trefl.com/media/mageplaza/blog/post/resize/1146x/m/a/madre-zabawki-rozwijaja-umiejetnosci-dziecka.jpg" 5750 alt="Mądre zabawki – pomysły na wartościową zabawę po szkole" 5751 aria-hidden="true" 5752 class="w-full" 5753 /> 5754 5755 <div class="w-full max-w-3xl mx-auto"> 5756 <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> 5757<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> 5758<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> 5759<h2><strong>MÄ dre zabawki dla dzieci â czym wÅaÅciwie sÄ ?</strong></h2> 5760<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> 5761<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> 5762<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> 5763<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> 5764<h2><strong>Gry edukacyjne dla dzieci â nauka, która staje siÄ przygodÄ </strong></h2> 5765<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> 5766<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> 5767<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> 5768<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> 5769<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> 5770<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> 5771<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> 5772<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> 5773 5774<!-- Import czcionki Raleway z Google Fonts (jeÅli jeszcze nie masz na stronie) -->
5775<link rel="preconnect" href="https://fonts.googleapis.com"> 5776<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> 5777<link href="https://fonts.googleapis.com/css2?family=Raleway:wght@700;800&display=swap" rel="stylesheet"> 5778 5779<style> 5780.trefl-inline-related { 5781 display: flex; 5782 align-items: center; 5783 gap: 12px; 5784 margin: 20px 0; 5785 padding: 12px 16px; 5786 background-color: #f9f9f9; 5787 border: 1px solid #eef0f2; 5788 border-radius: 10px; 5789 text-decoration: none; 5790 font-family: 'Raleway', sans-serif; 5791 font-size: 14px; 5792 line-height: 1.5; 5793 color: #333333; 5794 width: 100%; 5795 box-sizing: border-box; 5796 transition: background-color 0.2s ease, transform 0.2s ease, box-shadow 0.2s ease, border-color 0.2s ease; 5797} 5798 5799.trefl-inline-related::before { 5800 content: ""; 5801 display: block; 5802 flex-shrink: 0; 5803 width: 20px; 5804 height: 20px; 5805 /* Ikona otwartej ksiÄ Å¼ki w kolorze brandowej czerwieni Trefl (#e30613) */ 5806 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"); 5807 background-repeat: no-repeat; 5808 background-position: center; 5809 background-size: contain; 5810 transition: transform 0.2s ease; 5811} 5812 5813.trefl-inline-related:hover { 5814 background-color: #ffffff; 5815 border-color: #e30613; 5816 transform: translateY(-1px); /* Delikatniejsze uniesienie dopasowane do mniejszego gabarytu */ 5817 box-shadow: 0 4px 12px rgba(227, 6, 19, 0.05); 5818} 5819 5820.trefl-inline-related:hover::before { 5821 transform: scale(1.05); 5822} 5823 5824.trefl-inline-text-wrapper { 5825 flex-grow: 1; 5826} 5827 5828.trefl-inline-related .label { 5829 color: #e30613; 5830 font-weight: 800; 5831 margin-right: 4px; 5832 letter-spacing: 0.2px; 5833} 5834 5835.trefl-inline-related .title { 5836 font-weight: 700; 5837 color: #1a1a1a; 5838 transition: color 0.2s ease; 5839} 5840 5841.trefl-inline-related:hover .title { 5842 color: #e30613; 5843} 5844</style> 5845 5846<a href="https://www.trefl.com/blog/post/gra-planszowa-spy-guy-intrygujaca-rozrywka-dla-calej-rodziny" class="trefl-inline-related"> 5847 <div class="trefl-inline-text-wrapper"> 5848 <span class="label">Zobacz także:</span> 5849 <span class="title">Gra planszowa Spy Guy - intrygujÄ ca rozrywka dla caÅej rodziny! 5850</span> 5851 </div> 5852</a> 5853<h2><strong>Zestaw kreatywny dla fanów klocków â czas coÅ zbudowaÄ z prawdziwej cegÅy!</strong></h2> 5854<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> 5855<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> 5856<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> 5857<p></p> 5858<p>Co wiÄcej, <strong>szeÅciokÄ tne podstawki pozwalajÄ ÅÄ czyÄ poszczególne zestawy</strong>
5858. Jedna konstrukcja może wiÄc z czasem zamieniÄ siÄ w caÅe miasteczko z kawiarniÄ , remizÄ , gabinetem weterynaryjnym i kolejnymi miejscami.</p> 5859<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> 5860<!-- Import czcionki Raleway z Google Fonts (jeÅli jeszcze nie masz na stronie) --> 5861<link rel="preconnect" href="https://fonts.googleapis.com"> 5862<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> 5863<link href="https://fonts.googleapis.com/css2?family=Raleway:wght@700;800&display=swap" rel="stylesheet"> 5864 5865<style> 5866.trefl-inline-related { 5867 display: flex; 5868 align-items: center; 5869 gap: 12px; 5870 margin: 20px 0; 5871 padding: 12px 16px; 5872 background-color: #f9f9f9; 5873 border: 1px solid #eef0f2; 5874 border-radius: 10px; 5875 text-decoration: none; 5876 font-family: 'Raleway', sans-serif; 5877 font-size: 14px; 5878 line-height: 1.5; 5879 color: #333333; 5880 width: 100%; 5881 box-sizing: border-box; 5882 transition: background-color 0.2s ease, transform 0.2s ease, box-shadow 0.2s ease, border-color 0.2s ease; 5883} 5884 5885.trefl-inline-related::before { 5886 content: ""; 5887 display: block; 5888 flex-shrink: 0; 5889 width: 20px; 5890 height: 20px; 5891 /* Ikona otwartej ksiÄ Å¼ki w kolorze brandowej czerwieni Trefl (#e30613) */ 5892 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"); 5893 background-repeat: no-repeat; 5894 background-position: center; 5895 background-size: contain; 5896 transition: transform 0.2s ease; 5897} 5898 5899.trefl-inline-related:hover { 5900 background-color: #ffffff; 5901 border-color: #e30613; 5902 transform: translateY(-1px); /* Delikatniejsze uniesienie dopasowane do mniejszego gabarytu */ 5903 box-shadow: 0 4px 12px rgba(227, 6, 19, 0.05); 5904} 5905 5906.trefl-inline-related:hover::before { 5907 transform: scale(1.05); 5908} 5909 5910.trefl-inline-text-wrapper { 5911 flex-grow: 1; 5912} 5913 5914.trefl-inline-related .label { 5915 color: #e30613; 5916 font-weight: 800; 5917 margin-right: 4px; 5918 letter-spacing: 0.2px; 5919} 5920 5921.trefl-inline-related .title { 5922 font-weight: 700; 5923 color: #1a1a1a; 5924 transition: color 0.2s ease; 5925} 5926 5927.trefl-inline-related:hover .title { 5928 color: #e30613; 5929} 5930</style> 5931 5932<a href="https://www.trefl.com/blog/post/klocki-trefl-my-connect-buduj-poruszaj-i-transformuj-swiat" class="trefl-inline-related"> 5933 <div class="trefl-inline-text-wrapper"> 5934 <span class="label">Zobacz także:</span> 5935 <span class="title">Klocki konstrukcyjne Trefl & MY CONNECT - buduj, poruszaj i transformuj Åwiat! 5936</span> 5937 </div> 5938</a> 5939<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> 5940<h2><strong>Samochody dla dziecka â maÅe pojazdy, wielkie historie</strong></h2> 5941<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> 5942<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> 5943<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> 5944<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> 5945<h2><strong>Puzzle dla dzieci â czas na ukÅadanie i chwilÄ wyciszenia</strong></h2> 5946<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> 5947<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
5947acji 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> 5948<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> 5949<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> 5950<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> 5951<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> 5952<!-- Import czcionki Raleway z Google Fonts (jeÅli jeszcze nie masz na stronie) --> 5953<link rel="preconnect" href="https://fonts.googleapis.com"> 5954<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> 5955<link href="https://fonts.googleapis.com/css2?family=Raleway:wght@700;800&display=swap" rel="stylesheet"> 5956 5957<style> 5958.trefl-inline-related { 5959 display: flex;
5960 align-items: center; 5961 gap: 12px; 5962 margin: 20px 0; 5963 padding: 12px 16px; 5964 background-color: #f9f9f9; 5965 border: 1px solid #eef0f2; 5966 border-radius: 10px; 5967 text-decoration: none; 5968 font-family: 'Raleway', sans-serif; 5969 font-size: 14px; 5970 line-height: 1.5; 5971 color: #333333; 5972 width: 100%; 5973 box-sizing: border-box; 5974 transition: background-color 0.2s ease, transform 0.2s ease, box-shadow 0.2s ease, border-color 0.2s ease; 5975} 5976 5977.trefl-inline-related::before { 5978 content: ""; 5979 display: block; 5980 flex-shrink: 0; 5981 width: 20px; 5982 height: 20px; 5983 /* Ikona otwartej ksiÄ Å¼ki w kolorze brandowej czerwieni Trefl (#e30613) */ 5984 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"); 5985 background-repeat: no-repeat; 5986 background-position: center; 5987 background-size: contain; 5988 transition: transform 0.2s ease; 5989} 5990 5991.trefl-inline-related:hover { 5992 background-color: #ffffff; 5993 border-color: #e30613; 5994 transform: translateY(-1px); /* Delikatniejsze uniesienie dopasowane do mniejszego gabarytu */ 5995 box-shadow: 0 4px 12px rgba(227, 6, 19, 0.05); 5996} 5997 5998.trefl-inline-related:hover::before { 5999 transform: scale(1.05); 6000} 6001 6002.trefl-inline-text-wrapper { 6003 flex-grow: 1; 6004} 6005 6006.trefl-inline-related .label { 6007 color: #e30613; 6008 font-weight: 800; 6009 margin-right: 4px; 6010 letter-spacing: 0.2px; 6011} 6012 6013.trefl-inline-related .title { 6014 font-weight: 700; 6015 color: #1a1a1a; 6016 transition: color 0.2s ease; 6017} 6018 6019.trefl-inline-related:hover .title { 6020 color: #e30613; 6021} 6022</style> 6023 6024<a href="https://www.trefl.com/blog/post/dlaczego-warto-ukladac-puzzle" class="trefl-inline-related"> 6025 <div class="trefl-inline-text-wrapper"> 6026 <span class="label">Zobacz także:</span> 6027 <span class="title">Dlaczego warto ukÅadaÄ puzzle? 6028</span> 6029 </div> 6030</a> 6031<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> 6032<h2><strong>Gra dla dziesiÄciolatka? Postaw na wspólnÄ rozgrywkÄ peÅnÄ Åmiechu</strong></h2> 6033<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> 6034<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> 6035<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> 6036<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> 6037<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> 6038<h2><strong>Jak dobraÄ mÄ drÄ zabawkÄ do wieku dziecka?</strong></h2> 6039<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> 6040<ul style="margin-top: 0cm;" type="disc"> 6041<li style="mso-list: l0 level1 lfo1; tab-stops: list 36.0pt;"> 6042<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> 6043</li> 6044<li style="mso-list: l0 level1 lfo1; tab-stops: list 36.0pt;"> 6045<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> 6046</li> 6047<li style="mso-list: l0 level1 lfo1; tab-stops: list 36.0pt;"> 6048<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> 6049</li> 6050<li style="mso-list: l0 level1 lfo1; tab-stops: list 36.0pt;"> 6051<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> 6052</li> 6053</ul> 6054<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> 6055<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> 6056<h2><strong>Powrót do szkoÅy â i do dobrej zabawy</strong></h2> 6057<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> 6058<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
6058i 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> 6059<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> 6060<!-- Import czcionki Raleway z Google Fonts (jeÅli jeszcze nie masz na stronie) --> 6061<link rel="preconnect" href="https://fonts.googleapis.com"> 6062<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> 6063<link href="https://fonts.googleapis.com/css2?family=Raleway:wght@700;800&display=swap" rel="stylesheet"> 6064 6065<style> 6066.trefl-inline-related { 6067 display: flex; 6068 align-items: center; 6069 gap: 12px; 6070 margin: 20px 0; 6071 padding: 12px 16px; 6072 background-color: #f9f9f9; 6073 border: 1px solid #eef0f2; 6074 border-radius: 10px; 6075 text-decoration: none; 6076 font-family: 'Raleway', sans-serif; 6077 font-size: 14px; 6078 line-height: 1.5; 6079 color: #333333; 6080 width: 100%; 6081 box-sizing: border-box; 6082 transition: background-color 0.2s ease, transform 0.2s ease, box-shadow 0.2s ease, border-color 0.2s ease; 6083} 6084 6085.trefl-inline-related::before { 6086 content: ""; 6087 display: block; 6088 flex-shrink: 0; 6089 width: 20px; 6090 height: 20px; 6091 /* Ikona otwartej ksiÄ Å¼ki w kolorze brandowej czerwieni Trefl (#e30613) */ 6092 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"); 6093 background-repeat: no-repeat; 6094 background-position: center; 6095 background-size: contain; 6096 transition: transform 0.2s ease; 6097} 6098 6099.trefl-inline-related:hover { 6100 background-color: #ffffff; 6101 border-color: #e30613; 6102 transform: translateY(-1px); /* Delikatniejsze uniesienie dopasowane do mniejszego gabarytu */ 6103 box-shadow: 0 4px 12px rgba(227, 6, 19, 0.05); 6104} 6105 6106.trefl-inline-related:hover::before { 6107 transform: scale(1.05); 6108} 6109 6110.trefl-inline-text-wrapper { 6111 flex-grow: 1; 6112} 6113 6114.trefl-inline-related .label { 6115 color: #e30613; 6116 font-weight: 800; 6117 margin-right: 4px; 6118 letter-spacing: 0.2px; 6119} 6120 6121.trefl-inline-related .title { 6122 font-weight: 700; 6123 color: #1a1a1a; 6124 transition: color 0.2s ease; 6125} 6126 6127.trefl-inline-related:hover .title { 6128 color: #e30613; 6129} 6130</style> 6131<a href="https://www.trefl.com/blog/post/jaki-plecak-dla-pierwszoklasisty-wybierz-najlepszy-tornister-dla-swojego-dziecka" class="trefl-inline-related"> 6132 <div class="trefl-inline-text-wrapper"> 6133 <span class="label">Zobacz także:</span> 6134 <span class="title">Jaki plecak dla pierwszoklasisty? Wybierz najlepszy tornister dla swojego dziecka! 6135 6136</span> 6137 </div> 6138</a> 6139 6140<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> 6141<h2><strong>FAQ â mÄ dre zabawki dla dzieci</strong></h2> 6142<h3><strong>Co to sÄ mÄ dre zabawki dla dzieci?</strong></h3> 6143<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> 6144<h3><strong>Jakie mÄ dre zabawki dla 6-latka warto wybraÄ?</strong></h3> 6145<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> 6146<h3><strong>Jakie mÄ dre zabawki dla 7-latka bÄdÄ dobrym wyborem?</strong></h3> 6147<p>
6147Dla 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> 6148<h3><strong>Czy zabawki edukacyjne muszÄ przypominaÄ naukÄ?</strong></h3> 6149<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> 6150<h3><strong>Jakie kreatywne zabawki sprawdzÄ siÄ dla dzieci?</strong></h3> 6151<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> 6152<h3><strong>Co wybraÄ dla dziecka do zabawy po szkole?</strong></h3> 6153<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> 6154</article> 6155</div></div></main><footer class="page-footer"><div class="footer content"><template id="trustedshops-badge_6ab4f37e1cb92"> 6156</template>
6157<script> 6158window.addEventListener('init-external-scripts', () => { 6159 const template = document.getElementById('trustedshops-badge_6ab4f37e1cb92'); 6160 if (template?.content) { 6161 const clone = document.importNode(template.content, true); 6162 document.body.appendChild(clone); 6163 } 6164}, {once: true, passive: true}); 6165</script>
6165 6166<div class="container"> 6167 <div id="newsletter-form-sm" style="width: 100%; max-width: 1200px; margin: 0 auto;"></div> 6168</div> 6169<section data-el="footer-yarn" class="bg-white py-8 lg:py-16 overflow-clip" aria-hidden="true"> 6170 <svg fill="none" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1440 141" class="w-full"> 6171 <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> 6172 </svg> 6173</section> 6174 6175 6176<section data-el="footer-social" class="relative z-10"> 6177 <ul class="social-menu"> 6178 <li> 6179 <a href="https://www.facebook.com/Trefl.toys/" 6180 title="Przejdź na Trefl Facebook" 6181 target="_blank" class="text-header-top" 6182 > 6183 <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> 6184 </a> 6185 </li> 6186 <li> 6187 <a href="https://pl.linkedin.com/company/trefl-s-a-" 6188 title="Przejdź na Trefl LinkedIn" 6189 target="_blank" class="text-header-top" 6190 > 6191 <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> 6192 </a> 6193 </li> 6194 <li> 6195 <a href="mailto:[email protected]" 6196 title="WyÅlij e-mail na [email protected]" 6197 target="_blank" class="text-header-top" 6198 > 6199 <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> 6200 </a> 6201 </li> 6202 </ul></section> 6203 6204<section data-el="footer-menu" class="bg-gray-light py-12 lg:py-28" aria-hidden="true"> 6205 <div class="container"> 6206 <div x-data="{ activeTab: 0 }" 6207 role="tablist" 6208 @keydown.right.prevent.stop="activeTab = Math.min(activeTab + 1, 1)" 6209 @keydown.left.prevent.stop="activeTab = Math.max(activeTab - 1, 0)" 6210 x-defer="intersect" 6211 > 6212 6213 <div class="flex gap-x-8 overflow-x-auto"> 6214 <button class="px-3.5 py-1 cursor-pointer font-medium transition-colors 6215 bg-white text-red" 6216 role="tab" 6217 @click.prevent="activeTab = 0" 6218 @keypress.enter="activeTab = 0" 6219 :aria-controls="'tab-panel-' + 0" 6220 :aria-selected="activeTab === 0" 6221 :tabindex="activeTab === 0 ? 0 : -1" 6222 class="" 6223 :class="{ 6224 'bg-white text-red': activeTab === 0, 6225 'hover:bg-white/50 focus:bg-white/50': activeTab !== 0 }" 6226 > 6227 Popularne kategorie </button> 6228 <button class="px-3.5 py-1 cursor-pointer font-medium transition-colors 6229 hover:bg-white/50 focus:bg-white/50" 6230 role="tab" 6231 @click.prevent="activeTab = 1" 6232 @keypress.enter="activeTab = 1" 6233 :aria-controls="'tab-panel-' + 1" 6234 :aria-selected="activeTab === 1" 6235 :tabindex="activeTab === 1 ? 0 : -1" 6236 class="" 6237 :class="{ 6238 'bg-white text-red': activeTab === 1, 6239 'hover:bg-white/50 focus:bg-white/50': activeTab !== 1 }" 6240 > 6241 Popularne marki </button> 6242 </div> 6243 6244 <div x-show="activeTab === 0" 6245 role="tabpanel" 6246 tabindex="0" 6247 id="'tab-panel-' + 0" 6248 aria-labelledby="'tab-' + 0" 6249 :hidden="activeTab !== 0" 6250 > 6251 <div class="grid grid-cols-2 md:grid-cols-none md:grid-flow-col md:auto-cols-auto gap-4"> 6252 <ul class="list-none mt-7"> 6253 <li class="[&>
6253a:hover]:hover:underline [&>a]:w-full [&>a]:block py-1 text-xs md:text-sm"> 6254 6255<a 6256 href="https://www.trefl.com/puzzle/puzzle-jubileuszowe" 6257 class="__inner-link" 6258 data-menu="menu-64"> 6259 Puzzle na 40-lecie Trefl</a> 6260 6261 </li> 6262 <li class="[&>a:hover]:hover:underline [&>a]:w-full [&>a]:block py-1 text-xs md:text-sm"> 6263 6264<a 6265 href="https://www.trefl.com/puzzle/500-elementow" 6266 class="__inner-link" 6267 data-menu="menu-338"> 6268 Puzzle 500 elementów</a> 6269 6270 </li> 6271 <li class="[&>a:hover]:hover:underline [&>a]:w-full [&>a]:block py-1 text-xs md:text-sm"> 6272 6273<a 6274 href="https://www.trefl.com/puzzle/1000-elementow" 6275 class="__inner-link" 6276 data-menu="menu-65"> 6277 Puzzle 1000 elementów</a> 6278 6279 </li> 6280 <li class="[&>a:hover]:hover:underline [&>a]:w-full [&>a]:block py-1 text-xs md:text-sm"> 6281 6282<a 6283 href="https://www.trefl.com/puzzle/2000-elementow" 6284 class="__inner-link" 6285 data-menu="menu-66"> 6286 Puzzle 2000 elementów</a> 6287 6288 </li> 6289 <li class="[&>a:hover]:hover:underline [&>a]:w-full [&>a]:block py-1 text-xs md:text-sm"> 6290 6291<a 6292 href="https://www.trefl.com/puzzle/3000-elementow" 6293 class="__inner-link" 6294 data-menu="menu-67"> 6295 Puzzle 3000 elementów</a> 6296 6297 </li> 6298 <li class="[&>a:hover]:hover:underline [&>a]:w-full [&>a]:block py-1 text-xs md:text-sm"> 6299 6300<a 6301 href="https://www.trefl.com/puzzle/4000-elementow" 6302 class="__inner-link" 6303 data-menu="menu-68"> 6304 Puzzle 4000 elementów</a> 6305 6306 </li> 6307 <li class="[&>a:hover]:hover:underline [&>a]:w-full [&>a]:block py-1 text-xs md:text-sm"> 6308 6309<a 6310 href="https://www.trefl.com/puzzle/6000-elementow" 6311 class="__inner-link" 6312 data-menu="menu-69"> 6313 Puzzle 6000 elementów</a> 6314 6315 </li> 6316 <li class="[&>a:hover]:hover:underline [&>a]:w-full [&>a]:block py-1 text-xs md:text-sm"> 6317 6318<a 6319 href="https://www.trefl.com/puzzle/prime-uft/prime-9000" 6320 class="__inner-link" 6321 data-menu="menu-70"> 6322 Puzzle 9000 elementów</a> 6323 6324 </li> 6325 <li class="[&>a:hover]:hover:underline [&>a]:w-full [&>a]:block py-1 text-xs md:text-sm"> 6326 6327<a 6328 href="https://www.trefl.com/puzzle/prime-uft/prime-13500" 6329 class="__inner-link" 6330 data-menu="menu-71"> 6331 Puzzle 13500 elementów</a> 6332 6333 </li> 6334 <li class="[&>a:hover]:hover:underline [&>a]:w-full [&>a]:block py-1 text-xs md:text-sm"> 6335 6336<a 6337 href="https://www.trefl.com/puzzle/prime-uft/prime-21000" 6338 class="__inner-link" 6339 data-menu="menu-339"> 6340 Puzzle 21000 elementów</a> 6341 6342 </li> 6343 </ul> 6344 <ul class="list-none mt-7"> 6345 <li class="[&>a:hover]:hover:underline [&>a]:w-full [&>a]:block py-1 text-xs md:text-sm"> 6346 6347<a 6348 href="https://www.trefl.com/puzzle/dla-dzieci/puzzle-3-w-1" 6349 class="__inner-link" 6350 data-menu="menu-72"> 6351 Puzzle 3 w 1</a> 6352 6353 </li> 6354 <li class="[&>
6354a:hover]:hover:underline [&>a]:w-full [&>a]:block py-1 text-xs md:text-sm"> 6355 6356<a 6357 href="https://www.trefl.com/puzzle/dla-dzieci/puzzle-4-w-1" 6358 class="__inner-link" 6359 data-menu="menu-73"> 6360 Puzzle 4 w 1</a> 6361 6362 </li> 6363 <li class="[&>a:hover]:hover:underline [&>a]:w-full [&>a]:block py-1 text-xs md:text-sm"> 6364 6365<a 6366 href="https://www.trefl.com/puzzle/prime-uft/velvet" 6367 class="__inner-link" 6368 data-menu="menu-74"> 6369 Puzzle Velvet</a> 6370 6371 </li> 6372 <li class="[&>a:hover]:hover:underline [&>a]:w-full [&>a]:block py-1 text-xs md:text-sm"> 6373 6374<a 6375 href="https://www.trefl.com/puzzle/puzzle-premium-plus-quality" 6376 class="__inner-link" 6377 data-menu="menu-75"> 6378 Puzzle Premium Plus</a> 6379 6380 </li> 6381 <li class="[&>a:hover]:hover:underline [&>a]:w-full [&>a]:block py-1 text-xs md:text-sm"> 6382 6383<a 6384 href="https://www.trefl.com/puzzle/drewniane" 6385 class="__inner-link" 6386 data-menu="menu-76"> 6387 Puzzle drewniane</a> 6388 6389 </li> 6390 <li class="[&>a:hover]:hover:underline [&>a]:w-full [&>a]:block py-1 text-xs md:text-sm"> 6391 6392<a 6393 href="https://www.trefl.com/puzzle/puzzle-filmowe" 6394 class="__inner-link" 6395 data-menu="menu-77"> 6396 Puzzle filmowe</a> 6397 6398 </li> 6399 <li class="[&>a:hover]:hover:underline [&>a]:w-full [&>a]:block py-1 text-xs md:text-sm"> 6400 6401<a 6402 href="https://www.trefl.com/puzzle/puzzle-kosmos" 6403 class="__inner-link" 6404 data-menu="menu-78"> 6405 Puzzle kosmos</a> 6406 6407 </li> 6408 <li class="[&>a:hover]:hover:underline [&>a]:w-full [&>a]:block py-1 text-xs md:text-sm"> 6409 6410<a 6411 href="https://www.trefl.com/puzzle/puzzle-krajobrazy" 6412 class="__inner-link" 6413 data-menu="menu-79"> 6414 Puzzle krajobrazy</a> 6415 6416 </li> 6417 <li class="[&>a:hover]:hover:underline [&>a]:w-full [&>a]:block py-1 text-xs md:text-sm"> 6418 6419<a 6420 href="https://www.trefl.com/puzzle/puzzle-kulinarne" 6421 class="__inner-link" 6422 data-menu="menu-80"> 6423 Puzzle kulinarne</a> 6424 6425 </li> 6426 <li class="[&>a:hover]:hover:underline [&>a]:w-full [&>a]:block py-1 text-xs md:text-sm"> 6427 6428<a 6429 href="https://www.trefl.com/puzzle/puzzle-mapy" 6430 class="__inner-link" 6431 data-menu="menu-81"> 6432 Puzzle mapy</a> 6433 6434 </li> 6435 </ul> 6436 <ul class="list-none mt-7"> 6437 <li class="[&>a:hover]:hover:underline [&>a]:w-full [&>a]:block py-1 text-xs md:text-sm"> 6438 6439<a 6440 href="https://www.trefl.com/puzzle/puzzle-miasta" 6441 class="__inner-link" 6442 data-menu="menu-82"> 6443 Puzzle miasta</a> 6444 6445 </li> 6446 <li class="[&>a:hover]:hover:underline [&>a]:w-full [&>a]:block py-1 text-xs md:text-sm"> 6447 6448<a 6449 href="https://www.trefl.com/puzzle/puzzle-obrazy" 6450 class="__inner-link" 6451 data-menu="menu-83"> 6452 Puzzle obrazy</a> 6453 6454 </li> 6455 <li class="[&>
6455a:hover]:hover:underline [&>a]:w-full [&>a]:block py-1 text-xs md:text-sm"> 6456 6457<a 6458 href="https://www.trefl.com/puzzle/puzzle-samochody" 6459 class="__inner-link" 6460 data-menu="menu-84"> 6461 Puzzle samochody</a> 6462 6463 </li> 6464 <li class="[&>a:hover]:hover:underline [&>a]:w-full [&>a]:block py-1 text-xs md:text-sm"> 6465 6466<a 6467 href="https://www.trefl.com/puzzle/puzzle-statki" 6468 class="__inner-link" 6469 data-menu="menu-340"> 6470 Puzzle statki</a> 6471 6472 </li> 6473 <li class="[&>a:hover]:hover:underline [&>a]:w-full [&>a]:block py-1 text-xs md:text-sm"> 6474 6475<a 6476 href="https://www.trefl.com/puzzle/puzzle-zwierzeta" 6477 class="__inner-link" 6478 data-menu="menu-85"> 6479 Puzzle zwierzÄta</a> 6480 6481 </li> 6482 <li class="[&>a:hover]:hover:underline [&>a]:w-full [&>a]:block py-1 text-xs md:text-sm"> 6483 6484<a 6485 href="https://www.trefl.com/puzzle/puzzle-swiateczne" 6486 class="__inner-link" 6487 data-menu="menu-86"> 6488 Puzzle ÅwiÄ teczne</a> 6489 6490 </li> 6491 <li class="[&>a:hover]:hover:underline [&>a]:w-full [&>a]:block py-1 text-xs md:text-sm"> 6492 6493<a 6494 href="https://www.trefl.com/puzzle/puzzloramy" 6495 class="__inner-link" 6496 data-menu="menu-87"> 6497 PuzzloRamy</a> 6498 6499 </li> 6500 <li class="[&>a:hover]:hover:underline [&>a]:w-full [&>a]:block py-1 text-xs md:text-sm"> 6501 6502<a 6503 href="https://www.trefl.com/puzzle/fotopuzzle" 6504 class="__inner-link" 6505 data-menu="menu-395"> 6506 Fotopuzzle</a> 6507 6508 </li> 6509 <li class="[&>a:hover]:hover:underline [&>a]:w-full [&>a]:block py-1 text-xs md:text-sm"> 6510 6511<a 6512 href="https://www.trefl.com/puzzle/akcesoria" 6513 class="__inner-link" 6514 data-menu="menu-350"> 6515 Akcesoria do puzzli</a> 6516 6517 </li> 6518 <li class="[&>a:hover]:hover:underline [&>a]:w-full [&>a]:block py-1 text-xs md:text-sm"> 6519 6520<a 6521 href="https://www.trefl.com/gry/rodzinne" 6522 class="__inner-link" 6523 data-menu="menu-88"> 6524 Gry rodzinne</a> 6525 6526 </li> 6527 </ul> 6528 <ul class="list-none mt-7"> 6529 <li class="[&>a:hover]:hover:underline [&>a]:w-full [&>a]:block py-1 text-xs md:text-sm"> 6530 6531<a 6532 href="https://www.trefl.com/gry/towarzyskie" 6533 class="__inner-link" 6534 data-menu="menu-89"> 6535 Gry towarzyskie</a> 6536 6537 </li> 6538 <li class="[&>a:hover]:hover:underline [&>a]:w-full [&>a]:block py-1 text-xs md:text-sm"> 6539 6540<a 6541 href="https://www.trefl.com/gry/zrecznosciowe" 6542 class="__inner-link" 6543 data-menu="menu-90"> 6544 Gry zrÄcznoÅciowe</a> 6545 6546 </li> 6547 <li class="[&>a:hover]:hover:underline [&>a]:w-full [&>a]:block py-1 text-xs md:text-sm"> 6548 6549<a 6550 href="https://www.trefl.com/gry/edukacyjne" 6551 class="__inner-link" 6552 data-menu="menu-91"> 6553 Gry edukacyjne dla dzieci</a> 6554 6555 </li> 6556 <li class="[&>a:hover]:hover:underline [&>a]:w-full [&>a]:block py-1 text-xs md:text-sm"> 6557 6558<a 6559 href="https://www.trefl.com/gry/dla-grup-przedszkoli" 6560 class="__inner-link" 6561 data-menu="menu-447"> 6562 Gry dla grup i przedszkoli</a> 6563 6564 </li> 6565 <li class="[&>
6565a:hover]:hover:underline [&>a]:w-full [&>a]:block py-1 text-xs md:text-sm"> 6566 6567<a 6568 href="https://www.trefl.com/gry/imprezowe" 6569 class="__inner-link" 6570 data-menu="menu-92"> 6571 Gry imprezowe</a> 6572 6573 </li> 6574 <li class="[&>a:hover]:hover:underline [&>a]:w-full [&>a]:block py-1 text-xs md:text-sm"> 6575 6576<a 6577 href="https://www.trefl.com/gry/domino-i-memos" 6578 class="__inner-link" 6579 data-menu="menu-93"> 6580 Gry memory</a> 6581 6582 </li> 6583 <li class="[&>a:hover]:hover:underline [&>a]:w-full [&>a]:block py-1 text-xs md:text-sm"> 6584 6585<a 6586 href="https://www.trefl.com/gry/1st-game" 6587 class="__inner-link" 6588 data-menu="menu-94"> 6589 Pierwsze gry / 1st games</a> 6590 6591 </li> 6592 <li class="[&>a:hover]:hover:underline [&>a]:w-full [&>a]:block py-1 text-xs md:text-sm"> 6593 6594<a 6595 href="https://www.trefl.com/gry/karciane" 6596 class="__inner-link" 6597 data-menu="menu-95"> 6598 Gry karciane</a> 6599 6600 </li> 6601 <li class="[&>a:hover]:hover:underline [&>a]:w-full [&>a]:block py-1 text-xs md:text-sm"> 6602 6603<a 6604 href="https://www.trefl.com/gry/gry-fantasy" 6605 class="__inner-link" 6606 data-menu="menu-98"> 6607 Gry fantasy</a> 6608 6609 </li> 6610 <li class="[&>a:hover]:hover:underline [&>a]:w-full [&>a]:block py-1 text-xs md:text-sm"> 6611 6612<a 6613 href="https://www.trefl.com/gry/5-sekund" 6614 class="__inner-link" 6615 data-menu="menu-96"> 6616 Gry 5 sekund</a> 6617 6618 </li> 6619 </ul> 6620 <ul class="list-none mt-7"> 6621 <li class="[&>a:hover]:hover:underline [&>a]:w-full [&>a]:block py-1 text-xs md:text-sm"> 6622 6623<a 6624 href="https://www.trefl.com/gry/boom-boom" 6625 class="__inner-link" 6626 data-menu="menu-97"> 6627 Gry Boom Boom</a> 6628 6629 </li> 6630 <li class="[&>a:hover]:hover:underline [&>a]:w-full [&>a]:block py-1 text-xs md:text-sm"> 6631 6632<a 6633 href="https://www.trefl.com/gry/magajaja" 6634 class="__inner-link" 6635 data-menu="menu-352"> 6636 Gry Magajaja</a> 6637 6638 </li> 6639 <li class="[&>a:hover]:hover:underline [&>a]:w-full [&>a]:block py-1 text-xs md:text-sm"> 6640 6641<a 6642 href="https://www.trefl.com/gry/mistakos" 6643 class="__inner-link" 6644 data-menu="menu-353"> 6645 Gry Mistakos</a> 6646 6647 </li> 6648 <li class="[&>a:hover]:hover:underline [&>a]:w-full [&>a]:block py-1 text-xs md:text-sm"> 6649 6650<a 6651 href="https://www.trefl.com/gry/gry-spy-guy" 6652 class="__inner-link" 6653 data-menu="menu-99"> 6654 Gry Spy Guy</a> 6655 6656 </li> 6657 <li class="[&>a:hover]:hover:underline [&>a]:w-full [&>a]:block py-1 text-xs md:text-sm"> 6658 6659<a 6660 href="https://www.trefl.com/gry/skoczki" 6661 class="__inner-link" 6662 data-menu="menu-101"> 6663 Gry Skoczki</a> 6664 6665 </li> 6666 <li class="[&>a:hover]:hover:underline [&>a]:w-full [&>a]:block py-1 text-xs md:text-sm"> 6667 6668<a 6669 href="https://www.trefl.com/gry/level-up" 6670 class="__inner-link" 6671 data-menu="menu-100"> 6672 Gry level up</a> 6673 6674 </li> 6675 <li class="[&>
6675a:hover]:hover:underline [&>a]:w-full [&>a]:block py-1 text-xs md:text-sm"> 6676 6677<a 6678 href="https://www.trefl.com/gry/chinczyk" 6679 class="__inner-link" 6680 data-menu="menu-102"> 6681 ChiÅczyk</a> 6682 6683 </li> 6684 <li class="[&>a:hover]:hover:underline [&>a]:w-full [&>a]:block py-1 text-xs md:text-sm"> 6685 6686<a 6687 href="https://www.trefl.com/gry/warcaby" 6688 class="__inner-link" 6689 data-menu="menu-351"> 6690 Warcaby</a> 6691 6692 </li> 6693 <li class="[&>a:hover]:hover:underline [&>a]:w-full [&>a]:block py-1 text-xs md:text-sm"> 6694 6695<a 6696 href="https://www.trefl.com/zabawki/interaktywne" 6697 class="__inner-link" 6698 data-menu="menu-103"> 6699 Zabawki interaktywne</a> 6700 6701 </li> 6702 <li class="[&>a:hover]:hover:underline [&>a]:w-full [&>a]:block py-1 text-xs md:text-sm"> 6703 6704<a 6705 href="https://www.trefl.com/zabawki/klocki/klocki-ceramiczne" 6706 class="__inner-link" 6707 data-menu="menu-104"> 6708 Klocki ceramiczne</a> 6709 6710 </li> 6711 </ul> 6712 <ul class="list-none mt-7"> 6713 <li class="[&>a:hover]:hover:underline [&>a]:w-full [&>a]:block py-1 text-xs md:text-sm"> 6714 6715<a 6716 href="https://www.trefl.com/zabawki/klocki/konstrukcyjne" 6717 class="__inner-link" 6718 data-menu="menu-354"> 6719 Klocki konstrukcyjne</a> 6720 6721 </li> 6722 <li class="[&>a:hover]:hover:underline [&>a]:w-full [&>a]:block py-1 text-xs md:text-sm"> 6723 6724<a 6725 href="https://www.trefl.com/zabawki/klocki/klocki-magnetyczne-geomag" 6726 class="__inner-link" 6727 data-menu="menu-105"> 6728 Klocki magnetyczne</a> 6729 6730 </li> 6731 <li class="[&>a:hover]:hover:underline [&>a]:w-full [&>a]:block py-1 text-xs md:text-sm"> 6732 6733<a 6734 href="https://www.trefl.com/zabawki/magiczne-sztuczki" 6735 class="__inner-link" 6736 data-menu="menu-489"> 6737 Magiczne Sztuczki</a> 6738 6739 </li> 6740 <li class="[&>a:hover]:hover:underline [&>a]:w-full [&>a]:block py-1 text-xs md:text-sm"> 6741 6742<a 6743 href="https://www.trefl.com/zabawki/drewniane" 6744 class="__inner-link" 6745 data-menu="menu-106"> 6746 Zabawki drewniane</a> 6747 6748 </li> 6749 <li class="[&>a:hover]:hover:underline [&>a]:w-full [&>a]:block py-1 text-xs md:text-sm"> 6750 6751<a 6752 href="https://www.trefl.com/zabawki/outdoorowe" 6753 class="__inner-link" 6754 data-menu="menu-107"> 6755 Zabawki do ogrodu</a> 6756 6757 </li> 6758 <li class="[&>a:hover]:hover:underline [&>a]:w-full [&>a]:block py-1 text-xs md:text-sm"> 6759 6760<a 6761 href="https://www.trefl.com/zabawki/zestawy-naukowe" 6762 class="__inner-link" 6763 data-menu="menu-108"> 6764 Zabawki naukowe</a> 6765 6766 </li> 6767 <li class="[&>a:hover]:hover:underline [&>a]:w-full [&>a]:block py-1 text-xs md:text-sm"> 6768 6769<a 6770 href="https://www.trefl.com/zabawki/modele" 6771 class="__inner-link" 6772 data-menu="menu-109"> 6773 Modele pojazdów</a> 6774 6775 </li> 6776 <li class="[&>
6776a:hover]:hover:underline [&>a]:w-full [&>a]:block py-1 text-xs md:text-sm"> 6777 6778<a 6779 href="https://www.trefl.com/ksiazki" 6780 class="__inner-link" 6781 data-menu="menu-110"> 6782 KsiÄ Å¼ki dla dzieci</a> 6783 6784 </li> 6785 <li class="[&>a:hover]:hover:underline [&>a]:w-full [&>a]:block py-1 text-xs md:text-sm"> 6786 6787<a 6788 href="https://www.trefl.com/ksiazki/ksiazki-dla-rodzicow" 6789 class="__inner-link" 6790 data-menu="menu-355"> 6791 KsiÄ Å¼ki dla rodziców</a> 6792 6793 </li> 6794 <li class="[&>a:hover]:hover:underline [&>a]:w-full [&>a]:block py-1 text-xs md:text-sm"> 6795 6796<a 6797 href="https://www.trefl.com/produkty-fsc" 6798 class="__inner-link" 6799 data-menu="menu-111"> 6800 Produkty FSC</a> 6801 6802 </li> 6803 </ul> 6804 </div> 6805 </div> 6806 <div x-show="activeTab === 1" 6807 role="tabpanel" 6808 tabindex="0" 6809 id="'tab-panel-' + 1" 6810 aria-labelledby="'tab-' + 1" 6811 :hidden="activeTab !== 1" 6812 x-cloak > 6813 <div class="grid grid-cols-2 md:grid-cols-none md:grid-flow-col md:auto-cols-auto gap-4"> 6814 <ul class="list-none mt-7"> 6815 <li class="[&>a:hover]:hover:underline [&>a]:w-full [&>a]:block py-1 text-xs md:text-sm"> 6816 6817<a 6818 href="https://www.trefl.com/marki/44-cats" 6819 class="__inner-link" 6820 data-menu="menu-113"> 6821 44 Cats</a> 6822 6823 </li> 6824 <li class="[&>a:hover]:hover:underline [&>a]:w-full [&>a]:block py-1 text-xs md:text-sm"> 6825 6826<a 6827 href="https://www.trefl.com/marki/avengers" 6828 class="__inner-link" 6829 data-menu="menu-114"> 6830 Avengers</a> 6831 6832 </li> 6833 <li class="[&>a:hover]:hover:underline [&>a]:w-full [&>a]:block py-1 text-xs md:text-sm"> 6834 6835<a 6836 href="https://www.trefl.com/marki/baby-shark" 6837 class="__inner-link" 6838 data-menu="menu-115"> 6839 Baby Shark</a> 6840 6841 </li> 6842 <li class="[&>a:hover]:hover:underline [&>a]:w-full [&>a]:block py-1 text-xs md:text-sm"> 6843 6844<a 6845 href="https://www.trefl.com/marki/barbie" 6846 class="__inner-link" 6847 data-menu="menu-116"> 6848 Barbie</a> 6849 6850 </li> 6851 <li class="[&>a:hover]:hover:underline [&>a]:w-full [&>a]:block py-1 text-xs md:text-sm"> 6852 6853<a 6854 href="https://www.trefl.com/marki/basia" 6855 class="__inner-link" 6856 data-menu="menu-117"> 6857 Basia</a> 6858 6859 </li> 6860 <li class="[&>a:hover]:hover:underline [&>a]:w-full [&>a]:block py-1 text-xs md:text-sm"> 6861 6862<a 6863 href="https://www.trefl.com/marki/bing" 6864 class="__inner-link" 6865 data-menu="menu-118"> 6866 Bing</a> 6867 6868 </li> 6869 <li class="[&>a:hover]:hover:underline [&>a]:w-full [&>a]:block py-1 text-xs md:text-sm"> 6870 6871<a 6872 href="https://www.trefl.com/marki/bobaski-i-mis" 6873 class="__inner-link" 6874 data-menu="menu-119"> 6875 Bobaski i MiÅ</a> 6876 6877 </li> 6878 <li class="[&>a:hover]:hover:underline [&>a]:w-full [&>a]:block py-1 text-xs md:text-sm"> 6879 6880<a 6881 href="https://www.trefl.com/marki/cars" 6882 class="__inner-link" 6883 data-menu="menu-120"> 6884 Cars</a> 6885 6886 </li> 6887 <li class="[&>
6887a:hover]:hover:underline [&>a]:w-full [&>a]:block py-1 text-xs md:text-sm"> 6888 6889<a 6890 href="https://www.trefl.com/marki/cocomelon" 6891 class="__inner-link" 6892 data-menu="menu-356"> 6893 Cocomelon</a> 6894 6895 </li> 6896 <li class="[&>a:hover]:hover:underline [&>a]:w-full [&>a]:block py-1 text-xs md:text-sm"> 6897 6898<a 6899 href="https://www.trefl.com/marki/diplodok" 6900 class="__inner-link" 6901 data-menu="menu-121"> 6902 Diplodok</a> 6903 6904 </li> 6905 </ul> 6906 <ul class="list-none mt-7"> 6907 <li class="[&>a:hover]:hover:underline [&>a]:w-full [&>a]:block py-1 text-xs md:text-sm"> 6908 6909<a 6910 href="https://www.trefl.com/marki/disney" 6911 class="__inner-link" 6912 data-menu="menu-341"> 6913 Disney</a> 6914 6915 </li> 6916 <li class="[&>a:hover]:hover:underline [&>a]:w-full [&>a]:block py-1 text-xs md:text-sm"> 6917 6918<a 6919 href="#" 6920 class="__inner-link" 6921 data-menu="menu-122"> 6922 Dungeons & Dragons</a> 6923 6924 </li> 6925 <li class="[&>a:hover]:hover:underline [&>a]:w-full [&>a]:block py-1 text-xs md:text-sm"> 6926 6927<a 6928 href="https://www.trefl.com/marki/enchantimals" 6929 class="__inner-link" 6930 data-menu="menu-123"> 6931 Enchantimals</a> 6932 6933 </li> 6934 <li class="[&>a:hover]:hover:underline [&>a]:w-full [&>a]:block py-1 text-xs md:text-sm"> 6935 6936<a 6937 href="https://www.trefl.com/marki/friends" 6938 class="__inner-link" 6939 data-menu="menu-124"> 6940 Friends</a> 6941 6942 </li> 6943 <li class="[&>a:hover]:hover:underline [&>a]:w-full [&>a]:block py-1 text-xs md:text-sm"> 6944 6945<a 6946 href="https://www.trefl.com/marki/kraina-lodu" 6947 class="__inner-link" 6948 data-menu="menu-125"> 6949 Frozen / Kraina Lodu</a> 6950 6951 </li> 6952 <li class="[&>a:hover]:hover:underline [&>a]:w-full [&>a]:block py-1 text-xs md:text-sm"> 6953 6954<a 6955 href="https://www.trefl.com/marki/garfield" 6956 class="__inner-link" 6957 data-menu="menu-342"> 6958 Garfield</a> 6959 6960 </li> 6961 <li class="[&>a:hover]:hover:underline [&>a]:w-full [&>a]:block py-1 text-xs md:text-sm"> 6962 6963<a 6964 href="https://www.trefl.com/marki/harry-potter" 6965 class="__inner-link" 6966 data-menu="menu-126"> 6967 Harry Potter</a> 6968 6969 </li> 6970 <li class="[&>a:hover]:hover:underline [&>a]:w-full [&>a]:block py-1 text-xs md:text-sm"> 6971 6972<a 6973 href="https://www.trefl.com/marki/hello-kitty" 6974 class="__inner-link" 6975 data-menu="menu-343"> 6976 Hello Kitty</a> 6977 6978 </li> 6979 <li class="[&>a:hover]:hover:underline [&>a]:w-full [&>a]:block py-1 text-xs md:text-sm"> 6980 6981<a 6982 href="https://www.trefl.com/marki/kicia-kocia" 6983 class="__inner-link" 6984 data-menu="menu-127"> 6985 Kicia Kocia</a> 6986 6987 </li> 6988 <li class="[&>a:hover]:hover:underline [&>a]:w-full [&>a]:block py-1 text-xs md:text-sm"> 6989 6990<a 6991 href="https://www.trefl.com/marki/koci-domek-gabi" 6992 class="__inner-link" 6993 data-menu="menu-128"> 6994 Koci Domek Gabi</a> 6995 6996 </li> 6997 </ul> 6998 <ul class="list-none mt-7"> 6999 <li class="[&>
6999a:hover]:hover:underline [&>a]:w-full [&>a]:block py-1 text-xs md:text-sm"> 7000 7001<a 7002 href="https://www.trefl.com/marki/kucyki-pony" 7003 class="__inner-link" 7004 data-menu="menu-129"> 7005 Kucyki Pony</a> 7006 7007 </li> 7008 <li class="[&>a:hover]:hover:underline [&>a]:w-full [&>a]:block py-1 text-xs md:text-sm"> 7009 7010<a 7011 href="https://www.trefl.com/marki/lilo-stitch" 7012 class="__inner-link" 7013 data-menu="menu-130"> 7014 Lilo & Stitch</a> 7015 7016 </li> 7017 <li class="[&>a:hover]:hover:underline [&>a]:w-full [&>a]:block py-1 text-xs md:text-sm"> 7018 7019<a 7020 href="https://www.trefl.com/marki/lol-surprise" 7021 class="__inner-link" 7022 data-menu="menu-344"> 7023 LOL Surprise</a> 7024 7025 </li> 7026 <li class="[&>a:hover]:hover:underline [&>a]:w-full [&>a]:block py-1 text-xs md:text-sm"> 7027 7028<a 7029 href="https://www.trefl.com/marki/minionki" 7030 class="__inner-link" 7031 data-menu="menu-131"> 7032 Minionki</a> 7033 7034 </li> 7035 <li class="[&>a:hover]:hover:underline [&>a]:w-full [&>a]:block py-1 text-xs md:text-sm"> 7036 7037<a 7038 href="https://www.trefl.com/marki/myszka-mickey" 7039 class="__inner-link" 7040 data-menu="menu-132"> 7041 Myszka Miki</a> 7042 7043 </li> 7044 <li class="[&>a:hover]:hover:underline [&>a]:w-full [&>a]:block py-1 text-xs md:text-sm"> 7045 7046<a 7047 href="https://www.trefl.com/marki/myszka-minnie" 7048 class="__inner-link" 7049 data-menu="menu-133"> 7050 Myszka Minnie</a> 7051 7052 </li> 7053 <li class="[&>a:hover]:hover:underline [&>a]:w-full [&>a]:block py-1 text-xs md:text-sm"> 7054 7055<a 7056 href="https://www.trefl.com/marki/park-jurajski" 7057 class="__inner-link" 7058 data-menu="menu-134"> 7059 Park Jurajski</a> 7060 7061 </li> 7062 <li class="[&>a:hover]:hover:underline [&>a]:w-full [&>a]:block py-1 text-xs md:text-sm"> 7063 7064<a 7065 href="https://www.trefl.com/marki/psi-patrol" 7066 class="__inner-link" 7067 data-menu="menu-135"> 7068 Psi Patrol</a> 7069 7070 </li> 7071 <li class="[&>a:hover]:hover:underline [&>a]:w-full [&>a]:block py-1 text-xs md:text-sm"> 7072 7073<a 7074 href="https://www.trefl.com/marki/pusheen" 7075 class="__inner-link" 7076 data-menu="menu-345"> 7077 Pusheen</a> 7078 7079 </li> 7080 <li class="[&>a:hover]:hover:underline [&>a]:w-full [&>a]:block py-1 text-xs md:text-sm"> 7081 7082<a 7083 href="https://www.trefl.com/marki/rainbow-high" 7084 class="__inner-link" 7085 data-menu="menu-136"> 7086 Rainbow High</a> 7087 7088 </li> 7089 </ul> 7090 <ul class="list-none mt-7"> 7091 <li class="[&>a:hover]:hover:underline [&>a]:w-full [&>a]:block py-1 text-xs md:text-sm"> 7092 7093<a 7094 href="https://www.trefl.com/marki/rick-i-morty" 7095 class="__inner-link" 7096 data-menu="menu-346"> 7097 Rick i Morty</a> 7098 7099 </li> 7100 <li class="[&>a:hover]:hover:underline [&>a]:w-full [&>a]:block py-1 text-xs md:text-sm"> 7101 7102<a 7103 href="https://www.trefl.com/rodzina-treflikow" 7104 class="__inner-link" 7105 data-menu="menu-137"> 7106 Rodzina Treflików</a> 7107 7108 </li> 7109 <li class="[&>
7109a:hover]:hover:underline [&>a]:w-full [&>a]:block py-1 text-xs md:text-sm"> 7110 7111<a 7112 href="https://www.trefl.com/marki/smerfy" 7113 class="__inner-link" 7114 data-menu="menu-138"> 7115 Smerfy</a> 7116 7117 </li> 7118 <li class="[&>a:hover]:hover:underline [&>a]:w-full [&>a]:block py-1 text-xs md:text-sm"> 7119 7120<a 7121 href="https://www.trefl.com/marki/smiley-world" 7122 class="__inner-link" 7123 data-menu="menu-357"> 7124 Smiley World</a> 7125 7126 </li> 7127 <li class="[&>a:hover]:hover:underline [&>a]:w-full [&>a]:block py-1 text-xs md:text-sm"> 7128 7129<a 7130 href="https://www.trefl.com/marki/spiderman" 7131 class="__inner-link" 7132 data-menu="menu-139"> 7133 Spiderman</a> 7134 7135 </li> 7136 <li class="[&>a:hover]:hover:underline [&>a]:w-full [&>a]:block py-1 text-xs md:text-sm"> 7137 7138<a 7139 href="https://www.trefl.com/marki/spidey" 7140 class="__inner-link" 7141 data-menu="menu-140"> 7142 Spidey</a> 7143 7144 </li> 7145 <li class="[&>a:hover]:hover:underline [&>a]:w-full [&>a]:block py-1 text-xs md:text-sm"> 7146 7147<a 7148 href="https://www.trefl.com/marki/spongebob-kanciastoporty" 7149 class="__inner-link" 7150 data-menu="menu-347"> 7151 SpongeBob Kanciastoporty</a> 7152 7153 </li> 7154 <li class="[&>a:hover]:hover:underline [&>a]:w-full [&>a]:block py-1 text-xs md:text-sm"> 7155 7156<a 7157 href="https://www.trefl.com/marki/spy-guy" 7158 class="__inner-link" 7159 data-menu="menu-358"> 7160 Spy Guy</a> 7161 7162 </li> 7163 <li class="[&>a:hover]:hover:underline [&>a]:w-full [&>a]:block py-1 text-xs md:text-sm"> 7164 7165<a 7166 href="https://www.trefl.com/marki/star-wars" 7167 class="__inner-link" 7168 data-menu="menu-141"> 7169 Star Wars</a> 7170 7171 </li> 7172 <li class="[&>a:hover]:hover:underline [&>a]:w-full [&>a]:block py-1 text-xs md:text-sm"> 7173 7174<a 7175 href="https://www.trefl.com/marki/strazak-sam" 7176 class="__inner-link" 7177 data-menu="menu-142"> 7178 Strażak Sam</a> 7179 7180 </li> 7181 </ul> 7182 <ul class="list-none mt-7"> 7183 <li class="[&>a:hover]:hover:underline [&>a]:w-full [&>a]:block py-1 text-xs md:text-sm"> 7184 7185<a 7186 href="https://www.trefl.com/marki/swinka-peppa" 7187 class="__inner-link" 7188 data-menu="menu-143"> 7189 Åwinka Peppa</a> 7190 7191 </li> 7192 <li class="[&>a:hover]:hover:underline [&>a]:w-full [&>a]:block py-1 text-xs md:text-sm"> 7193 7194<a 7195 href="https://www.trefl.com/marki/tomek-i-przyjaciele" 7196 class="__inner-link" 7197 data-menu="menu-144"> 7198 Tomek i Przyjaciele</a> 7199 7200 </li> 7201 <li class="[&>a:hover]:hover:underline [&>a]:w-full [&>a]:block py-1 text-xs md:text-sm"> 7202 7203<a 7204 href="https://www.trefl.com/marki/w-glowie-sie-nie-miesci-2" 7205 class="__inner-link" 7206 data-menu="menu-348"> 7207 W gÅowie siÄ nie mieÅci</a> 7208 7209 </li> 7210 <li class="[&>a:hover]:hover:underline [&>a]:w-full [&>a]:block py-1 text-xs md:text-sm"> 7211 7212<a 7213 href="https://www.trefl.com/marki/wladca-pierscieni" 7214 class="__inner-link" 7215 data-menu="menu-349"> 7216 WÅadca PierÅcieni</a> 7217 7218 </li> 7219 </div> 7220 </div> 7221 </div> </div> 7222</section> 7223 7224<section class="bg-white py-16 relative overflow-clip trefl-bg-logo bg-no-repeat bg-left-bottom" 7225 style="background-size: auto 80%;"> 7226 <div class="container grid grid-cols-1 md:grid-cols-4 gap-4"> 7227 <div class="col-span-1 relative"> 7228 <img src="https://www.trefl.com/static/version1789064390/frontend/Trefl/hyva-trefl/pl_PL/images/logo.svg" 7229 alt="" 7230 width="94" 7231 height="47" 7232 decoding="async" 7233 aria-hidden="true" 7234 /> 7235 7236 <div class="mt-10 [&_a:hover]:underline"> 7237 <p style="display: block;"><img class="lazyload" alt="" data-src="https://www.trefl.com/media/wysiwyg/logo_small.png"></p> 7238<p>ul. Kontenerowa 25</p> 7239<p>81-155 Gdynia</p> 7240<p><a href="mailto:[email protected]">[email protected]</a></p> 7241<p>+48 58 66 67 333</p> </div> 7242 7243 <div class="mt-10"> 7244 7245<div class="field flex gap-4 items-center"> 7246 <label class="label" for="language-selector"> 7247 JÄzyk: 7248 </label> 7249 <div class="control"> 7250 <select class="form-select lowercase select-none" 7251 id="language-selector" 7252 onchange="window.location.href = event.target.value"> 7253 <option value="https://www.trefl.com/" 7254 selected > 7255 polski </option> 7256 <option value="https://www.trefl.com/en/" 7257 > 7258 english </option> 7259 </select> 7260 </div> 7261</div> 7262 </div> 7263 </div> 7264 <div class="col-span-3"> 7265 7266<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;"> 7267 <ul class="flex flex-col [&_a:hover]:underline text-xs gap-2" role="menu"> 7268 <li role="menuitem"> 7269<a 7270 href="https://www.trefl.com/komunikacja-z-akcjonariuszami" 7271 class="trtre__inner-link" 7272 data-menu="menu-166"> 7273 Dla akcjonariuszy</a> 7274</li> 7275 <li role="menuitem"> 7276<a 7277 href="https://www.trefl.com/projekty-unijne" 7278 class="trtre__inner-link" 7279 data-menu="menu-165"> 7280 Projekty unijne</a> 7281</li> 7282 <li role="menuitem"> 7283<a 7284 href="https://www.trefl.com/sygnalisci" 7285 class="trtre__inner-link" 7286 data-menu="menu-168"> 7287 SygnaliÅci</a> 7288</li> 7289 <li role="menuitem"> 7290<a
7291 href="https://www.trefl.com/strategia-podatkowa" 7292 class="trtre__inner-link" 7293 data-menu="menu-167"> 7294 Strategia podatkowa</a> 7295</li> 7296 </ul> 7297 <ul class="flex flex-col [&_a:hover]:underline text-xs gap-2" role="menu"> 7298 <li role="menuitem"> <a 7299 href="/blog" 7300 data-menu="menu-406" class="trtre__inner-link" > 7301 Blog </a> 7302 7303</li> 7304 <li role="menuitem"> 7305<a 7306 href="https://www.trefl.com/grupa-trefl" 7307 class="trtre__inner-link" 7308 data-menu="menu-407"> 7309 Grupa Trefl</a> 7310</li> 7311 <li role="menuitem"> 7312<a 7313 href="https://www.trefl.com/kariera" 7314 class="trtre__inner-link" 7315 data-menu="menu-408"> 7316 Kariera</a> 7317</li> 7318 <li role="menuitem"> <a 7319 href="https://www.trefl.com/logo-trefl" 7320 data-menu="menu-409" class="trtre__inner-link" > 7321 Logo Trefl </a> 7322 7323</li> 7324 <li role="menuitem"> 7325<a 7326 href="https://www.trefl.com/regulamin-materialow-promocyjnych" 7327 class="trtre__inner-link" 7328 data-menu="menu-411"> 7329 MateriaÅy promocyjne</a> 7330</li> 7331 <li role="menuitem"> <a 7332 href="https://b2b.trefl.com/" 7333 data-menu="menu-412" class="trtre__inner-link" target="_blank" rel="noopener" > 7334 Platforma zamówieÅ B2B </a> 7335 7336</li> 7337 <li role="menuitem"> 7338<a 7339 href="https://www.trefl.com/b2b" 7340 class="trtre__inner-link" 7341 data-menu="menu-448"> 7342 Oferta B2B</a> 7343</li> 7344 <li role="menuitem"> 7345<a 7346 href="https://www.trefl.com/ankieta" 7347 class="trtre__inner-link" 7348 data-menu="menu-413"> 7349 Przekaż nam opiniÄ</a> 7350</li> 7351 </ul> 7352 <ul class="flex flex-col [&_a:hover]:underline text-xs gap-2" role="menu"> 7353 <li role="menuitem"> <a 7354 href="https://katalogi.trefl.com/" 7355 data-menu="menu-150" class="trtre__inner-link" target="_blank" rel="noopener" > 7356 E-katalog Trefl PL/EN/DE </a> 7357 7358</li> 7359 <li role="menuitem"> <a 7360 href="https://trefl-magento-prod.s3.eu-central-1.amazonaws.com/pr/katalog_AW2026.pdf" 7361 data-menu="menu-151" class="trtre__inner-link" target="_blank" rel="noopener" > 7362 Katalog Puzzle/Gry/Zabawki 2026 AW </a> 7363 7364</li> 7365 <li role="menuitem"> <a 7366 href="https://trefl-magento-prod.s3.eu-central-1.amazonaws.com/pr/Trefl-Catalogue-SS-2026.pdf" 7367 data-menu="menu-626" class="trtre__inner-link" target="_blank" rel="noopener" > 7368 Katalog Puzzle/Gry/Zabawki 2026 SS </a> 7369 7370</li> 7371 <li role="menuitem"> <a 7372 href="https://trefl-magento-prod.s3.eu-central-1.amazonaws.com/pr/Trefl-Catalogue-DE-2025.pdf" 7373 data-menu="menu-336" class="trtre__inner-link" target="_blank" rel="noopener" > 7374 Katalog Puzzle/Gry DE 2025 </a> 7375 7376</li> 7377 <li role="menuitem"> <a 7378 href="https://trefl-magento-prod.s3.eu-central-1.amazonaws.com/pr/The-Treflik_Family-Catalogue-SS-2025.pdf" 7379 data-menu="menu-152" class="trtre__inner-link" target="_blank" rel="noopener" > 7380 Katalog Rodzina Treflików 2025 SS </a> 7381 7382</li> 7383 <li role="menuitem"> <a 7384 href="https://trefl-magento-prod.s3.eu-central-1.amazonaws.com/pr/Katalog+Norymberga+2024.pdf" 7385 data-menu="menu-153" class="trtre__inner-link" target="_blank" rel="noopener" > 7386 Katalog Spielwarenmesse 2024 </a> 7387 7388</li> 7389 <li role="menuitem"> 7390<a 7391 href="https://www.trefl.com/instrukcje-gier-w-jezyku-ukrainskim" 7392 class="trtre__inner-link" 7393 data-menu="menu-159"> 7394 Instrukcje gier UA/ÑнÑÑÑÑкÑÑÑ Ð´Ð¾ гÑи</a> 7395</li> 7396 </ul> 7397 <ul class="flex flex-col [&_a:hover]:underline text-xs gap-2" role="menu"> 7398 <li role="menuitem"> 7399<a 7400 href="https://www.trefl.com/regulamin" 7401 class="trtre__inner-link" 7402 data-menu="menu-171"> 7403 Regulamin</a> 7404</li> 7405 <li role="menuitem"> 7406<a 7407 href="https://www.trefl.com/polityka-prywatnosci" 7408 class="trtre__inner-link" 7409 data-menu="menu-172"> 7410 Polityka prywatnoÅci</a> 7411</li> 7412 <li role="menuitem"> 7413<a 7414 href="https://www.trefl.com/dostawa" 7415 class="trtre__inner-link" 7416 data-menu="menu-174"> 7417 Dostawa</a> 7418</li> 7419 <li role="menuitem"> 7420<a 7421 href="https://www.trefl.com/formy-platnosci" 7422 class="trtre__inner-link" 7423 data-menu="menu-175"> 7424 Formy pÅatnoÅci</a> 7425</li> 7426 <li role="menuitem"> <a 7427 href="/pomoc#Zwroty" 7428 data-menu="menu-178" class="trtre__inner-link" > 7429 Zwroty </a> 7430 7431</li> 7432 <li role="menuitem"> 7433<a 7434 href="https://www.trefl.com/reklamacje" 7435 class="trtre__inner-link" 7436 data-menu="menu-176"> 7437 Reklamacje</a> 7438</li> 7439 <li role="menuitem"> 7440<a 7441 href="https://www.trefl.com/reklamacje-puzzle-prime" 7442 class="trtre__inner-link" 7443 data-menu="menu-177"> 7444 Reklamacje Puzzle Prime</a> 7445</li> 7446 <li role="menuitem"> <a 7447 href="https://www.trefl.com/pomoc" 7448 data-menu="menu-179" class="trtre__inner-link" > 7449 Pomoc / FAQ </a> 7450 7451</li> 7452 <li role="menuitem"> <a 7453 href="/contact" 7454 data-menu="menu-169" class="trtre__inner-link" > 7455 Kontakt </a> 7456 7457</li> 7458 </ul> 7459 </div> 7460 </div> 7461 </div> 7462</section> 7463 7464<div class="container relative"> 7465 <button x-data="usercentricsMobile" 7466 @click.prevent="showUserCentricsLayer" 7467 title="Ustawienia prywatności" 7468 @resize.debounce.100.window="initUsercentricsMobile" 7469 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" 7470 x-show="isAvailable" 7471 x-cloak> 7472 <svg xmlns="http://www.w3.org/2000/svg" height="100%" viewB
7472ox="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> 7473 </button> 7474</div> 7475
7476<script> 7477 function usercentricsMobile() { 7478 return { 7479 isAvailable: false, 7480 originalButton: null, 7481 isInitialized: false, 7482 init() { 7483 if (!this.isInitialized && window.innerWidth <= 768) { 7484 window.addEventListener('UC_UI_INITIALIZED', function () { 7485 this.initUsercentricsMobile() 7486 }.bind(this)); 7487 } 7488 }, 7489 initUsercentricsMobile() { 7490 if (this.isInitialized || window.innerWidth > 768) { 7491 return; 7492 } 7493 7494 if (typeof UC_UI !== 'undefined' && 'showSecondLayer' in UC_UI) { 7495 this.isAvailable = true; 7496 this.isInitialized = true; 7497 this.originalButton = document.getElementById('usercentrics-root'); 7498 7499 if (localStorage.getItem('uc_user_interaction') === 'true') { 7500 this.toggleOriginalButton(false); 7501 } 7502 7503 window.addEventListener('UC_UI_VIEW_CHANGED', (event) => { 7504 const view = event.detail?.view || 'NONE'; 7505 7506 if (view === 'PRIVACY_BUTTON' || view === 'NONE') { 7507 this.toggleOriginalButton(false); 7508 } else if (view === 'SECOND_LAYER') { 7509 this.toggleOriginalButton(true); 7510 } 7511 }); 7512 } 7513 }, 7514 showUserCentricsLayer() { 7515 if (typeof UC_UI !== 'undefined' && 'showSecondLayer' in UC_UI) { 7516 UC_UI.showSecondLayer() 7517 } 7518 }, 7519 toggleOriginalButton(state) { 7520 if (!this.originalButton) { 7521 return; 7522 } 7523 this.originalButton.classList.toggle('hidden', !state); 7524 }, 7525 } 7526 } 7527 window.addEventListener( 7528 'alpine:init', 7529 () => Alpine.data('usercentricsMobile', usercentricsMobile), 7530 {once: true} 7531 ) 7532</script>
7532 7533 7534<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" 7535 x-data="initMobileNavBar()" 7536 @private-content-loaded.window="getData(event.detail.data)" 7537> 7538 <!--Wishlist Icon--> 7539 <a href="https://www.trefl.com/wishlist/" 7540 class="mobile-nav-bar-item" 7541 title="Ulubione" 7542 > 7543 <span class="mobile-nav-bar-item-icon"> 7544 <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> 7545 </span> 7546 7547 <span class="mobile-nav-bar-item-label"> 7548 Ulubione </span> 7549 </a> 7550 7551 <!--Cart Icon--> 7552 <a id="menu-cart-icon" 7553 class="mobile-nav-bar-item" 7554 x-ref="cartButton" 7555 :aria-disabled="isCartEmpty()" 7556 :aria-label="` 7557 View cart, 7558 ${isCartEmpty() 7559 ? 'Koszyk jest pusty' 7560 : cart.summary_count > 1 7561 ? hyva.str('%1 elementów', cart.summary_count) 7562 : hyva.str('%1 item', cart.summary_count) 7563 }` 7564 " 7565 href="https://www.trefl.com/checkout/cart/index/" 7566 title="View cart" 7567 > 7568 <span class="mobile-nav-bar-item-icon relative" aria-hidden="true"> 7569 <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> 7570 <span 7571 x-text="cart.summary_count" 7572 x-show="!isCartEmpty()" 7573 x-cloak 7574 class="absolute -top-1 -right-2.5 h-4 px-1.5 rounded-full bg-primary text-white 7575 font-semibold leading-4 uppercase tabular-nums" 7576 style="font-size: 10px;" 7577 ></span> 7578 </span> 7579 7580 <span class="mobile-nav-bar-item-label"> 7581 Koszyk </span> 7582 </a> 7583 7584 <!--Customer--> 7585 7586<a href="https://www.trefl.com/customer/account/login/" 7587 class="mobile-nav-bar-item" 7588> 7589 <span class="mobile-nav-bar-item-icon"> 7590 <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> 7591 </span> 7592 7593 <span class="mobile-nav-bar-item-label"> 7594 Zaloguj siÄ </span> 7595</a> 7596 7597 7598 <!--Mobile menu trigger--> 7599 <label for="mobile-menu-switch" class="mobile-nav-bar-item">
7600 <span class="mobile-nav-bar-item-icon"> 7601 <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> 7602 </span> 7603 7604 <span class="mobile-nav-bar-item-label"> 7605 Menu </span> 7606 </label> 7607</div> 7608
7609<script> 7610 function initMobileNavBar() { 7611 return { 7612 cart: {}, 7613 getData(data) { 7614 if (data.cart) { this.cart = data.cart } 7615 }, 7616 isCartEmpty() { 7617 return !this.cart.summary_count 7618 }, 7619 } 7620 } 7621</script>
7621 7622</div></footer><template id="trustedshops-badge_6ab4f37e250e9"> 7623 <!-- added by Trusted Shops app: Start --> 7624
7624<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>
7624 <!-- End --> 7625 </template>
7626<script> 7627window.addEventListener('init-external-scripts', () => { 7628 const template = document.getElementById('trustedshops-badge_6ab4f37e250e9'); 7629 if (template?.content) { 7630 const clone = document.importNode(template.content, true); 7631 document.body.appendChild(clone); 7632 } 7633}, {once: true, passive: true}); 7634</script>
7634 7635 7636
vendor: 2,348 bytes, lines 7637-7696
7637<script> 7638 (() => { 7639 function src_default(Alpine) { 7640 Alpine.directive("intersect", Alpine.skipDuringClone((el, { value, expression, modifiers }, { evaluateLater, cleanup }) => { 7641 let evaluate = evaluateLater(expression); 7642 let options = { 7643 rootMargin: getRootMargin(modifiers), 7644 threshold: getThreshold(modifiers) 7645 }; 7646 let observer = new IntersectionObserver((entries) => { 7647 entries.forEach((entry) => { 7648 if (entry.isIntersecting === (value === "leave")) 7649 return; 7650 evaluate(); 7651 modifiers.includes("once") && observer.disconnect(); 7652 }); 7653 }, options); 7654 observer.observe(el); 7655 cleanup(() => { 7656 observer.disconnect(); 7657 }); 7658 })); 7659 } 7660 function getThreshold(modifiers) { 7661 if (modifiers.includes("full")) 7662 return 0.99; 7663 if (modifiers.includes("half")) 7664 return 0.5; 7665 if (!modifiers.includes("threshold")) 7666 return 0; 7667 let threshold = modifiers[modifiers.indexOf("threshold") + 1]; 7668 if (threshold === "100") 7669 return 1; 7670 if (threshold === "0") 7671 return 0; 7672 return Number(`.${threshold}`); 7673 } 7674 function getLengthValue(rawValue) { 7675 let match = rawValue.match(/^(-?[0-9]+)(px|%)?$/); 7676 return match ? match[1] + (match[2] || "px") : void 0; 7677 } 7678 function getRootMargin(modifiers) { 7679 const key = "margin"; 7680 const fallback = "0px 0px 0px 0px"; 7681 const index = modifiers.indexOf(key); 7682 if (index === -1) 7683 return fallback; 7684 let values = []; 7685 for (let i = 1; i < 5; i++) { 7686 values.push(getLengthValue(modifiers[index + i] || "")); 7687 } 7688 values = values.filter((v) => v !== void 0); 7689 return values.length ? values.join(" ").trim() : fallback; 7690 } 7691 7692 document.addEventListener("alpine:init", () => { 7693 window.Alpine.plugin(src_default); 7694 }); 7695 })(); 7696</script>
vendor: 1 bytes, line 7696
7696
7697<script> 7698 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"})) { 7699 document.querySelectorAll(selector).forEach(el => el.setAttribute('x-defer', `${deferUntil}`)); 7700 } 7701</script>
vendor: 1 bytes, line 7701
7701
7702<script> 7703 (function () { 7704 "use strict"; 7705 7706 const hasAlpine = new Promise(resolve => { 7707 window.addEventListener('alpine:initialized', resolve, {once: true, passive: true}); 7708 }); 7709 7710 const hasInteract = new Promise(resolve => { 7711 (events => { 7712 const onInteract = () => { 7713 resolve(); 7714 events.forEach(type => window.removeEventListener(type, onInteract)); 7715 } 7716 events.forEach(type => window.addEventListener(type, onInteract, {once: true, passive: true})) 7717 })(['touchstart', 'mouseover', 'wheel', 'scroll', 'keydown']) 7718 }); 7719 7720 const onIntersect = (el) => { 7721 return new Promise(resolve => { 7722 const observer = new IntersectionObserver(entries => { 7723 for (const entry of entries) { 7724 if (entry.isIntersecting) { 7725 observer.disconnect() 7726 resolve(); 7727 } 7728 } 7729 }, {}); 7730 observer.observe(el); 7731 }); 7732 } 7733 7734 function runComponent(el) { 7735 hasAlpine.then(() => { 7736 el.removeAttribute('x-ignore'); 7737 queueMicrotask(() => Alpine.initTree(el)); 7738 }); 7739 } 7740 7741 function initDeferredComponents() { 7742 document.querySelectorAll('[x-data][x-defer]').forEach(el => { 7743 el.setAttribute('x-ignore', ''); 7744 const deferUntil = (el.getAttribute('x-defer') || '').trim(); 7745 switch (deferUntil) { 7746 case 'interact': 7747 hasInteract.then(() => runComponent(el)); 7748 break; 7749 case 'intersect': 7750 onIntersect(el).then(() => runComponent(el)) 7751 break; 7752 case 'idle': 7753 window.requestIdleCallback 7754 ? window.requestIdleCallback(() => runComponent(el), {timeout: 4000}) 7755 : setTimeout(() => runComponent(el), 4000); 7756 break; 7757 case 'eager': 7758 runComponent(el); 7759 break; 7760 default: 7761 if (deferUntil.startsWith('event:') && deferUntil.length > 6) { 7762 window.addEventListener(deferUntil.substring(6), () => runComponent(el), {once: true, passive: true}); 7763 } 7764 } 7765 }); 7766 } 7767 7768 window.addEventListener('alpine:init', initDeferredComponents, {once: true, passive: true}); 7769 })() 7770</script>
vendor: 1 bytes, line 7770
7770
vendor: 1,455 bytes, lines 7771-7773
7771<script> 7772(()=>{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)});})(); 7773</script>
7773 7774
7775<script> 7776 function createAjaxLoader() { 7777 const loader = document.createElement('div'); 7778 loader.className = 'absolute inset-0 flex justify-center items-center loader'; 7779 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"> 7780 <style> 7781 @keyframes spinner-ball-triangle1 { 7782 0% { transform: translate(0%, 0%); } 7783 33% { transform: translate(38%, -79%); } 7784 66% { transform: translate(77%, 0%); } 7785 100% { transform: translate(0%, 0%); } 7786 } 7787 7788 @keyframes spinner-ball-triangle2 { 7789 0% { transform: translate(0%, 0%); } 7790 33% { transform: translate(38%, 79%); } 7791 66% { transform: translate(-38%, 79%); } 7792 100% { transform: translate(0%, 0%); } 7793 } 7794 7795 @keyframes spinner-ball-triangle3 { 7796 0% { transform: translate(0%, 0%); } 7797 33% { transform: translate(-77%, 0%); } 7798 66% { transform: translate(-38%, -79%); } 7799 100% { transform: translate(0%, 0%); } 7800 } 7801 </style> 7802 <circle cx="5" cy="50" r="5" style="animation: spinner-ball-triangle1 2.2s linear infinite"/> 7803 <circle cx="27" cy="5" r="5" style="animation: spinner-ball-triangle2 2.2s linear infinite"/> 7804 <circle cx="49" cy="50" r="5" style="animation: spinner-ball-triangle3 2.2s linear infinite"/> 7805<title>Ładuję...</title></svg> 7806`; 7807 return loader; 7808 } 7809 7810 function addAjaxLoader(button, loader) { 7811 button.setAttribute('data-label', button.getAttribute('aria-label')); 7812 button.removeAttribute('aria-label'); 7813 button.prepend(loader); 7814 button.classList.add('relative', '[&>:not(.loader)]:invisible'); 7815 button.disabled = true; 7816 } 7817 7818 function removeAjaxLoader(button, loader) { 7819 button.setAttribute('aria-label', button.getAttribute('data-label')); 7820 button.removeAttribute('data-label'); 7821 loader.remove(); 7822 button.classList.remove('[&>:not(.loader)]:invisible'); 7823 button.disabled = false; 7824 } 7825 7826 async function addAjaxCartForm(form, extraDelay = 500) { 7827 if (!form) return; 7828 event.preventDefault(); 7829 7830 if (!form.reportValidity()) { 7831 return form.submit(); 7832 } 7833 7834 const formData = new FormData(form); 7835 const button = form.querySelector('button:not([type=button], [type=reset])') 7836 ? form.querySelector('button:not([type=button], [type=reset])') 7837 : document.getElementById('product-addtocart-button'); 7838 const loader = createAjaxLoader(button); 7839 const formUenc = hyva.getUenc(); 7840 const postUrl = event.target.action.replace('%25uenc%25', formUenc); 7841 7842 let bodyUrl = new URLSearchParams(formData); 7843 bodyUrl.append("uenc", formUenc); 7844 addAjaxLoader(button, loader); 7845 7846 try { 7847 const response = await fetch(postUrl, { 7848 method: 'POST', 7849 body: bodyUrl.toString(), 7850 mode: "cors", 7851 credentials: "include", 7852 headers: { 7853 'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8', 7854 'X-Requested-With': 'XMLHttpRequest' 7855 } 7856 }); 7857 7858 if (!response.ok) { 7859 return form.submit(); 7860 } else { 7861 window.dispatchEvent(new CustomEvent("cart-item-added", { 7862 detail: { 7863 form 7864 } 7865 })); 7866 } 7867 7868 if (response.redirected) { 7869 return window.location.href = response.url; 7870 } 7871 7872 const responseData = await response.json(); 7873 if (responseData.backUrl) { 7874 return window.location.href = responseData.backUrl; 7875 } 7876 7877 window.dispatchEvent(new CustomEvent("reload-customer-section-data")); 7878 7879 } catch (err) { 7880 console.warn(err); 7881 window.dispatchEvent(new CustomEvent('product-addtocart-error')); 7882 7883 if (typeof window.dispatchMessages === "undefined") return; 7884 window.dispatchMessages([{ 7885 text:'Wyst\u0105pi\u0142\u0020problem\u0020podczas\u0020dodawania\u0020do\u0020koszyka.', 7886 type: 'error' 7887 }], 5000); 7888 } finally { 7889 setTimeout(() => removeAjaxLoader(button, loader), extraDelay); 7890 } 7891 } 7892 7893 function removeAjaxCartForm(form) { 7894 removeEventListener('submit', form); 7895 } 7896 7897 document.addEventListener('submit', function(event) { 7898 if (!event.target.matches('#product_addtocart_form, .product_addtocart_form')) return; 7899 addAjaxCartForm(event.target, 500); 7900 }); 7901</script>
7901 7902 7903 7904 7905
7906<script> 7907 const CONFETTI_CONFIG = { 7908 productPageAddToCartId: 'product-addtocart-button', 7909 catalogAddToCartSelector: '[data-addto="cart"]' 7910 }; 7911 7912 window.addEventListener('init-external-scripts', () => { 7913 if (document.querySelector(CONFETTI_CONFIG.catalogAddToCartSelector) || document.getElementById(CONFETTI_CONFIG.productPageAddToCartId)) { 7914 const confetti_script = document.createElement('script'); 7915 confetti_script.src = 'https\u003A\u002F\u002Fwww.trefl.com\u002Fstatic\u002Fversion1789064390\u002Ffrontend\u002FTrefl\u002Fhyva\u002Dtrefl\u002Fpl_PL\u002Fjs\u002Fcanvas\u002Dconfetti.min.js'; 7916 confetti_script.onload = () => initAddToCartConfetti(); 7917 document.head.appendChild(confetti_script); 7918 } 7919 }, { once: true, passive: true }); 7920 7921 function initAddToCartConfetti() { 7922 const CONFETTI_OPTIONS = { 7923 spread: 50, 7924 disableForReducedMotion: true, 7925 useWorker: true, 7926 resize: true, 7927 colors: [ 7928 '#8bd93e', 7929 '#de0712', 7930 '#fbaf5d', 7931 '#2e3192' 7932 ], 7933 } 7934 7935 function randomInRange(min, max) { 7936 return Math.random() * (max - min) + min; 7937 } 7938 7939 function celebrateAddToCart(triggeringElement) { 7940 const { top, height, left, width, } = triggeringElement.getBoundingClientRect(); 7941 const x = (left + width / 2) / window.innerWidth; 7942 const y = (top + height / 2) / window.innerHeight; 7943 7944 confetti({ 7945 ...CONFETTI_OPTIONS, 7946 origin: { x, y}, 7947 angle: randomInRange(55, 125), 7948 spread: randomInRange(50, 70), 7949 particleCount: randomInRange(100, 140), 7950 }); 7951 } 7952 7953 window.addEventListener('cart-item-added', (event) => { 7954 if (typeof confetti !== 'function') { 7955 return 7956 } 7957 7958 const eventForm = event.detail?.form; 7959 const confettiElement = eventForm.querySelector(CONFETTI_CONFIG.catalogAddToCartSelector) 7960 || document.getElementById(CONFETTI_CONFIG.productPageAddToCartId) 7961 || eventForm; 7962 7963 celebrateAddToCart(confettiElement); 7964 }); 7965 } 7966</script>
7966 7967
7968<script type="module" 7969 src="https://www.trefl.com/static/version1789064390/frontend/Trefl/hyva-trefl/pl_PL/Hyva_Theme/js/alpine3.min.js" 7970 defer 7971 crossorigin 7972></script>
vendor: 1 bytes, line 7972
7972
7973<script> 7974 'use strict'; 7975 function dispatchMessages(messages, hideAfter) { 7976 const messagesEvent = new CustomEvent("messages-loaded", { 7977 detail: { 7978 messages: messages, 7979 hideAfter: hideAfter 7980 } 7981 }); 7982 window.dispatchEvent(messagesEvent); 7983 } 7984 7985 if (typeof hyva === 'undefined' || (!hyva.getBrowserStorage || !hyva.getCookie || !hyva.setCookie)) { 7986 console.warn("Hyvä helpers are not loaded yet. Make sure they are included before this script"); 7987 } 7988 7989 (function( hyva, undefined ) { 7990 7991 hyva.initFormKey = () => { 7992 const inputSelector = 'input[name="form_key"]', 7993 formKey = hyva.getFormKey(); 7994 7995 Array.from(document.querySelectorAll(inputSelector)).map(function (input) { 7996 input.value = formKey 7997 }); 7998 } 7999 8000 hyva.initMessages = () => { 8001 try { 8002 const messages = hyva.getCookie('mage-messages'); 8003 window.mageMessages = messages ? JSON.parse(decodeURIComponent(messages).replace(/\+/g, ' ')) : []; 8004 8005 dispatchMessages(window.mageMessages); 8006 8007 // empty `mage-messages` cookie 8008 const skipSetDomain = true; 8009 hyva.setCookie('mage-messages','', -1, skipSetDomain); 8010 8011 } catch (error) { 8012 console.warn('Error parsing Cookie Messages:', error); 8013 } 8014 } 8015 8016 window.addEventListener('DOMContentLoaded', hyva.initFormKey); 8017 hyva.alpineInitialized(hyva.initMessages) 8018 8019 }( window.hyva = window.hyva || {} )); 8020</script>
vendor: 1 bytes, line 8020
8020
8021<script> 8022 'use strict'; 8023 { 8024 const private_content_key = 'mage-cache-storage'; 8025 const private_content_expire_key = 'mage-cache-timeout'; 8026 const private_content_version_key = 'private_content_version'; 8027 const section_data_ids_key = 'section_data_ids'; 8028 const mage_cache_session_id_key = 'mage-cache-sessid'; 8029 const last_visited_store_key = 'last_visited_store'; 8030 8031 const ttl = 3600; 8032 8033 if (typeof hyva === 'undefined' || (!hyva.getBrowserStorage || !hyva.getCookie || !hyva.setCookie)) { 8034 console.warn("Hyvä helpers are not loaded yet. Make sure they are included before this script"); 8035 } 8036 8037 function loadSectionData () { 8038 const browserStorage = hyva.getBrowserStorage(); 8039 if (!browserStorage) { 8040 typeof window.dispatchMessages !== "undefined" && window.dispatchMessages( 8041 [{ 8042 type: "warning", 8043 text: "Please enable LocalStorage in your browser." 8044 }] 8045 ); 8046 return; 8047 } 8048 try { 8049 let isInvalid = false; 8050 8051 if (hyva.getCookie(last_visited_store_key) !== CURRENT_STORE_CODE) { 8052 isInvalid = true; 8053 } 8054 hyva.setCookie(last_visited_store_key, CURRENT_STORE_CODE, false, false); 8055 8056 if (!hyva.getCookie(mage_cache_session_id_key)) { 8057 isInvalid = true; 8058 browserStorage.removeItem(private_content_key); 8059 const skipSetDomain = true; 8060 const days = false; 8061 hyva.setCookie(mage_cache_session_id_key, true, days, skipSetDomain) 8062 } 8063 8064 const cookieVersion = hyva.getCookie(private_content_version_key); 8065 const storageVersion = browserStorage.getItem(private_content_version_key); 8066 8067 if (cookieVersion && !storageVersion || cookieVersion !== storageVersion) { 8068 isInvalid = true; 8069 } 8070 8071 const privateContentExpires = browserStorage.getItem(private_content_expire_key); 8072 if (privateContentExpires && new Date(privateContentExpires) < new Date()) { 8073 browserStorage.removeItem(private_content_key); 8074 } 8075 8076 if (isInvalid && cookieVersion) { 8077 fetchPrivateContent([]); 8078 } else if (cookieVersion && storageVersion && cookieVersion === storageVersion) { 8079 const privateContent = JSON.parse(browserStorage.getItem(private_content_key)); 8080 if ( 8081 privateContent && 8082 privateContentExpires && 8083 privateContent.cart && 8084 privateContent.customer 8085 ) { 8086 dispatchPrivateContent(privateContent); 8087 } else { 8088 fetchPrivateContent([]); 8089 } 8090 } else { 8091 if (document.getElementById('default-section-data')) { 8092 const privateContent = JSON.parse(document.getElementById('default-section-data').innerText.trim()); 8093 dispatchPrivateContent(privateContent); 8094 } else { 8095 dispatchPrivateContent({}); 8096 } 8097 } 8098 8099 } catch (error) { 8100 console.warn('Error retrieving Private Content:', error); 8101 } 8102 } 8103 8104 hyva.alpineInitialized(loadSectionData) 8105 window.addEventListener('reload-customer-section-data', loadSectionData); 8106 8107 window.processSectionDataBeforeDispatch = window.processSectionDataBeforeDispatch || (data => data); 8108 8109 function dispatchPrivateContent(data) { 8110 8111 const privateContentEvent = new CustomEvent("private-content-loaded", { 8112 detail: { 8113 data: window.processSectionDataBeforeDispatch(data) 8114 } 8115 }); 8116 window.dispatchEvent(privateContentEvent); 8117 } 8118 8119 function fetchPrivateContent(sections) { 8120 fetch(`${BASE_URL}customer/section/load/?sections=${encodeURIComponent(sections.join(','))}`, { 8121 method: 'GET', 8122 headers: { 8123 'Content-Type': 'application/json', 8124 'X-Requested-With': 'XMLHttpRequest' 8125 } 8126 }) 8127 .then(response => response.ok && response.json()) 8128 .then( 8129 data => { 8130 if (data) { 8131 try { 8132 const browserStorage = hyva.getBrowserStorage(); 8133 8134 // merge new data preserving non-invalidated sections 8135 const oldSectionData = JSON.parse(browserStorage.getItem(private_content_key) || '{}') || {}; 8136 8137 if ((! data.cart || ! data.cart.cartId) && oldSectionData['checkout-data']) { 8138 delete oldSectionData['checkout-data']; 8139 } 8140 const newSectionData = Object.assign(oldSectionData, data); 8141 8142 dispatchPrivateContent(newSectionData); 8143 8144 // don't persist messages, they've been dispatched already 8145 if (newSectionData.messages && newSectionData.messages.messages ) { 8146 newSectionData.messages.messages = []; 8147 } 8148 8149 browserStorage.setItem(private_content_key, JSON.stringify(newSectionData)); 8150 8151 const expiresAt = new Date(Date.now() + (ttl * 1000)).toISOString(); 8152 browserStorage.setItem(private_content_expire_key, expiresAt); 8153 8154 const newCookieVersion = hyva.getCookie(private_content_version_key); 8155 browserStorage.setItem(private_content_version_key, newCookieVersion); 8156 8157 // We don't need the section_data_ids in Hyvä, but we store them for compatibility 8158 // with Luma Fallback. Otherwise, not all sections are loaded in Luma Checkout 8159 hyva.setCookie( 8160 section_data_ids_key, 8161 JSON.stringify( 8162 Object.keys(data).reduce((sectionDataIds, sectionKey) => { 8163 sectionDataIds[sectionKey] = data[sectionKey]['data_id']; 8164 return sectionDataIds; 8165 }, {}) 8166 ), 8167 false, 8168 true 8169 ); 8170 } catch (error) { 8171 console.warn("Couldn't store privateContent", error); 8172 } 8173 } 8174 } 8175 ); 8176 } 8177 } 8178</script>
vendor: 1 bytes, line 8178
8178
8179<script> 8180 (() => { 8181 document.addEventListener('submit', event => event.target.action = event.target.action.replace('%25uenc%25', hyva.getUenc())); 8182 })() 8183</script>
vendor: 1 bytes, line 8183
8183
8184<script> 8185 (events => { 8186 const dispatchUserInteractionEvent = () => { 8187 events.forEach(type => window.removeEventListener(type, dispatchUserInteractionEvent)) 8188 window.dispatchEvent(new Event('init-external-scripts')) 8189 }; 8190 events.forEach(type => window.addEventListener(type, dispatchUserInteractionEvent, {once: true, passive: true})) 8191 })(['touchstart', 'mousemove', 'wheel', 'scroll', 'keydown']) 8192</script>
8192 8193
8194<script type="application/ld+json"> 8195{ 8196"@context": "https://schema.org/", 8197"@type": "WebSite", 8198"url": "https://www.trefl.com/", 8199"potentialAction": { 8200"@type": "SearchAction", 8201"target": "https://www.trefl.com/catalogsearch/result/?q={search_term_string}", 8202"query-input": "required name=search_term_string" 8203} 8204} 8205</script>
8205<script> 8206 'use strict'; 8207 8208 const grecaptchaV2LoadCallbacks = []; 8209 8210 function executeRecaptchaLoadCallbacks () { 8211 while (window.grecaptcha && grecaptchaV2LoadCallbacks.length > 0) { 8212 const callback = grecaptchaV2LoadCallbacks.pop(); 8213 typeof callback === 'string' ? window[callback]() : callback(); 8214 } 8215 } 8216 8217 (function() { 8218 const loadRecaptchaScript = (event) => { 8219 8220 if (window.grecaptcha || !event.target.form) { 8221 return; 8222 } 8223 8224 const url = 'https://www.google.com/recaptcha/api.js?onload=executeRecaptchaLoadCallbacks'; 8225 const siteKey = '6LfQvvEiAAAAANp2t9xf_A7oO5yxUbASHE3tZjzo'; 8226 const script = document.createElement('script'); 8227 script.type = 'text/javascript'; 8228 script.src = siteKey ? `${url}&render=${siteKey}` : `${url}&render=explicit`; 8229 script.async = true; 8230 document.head.appendChild(script); 8231 8232 script.addEventListener('load', () => { 8233 Array.from(document.querySelectorAll('button[data-recaptcha-btn]:disabled')).forEach(btn => btn.removeAttribute('disabled')); 8234 }); 8235 } 8236 8237 window.forceLoadRecaptchaScript = (form) => { 8238 loadRecaptchaScript({target: {form: form || 'dummy'}}); 8239 executeRecaptchaLoadCallbacks(); 8240 }; 8241 8242 document.body.addEventListener('input', loadRecaptchaScript, { once: true }); 8243 document.body.addEventListener('focus', loadRecaptchaScript, { once: true }); 8244 8245 }()); 8246 8247</script>
vendor: 1 bytes, line 8247
8247
8248<script> 8249 'use strict'; 8250 8251 (function () { 8252 const modals = []; 8253 const excludedFromFocusTrapping = new Set(); 8254 8255 function trapFocusInNextModalWithOverlay() { 8256 for (let idx = modals.length -1; idx >= 0; idx--) { 8257 const nextOnStack = modals[idx]; 8258 const nextDialogElement = nextOnStack.instance.$refs[nextOnStack.name]; 8259 if (! isOverlayDisabled(nextDialogElement)) { 8260 hyva.trapFocus(nextDialogElement); 8261 break; 8262 } 8263 } 8264 } 8265 8266 function focusables(dialogElement) { 8267 const selector = 'button, [href], input, textarea, select, details, [tabindex]:not([tabindex="-1"])'; 8268 return Array.from(dialogElement.querySelectorAll(selector)) 8269 .filter(el => !el.hasAttribute('disabled')); 8270 } 8271 8272 function firstVisible(elements) { 8273 const a = Array.from(elements); 8274 for (let i = 0; i < a.length; i++) { 8275 if (a[i].offsetWidth || a[i].offsetHeight || a[i].getClientRects().length) return a[i]; 8276 } 8277 return null; 8278 } 8279 8280 function isInViewport(element) { 8281 const rect = element && element.getBoundingClientRect(); 8282 return rect && 8283 rect.top >= 0 && 8284 rect.left >= 0 && 8285 rect.right <= window.innerWidth && 8286 rect.bottom <= window.innerHeight; 8287 } 8288 8289 function setFocusAfterTransition(dialogElement, duration) { 8290 const nested = Array.from(dialogElement.querySelectorAll('[role="dialog"]')); 8291 const candidates = Array.from(dialogElement.querySelectorAll('[x-focus-first]')); 8292 next: for (let candidate of candidates) { 8293 for (let child of nested) { 8294 if (child.contains(candidate)) continue next; 8295 } 8296 setTimeout(() => candidate.focus(), 50); 8297 break; 8298 } 8299 window.setTimeout(() => { 8300 const focusElement = firstVisible(dialogElement.querySelectorAll('[x-focus-first]')) || 8301 focusables(dialogElement)[0] || 8302 null; 8303 focusElement && isInViewport(focusElement) && focusElement.focus(); 8304 }, Math.max(1, duration)); 8305 } 8306 8307 function determineTrigger($refs, dialog, trigger) { 8308 if (typeof trigger === 'undefined' && typeof dialog === 'object' && dialog.target instanceof HTMLElement) { 8309 return dialog.target; 8310 } 8311 if (typeof dialog === 'string' && typeof trigger === 'object' && trigger.target instanceof HTMLElement) { 8312 return trigger.target; 8313 } 8314 if (typeof trigger === 'string') { 8315 try { 8316 return $refs[trigger] || document.querySelector(trigger) 8317 } catch (e) {} 8318 } 8319 if (trigger instanceof Element) { 8320 return trigger; 8321 } 8322 8323 return null; 8324 } 8325 8326 function isOverlayDisabled(dialog) { 8327 return dialog && dialog.hasAttribute('x-no-overlay') 8328 } 8329 8330 function areRemainingModalsWithoutOverlay(modals) 8331 { 8332 const overflowDisabled = modals.map(modal => modal.instance.$refs[modal.name]).filter(isOverlayDisabled); 8333 8334 return overflowDisabled.length === modals.length; 8335 } 8336 8337 window.hyva.modal = function(options = {}) { 8338 if (this.$el && this.$el.dataset && this.$el.dataset.options) { 8339 try { 8340 options = Object.assign(options, JSON.parse(this.$el.dataset.options || '{}')); 8341 } catch (e) { 8342 throw new Error('Cannot read the dialog options from the data-options attribute: not valid JSON'); 8343 } 8344 } 8345 8346 const config = Object.assign({ 8347 dialog: 'dialog', duration: 300, transitionEnter: 'transition ease-out duration-300', 8348 transitionEnterStart: 'opacity-0', 8349 transitionEnterEnd: 'opacity-100', 8350 transitionLeave: 'transition ease-in duration-300', 8351 transitionLeaveStart: 'opacity-100', 8352 transitionLeaveEnd: 'opacity-0', 8353 }, options); 8354 let lastHide = 0; 8355 8356 return { 8357 opened: {}, 8358 show(dialog, trigger) { 8359 const focusTargetAfterHide = determineTrigger(this.$refs, dialog, trigger); 8360 const name = typeof dialog === 'string' ? dialog : config.dialog; 8361 const dialogElement = this.$refs[name]; 8362 if (! dialogElement) { 8363 return; 8364 } 8365 const useOverlay = ! dialogElement.hasAttribute('x-no-overlay'); 8366 8367 dialogElement.scrollTop = 0; 8368 8369 if (this.opened[name]) { 8370 return; 8371 } 8372 8373 if (focusTargetAfterHide) { 8374 focusTargetAfterHide.setAttribute('aria-expanded', 'true'); 8375 } 8376 8377 this.opened[name] = true; 8378 useOverlay && this.$nextTick(() => hyva.trapFocus(dialogElement)); 8379 setFocusAfterTransition(dialogElement, config.duration); 8380 8381 const frame = {name, instance: this, focusTarget: focu
8381sTargetAfterHide, time: Date.now()}; 8382 8383 modals.push(frame); 8384 if (useOverlay) { 8385 document.body.classList.add('overflow-hidden'); 8386 } 8387 return new Promise(resolve => frame.resolve = resolve); 8388 }, 8389 cancel() { 8390 this.hide(false); 8391 }, 8392 ok() { 8393 this.hide(true); 8394 }, 8395 hide(value) { 8396 if (Date.now() - lastHide < config.duration) { 8397 return; 8398 } 8399 lastHide = Date.now(); 8400 8401 const modal = modals.pop() || {}; 8402 if (! modal.instance) { 8403 return; 8404 } 8405 8406 const name = modal.name; 8407 this.opened[name] = false; 8408 hyva.releaseFocus(modal.instance.$refs[modal.name]) 8409 trapFocusInNextModalWithOverlay(); 8410 8411 const nextFocusAfterHide = modal.focusTarget; 8412 nextFocusAfterHide && setTimeout(() => { 8413 nextFocusAfterHide.setAttribute('aria-expanded', 'false'); 8414 nextFocusAfterHide.focus() 8415 }, config.duration); 8416 8417 if (modals.length === 0 || areRemainingModalsWithoutOverlay(modals)) { 8418 document.body.classList.remove('overflow-hidden'); 8419 } 8420 8421 modal.resolve(value); 8422 }, 8423 overlay(dialog) { 8424 dialog = this.$el.dataset.dialogRefName || dialog; 8425 const name = typeof dialog === 'string' ? dialog : config.dialog; 8426 return { 8427 ['x-show']() { 8428 return this.opened[name] 8429 }, 8430 ['x-transition:enter']: config.transitionEnter, 8431 ['x-transition:enter-start']: config.transitionEnterStart, 8432 ['x-transition:enter-end']: config.transitionEnterEnd, 8433 ['x-transition:leave']: config.transitionLeave, 8434 ['x-transition:leave-start']: config.transitionLeaveStart, 8435 ['x-transition:leave-end']: config.transitionLeaveEnd, 8436 ['@hyva-modal-show.window'](event) { 8437 event.detail && event.detail.dialog === name && this.show(name, event.detail.focusAfterHide) 8438 } 8439 }; 8440 }, 8441 showDialogOnInit() { 8442 const parent = this.$el.closest('[data-dialog-ref-name]'); 8443 if (parent && parent.dataset.dialogRefName) { 8444 this.$dispatch('hyva-modal-show', {dialog: parent.dataset.dialogRefName}) 8445 } 8446 } 8447 }; 8448 } 8449 8450 window.hyva.modal.peek = () => modals.length > 0 && modals[modals.length -1] 8451 8452 window.hyva.modal.pop = function () { 8453 if (modals.length > 0) { 8454 const modal = modals[modals.length -1]; 8455 modal.instance.hide(); 8456 } 8457 } 8458 8459 window.hyva.modal.excludeSelectorsFromFocusTrap = function (selectors) { 8460 typeof selectors === 'string' || selectors instanceof String 8461 ? excludedFromFocusTrapping.add(selectors) 8462 : selectors.map(selector => excludedFromFocusTrapping.add(selector)); 8463 } 8464 8465 window.hyva.modal.eventListeners = { 8466 keydown: event => { 8467 if (event.key === 'Escape') { 8468 window.hyva.modal.pop(); 8469 } 8470 }, 8471 click: event => { 8472 if (modals.length > 0) { 8473 const modal = modals[modals.length -1]; 8474 const dialog = modal.instance.$refs[modal.name]; 8475 if (modal.time + 50 < Date.now() && // if last click processing is more than 50ms ago 8476 ! isOverlayDisabled(dialog) && // if dialog has overlay 8477 ! dialog.contains(event.target)) { // if click is outside of dialog 8478 modal.instance.hide(); 8479 } 8480 } 8481 } 8482 }; 8483 8484 document.addEventListener('keydown', window.hyva.modal.eventListeners.keydown); 8485 8486 document.addEventListener('click', window.hyva.modal.eventListeners.click); 8487 })(); 8488 window.addEventListener('alpine:init', () => { 8489 Alpine.data('hyvaModal', window.hyva.modal); 8490 }, {once: true}); 8491</script>
8491 8492 8493<section x-data="{isLoading: false}" 8494 @amgdpr-loading-start.window="isLoading = true" @amgdpr-loading-stop.window="isLoading = false"> 8495 <div 8496 class="z-50 fixed inset-0 grid place-items-center bg-white/70 text-slate-800" 8497 x-cloak 8498 x-show="isLoading" 8499 x-transition.opacity.duration.200ms 8500> 8501 <div class="flex gap-10 items-center p-4"> 8502 <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"> 8503 <style> 8504 @keyframes spinner-ball-triangle1 { 8505 0% { transform: translate(0%, 0%); } 8506 33% { transform: translate(38%, -79%); } 8507 66% { transform: translate(77%, 0%); } 8508 100% { transform: translate(0%, 0%); } 8509 } 8510 8511 @keyframes spinner-ball-triangle2 { 8512 0% { transform: translate(0%, 0%); } 8513 33% { transform: translate(38%, 79%); } 8514 66% { transform: translate(-38%, 79%); } 8515 100% { transform: translate(0%, 0%); } 8516 } 8517 8518 @keyframes spinner-ball-triangle3 { 8519 0% { transform: translate(0%, 0%); } 8520 33% { transform: translate(-77%, 0%); } 8521 66% { transform: translate(-38%, -79%); } 8522 100% { transform: translate(0%, 0%); } 8523 } 8524 </style> 8525 <circle cx="5" cy="50" r="5" style="animation: spinner-ball-triangle1 2.2s linear infinite"/> 8526 <circle cx="27" cy="5" r="5" style="animation: spinner-ball-triangle2 2.2s linear infinite"/> 8527 <circle cx="49" cy="50" r="5" style="animation: spinner-ball-triangle3 2.2s linear infinite"/> 8528</svg> 8529 <span class="text-xl select-none"> 8530 ÅadujÄ... </span> 8531 </div> 8532</div> 8533</section> 8534
8535<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>
8535<script type="text/json" id="default-section-data"> 8536 {"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":1790243710},"captcha":[],"loggedAsCustomer":[],"persistent":[],"review":[],"wishlist":{"items":[]},"hyva_checkout":[],"gtm-checkout":[],"recently_viewed_product":[],"recently_compared_product":[],"product_data_storage":[],"paypal-billing-agreement":[]}</script>
8536 8537<!-- added by Trusted Shops app: Start -->
8538<script src="https://integrations.etrusted.com/applications/widget.js/v2" async defer></script>
8538 8539<!-- added by Trusted Shops app: End --> 8540</div>
8540<script nonce="ODN6OGg5cXdsazIxaWMyMWozb2h2Y3FuajFnNXJ5MGI="> 8541 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]'); 8542 </script>
vendor: 1 bytes, line 8542
8542
8543<script nonce="ODN6OGg5cXdsazIxaWMyMWozb2h2Y3FuajFnNXJ5MGI="> 8544 function yireoGoogleTagManager2FindParentElementWithName(element, parentTagName) { 8545 if (!element.parentElement) { 8546 return null; 8547 } 8548 8549 if (element.parentElement.tagName.toLowerCase() === parentTagName) { 8550 return element.parentElement; 8551 } 8552 8553 return yireoGoogleTagManager2FindParentElementWithName(element.parentElement, parentTagName); 8554 } 8555 8556 const products = document.querySelectorAll('.products a.product'); 8557 if (products && products.length > 0) { 8558 products.forEach(function(product) { 8559 product.addEventListener('click', function(event, s) { 8560 let parentElement = yireoGoogleTagManager2FindParentElementWithName(event.target, 'form'); 8561 const inputElement = parentElement.querySelector('input[name="product"]'); 8562 const productId = inputElement.value; 8563 const productData = window['YIREO_GOOGLETAGMANAGER2_PRODUCT_DATA_ID_' + productId] || {}; 8564 productData.item_id = productId; 8565 8566 const eventData = { 8567 'event': 'select_item', 8568 'ecommerce': { 8569 'items': [productData] 8570 } 8571 } 8572 8573 yireoGoogleTagManager2Pusher(eventData, 'push (page event "select_item") [script-product-clicks.phtml]'); 8574 8575 if (window['YIREO_GOOGLETAGMANAGER2_DEBUG_CLICKS'] && confirm("Press to continue with redirect") === false) { 8576 event.preventDefault(); 8577 } 8578 }); 8579 }) 8580 } 8581</script>
vendor: 1 bytes, line 8581
8581
8582<script nonce="ODN6OGg5cXdsazIxaWMyMWozb2h2Y3FuajFnNXJ5MGI="> 8583 window.addEventListener('private-content-loaded', function(event) { 8584 window.dataLayer = window.dataLayer || []; 8585 8586 var isEmpty = function (variable) { 8587 if (typeof variable === 'undefined') { 8588 return true; 8589 } 8590 8591 if (Array.isArray(variable) && variable.length === 0) { 8592 return true; 8593 } 8594 8595 return typeof variable === 'object' && Object.keys(variable).length === 0; 8596 } 8597 8598 var getSectionNames = function () { 8599 return ['cart', 'customer']; 8600 } 8601 8602 getSectionNames().forEach(function (sectionName) { 8603 if (!event.detail.data[sectionName].gtm) { 8604 return; 8605 } 8606 8607 const attributes = event.detail.data[sectionName].gtm; 8608 if (!Object.keys(attributes).length > 0) { 8609 return; 8610 } 8611 8612 yireoGoogleTagManager2Pusher(attributes, 'push (attributes) [script-additions.phtml]'); 8613 }); 8614 8615 let attributes = {}; 8616 getSectionNames().forEach(function (sectionName) { 8617 if (!event.detail.data[sectionName].gtm_events) { 8618 return; 8619 } 8620 8621 const gtmEvents = event.detail.data[sectionName].gtm_events; 8622 for (const [eventId, eventData] of Object.entries(gtmEvents)) { 8623 yireoGoogleTagManager2Logger('found event in section "' + sectionName + '"', eventData); 8624 8625 const metaData = eventData.meta; 8626 yireoGoogleTagManager2Pusher(eventData, 'push (customerData "' + sectionName + '" event "' + eventId + '")'); 8627 8628 if (!metaData || metaData.cacheable !== true) { 8629 yireoGoogleTagManager2Logger('removing event "' + eventId + '" from section "' + sectionName + '"') 8630 8631 let mageCacheStorage = event.detail.data; 8632 8633 if (mageCacheStorage !== null 8634 && typeof mageCacheStorage[sectionName] !== 'undefined' 8635 && typeof mageCacheStorage[sectionName].gtm_events !== 'undefined' 8636 && eventId in mageCacheStorage[sectionName].gtm_events) { 8637 delete mageCacheStorage[sectionName].gtm_events[eventId]; 8638 } 8639 8640 window.localStorage.setItem('mage-cache-storage', JSON.stringify(mageCacheStorage)); 8641 } 8642 } 8643 }); 8644 8645 if (false === isEmpty(attributes)) { 8646 yireoGoogleTagManager2Pusher(attributes, 'dataLayer (initial js) [script-additions.phtml]'); 8647 } 8648 }); 8649</script>
8649 8650</body> 8651</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.