3 lines
32 KiB
JavaScript
3 lines
32 KiB
JavaScript
(()=>{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")},4266:(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:"Let’s 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://loud-cool-pigeon.01b529f7.katapult.cloud",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=Date.now()/1e3-31536e3,s=e.filter(e=>e.timestamp>t),a=s.reduce((e,t)=>e+t.contributions,0),r=s.filter(e=>e.contributions>0).length,i=new Set;s.forEach(e=>{let t=new Date(1e3*e.timestamp);i.add(t.toISOString().split("T")[0])});let l=new Date;l.setHours(0,0,0,0);let n=0,o=new Date(l);for(i.has(o.toISOString().split("T")[0])||o.setDate(o.getDate()-1);i.has(o.toISOString().split("T")[0]);)n++,o.setDate(o.getDate()-1);let c=0,d=0,x=Array.from(i).sort();for(let e=0;e<x.length;e++){if(0===e){d=1;continue}let t=new Date(x[e-1]);t.setDate(t.getDate()+1),t.toISOString().split("T")[0]===x[e]?d++:d=1,d>c&&(c=d)}return d>c&&(c=d),{total:a,currentStreak:n,longestStreak:c,activeDays:r}}s.d(t,{vZ:()=>a}),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:()=>M});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://loud-cool-pigeon.01b529f7.katapult.cloud",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 S(){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 M(){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(S,{})]})}},7272:()=>{}};var t=require("../webpack-runtime.js");t.C(e);var s=e=>t(t.s=e),a=t.X(0,[207],()=>s(4266));module.exports=a})(); |