// M04 — Public developer profile page const DevProfile = ({ id, setPage, openCase }) => { const d = TEAM.find(t => t.id === id) || TEAM[0]; const projects = PORTFOLIO.slice(0, 4); const posts = POSTS.filter((_, i) => i < 2); return (
{/* Hero */}
AVAILABLE · JUNE ⌖ {d.location.toUpperCase()}

{d.name}

{d.role}.

{d.bio} Available for full-stack engagements, technical leadership on complex builds, and one-off audits for teams who need a second pair of eyes before shipping.

{/* Avatar + quick stats */}
{/* Expertise */}
Expertise

What I work on.

{[ ...d.skills, 'System architecture','Performance','Code review','Mentoring' ].slice(0,8).map((s,i) => (
0{i+1}
{s}
))}
{/* Projects */}
Selected projects

Recent builds.

{d.projects} SHIPPED TOTAL
{projects.map(p => (
openCase?.(p)} className="clickable">
))}
{/* Articles */}
Writing

What I've written.

{posts.map((p, i) => (
0 ? '1px solid var(--line)' : 'none',background:'var(--bg-2)',transition:'background .2s ease'}} onMouseEnter={e=>e.currentTarget.style.background='#131314'} onMouseLeave={e=>e.currentTarget.style.background='var(--bg-2)'}> {p.date}
{p.category}
{p.title}
{p.excerpt}
{p.read} {Icon.arrow()}
))}
{/* Schedule */}
Availability

Book a slot directly.

I work in two-week sprints, Monday through Friday, with a one-hour overlap with US Pacific each day. Limited number of clients at a time — quality over volume.

● NEXT 12 WEEKS
{Array.from({length:12}).map((_,i) => { const status = i < 3 ? 'booked' : i < 6 ? 'partial' : 'open'; const colors = {booked:'#3a3a3a',partial:'#7c9bff',open:'var(--accent)'}; return (
W{20+i}
); })}
{[['Booked','#3a3a3a'],['Partial','#7c9bff'],['Open','var(--accent)']].map(([l,c]) => (
{l}
))}
{/* More team */}
MORE FROM THE STUDIO
{TEAM.filter(t => t.id !== d.id).map(t => ( ))}
); }; window.DevProfile = DevProfile;