1(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,3303,(e,t,r)=>{t.exports=e.r(79520)},51111,e=>{"use strict";var t=e.i(43476),r=e.i(71645),a=e.i(3303),i=e.i(48874),n=e.i(8803);let s="6Le9TP0sAAAAAIJiYRyMUGVK8G7ytG6_VDh9OVZW";async function l(){return window.grecaptcha?new Promise(e=>{window.grecaptcha.ready(()=>{window.grecaptcha.execute(s,{action:"contact"}).then(t=>e(t)).catch(()=>e(null))})}):null}e.s(["ContactForm",0,function({variant:e="dark"}){let[o,c]=(0,r.useState)("idle"),[m,d]=(0,r.useState)(null),[u,f]=(0,r.useState)(!1);async function h(e){if(e.preventDefault(),"sending"===o)return;let t=e.currentTarget,r=new FormData(t),a=await l(),i={first:String(r.get("first")??"").trim(),last:String(r.get("last")??"").trim(),email:String(r.get("email")??"").trim(),subject:String(r.get("subject")??"").trim(),message:String(r.get("message")??"").trim(),company:String(r.get("company")??""),recaptchaToken:a};c("sending"),d(null);try{let e=await fetch("/api/contact",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify(i)});if(!e.ok){let t=await e.json().catch(()=>null);throw Error(t?.error??`Request failed (${e.status})`)}c("sent"),t.reset()}catch(e){c("error"),d(e instanceof Error?e.message:"Something went wrong.")}}let p="sending"===o?"Sendingâ¦":"sent"===o?"Sent â":n.contact.submit;return(0,t.jsxs)("form",{className:`form${"light"===e?" form--light":""}`,onSubmit:h,onFocus:function(){u||f(!0)},noValidate:!0,children:[s&&u&&(0,t.jsx)(a.default,{id:"recaptcha-v3",src:`https://www.google.com/recaptcha/api.js?render=${s}`,strategy:"afterInteractive"}),(0,t.jsxs)("div",{className:"form__head",children:[(0,t.jsx)("span",{className:"form__head-mono",children:"Form · contact"}),(0,t.jsx)("span",{className:"form__head-status",children:"Encrypted"})]}),(0,t.jsxs)("div",{className:"form__grid",children:[n.contact.fields.map(e=>{let r="multiline"in e&&!!e.multiline||"email"===e.id||"subject"===e.id;return(0,t.jsxs)("label",{htmlFor:e.id,className:`form__field${r?" form__field--full":""}`,children:[(0,t.jsxs)("span",{className:"form__label",children:[e.label,e.required&&(0,t.jsx)("span",{className:"form__label-req","aria-hidden":!0,children:"*"})]}),"multiline"in e&&e.multiline?(0,t.jsx)("textarea",{id:e.id,name:e.id,required:e.required,className:"form__input form__textarea",rows:5}):(0,t.jsx)("input",{id:e.id,name:e.id,type:e.type,required:e.required,className:"form__input",autoComplete:"first"===e.id?"given-name":"last"===e.id?"family-name":"email"===e.id?"email":"off"})]},e.id)}),(0,t.jsx)("input",{type:"text",name:"company",tabIndex:-1,autoComplete:"off",className:"form__honeypot","aria-hidden":!0})]}),(0,t.jsxs)("div",{className:"form__foot",children:[(0,t.jsxs)("button",{type:"submit",className:"cta cta--accent",disabled:"sending"===o,children:[p,"idle"===o||"error"===o?(0,t.jsx)(i.Arrow,{}):null]}),(0,t.jsx)("span",{className:`form__note${"error"===o?" form__note--error":""}`,role:"error"===o?"alert":void 0,children:"sent"===o?"Thanks. I'll reply within one business day.":"error"===o?m??"Send failed. Try again or email me directly.":"One reply, from me. No newsletter, no sequences."})]}),s&&(0,t.jsxs)("p",{className:"form__legal",children:["This site is protected by reCAPTCHA and the Google"," ",(0,t.jsx)("a",{href:"https://policies.google.com/privacy",target:"_blank",rel:"noopener noreferrer",children:"Privacy Policy"})," ","and"," ",(0,t.jsx)("a",{href:"https://policies.google.com/terms",target:"_blank",rel:"noopener noreferrer",children:"Terms of Service"})," ","apply."]})]})}])}]);
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.