Skip to content

Commit 1424858

Browse files
authored
Merge pull request #15600 from ethereum/staging
Deploy v10.5.0
2 parents 2bb6ec2 + 4634b65 commit 1424858

File tree

124 files changed

+20555
-16452
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

124 files changed

+20555
-16452
lines changed

.all-contributorsrc

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12730,7 +12730,10 @@
1273012730
"name": "João Paulo Hotequil",
1273112731
"avatar_url": "https://avatars.githubusercontent.com/u/46814712?v=4",
1273212732
"profile": "https://github.com/hotequil",
12733-
"contributions": ["code", "translation"]
12733+
"contributions": [
12734+
"code",
12735+
"translation"
12736+
]
1273412737
},
1273512738
{
1273612739
"login": "microHoffman",
@@ -12749,6 +12752,24 @@
1274912752
"contributions": [
1275012753
"bug"
1275112754
]
12755+
},
12756+
{
12757+
"login": "aolson078",
12758+
"name": "Alex Olson",
12759+
"avatar_url": "https://avatars.githubusercontent.com/u/69769089?v=4",
12760+
"profile": "https://github.com/aolson078",
12761+
"contributions": [
12762+
"bug"
12763+
]
12764+
},
12765+
{
12766+
"login": "adminsuci",
12767+
"name": "SUCI - Blockchain Hub Team",
12768+
"avatar_url": "https://avatars.githubusercontent.com/u/155696196?v=4",
12769+
"profile": "https://www.suci.io/",
12770+
"contributions": [
12771+
"maintenance"
12772+
]
1275212773
}
1275312774
],
1275412775
"contributorsPerLine": 7,

.github/labeler.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
"dependencies 📦":
1313
- package.json
1414
- yarn.lock
15+
- pnpm-lock.yaml
1516

1617
"config ⚙️":
1718
- i18n.config.json

.github/workflows/chromatic.yml

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,9 +31,18 @@ jobs:
3131
uses: actions/checkout@v2
3232
with:
3333
fetch-depth: 0 # 👈 Required to retrieve git history
34+
- name: Setup pnpm
35+
uses: pnpm/action-setup@v2
36+
with:
37+
version: 8
38+
- name: Setup Node.js
39+
uses: actions/setup-node@v3
40+
with:
41+
node-version: 20
42+
cache: 'pnpm'
3443
- name: Install deps
3544
# 👇 Install dependencies with the same package manager used in the project (replace it as needed), e.g. yarn, npm, pnpm
36-
run: yarn
45+
run: pnpm install
3746
- name: Publish to Chromatic
3847
# 👇 Adds Chromatic as a step in the workflow
3948
uses: chromaui/action@v1

.gitignore

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
/node_modules
55
/.pnp
66
.pnp.js
7+
.pnpm-store/
78

89
# testing
910
/coverage
@@ -23,6 +24,9 @@
2324
npm-debug.log*
2425
yarn-debug.log*
2526
yarn-error.log*
27+
.pnpm-debug.log
28+
29+
pnpm-lock.yaml.bak
2630

2731
# local env files
2832
.env*.local
@@ -60,4 +64,3 @@ src/data/crowdin/bucketsAwaitingReviewReport.csv
6064
# Storybook
6165
build-storybook.log
6266
storybook-static
63-

.prettierignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,3 +4,4 @@ yarn.lock
44
package-lock.json
55
public
66
build
7+
pnpm-lock.yaml

.storybook/main.ts

Lines changed: 3 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -4,17 +4,10 @@ import TsconfigPathsPlugin from "tsconfig-paths-webpack-plugin"
44
import type { StorybookConfig } from "@storybook/nextjs"
55

66
/**
7-
* Note regarding package.json settings related to Storybook:
8-
*
9-
* There is a resolutions option set for the package `jackspeak`. This is related to a
10-
* workaround provided to make sure storybook ( as of v7.5.2) works correctly with
11-
* Yarn v1
12-
*
13-
* Reference: https://github.com/storybookjs/storybook/issues/22431#issuecomment-1630086092
14-
*
15-
* The primary recommendation is to upgrade to Yarn 3 if possible
7+
* Storybook configuration for the ethereum.org website
8+
* This loads our components as stories and configures the necessary
9+
* webpack settings for proper rendering
1610
*/
17-
1811
const config: StorybookConfig = {
1912
stories: [
2013
"../src/components/**/*.stories.{ts,tsx}",

.storybook/modes.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import pickBy from "lodash/pickBy"
1+
import { pickBy } from "lodash"
22

33
import { baseLocales } from "./next-intl"
44
import { breakpointSet } from "./preview"

README.md

Lines changed: 45 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -70,14 +70,52 @@ git fetch upstream
7070
git merge upstream/dev
7171
```
7272

73-
2. Install dependencies
73+
2. Prepare package manager
7474

75-
We recommend using a node manager to use multiple node versions in your system. We use [Volta](https://volta.sh/). In case you don't use a manager or you use `nvm`, you can check the currently supported versions under the `"volta"` section on our `package.json` file.
75+
We've upgraded to pnpm to speed up development experience and improve dependency management.
76+
77+
We recommend using a [node manager such as nvm](https://github.com/nvm-sh/nvm?tab=readme-ov-file#intro) to use multiple node versions in your system. We have a `.nvmrc` file that declares the canonical Node.js version for this project. If you use `nvm`, you can run `nvm use` to automatically switch to the correct version.
78+
79+
**Use current node version (recommended)**
80+
81+
```sh
82+
nvm use
83+
```
84+
85+
Corepack is a tool that allows you to use package managers like pnpm, yarn, and npm without needing to install them globally. It ensures that the correct version of the package manager is used for your project.
86+
87+
**Enable corepack (recommended):**
88+
89+
```sh
90+
corepack enable
91+
```
92+
93+
3. Install dependencies
94+
95+
```sh
96+
pnpm install
97+
```
98+
99+
#### Migrating from yarn to pnpm
100+
101+
If you previously used `yarn` to install dependencies, you can safely migrate to `pnpm` by running the following commands:
76102

77103
```sh
78-
yarn
104+
# Remove yarn.lock file
105+
rm yarn.lock
106+
107+
# Remove node_modules directory
108+
rm -rf node_modules
109+
110+
# Clean yarn cache (optional)
111+
yarn cache clean
112+
113+
# Install dependencies with pnpm
114+
pnpm install
79115
```
80116

117+
This will cleanly switch the project working directory from yarn to pnpm without leaving any residual yarn configuration.
118+
81119
### 4. Make awesome changes!
82120

83121
1. Create new branch for your changes
@@ -89,7 +127,7 @@ git checkout -b new_branch_name
89127
2. Start developing!
90128

91129
```sh
92-
yarn dev
130+
pnpm dev
93131
```
94132

95133
- Open this directory in your favorite text editor / IDE, and see your changes live by visiting `localhost:3000` from your browser
@@ -1947,8 +1985,11 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/d
19471985
</tr>
19481986
<tr>
19491987
<td align="center" valign="top" width="14.28%"><a href="https://github.com/JJOptimist"><img src="https://avatars.githubusercontent.com/u/86833563?v=4?s=100" width="100px;" alt="JJOptimist"/><br /><sub><b>JJOptimist</b></sub></a><br /><a href="https://github.com/ethereum/ethereum-org-website/issues?q=author%3AJJOptimist" title="Bug reports">🐛</a></td>
1988+
<td align="center" valign="top" width="14.28%"><a href="https://github.com/hotequil"><img src="https://avatars.githubusercontent.com/u/46814712?v=4?s=100" width="100px;" alt="João Paulo Hotequil"/><br /><sub><b>João Paulo Hotequil</b></sub></a><br /><a href="https://github.com/ethereum/ethereum-org-website/commits?author=hotequil" title="Code">💻</a> <a href="#translation-hotequil" title="Translation">🌍</a></td>
19501989
<td align="center" valign="top" width="14.28%"><a href="http://pwn.xyz"><img src="https://avatars.githubusercontent.com/u/61500778?v=4?s=100" width="100px;" alt="microHoffman"/><br /><sub><b>microHoffman</b></sub></a><br /><a href="https://github.com/ethereum/ethereum-org-website/issues?q=author%3AmicroHoffman" title="Bug reports">🐛</a></td>
19511990
<td align="center" valign="top" width="14.28%"><a href="https://github.com/smithrashell"><img src="https://avatars.githubusercontent.com/u/36465023?v=4?s=100" width="100px;" alt="Rashell Smith"/><br /><sub><b>Rashell Smith</b></sub></a><br /><a href="https://github.com/ethereum/ethereum-org-website/issues?q=author%3Asmithrashell" title="Bug reports">🐛</a></td>
1991+
<td align="center" valign="top" width="14.28%"><a href="https://github.com/aolson078"><img src="https://avatars.githubusercontent.com/u/69769089?v=4?s=100" width="100px;" alt="Alex Olson"/><br /><sub><b>Alex Olson</b></sub></a><br /><a href="https://github.com/ethereum/ethereum-org-website/issues?q=author%3Aaolson078" title="Bug reports">🐛</a></td>
1992+
<td align="center" valign="top" width="14.28%"><a href="https://www.suci.io/"><img src="https://avatars.githubusercontent.com/u/155696196?v=4?s=100" width="100px;" alt="SUCI - Blockchain Hub Team"/><br /><sub><b>SUCI - Blockchain Hub Team</b></sub></a><br /><a href="#maintenance-adminsuci" title="Maintenance">🚧</a></td>
19521993
</tr>
19531994
</tbody>
19541995
</table>
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
"use client"
2+
3+
import { Image } from "@/components/Image"
4+
import { ButtonLink } from "@/components/ui/buttons/Button"
5+
import {
6+
Swiper,
7+
SwiperContainer,
8+
SwiperNavigation,
9+
SwiperSlide,
10+
} from "@/components/ui/swiper"
11+
12+
import { cn } from "@/lib/utils/cn"
13+
14+
import { adoptionCards, adoptionStyles } from "./data"
15+
16+
const AdoptionSwiper = () => {
17+
return (
18+
<div className="flex flex-1 flex-col gap-6 md:hidden">
19+
<SwiperContainer className="mx-auto w-full max-w-[550px]">
20+
<Swiper>
21+
{adoptionCards.map((card, index) => (
22+
<SwiperSlide key={card.title}>
23+
<div
24+
className={cn("h-full rounded-2xl p-8", adoptionStyles[index])}
25+
>
26+
<Image
27+
src={card.image}
28+
alt={card.title}
29+
className="mx-auto mb-4 h-36 object-contain"
30+
/>
31+
<h3 className="mb-4 text-2xl font-bold">{card.title}</h3>
32+
{card.description}
33+
<ButtonLink href={card.href} hideArrow variant="outline">
34+
{card.linkText}
35+
</ButtonLink>
36+
</div>
37+
</SwiperSlide>
38+
))}
39+
<SwiperNavigation />
40+
</Swiper>
41+
</SwiperContainer>
42+
</div>
43+
)
44+
}
45+
46+
export default AdoptionSwiper
Lines changed: 106 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,106 @@
1+
"use client"
2+
3+
import { useEffect, useState } from "react"
4+
5+
import { cn } from "@/lib/utils/cn"
6+
7+
interface CountDownProps {
8+
className?: string
9+
}
10+
11+
const CountDown = ({ className }: CountDownProps) => {
12+
const [timeLeft, setTimeLeft] = useState({
13+
days: 0,
14+
hours: 0,
15+
minutes: 0,
16+
seconds: 0,
17+
})
18+
const [isExpired, setIsExpired] = useState(false)
19+
20+
useEffect(() => {
21+
const targetDate = new Date("2025-07-30T15:44:00Z")
22+
23+
const calculateTimeLeft = () => {
24+
const now = new Date()
25+
const difference = targetDate.getTime() - now.getTime()
26+
27+
if (difference > 0) {
28+
setIsExpired(false)
29+
setTimeLeft({
30+
days: Math.floor(difference / (1000 * 60 * 60 * 24)),
31+
hours: Math.floor((difference / (1000 * 60 * 60)) % 24),
32+
minutes: Math.floor((difference / 1000 / 60) % 60),
33+
seconds: Math.floor((difference / 1000) % 60),
34+
})
35+
} else {
36+
setIsExpired(true)
37+
}
38+
}
39+
40+
calculateTimeLeft()
41+
42+
// Update every second
43+
const timer = setInterval(calculateTimeLeft, 1000)
44+
45+
return () => clearInterval(timer)
46+
}, [])
47+
48+
if (isExpired) {
49+
return (
50+
<div className="text-center text-2xl font-bold">
51+
Ethereum is 10 years old! 🚀
52+
</div>
53+
)
54+
}
55+
56+
return (
57+
<div className="flex items-center justify-center gap-10">
58+
<div
59+
className={cn(
60+
"flex h-20 w-20 flex-col items-center justify-center rounded-2xl border text-center [box-shadow:-2.372px_2.372px_14.234px_1.186px_rgba(52,43,64,0.02),-18.979px_18.979px_14.234px_-3.559px_rgba(52,43,64,0.02),-37.958px_37.958px_28.469px_-7.117px_rgba(52,43,64,0.02),-47.448px_47.448px_47.448px_-14.234px_rgba(88,55,131,0.04)] dark:bg-[#171717]",
61+
className
62+
)}
63+
>
64+
<div className="font-mono text-4xl font-bold text-accent-a">
65+
{timeLeft.days}
66+
</div>
67+
<div className="font-mono text-xs text-accent-a">days</div>
68+
</div>
69+
<div
70+
className={cn(
71+
"flex h-20 w-20 flex-col items-center justify-center rounded-2xl border text-center [box-shadow:-2.372px_2.372px_14.234px_1.186px_rgba(52,43,64,0.02),-18.979px_18.979px_14.234px_-3.559px_rgba(52,43,64,0.02),-37.958px_37.958px_28.469px_-7.117px_rgba(52,43,64,0.02),-47.448px_47.448px_47.448px_-14.234px_rgba(88,55,131,0.04)] dark:bg-[#171717]",
72+
className
73+
)}
74+
>
75+
<div className="font-mono text-4xl font-bold text-accent-a">
76+
{timeLeft.hours}
77+
</div>
78+
<div className="font-mono text-xs text-accent-a">hours</div>
79+
</div>
80+
<div
81+
className={cn(
82+
"flex h-20 w-20 flex-col items-center justify-center rounded-2xl border text-center [box-shadow:-2.372px_2.372px_14.234px_1.186px_rgba(52,43,64,0.02),-18.979px_18.979px_14.234px_-3.559px_rgba(52,43,64,0.02),-37.958px_37.958px_28.469px_-7.117px_rgba(52,43,64,0.02),-47.448px_47.448px_47.448px_-14.234px_rgba(88,55,131,0.04)] dark:bg-[#171717]",
83+
className
84+
)}
85+
>
86+
<div className="font-mono text-4xl font-bold text-accent-a">
87+
{timeLeft.minutes}
88+
</div>
89+
<div className="font-mono text-xs text-accent-a">minutes</div>
90+
</div>
91+
<div
92+
className={cn(
93+
"hidden h-20 w-20 flex-col items-center justify-center rounded-2xl border text-center [box-shadow:-2.372px_2.372px_14.234px_1.186px_rgba(52,43,64,0.02),-18.979px_18.979px_14.234px_-3.559px_rgba(52,43,64,0.02),-37.958px_37.958px_28.469px_-7.117px_rgba(52,43,64,0.02),-47.448px_47.448px_47.448px_-14.234px_rgba(88,55,131,0.04)] lg:flex dark:bg-[#171717]",
94+
className
95+
)}
96+
>
97+
<div className="font-mono text-4xl font-bold text-accent-a">
98+
{timeLeft.seconds}
99+
</div>
100+
<div className="font-mono text-xs text-accent-a">seconds</div>
101+
</div>
102+
</div>
103+
)
104+
}
105+
106+
export default CountDown

0 commit comments

Comments
 (0)