Skip to content

Commit afba98d

Browse files
committed
style: streamline marketing homepage
1 parent e711c84 commit afba98d

8 files changed

Lines changed: 209 additions & 69 deletions

File tree

website/app/(home)/page.tsx

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ import { VerdictDemo } from '@/components/home/VerdictDemo';
33
import { FeatureBento } from '@/components/home/FeatureBento';
44
import { HowItWorks } from '@/components/home/HowItWorks';
55
import { ModelsPrivacy } from '@/components/home/ModelsPrivacy';
6-
import { ThemeShowcase } from '@/components/home/ThemeShowcase';
76
import { FinalCta } from '@/components/home/FinalCta';
87
import { SiteMotion } from '@/components/home/SiteMotion';
98
import './styles/home.css';
@@ -16,7 +15,6 @@ export default function HomePage() {
1615
<FeatureBento />
1716
<HowItWorks />
1817
<ModelsPrivacy />
19-
<ThemeShowcase />
2018
<FinalCta />
2119
<SiteMotion />
2220
</>

website/app/(home)/styles/home.css

Lines changed: 153 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -19,16 +19,146 @@
1919
align-items: flex-start;
2020
}
2121
.hero-aside {
22+
position: relative;
2223
display: flex;
2324
justify-content: center;
25+
width: min(100%, 560px);
26+
}
27+
.hero-proof {
28+
position: relative;
29+
z-index: 3;
30+
width: clamp(320px, 30vw, 410px);
31+
border-radius: 22px;
32+
overflow: hidden;
33+
background: color-mix(in srgb, var(--surface-2) 94%, white);
34+
border: 1px solid var(--border-2);
35+
box-shadow: var(--shadow-lg);
36+
}
37+
.hero-proof::after {
38+
content: '';
39+
position: absolute;
40+
inset: -30% -20% auto auto;
41+
width: 180px;
42+
height: 180px;
43+
border-radius: 999px;
44+
background: var(--accent-weak);
45+
filter: blur(16px);
46+
pointer-events: none;
47+
}
48+
.hero-proof-bar {
49+
position: relative;
50+
z-index: 1;
51+
display: flex;
52+
align-items: center;
53+
gap: 7px;
54+
padding: 12px 14px;
55+
border-bottom: 1px solid var(--border);
56+
background: color-mix(in srgb, var(--bg-2) 64%, transparent);
57+
}
58+
.proof-dot {
59+
width: 9px;
60+
height: 9px;
61+
border-radius: 50%;
62+
background: var(--border-2);
63+
}
64+
.proof-dot:first-child {
65+
background: var(--pop);
66+
}
67+
.proof-dot:nth-child(2) {
68+
background: var(--warm);
69+
}
70+
.proof-dot:nth-child(3) {
71+
background: var(--accent-3);
72+
}
73+
.proof-url {
74+
margin-left: auto;
75+
font: 700 10px/1 var(--mono);
76+
color: var(--muted);
77+
}
78+
.hero-proof-body {
79+
position: relative;
80+
z-index: 1;
81+
padding: 18px;
82+
}
83+
.proof-status {
84+
display: flex;
85+
justify-content: space-between;
86+
align-items: center;
87+
gap: 12px;
88+
}
89+
.proof-badge {
90+
display: inline-flex;
91+
align-items: center;
92+
border-radius: 999px;
93+
padding: 7px 10px;
94+
font: 800 11px/1 var(--mono);
95+
letter-spacing: 0.08em;
96+
text-transform: uppercase;
97+
color: var(--accent-3);
98+
background: color-mix(in srgb, var(--accent-3) 12%, transparent);
99+
border: 1px solid color-mix(in srgb, var(--accent-3) 34%, transparent);
100+
}
101+
.proof-score {
102+
font: 850 2.4rem/0.9 var(--font-display, var(--sans));
103+
letter-spacing: -0.04em;
104+
color: var(--accent);
105+
}
106+
.hero-proof h2 {
107+
margin: 14px 0 8px;
108+
font-size: clamp(1.18rem, 1rem + 0.6vw, 1.45rem);
109+
line-height: 1.05;
110+
letter-spacing: -0.03em;
111+
color: var(--text-strong);
112+
}
113+
.hero-proof p {
114+
margin: 0;
115+
font-size: 0.9rem;
116+
color: var(--text);
117+
}
118+
.proof-meter {
119+
height: 9px;
120+
margin: 16px 0 14px;
121+
overflow: hidden;
122+
border-radius: 999px;
123+
background: var(--bg-2);
124+
border: 1px solid var(--border);
125+
}
126+
.proof-meter span {
127+
display: block;
128+
height: 100%;
129+
border-radius: inherit;
130+
background: linear-gradient(90deg, var(--accent), var(--accent-3));
131+
}
132+
.proof-list {
133+
list-style: none;
134+
margin: 0;
135+
padding: 0;
136+
display: grid;
137+
gap: 7px;
138+
}
139+
.proof-list li {
140+
display: flex;
141+
justify-content: space-between;
142+
gap: 12px;
143+
padding: 8px 10px;
144+
border-radius: 10px;
145+
background: var(--bg-2);
146+
border: 1px solid var(--border);
147+
font: 700 11px/1 var(--mono);
148+
color: var(--text);
24149
}
25150

26-
/* Video mascot — framed "viewport", now a real focal asset on the right. */
151+
/* Video mascot — framed "viewport", now a supporting character beside product proof. */
27152
.hero-mascot {
153+
position: absolute;
154+
right: 0;
155+
top: 50%;
156+
z-index: 1;
28157
display: flex;
29158
flex-direction: column;
30159
align-items: center;
31160
gap: 16px;
161+
transform: translateY(-50%);
32162
}
33163
.hero-mascot-stage {
34164
position: relative;
@@ -131,7 +261,11 @@
131261
align-items: center;
132262
}
133263
.hero-aside {
134-
order: -1;
264+
width: 100%;
265+
margin-top: 22px;
266+
}
267+
.hero-proof {
268+
width: min(100%, 360px);
135269
}
136270
.hero-title,
137271
.hero-sub,
@@ -146,8 +280,11 @@
146280
margin-left: auto;
147281
margin-right: auto;
148282
}
283+
.hero-mascot {
284+
gap: 8px;
285+
}
149286
.hero-mascot-stage {
150-
width: clamp(190px, 52vw, 240px);
287+
width: clamp(170px, 46vw, 220px);
151288
}
152289
}
153290

@@ -859,7 +996,7 @@
859996
/* Pull the closing CTA up — the generic section top padding left it floating in
860997
a void between the showcase strip and the footer. */
861998
.site-root .final-cta {
862-
padding-top: clamp(36px, 3.5vw, 60px);
999+
padding: clamp(34px, 3vw, 56px) 0 0;
8631000
}
8641001
.final-cta-inner {
8651002
text-align: center;
@@ -874,8 +1011,18 @@
8741011
border: 1px solid var(--border-2);
8751012
box-shadow: var(--shadow-lg);
8761013
}
877-
.final-cta-inner .vee {
878-
color: var(--text-strong);
1014+
.final-cta-kicker {
1015+
display: inline-flex;
1016+
align-items: center;
1017+
justify-content: center;
1018+
border-radius: 999px;
1019+
padding: 8px 12px;
1020+
font: 800 11px/1 var(--mono);
1021+
letter-spacing: 0.14em;
1022+
text-transform: uppercase;
1023+
color: var(--accent);
1024+
background: var(--accent-weak);
1025+
border: 1px solid var(--accent-line);
8791026
}
8801027
.final-cta-title {
8811028
font-size: clamp(1.9rem, 1.2rem + 2.4vw, 3.1rem);

website/app/(home)/styles/shell.css

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -411,14 +411,14 @@
411411
/* ── Footer ──────────────────────────────────────────────────────────── */
412412
.site-footer {
413413
flex-shrink: 0;
414-
margin-top: clamp(36px, 3.5vw, 64px);
414+
margin-top: clamp(22px, 2.4vw, 38px);
415415
border-top: 1px solid var(--border);
416416
background: color-mix(in srgb, var(--surface) 50%, transparent);
417417
}
418418
.site-footer-inner {
419419
max-width: var(--site-max);
420420
margin: 0 auto;
421-
padding: 52px 24px 36px;
421+
padding: 42px 24px 30px;
422422
display: grid;
423423
grid-template-columns: 1.4fr 2fr;
424424
gap: 40px;
@@ -472,7 +472,7 @@
472472
.site-footer-base {
473473
max-width: var(--site-max);
474474
margin: 0 auto;
475-
padding: 18px 24px 46px;
475+
padding: 16px 24px 32px;
476476
display: flex;
477477
justify-content: space-between;
478478
flex-wrap: wrap;

website/components/home/FeatureBento.tsx

Lines changed: 19 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -11,65 +11,37 @@ type Feature = {
1111
const FEATURES: Feature[] = [
1212
{
1313
icon: 'verdict',
14-
title: 'Verdict-first',
15-
body: 'A fit call — strong / solid / care / risky — plus a one-line bottom line, before anything else. The decision, then the evidence.',
16-
tags: ['fit', 'bottom line', 'health'],
14+
title: 'Scan the dependency page',
15+
body: 'Open a GitHub, GitLab, npm, or PyPI page and get a verdict-first briefing: fit, risk, maintenance, license, and the bottom line.',
16+
tags: ['scan', 'verdict', 'risk'],
1717
span: 'wide',
1818
},
1919
{
20-
icon: 'search',
21-
title: 'Discovery & recommendations',
22-
body: 'Search GitHub from inside the extension, or let RepoLens recommend peers from the repos you’ve already adopted — same capabilities, same language, ones you haven’t seen yet.',
23-
tags: ['discover', 'recommend', 'github'],
20+
icon: 'layers',
21+
title: 'Read the evidence',
22+
body: 'Deep Dive explains the actual shape of the project — files, dependency graph, tests, lineage, and plain-English reasoning.',
23+
tags: ['evidence', 'deep dive'],
2424
span: 'wide',
2525
},
2626
{
2727
icon: 'rows',
28-
title: 'Library + triage',
29-
body: 'Every scan becomes a sortable, filterable grid. Decide with the keyboard, in flow.',
30-
tags: ['triage', 'keyboard'],
31-
span: 'normal',
32-
},
33-
{
34-
icon: 'kanban',
35-
title: 'Boards',
36-
body: 'Group the repos you’re weighing into collections you can compare and revisit.',
37-
tags: ['collections'],
38-
span: 'normal',
39-
},
40-
{
41-
icon: 'star',
42-
title: 'Evaluations',
43-
body: 'Score repos 1–5 against your own weighted rubric. The badge follows each card.',
44-
tags: ['rubric', 'scoring'],
28+
title: 'Triage the shortlist',
29+
body: 'Every scan lands in a sortable library with boards, evaluations, drift alerts, and keyboard-first decisions.',
30+
tags: ['library', 'boards'],
4531
span: 'normal',
4632
},
4733
{
4834
icon: 'bars',
49-
title: 'N-way compare',
50-
body: 'Put any 2–10 repos side-by-side in a structured matrix; export to CSV or Markdown.',
51-
tags: ['matrix', 'export'],
52-
span: 'normal',
53-
},
54-
{
55-
icon: 'layers',
56-
title: 'Deep Dive',
57-
body: 'Atoms → lineage → a Feynman-style explanation, optionally grounded in measured facts from the source: real file counts, the dependency graph, tests, and a secret scan.',
58-
tags: ['eli5', 'lineage', 'grounded'],
59-
span: 'wide',
60-
},
61-
{
62-
icon: 'clock',
63-
title: 'Drift alerts',
64-
body: 'A daily background check flags repos that have gone stale, so your shortlist stays honest.',
65-
tags: ['stale', 'daily'],
35+
title: 'Compare alternatives',
36+
body: 'Put candidates side-by-side, search GitHub for peers, and export the reasoning to CSV or Markdown.',
37+
tags: ['compare', 'export'],
6638
span: 'normal',
6739
},
6840
{
6941
icon: 'sliders',
70-
title: 'Bring any model',
71-
body: 'Your keys, 20+ providers, route each part of a scan to a different model — or run local Ollama for $0.',
72-
tags: ['byo-keys', 'local'],
42+
title: 'Keep it local/private',
43+
body: 'Bring your own keys, route scans across 20+ providers, or run local Ollama. No server account required.',
44+
tags: ['local', 'byo keys'],
7345
span: 'normal',
7446
},
7547
];
@@ -80,11 +52,11 @@ export function FeatureBento() {
8052
<div className="container">
8153
<span className="eyebrow">The case file</span>
8254
<h2 id="features-heading" className="section-title">
83-
A research tool, not a bookmark folder.
55+
The dependency decision workflow.
8456
</h2>
8557
<p className="section-note">
86-
Thirty-plus releases of compounding workflow — from the first verdict to a library that
87-
finds its own peers.
58+
Fewer moving parts up front: scan a package, read the evidence, compare alternatives,
59+
and keep the whole evaluation local/private.
8860
</p>
8961

9062
<div className="bento">

website/components/home/FinalCta.tsx

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,11 @@
11
import Link from 'next/link';
2-
import { Vee } from '@/components/site/Vee';
32
import { GITHUB_URL } from '@/components/site/SiteHeader';
43

54
export function FinalCta() {
65
return (
76
<section className="section final-cta reveal" aria-labelledby="cta-heading">
87
<div className="container final-cta-inner">
9-
<Vee state="strong" size={56} label="Vee, ready" />
8+
<span className="final-cta-kicker">Local/private by default</span>
109
<h2 id="cta-heading" className="final-cta-title">
1110
Stop trusting the README.
1211
</h2>
@@ -16,7 +15,7 @@ export function FinalCta() {
1615
</p>
1716
<div className="hero-cta">
1817
<Link href="/docs/getting-started" className="btn btn-primary">
19-
Install RepoLens
18+
Add to Chrome — local/private
2019
</Link>
2120
<a href={GITHUB_URL} target="_blank" rel="noopener noreferrer" className="btn btn-ghost">
2221
Star on GitHub →

0 commit comments

Comments
 (0)