Skip to content

Commit 11de7f5

Browse files
ux(user): drop tombstone + Certificate of Death heading on profile pages
Use SubpageShell (same as About/Legal) so /user/<name> shows just the username as the title, with the back arrow in the identical position to all other subpages. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
1 parent 62d0a72 commit 11de7f5

1 file changed

Lines changed: 23 additions & 57 deletions

File tree

src/app/user/[username]/page.tsx

Lines changed: 23 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,10 @@
22

33
import { useEffect, useState } from 'react'
44
import { useParams, useRouter } from 'next/navigation'
5-
import Link from 'next/link'
65
import type { UserRepoSummary } from '@/lib/types'
76
import UserDashboard from '@/components/UserDashboard'
87
import LoadingState from '@/components/LoadingState'
9-
import SiteFooter from '@/components/SiteFooter'
10-
import PageHero from '@/components/PageHero'
8+
import SubpageShell from '@/components/SubpageShell'
119

1210
const MONO = `var(--font-courier), system-ui, sans-serif`
1311

@@ -35,62 +33,30 @@ export default function UserPage() {
3533
}, [username])
3634

3735
return (
38-
<main className="page-shell-main">
39-
<div className="page-shell-inner">
40-
41-
<div style={{ paddingBottom: '4px', marginBottom: '2px' }}>
42-
<Link
43-
href="/"
44-
aria-label="Back to home"
45-
className="subpage-back-link alive-interactive"
46-
style={{
47-
fontFamily: MONO, display: 'inline-flex', alignItems: 'center', gap: '5px',
48-
color: '#9a9288', textDecoration: 'none', fontSize: '11px', fontWeight: 400,
49-
letterSpacing: '0.06em', WebkitTapHighlightColor: 'transparent', transition: 'color 0.15s',
50-
}}
51-
onMouseEnter={e => { (e.currentTarget as HTMLAnchorElement).style.color = '#1a1a1a' }}
52-
onMouseLeave={e => { (e.currentTarget as HTMLAnchorElement).style.color = '#9a9288' }}
36+
<SubpageShell
37+
title={`@${username}`}
38+
subtitle={
39+
<span style={{ fontFamily: MONO, fontSize: '12px', color: 'var(--c-muted)', letterSpacing: '0.04em' }}>
40+
dev graveyard
41+
</span>
42+
}
43+
microcopy={null}
44+
>
45+
{loading && <LoadingState />}
46+
47+
{error && (
48+
<div style={{ textAlign: 'center', padding: '40px 0' }}>
49+
<p style={{ fontFamily: MONO, fontSize: '13px', color: '#8B0000', marginBottom: '20px' }}>{error}</p>
50+
<button
51+
onClick={() => router.push('/')}
52+
style={{ fontFamily: MONO, fontSize: '13px', fontWeight: 700, background: 'none', border: 'none', textDecoration: 'underline', textUnderlineOffset: '3px', color: '#160A06', cursor: 'pointer', minHeight: '44px', padding: '10px 0' }}
5353
>
54-
home
55-
</Link>
54+
examine another subject
55+
</button>
5656
</div>
57+
)}
5758

58-
<PageHero
59-
title="Certificate of Death"
60-
subtitle={
61-
<span style={{
62-
display: 'block',
63-
fontFamily: MONO,
64-
fontSize: 'clamp(15px, 4vw, 19px)',
65-
fontWeight: 700,
66-
color: '#2a2218',
67-
letterSpacing: '0.02em',
68-
marginTop: '2px',
69-
}}>
70-
@{username}
71-
</span>
72-
}
73-
brandHref="/"
74-
/>
75-
76-
{loading && <LoadingState />}
77-
78-
{error && (
79-
<div style={{ textAlign: 'center', padding: '40px 0' }}>
80-
<p style={{ fontFamily: MONO, fontSize: '13px', color: '#8B0000', marginBottom: '20px' }}>{error}</p>
81-
<button
82-
onClick={() => router.push('/')}
83-
style={{ fontFamily: MONO, fontSize: '13px', fontWeight: 700, background: 'none', border: 'none', textDecoration: 'underline', textUnderlineOffset: '3px', color: '#160A06', cursor: 'pointer', minHeight: '44px', padding: '10px 0' }}
84-
>
85-
← examine another subject
86-
</button>
87-
</div>
88-
)}
89-
90-
{repos && !loading && <UserDashboard repos={repos} username={username} />}
91-
92-
<SiteFooter />
93-
</div>
94-
</main>
59+
{repos && !loading && <UserDashboard repos={repos} username={username} />}
60+
</SubpageShell>
9561
)
9662
}

0 commit comments

Comments
 (0)