Files
williammarch.xyz/.next/server/app/page.js
2026-04-02 20:38:56 +01:00

3 lines
33 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

(()=>{var e={};e.id=931,e.ids=[931],e.modules={7849:e=>{"use strict";e.exports=require("next/dist/client/components/action-async-storage.external")},2934:e=>{"use strict";e.exports=require("next/dist/client/components/action-async-storage.external.js")},5403:e=>{"use strict";e.exports=require("next/dist/client/components/request-async-storage.external")},4580:e=>{"use strict";e.exports=require("next/dist/client/components/request-async-storage.external.js")},4749:e=>{"use strict";e.exports=require("next/dist/client/components/static-generation-async-storage.external")},5869:e=>{"use strict";e.exports=require("next/dist/client/components/static-generation-async-storage.external.js")},399:e=>{"use strict";e.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},7125:(e,t,s)=>{"use strict";s.r(t),s.d(t,{GlobalError:()=>l.a,__next_app__:()=>h,originalPathname:()=>x,pages:()=>d,routeModule:()=>m,tree:()=>c}),s(7249),s(1506),s(5866);var a=s(3191),r=s(8716),i=s(7922),l=s.n(i),n=s(5231),o={};for(let e in n)0>["default","tree","pages","GlobalError","originalPathname","__next_app__","routeModule"].indexOf(e)&&(o[e]=()=>n[e]);s.d(t,o);let c=["",{children:["__PAGE__",{},{page:[()=>Promise.resolve().then(s.bind(s,7249)),"/Users/will/Documents/william-march/app/page.tsx"]}]},{layout:[()=>Promise.resolve().then(s.bind(s,1506)),"/Users/will/Documents/william-march/app/layout.tsx"],"not-found":[()=>Promise.resolve().then(s.t.bind(s,5866,23)),"next/dist/client/components/not-found-error"]}],d=["/Users/will/Documents/william-march/app/page.tsx"],x="/page",h={require:s,loadChunk:()=>Promise.resolve()},m=new a.AppPageRouteModule({definition:{kind:r.x.APP_PAGE,page:"/page",pathname:"/",bundlePath:"",filename:"",appPaths:[]},userland:{loaderTree:c}})},0:(e,t,s)=>{Promise.resolve().then(s.bind(s,6903)),Promise.resolve().then(s.bind(s,2319)),Promise.resolve().then(s.bind(s,4174)),Promise.resolve().then(s.bind(s,4858))},4773:(e,t,s)=>{Promise.resolve().then(s.t.bind(s,2994,23)),Promise.resolve().then(s.t.bind(s,6114,23)),Promise.resolve().then(s.t.bind(s,9727,23)),Promise.resolve().then(s.t.bind(s,9671,23)),Promise.resolve().then(s.t.bind(s,1868,23)),Promise.resolve().then(s.t.bind(s,4759,23))},9122:()=>{},6903:(e,t,s)=>{"use strict";s.d(t,{default:()=>x});var a=s(326),r=s(7577),i=s(6863);let l=["rgba(255,255,255,0.04)","rgba(255,255,255,0.13)","rgba(255,255,255,0.28)","rgba(255,255,255,0.50)","rgba(255,255,255,0.80)"];function n({label:e,value:t,sub:s}){return(0,a.jsxs)("div",{className:"glass rounded-2xl px-5 py-4 flex flex-col gap-1",children:[a.jsx("span",{className:"text-[10px] font-semibold uppercase tracking-[.1em] text-white/25",children:e}),a.jsx("span",{className:"text-[clamp(1.4rem,3vw,2rem)] font-black text-white tabular-nums leading-none",children:t}),a.jsx("span",{className:"text-xs text-white/30",children:s})]})}function o({data:e}){let[t,s]=(0,r.useState)(null),i=(0,r.useMemo)(()=>{let t=new Map;return e.forEach(e=>{let s=new Date(1e3*e.timestamp).toISOString().split("T")[0];t.set(s,(t.get(s)||0)+e.contributions)}),t},[e]),{weeks:n,monthLabels:o}=(0,r.useMemo)(()=>{let e=new Date;e.setHours(0,0,0,0);let t=new Date(e);t.setDate(e.getDate()-e.getDay()-357);let s=[],a=[],r=-1,l=new Date(t);for(let e=0;e<52;e++){let t=[];for(let e=0;e<7;e++){let e=l.toISOString().split("T")[0];t.push({date:new Date(l),key:e,count:i.get(e)||0}),l.setDate(l.getDate()+1)}let n=t[0].date.getMonth();n!==r&&(a.push({label:t[0].date.toLocaleDateString("en-US",{month:"short"}),x:15*e+26}),r=n),s.push(t)}return{weeks:s,monthLabels:a}},[i]);return(0,a.jsxs)("div",{className:"relative",children:[(0,a.jsxs)("div",{className:"flex items-center justify-between mb-4",children:[a.jsx("span",{className:"text-[11px] font-semibold uppercase tracking-[.1em] text-white/30",children:"Contribution Calendar \xb7 last 12 months"}),(0,a.jsxs)("div",{className:"flex items-center gap-1.5 text-[10px] text-white/20",children:[a.jsx("span",{children:"Less"}),l.map((e,t)=>a.jsx("span",{className:"rounded-sm inline-block w-2.5 h-2.5 flex-shrink-0",style:{background:e,border:"1px solid rgba(255,255,255,0.06)"},"aria-hidden":"true"},t)),a.jsx("span",{children:"More"})]})]}),a.jsx("div",{className:"overflow-x-auto pb-1",children:(0,a.jsxs)("svg",{width:806,height:125,"aria-label":"Contribution calendar heatmap",role:"img",children:[o.map((e,t)=>a.jsx("text",{x:e.x,y:10,fontSize:9,fill:"rgba(255,255,255,0.25)",fontFamily:"var(--font-geist-mono, monospace)",children:e.label},t)),["","Mon","","Wed","","Fri",""].map((e,t)=>e?a.jsx("text",{x:22,y:17+15*t+12,fontSize:9,fill:"rgba(255,255,255,0.2)",textAnchor:"end",fontFamily:"var(--font-geist-mono, monospace)",children:e},t):null),a.jsx("g",{transform:"translate(26, 14)",children:n.map((e,t)=>e.map((e,r)=>{var i;return a.jsx("rect",{x:15*t,y:15*r,width:12,height:12,rx:2.5,fill:l[0===(i=e.count)?0:i<=2?1:i<=5?2:i<=9?3:4],onMouseEnter:t=>s({x:t.clientX,y:t.clientY,date:e.date.toLocaleDateString("en-GB",{weekday:"short",day:"numeric",month:"short",year:"numeric"}),count:e.count}),onMouseLeave:()=>s(null),className:"transition-opacity duration-100 hover:opacity-70 cursor-default",children:a.jsx("title",{children:`${e.count} contribution${1!==e.count?"s":""} on ${e.date.toLocaleDateString()}`})},e.key)}))})]})}),t&&(0,a.jsxs)("div",{className:"fixed z-50 pointer-events-none px-2.5 py-1.5 rounded-lg text-xs font-medium text-white bg-[#1a1a1a] border border-white/[0.1] shadow-xl whitespace-nowrap",style:{left:t.x+12,top:t.y-36},children:[a.jsx("span",{className:"font-bold",children:t.count})," contribution",1!==t.count?"s":"",a.jsx("span",{className:"text-white/40 ml-1.5",children:t.date})]})]})}function c({data:e}){let t=(0,r.useMemo)(()=>Array.from({length:12},(t,s)=>{let a=new Date;a.setMonth(a.getMonth()-11+s);let r=`${a.getFullYear()}-${String(a.getMonth()+1).padStart(2,"0")}`;return{label:a.toLocaleDateString("en-US",{month:"short"}),count:e.filter(e=>{let t=new Date(1e3*e.timestamp);return`${t.getFullYear()}-${String(t.getMonth()+1).padStart(2,"0")}`===r}).reduce((e,t)=>e+t.contributions,0)}}),[e]),s=Math.max(...t.map(e=>e.count),1);return(0,a.jsxs)("div",{children:[a.jsx("span",{className:"text-[11px] font-semibold uppercase tracking-[.1em] text-white/30 block mb-5",children:"Monthly activity"}),a.jsx("div",{className:"relative h-24 flex items-end gap-1.5","aria-label":"Monthly commit activity bar chart",role:"img",children:t.map((e,t)=>{let r=e.count/s*100;return(0,a.jsxs)("div",{className:"flex-1 flex flex-col items-center gap-1.5 group",children:[a.jsx("div",{className:"w-full relative",style:{height:"80px"},children:a.jsx("div",{className:"absolute bottom-0 left-0 right-0 rounded-sm transition-all duration-300 ease-out",style:{height:`${Math.max(r,2)}%`,background:`rgba(255,255,255,${.06+r/100*.5})`},title:`${e.label}: ${e.count} contributions`})}),a.jsx("span",{className:"text-[8px] text-white/20 font-mono",children:e.label})]},t)})})]})}function d({commits:e}){return e.length?(0,a.jsxs)("div",{children:[a.jsx("span",{className:"text-[11px] font-semibold uppercase tracking-[.1em] text-white/30 block mb-5",children:"Recent commits"}),a.jsx("ol",{className:"flex flex-col","aria-label":"Recent commit list",children:e.slice(0,10).map((t,s)=>{let r=(t.sha||"").slice(0,7),i=(t.commit?.message||"").split("\n")[0].slice(0,64),l=t.created||t.commit?.author?.date;return e.length,(0,a.jsxs)("li",{className:"commit-line relative flex gap-3 pb-4 ",children:[a.jsx("div",{className:"mt-1.5 flex-shrink-0",children:a.jsx("span",{className:"block w-2 h-2 rounded-full bg-white/20 relative z-10","aria-hidden":"true"})}),(0,a.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,a.jsxs)("div",{className:"flex items-baseline gap-2 mb-0.5 flex-wrap",children:[a.jsx("span",{className:"text-[10px] font-semibold uppercase tracking-wider text-white/25",children:t._repo}),a.jsx("a",{href:t._repoUrl?`${t._repoUrl}/commit/${t.sha}`:"#",target:"_blank",rel:"noopener noreferrer",className:"font-mono text-[10px] text-white/20 hover:text-white/50 transition-colors px-1 py-0.5 rounded bg-white/[0.04] border border-white/[0.06]","aria-label":`View commit ${r}`,children:r}),a.jsx("span",{className:"text-[10px] text-white/20 ml-auto",children:l?function(e){let t=Math.floor((Date.now()-new Date(e).getTime())/6e4);if(t<1)return"just now";if(t<60)return`${t}m`;let s=Math.floor(t/60);if(s<24)return`${s}h`;let a=Math.floor(s/24);return a<30?`${a}d`:`${Math.floor(a/30)}mo`}(l):""})]}),a.jsx("p",{className:"text-sm text-white/60 truncate leading-snug",children:i})]})]},t.sha)})})]}):a.jsx("p",{className:"text-sm text-white/20 py-4",children:"No recent commits."})}function x(){let[e,t]=(0,r.useState)([]),[s,l]=(0,r.useState)([]),[x,h]=(0,r.useState)([]),[m,u]=(0,r.useState)(!0),[p,g]=(0,r.useState)(null),f=(0,r.useMemo)(()=>(0,i.vZ)(s),[s]);return a.jsx("section",{id:"activity",className:"py-24 px-6","aria-labelledby":"activity-heading",children:(0,a.jsxs)("div",{className:"max-w-5xl mx-auto",children:[a.jsx("span",{className:"label",children:"Gitea \xb7 Code activity"}),a.jsx("h2",{id:"activity-heading",className:"text-[clamp(1.8rem,4vw,2.5rem)] font-black tracking-tight text-white mb-10",children:"Contributions"}),(0,a.jsxs)("div",{className:"grid grid-cols-2 sm:grid-cols-4 gap-3 mb-6",children:[a.jsx(n,{label:"Contributions",value:m?"—":f.total.toLocaleString(),sub:"this year"}),a.jsx(n,{label:"Current streak",value:m?"—":`${f.currentStreak}d`,sub:"days"}),a.jsx(n,{label:"Longest streak",value:m?"—":`${f.longestStreak}d`,sub:"days"}),a.jsx(n,{label:"Active days",value:m?"—":f.activeDays,sub:"this year"})]}),a.jsx("div",{className:"glass rounded-2xl p-5 sm:p-6 mb-4",children:m?(0,a.jsxs)("div",{className:"flex flex-col gap-3",children:[a.jsx("div",{className:"skel h-3 w-48"}),a.jsx("div",{className:"skel h-[120px] w-full rounded-xl"})]}):p?(0,a.jsxs)("div",{className:"text-center py-6",children:[a.jsx("p",{className:"text-white/30 text-sm",children:"Could not load heatmap"}),a.jsx("p",{className:"text-white/20 text-xs font-mono mt-1",children:p})]}):a.jsx(o,{data:s})}),(0,a.jsxs)("div",{className:"grid lg:grid-cols-[1fr_360px] gap-4",children:[a.jsx("div",{className:"glass rounded-2xl p-5 sm:p-6",children:m?a.jsx("div",{className:"skel h-32 w-full rounded-xl"}):a.jsx(c,{data:s})}),a.jsx("div",{className:"glass rounded-2xl p-5 sm:p-6 overflow-hidden",children:m?a.jsx("div",{className:"flex flex-col gap-4",children:[void 0,void 0,void 0,void 0,void 0].map((e,t)=>(0,a.jsxs)("div",{className:"flex gap-3",children:[a.jsx("div",{className:"skel w-2 h-2 rounded-full mt-1.5 flex-shrink-0"}),(0,a.jsxs)("div",{className:"flex-1",children:[a.jsx("div",{className:"skel h-2.5 w-1/3 mb-1.5"}),a.jsx("div",{className:"skel h-3.5 w-5/6"})]})]},t))}):a.jsx(d,{commits:x})})]}),!m&&e.length>0&&(0,a.jsxs)("div",{className:"glass rounded-2xl p-5 sm:p-6 mt-4",children:[a.jsx("span",{className:"text-[11px] font-semibold uppercase tracking-[.1em] text-white/30 block mb-5",children:"Repository breakdown"}),a.jsx("div",{className:"flex flex-col gap-2.5",children:e.slice(0,6).map(t=>{let s=Math.max(...e.map(e=>e.stars_count),1),r=t.stars_count/s*100;return(0,a.jsxs)("div",{className:"flex items-center gap-3 group",children:[a.jsx("a",{href:t.html_url,target:"_blank",rel:"noopener noreferrer",className:"text-xs font-mono text-white/40 hover:text-white/70 transition-colors w-36 truncate shrink-0",children:t.name}),a.jsx("div",{className:"flex-1 h-1.5 bg-white/[0.04] rounded-full overflow-hidden",children:a.jsx("div",{className:"h-full rounded-full bg-white/25 transition-all duration-500",style:{width:`${Math.max(r,2)}%`}})}),a.jsx("span",{className:"text-[10px] text-white/25 tabular-nums w-6 text-right",children:t.stars_count})]},t.id)})})]})]})})}},2319:(e,t,s)=>{"use strict";s.d(t,{default:()=>l});var a=s(326),r=s(7577),i=s(6607);function l(){let[e,t]=(0,r.useState)("idle");return a.jsx("section",{id:"contact",className:"py-24 px-6 bg-[#0a0a0a]","aria-labelledby":"contact-heading",children:(0,a.jsxs)("div",{className:"max-w-5xl mx-auto",children:[a.jsx("span",{className:"label",children:"Get in touch"}),a.jsx("h2",{id:"contact-heading",className:"text-[clamp(1.8rem,4vw,2.5rem)] font-black tracking-tight text-white mb-10",children:"Lets work together."}),(0,a.jsxs)("div",{className:"grid md:grid-cols-[280px_1fr] gap-6",children:[(0,a.jsxs)("div",{className:"flex flex-col gap-3",children:[(0,a.jsxs)("a",{href:`mailto:${i.Ey.email}`,className:"glass rounded-xl p-4 flex items-center gap-3 group hover:border-white/[0.14] hover:-translate-x-[-4px] transition-all duration-150",children:[a.jsx("div",{className:"w-8 h-8 rounded-lg bg-white/[0.05] flex items-center justify-center flex-shrink-0","aria-hidden":"true",children:(0,a.jsxs)("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"rgba(255,255,255,0.5)",strokeWidth:"1.8",children:[a.jsx("rect",{x:"2",y:"4",width:"20",height:"16",rx:"2"}),a.jsx("path",{d:"m22 7-8.97 5.7a1.94 1.94 0 0 1-2.06 0L2 7"})]})}),(0,a.jsxs)("div",{className:"min-w-0",children:[a.jsx("p",{className:"text-[10px] text-white/25 uppercase tracking-wider",children:"Email"}),a.jsx("p",{className:"text-xs font-medium text-white/55 truncate group-hover:text-white/80 transition-colors",children:i.Ey.email})]})]}),(0,a.jsxs)("a",{href:`${i.lR}/${i.Qs}`,target:"_blank",rel:"noopener noreferrer",className:"glass rounded-xl p-4 flex items-center gap-3 group hover:border-white/[0.14] hover:translate-x-1 transition-all duration-150",children:[a.jsx("div",{className:"w-8 h-8 rounded-lg bg-white/[0.05] flex items-center justify-center flex-shrink-0","aria-hidden":"true",children:(0,a.jsxs)("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"rgba(255,255,255,0.5)",strokeWidth:"1.8",children:[a.jsx("path",{d:"M15 22v-4a4.8 4.8 0 0 0-1-3.2c3 0 6-2 6-5.5.08-1.25-.27-2.48-1-3.5.28-1.15.28-2.35 0-3.5 0 0-1 0-3 1.5-2.64-.5-5.36-.5-8 0C6 2 5 2 5 2c-.3 1.15-.3 2.35 0 3.5A5.403 5.403 0 0 0 4 9c0 3.5 3 5.5 6 5.5-.39.49-.68 1.05-.85 1.65-.17.6-.22 1.23-.15 1.85v4"}),a.jsx("path",{d:"M9 18c-4.51 2-5-2-7-2"})]})}),(0,a.jsxs)("div",{className:"min-w-0",children:[a.jsx("p",{className:"text-[10px] text-white/25 uppercase tracking-wider",children:"Gitea"}),(0,a.jsxs)("p",{className:"text-xs font-medium text-white/55 truncate group-hover:text-white/80 transition-colors font-mono",children:[i.lR.replace(/^https?:\/\//,""),"/",i.Qs]})]})]})]}),(0,a.jsxs)("form",{onSubmit:function(e){e.preventDefault();let s=new FormData(e.currentTarget),a=s.get("name"),r=s.get("email"),l=s.get("message");if(!a||!r||!l)return;let n=encodeURIComponent(`Message from ${a} via williammarch.xyz`),o=encodeURIComponent(`From: ${a} <${r}>
${l}`);window.location.href=`mailto:${i.Ey.email}?subject=${n}&body=${o}`,t("sent")},className:"glass rounded-xl p-6 flex flex-col gap-4",noValidate:!0,children:[(0,a.jsxs)("div",{className:"grid sm:grid-cols-2 gap-4",children:[(0,a.jsxs)("label",{className:"flex flex-col gap-1.5",children:[a.jsx("span",{className:"text-[10px] font-semibold uppercase tracking-wider text-white/30",children:"Name"}),a.jsx("input",{name:"name",type:"text",required:!0,placeholder:"Your name",autoComplete:"name",className:"bg-white/[0.03] border border-white/[0.08] rounded-lg px-3 py-2.5 text-sm text-white placeholder-white/20 outline-none transition-colors focus:border-white/[0.2] focus:ring-1 focus:ring-white/[0.1]"})]}),(0,a.jsxs)("label",{className:"flex flex-col gap-1.5",children:[a.jsx("span",{className:"text-[10px] font-semibold uppercase tracking-wider text-white/30",children:"Email"}),a.jsx("input",{name:"email",type:"email",required:!0,placeholder:"you@example.com",autoComplete:"email",className:"bg-white/[0.03] border border-white/[0.08] rounded-lg px-3 py-2.5 text-sm text-white placeholder-white/20 outline-none transition-colors focus:border-white/[0.2] focus:ring-1 focus:ring-white/[0.1]"})]})]}),(0,a.jsxs)("label",{className:"flex flex-col gap-1.5",children:[a.jsx("span",{className:"text-[10px] font-semibold uppercase tracking-wider text-white/30",children:"Message"}),a.jsx("textarea",{name:"message",required:!0,placeholder:"What's on your mind?",rows:4,className:"bg-white/[0.03] border border-white/[0.08] rounded-lg px-3 py-2.5 text-sm text-white placeholder-white/20 outline-none resize-none transition-colors focus:border-white/[0.2] focus:ring-1 focus:ring-white/[0.1]"})]}),a.jsx("div",{className:"flex items-center gap-4",children:(0,a.jsxs)("button",{type:"submit",className:"btn btn-primary",children:["sent"===e?"Opening email…":"Send message",(0,a.jsxs)("svg",{width:"13",height:"13",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5","aria-hidden":"true",children:[a.jsx("line",{x1:"22",y1:"2",x2:"11",y2:"13"}),a.jsx("polygon",{points:"22 2 15 22 11 13 2 9 22 2"})]})]})})]})]})]})})}},4174:(e,t,s)=>{"use strict";s.d(t,{default:()=>l});var a=s(326),r=s(7577),i=s(6607);function l(){let[e,t]=(0,r.useState)(!1),[s,l]=(0,r.useState)(!1),n=[{href:"#about",label:"About"},{href:"#projects",label:"Projects"},{href:"#activity",label:"Activity"},{href:"#contact",label:"Contact"}];return(0,a.jsxs)("nav",{className:`fixed top-0 left-0 right-0 z-50 h-[60px] flex items-center transition-all duration-300 ${e?"bg-[rgba(7,7,7,0.85)] backdrop-blur-[20px] border-b border-white/[0.06]":"bg-transparent"}`,"aria-label":"Main navigation",children:[(0,a.jsxs)("div",{className:"w-full max-w-5xl mx-auto px-6 flex items-center justify-between gap-8",children:[(0,a.jsxs)("a",{href:"#",className:"flex items-center gap-2.5 group","aria-label":"William March",children:[(0,a.jsxs)("svg",{width:"26",height:"26",viewBox:"0 0 26 26",fill:"none","aria-hidden":"true",children:[a.jsx("rect",{width:"26",height:"26",rx:"5",fill:"rgba(255,255,255,0.9)"}),a.jsx("path",{d:"M4 7.5L9 19L13 9.5L17 19L22 7.5",stroke:"#070707",strokeWidth:"2.2",strokeLinecap:"round",strokeLinejoin:"round"})]}),a.jsx("span",{className:"text-sm font-semibold text-white/80 group-hover:text-white transition-colors duration-150 tracking-tight",children:"William March"})]}),a.jsx("ul",{className:"hidden md:flex items-center gap-7",role:"list",children:n.map(e=>a.jsx("li",{children:a.jsx("a",{href:e.href,className:"text-sm text-white/40 hover:text-white/80 transition-colors duration-150 font-medium",children:e.label})},e.href))}),a.jsx("div",{className:"hidden md:flex items-center gap-3",children:(0,a.jsxs)("a",{href:`${i.lR}/${i.Qs}`,target:"_blank",rel:"noopener noreferrer",className:"flex items-center gap-1.5 text-xs text-white/40 hover:text-white/70 transition-colors duration-150 font-mono","aria-label":"Gitea profile",children:[(0,a.jsxs)("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.8","aria-hidden":"true",children:[a.jsx("path",{d:"M15 22v-4a4.8 4.8 0 0 0-1-3.2c3 0 6-2 6-5.5.08-1.25-.27-2.48-1-3.5.28-1.15.28-2.35 0-3.5 0 0-1 0-3 1.5-2.64-.5-5.36-.5-8 0C6 2 5 2 5 2c-.3 1.15-.3 2.35 0 3.5A5.403 5.403 0 0 0 4 9c0 3.5 3 5.5 6 5.5-.39.49-.68 1.05-.85 1.65-.17.6-.22 1.23-.15 1.85v4"}),a.jsx("path",{d:"M9 18c-4.51 2-5-2-7-2"})]}),"gitea"]})}),a.jsx("button",{className:"md:hidden p-1.5 rounded-md text-white/50 hover:text-white/80 hover:bg-white/[0.05] transition-all",onClick:()=>l(!s),"aria-label":"Toggle menu","aria-expanded":s,children:a.jsx("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2","aria-hidden":"true",children:s?(0,a.jsxs)(a.Fragment,{children:[a.jsx("line",{x1:"18",y1:"6",x2:"6",y2:"18"}),a.jsx("line",{x1:"6",y1:"6",x2:"18",y2:"18"})]}):(0,a.jsxs)(a.Fragment,{children:[a.jsx("line",{x1:"3",y1:"6",x2:"21",y2:"6"}),a.jsx("line",{x1:"3",y1:"12",x2:"21",y2:"12"}),a.jsx("line",{x1:"3",y1:"18",x2:"21",y2:"18"})]})})})]}),s&&a.jsx("div",{className:"absolute top-[60px] left-0 right-0 bg-[#0f0f0f] border-b border-white/[0.06] px-6 py-4 md:hidden",children:n.map(e=>a.jsx("a",{href:e.href,onClick:()=>l(!1),className:"block py-2.5 text-sm text-white/60 hover:text-white transition-colors",children:e.label},e.href))})]})}},4858:(e,t,s)=>{"use strict";s.d(t,{default:()=>n});var a=s(326),r=s(7577);s(6863);var i=s(6607);let l={python:"#3572A5",javascript:"#f1e05a",typescript:"#3178c6",go:"#00add8",rust:"#dea584","c++":"#f34b7d",c:"#555",html:"#e34c26",css:"#563d7c",shell:"#89e051",ruby:"#701516",java:"#b07219"};function n(){let[e,t]=(0,r.useState)(null),[s,n]=(0,r.useState)(null);return a.jsx("section",{id:"projects",className:"py-24 px-6 bg-[#0a0a0a]","aria-labelledby":"projects-heading",children:(0,a.jsxs)("div",{className:"max-w-5xl mx-auto",children:[a.jsx("span",{className:"label",children:"Gitea \xb7 Public repos"}),(0,a.jsxs)("div",{className:"flex items-end justify-between mb-10",children:[a.jsx("h2",{id:"projects-heading",className:"text-[clamp(1.8rem,4vw,2.5rem)] font-black tracking-tight text-white",children:"Recent Projects"}),(0,a.jsxs)("a",{href:`${i.lR}/${i.Qs}`,target:"_blank",rel:"noopener noreferrer",className:"hidden sm:flex items-center gap-1.5 text-xs text-white/30 hover:text-white/60 transition-colors font-mono",children:["All repos",a.jsx("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2","aria-hidden":"true",children:a.jsx("path",{d:"M7 17L17 7M7 7h10v10"})})]})]}),!e&&!s&&a.jsx("div",{className:"grid sm:grid-cols-2 lg:grid-cols-3 gap-4",children:[...Array(6)].map((e,t)=>(0,a.jsxs)("div",{className:"glass rounded-2xl p-5 flex flex-col gap-3",children:[a.jsx("div",{className:"skel h-4 w-1/2"}),a.jsx("div",{className:"skel h-3 w-5/6"}),a.jsx("div",{className:"skel h-3 w-3/4"}),a.jsx("div",{className:"skel h-3 w-1/3 mt-auto"})]},t))}),s&&(0,a.jsxs)("div",{className:"glass rounded-2xl p-10 text-center",children:[a.jsx("p",{className:"text-white/30 text-sm mb-1",children:"Could not load repositories"}),a.jsx("p",{className:"text-white/20 text-xs font-mono",children:s})]}),e&&a.jsx("div",{className:"grid sm:grid-cols-2 lg:grid-cols-3 gap-4","aria-live":"polite",children:e.map(e=>(0,a.jsxs)("a",{href:e.html_url,target:"_blank",rel:"noopener noreferrer",className:"glass rounded-2xl p-5 flex flex-col gap-4 group transition-all duration-200 hover:border-white/[0.14] hover:shadow-[0_0_0_1px_rgba(0,0,0,0.6),0_16px_48px_rgba(0,0,0,0.6)] hover:-translate-y-[2px]","aria-label":`${e.name}: ${e.description||"No description"}`,children:[(0,a.jsxs)("div",{className:"flex items-start justify-between gap-2",children:[a.jsx("div",{className:"p-1.5 rounded-md bg-white/[0.04] border border-white/[0.07]","aria-hidden":"true",children:(0,a.jsxs)("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"rgba(255,255,255,0.4)",strokeWidth:"1.8",children:[a.jsx("path",{d:"M15 22v-4a4.8 4.8 0 0 0-1-3.2c3 0 6-2 6-5.5.08-1.25-.27-2.48-1-3.5.28-1.15.28-2.35 0-3.5 0 0-1 0-3 1.5-2.64-.5-5.36-.5-8 0C6 2 5 2 5 2c-.3 1.15-.3 2.35 0 3.5A5.403 5.403 0 0 0 4 9c0 3.5 3 5.5 6 5.5-.39.49-.68 1.05-.85 1.65-.17.6-.22 1.23-.15 1.85v4"}),a.jsx("path",{d:"M9 18c-4.51 2-5-2-7-2"})]})}),a.jsx("svg",{className:"text-white/20 group-hover:text-white/40 transition-colors",width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2","aria-hidden":"true",children:a.jsx("path",{d:"M7 17L17 7M7 7h10v10"})})]}),(0,a.jsxs)("div",{children:[a.jsx("p",{className:"text-sm font-semibold text-white mb-1 truncate",children:e.name}),a.jsx("p",{className:"text-xs text-white/35 leading-relaxed line-clamp-2",children:e.description||a.jsx("span",{className:"italic text-white/20",children:"No description"})})]}),(0,a.jsxs)("div",{className:"flex items-center gap-4 mt-auto",children:[e.language&&(0,a.jsxs)("span",{className:"flex items-center gap-1.5 text-xs text-white/30",children:[a.jsx("span",{className:"w-2 h-2 rounded-full flex-shrink-0",style:{background:l[(e.language||"").toLowerCase()]||"#555"},"aria-hidden":"true"}),e.language]}),(0,a.jsxs)("span",{className:"flex items-center gap-1 text-xs text-white/25","aria-label":`${e.stars_count} stars`,children:[a.jsx("svg",{width:"10",height:"10",viewBox:"0 0 24 24",fill:"currentColor","aria-hidden":"true",children:a.jsx("polygon",{points:"12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26 12 2"})}),e.stars_count]}),a.jsx("span",{className:"text-xs text-white/20 ml-auto tabular-nums",children:function(e){let t=Math.floor((Date.now()-new Date(e).getTime())/6e4);if(t<60)return`${t}m ago`;let s=Math.floor(t/60);if(s<24)return`${s}h ago`;let a=Math.floor(s/24);return a<30?`${a}d ago`:`${Math.floor(a/30)}mo ago`}(e.updated)})]})]},e.id))})]})})}},6607:(e,t,s)=>{"use strict";s.d(t,{Ey:()=>i,Qs:()=>r,lR:()=>a});let a=process.env.NEXT_PUBLIC_GITEA_URL??"https://git.williammarch.xyz",r=process.env.NEXT_PUBLIC_GITEA_USERNAME??"m0dus";process.env.NEXT_PUBLIC_GITEA_TOKEN;let i={name:"William March",title:"Software Engineer",tagline:"Building precise, purposeful, open-source software.",about1:"I'm a software engineer focused on writing clean, reliable code. I care about open-source tools that solve real problems — the kind that make other engineers' lives easier.",about2:"From small CLI utilities to complex systems, I approach every project with the same level of craft. Good code reads like good writing: clear, intentional, and easy to reason about.",skills:["Go","Python","TypeScript","Rust","Linux","Docker","PostgreSQL","Git","Nix"],email:"william@williammarch.xyz",repoLimit:6,commitFetchRepos:4}},6863:(e,t,s)=>{"use strict";function a(e){let t=e.getFullYear(),s=String(e.getMonth()+1).padStart(2,"0"),a=String(e.getDate()).padStart(2,"0");return`${t}-${s}-${a}`}function r(e){let t=Date.now()/1e3-31536e3,s=e.filter(e=>e.timestamp>t),r=s.reduce((e,t)=>e+t.contributions,0),i=s.filter(e=>e.contributions>0).length,l=new Set;for(let e of s){if(e.contributions<=0)continue;let t=new Date(1e3*e.timestamp);l.add(a(t))}let n=new Date;n.setHours(0,0,0,0);let o=0,c=new Date(n);for(l.has(a(c))||c.setDate(c.getDate()-1);l.has(a(c));)o++,c.setDate(c.getDate()-1);let d=0,x=0,h=Array.from(l).sort();for(let e=0;e<h.length;e++){if(0===e){x=1,d=1;continue}let t=new Date(h[e-1]+"T00:00:00");t.setDate(t.getDate()+1),a(t)===h[e]?x++:x=1,x>d&&(d=x)}return{total:r,currentStreak:o,longestStreak:d,activeDays:i}}s.d(t,{vZ:()=>r}),s(6607)},1506:(e,t,s)=>{"use strict";s.r(t),s.d(t,{default:()=>c,metadata:()=>o});var a=s(9510),r=s(2547),i=s.n(r),l=s(4700),n=s.n(l);s(7272);let o={title:"William March — Software Engineer",description:"Software engineer building precise, purposeful open-source tools.",metadataBase:new URL("https://williammarch.xyz"),openGraph:{title:"William March",description:"Software engineer. Open-source builder.",url:"https://williammarch.xyz",siteName:"William March"},twitter:{card:"summary_large_image",title:"William March",description:"Software engineer."}};function c({children:e}){return a.jsx("html",{lang:"en",className:`${i().variable} ${n().variable}`,children:a.jsx("body",{children:e})})}},7249:(e,t,s)=>{"use strict";s.r(t),s.d(t,{default:()=>S});var a=s(9510),r=s(8570);let i=(0,r.createProxy)(String.raw`/Users/will/Documents/william-march/components/Nav.tsx`),{__esModule:l,$$typeof:n}=i;i.default;let o=(0,r.createProxy)(String.raw`/Users/will/Documents/william-march/components/Nav.tsx#default`),c=process.env.NEXT_PUBLIC_GITEA_URL??"https://git.williammarch.xyz",d=process.env.NEXT_PUBLIC_GITEA_USERNAME??"m0dus";process.env.NEXT_PUBLIC_GITEA_TOKEN;let x={tagline:"Building precise, purposeful, open-source software.",about1:"I'm a software engineer focused on writing clean, reliable code. I care about open-source tools that solve real problems — the kind that make other engineers' lives easier.",about2:"From small CLI utilities to complex systems, I approach every project with the same level of craft. Good code reads like good writing: clear, intentional, and easy to reason about.",skills:["Go","Python","TypeScript","Rust","Linux","Docker","PostgreSQL","Git","Nix"]};function h(){return(0,a.jsxs)("section",{className:"relative min-h-[100dvh] flex items-center noise overflow-hidden","aria-labelledby":"hero-name",children:[a.jsx("div",{className:"absolute inset-0 dot-grid opacity-[0.35] pointer-events-none","aria-hidden":"true"}),a.jsx("div",{className:"absolute inset-0 pointer-events-none",style:{background:"radial-gradient(ellipse 80% 70% at 50% 60%, transparent 30%, #070707 100%)"},"aria-hidden":"true"}),(0,a.jsxs)("div",{className:"relative z-10 w-full max-w-5xl mx-auto px-6 pt-28 pb-24",children:[(0,a.jsxs)("div",{className:"flex flex-col gap-8 max-w-3xl",children:[a.jsx("div",{className:"flex items-center gap-2 self-start",children:(0,a.jsxs)("span",{className:"inline-flex items-center gap-2 px-3 py-1 rounded-full text-xs font-medium text-white/50 bg-white/[0.04] border border-white/[0.07]",children:[a.jsx("span",{className:"w-1.5 h-1.5 rounded-full bg-white/50 animate-pulse","aria-hidden":"true"}),"Software Engineer"]})}),(0,a.jsxs)("h1",{id:"hero-name",className:"text-[clamp(3.5rem,10vw,8rem)] font-black leading-[0.9] tracking-[-0.05em] text-white",children:["William",a.jsx("br",{}),a.jsx("span",{className:"text-white/25",children:"March"})]}),a.jsx("p",{className:"text-[clamp(1rem,2vw,1.25rem)] text-white/40 max-w-[44ch] leading-relaxed font-light",children:x.tagline}),(0,a.jsxs)("div",{className:"flex flex-wrap gap-3",children:[(0,a.jsxs)("a",{href:"#projects",className:"btn btn-primary",children:["View work",a.jsx("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5","aria-hidden":"true",children:a.jsx("path",{d:"M5 12h14M12 5l7 7-7 7"})})]}),a.jsx("a",{href:"#contact",className:"btn btn-ghost",children:"Get in touch"})]})]}),(0,a.jsxs)("div",{className:"absolute bottom-10 left-6 flex items-center gap-2 text-white/20 text-xs font-mono","aria-hidden":"true",children:[a.jsx("span",{className:"w-[1px] h-8 bg-gradient-to-b from-transparent to-white/20"}),"scroll"]})]})]})}function m(){return a.jsx("section",{id:"about",className:"py-24 px-6","aria-labelledby":"about-heading",children:(0,a.jsxs)("div",{className:"max-w-5xl mx-auto grid md:grid-cols-[auto_1fr] gap-16 items-start",children:[a.jsx("div",{className:"flex-shrink-0",children:a.jsx("div",{className:"glass w-40 h-40 md:w-48 md:h-48 flex items-center justify-center rounded-2xl overflow-hidden",children:a.jsx("span",{className:"text-6xl font-black text-white/10 tracking-tighter select-none",children:"WM"})})}),(0,a.jsxs)("div",{className:"flex flex-col gap-6",children:[(0,a.jsxs)("div",{children:[a.jsx("span",{className:"label",children:"About"}),(0,a.jsxs)("h2",{id:"about-heading",className:"text-[clamp(1.8rem,4vw,2.5rem)] font-black tracking-tight text-white leading-tight",children:["Building software",a.jsx("br",{className:"hidden sm:block"})," that matters."]})]}),a.jsx("p",{className:"text-white/50 leading-relaxed max-w-[52ch]",children:x.about1}),a.jsx("p",{className:"text-white/50 leading-relaxed max-w-[52ch]",children:x.about2}),(0,a.jsxs)("div",{children:[a.jsx("p",{className:"text-xs font-semibold uppercase tracking-widest text-white/30 mb-3",children:"Stack"}),a.jsx("div",{className:"flex flex-wrap gap-2",children:x.skills.map(e=>a.jsx("span",{className:"px-3 py-1 text-xs font-medium text-white/40 bg-white/[0.04] border border-white/[0.07] rounded-full hover:text-white/60 hover:border-white/[0.12] transition-colors duration-150 cursor-default",children:e},e))})]})]})]})})}let u=(0,r.createProxy)(String.raw`/Users/will/Documents/william-march/components/Projects.tsx`),{__esModule:p,$$typeof:g}=u;u.default;let f=(0,r.createProxy)(String.raw`/Users/will/Documents/william-march/components/Projects.tsx#default`),w=(0,r.createProxy)(String.raw`/Users/will/Documents/william-march/components/CommitSection.tsx`),{__esModule:b,$$typeof:j}=w;w.default;let v=(0,r.createProxy)(String.raw`/Users/will/Documents/william-march/components/CommitSection.tsx#default`),N=(0,r.createProxy)(String.raw`/Users/will/Documents/william-march/components/Contact.tsx`),{__esModule:y,$$typeof:k}=N;N.default;let _=(0,r.createProxy)(String.raw`/Users/will/Documents/william-march/components/Contact.tsx#default`);function M(){return a.jsx("footer",{className:"border-t border-white/[0.05] py-8 px-6",children:(0,a.jsxs)("div",{className:"max-w-5xl mx-auto flex items-center justify-between flex-wrap gap-4 text-xs text-white/20 font-mono",children:[(0,a.jsxs)("span",{children:["\xa9 ",new Date().getFullYear()," William March"]}),(0,a.jsxs)("a",{href:`${c}/${d}`,target:"_blank",rel:"noopener noreferrer",className:"hover:text-white/40 transition-colors",children:[c.replace(/^https?:\/\//,""),"/",d]}),a.jsx("span",{children:"williammarch.xyz"})]})})}function S(){return(0,a.jsxs)(a.Fragment,{children:[a.jsx("a",{href:"#main",className:"sr-only focus:not-sr-only focus:fixed focus:top-4 focus:left-4 focus:z-[200] focus:px-4 focus:py-2 focus:bg-white focus:text-black focus:rounded-lg focus:text-sm focus:font-semibold",children:"Skip to main content"}),a.jsx(o,{}),(0,a.jsxs)("main",{id:"main",children:[a.jsx(h,{}),a.jsx(m,{}),a.jsx(f,{}),a.jsx(v,{}),a.jsx(_,{})]}),a.jsx(M,{})]})}},7272:()=>{}};var t=require("../webpack-runtime.js");t.C(e);var s=e=>t(t.s=e),a=t.X(0,[948,944],()=>s(7125));module.exports=a})();