protocol/packages/website/ts/pages/launch_kit.tsx
2019-02-20 23:08:04 -05:00

124 lines
4.6 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import * as _ from 'lodash';
import * as React from 'react';
import { Banner } from 'ts/components/banner';
import { Button } from 'ts/components/button';
import { Definition } from 'ts/components/definition';
import { DocumentTitle } from 'ts/components/document_title';
import { Hero } from 'ts/components/hero';
import { Icon } from 'ts/components/icon';
import { Section } from 'ts/components/newLayout';
import { SiteWrap } from 'ts/components/siteWrap';
import { constants } from 'ts/utils/constants';
import { documentConstants } from 'ts/utils/document_meta_constants';
import { ModalContact } from '../components/modals/modal_contact';
const offersData = [
{
icon: 'supportForAllEthereumStandards',
title: 'Perfect for developers who need a simple drop-in marketplace',
description: (
<ul>
<li>Quickly launch a market for your projects token</li>
<li>Seamlessly create an in-game marketplace for digital items and collectables</li>
<li>Easily build a 0x relayer for your local market</li>
</ul>
),
},
];
export class NextLaunchKit extends React.Component {
public state = {
isContactModalOpen: false,
};
public render(): React.ReactNode {
return (
<SiteWrap theme="dark">
<DocumentTitle {...documentConstants.LAUNCH_KIT} />
<Hero
isLargeTitle={false}
isFullWidth={false}
title="0x Launch Kit"
description="Launch a relayer in under a minute"
figure={<Icon name="launchKit" size="hero" margin={['small', 0, 'small', 0]} />}
actions={<HeroActions />}
/>
<Section bgColor="dark" isFlex={true} maxWidth="1170px">
<Definition
title="Networked Liquidity Pool"
titleSize="small"
description="Tap into and share liquidity with other relayers"
icon="networkedLiquidity"
iconSize="medium"
isInline={true}
/>
<Definition
title="Extensible Code Repo"
titleSize="small"
description="Fork and extend to support modes of exchange"
icon="code-repo"
iconSize="medium"
isInline={true}
/>
<Definition
title="Exchange Ethereum based Tokens"
titleSize="small"
description="Enable trading for any ERC-20 or ERC-721 asset"
icon="eth-based-tokens"
iconSize="medium"
isInline={true}
/>
</Section>
<Section>
{_.map(offersData, (item, index) => (
<Definition
key={`offers-${index}`}
icon={item.icon}
title={item.title}
description={item.description}
isInlineIcon={true}
iconSize={240}
/>
))}
</Section>
<Banner
heading="Need more flexibility?"
subline="Dive into our docs, or contact us if needed"
mainCta={{
text: 'Get Started',
href: `${constants.URL_LAUNCH_KIT}/#table-of-contents`,
shouldOpenInNewTab: true,
}}
secondaryCta={{ text: 'Get in Touch', onClick: this._onOpenContactModal.bind(this) }}
/>
<ModalContact isOpen={this.state.isContactModalOpen} onDismiss={this._onDismissContactModal} />
</SiteWrap>
);
}
public _onOpenContactModal = (): void => {
this.setState({ isContactModalOpen: true });
};
public _onDismissContactModal = (): void => {
this.setState({ isContactModalOpen: false });
};
}
const HeroActions = () => (
<React.Fragment>
<Button href={constants.URL_LAUNCH_KIT} isInline={true} target="_blank">
Get Started
</Button>
<Button href={constants.URL_LAUNCH_KIT_BLOG_POST} isTransparent={true} isInline={true} target="_blank">
Learn More!
</Button>
</React.Fragment>
);