Skip to content

Commit a8ef6c9

Browse files
style: unify About + Legal page layouts
Legal page now uses same structure as About — shared .record-card class, .record-label heading, .record-value body. Same border weight, padding, card rhythm, and email link treatment. Kept pages separate for SEO and bookmarkable URLs. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
1 parent 012d0a7 commit a8ef6c9

1 file changed

Lines changed: 59 additions & 82 deletions

File tree

src/app/legal/legalContent.tsx

Lines changed: 59 additions & 82 deletions
Original file line numberDiff line numberDiff line change
@@ -3,104 +3,81 @@
33
import type { ReactNode } from 'react'
44
import SubpageShell from '@/components/SubpageShell'
55

6-
const UI = `var(--font-courier), system-ui, sans-serif`
76
const MONO = `var(--font-courier), system-ui, sans-serif`
87

9-
function SectionTitle({ children, id }: { children: string; id: string }) {
10-
return (
11-
<div id={id} style={{ scrollMarginTop: '90px' }}>
12-
<p
13-
style={{
14-
fontFamily: MONO,
15-
fontSize: '10px',
16-
fontWeight: 700,
17-
letterSpacing: '0.14em',
18-
textTransform: 'uppercase',
19-
color: '#8a8278',
20-
margin: '0 0 8px 0',
21-
}}
22-
>
23-
{children}
24-
</p>
25-
</div>
26-
)
8+
type Section = {
9+
id: string
10+
heading: string
11+
body: ReactNode
2712
}
2813

29-
function Para({ children }: { children: ReactNode }) {
30-
return (
31-
<p
32-
style={{
33-
fontFamily: UI,
34-
fontSize: 'clamp(14px, 3.8vw, 15px)',
35-
color: '#4a4440',
36-
lineHeight: 1.75,
37-
margin: '0 0 12px 0',
38-
}}
39-
>
40-
{children}
41-
</p>
42-
)
43-
}
14+
const SECTIONS: Section[] = [
15+
{
16+
id: 'terms',
17+
heading: 'Terms of Use',
18+
body: 'Commitment Issues is a parody / entertainment tool. Generated "death certificates" are not legally valid documents. "Cause of death" labels are algorithmic and should not be treated as factual statements about a person or organization. By using the service you acknowledge we may display your submitted repo name publicly. Terms may update; continued use means acceptance.',
19+
},
20+
{
21+
id: 'data-sources',
22+
heading: 'Data Sources',
23+
body: "The tool analyzes public data from GitHub's public API — repository metadata, commit activity, archive status, open issues. We do not access private code, credentials, or anything not already publicly available on GitHub.",
24+
},
25+
{
26+
id: 'privacy',
27+
heading: 'Privacy',
28+
body: "No accounts. No logins. No passwords collected. When you submit a public GitHub URL or username we use it to fetch public data from GitHub. We store a small recently-buried list on the homepage (repo name, generated cause, score, analyzed timestamp). Nothing sensitive.",
29+
},
30+
{
31+
id: 'analytics',
32+
heading: 'Analytics',
33+
body: 'Privacy-friendly analytics only — aggregate counts, not personal profiles. You can avoid submitting private or sensitive URLs; this tool is intended for public GitHub data only.',
34+
},
35+
{
36+
id: 'contact',
37+
heading: 'Contact',
38+
body: 'For questions or requests: ',
39+
email: 'dot.systems@proton.me',
40+
} as Section & { email: string },
41+
]
4442

4543
export default function LegalContent() {
4644
return (
4745
<SubpageShell
4846
title="Legal"
4947
subtitle={
50-
<span style={{ fontFamily: MONO, fontSize: '12px', color: '#7a7268', letterSpacing: '0.04em' }}>
48+
<span style={{ fontFamily: MONO, fontSize: '12px', color: 'var(--c-muted)', letterSpacing: '0.04em' }}>
5149
Terms of use and privacy policy.
5250
</span>
5351
}
5452
microcopy={null}
55-
headerExtra={null}
5653
>
57-
<div
58-
className="ux-live-section"
59-
style={{
60-
width: '100%',
61-
display: 'flex',
62-
flexDirection: 'column',
63-
gap: '12px',
64-
paddingTop: '6px',
65-
}}
66-
>
67-
<div style={{ padding: '20px 18px', border: '2px solid #1a1a1a', background: '#EDE8E1' }}>
68-
<SectionTitle id="terms">Terms</SectionTitle>
69-
<Para>
70-
Commitment Issues is a parody / entertainment tool. Generated “death certificates” are not legally valid documents.
71-
</Para>
72-
<Para>
73-
The tool analyzes public data from GitHub’s public API (for example repository metadata and activity). “Cause of death”
74-
labels and text are algorithmic and should not be treated as factual statements about a person or organization.
75-
</Para>
76-
<Para>
77-
By using the service, you acknowledge that we may process the public repo URL or username you submit and display recent
78-
public “burials” on the homepage (repo name, generated cause, score, and timestamp). We may update these terms from time to
79-
time; continued use means acceptance.
80-
</Para>
81-
</div>
82-
83-
<div style={{ padding: '20px 18px', border: '2px solid #1a1a1a', background: '#EDE8E1' }}>
84-
<SectionTitle id="privacy">Privacy</SectionTitle>
85-
<Para>
86-
We don’t run accounts, logins, or collect passwords. When you submit a public GitHub URL or username, we use it to fetch
87-
public repository data from GitHub in order to generate results.
88-
</Para>
89-
<Para>
90-
We store a small “recently buried” list shown on the homepage (public repo name/full name plus generated fields like cause,
91-
score, and analyzed timestamp). This is not intended to contain private information.
92-
</Para>
93-
<Para>
94-
We also use privacy-friendly analytics to understand overall feature usage (aggregate counts, not personal profiles). You can
95-
always avoid submitting private or sensitive URLs—this tool is intended for public GitHub data only.
96-
</Para>
97-
<Para>
98-
Questions or requests: <a className="subpage-inline-mail" href="mailto:dot.systems@proton.me">dot.systems@proton.me</a>.
99-
</Para>
100-
</div>
101-
54+
<div style={{ display: 'flex', flexDirection: 'column', gap: '8px' }}>
55+
{SECTIONS.map((section) => {
56+
const email = (section as Section & { email?: string }).email
57+
return (
58+
<div
59+
key={section.id}
60+
id={section.id}
61+
className="record-card"
62+
style={{ border: '2px solid var(--c-border)' }}
63+
>
64+
<p className="record-label">{section.heading}</p>
65+
<p className="record-value" style={{ fontSize: 'clamp(14px, 3.8vw, 15px)', lineHeight: 1.75, color: 'var(--c-ink-2)' }}>
66+
{section.body}
67+
{email && (
68+
<a
69+
href={`mailto:${email}`}
70+
className="subpage-inline-mail"
71+
style={{ fontFamily: MONO }}
72+
>
73+
{email}
74+
</a>
75+
)}
76+
</p>
77+
</div>
78+
)
79+
})}
10280
</div>
10381
</SubpageShell>
10482
)
10583
}
106-

0 commit comments

Comments
 (0)