1(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[911],{399:(e,t,s)=>{"use strict";s.d(t,{default:()=>f});var a=s(5289),r=s(1290),n=s(2694),o=s.n(n),c=s(7373),i=s(2487),l=s(4590),d=s(9373);let h={locales:["en","de","es"]},m={externalLinks:{documentation:"https://docs.fencyboy.com/",liveDashboard:"https://app.datacake.de/dashboard/d/3c12e392-9fe2-40ce-94ee-14ddaaf07183",payloadDecoder:"https://github.com/TheThingsNetwork/lorawan-devices/blob/master/vendor/fencyboy/fencyboy-v1-3-1_payload_decoder_ttn.js",linkedin:"https://www.linkedin.com/showcase/fencyboy",linkedinTom:"https://www.linkedin.com/in/tom1337stein/",ethEntrepreneurship:"https://entrepreneurship.ethz.ch/",ethStudentProjectHouse:"https://sph.ethz.ch/",datacake:"https://datacake.co/"}},u=["/blog","/imprint","/privacy","/unsubscribe","/ttc25wof","/ttc26wof"];function g(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"en",s=function(e){let t=new RegExp("^/(".concat(h.locales.join("|"),")(?=/|$)"));return e.replace(t,"")||"/"}(e);return!function(e){let t=e.split("#")[0].split("?")[0]||"/";return u.some(e=>t===e||t.startsWith("".concat(e,"/")))}(s)?"/"===s?"en"===t?"/":"/".concat(t):"en"===t?s:"/".concat(t).concat(s):s}var x=s(6934),b=s(155);function f(e){let{lang:t="en"}=e,[s,n]=(0,c.useState)(!1),[h,u]=(0,c.useState)(!1),f=(0,b.usePathname)(),p=[{code:"en",name:"English",flag:"\uD83C\uDDEC\uD83C\uDDE7"},{code:"de",name:"Deutsch",flag:"\uD83C\uDDE9\uD83C\uDDEA"},{code:"es",name:"Espa\xf1ol",flag:"\uD83C\uDDEA\uD83C\uDDF8"}],v=p.find(e=>e.code===t)||p[0],y=e=>g(f||"/",e),j={en:{product:"Product",documentation:"Documentation",blog:"Blog",contact:"Contact us"},de:{product:"Produkt",documentation:"Dokumentation",blog:"Blog",contact:"Kontakt"},es:{product:"Producto",documentation:"Documentaci\xf3n",blog:"Blog",contact:"Cont\xe1ctenos"}},N=j[t]||j.en,w=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"en",t=g("/",e),s=g("/product",e);return{home:t,product:s,contact:"".concat(t,"#contact"),features:s,dashboards:"".concat(s,"#dashboards"),imprint:g("/imprint",e),privacy:g("/privacy",e),blog:g("/blog",e),ttc25wof:g("/ttc25wof",e),ttc26wof:g("/ttc26wof",e)}}(t);return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(x.default,{src:"/stats/script.js","data-website-id":"0fbdee1c-6e29-445a-987d-81cdd300c0b5",strategy:"lazyOnload","data-domains":"fencyboy.com"}),(0,a.jsxs)("header",{className:"bg-[#2a2a2a] text-white py-4 relative z-50",children:[(0,a.jsxs)("div",{className:"container mx-auto px-4 flex justify-between items-center",children:[(0,a.jsx)("div",{className:"flex items-center",children:(0,a.jsx)(o(),{href:w.home,className:"flex items-center",children:(0,a.jsx)(r.default,{src:"/images/fencyboy-logo.webp",alt:"Fencyboy Logo",width:60,height:60,className:"w-[300px] md:h-auto"})})}),(0,a.jsxs)("nav",{className:"hidden md:flex items-center space-x-8",children:[(0,a.jsxs)("ul",{className:"flex space-x-8",children:[(0,a.jsx)("li",{children:(0,a.jsx)(o(),{href:w.product,className:"hover:text-gray-300 transition-colors",children:N.product})}),(0,a.jsx)("li",{children:(0,a.jsx)(o(),{href:m.externalLinks.documentation,className:"hover:text-gray-300 transition-colors","data-umami-event":"outbound-link-click","data-umami-event-url":m.externalLinks.documentation,children:N.documentation})}),(0,a.jsx)("li",{children:(0,a.jsx)(o(),{href:w.blog,className:"hover:text-gray-300 transition-colors",children:N.blog})}),(0,a.jsx)("li",{children:(0,a.jsx)(o(),{href:w.contact,className:"hover:text-gray-300 transition-colors",children:N.contact})})]}),(0,a.jsxs)("div",{className:"relative",children:[(0,a.jsxs)("button",{onClick:()=>u(!h),className:"flex items-center space-x-2 hover:text-gray-300 transition-colors","aria-label":"Change language",children:[(0,a.jsx)(i.A,{size:20}),(0,a.jsx)("span",{children:v.flag})]}),h&&(0,a.jsx)("div",{className:"absolute right-0 mt-2 w-48 bg-white text-gray-800 rounded-lg shadow-lg py-2 z-50",children:p.map(e=>(0,a.jsxs)(o(),{href:y(e.code),className:"block px-4 py-2 hover:bg-gray-100 ".concat(t===e.code?"bg-gray-50 font-semibold":""),onClick:()=>u(!1),children:[(0,a.jsx)("span",{className:"mr-2",children:e.flag}),e.name]},e.code))})]})]}),(0,a.jsx)("div",{className:"md:hidden",children:(0,a.jsx)("button",{onClick:()=>n(!s),"aria-label":"Toggle menu",children:s?(0,a.jsx)(l.A,{size:24}):(0,a.jsx)(d.A,{size:24})})})]}),s&&(0,a.jsx)("div",{className:"md:hidden absolute top-full left-0 right-0 bg-[#2a2a2a] border-t border-gray-600",children:(0,a.jsx)("nav",{className:"container mx-auto px-4 py-4",children:(0,a.jsxs)("ul",{className:"space-y-4",children:[(0,a.jsx)("li",{children:(0,a.jsx)(o(),{href:w.product,className:"block hover:text-gray-300 transition-colors",onClick:()=>n(!1),children:N.product})}),(0,a.jsx)("li",{children:(0,a.jsx)(o(),{href:m.externalLinks.documentation,className:"block hover:text-gray-300 transition-colors",onClick:()=>n(!1),children:N.documentation})}),(0,a.jsx)("li",{children:(0,a.jsx)(o(),{href:w.blog,className:"block hover:text-gray-300 transition-colors",onClick:()=>n(!1),children:N.blog})}),(0,a.jsx)("li",{children:(0,a.jsx)(o(),{href:w.contact,className:"block hover:text-gray-300 transition-colors",onClick:()=>n(!1),children:N.contact})}),(0,a.jsxs)("li",{className:"pt-4 border-t border-gray-600",children:[(0,a.jsxs)("div",{className:"text-gray-400 text-sm mb-2 flex items-center",children:[(0,a.jsx)(i.A,{size:16,className:"mr-2"}),"Language"]}),(0,a.jsx)("div",{className:"space-y-2 pl-6",children:p.map(e=>(0,a.jsxs)(o(),{href:y(e.code),className:"block hover:text-gray-300 transition-colors ".concat(t===e.code?"font-semibold text-white":""),onClick:()=>n(!1),children:[(0,a.jsx)("span",{className:"mr-2",children:e.flag}),e.name]},e.code))})]})]})})})]})]})}},3466:(e,t,s)=>{Promise.resolve().then(s.bind(s,7828)),Promise.resolve().then(s.bind(s,399)),Promise.resolve().then(s.t.bind(s,2694,23)),Promise.resolve().then(s.t.bind(s,2939,23))},6720:(e,t,s)=>{"use strict";s.d(t,{$:()=>l});var a=s(5289),r=s(7373),n=s(2687),o=s(1196),c=s(6799);let i=(0,o.F)("inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",{variants:{variant:{default:"bg-primary text-primary-foreground hover:bg-primary/90",destructive:"bg-destructive text-destructive-foreground hover:bg-destructive/90",outline:"border border-input bg-background hover:bg-accent hover:text-accent-foreground",secondary:"bg-secondary text-secondary-foreground hover:bg-secondary/80",ghost:"hover:bg-accent hover:text-accent-foreground",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-10 px-4 py-2",sm:"h-9 rounded-md px-3",lg:"h-11 rounded-md px-8",icon:"h-10 w-10"}},defaultVariants:{variant:"default",size:"default"}}),l=r.forwardRef((e,t)=>
1{let{className:s,variant:r,size:o,asChild:l=!1,...d}=e,h=l?n.DX:"button";return(0,a.jsx)(h,{className:(0,c.cn)(i({variant:r,size:o,className:s})),ref:t,...d})});l.displayName="Button"},6799:(e,t,s)=>{"use strict";s.d(t,{cn:()=>n});var a=s(4122),r=s(4912);function n(){for(var e=arguments.length,t=Array(e),s=0;s<e;s++)t[s]=arguments[s];return(0,r.QP)((0,a.$)(t))}},7828:(e,t,s)=>{"use strict";s.d(t,{default:()=>d});var a=s(5289),r=s(7373),n=s(6720),o=s(8585),c=s(1022),i=s(6799);let l=r.forwardRef((e,t)=>{let{className:s,...r}=e;return(0,a.jsx)(o.bL,{ref:t,className:(0,i.cn)("peer h-4 w-4 shrink-0 rounded-sm border border-primary ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground",s),...r,children:(0,a.jsx)(o.C1,{className:(0,i.cn)("flex items-center justify-center text-current"),children:(0,a.jsx)(c.A,{className:"h-4 w-4"})})})});function d(e){let{dict:t}=e,[s,o]=(0,r.useState)("idle"),[c,i]=(0,r.useState)(""),d=async e=>{e.preventDefault(),o("loading"),i("");let s=new FormData(e.currentTarget),a={name:s.get("name"),email:s.get("email"),message:s.get("message"),website:s.get("website")};try{let e=await fetch("/api/contact",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(a)}),s=await e.json();if(e.ok&&s.success)o("success"),i(t.successMessage);else throw Error(s.error||"Failed to send message")}catch(e){console.error("Error sending message:",e),o("error"),i(t.errorMessage)}};return(0,a.jsxs)("form",{onSubmit:d,className:"space-y-4",children:[(0,a.jsx)("div",{children:(0,a.jsx)("input",{type:"text",name:"name",placeholder:t.namePlaceholder,className:"w-full p-3 border border-gray-300 rounded bg-gray-100",required:!0})}),(0,a.jsx)("div",{children:(0,a.jsx)("input",{type:"email",name:"email",placeholder:t.emailPlaceholder,className:"w-full p-3 border border-gray-300 rounded bg-gray-100",required:!0})}),(0,a.jsx)("div",{children:(0,a.jsx)("textarea",{name:"message",placeholder:t.messagePlaceholder,className:"w-full p-3 border border-gray-300 rounded bg-gray-100 h-32",required:!0,minLength:20})}),(0,a.jsx)("div",{className:"hidden","aria-hidden":"true",children:(0,a.jsx)("input",{type:"text",name:"website",placeholder:"Your website",tabIndex:-1,autoComplete:"off"})}),(0,a.jsxs)("div",{className:"flex items-start space-x-2",children:[(0,a.jsx)(l,{id:"terms",required:!0}),(0,a.jsx)("label",{htmlFor:"terms",className:"text-sm text-gray-600",children:t.consent})]}),(0,a.jsx)(n.$,{type:"submit",className:"w-full bg-green-600 hover:bg-green-700",disabled:"loading"===s,"data-umami-event":"contact-form-submit",children:"loading"===s?t.sending:t.send}),c&&(0,a.jsx)("p",{className:"text-sm ".concat("success"===s?"text-green-600":"text-red-600"),children:c})]})}l.displayName=o.bL.displayName}},e=>{var t=t=>e(e.s=t);e.O(0,[505,221,228,394,58,570,358],()=>t(3466)),_N_E=e.O()}]);
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.