Add slider mockup
This commit is contained in:
78
packages/website/ts/@next/components/slider/slider.tsx
Normal file
78
packages/website/ts/@next/components/slider/slider.tsx
Normal file
@@ -0,0 +1,78 @@
|
||||
import * as React from 'react';
|
||||
import styled from 'styled-components';
|
||||
|
||||
import { colors } from 'ts/style/colors';
|
||||
|
||||
import { Icon } from 'ts/@next/components/icon';
|
||||
import { Paragraph, Heading } from 'ts/@next/components/text';
|
||||
|
||||
interface SliderProps {
|
||||
}
|
||||
|
||||
interface SlideProps {
|
||||
icon: string;
|
||||
heading: string;
|
||||
text: string;
|
||||
href?: string;
|
||||
}
|
||||
|
||||
export const Slide: React.StatelessComponent<SlideProps> = (props: SlideProps) => {
|
||||
const { heading, text, href, icon } = props;
|
||||
|
||||
return (
|
||||
<StyledSlide>
|
||||
<SlideHead>
|
||||
<Icon name={icon} size="large" margin="auto" />
|
||||
</SlideHead>
|
||||
<SlideContent>
|
||||
<Heading asElement="h4" size="small" marginBottom="15px">{heading}</Heading>
|
||||
<Paragraph isMuted={true}>{text}</Paragraph>
|
||||
</SlideContent>
|
||||
</StyledSlide>
|
||||
);
|
||||
};
|
||||
|
||||
export const Slider: React.StatelessComponent<SliderProps> = props => {
|
||||
return (
|
||||
<StyledSlider>
|
||||
<SliderInner>
|
||||
{props.children}
|
||||
</SliderInner>
|
||||
</StyledSlider>
|
||||
);
|
||||
};
|
||||
|
||||
const StyledSlider = styled.div`
|
||||
overflow: hidden;
|
||||
width: 100%;
|
||||
height: 520px;
|
||||
`;
|
||||
|
||||
const SliderInner = styled.div`
|
||||
position: absolute;
|
||||
display: flex;
|
||||
width: 100%;
|
||||
`;
|
||||
|
||||
const StyledSlide = styled.div`
|
||||
background-color: ${colors.backgroundDark};
|
||||
width: 560px;
|
||||
height: 520px;
|
||||
flex: 0 0 auto;
|
||||
|
||||
& + & {
|
||||
margin-left: 30px;
|
||||
}
|
||||
`;
|
||||
|
||||
const SlideHead = styled.div`
|
||||
background-color: ${colors.brandDark};
|
||||
height: 300px;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
`;
|
||||
|
||||
const SlideContent = styled.div`
|
||||
padding: 30px;
|
||||
`;
|
||||
@@ -10,12 +10,9 @@ import { Link } from 'ts/@next/components/button';
|
||||
import { Icon } from 'ts/@next/components/icon';
|
||||
import { BREAKPOINTS, Column, Section, Wrap, WrapCentered, WrapSticky } from 'ts/@next/components/layout';
|
||||
import { SiteWrap } from 'ts/@next/components/siteWrap';
|
||||
import { Slide, Slider } from 'ts/@next/components/slider/slider';
|
||||
import { Heading, Paragraph } from 'ts/@next/components/text';
|
||||
|
||||
import CoinIcon from 'ts/@next/icons/illustrations/coin.svg';
|
||||
import CustomizeIcon from 'ts/@next/icons/illustrations/customize.svg';
|
||||
import ProtocolIcon from 'ts/@next/icons/illustrations/protocol.svg';
|
||||
|
||||
const offersData = [
|
||||
{
|
||||
icon: 'coin',
|
||||
@@ -62,6 +59,29 @@ const functionalityData = [
|
||||
},
|
||||
];
|
||||
|
||||
const useCaseSlides = [
|
||||
{
|
||||
icon: 'coin',
|
||||
title: 'Games & Collectibles',
|
||||
description: 'Artists and game makers are tokenizing digital art and in-game items known as non-fungible tokens (NFTs). 0x enables these creators to add exchange functionality by providing the ability to build marketplaces for NFT trading.',
|
||||
},
|
||||
{
|
||||
icon: 'coin',
|
||||
title: 'Games & Collectibles',
|
||||
description: 'Artists and game makers are tokenizing digital art and in-game items known as non-fungible tokens (NFTs). 0x enables these creators to add exchange functionality by providing the ability to build marketplaces for NFT trading.',
|
||||
},
|
||||
{
|
||||
icon: 'coin',
|
||||
title: 'Games & Collectibles',
|
||||
description: 'Artists and game makers are tokenizing digital art and in-game items known as non-fungible tokens (NFTs). 0x enables these creators to add exchange functionality by providing the ability to build marketplaces for NFT trading.',
|
||||
},
|
||||
{
|
||||
icon: 'coin',
|
||||
title: 'Games & Collectibles',
|
||||
description: 'Artists and game makers are tokenizing digital art and in-game items known as non-fungible tokens (NFTs). 0x enables these creators to add exchange functionality by providing the ability to build marketplaces for NFT trading.',
|
||||
},
|
||||
];
|
||||
|
||||
export class NextWhy extends React.PureComponent {
|
||||
public render(): React.ReactNode {
|
||||
return (
|
||||
@@ -151,7 +171,16 @@ export class NextWhy extends React.PureComponent {
|
||||
|
||||
<SectionWrap id="cases">
|
||||
<Heading size="medium">Use Cases</Heading>
|
||||
<Paragraph isMuted={true}>slider</Paragraph>
|
||||
<Slider>
|
||||
{_.map(useCaseSlides, (item, index) => (
|
||||
<Slide
|
||||
key={`useCaseSlide-${index}`}
|
||||
heading={item.title}
|
||||
text={item.description}
|
||||
icon={item.icon}
|
||||
/>
|
||||
))}
|
||||
</Slider>
|
||||
</SectionWrap>
|
||||
|
||||
<SectionWrap id="functionality">
|
||||
|
||||
Reference in New Issue
Block a user