{"product_id":"plaque-de-porte-sport-personnalisee-prenom","title":"Plaque de porte Sport personnalisée avec prénom","description":"\u003cdiv class=\"hushhouse-product-description\"\u003e\n\u003cp\u003eFootball, rugby, tennis ou ping-pong : faites une place à sa passion, dès la porte de sa chambre.\u003c\/p\u003e\n\u003ch2\u003eChoisissez son univers\u003c\/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFootball : Son prénom dans un univers football, à la porte de sa chambre.\u003c\/li\u003e\n\u003cli\u003eRugby : Une plaque au prénom de votre enfant pour partager sa passion du rugby.\u003c\/li\u003e\n\u003cli\u003eTennis : Un décor tennis et son prénom pour marquer son territoire.\u003c\/li\u003e\n\u003cli\u003ePing-pong : Le ping-pong s’invite sur sa porte, avec son prénom.\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch2\u003eLes détails de votre plaque\u003c\/h2\u003e\n\u003cul\u003e\n\u003cli\u003ePrénom personnalisé : 14 caractères maximum.\u003c\/li\u003e\n\u003cli\u003ePlaque en acrylique de 22 × 14 cm, en forme d’arche.\u003c\/li\u003e\n\u003cli\u003eLe décor est entièrement imprimé, avec un fond opaque.\u003c\/li\u003e\n\u003cli\u003eImpression UV au dos de la plaque.\u003c\/li\u003e\n\u003cli\u003eUne plaque personnalisée et sa cordelette incluses.\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch2\u003eVotre personnalisation\u003c\/h2\u003e\n\u003cp\u003eChoisissez votre modèle, puis saisissez le prénom dans le champ prévu. Relisez votre saisie avant d’ajouter la plaque au panier.\u003c\/p\u003e\n\u003cp\u003eLe prénom est personnalisé. Les autres inscriptions restent celles visibles sur le modèle choisi.\u003c\/p\u003e\n\u003cp\u003ePour un autre prénom, personnalisez un nouvel article avant de l’ajouter au panier.\u003c\/p\u003e\n\u003cp\u003eUne idée cadeau à personnaliser pour Noël ou pour sa chambre.\u003c\/p\u003e\n\u003cdiv class=\"hushhouse-aplus\"\u003e\n\u003cpicture class=\"hushhouse-aplus-picture\" data-module=\"01\"\u003e\u003csource media=\"(max-width: 749px)\" srcset=\"https:\/\/cdn.shopify.com\/s\/files\/1\/1071\/4782\/1395\/files\/HH-20261022-sport-aplus-01-mobile.png?v=1792697636\" width=\"600\" height=\"450\"\u003e\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/1071\/4782\/1395\/files\/HH-20261022-sport-aplus-01-desktop.png?v=1792697645\" alt=\"Présentation des modèles de porte Sport, Hush House\" width=\"1464\" height=\"600\" loading=\"lazy\" decoding=\"async\" style=\"display:block;width:100%;height:auto;\"\u003e\u003c\/picture\u003e\n\u003cpicture class=\"hushhouse-aplus-picture\" data-module=\"03\"\u003e\u003csource media=\"(max-width: 749px)\" srcset=\"https:\/\/cdn.shopify.com\/s\/files\/1\/1071\/4782\/1395\/files\/HH-20261022-sport-aplus-03-mobile.png?v=1792697636\" width=\"600\" height=\"450\"\u003e\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/1071\/4782\/1395\/files\/HH-20261022-sport-aplus-03-desktop.png?v=1792697652\" alt=\"Personnalisation avec un prénom de porte Sport, Hush House\" width=\"1464\" height=\"600\" loading=\"lazy\" decoding=\"async\" style=\"display:block;width:100%;height:auto;\"\u003e\u003c\/picture\u003e\n\u003cpicture class=\"hushhouse-aplus-picture\" data-module=\"02\"\u003e\u003csource media=\"(max-width: 749px)\" srcset=\"https:\/\/cdn.shopify.com\/s\/files\/1\/1071\/4782\/1395\/files\/HH-20261022-sport-aplus-02-mobile.png?v=1792697636\" width=\"600\" height=\"450\"\u003e\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/1071\/4782\/1395\/files\/HH-20261022-sport-aplus-02-desktop.png?v=1792697652\" alt=\"Détails des plaques de porte Sport, Hush House\" width=\"1464\" height=\"600\" loading=\"lazy\" decoding=\"async\" style=\"display:block;width:100%;height:auto;\"\u003e\u003c\/picture\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\n\u003c!-- HH_PRODUCT_GUARD_V1_START --\u003e\n\u003cspan class=\"hh-personalization-guard\" hidden\u003e\u003c\/span\u003e\n\u003cstyle\u003e\nproduct-info[data-hh-personalized-guard=\"v1\"] .shopify-payment-button,\nproduct-info[data-hh-personalized-guard=\"v1\"] shopify-accelerated-checkout,\nproduct-info[data-hh-personalized-guard=\"v1\"] [data-shopify=\"payment-button\"] {\n  display: none !important;\n}\nproduct-info[data-hh-personalized-guard=\"v1\"] .hh-personalization-error {\n  color: #a32222;\n  font-size: 1.3rem;\n  line-height: 1.5;\n  margin: .6rem 0 0;\n}\nproduct-info[data-hh-personalized-guard=\"v1\"] .hh-personalization-error[hidden] {\n  display: none !important;\n}\nproduct-info[data-hh-personalized-guard=\"v1\"] .hushhouse-aplus.hh-aplus-wide {\n  display: block;\n  width: 100%;\n  max-width: none;\n  margin: clamp(2rem, 5vw, 5rem) auto 0;\n  padding: 0;\n}\nproduct-info[data-hh-personalized-guard=\"v1\"] .hh-aplus-wide picture {\n  display: block;\n  margin: 0 0 1.6rem;\n}\nproduct-info[data-hh-personalized-guard=\"v1\"] .hh-aplus-wide img {\n  display: block;\n  width: 100%;\n  height: auto;\n  max-width: 100%;\n}\n\u003c\/style\u003e\n\u003cscript\u003e\n(() =\u003e {\n  'use strict';\n  const source = document.currentScript;\n  const root = source \u0026\u0026 source.closest('product-info[id^=\"MainProduct-\"]');\n  if (!root || root.dataset.hhPersonalizedGuard === 'v1') return;\n  root.dataset.hhPersonalizedGuard = 'v1';\n\n  const fieldName = 'properties[Prénom à imprimer]';\n  const errorId = root.id + '-hh-prenom-error';\n  const paymentSelector = '.shopify-payment-button, shopify-accelerated-checkout, [data-shopify=\"payment-button\"]';\n  let field = null;\n  let form = null;\n  let error = null;\n  let updateQueued = false;\n\n  const isAddForm = element =\u003e {\n    if (!element || element.tagName !== 'FORM' || !root.contains(element)) return false;\n    try {\n      return \/\\\/cart\\\/add\\\/?$\/.test(new URL(element.action, document.baseURI).pathname);\n    } catch (_) {\n      return false;\n    }\n  };\n\n  const setup = () =\u003e {\n    field = root.querySelector('input[name=\"' + fieldName + '\"]');\n    form = field \u0026\u0026 isAddForm(field.form) ? field.form :\n      Array.from(root.querySelectorAll('form')).find(isAddForm) || null;\n    if (form) form.removeAttribute('novalidate');\n    if (field) {\n      field.required = true;\n      field.minLength = 1;\n      field.maxLength = 14;\n      error = root.querySelector('[data-hh-prenom-error]');\n      if (!error) {\n        error = document.createElement('p');\n        error.id = errorId;\n        error.className = 'hh-personalization-error';\n        error.dataset.hhPrenomError = '';\n        error.setAttribute('role', 'alert');\n        error.hidden = true;\n        field.insertAdjacentElement('afterend', error);\n      }\n      const describedBy = new Set((field.getAttribute('aria-describedby') || '').split(\/\\s+\/).filter(Boolean));\n      describedBy.add(error.id);\n      field.setAttribute('aria-describedby', Array.from(describedBy).join(' '));\n    }\n    root.querySelectorAll(paymentSelector).forEach(element =\u003e { element.hidden = true; });\n    const grid = root.querySelector('.product.grid');\n    const aplus = root.querySelector('.hushhouse-aplus');\n    if (grid \u0026\u0026 aplus \u0026\u0026 grid.parentElement.classList.contains('page-width')) {\n      aplus.classList.add('hh-aplus-wide');\n      if (aplus.parentElement !== grid.parentElement || grid.nextElementSibling !== aplus) {\n        grid.insertAdjacentElement('afterend', aplus);\n      }\n    }\n  };\n\n  const message = () =\u003e {\n    if (!field || !form || field.form !== form || field.disabled || field.name !== fieldName) {\n      return 'La personnalisation n’est pas prête. Rechargez la page avant d’ajouter l’article.';\n    }\n    if (!field.value.trim()) return 'Saisissez le prénom à imprimer (1 à 14 caractères).';\n    if (field.value.length \u003e 14) return 'Le prénom doit contenir 14 caractères maximum.';\n    return '';\n  };\n\n  const showError = text =\u003e {\n    if (!error) {\n      error = document.createElement('p');\n      error.id = errorId;\n      error.className = 'hh-personalization-error';\n      error.dataset.hhPrenomError = '';\n      error.setAttribute('role', 'alert');\n      (form || root).appendChild(error);\n    }\n    if (error.textContent !== text) error.textContent = text;\n    error.hidden = !text;\n    if (field) {\n      field.setCustomValidity(text);\n      if (text) {\n        field.setAttribute('aria-invalid', 'true');\n        field.focus();\n      } else {\n        field.removeAttribute('aria-invalid');\n      }\n    }\n  };\n\n  const stopIfInvalid = event =\u003e {\n    setup();\n    const text = message();\n    showError(text);\n    if (!text) return false;\n    event.preventDefault();\n    event.stopImmediatePropagation();\n    return true;\n  };\n\n  root.addEventListener('click', event =\u003e {\n    const target = event.target instanceof Element ? event.target : event.target.parentElement;\n    const button = target \u0026\u0026 target.closest('button[type=\"submit\"], button[name=\"add\"], input[type=\"submit\"]');\n    if (button \u0026\u0026 isAddForm(button.form)) stopIfInvalid(event);\n  }, true);\n\n  root.addEventListener('submit', event =\u003e {\n    if (isAddForm(event.target)) stopIfInvalid(event);\n  }, true);\n\n  root.addEventListener('invalid', event =\u003e {\n    setup();\n    if (event.target === field) {\n      event.preventDefault();\n      showError(message());\n    }\n  }, true);\n\n  root.addEventListener('input', event =\u003e {\n    setup();\n    if (event.target === field) {\n      field.setCustomValidity('');\n      field.removeAttribute('aria-invalid');\n      if (error) error.hidden = true;\n    }\n  });\n\n  const observer = new MutationObserver(() =\u003e {\n    if (updateQueued) return;\n    updateQueued = true;\n    queueMicrotask(() =\u003e {\n      updateQueued = false;\n      setup();\n    });\n  });\n  observer.observe(root, { childList: true, subtree: true });\n  setup();\n})();\n\u003c\/script\u003e\n\u003c!-- HH_PRODUCT_GUARD_V1_END --\u003e\n","brand":"Hush House Paris","offers":[{"title":"Football","offer_id":55560285880659,"sku":"PDP-SPO-FOOT","price":24.9,"currency_code":"EUR","in_stock":true},{"title":"Rugby","offer_id":55560285913427,"sku":"PDP-SPO-RUGBY","price":24.9,"currency_code":"EUR","in_stock":true},{"title":"Tennis","offer_id":55560285946195,"sku":"PDP-SPO-TENNIS","price":24.9,"currency_code":"EUR","in_stock":true},{"title":"Ping-pong","offer_id":55560285978963,"sku":"PDP-SPO-PINGPONG","price":24.9,"currency_code":"EUR","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/1071\/4782\/1395\/files\/HH-20261022-PDP-SPO-FOOT-packshot.jpg?v=1792697654","url":"https:\/\/hushhouseparis.com\/products\/plaque-de-porte-sport-personnalisee-prenom","provider":"Hush House Paris","version":"1.0","type":"link"}