1(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,92131,e=>{"use strict";var t=e.i(91398),s=e.i(46224);e.s(["PrivacyFormNotice",0,function(){let e=(0,s.useCurrentLocale)(),r="en"===e?{lead:"Privacy notice:",text:"We process the information you provide to handle your request or perform the contract.",link:"Privacy policy"}:{lead:"Datenschutzhinweis:",text:"Wir verarbeiten Ihre Angaben zur Bearbeitung Ihrer Anfrage bzw. zur Vertragsdurchführung.",link:"Datenschutzerklärung"};return(0,t.jsxs)("p",{className:"privacy-form-notice",children:[(0,t.jsx)("strong",{children:r.lead})," ",r.text," ",(0,t.jsx)("a",{href:(0,s.localizeHref)("/datenschutzerklaerung",e),children:r.link}),"."]})}])},14531,e=>{"use strict";e.s(["formatEuro",0,function(e,t="de"){return new Intl.NumberFormat("en"===t?"en-US":"de-DE",{style:"currency",currency:"EUR"}).format(e/100)},"shopOrderStatusLabels",0,{new:"Neu",reviewed:"Geprüft",accepted:"Angenommen",completed:"Abgeschlossen",cancelled:"Storniert"},"shopOrderStatuses",0,["new","reviewed","accepted","completed","cancelled"]])},42830,e=>{"use strict";var t=e.i(91398),s=e.i(91788),r=e.i(75458),n=e.i(28129),a=e.i(92131);e.i(14663);var i=e.i(81560),l=e.i(14531),c=e.i(46224);let o={de:{title:"Service-Shop",description:"Direkt bestellbare IT-Services von TMP Networks: Beratung, Monitoring, NetConnect-Prüfung, Firewall-Konfiguration, Rollout und Remote-Support.",eyebrow:"Service-Shop",heading:"IT-Services direkt bestellen.",lead:"Viele Leistungen können Sie jetzt direkt als Service bestellen. Wir prüfen Ihre Bestellung, bestätigen Details und stimmen Termine sauber mit Ihnen ab.",productsLabel:"Direkt bestellbare Services",add:"In den Warenkorb",addedTitle:"Service hinzugefügt",addedMessage:e=>`â${e}â wurde dem Warenkorb hinzugef\xfcgt.`,continueShopping:"Weiter einkaufen",goToCart:"Zum Warenkorb",closeDialog:"Hinweis schlieÃen",cartTitle:"Warenkorb",emptyCart:"Noch keine Services ausgewählt.",quantity:"Menge",remove:"Entfernen",subtotal:"Zwischensumme",taxNote:"Alle Preise verstehen sich zzgl. gesetzlicher MwSt. und vorbehaltlich technischer Prüfung.",checkoutTitle:"Bestellung absenden",company:"Firma",name:"Name",email:"E-Mail",phone:"Telefon",address:"Adresse / Einsatzort",message:"Hinweise zur Bestellung",submit:"Bestellung absenden",sending:"Wird gesendet â¦",humanCheckLabel:"Sicherheitsfrage",humanCheckHint:"Bitte lösen Sie die kurze Aufgabe.",humanCheckPlaceholder:"Antwort",successTitle:"Bestellung erfolgreich übermittelt",successMessage:e=>`Vielen Dank. Ihre Bestellung ${e} wurde \xfcbermittelt. Ein Service-Mitarbeiter setzt sich mit Ihnen in Verbindung.`,successClose:"SchlieÃen",error:"Die Bestellung konnte nicht abgesendet werden.",delivery:"Umsetzung",priceInfo:"Preis",cartAnchor:"Zum Warenkorb",contactFallback:"Sie möchten eine individuelle Kombination? Dann senden Sie uns eine Anfrage.",contactCta:"Individuell anfragen",productsEmpty:"Aktuell sind noch keine aktiven Shop-Produkte freigeschaltet."},en:{title:"Service shop",description:"Directly orderable IT services from TMP Networks: consulting, monitoring, NetConnect checks, firewall configuration, rollout and remote support.",eyebrow:"Service shop",heading:"Order IT services directly.",lead:"Many services can now be ordered directly. We review your order, confirm the details and coordinate appointments with you.",productsLabel:"Directly orderable services",add:"Add to cart",addedTitle:"Service added",addedMessage:e=>`â${e}â has been added to your cart.`,continueShopping:"Continue shopping",goToCart:"Go to cart",closeDialog:"Close notice",cartTitle:"Cart",emptyCart:"No services selected yet.",quantity:"Quantity",remove:"Remove",subtotal:"Subtotal",taxNote:"All prices are net plus statutory VAT and subject to technical review.",checkoutTitle:"Submit order",company:"Company",name:"Name",email:"Email",phone:"Phone",address:"Address / service location",message:"Order notes",submit:"Submit order",sending:"Sending â¦",humanCheckLabel:"Security question",humanCheckHint:"Please solve the short task.",humanCheckPlaceholder:"Answer",successTitle:"Order submitted successfully",successMessage:e=>`Thank you. Your order ${e}
1 has been submitted. A service team member will contact you.`,successClose:"Close",error:"The order could not be submitted.",delivery:"Delivery",priceInfo:"Price",cartAnchor:"Go to cart",contactFallback:"Need a custom combination? Send us a request.",contactCta:"Request individually",productsEmpty:"No active shop products are currently enabled."}};e.s(["__N_SSP",0,!0,"default",0,function({products:e,humanCheck:d}){let u=(0,c.useCurrentLocale)(),h=o[u],[m,p]=(0,s.useState)([]),[g,b]=(0,s.useState)(null),[x,y]=(0,s.useState)(null),[j,v]=(0,s.useState)(null),[k,f]=(0,s.useState)(!1),[N,w]=(0,s.useState)(d);(0,s.useEffect)(()=>{p(function(e){try{let t=JSON.parse(window.localStorage.getItem("tmp-shop-cart")||"[]");if(!Array.isArray(t))return[];return t.map(e=>({productId:e.productId,quantity:Math.max(1,Math.min(99,Number(e.quantity)||1))})).filter(t=>e.some(e=>e.id===t.productId))}catch{return[]}}(e))},[e]),(0,s.useEffect)(()=>{window.localStorage.setItem("tmp-shop-cart",JSON.stringify(m))},[m]);let _=(0,s.useMemo)(()=>m.map(t=>({item:t,product:e.find(e=>e.id===t.productId)})).filter(e=>!!e.product),[m,e]),C=_.reduce((e,t)=>e+t.product.priceCents*t.item.quantity,0);async function S(e){if(e.preventDefault(),0===m.length)return void b({type:"error",message:h.emptyCart});let t=e.currentTarget,s=new FormData(t);f(!0),b(null),v(null);try{var r;let e=await fetch("/api/shop/orders",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({locale:u,items:m,customer:{company:s.get("company"),name:s.get("name"),email:s.get("email"),phone:s.get("phone"),address:s.get("address"),message:s.get("message")},humanCheck:{token:s.get("humanCheckToken"),answer:s.get("humanCheckAnswer")}})}),n=await e.json();if((r=n.humanCheck)&&w(r),!e.ok)throw Error(n.message||h.error);p([]),t.reset(),v(n.order?.orderNumber||"")}catch(e){b({type:"error",message:e instanceof Error?e.message:h.error})}finally{f(!1)}}return(0,t.jsxs)(n.Layout,{children:[(0,t.jsx)(i.Seo,{title:h.title,description:h.description,path:"/shop",keywords:["TMP Networks Shop","IT Services bestellen","Managed Services","NetConnect"]}),(0,t.jsxs)("main",{className:"shop-page shell",children:[(0,t.jsxs)("section",{className:"section-heading section-heading--centered shop-hero",children:[(0,t.jsx)("p",{className:"eyebrow",children:h.eyebrow}),(0,t.jsx)("h1",{children:h.heading}),(0,t.jsx)("p",{children:h.lead}),(0,t.jsxs)("div",{className:"shop-hero__actions",children:[(0,t.jsx)("a",{className:"button button--primary",href:"#warenkorb",children:(0,t.jsx)("span",{children:h.cartAnchor})}),(0,t.jsx)(r.ButtonLink,{href:"/#kontakt",variant:"secondary",children:h.contactCta})]})]}),(0,t.jsx)("section",{className:"shop-products","aria-label":h.productsLabel,children:e.length>0?e.map(s=>(0,t.jsxs)("article",{className:"shop-product glass-card",children:[s.imageUrl?(0,t.jsx)("div",{className:"shop-product__media",children:(0,t.jsx)("img",{src:s.imageUrl,alt:s.imageAlt?.[u]||s.title[u],loading:"lazy"})}):(0,t.jsx)("div",{className:"shop-product__media shop-product__media--placeholder","aria-hidden":"true",children:(0,t.jsx)("span",{children:s.category[u]})}),(0,t.jsxs)("div",{className:"shop-product__topline",children:[(0,t.jsx)("span",{className:"shop-product__category",children:s.category[u]}),s.badge?(0,t.jsx)("span",{className:"shop-product__badge",children:s.badge[u]}):null]}),(0,t.jsx)("h2",{children:s.title[u]}),(0,t.jsx)("p",{children:s.description[u]}),(0,t.jsx)("ul",{children:s.features[u].map(e=>(0,t.jsx)("li",{children:e},e))}),(0,t.jsxs)("dl",{className:"shop-product__facts",children:[(0,t.jsxs)("div",{children:[(0,t.jsx)("dt",{children:h.priceInfo}),(0,t.jsxs)("dd",{children:[s.pricePrefix?.[u]?`${s.pricePrefix[u]} `:"",(0,l.formatEuro)(s.priceCents,u)," ",(0,t.jsx)("small",{children:s.unit[u]})]})]}),(0,t.jsxs)("div",{children:[(0,t.jsx)("dt",{children:h.delivery}),(0,t.jsx)("dd",{children:s.delivery[u]})]})]}),(0,t.jsx)("button",{className:"button button--primary",type:"button",onClick:()=>{var t;let r;return t=s.id,r=e.find(e=>e.id===t)?.title[u]||h.cartTitle,void(p(e=>e.find(e=>e.productId===t)?e.map(e=>e.productId===t?{...e,quantity:Math.min(99,e.quantity+1)}:e):[...e,{productId:t,quantity:1}]),b(null),y(r))},children:(0,t.jsx)("span",{children:h.add})})]},s.id)):(0,t.jsxs)("article",{className:"shop-product glass-card",children:[(0,t.jsx)("h2",{children:h.productsEmpty}),(0,t.jsx)("p",{children:h.contactFallback}),(0,t.jsx)(r.ButtonLink,{href:"/#kontakt",variant:"secondary",children:h.contactCta})]})}),x?(0,t.jsx)("div",{className:"shop-cart-dialog",role:"presentation",onClick:e=>{e.target===e.currentTarget&&y(null)},children:(0,t.jsxs)("div",{className:"shop-cart-dialog__panel glass-card",role:"dialog","aria-modal":"true","aria-labelledby":"shop-cart-dialog-title",children:[(0,t.jsx)("button",{className:"shop-cart-dialog__close",type:"button","aria-label":h.closeDialog,onClick:()=>y(null),children:"Ã"}),(0,t.jsx)("p",{className:"eyebrow",children:h.cartTitle}),(0,t.jsx)("h2",{id:"shop-cart-dialog-title",children:h.addedTitle}),(0,t.jsx)("p",{children:h.addedMessage(x)}),(0,t.jsxs)("div",{className:"shop-cart-dialog__actions",children:[(0,t.jsx)("button",{className:"button button--ghost",type:"button",onClick:()=>y(null),children:h.continueShopping}),(0,t.jsx)("button",{className:"button button--primary",type:"button",onClick:function(){y(null),window.requestAnimationFrame(()=>{let e=document.getElementById("warenkorb");e&&(e.scrollIntoView({behavior:"smooth",block:"start"}),window.history.replaceState(null,"","#warenkorb"))})},children:(0,t.jsx)("span",{children:h.goToCart})})]})]})}):null,null!==j?(0,t.jsx)("div",{className:"shop-cart-dialog",role:"presentation",onClick:e=>{e.target===e.currentTarget&&v(null)},children:(0,t.jsxs)("div",{className:"shop-cart-dialog__panel glass-card",role:"dialog","aria-modal":"true","aria-labelledby":"shop-order-success-dialog-title",children:[(0,t.jsx)("button",{className:"shop-cart-dialog__close",type:"button","aria-label":h.successClose,onClick:()=>v(null),children:"Ã"}),(0,t.jsx)("p",{className:"eyebrow",children:h.checkoutTitle}),(0,t.jsx)("h2",{id:"shop-order-success-dialog-title",children:h.successTitle}),(0,t.jsx)("p",{children:h.successMessage(j)}),(0,t.jsx)("div",{className:"shop-cart-dialog__actions",children:(0,t.jsx)("button",{className:"button button--primary",type:"button",onClick:()=>v(null),children:(0,t.jsx)("span",{children:h.successClose})})})]})}):null,(0,t.jsxs)("section",{id:"warenkorb",className:"shop-checkout glass-card","aria-label":h.cartTitle,children:[(0,t.jsxs)("div",{children:[(0,t.jsx)("p",{className:"eyebrow",children:h.cartTitle}),(0,t.jsx)("h2",{children:h.checkoutTitle}),(0,t.jsx)("p",{className:"cms-posts__hint",children:h.taxNote})]}),(0,t.jsx)("div",{className:"shop-cart",children:_.length>0?_.map(({item:e,product:s})=>(0,t.jsxs)("article",{className:"shop-cart__item",children:[(0,t.jsxs)("div",{children:[(0,t.jsx)("strong",{children:s.title[u]}),(0,t.jsxs)("span",{children:[(0,l.formatEuro)(s.priceCents,u)," ·"," ",s.unit[u]]})]}),(0,t.jsxs)("label",{children:[h.quantity,(0,t.jsx)("input",{type:"number",min:1,max:99,value:e.quantity,onChange:e=>{var t,r;return t=s.id,r=Number(e.target.value),void p(e=>e.map(e=>e.productId===t?{...e,quantity:Math.max(1,Math.min(99,r))}:e))}})]}),(0,t.jsx)("strong",{children:(0,l.formatEuro)(s.priceCents*e.quantity,u)}),(0,t.jsx)("button",{className:"button button--ghost",type:"button",onClick:()=>{var e;return e=s.id,void p(t=>t.filter(t=>t.productId!==e))},children:h.remove})]},s.id)):(0,t.jsx)("p",{className:"shop-cart__empty",children:h.emptyCart})}),(0,t.jsxs)("div",{className:"shop-checkout__total",children:[(0,t.jsx)("span",{children:h.subtotal}),(0,t.jsx)("strong",{children:(0,l.formatEuro)(C,u)})]}),(0,t.jsxs)("form",{className:"shop-form",onSubmit:S,children:[(0,t.jsxs)("div",{className:"shop-form__grid",children:[(0,t.jsxs)("label",{children:[h.company,(0,t.jsx)("input",{name:"company",type:"text",maxLength:160})]}),(0,t.jsxs)("label",{children:[h.name,(0,t.jsx)("input",{name:"name",type:"text",maxLength:160,required:!0})]}),(0,t.jsxs)("label",{children:[h.email,(0,t.jsx)("input",{name:"email",type:"email",maxLength:160,required:!0})]}),(0,t.jsxs)("label",{children:[h.phone,(0,t.jsx)("input",{name:"phone",type:"tel",maxLength:80,required:!0})]})]}),(0,t.jsxs)("label",{children:[h.address,(0,t.jsx)("textarea",{name:"address",rows:3,maxLength:500})]}),(0,t.jsxs)("label",{children:[h.message,(0,t.jsx)("textarea",{name:"message",rows:4,maxLength:1200})]}),(0,t.jsxs)("label",{className:"shop-human-check",children:[(0,t.jsx)("span",{children:h.humanCheckLabel}),(0,t.jsx)("strong",{children:N.question}),(0,t.jsx)("input",{name:"humanCheckAnswer",type:"number",inputMode:"numeric",min:0,max:99,placeholder:h.humanCheckPlaceholder,required:!0}),(0,t.jsx)("input",{name:"humanCheckToken",type:"hidden",value:N.token}),(0,t.jsx)("small",{children:h.humanCheckHint})]}
1,N.token),(0,t.jsx)(a.PrivacyFormNotice,{}),(0,t.jsxs)("div",{className:"shop-form__actions",children:[(0,t.jsx)("button",{className:"button button--primary",type:"submit",disabled:k||0===m.length,children:(0,t.jsx)("span",{children:k?h.sending:h.submit})}),(0,t.jsx)("p",{children:h.contactFallback})]}),g?(0,t.jsx)("p",{className:`admin-form__status admin-form__status--${g.type}`,children:g.message}):null]})]})]})]})}])},51542,(e,t,s)=>{let r="/shop";(window.__NEXT_P=window.__NEXT_P||[]).push([r,()=>e.r(42830)]),t.hot&&t.hot.dispose(function(){window.__NEXT_P.push([r])})},48761,e=>{e.v(t=>Promise.all(["static/chunks/2n_ornp2pwzl0.js"].map(t=>e.l(t))).then(()=>t(93594)))},28805,e=>{e.v(t=>Promise.all(["static/chunks/0h0r_q6xa9qr_.js"].map(t=>e.l(t))).then(()=>t(79466)))}]);
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.