{"id":359,"date":"2026-10-20T19:56:09","date_gmt":"2026-10-20T19:56:09","guid":{"rendered":"https:\/\/protonim.fr\/?post_type=product&#038;p=359"},"modified":"2026-10-22T12:09:20","modified_gmt":"2026-10-22T12:09:20","slug":"saute-vent-personnalisable-triumph-street-triple-765-r-rs-rx-moto2","status":"publish","type":"product","link":"https:\/\/protonim.fr\/index.php\/product\/saute-vent-personnalisable-triumph-street-triple-765-r-rs-rx-moto2\/","title":{"rendered":"Saute-vent personnalisable \u2013 Triumph Street Triple 765 R \/ RS \/ RX \/ Moto2"},"content":{"rendered":"<p>Une pi\u00e8ce de finition pour habiller l\u2019avant du bloc compteur de votre Street Triple 765.<\/p>\n<ul>\n<li>Mod\u00e8le \u00e0 s\u00e9lectionner : R, RS, RX ou Moto2.<\/li>\n<li>Mat\u00e9riau : ASA.<\/li>\n<li>Finition mate ou brillante ; finition brillante : suppl\u00e9ment de 10 \u20ac.<\/li>\n<li>Lettrage R, RS, RX, Moto2, Street Triple ou logo Triumph : suppl\u00e9ment de 5 \u20ac. Option Aucun disponible.<\/li>\n<li>Fixation par adh\u00e9sifs 3M, sans modification du v\u00e9hicule.<\/li>\n<li>Tarif de base : 20 \u20ac. Avec lettrage ou logo : 25 \u20ac. Finition brillante : +10 \u20ac.<\/li>\n<li>Mod\u00e8le R : lettrage R, Street Triple, logo Triumph ou Aucun. Mod\u00e8les RS\/RX\/Moto2 : lettrages RS, RX, Moto2, Street Triple, logo Triumph ou Aucun.<\/li>\n<\/ul>\n<p><strong>Fabrication sous 5 \u00e0 10 jours ouvr\u00e9s, hors d\u00e9lais du transporteur.<\/strong><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Choisissez votre mod\u00e8le, votre lettrage ou logo, sa couleur et la finition de votre saute-vent en ASA.<\/p>\n<style>.pn3d-visual{width:48%;float:left;margin-bottom:2em}.pn3d-visual .woocommerce-product-gallery{width:100%!important;float:none!important;margin:0!important}.pn3d-visual [hidden],tr[hidden]{display:none!important}.pn3d-tabs{display:flex;gap:8px;margin-bottom:12px}.pn3d-tabs button{border:1px solid #d5d1ce!important;background:#fff!important;color:#34302e!important;padding:10px 16px!important;font-size:14px!important;border-radius:5px!important}.pn3d-tabs button[aria-pressed=true]{background:#862234!important;border-color:#862234!important;color:#fff!important}#pn-sautevent-3d{border:1px solid #e3ded8;border-radius:12px;overflow:hidden;background:#f3f1ee;color:#282522}#pn-sautevent-3d model-viewer{display:block;width:100%;height:420px;--progress-bar-color:#862234}#pn-sautevent-3d .pn3d-status{margin:0;padding:12px 18px;font-size:14px;background:#fff;border-top:1px solid #e3ded8}#pn-sautevent-3d .pn3d-notice{padding:12px 18px;margin:0;color:#6a3c12;background:#fff4df;font-size:14px}#pn-sautevent-3d .pn3d-help{display:flex;align-items:center;justify-content:space-between;gap:10px;margin:0;padding:10px 16px;font-size:12px}#pn-sautevent-3d .pn3d-reset{padding:5px 8px!important;font-size:12px!important;background:transparent!important;color:#5b4c46!important;border:1px solid #cfc5bc!important;border-radius:4px!important}.pn3d-swatches{display:grid;grid-template-columns:repeat(5,36px);gap:8px;margin:4px 0 8px}.pn3d-swatches button.pn3d-swatch{width:36px!important;height:36px!important;min-width:0!important;min-height:0!important;padding:0!important;background:var(--pn-color)!important;border:2px solid #c4bfba!important;border-radius:50%!important;box-shadow:inset 0 0 0 2px #fff!important;position:relative}.pn3d-swatches button.pn3d-swatch[aria-pressed=true]{outline:2px solid #862234;outline-offset:2px}.pn3d-swatches button:focus-visible{outline:3px solid #862234!important;outline-offset:3px!important}.pn3d-native-color{display:none!important}.pn3d-color-name{display:block;font-size:13px;color:#5c5550}.pn3d-caption{font-size:12px;color:#6b625a}@media(max-width:767px){.pn3d-visual{width:100%;float:none}.pn3d-visual model-viewer{height:330px!important}}\n<\/style>\n<section id=\"pn-sautevent-3d\" aria-label=\"Configurateur 3D du saute-vent\"><model-viewer camera-controls touch-action=\"pan-y\" camera-orbit=\"0deg 90deg 115%\" camera-target=\"0m 0m 0m\" field-of-view=\"30deg\" shadow-intensity=\"0.6\" exposure=\"1.15\" interaction-prompt=\"none\" alt=\"Aper\u00e7u 3D du saute-vent Proto\u2019Nim, avec couleur sur le lettrage ou logo uniquement\"><\/model-viewer><\/p>\n<p class=\"pn3d-help\"><span>Faites glisser pour tourner \u00b7 Pincez pour zoomer<\/span><button type=\"button\" class=\"pn3d-reset\">Vue de face<\/button><\/p>\n<p class=\"pn3d-status\" aria-live=\"polite\">Chargement de l\u2019aper\u00e7u 3D\u2026<\/p>\n<p class=\"pn3d-notice\" role=\"status\" hidden>\n<\/section>\n<p class=\"pn3d-caption\">Aper\u00e7u indicatif : la couleur et la brillance peuvent varier selon l\u2019\u00e9cran. Les mod\u00e8les RX et Moto2 utilisent la base RS. Le lettrage RX reste disponible sans aper\u00e7u 3D.<\/p>\n<p><script type=\"module\">(async function () {\n  const root = document.querySelector('#pn-sautevent-3d');\n  if (!root || root.dataset.started) return;\n  root.dataset.started = 'true';\n  const product = root.closest('.product');\n  const form = product ? product.querySelector('form.variations_form') : null;\n  if (!form) return;\n  const fields = [...form.querySelectorAll('table.variations select')];\n  const find = word => fields.find(el => (el.name + ' ' + el.id).normalize('NFD').replace(\/[\\u0300-\\u036f]\/g, '').toLowerCase().includes(word));\n  const modelField = find('modele');\n  const letterField = fields.find(el => \/lettrage\/i.test(el.name) ? !\/couleur\/i.test(el.name) : false);\n  const colorField = find('couleur');\n  const finishField = find('finition');\n  if (![modelField, letterField, colorField, finishField].every(Boolean)) return;\n  const palette = [['Blanc','#ffffff'],['Rouge','#d71920'],['Jaune','#f9eb58'],['Noir','#000000'],['Orange','#f04408'],['Bronze cuivr\u00e9','#b8a48e'],['Bleu','#2149d8'],['Gris','#a9a9a7'],['Vert kaki','#6f7d4c'],['Marron cacao','#5a403a']];\n  const urls = {R:'https:\/\/protonim.fr\/wp-content\/uploads\/2026\/10\/ProtoNim_SauteVent_R_3D_ST_haut_v3.glb',RS:'https:\/\/protonim.fr\/wp-content\/uploads\/2026\/10\/ProtoNim_SauteVent_RS_3D_ST_aligne_RS_v4.glb'};\n  const viewer = root.querySelector('model-viewer');\n  const status = root.querySelector('.pn3d-status');\n  const notice = root.querySelector('.pn3d-notice');\n  const gallery = product.querySelector('.woocommerce-product-gallery');\n  const visual = document.createElement('div');\n  visual.className = 'pn3d-visual';\n  const nav = document.createElement('div');\n  nav.className = 'pn3d-tabs';\n  nav.innerHTML = '<button type=\"button\" aria-pressed=\"true\">Aper\u00e7u 3D<\/button><button type=\"button\" aria-pressed=\"false\">Photos<\/button>';\n  if (gallery) {gallery.before(visual);visual.append(nav,root,gallery);gallery.hidden=true;}\n  else {root.before(visual);visual.append(root);}\n  const [threeButton, photosButton] = nav.querySelectorAll('button');\n  const showPhotos = photos => {\n    root.hidden = photos;\n    if(gallery) gallery.hidden = !photos;\n    threeButton?.setAttribute('aria-pressed',String(!photos));\n    photosButton?.setAttribute('aria-pressed',String(photos));\n    window.dispatchEvent(new Event('resize'));\n  };\n  threeButton?.addEventListener('click',()=>showPhotos(false));\n  photosButton?.addEventListener('click',()=>showPhotos(true));\n  root.querySelector('.pn3d-reset').addEventListener('click',()=>{viewer.cameraOrbit='0deg 90deg 115%';viewer.cameraTarget='0m 0m 0m';viewer.fieldOfView='30deg';});\n  const colorRow = colorField.closest('tr');\n  const swatches = document.createElement('div');\n  swatches.className='pn3d-swatches';swatches.setAttribute('role','group');swatches.setAttribute('aria-label','Couleur du lettrage ou logo');\n  const pickedColor = document.createElement('span');pickedColor.className='pn3d-color-name';\n  for (const [name,hex] of palette) {\n    const button=document.createElement('button');button.type='button';button.className='pn3d-swatch';button.title=name;button.setAttribute('aria-label',name);button.setAttribute('aria-pressed','false');button.style.setProperty('--pn-color',hex);\n    button.addEventListener('click',()=>{setSelect(colorField,name);lastColor=name;});swatches.append(button);\n  }\n  colorField.after(swatches,pickedColor);colorField.classList.add('pn3d-native-color');\n  let lastColor = palette.some(([n])=>n===colorField.value)?colorField.value:'Blanc';\n  let lastModel='';let changing=false;let loadedModel='';\n  function setSelect(field,value) {\n    if (![...field.options].some(o=>o.value===value)) return;\n    if(field.value!==value){field.value=value;field.dispatchEvent(new Event('change',{bubbles:true}));}\n  }\n  function decorate() {\n    if (!viewer.model || loadedModel!==lastModel) return;\n    const letter=letterField.value;\n    const keys={'R':'R','RS':'RS','Moto2':'MOTO2','Logo Triumph':'TRIUMPH','Street Triple':'STREET'};\n    const key=keys[letter]; const name=colorField.value;const hex=palette.find(([n])=>n===name)?.[1] || '#000000';\n    for(const material of viewer.model.materials){\n      const pbr=material.pbrMetallicRoughness;\n      if(material.name==='PN_BASE'){pbr.setBaseColorFactor('#131313');pbr.setRoughnessFactor(finishField.value==='Brillant'?.18:.8);pbr.setMetallicFactor(0);}\n      else if(material.name.startsWith('PN_LET_')){\n        const active=material.name==='PN_LET_'+key;\n        material.setAlphaMode('MASK');material.setAlphaCutoff(.5);\n        const rgb=[1,3,5].map(i=>parseInt(hex.slice(i,i+2),16)\/255).map(v=>v<=.04045?v\/12.92:Math.pow((v+.055)\/1.055,2.4));\n        pbr.setBaseColorFactor([...rgb,active?1:0]);\n      }\n    }\n  }\n  function update() {\n    if(changing) return;\n    changing=true;\n    const chosenModel=modelField.value;const blocked=chosenModel==='R'?['RS','Moto2','RX']:(chosenModel?['R']:[]);for(const option of letterField.options){const unavailable=blocked.includes(option.value);option.hidden=unavailable;option.disabled=unavailable;}if(blocked.includes(letterField.value))setSelect(letterField,'Aucun');\n    const letter=letterField.value;const none=!letter||letter==='Aucun';\n    if(none){if(palette.some(([n])=>n===colorField.value))lastColor=colorField.value;setSelect(colorField,'Aucune couleur');}\n    else if(!colorField.value||colorField.value==='Aucune couleur')setSelect(colorField,lastColor);\n    if(colorRow)colorRow.hidden=none;\n    for(const b of swatches.children)b.setAttribute('aria-pressed',String(b.title===colorField.value));\n    pickedColor.textContent=colorField.value;\n    const requested=modelField.value;const model=requested==='R'?'R':'RS';\n    const text=[requested?'Mod\u00e8le '+requested:'Aper\u00e7u RS \u2014 choisissez votre mod\u00e8le',letter||'Aucun lettrage',!none?colorField.value:'',finishField.value].filter(Boolean).join(' \u00b7 ');\n    status.textContent=text;\n    notice.hidden=letter!=='RX';notice.textContent=letter==='RX'?'Le lettrage RX n\u2019est pas repr\u00e9sent\u00e9 en 3D. Votre commande conserve bien le choix RX.':'';\n    if(lastModel!==model){lastModel=model;loadedModel='';root.classList.add('pn3d-loading');viewer.setAttribute('src',urls[model]);}\n    decorate();changing=false;\n  }\n  viewer.addEventListener('load',()=>{loadedModel=lastModel;root.classList.remove('pn3d-loading');decorate();});\n  viewer.addEventListener('error',()=>{root.classList.remove('pn3d-loading');notice.hidden=false;notice.textContent='L\u2019aper\u00e7u 3D ne peut pas \u00eatre charg\u00e9. Les photos et vos options restent disponibles.';});\n  form.addEventListener('change',e=>{if(e.target===colorField){if(palette.some(([n])=>n===colorField.value))lastColor=colorField.value;}update();});\n  form.addEventListener('reset',()=>setTimeout(update,0));\n  if(window.jQuery){const jqForm=window.jQuery(form);jqForm.on('found_variation',()=>{update();setTimeout(()=>jqForm.trigger('reset_image'),0);});jqForm.on('reset_data woocommerce_variation_has_changed',update);}\n  update();\n  try {\n    if(!customElements.get('model-viewer'))await import('https:\/\/ajax.googleapis.com\/ajax\/libs\/model-viewer\/4.1.0\/model-viewer.min.js');\n    await customElements.whenDefined('model-viewer');\n    if(viewer.model){loadedModel=lastModel;decorate();}\n  } catch(error) {notice.hidden=false;notice.textContent='L\u2019aper\u00e7u 3D est momentan\u00e9ment indisponible. Consultez les photos et choisissez vos options ci-dessous.';}\n})();\n<\/script><\/p>\n","protected":false},"featured_media":367,"comment_status":"open","ping_status":"closed","template":"","meta":{"_seopress_titles_title":"Saute-vent personnalisable Street Triple 765 | Proto\u2019Nim","_seopress_titles_desc":"Configurez votre saute-vent ASA pour Street Triple 765 R, RS, RX ou Moto2 : lettrage, couleur et finition mate ou brillante. Aper\u00e7u 3D et photos originales.","_seopress_robots_index":"","_seopress_robots_follow":"","_seopress_robots_imageindex":"","_seopress_robots_snippet":"","_seopress_robots_primary_cat":"","_seopress_robots_breadcrumbs":"","_seopress_robots_freeze_modified_date":"","_seopress_robots_custom_modified_date":"","_seopress_robots_canonical":"","_seopress_social_fb_title":"","_seopress_social_fb_desc":"","_seopress_social_fb_img":"","_seopress_social_fb_img_attachment_id":0,"_seopress_social_fb_img_width":0,"_seopress_social_fb_img_height":0,"_seopress_social_twitter_title":"","_seopress_social_twitter_desc":"","_seopress_social_twitter_img":"","_seopress_social_twitter_img_attachment_id":0,"_seopress_social_twitter_img_width":0,"_seopress_social_twitter_img_height":0,"_seopress_redirections_value":"","_seopress_redirections_enabled":"","_seopress_redirections_enabled_regex":"","_seopress_redirections_logged_status":"","_seopress_redirections_param":"","_seopress_redirections_type":0,"_seopress_analysis_target_kw":"","_kad_post_transparent":"default","_kad_post_title":"","_kad_post_layout":"default","_kad_post_sidebar_id":"","_kad_post_content_style":"default","_kad_post_vertical_padding":"default","_kad_post_feature":"","_kad_post_feature_position":"","_kad_post_header":false,"_kad_post_footer":false,"_kad_post_classname":""},"product_brand":[],"product_cat":[18],"product_tag":[20,19],"class_list":["post-359","product","type-product","status-publish","has-post-thumbnail","product_cat-pieces-moto","product_tag-street-triple-765","product_tag-triumph","first","instock","shipping-taxable","purchasable","product-type-variable","has-default-attributes","entry","content-bg","loop-entry"],"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/protonim.fr\/index.php\/wp-json\/wp\/v2\/product\/359","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/protonim.fr\/index.php\/wp-json\/wp\/v2\/product"}],"about":[{"href":"https:\/\/protonim.fr\/index.php\/wp-json\/wp\/v2\/types\/product"}],"replies":[{"embeddable":true,"href":"https:\/\/protonim.fr\/index.php\/wp-json\/wp\/v2\/comments?post=359"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/protonim.fr\/index.php\/wp-json\/wp\/v2\/media\/367"}],"wp:attachment":[{"href":"https:\/\/protonim.fr\/index.php\/wp-json\/wp\/v2\/media?parent=359"}],"wp:term":[{"taxonomy":"product_brand","embeddable":true,"href":"https:\/\/protonim.fr\/index.php\/wp-json\/wp\/v2\/product_brand?post=359"},{"taxonomy":"product_cat","embeddable":true,"href":"https:\/\/protonim.fr\/index.php\/wp-json\/wp\/v2\/product_cat?post=359"},{"taxonomy":"product_tag","embeddable":true,"href":"https:\/\/protonim.fr\/index.php\/wp-json\/wp\/v2\/product_tag?post=359"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}