Skip to content

Commit 4cbafd7

Browse files
authored
Merge pull request #16117 from ethereum/2025-08-why-dev
init: A/B test 2025-08-why-dev
2 parents f86ffdf + 9144acd commit 4cbafd7

File tree

2 files changed

+158
-7
lines changed

2 files changed

+158
-7
lines changed

app/[locale]/developers/page.tsx

Lines changed: 116 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,12 @@
1+
import { Fragment } from "react"
2+
import { Check } from "lucide-react"
13
import { getTranslations } from "next-intl/server"
24

35
import type { Lang } from "@/lib/types"
46
import { ChildOnlyProp } from "@/lib/types"
57

8+
import ABTestWrapper from "@/components/AB/TestWrapper"
9+
import BigNumber from "@/components/BigNumber"
610
import { CopyButton } from "@/components/CopyToClipboard"
711
import FeedbackCard from "@/components/FeedbackCard"
812
import HubHero from "@/components/Hero/HubHero"
@@ -61,6 +65,56 @@ const Scroller = ({
6165
)
6266
}
6367

68+
const WhyGrid = () => {
69+
const items = [
70+
{
71+
heading: "Money you can program",
72+
description:
73+
"Write code that defines how value moves, when, and to whom. No banks, no intermediaries, just logic you define.",
74+
},
75+
{
76+
heading: "Future-proof skills",
77+
description:
78+
"Learn the building blocks of the next internet. The tech might evolve, but the principles of web3 are here to stay.",
79+
},
80+
{
81+
heading: "Censorship resistance",
82+
description:
83+
"Build projects and commerce that can't be silenced by governments, corporations, or algorithms. If it matters, it stays online.",
84+
},
85+
{
86+
heading: "Digital sovereignty",
87+
description:
88+
"Own your identity, assets, and creations online without relying on platforms that can delete you.",
89+
},
90+
]
91+
92+
return (
93+
<div
94+
className={cn(
95+
"rounded-4xl border border-accent-c/20",
96+
"grid grid-cols-1 gap-6 p-8 md:grid-cols-2 md:p-14",
97+
"bg-gradient-to-b from-accent-c/5 from-[60%] to-accent-c/15"
98+
)}
99+
>
100+
{items.map(({ heading, description }) => (
101+
<div className="flex gap-1.5" key={heading}>
102+
<div className="my-1 grid h-fit place-items-center rounded-full bg-success/20 p-1">
103+
<Check
104+
className="size-3 stroke-[4] text-success"
105+
strokeLinecap="square"
106+
strokeLinejoin="miter"
107+
/>
108+
</div>
109+
<div className="space-y-1">
110+
<h3 className="text-lg">{heading}</h3>
111+
<p className="text-body-medium">{description}</p>
112+
</div>
113+
</div>
114+
))}
115+
</div>
116+
)
117+
}
64118
const DevelopersPage = async ({
65119
params,
66120
}: {
@@ -118,6 +172,68 @@ const DevelopersPage = async ({
118172
</div>
119173
</Section>
120174

175+
<ABTestWrapper
176+
testKey="2025-08-why-dev"
177+
variants={[
178+
<Fragment key="empty" />,
179+
<Section
180+
key="why-without-metrics"
181+
id="why"
182+
className={cn(
183+
"grid grid-cols-1 gap-6 md:gap-10 lg:grid-cols-2",
184+
"-mx-8 w-screen max-w-screen-2xl items-center bg-background-highlight px-8 py-10 md:py-20"
185+
)}
186+
>
187+
<div className="space-y-4">
188+
<h2>Create the internet you want to live in</h2>
189+
<p>
190+
Ethereum is where you turn ideas into un-censorable systems
191+
that run anywhere, forever. Build apps, money, and communities
192+
that answer to no one but their users.
193+
</p>
194+
</div>
195+
<WhyGrid />
196+
</Section>,
197+
<Section
198+
key="why-with-metrics"
199+
id="why"
200+
className={cn(
201+
"grid grid-cols-1 gap-6 md:gap-10 lg:grid-cols-2",
202+
"-mx-8 w-screen max-w-screen-2xl items-center bg-background-highlight px-8 py-10 md:py-20"
203+
)}
204+
>
205+
<div className="space-y-4">
206+
<h2>Get paid well. Stay remote. Build the future.</h2>
207+
<p>
208+
Over half of blockchain careers are remote-first with some
209+
estimates putting the number as high as 70%.
210+
</p>
211+
<div className="flex flex-wrap gap-x-6 md:gap-x-8">
212+
<BigNumber
213+
variant="light"
214+
value="$93 - 169K"
215+
sourceName="Glassdoor"
216+
sourceUrl="https://www.glassdoor.com/Salaries/developer-salary-SRCH_KO0%2C9.htm"
217+
lastUpdated="2025-04-10T12:00:00Z"
218+
>
219+
Avg developer salary
220+
</BigNumber>
221+
<BigNumber
222+
variant="light"
223+
value="$80 - 255K"
224+
sourceName="Web3 Jobs"
225+
sourceUrl="https://web3.career/web3-salaries/united-states"
226+
lastUpdated="2025-08-01T12:00:00Z"
227+
>
228+
Avg salary in blockchain industry
229+
</BigNumber>
230+
</div>
231+
</div>
232+
<WhyGrid />
233+
</Section>,
234+
]}
235+
/>
236+
121237
<Section
122238
id="resources"
123239
className={cn(

src/components/BigNumber/index.tsx

Lines changed: 42 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import { type ReactNode } from "react"
2+
import { cva, type VariantProps } from "class-variance-authority"
23
import { Info } from "lucide-react"
34
import { getLocale, getTranslations } from "next-intl/server"
45

@@ -15,7 +16,43 @@ type BigNumberProps = {
1516
sourceUrl?: string
1617
lastUpdated?: number | string
1718
className?: string
18-
}
19+
} & VariantProps<typeof bigNumberVariants>
20+
21+
const bigNumberVariants = cva("flex shrink-0 flex-col self-stretch py-8", {
22+
variants: {
23+
variant: {
24+
default: "flex-1",
25+
light: "",
26+
},
27+
},
28+
defaultVariants: {
29+
variant: "default",
30+
},
31+
})
32+
33+
const valueVariants = cva("font-bold text-4xl", {
34+
variants: {
35+
variant: {
36+
default: "sm:text-5xl",
37+
light: "",
38+
},
39+
},
40+
defaultVariants: {
41+
variant: "default",
42+
},
43+
})
44+
45+
const childrenVariants = cva("text-sm", {
46+
variants: {
47+
variant: {
48+
default: "",
49+
light: "text-body-medium",
50+
},
51+
},
52+
defaultVariants: {
53+
variant: "default",
54+
},
55+
})
1956

2057
const BigNumber = async ({
2158
children,
@@ -24,6 +61,7 @@ const BigNumber = async ({
2461
sourceUrl,
2562
lastUpdated,
2663
className,
64+
variant,
2765
}: BigNumberProps) => {
2866
const locale = await getLocale()
2967
const t = await getTranslations({ locale, namespace: "common" })
@@ -37,17 +75,14 @@ const BigNumber = async ({
3775
return (
3876
<div
3977
data-label="big-number"
40-
className={cn(
41-
"flex flex-1 shrink-0 flex-col self-stretch py-8",
42-
className
43-
)}
78+
className={cn(bigNumberVariants({ variant }), className)}
4479
>
4580
{value ? (
4681
<>
47-
<div data-label="value" className="text-4xl font-bold sm:text-5xl">
82+
<div data-label="value" className={valueVariants({ variant })}>
4883
{value}
4984
</div>
50-
<div className="text-sm">
85+
<div className={childrenVariants({ variant })}>
5186
{children}
5287
{sourceName && sourceUrl && (
5388
<>

0 commit comments

Comments
 (0)