+Number(estimate.total).toFixed(2)+' · '+estimate.status; p.append(summary); if(estimate.status==='sent'){ const approve=document.createElement('button');approve.type='button';approve.className='orbit-live-approve'; approve.textContent='Approve estimate';approve.setAttribute('aria-label','Approve '+(estimate.number||'estimate')); approve.addEventListener('click',async()=>{ if(!confirm('Approve '+(estimate.number||'this estimate')+' for } choices.replaceChildren(); if(data.status==='open' && Array.isArray(data.choices)){ data.choices.forEach(choice=>{ const button=document.createElement('button'); button.type='button'; button.className='orbit-choice'; button.textContent=choice.label; button.addEventListener('click',()=>sendMessage(String(choice.value||choice.label),button)); choices.append(button); }); } choices.hidden=!choices.childElementCount; log.scrollTop=log.scrollHeight; status.textContent=''; setChatMode(true); }catch(e){ if(e.status===403||e.status===404){ chat=null;localStorage.removeItem(key);setChatMode(false);log.replaceChildren();appendIntro(); prechatStatus.textContent='Your previous chat expired. Start a new one.'; }else status.textContent=e.message; } } toggle.onclick=async()=>{ panel.hidden=!panel.hidden; toggle.setAttribute('aria-expanded',String(!panel.hidden)); if(!panel.hidden){await loadConfig();if(chat)await refresh();else{log.replaceChildren();appendIntro();setChatMode(false)}} }; close.onclick=()=>{panel.hidden=true;toggle.setAttribute('aria-expanded','false')}; prechat.onsubmit=async e=>{ e.preventDefault(); const button=prechat.querySelector('button[type=submit]'); const body=document.getElementById('orbit-first-message').value.trim();if(!body)return; const profile=config.authenticated&&config.profile?{ first_name:config.profile.first_name||'', last_name:config.profile.last_name||'', email:config.profile.email||'', company:config.profile.company?.name||'' }:{ first_name:document.getElementById('orbit-first-name').value.trim(), last_name:document.getElementById('orbit-last-name').value.trim(), email:document.getElementById('orbit-email').value.trim(), company:document.getElementById('orbit-company').value.trim() }; button.disabled=true;prechatStatus.textContent='Starting…'; try{ const data=await call(base,'POST',{body,store_id:storeId?Number(storeId):null,...profile}); chat={id:data.conversation_id,token:data.token}; localStorage.setItem(key,JSON.stringify(chat)); if(!config.authenticated)localStorage.setItem(profileKey,JSON.stringify(profile)); document.getElementById('orbit-first-message').value=''; prechatStatus.textContent=''; setChatMode(true); await refresh(); }catch(error){prechatStatus.textContent=error.message} finally{button.disabled=false} }; let sending=false; async function sendMessage(body,selectedButton=null){ if(!body||!chat||sending)return; sending=true; const button=form.querySelector('button[type=submit]'); button.disabled=true; choices.querySelectorAll('button').forEach(b=>b.disabled=true); status.textContent='Sending…'; try{ await call(base+'/'+chat.id+'/messages','POST',{body}); if(!selectedButton)input.value=''; await refresh(); }catch(error){status.textContent=error.message} finally{ sending=false;button.disabled=false; choices.querySelectorAll('button').forEach(b=>b.disabled=false); } } form.onsubmit=e=>{e.preventDefault();sendMessage(input.value.trim())}; input.addEventListener('keydown',e=>{ if(e.key==='Enter'&&!e.shiftKey&&!e.isComposing){ e.preventDefault();sendMessage(input.value.trim()); } }); loadConfig().then(()=>{if(chat)refresh();else appendIntro()}); setInterval(()=>{if(!panel.hidden&&chat&&!sending&&!input.matches(':focus'))refresh()},6000); })(); +Number(estimate.total).toFixed(2)+'?'))return; approve.disabled=true; try{await call(base+'/'+chat.id+'/estimates/'+estimate.id+'/approve','POST',{});await refresh()} catch(error){status.textContent=error.message;approve.disabled=false} }); p.append(approve); } } log.append(p); } choices.replaceChildren(); if(data.status==='open' && Array.isArray(data.choices)){ data.choices.forEach(choice=>{ const button=document.createElement('button'); button.type='button'; button.className='orbit-choice'; button.textContent=choice.label; button.addEventListener('click',()=>sendMessage(String(choice.value||choice.label),button)); choices.append(button); }); } choices.hidden=!choices.childElementCount; log.scrollTop=log.scrollHeight; status.textContent=''; setChatMode(true); }catch(e){ if(e.status===403||e.status===404){ chat=null;localStorage.removeItem(key);setChatMode(false);log.replaceChildren();appendIntro(); prechatStatus.textContent='Your previous chat expired. Start a new one.'; }else status.textContent=e.message; } } toggle.onclick=async()=>{ panel.hidden=!panel.hidden; toggle.setAttribute('aria-expanded',String(!panel.hidden)); if(!panel.hidden){await loadConfig();if(chat)await refresh();else{log.replaceChildren();appendIntro();setChatMode(false)}} }; close.onclick=()=>{panel.hidden=true;toggle.setAttribute('aria-expanded','false')}; prechat.onsubmit=async e=>{ e.preventDefault(); const button=prechat.querySelector('button[type=submit]'); const body=document.getElementById('orbit-first-message').value.trim();if(!body)return; const profile=config.authenticated&&config.profile?{ first_name:config.profile.first_name||'', last_name:config.profile.last_name||'', email:config.profile.email||'', company:config.profile.company?.name||'' }:{ first_name:document.getElementById('orbit-first-name').value.trim(), last_name:document.getElementById('orbit-last-name').value.trim(), email:document.getElementById('orbit-email').value.trim(), company:document.getElementById('orbit-company').value.trim() }; button.disabled=true;prechatStatus.textContent='Starting…'; try{ const data=await call(base,'POST',{body,store_id:storeId?Number(storeId):null,...profile}); chat={id:data.conversation_id,token:data.token}; localStorage.setItem(key,JSON.stringify(chat)); if(!config.authenticated)localStorage.setItem(profileKey,JSON.stringify(profile)); document.getElementById('orbit-first-message').value=''; prechatStatus.textContent=''; setChatMode(true); await refresh(); }catch(error){prechatStatus.textContent=error.message} finally{button.disabled=false} }; let sending=false; async function sendMessage(body,selectedButton=null){ if(!body||!chat||sending)return; sending=true; const button=form.querySelector('button[type=submit]'); button.disabled=true; choices.querySelectorAll('button').forEach(b=>b.disabled=true); status.textContent='Sending…'; try{ await call(base+'/'+chat.id+'/messages','POST',{body}); if(!selectedButton)input.value=''; await refresh(); }catch(error){status.textContent=error.message} finally{ sending=false;button.disabled=false; choices.querySelectorAll('button').forEach(b=>b.disabled=false); } } form.onsubmit=e=>{e.preventDefault();sendMessage(input.value.trim())}; input.addEventListener('keydown',e=>{ if(e.key==='Enter'&&!e.shiftKey&&!e.isComposing){ e.preventDefault();sendMessage(input.value.trim()); } }); loadConfig().then(()=>{if(chat)refresh();else appendIntro()}); setInterval(()=>{if(!panel.hidden&&chat&&!sending&&!input.matches(':focus'))refresh()},6000); })();

Shopping cart

Empty Cart

Your Cart is empty

Go to Shop
Sun, November 8, 2026 LIVE
• Open now: 2026 Chicago Toy & Game Fair Tickets — Rosemont, IL • Open now: Adana Agriculture Fair — Adana, Türkiye • Open now: Adana Agriculture Fair — Adana, Türkiye • Open now: Adana Greenhouse And Garden Fair — Adana, Türkiye • Open now: Adana Greenhouse And Garden Fair — Adana, Türkiye • Open now: Affordable Art Fair - Hamburg — Hamburg, Germany • Upcoming: Accounting & Business Expo KSA — Riyadh, Saudi Arabia • Upcoming: Accounting & Business Expo KSA — Riyadh, Saudi Arabia • Upcoming: Aesthetic Beauty Education Expo — Bristol, United Kingdom • Upcoming: Aesthetic Beauty Education Expo — Bristol, United Kingdom • Upcoming: Banking Transformation Summit USA — Charlotte, NC • Upcoming: Banking Transformation Summit USA — Charlotte, NC • Upcoming: Beauty Elements Exhibition (BEE) — Muscat, Oman • Upcoming: Beauty Elements Exhibition (BEE) — Muscat, Oman • Upcoming: BIO-Europe — Cologne, Germany • Upcoming: BIO-Europe — Cologne, Germany • Upcoming: Cérémonie de Remise des Diplômes de L'ithq — Montreal, Quebec, Canada • Upcoming: Choose Your Own Health Adventure with Snowflake — Dallas, TX • Upcoming: Choose Your Own Health Adventure with Snowflake — Dallas • Upcoming: Connected World KSA — Riyadh, Saudi Arabia
VIEW ALL →
AALSETTIntelligence for What's Next
Login Join

2A – NYGUARD

Borgaro (To), Italy
Website
1Events
1People
About

We have been manufacturing zippers since 1938, and for the last 15 years we have been focusing on the development of zippers and other trims designed for the circular economy, fully aligned with the other components of the textile product. Zippers and accessories are often overlooked in discussions around textile circularity, yet they frequently represent the key bottleneck in recycling projects. Our goal is to provide practical solutions that complete the final piece of a truly effective textile circularity.

Send a message
Your experience on this site will be improved by allowing cookies Cookie Policy