diff --git a/public/images/Safenet/roadmap-hook.png b/public/images/Safenet/roadmap-hook.png new file mode 100644 index 00000000..73f37fd0 Binary files /dev/null and b/public/images/Safenet/roadmap-hook.png differ diff --git a/public/images/Safenet/telegram-gradient.svg b/public/images/Safenet/telegram-gradient.svg new file mode 100644 index 00000000..b055d5ed --- /dev/null +++ b/public/images/Safenet/telegram-gradient.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/public/images/Safenet/timeline.png b/public/images/Safenet/timeline.png new file mode 100644 index 00000000..ec8c06af Binary files /dev/null and b/public/images/Safenet/timeline.png differ diff --git a/src/components/Safenet/Roadmap/index.tsx b/src/components/Safenet/Roadmap/index.tsx new file mode 100644 index 00000000..a2624d97 --- /dev/null +++ b/src/components/Safenet/Roadmap/index.tsx @@ -0,0 +1,74 @@ +import { Button, Container, Grid, IconButton, Typography } from '@mui/material' +import GradientChip from '@/components/Safenet/GradientChip' +import TelegramGradient from '@/public/images/Safenet/telegram-gradient.svg' +import css from './styles.module.css' +import { ALPHA_TELEGRAM_LINK } from '@/config/constants' + +const items: Array<{ title: string; features: Array }> = [ + { + title: 'Alpha', + features: ['Cross-chain Accounts', 'Execution guarantees', 'Validity proofs'], + }, + { + title: 'Beta', + features: ['Safe Apps Support', 'SAFE Validator network'], + }, + { + title: 'Version 1', + features: ['Third-party Processors', 'Liquidity Network', 'ERC-7579 Support'], + }, +] + +const Roadmap = () => { + return ( + +
+ + + + Addornment + Safenet is coming 2025 + + + Builder mode on. +
+ + Safenet timeline + + + {items.map(({ title, features }, index) => ( + + {title} + +
+ {features.map((item) => ( + {item} + ))} +
+
+ ))} +
+ +
+ + + + + Stay in the loop for all the latest insights! + + +
+
+ ) +} + +export default Roadmap diff --git a/src/components/Safenet/Roadmap/styles.module.css b/src/components/Safenet/Roadmap/styles.module.css new file mode 100644 index 00000000..fd78c1a0 --- /dev/null +++ b/src/components/Safenet/Roadmap/styles.module.css @@ -0,0 +1,125 @@ +.container { + margin-top: 300px; + + position: relative; + display: flex; + flex-direction: column; + align-items: center; +} + +.contentWrapper { + display: flex; + flex-direction: column; + align-items: center; + gap: 24px; +} + +.title { + max-width: 1042px; + text-transform: uppercase; + text-align: center; + + font-size: 40px; + line-height: 44px; +} + +.titleGradient { + background: radial-gradient(129.11% 259.78% at 103.1% -21.2%, #ff5f00 0%, #ffd200 50%, #12ff80 100%); + background-clip: text; + -webkit-background-clip: text; + -webkit-text-fill-color: transparent; + font-style: italic; +} + +.gradientButton { + border-radius: 12px; + background: radial-gradient(129.11% 259.78% at 103.1% -21.2%, #ff5f00 0%, #ffd200 50%, #12ff80 100%); +} + +.gridContainer { + margin-top: 80px; + justify-content: center; + gap: 80px; +} + +.blockItem { + display: flex; + flex-direction: column; + align-items: center; + gap: 24px; +} + +.blockTitle { + font-size: 32px; + line-height: 36px; + text-transform: uppercase; + + background: radial-gradient(129.11% 259.78% at 103.1% -21.2%, #ff5f00 0%, #ffd200 50%, #12ff80 100%); + background-clip: text; + -webkit-background-clip: text; + -webkit-text-fill-color: transparent; +} + +.blockText { + display: flex; + flex-direction: column; + gap: 8px; + + align-items: center; + text-align: center; +} + +.buttonWrapper { + margin-top: 70px; + display: flex; + flex-direction: column; + text-align: center; + align-items: center; + gap: 24px; + width: 214px; +} + +.hook, +.timelineImage { + display: none; +} + +@media (min-width: 900px) { + .hook { + display: block; + position: absolute; + left: -260px; + top: 6px; + } + + .title { + font-size: 56px; + line-height: 60px; + } + + .timelineImage { + width: 100%; + margin-top: 108px; + } + + .gridContainer { + margin-top: 40px; + justify-content: space-around; + } + + .buttonWrapper { + width: 100%; + } +} + +@media (min-width: 1200px) { + .hook { + left: -112px; + } +} + +@media (min-width: 1630px) { + .hook { + left: 104px; + } +} diff --git a/src/components/Safenet/index.tsx b/src/components/Safenet/index.tsx index efc76116..3b5ee916 100644 --- a/src/components/Safenet/index.tsx +++ b/src/components/Safenet/index.tsx @@ -1,6 +1,7 @@ import ChainAbstraction from '@/components/Safenet/ChainAbstraction' import Hero from '@/components/Safenet/Hero' import Metadata from '@/components/Safenet/Metatags' +import Roadmap from '@/components/Safenet/Roadmap' const Safenet = () => { return ( @@ -8,6 +9,7 @@ const Safenet = () => { + ) }