Skip to content

Commit 42e6555

Browse files
authored
Merge pull request #15680 from ethereum/lucide
feat: migrate to Lucide icons
2 parents 771c9d3 + 4cf9601 commit 42e6555

File tree

395 files changed

+1469
-4054
lines changed

Some content is hidden

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

395 files changed

+1469
-4054
lines changed

.eslintrc.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424
"^(assert|buffer|child_process|cluster|console|constants|crypto|dgram|dns|domain|events|fs|http|https|module|net|os|path|punycode|querystring|readline|repl|stream|string_decoder|sys|timers|tls|tty|url|util|vm|zlib|freelist|v8|process|async_hooks|http2|perf_hooks)(/.*|$)"
2525
],
2626
// Packages. `react` related packages come first.
27-
// Also, put `react-icons` in sorting order not with `react`
27+
// Also, put `react-*` in sorting order not with `react`
2828
["^react(?!-.)$", "^\\w", "^@\\w"],
2929
// From the `types` directory.
3030
["^@/lib/types", "^@/lib/interfaces"],

CLAUDE.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -179,7 +179,7 @@ pnpm events-import # Import community events
179179
- `@radix-ui/*` - Accessible component primitives
180180
- `tailwind-variants` - Component variant patterns
181181
- `framer-motion` - Animation library
182-
- `react-icons` - Icon library
182+
- `lucide-react` - Icon library
183183

184184
### Content & Data
185185

app/[locale]/10years/_components/Stories.tsx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
"use client"
22

33
import { useState } from "react"
4-
import { FaXTwitter } from "react-icons/fa6"
54

5+
import Twitter from "@/components/icons/twitter.svg"
66
import { Button, ButtonLink } from "@/components/ui/buttons/Button"
77

88
import { cn } from "@/lib/utils/cn"
@@ -96,7 +96,7 @@ const Stories = ({ stories }: StoriesProps) => {
9696
hideArrow
9797
className="text-sm"
9898
>
99-
<FaXTwitter className="h-5 w-5 text-body" />
99+
<Twitter className="text-xl text-body" />
100100
</ButtonLink>
101101
</div>
102102
)}
@@ -175,7 +175,7 @@ const Stories = ({ stories }: StoriesProps) => {
175175
hideArrow
176176
className="text-sm"
177177
>
178-
<FaXTwitter className="h-5 w-5 text-body" />
178+
<Twitter className="h-5 w-5 text-body" />
179179
</ButtonLink>
180180
</div>
181181
)}

app/[locale]/10years/page.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -348,7 +348,7 @@ const Page = async ({ params }: { params: Promise<{ locale: Lang }> }) => {
348348
/>
349349
<h3>{t("page-10-year-ideas-title")}</h3>
350350
<p>{t("page-10-year-ideas-description")}</p>
351-
<ButtonLink href="mailto:[email protected]" hideArrow>
351+
<ButtonLink href="mailto:[email protected]">
352352
{t("page-10-year-ideas-cta")}
353353
</ButtonLink>
354354
</div>

app/[locale]/developers/tutorials/_components/modal.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
"use client"
22

33
import React, { useState } from "react"
4-
import { FaGithub } from "react-icons/fa"
54

5+
import Github from "@/components/icons/github.svg"
66
import Translation from "@/components/Translation"
77
import { Button } from "@/components/ui/buttons/Button"
88
import { ButtonLink } from "@/components/ui/buttons/Button"
@@ -46,7 +46,7 @@ const TutorialSubmitModal = ({
4646
variant="outline"
4747
href="https://github.com/ethereum/ethereum-org-website/issues/new?assignees=&labels=Type%3A+Feature&template=suggest_tutorial.yaml&title="
4848
>
49-
<FaGithub />
49+
<Github />
5050
<Translation id="page-developers-tutorials:page-tutorial-raise-issue-btn" />
5151
</ButtonLink>
5252
</Flex>

app/[locale]/enterprise/page.tsx

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
1+
import { Check } from "lucide-react"
12
import dynamic from "next/dynamic"
23
import { getTranslations } from "next-intl/server"
34

45
import type { Lang, StatsBoxMetric } from "@/lib/types"
56

67
import ActivityStats from "@/components/ActivityStats"
78
import { HubHero } from "@/components/Hero"
8-
import Checkmark from "@/components/icons/checkmark.svg"
99
import Adidas from "@/components/icons/enterprise/adidas.svg"
1010
import Azure from "@/components/icons/enterprise/azure.svg"
1111
import BancoSantander from "@/components/icons/enterprise/banco-santander.svg"
@@ -465,7 +465,13 @@ const Page = async ({ params }: { params: { locale: Lang } }) => {
465465
key={header}
466466
className="grid h-fit grid-cols-[auto,1fr] gap-x-3"
467467
>
468-
<Checkmark className="text-2xl text-success" />
468+
<div className="grid size-6 place-items-center rounded-full bg-success/25 text-2xl text-success">
469+
<Check
470+
strokeLinecap="square"
471+
strokeLinejoin="miter"
472+
className="-mb-0.5 size-3.5 stroke-[5]"
473+
/>
474+
</div>
469475
<h3 className="h-fit text-lg font-bold">{header}</h3>
470476
<p className="col-start-2 text-body-medium">{content}</p>
471477
</div>

app/[locale]/page.tsx

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,6 @@ import { Fragment } from "react"
22
import dynamic from "next/dynamic"
33
import { notFound } from "next/navigation"
44
import { getTranslations, setRequestLocale } from "next-intl/server"
5-
import { FaDiscord, FaGithub } from "react-icons/fa6"
6-
import { FaXTwitter } from "react-icons/fa6"
75

86
import type {
97
AllHomepageActivityData,
@@ -26,11 +24,14 @@ import BlockHeap from "@/components/icons/block-heap.svg"
2624
import BuildAppsIcon from "@/components/icons/build-apps.svg"
2725
import Calendar from "@/components/icons/calendar.svg"
2826
import CalendarAdd from "@/components/icons/calendar-add.svg"
27+
import Discord from "@/components/icons/discord.svg"
2928
import EthGlyphIcon from "@/components/icons/eth-glyph.svg"
3029
import EthTokenIcon from "@/components/icons/eth-token.svg"
3130
import PickWalletIcon from "@/components/icons/eth-wallet.svg"
31+
import Github from "@/components/icons/github.svg"
3232
import TryAppsIcon from "@/components/icons/phone-homescreen.svg"
3333
import RoadmapSign from "@/components/icons/roadmap-sign.svg"
34+
import Twitter from "@/components/icons/twitter.svg"
3435
import Whitepaper from "@/components/icons/whitepaper.svg"
3536
import { Image } from "@/components/Image"
3637
import CardImage from "@/components/Image/CardImage"
@@ -376,23 +377,23 @@ const Page = async ({ params }: { params: Promise<{ locale: Lang }> }) => {
376377
eventName: "contribute",
377378
},
378379
{
379-
Svg: FaGithub,
380+
Svg: Github,
380381
label: "GitHub",
381382
href: GITHUB_REPO_URL,
382383
className: "text-accent-a hover:text-accent-a-hover",
383384
description: t("page-index-join-action-github-description"),
384385
eventName: "GitHub",
385386
},
386387
{
387-
Svg: FaDiscord,
388+
Svg: Discord,
388389
label: "Discord",
389390
href: "/discord/",
390391
className: "text-primary hover:text-primary-hover",
391392
description: t("page-index-join-action-discord-description"),
392393
eventName: "Discord",
393394
},
394395
{
395-
Svg: FaXTwitter,
396+
Svg: Twitter,
396397
label: "X",
397398
href: "https://x.com/EthDotOrg",
398399
className: "text-accent-b hover:text-accent-b-hover",
@@ -750,7 +751,7 @@ const Page = async ({ params }: { params: Promise<{ locale: Lang }> }) => {
750751
eventName: "discord",
751752
}}
752753
>
753-
<FaDiscord />
754+
<Discord />
754755
</ButtonLink>
755756
<ButtonLink
756757
href={GITHUB_REPO_URL}
@@ -764,7 +765,7 @@ const Page = async ({ params }: { params: Promise<{ locale: Lang }> }) => {
764765
eventName: "github",
765766
}}
766767
>
767-
<FaGithub />
768+
<Github />
768769
</ButtonLink>
769770
</div>
770771
</div>

app/[locale]/quizzes/_components/quizzes.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
"use client"
22

33
import { useMemo, useState } from "react"
4-
import { FaGithub } from "react-icons/fa"
54

65
import { QuizKey, QuizStatus } from "@/lib/types"
76

87
import FeedbackCard from "@/components/FeedbackCard"
98
import { HubHero } from "@/components/Hero"
9+
import Github from "@/components/icons/github.svg"
1010
import MainArticle from "@/components/MainArticle"
1111
import QuizWidget from "@/components/Quiz/QuizWidget"
1212
import QuizzesList from "@/components/Quiz/QuizzesList"
@@ -99,7 +99,7 @@ const QuizzesPage = () => {
9999
onClick={handleGHAdd}
100100
>
101101
<HStack className="gap-0">
102-
<FaGithub className="me-2 size-6 text-body" />
102+
<Github className="me-2 text-2xl text-body" />
103103
{t("add-quiz")}
104104
</HStack>
105105
</ButtonLink>

app/[locale]/resources/page.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
import { getTranslations } from "next-intl/server"
2-
import { FaGithub } from "react-icons/fa6"
32

43
import { Lang } from "@/lib/types"
54

65
import BannerNotification from "@/components/Banners/BannerNotification"
76
import { HubHero } from "@/components/Hero"
7+
import Github from "@/components/icons/github.svg"
88
import StackIcon from "@/components/icons/stack.svg"
99
import MainArticle from "@/components/MainArticle"
1010
import Translation from "@/components/Translation"
@@ -187,7 +187,7 @@ const Page = async ({ params }: { params: Promise<{ locale: Lang }> }) => {
187187
eventName: "Ethereum.org Github Bug Report",
188188
}}
189189
>
190-
<FaGithub /> {t("page-resources-found-bug")}
190+
<Github /> {t("page-resources-found-bug")}
191191
</ButtonLink>
192192
</div>
193193
</Stack>

app/[locale]/roadmap/_components/roadmap.tsx

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ const RoadmapPage = () => {
4343
const changesComingItems = [
4444
{
4545
title: "Cheaper transactions",
46-
icon: <CheaperTransactionsIcon />,
46+
icon: <CheaperTransactionsIcon className="h-auto w-12" />,
4747
description:
4848
"Rollups are too expensive and rely on centralized components, causing users to place too much trust in their operators. The roadmap includes fixes for both of these problems.",
4949
button: {
@@ -53,7 +53,7 @@ const RoadmapPage = () => {
5353
},
5454
{
5555
title: "Extra security",
56-
icon: <ExtraSecurityIcon />,
56+
icon: <ExtraSecurityIcon className="h-auto w-12" />,
5757
description:
5858
"Ethereum is already very secure but it can be made even stronger, ready to withstand all kinds of attack far into the future.",
5959
button: {
@@ -63,7 +63,7 @@ const RoadmapPage = () => {
6363
},
6464
{
6565
title: "Better user experience",
66-
icon: <BetterUserExperienceIcon />,
66+
icon: <BetterUserExperienceIcon className="h-auto w-12" />,
6767
description:
6868
"More support for smart contract wallets and light-weight nodes will make using Ethereum simpler and safer.",
6969
button: {
@@ -73,7 +73,7 @@ const RoadmapPage = () => {
7373
},
7474
{
7575
title: "Future-proofing",
76-
icon: <FutureProofingIcon />,
76+
icon: <FutureProofingIcon className="h-auto w-12" />,
7777
description:
7878
"Ethereum researchers and developers are solving tomorrow's problems today, readying the network for future generations.",
7979
button: {
@@ -85,49 +85,49 @@ const RoadmapPage = () => {
8585

8686
const technicalUpgradesItems = [
8787
{
88-
icon: <DankshardingIcon />,
88+
icon: <DankshardingIcon className="size-7" />,
8989
title: "Danksharding",
9090
description:
9191
"Danksharding makes L2 rollups much cheaper for users by adding “blobs” of data to Ethereum blocks.",
9292
href: "/roadmap/danksharding",
9393
},
9494
{
95-
icon: <SingleSlotFinalityIcon />,
95+
icon: <SingleSlotFinalityIcon className="size-7" />,
9696
title: "Single slot finality",
9797
description:
9898
"Instead of waiting for fifteen minutes, blocks could get proposed and finalized in the same slot. This is more convenient for apps and difficult to attack.",
9999
href: "/roadmap/single-slot-finality",
100100
},
101101
{
102-
icon: <ProposerBuilderSeparationIcon />,
102+
icon: <ProposerBuilderSeparationIcon className="size-7" />,
103103
title: "Proposer-builder separation",
104104
description:
105105
"Splitting the block building and block proposal tasks across separate validators creates a fairer, more censorship resistant and efficient way for Ethereum to come to consensus.",
106106
href: "/roadmap/pbs",
107107
},
108108
{
109-
icon: <SecretLeaderElectionIcon />,
109+
icon: <SecretLeaderElectionIcon className="size-7" />,
110110
title: "Secret leader election",
111111
description:
112112
"Clever cryptography can be used to ensure that the identity of the current block proposer is not made public, protecting them from certain types of attack.",
113113
href: "/roadmap/secret-leader-election",
114114
},
115115
{
116-
icon: <AccountAbstractionIcon />,
116+
icon: <AccountAbstractionIcon className="size-7" />,
117117
title: "Account abstraction",
118118
description:
119119
"Account abstraction is a class of upgrades that support smart contract wallets natively on Ethereum, rather than having to use complex middleware.",
120120
href: "/roadmap/account-abstraction",
121121
},
122122
{
123-
icon: <VerkleTreesIcon />,
123+
icon: <VerkleTreesIcon className="size-7" />,
124124
title: "Verkle trees",
125125
description:
126126
"Verkle trees are a data structure that can be used to enable stateless clients on Ethereum. These clients will require a small amount of storage space but will still be able to verify new blocks.",
127127
href: "/roadmap/verkle-trees",
128128
},
129129
{
130-
icon: <StatelessnessIcon />,
130+
icon: <StatelessnessIcon className="size-7" />,
131131
title: "Statelessness",
132132
description:
133133
"Stateless clients will be able to verify new blocks without having to store large amounts of data. This will provide all the benefits of running a node with only a tiny fraction of today’s costs.",

0 commit comments

Comments
 (0)