PageSourceSearch

https://www.denisyurchak.com/_next/static/chunks/app/contact/page-d4ba5bb98be21d86.js

js denisyurchak.com collected 2026-10-07 22:24:21 UTC 6,294 bytes, 1 lines download raw bytes

1(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[977],{65410:(e,t,r)=>{Promise.resolve().then(r.bind(r,35122)),Promise.resolve().then(r.bind(r,41030)),Promise.resolve().then(r.t.bind(r,48173,23))},35122:(e,t,r)=>{"use strict";r.d(t,{default:()=>d});var o=r(95155),a=r(12115),n=r(38576),s=r(11536);function d(){let[e,t]=(0,a.useState)("idle"),r=async e=>{e.preventDefault();let r=e.currentTarget,o=Object.fromEntries(new FormData(r));t("sending");try{if(!(await fetch("/api/contact",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(o)})).ok)throw Error();t("sent"),r.reset(),n.Ay.capture("contact_form_sent")}catch(e){t("error")}};return(0,o.jsxs)("form",{onSubmit:r,className:"mt-8 max-w-xl",children:[(0,o.jsxs)("div",{className:"grid sm:grid-cols-2 gap-4 mb-4",children:[(0,o.jsx)("input",{name:"name",type:"text",placeholder:"Your name",autoComplete:"name",className:"px-4 py-3 rounded-xl border border-border bg-background/50 text-foreground placeholder:text-muted-foreground focus:outline-none focus:border-accent"}),(0,o.jsx)("input",{name:"email",type:"email",required:!0,placeholder:"Your email",autoComplete:"email",className:"px-4 py-3 rounded-xl border border-border bg-background/50 text-foreground placeholder:text-muted-foreground focus:outline-none focus:border-accent"})]}),(0,o.jsx)("input",{name:"company",type:"text",tabIndex:-1,autoComplete:"off",className:"hidden","aria-hidden":"true"}),(0,o.jsx)("textarea",{name:"message",required:!0,rows:4,placeholder:"What's on your mind?",className:"w-full px-4 py-3 rounded-xl border border-border bg-background/50 text-foreground placeholder:text-muted-foreground focus:outline-none focus:border-accent mb-4"}),(0,o.jsxs)("div",{className:"flex items-center gap-4",children:[(0,o.jsxs)("button",{type:"submit",disabled:"sending"===e,className:"inline-flex items-center gap-2 px-6 py-3 rounded-xl bg-accent text-accent-foreground font-semibold hover:opacity-90 transition-opacity disabled:opacity-50",children:[(0,o.jsx)(s.Cer,{size:13}),"sending"===e?"Sending…":"Send message"]}),"sent"===e&&(0,o.jsx)("span",{className:"text-sm text-green-600 dark:text-green-400",children:"Sent, I'll get back to you soon."}),"error"===e&&(0,o.jsx)("span",{className:"text-sm text-red-500",children:"Something went wrong, try again or ping me on X."})]})]})}},41030:(e,t,r)=>{"use strict";r.d(t,{default:()=>i});var o=r(95155),a=r(12115),n=r(48173),s=r.n(n),d=r(76046),l=r(11536);function c(){let[e,t]=(0,a.useState)(!1),[r,n]=(0,a.useState)(!1);return((0,a.useEffect)(()=>{n(!0);let e=localStorage.getItem("theme"),r=window.matchMedia("(prefers-color-scheme: dark)").matches,o="dark"===e||!e&&r;t(o),o?document.documentElement.classList.add("dark"):document.documentElement.classList.remove("dark")},[]),r)?(0,o.jsx)("button",{onClick:()=>{let r=!e;t(r),r?(document.documentElement.classList.add("dark"),localStorage.setItem("theme","dark"),console.log("Switched to dark theme")):(document.documentElement.classList.remove("dark"),localStorage.setItem("theme","light"),console.log("Switched to light theme"))},className:"p-2 rounded-lg bg-muted/50 hover:bg-muted border border-border ","aria-label":"Toggle theme",children:(0,o.jsx)("svg",{className:"w-5 h-5 text-foreground",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:e?(0,o.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M12 3v1m0 16v1m9-9h-1M4 12H3m15.364 6.364l-.707-.707M6.343 6.343l-.707-.707m12.728 0l-.707.707M6.343 17.657l-.707.707M16 12a4 4 0 11-8 0 4 4 0 018 0z"}):(0,o.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M20.354 15.354A9 9 0 018.646 3.646 9.003 9.003 0 0012 21a9.003 9.003 0 008.354-5.646z"})})}):(0,o.jsx)("div",{className:"p-2 rounded-lg bg-muted/50 border border-border",children:(0,o.jsx)("div",{className:"w-5 h-5"})})}function i(){let[e,t]=(0,a.useState)(!1),[r,n]=(0,a.useState)(!1),i="/"===(0,d.usePathname)();(0,a.useEffect)(()=>{let e=()=>{t(window.scrollY>20)};return window.addEventListener("scroll",e),()=>window.removeEventListener("scroll",e)},[]);let m=()=>{n(!1)},u=[{href:"#about",label:"About"},{href:"#projects",label:"Products"},{href:"#media",label:"Media"},{href:"/blog",label:"Blog"},{href:"/consulting",label:"Consulting"}];return(0,o.jsx)("nav",{className:"fixed top-0 left-0 right-0 z-50 transition-all duration-300 ".concat(e?"bg-background/80 backdrop-blur-md border-b border-border":"bg-transparent"),children:(0,o.jsxs)("div",{className:"max-w-4xl mx-auto px-6",children:[(0,o.jsxs)("div",{className:"flex items-center gap-6 h-20 ".concat(i?"justify-end":"justify-between"),children:[!i&&(0,o.jsxs)(s(),{href:"/",className:"inline-flex items-center gap-2 whitespace-nowrap text-muted-foreground hover:text-foreground transition-colors font-medium",children:[(0,o.jsx)(l.QVr,{size:13}),"Back home"]}),(0,o.jsxs)("div",{className:"hidden md:flex flex-wrap justify-end items-center gap-x-5 gap-y-1",children:[u.map(e=>(0,o.jsx)("a",{href:e.href.startsWith("#")?i?e.href:"/".concat(e.href):e.href,className:"text-foreground hover:text-accent transition-colors duration-200 font-medium",onClick:m,children:e.label},e.href)),(0,o.jsx)(c,{})]}),(0,o.jsxs)("div",{className:"flex md:hidden items-center gap-4",children:[(0,o.jsx)(c,{}),(0,o.jsx)("button",{onClick:()=>{n(!r)},className:"p-2 text-foreground hover:text-accent transition-colors","aria-label":"Toggle mobile menu",children:r?(0,o.jsx)(l.QCr,{size:20}):(0,o.jsx)(l.OXb,{size:20})})]})]}),(0,o.jsx)("div",{className:"md:hidden absolute top-full left-0 right-0 z-[100] bg-background border-b border-border shadow-2xl overflow-y-auto transition-all duration-300 ease-in-out ".concat(r?"max-h-[calc(100dvh-5rem)] opacity-100":"max-h-0 opacity-0 border-b-0"),children:(0,o.jsx)("div",{className:"px-6 py-4 space-y-4 text-right",children:u.map(e=>(0,o.jsx)("a",{href:e.href.startsWith("#")?i?e.href:"/".concat(e.href):e.href,className:"block text-foreground hover:text-accent transition-colors duration-200 font-medium py-2",onClick:m,children:e.label},e.href))})})]})})}},76046:(e,t,r)=>{"use strict";var o=r(66658);r.o(o,"usePathname")&&r.d(t,{usePathname:function(){return o.usePathname}})}},e=>{var t=t=>e(e.s=t);e.O(0,[711,229,7,441,517,358],()=>t(65410)),_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.