try{!function(){var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},r=(new e.Error).stack;r&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[r]="f88f0f63-3f88-4d88-8d91-7ed4570b424f",e._sentryDebugIdIdentifier="sentry-dbid-f88f0f63-3f88-4d88-8d91-7ed4570b424f")}()}catch(e){}"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[2677],{26408:(e,r,a)=>{a.d(r,{$n:()=>l.$,aF:()=>s,cw:()=>c,$m:()=>o,rQ:()=>i}),a(71307);var l=a(50849);a(85386);var t=a(65183),n=a(24375);a(43834),a(53911);var d=a(92382);function s(e){let{children:r,isOpen:a,onOpenChange:l,className:s}=e,o=(0,n.useCallback)(e=>{"Escape"===e.key&&l(!1)},[l]);return((0,n.useEffect)(()=>{if(a)return document.addEventListener("keydown",o),()=>{document.removeEventListener("keydown",o)}},[a,o]),a)?(0,t.jsxs)("div",{className:(0,d.QP)("fixed inset-0 z-50 flex items-center justify-center bg-black/50",s),onClick:e=>{e.target===e.currentTarget&&l(!1)},onKeyDown:e=>{"Escape"===e.key&&l(!1)},role:"button",tabIndex:0,"aria-label":"Click outside or press Escape to close this modal","aria-describedby":"modal-backdrop-description",children:[(0,t.jsx)("div",{id:"modal-backdrop-description",className:"sr-only",children:"Click outside or press Escape to close this modal"}),r]}):null}function o(e){let{children:r,className:a,onOpenChange:l}=e;return(0,t.jsx)("div",{className:(0,d.QP)("relative bg-white rounded-lg shadow-xl max-w-xl w-full mx-4 max-h-[90vh] overflow-hidden",a),children:"function"==typeof r?r(()=>l(!1)):r})}function i(e){let{children:r,className:a}=e;return(0,t.jsx)("div",{className:(0,d.QP)("px-6 py-4 border-b border-gray-200",a),children:r})}function c(e){let{children:r,className:a}=e;return(0,t.jsx)("div",{className:(0,d.QP)("px-6 py-4",a),children:r})}},43834:(e,r,a)=>{a.d(r,{E:()=>o});var l=a(65183);a(24375);var t=a(92382);let n={default:"bg-gray-100 text-gray-800 border border-gray-200",primary:"bg-primary text-white border border-primary",secondary:"bg-gray-200 text-gray-700 border border-gray-400",success:"bg-success-light text-green-800 border border-success-border",warning:"bg-warning-light text-yellow-800 border border-warning-border",danger:"bg-error-light text-red-800 border border-error-border",info:"bg-info-light text-blue-800 border border-info-border",bordered:"bg-white text-gray-700 border-2 border-gray-400"},d={sm:"px-2 py-1 text-xs",md:"px-3 py-1.5 text-sm",lg:"px-4 py-2 text-base"},s={none:"",sm:"rounded-sm",md:"rounded-md",lg:"rounded-lg",full:"rounded-full"};function o(e){let{children:r,className:a,variant:o="default",size:i="md",rounded:c="md"}=e,m=(0,t.QP)("inline-flex items-center font-medium",n[o],d[i],s[c],a);return(0,l.jsx)("span",{className:m,children:r})}},52677:(e,r,a)=>{a.r(r),a.d(r,{ContactModal:()=>o});var l=a(65183),t=a(26408),n=a(24375),d=a(45308),s=a(36134);let o=(0,n.memo)(e=>{let{isOpen:r,onOpenChange:o}=e,[i,c]=(0,n.useState)("");return(0,n.useEffect)(()=>{(async()=>{try{let{config:e}=await Promise.resolve().then(a.bind(a,44301));e.contactEmail&&c(e.contactEmail)}catch(e){console.error("Failed to load config:",e)}})()},[]),(0,l.jsx)(t.aF,{isOpen:r,onOpenChange:o,"aria-label":"Contact form modal",children:(0,l.jsx)(t.$m,{className:"pb-0",onOpenChange:o,children:e=>(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(t.rQ,{className:"flex flex-col gap-1",children:(0,l.jsxs)("div",{className:"flex items-center justify-between",children:[(0,l.jsx)("h2",{className:"text-lg font-semibold",children:"Contact me"}),(0,l.jsx)(t.$n,{variant:"ghost",size:"sm",onClick:e,className:"p-2 h-8 w-8 min-w-0 rounded-full hover:bg-gray-100","aria-label":"Close contact modal",children:"✕"})]})}),(0,l.jsxs)(t.cw,{children:[(0,l.jsxs)("p",{children:["Fill in the form below or email me at"," ",(0,l.jsx)("span",{className:"select-all","aria-label":"Email address: ".concat(i),children:(0,s.X)(i)})]}),(0,l.jsx)("p",{children:"I read all emails personally and usually reply within 24h."}),(0,l.jsx)(d.default,{})]})]})})})});o.displayName="ContactModal"},53911:(e,r,a)=>{a.d(r,{P:()=>s});var l=a(65183);a(24375);var t=a(92382);let n={sm:"w-4 h-4",md:"w-6 h-6",lg:"w-8 h-8"},d={primary:"text-primary",secondary:"text-muted",success:"text-success",warning:"text-warning",danger:"text-error"};function s(e){let{size:r="md",color:a="primary",className:s,"aria-label":o="Loading..."}=e;return(0,l.jsx)("div",{className:(0,t.QP)("inline-block",n[r],s),role:"status","aria-label":o,children:(0,l.jsxs)("svg",{className:(0,t.QP)("animate-spin",n[r],d[a]),xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",children:[(0,l.jsx)("circle",{className:"opacity-25",cx:"12",cy:"12",r:"10",stroke:"currentColor",strokeWidth:"4"}),(0,l.jsx)("path",{className:"opacity-75",fill:"currentColor",d:"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"})]})})}},71307:(e,r,a)=>{a.d(r,{Zp:()=>i,aR:()=>c,bw:()=>m,wL:()=>b});var l=a(65183),t=a(24375),n=a(92382);let d={default:"bg-white",bordered:"bg-white border border-gray-300",shadow:"bg-white shadow-md border border-gray-300",elevated:"bg-white shadow-lg border border-gray-300"},s={none:"",sm:"p-2",md:"p-4",lg:"p-6"},o={none:"",sm:"rounded-sm",md:"rounded-md",lg:"rounded-lg",xl:"rounded-xl"},i=t.forwardRef(function(e,r){let{children:a,className:t,as:i="div",href:c,onClick:m,variant:b="default",padding:u="md",rounded:f="lg",style:g}=e,x={className:(0,n.QP)("transition-all duration-200",d[b],s[u],o[f],t),...m&&{onClick:m},...c&&{href:c},...g&&{style:g},ref:r};return(0,l.jsx)(i,{...x,children:a})});function c(e){let{children:r,className:a,padding:t="md"}=e;return(0,l.jsx)("div",{className:(0,n.QP)("flex flex-col gap-1",s[t],a),children:r})}function m(e){let{children:r,className:a,padding:t="md",style:d}=e;return(0,l.jsx)("div",{className:(0,n.QP)("flex flex-col gap-2",s[t],a),style:d,children:r})}function b(e){let{children:r,className:a,padding:t="md"}=e;return(0,l.jsx)("div",{className:(0,n.QP)("flex items-center justify-between",s[t],a),children:r})}}}]);