diff --git a/package.json b/package.json index 6e747072..e8191cd7 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "safe-homepage", "homepage": "https://github.com/safe-global/safe-homepage", - "version": "1.5.6", + "version": "1.5.7", "scripts": { "build": "next build && next export", "lint": "next lint", diff --git a/public/images/Wallet/checkmark-gradient.svg b/public/images/Wallet/checkmark-gradient.svg new file mode 100644 index 00000000..fd9c159c --- /dev/null +++ b/public/images/Wallet/checkmark-gradient.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/src/components/Wallet/VerticalStack/index.tsx b/src/components/Wallet/VerticalStack/index.tsx new file mode 100644 index 00000000..3122cc4a --- /dev/null +++ b/src/components/Wallet/VerticalStack/index.tsx @@ -0,0 +1,51 @@ +import type { DetailedHTMLProps, ReactElement, SourceHTMLAttributes } from 'react' +import { Container, Grid, Typography } from '@mui/material' +import type { BaseBlock } from '@/components/Home/types' +import layoutCss from '@/components/common/styles.module.css' +import css from './styles.module.css' + +type VideoEmbed = { + sources: Array, HTMLSourceElement>> +} + +export const GridItem = ({ image, title, text }: Partial): ReactElement => ( + + {image ? : null} + + {title} + + {text && ( + + {text} + + )} + +) + +const VerticalStack = ({ title, video, items = [] }: BaseBlock & { video: VideoEmbed }) => ( + + + + {video && ( + + {video.sources.map((s, i) => ( + + ))} + + )} + + {title} + + + + + {items.map((item, index) => ( + + ))} + + + + +) + +export default VerticalStack diff --git a/src/components/Wallet/VerticalStack/styles.module.css b/src/components/Wallet/VerticalStack/styles.module.css new file mode 100644 index 00000000..4dbc8ad5 --- /dev/null +++ b/src/components/Wallet/VerticalStack/styles.module.css @@ -0,0 +1,34 @@ +.cardWrapper { + border-radius: 6px; + border: 1px solid var(--mui-palette-border-light); + overflow: hidden; +} + +.card { + border-bottom: 1px solid var(--mui-palette-border-light); + margin-bottom: -1px; + display: flex; + flex-direction: column; + gap: 16px; + align-items: flex-start; + padding: 48px 40px; + text-align: left; +} + +.video { + width: 144px; +} + +@media (min-width: 900px) { + .titleWrapper { + display: flex; + flex-direction: column; + justify-content: center; + align-items: flex-start; + gap: 40px; + } + + .showInMd { + display: block; + } +} diff --git a/src/content/wallet.json b/src/content/wallet.json index 5f75462e..221b8557 100644 --- a/src/content/wallet.json +++ b/src/content/wallet.json @@ -211,6 +211,42 @@ } ] }, + { + "component": "Wallet/VerticalStack", + "title": "Security built onopen-source principles", + "video": { + "sources": [ + { "src": "/videos/Home/safe-code-hevc.mov", "type": "video/quicktime; codecs=hvc1" }, + { "src": "/videos/Home/safe-code-vp9.webm", "type": "video/webm" } + ] + }, + "items": [ + { + "title": "Trustless by design", + "text": "Your Accounts are secured directly by the blockchain and not by a centralized entity. They do not depend on the Safe{Wallet}'s interface to exist.", + "image": { + "src": "/images/Wallet/checkmark-gradient.svg", + "alt": "Gradient checkmark" + } + }, + { + "title": "Safe command line interface", + "text": "You can interact with your Safe Smart Account directly with code.", + "image": { + "src": "/images/Wallet/checkmark-gradient.svg", + "alt": "Gradient checkmark" + } + }, + { + "title": "Use with many interfaces", + "text": "Portable across different frontends. You can access your Safe Smart Account from other ecosystem apps like Coinshift, Den etc.", + "image": { + "src": "/images/Wallet/checkmark-gradient.svg", + "alt": "Gradient checkmark" + } + } + ] + }, { "component": "commonCMS/Faq" },