try{let e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},a=(new e.Error).stack;a&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[a]="6db3307b-b610-4542-8b25-1f99693c8878",e._sentryDebugIdIdentifier="sentry-dbid-6db3307b-b610-4542-8b25-1f99693c8878")}catch(e){}"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[449],{18809:(e,a,t)=>{t.d(a,{default:()=>p});var s=t(3896),r=t(49948),l=t(27240),n=t(3851),o=t(17429),i=t(77470),c=t(52308);let d="text-tiny text-nowrap rounded-md px-1 py-0.5",m=(e,a)=>e>=2?{text:"Most popular",className:"".concat(d," text-rose-600 border border-rose-600")}:e>=1||0===a&&e>0?{text:"Popular",className:"".concat(d," text-orange-500 border border-orange-500")}:0===e&&0===a?{text:"Most recent",className:"".concat(d," text-orange-500 border border-orange-500")}:null,u=(0,c.memo)(e=>{let{stars:a,index:t}=e,r=m(a,t);return r?(0,s.jsx)("span",{className:r.className,children:r.text}):null});u.displayName="BlogpostCardTitle";let h={container:"mx-auto w-full md:max-w-[48%] 2xl:max-w-[31%]",card:"no-button-style z-0 p-2 w-full min-w-64 cursor-pointer",header:"py-1 md:py-2 lg:py-3",headerContent:"w-full flex justify-between items-start",title:"text-left text-balance font-semibold",chipContainer:"flex justify-end mt-1 ml-2",body:"py-2",description:"text-sm text-gray-500",footer:"flex justify-between items-center py-1 md:py-2 lg:py-3",date:"text-tiny text-gray-400 min-w-20",tagContainer:"flex flex-wrap space-x-1 justify-end",tag:"text-tiny text-gray-400"},x=(0,c.memo)(e=>{let{tags:a}=e;return(0,s.jsx)("div",{className:h.tagContainer,children:a.map(e=>(0,s.jsxs)("span",{className:h.tag,children:["#",e]},e))})});x.displayName="Tags";let f=(0,c.memo)(e=>{let{post:a,index:t}=e,{title:c,slug:d,stars:m,description:f,date:p,tags:g}=a;return(0,s.jsx)("div",{className:h.container,children:(0,s.jsxs)(r.Z,{as:l.h,href:"/posts/".concat(d),classNames:{base:h.card},children:[(0,s.jsx)(n.d,{className:h.header,children:(0,s.jsxs)("div",{className:h.headerContent,children:[(0,s.jsx)("span",{className:h.title,children:c}),(0,s.jsx)("div",{className:h.chipContainer,children:(0,s.jsx)(u,{stars:m,index:t})})]})}),(0,s.jsx)(o.U,{className:h.body,children:(0,s.jsx)("span",{className:h.description,children:f})}),(0,s.jsxs)(i.Z,{className:h.footer,children:[(0,s.jsx)("span",{className:h.date,children:p}),(0,s.jsx)(x,{tags:g})]})]})})});f.displayName="BlogpostCard";let p=f},86524:(e,a,t)=>{t.d(a,{A:()=>n});var s=t(3896),r=t(52308);let l=e=>{let{side:a,className:t,width:r}=e;return(0,s.jsx)("div",{className:"".concat(t," ").concat(r," ").concat(a,"-0 bg-gradient-to-").concat("left"===a?"r":"l"," from-white to-transparent"),"aria-hidden":"true"})},n=(0,r.memo)(function(e){let{width:a}=e,t="absolute top-0 bottom-0 pointer-events-none";return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(l,{side:"left",className:t,width:a}),(0,s.jsx)(l,{side:"right",className:t,width:a})]})})},87041:(e,a,t)=>{t.d(a,{LogoReel:()=>d});var s=t(3896),r=t(52308),l=t(86524),n=t(32944),o=t(70607);let i={width:100,height:50},c=(0,r.memo)(function(e){let{logo:a,index:t}=e;return(0,s.jsx)("div",{className:"flex-shrink-0 mx-4",children:(0,s.jsx)(n.default,{src:a.src,alt:a.alt,width:i.width,height:i.height,className:"h-12 w-auto object-contain",onError:e=>{e.target.style.display="none"}})})}),d=(0,r.memo)(function(e){let{logos:a}=e,t=(0,r.useRef)(null);if(!Array.isArray(a)||0===a.length)return null;let n=Array.from({length:4},()=>a).flat(),d=i.width*a.length*4,m=(0,o.A)({maxWidth:d}),u=(0,r.useCallback)(()=>{let e=t.current;if(!e)return;let a=e.scrollWidth;e.style.setProperty("--scroll-width","".concat(a,"px"))},[]);return(0,r.useEffect)(()=>{var e;u();let a=()=>{requestAnimationFrame(u)};window.addEventListener("resize",a);let s=null===(e=t.current)||void 0===e?void 0:e.getElementsByTagName("img");return s&&Promise.all(Array.from(s).map(e=>e.complete||new Promise(a=>{e.onload=a,e.onerror=a}))).then(u),()=>window.removeEventListener("resize",a)},[u]),(0,s.jsxs)("div",{className:"w-[95vw] max-w-full overflow-hidden bg-white mt-4 relative",children:[(0,s.jsx)("div",{className:"flex animate-scroll max-w-full",ref:t,style:{transform:"scale(".concat(m,")"),transformOrigin:"left center"},role:"marquee","aria-label":"Logo reel",children:n.map((e,a)=>(0,s.jsx)(c,{logo:e,index:a},"logo-".concat(e.alt,"-").concat(a)))}),(0,s.jsx)(l.A,{width:"w-24"})]})})},31711:(e,a,t)=>{t.r(a),t.d(a,{default:()=>d});var s=t(3896),r=t(80890),l=t(46187),n=t(60157),o=t(52308),i=t(63940);let c={name:"",email:"",message:""};function d(e){let{title:a,description:t}=e,[d,m]=(0,o.useState)(c),[u,h]=(0,o.useState)(!1),[x,f]=(0,o.useState)("idle"),p=(0,o.useCallback)(e=>{let{name:a,value:t}=e.target;m(e=>({...e,[a]:t}))},[]),g=(0,o.useCallback)(async e=>{e.preventDefault(),h(!0),f("idle");try{let e=await (0,i.Z)(d);if("success"===e)f("success"),m(c);else throw Error("Unexpected response")}catch(e){console.error("Submission error:",e),f("error"),e instanceof Error&&console.error("Error details:",{message:e.message,stack:e.stack})}finally{h(!1)}},[d]);return"success"===x?(0,s.jsxs)("div",{className:"px-4 py-3 rounded-lg bg-green-100 border border-green-400",role:"alert",children:[(0,s.jsx)("strong",{className:"font-bold",children:"Thank you!"})," ",(0,s.jsx)("span",{className:"block sm:inline",children:"Your message has been sent successfully. I'll get back to you soon."})]}):(0,s.jsxs)("form",{onSubmit:g,className:"max-w-lg mx-auto my-8 p-8 border border-black rounded-lg shadow-lg",children:[a&&(0,s.jsx)("h2",{className:"text-2xl font-bold mb-4",children:a}),t&&(0,s.jsx)("p",{className:"text-gray-600 mb-4",children:t}),(0,s.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,s.jsx)(r.r,{label:"Name",name:"name",value:d.name,onChange:p,description:"(and organization, optionally)",isRequired:!0}),(0,s.jsx)(r.r,{label:"Email",name:"email",type:"email",value:d.email,onChange:p,isRequired:!0}),(0,s.jsx)(l.P,{label:"How can I help you?",name:"message",value:d.message,onChange:p,minRows:4,isRequired:!0}),(0,s.jsx)(n.T,{type:"submit",color:"primary",className:"font-semibold",isLoading:u,children:u?"Submitting...":"Submit"}),"error"===x&&(0,s.jsxs)("p",{className:"text-red-600",children:["There was an error submitting the form. Please try emailing"," ",(0,s.jsx)("a",{href:"mailto:Luca@Luca-Dellanna.com",children:"Luca@Luca-Dellanna.com"})," ","directly."]})]})]})}},40377:(e,a,t)=>{t.d(a,{ContactModalButton:()=>x});var s=t(3896),r=t(16465),l=t(60157),n=t(52308),o=t(85617),i=t(53936),c=t(97406),d=t(32471),m=t(60470),u=t(31711);let h=(0,n.memo)(e=>{let{isOpen:a,onOpenChange:t}=e;return(0,s.jsx)(o.Y,{isOpen:a,onOpenChange:t,size:"sm",hideCloseButton:!0,children:(0,s.jsx)(i.g,{className:"pb-0",children:e=>(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(c.c,{className:"flex flex-col gap-1",children:"Contact me"}),(0,s.jsxs)(d.h,{children:[(0,s.jsxs)("p",{children:["Fill in the form below or email me at"," ",(0,s.jsx)("span",{className:"select-all",children:"Luca@Luca-Dellanna.com"})]}),(0,s.jsx)("p",{children:"I read all emails personally and usually reply within 24h."}),(0,s.jsx)(u.default,{})]}),(0,s.jsx)(m.q,{children:(0,s.jsx)(l.T,{color:"primary",variant:"light",onPress:e,className:"shadow-none text-white",children:"Close"})})]})})})});h.displayName="ContactModal";let x=(0,n.memo)(()=>{let{isOpen:e,onOpen:a,onOpenChange:t}=(0,r.j)();return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(l.T,{color:"primary",onPress:a,"aria-label":"Contact Luca",children:"Contact Luca"}),(0,s.jsx)(h,{isOpen:e,onOpenChange:t})]})});x.displayName="ContactModalButton"},70607:(e,a,t)=>{t.d(a,{A:()=>r});var s=t(52308);function r(e){let{maxWidth:a,minScale:t=.1,debounceMs:r=100}=e,[l,n]=(0,s.useState)(1),o=(0,s.useRef)(void 0),i=(0,s.useCallback)(()=>{n(Math.min(.95,Math.max(t,window.innerWidth/a)))},[a,t]);return(0,s.useEffect)(()=>{let e=()=>o.current&&clearTimeout(o.current),a=()=>{e(),o.current=setTimeout(i,r)};return i(),window.addEventListener("resize",a,{passive:!0}),()=>{e(),window.removeEventListener("resize",a)}},[i,r]),l}},63940:(e,a,t)=>{t.d(a,{Z:()=>r});var s=t(51615);let r=(0,s.createServerReference)("4060e579730ced5466de50b99f82ef981c202d85d3",s.callServer,void 0,s.findSourceMapURL,"sendEmail")}}]);