Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
128 commits
Select commit Hold shift + click to select a range
e9a21c1
fix ProductCard
JoeChenJ Jan 20, 2025
a521803
Fixed image parsing logic
JoeChenJ Feb 6, 2025
aa14f59
setup for translation
JoeChenJ Feb 12, 2025
eac5c4e
Setup for translation
JoeChenJ Feb 12, 2025
7257178
add family wallet
JoeChenJ Feb 19, 2025
7ce91f5
change logo
JoeChenJ Feb 19, 2025
b8de5e7
Merge branch 'dev' into Setup_ContributorsQuizBanner_for_translation
JoeChenJ Feb 24, 2025
9b1b360
update translation import
JoeChenJ Feb 24, 2025
13c6f02
refactor: use try/catches during rss build
wackerow May 18, 2025
02da378
debug: add intentional broken link for testing
wackerow May 19, 2025
0a7e55b
fix: error logging
wackerow May 19, 2025
8f40319
fix: throw error for invalid type matching
wackerow May 20, 2025
7fcca62
Revert "debug: add intentional broken link for testing"
wackerow May 20, 2025
9a1d824
fix: use https
wackerow May 20, 2025
360c439
revert: throwing error on few rss items
wackerow May 20, 2025
7142a0a
Revert "revert: throwing error on few rss items"
wackerow May 21, 2025
63eb628
setup 10 year page, and hero
corwintines May 22, 2025
d2f17ac
A decade of transforming the world section
corwintines May 22, 2025
cc3244b
setup globe
corwintines May 23, 2025
b1fbcb2
Event tabs and test data
corwintines May 23, 2025
9c3007c
Update Crowdin translation progress
actions-user May 23, 2025
cd4f439
style cleanup
corwintines May 23, 2025
926e0d3
replace background image
corwintines May 23, 2025
3383e26
events cta
corwintines May 23, 2025
c1d7e18
Update community-events.json
adminsuci May 25, 2025
d9114e8
10 years of innovation
corwintines May 26, 2025
50b0ca6
adoption section
corwintines May 26, 2025
5427893
stories
corwintines May 26, 2025
bc427b4
Update consensus-bounty-hunters.json
fredrik0x May 26, 2025
07f9e0f
Story pagination
corwintines May 26, 2025
1fb22ae
bottom CTA
corwintines May 26, 2025
39c7c5a
homepage cta
corwintines May 26, 2025
937b40c
margins
corwintines May 26, 2025
3a7a8e6
stories styling
corwintines May 27, 2025
bfce632
fix styling
corwintines May 27, 2025
43eb13b
setup fetch functions
corwintines May 27, 2025
6e9692e
feat: build homepage statically
wackerow May 27, 2025
0a5739f
chore: add comments
wackerow May 27, 2025
05169dd
copy updates
p0unce May 27, 2025
aeb755a
google sheet api for 10 year events
corwintines May 27, 2025
7751621
add stories api
corwintines May 28, 2025
b418c51
fix: markdown table format in developers docs
JoeChenJ May 28, 2025
0cd5cf8
Fixed typo, changed "really dummy..." to "real dummy"
aolson078 May 28, 2025
d23f693
Merge pull request #15514 from p0unce/10-year-anniversary
corwintines May 28, 2025
49d5351
add markers to globe
corwintines May 28, 2025
32c8cda
Merge pull request #15523 from aolson078/patch-2
wackerow May 28, 2025
605a162
docs: update README.md [skip ci]
allcontributors[bot] May 28, 2025
383540d
docs: update .all-contributorsrc [skip ci]
allcontributors[bot] May 28, 2025
2a35d7a
Merge pull request #15532 from ethereum/all-contributors/add-aolson078
wackerow May 28, 2025
6821fe4
Merge branch 'dev' into pr/14714
wackerow May 29, 2025
30255a5
refactor: move class to button
wackerow May 29, 2025
72a3502
fix: buttonlink height for multiline
wackerow May 29, 2025
541d8be
Merge pull request #14714 from JoeChenJ/fix_ProductCard
wackerow May 29, 2025
448789c
Merge pull request #14830 from JoeChenJ/Fix_rss_parsing
wackerow May 29, 2025
29e3f12
Merge branch 'dev' into rss-feeds
wackerow May 29, 2025
e87e327
Merge branch 'dev' into pr/JoeChenJ/14876
wackerow May 29, 2025
7b32018
revert: page-find-wallet-showing string
wackerow May 29, 2025
26ab113
Merge pull request #14876 from JoeChenJ/Setup_useWalletColumns_for_tr…
wackerow May 29, 2025
457e614
Merge branch 'dev' into Setup_ContributorsQuizBanner_for_translation
wackerow May 29, 2025
447589d
Merge pull request #14880 from JoeChenJ/Setup_ContributorsQuizBanner_…
wackerow May 29, 2025
36d8c36
Merge branch 'dev' into pr/14938
wackerow May 29, 2025
fcd57ce
fix: use brand transparent brand asset
wackerow May 29, 2025
eb88e50
Merge pull request #14938 from JoeChenJ/Add_family_wallet
wackerow May 29, 2025
e2553a5
Merge pull request #15520 from JoeChenJ/Fix_md_table_format
wackerow May 29, 2025
25836f1
vibe code POC
corwintines May 29, 2025
90f3d52
build issues
corwintines May 29, 2025
0729991
fix: correct the path used for SideNav
JoeChenJ May 29, 2025
7a14ccf
refactor use10yearanniversary and home image
corwintines May 29, 2025
1697ea6
Update app/[locale]/10-year-anniversary/_components/TenYearHero.tsx
corwintines May 29, 2025
cbd093c
Update app/[locale]/10-year-anniversary/_components/TenYearHero.tsx
corwintines May 29, 2025
0202609
Update app/[locale]/10-year-anniversary/_components/TenYearHero.tsx
corwintines May 29, 2025
220c23d
Update app/[locale]/10-year-anniversary/_components/TenYearHero.tsx
corwintines May 29, 2025
1511289
Update app/[locale]/10-year-anniversary/_components/TenYearHero.tsx
corwintines May 29, 2025
eda1021
Add and use ParallaxImage component
corwintines May 29, 2025
f8a0d0f
Merge pull request #15510 from ethereum/fredriksvantes-patch-2
wackerow May 29, 2025
bd67a98
Merge pull request #15501 from ethereum/automated-update-20250523162929
wackerow May 29, 2025
28a280b
Merge pull request #15507 from adminsuci/patch-2
wackerow May 29, 2025
9179eb9
docs: update README.md [skip ci]
allcontributors[bot] May 29, 2025
3866cf3
docs: update .all-contributorsrc [skip ci]
allcontributors[bot] May 29, 2025
54cc93b
Merge pull request #15543 from ethereum/all-contributors/add-adminsuci
wackerow May 29, 2025
aa5fb2e
change requests
corwintines May 29, 2025
119d7d4
Merge pull request #15544 from ethereum/staging
wackerow May 29, 2025
cde94a2
globe updates
corwintines May 30, 2025
d229b3f
fix: use existing function instead
JoeChenJ May 30, 2025
8cf69f1
Merge pull request #15539 from JoeChenJ/Fix_SideNav_items_open
wackerow May 30, 2025
52af284
marketcap changes
corwintines May 30, 2025
4e12a13
feat: initial pnpm installation
wackerow May 30, 2025
649a156
refactor: internalize lodash functions
wackerow May 30, 2025
0a7fcc8
update: yarn references to use pnpm
wackerow May 30, 2025
bf0354b
fix: type issues
wackerow May 30, 2025
5931e58
adoption cards and some styling
corwintines May 30, 2025
29f087d
fix: chromatic actionpnpm install
wackerow May 30, 2025
0216a71
chore: update pnpm-workspace
wackerow May 30, 2025
85bbb5d
chore: sort imports
wackerow May 30, 2025
26cc949
fix: lodash usage, revert: internalizing lodash functions
wackerow May 30, 2025
c0c4da4
patch: add cwd package location to workspace
wackerow May 30, 2025
f863cf3
change requests
corwintines Jun 1, 2025
bfa87f0
fix spelling
corwintines Jun 1, 2025
19f15ba
fix href
corwintines Jun 1, 2025
b12dbc7
change requests
corwintines Jun 1, 2025
015dd8a
home banner text
corwintines Jun 1, 2025
f7a6b2c
globe changes
corwintines Jun 1, 2025
c1c18d0
change requests
corwintines Jun 1, 2025
990e33b
change requests
corwintines Jun 1, 2025
66396e7
Merge pull request #15476 from ethereum/rss-feeds
pettinarip Jun 2, 2025
47527c6
dynamic paths true, and change l2beat response
corwintines Jun 2, 2025
8fcd87e
Merge branch 'dev' into 10-year-anniversary
corwintines Jun 2, 2025
655a9cd
change requests
corwintines Jun 2, 2025
6796d32
fix mock data
corwintines Jun 2, 2025
bf03a02
chore: remove unnecessary statement
wackerow Jun 2, 2025
d93f366
fix: image crop
wackerow Jun 2, 2025
1dae443
change requests
corwintines Jun 2, 2025
6e1c936
hooks refactor
corwintines Jun 2, 2025
9cb1441
Merge pull request #15592 from ethereum/l2DataFetchIssue
corwintines Jun 2, 2025
8e7078f
chore: remove comments
wackerow Jun 2, 2025
f7e12a3
update: README instructions
wackerow Jun 2, 2025
9f9f8e7
copy updates
corwintines Jun 2, 2025
fc8aeaa
content update
corwintines Jun 2, 2025
f047357
mock data
corwintines Jun 2, 2025
ba66b3c
fix but
corwintines Jun 3, 2025
07bb4fe
Merge pull request #15546 from ethereum/pnpm
pettinarip Jun 3, 2025
c73b6c8
Apply review fixes
minimalsm Jun 3, 2025
2737256
Fix alignment
minimalsm Jun 3, 2025
d985c14
Fix
minimalsm Jun 3, 2025
b872b94
Merge branch 'dev' into 10-year-anniversary
corwintines Jun 3, 2025
b11337f
Merge pull request #15499 from ethereum/10-year-anniversary
corwintines Jun 3, 2025
18f2ec9
v10.5.0
corwintines Jun 3, 2025
7f3e1d4
Merge pull request #15598 from ethereum/v10-5-0
corwintines Jun 3, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 22 additions & 1 deletion .all-contributorsrc
Original file line number Diff line number Diff line change
Expand Up @@ -12730,7 +12730,10 @@
"name": "João Paulo Hotequil",
"avatar_url": "https://avatars.githubusercontent.com/u/46814712?v=4",
"profile": "https://github.com/hotequil",
"contributions": ["code", "translation"]
"contributions": [
"code",
"translation"
]
},
{
"login": "microHoffman",
Expand All @@ -12749,6 +12752,24 @@
"contributions": [
"bug"
]
},
{
"login": "aolson078",
"name": "Alex Olson",
"avatar_url": "https://avatars.githubusercontent.com/u/69769089?v=4",
"profile": "https://github.com/aolson078",
"contributions": [
"bug"
]
},
{
"login": "adminsuci",
"name": "SUCI - Blockchain Hub Team",
"avatar_url": "https://avatars.githubusercontent.com/u/155696196?v=4",
"profile": "https://www.suci.io/",
"contributions": [
"maintenance"
]
}
],
"contributorsPerLine": 7,
Expand Down
1 change: 1 addition & 0 deletions .github/labeler.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
"dependencies 📦":
- package.json
- yarn.lock
- pnpm-lock.yaml

"config ⚙️":
- i18n.config.json
Expand Down
11 changes: 10 additions & 1 deletion .github/workflows/chromatic.yml
Original file line number Diff line number Diff line change
Expand Up @@ -31,9 +31,18 @@ jobs:
uses: actions/checkout@v2
with:
fetch-depth: 0 # 👈 Required to retrieve git history
- name: Setup pnpm
uses: pnpm/action-setup@v2
with:
version: 8
- name: Setup Node.js
uses: actions/setup-node@v3
with:
node-version: 20
cache: 'pnpm'
- name: Install deps
# 👇 Install dependencies with the same package manager used in the project (replace it as needed), e.g. yarn, npm, pnpm
run: yarn
run: pnpm install
- name: Publish to Chromatic
# 👇 Adds Chromatic as a step in the workflow
uses: chromaui/action@v1
Expand Down
5 changes: 4 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
/node_modules
/.pnp
.pnp.js
.pnpm-store/

# testing
/coverage
Expand All @@ -23,6 +24,9 @@
npm-debug.log*
yarn-debug.log*
yarn-error.log*
.pnpm-debug.log

pnpm-lock.yaml.bak

# local env files
.env*.local
Expand Down Expand Up @@ -60,4 +64,3 @@ src/data/crowdin/bucketsAwaitingReviewReport.csv
# Storybook
build-storybook.log
storybook-static

1 change: 1 addition & 0 deletions .prettierignore
Original file line number Diff line number Diff line change
Expand Up @@ -4,3 +4,4 @@ yarn.lock
package-lock.json
public
build
pnpm-lock.yaml
13 changes: 3 additions & 10 deletions .storybook/main.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,17 +4,10 @@ import TsconfigPathsPlugin from "tsconfig-paths-webpack-plugin"
import type { StorybookConfig } from "@storybook/nextjs"

/**
* Note regarding package.json settings related to Storybook:
*
* There is a resolutions option set for the package `jackspeak`. This is related to a
* workaround provided to make sure storybook ( as of v7.5.2) works correctly with
* Yarn v1
*
* Reference: https://github.com/storybookjs/storybook/issues/22431#issuecomment-1630086092
*
* The primary recommendation is to upgrade to Yarn 3 if possible
* Storybook configuration for the ethereum.org website
* This loads our components as stories and configures the necessary
* webpack settings for proper rendering
*/

const config: StorybookConfig = {
stories: [
"../src/components/**/*.stories.{ts,tsx}",
Expand Down
2 changes: 1 addition & 1 deletion .storybook/modes.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import pickBy from "lodash/pickBy"
import { pickBy } from "lodash"

import { baseLocales } from "./next-intl"
import { breakpointSet } from "./preview"
Expand Down
49 changes: 45 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -70,14 +70,52 @@ git fetch upstream
git merge upstream/dev
```

2. Install dependencies
2. Prepare package manager

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.
We've upgraded to pnpm to speed up development experience and improve dependency management.

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.

**Use current node version (recommended)**

```sh
nvm use
```

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.

**Enable corepack (recommended):**

```sh
corepack enable
```

3. Install dependencies

```sh
pnpm install
```

#### Migrating from yarn to pnpm

If you previously used `yarn` to install dependencies, you can safely migrate to `pnpm` by running the following commands:

```sh
yarn
# Remove yarn.lock file
rm yarn.lock

# Remove node_modules directory
rm -rf node_modules

# Clean yarn cache (optional)
yarn cache clean

# Install dependencies with pnpm
pnpm install
```

This will cleanly switch the project working directory from yarn to pnpm without leaving any residual yarn configuration.

### 4. Make awesome changes!

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

```sh
yarn dev
pnpm dev
```

- Open this directory in your favorite text editor / IDE, and see your changes live by visiting `localhost:3000` from your browser
Expand Down Expand Up @@ -1947,8 +1985,11 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/d
</tr>
<tr>
<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>
<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>
<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>
<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>
<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>
<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>
</tr>
</tbody>
</table>
Expand Down
46 changes: 46 additions & 0 deletions app/[locale]/10years/_components/AdoptionSwiper.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
"use client"

import { Image } from "@/components/Image"
import { ButtonLink } from "@/components/ui/buttons/Button"
import {
Swiper,
SwiperContainer,
SwiperNavigation,
SwiperSlide,
} from "@/components/ui/swiper"

import { cn } from "@/lib/utils/cn"

import { adoptionCards, adoptionStyles } from "./data"

const AdoptionSwiper = () => {
return (
<div className="flex flex-1 flex-col gap-6 md:hidden">
<SwiperContainer className="mx-auto w-full max-w-[550px]">
<Swiper>
{adoptionCards.map((card, index) => (
<SwiperSlide key={card.title}>
<div
className={cn("h-full rounded-2xl p-8", adoptionStyles[index])}
>
<Image
src={card.image}
alt={card.title}
className="mx-auto mb-4 h-36 object-contain"
/>
<h3 className="mb-4 text-2xl font-bold">{card.title}</h3>
{card.description}
<ButtonLink href={card.href} hideArrow variant="outline">
{card.linkText}
</ButtonLink>
</div>
</SwiperSlide>
))}
<SwiperNavigation />
</Swiper>
</SwiperContainer>
</div>
)
}

export default AdoptionSwiper
106 changes: 106 additions & 0 deletions app/[locale]/10years/_components/CountDown.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,106 @@
"use client"

import { useEffect, useState } from "react"

import { cn } from "@/lib/utils/cn"

interface CountDownProps {
className?: string
}

const CountDown = ({ className }: CountDownProps) => {
const [timeLeft, setTimeLeft] = useState({
days: 0,
hours: 0,
minutes: 0,
seconds: 0,
})
const [isExpired, setIsExpired] = useState(false)

useEffect(() => {
const targetDate = new Date("2025-07-30T15:44:00Z")

const calculateTimeLeft = () => {
const now = new Date()
const difference = targetDate.getTime() - now.getTime()

if (difference > 0) {
setIsExpired(false)
setTimeLeft({
days: Math.floor(difference / (1000 * 60 * 60 * 24)),
hours: Math.floor((difference / (1000 * 60 * 60)) % 24),
minutes: Math.floor((difference / 1000 / 60) % 60),
seconds: Math.floor((difference / 1000) % 60),
})
} else {
setIsExpired(true)
}
}

calculateTimeLeft()

// Update every second
const timer = setInterval(calculateTimeLeft, 1000)

return () => clearInterval(timer)
}, [])

if (isExpired) {
return (
<div className="text-center text-2xl font-bold">
Ethereum is 10 years old! 🚀
</div>
)
}

return (
<div className="flex items-center justify-center gap-10">
<div
className={cn(
"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]",
className
)}
>
<div className="font-mono text-4xl font-bold text-accent-a">
{timeLeft.days}
</div>
<div className="font-mono text-xs text-accent-a">days</div>
</div>
<div
className={cn(
"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]",
className
)}
>
<div className="font-mono text-4xl font-bold text-accent-a">
{timeLeft.hours}
</div>
<div className="font-mono text-xs text-accent-a">hours</div>
</div>
<div
className={cn(
"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]",
className
)}
>
<div className="font-mono text-4xl font-bold text-accent-a">
{timeLeft.minutes}
</div>
<div className="font-mono text-xs text-accent-a">minutes</div>
</div>
<div
className={cn(
"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]",
className
)}
>
<div className="font-mono text-4xl font-bold text-accent-a">
{timeLeft.seconds}
</div>
<div className="font-mono text-xs text-accent-a">seconds</div>
</div>
</div>
)
}

export default CountDown
44 changes: 44 additions & 0 deletions app/[locale]/10years/_components/InnovationSwiper.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
"use client"

import { Image } from "@/components/Image"
import {
Swiper,
SwiperContainer,
SwiperNavigation,
SwiperSlide,
} from "@/components/ui/swiper"

import { innovationCards } from "./data"

export default function InnovationSwiper() {
return (
<div className="w-[100%]">
<SwiperContainer className="mx-auto w-full max-w-[550px] xl:max-w-[700px]">
<Swiper className="mx-auto w-full max-w-[550px] xl:max-w-[700px]">
{innovationCards.map((card, index) => (
<SwiperSlide
key={index}
className="mx-auto flex w-full max-w-[550px] flex-col gap-4 rounded-lg bg-card-gradient-secondary p-4 sm:p-6 xl:max-w-[700px]"
>
<Image
src={card.image}
alt={card.title}
className="mx-auto my-4 h-auto max-w-full"
/>
<div>
<h3 className="mb-4">{card.title}</h3>
<p className="text-body-secondary mb-4">{card.date}</p>
</div>
{card.description.map((description, index) => (
<p key={index} className="mb-4">
{description}
</p>
))}
</SwiperSlide>
))}
<SwiperNavigation />
</Swiper>
</SwiperContainer>
</div>
)
}
Loading