aboutsummaryrefslogtreecommitdiffstats
path: root/packages/website/ts
diff options
context:
space:
mode:
Diffstat (limited to 'packages/website/ts')
-rw-r--r--packages/website/ts/@next/pages/market_maker.tsx127
-rw-r--r--packages/website/ts/index.tsx2
-rw-r--r--packages/website/ts/types.ts1
3 files changed, 130 insertions, 0 deletions
diff --git a/packages/website/ts/@next/pages/market_maker.tsx b/packages/website/ts/@next/pages/market_maker.tsx
new file mode 100644
index 000000000..aa14d4030
--- /dev/null
+++ b/packages/website/ts/@next/pages/market_maker.tsx
@@ -0,0 +1,127 @@
+import * as _ from 'lodash';
+import * as React from 'react';
+
+import {Hero} from 'ts/@next/components/hero';
+
+import { Banner } from 'ts/@next/components/banner';
+import { Button } from 'ts/@next/components/button';
+import { Definition } from 'ts/@next/components/definition';
+import { Icon } from 'ts/@next/components/icon';
+import { SiteWrap } from 'ts/@next/components/siteWrap';
+
+import { ModalContact } from 'ts/@next/components/modals/modal_contact';
+import {Section} from 'ts/@next/components/newLayout';
+
+import { WebsitePaths } from 'ts/types';
+
+const offersData = [
+ {
+ icon: 'supportForAllEthereumStandards',
+ title: 'Comprehensive Tutorials',
+ description: 'Stay on the bleeding edge of crypto by learning how to market make on decentralized exchanges. The network of 0x relayers provides market makers a first-mover advantage to capture larger spreads, arbitrage markets, and access a long-tail of new tokens not currently listed on centralized exchanges.',
+ },
+ {
+ icon: 'generateRevenueForYourBusiness-large',
+ title: 'Market Making Compensation',
+ description: (
+ <ul>
+ <li>Receive an infrastructure grant of $20,000+ for completing onboarding</li>
+ <li>Earn an additional $5,000 by referring other market makers to the Program</li>
+ </ul>
+ ),
+ },
+ {
+ icon: 'getInTouch',
+ title: 'Personalized Support',
+ description: 'The 0x MM Success Manager will walk you through how to read 0x order types, spin up an Ethereum node, set up your MM bot, and execute trades on the blockchain. We are more than happy to promptly answer your questions and give you complete onboarding assistance.',
+ },
+];
+
+export class NextMarketMaker extends React.Component {
+ public state = {
+ isContactModalOpen: false,
+ };
+ public render(): React.ReactNode {
+ return (
+ <SiteWrap theme="dark">
+ <Hero
+ isLargeTitle={false}
+ isFullWidth={false}
+ title="Bring liquidity to the exchanges of the future"
+ description="Market makers (MMs) are important stakeholders in the 0x ecosystem. The Market Making Program provides a set of resources that help onboard MMs bring liquidity to the 0x network. The program includes tutorials, a robust data platform, trade compensation, and 1:1 support from our MM Success Manager."
+ actions={<HeroActions/>}
+ />
+
+ <Section
+ bgColor="dark"
+ isFlex={true}
+ maxWidth="1170px"
+ >
+ <Definition
+ title="Secure"
+ titleSize="small"
+ description="Take full custody of your assets to eliminate counterparty risk"
+ icon="secureTrading"
+ iconSize="medium"
+ isInline={true}
+ />
+
+ <Definition
+ title="Networked Liquidity Pool"
+ titleSize="small"
+ description="Use one pool of capital across multiple relayers to trade against a large group of takers"
+ icon="networkedLiquidity"
+ iconSize="medium"
+ isInline={true}
+ />
+
+ <Definition
+ title="Low Cost"
+ titleSize="small"
+ description="Pay no fees on orders except for bulk cancellations"
+ icon="secureTrading"
+ 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: 'Explore the Docs', href: '/docs' }}
+ secondaryCta={{ text: 'Get in Touch', href: 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 = () => (
+ <>
+ <Button href="https://github.com/0xProject/0x-launch-kit" isInline={true}>
+ Get Started
+ </Button>
+ </>
+);
diff --git a/packages/website/ts/index.tsx b/packages/website/ts/index.tsx
index e9f629c09..ff44946dc 100644
--- a/packages/website/ts/index.tsx
+++ b/packages/website/ts/index.tsx
@@ -30,6 +30,7 @@ import { Next0xInstant } from 'ts/@next/pages/instant';
import { NextLanding } from 'ts/@next/pages/landing';
import { NextLaunchKit } from 'ts/@next/pages/launch_kit';
import { NextWhy } from 'ts/@next/pages/why';
+import { NextMarketMaker } from 'ts/@next/pages/market_maker';
// Check if we've introduced an update that requires us to clear the tradeHistory local storage entries
tradeHistoryStorage.clearIfRequired();
@@ -107,6 +108,7 @@ render(
<Route exact path={WebsitePaths.Instant} component={Next0xInstant as any} />
<Route exact path={WebsitePaths.LaunchKit} component={NextLaunchKit as any} />
<Route exact path={WebsitePaths.Ecosystem} component={NextEcosystem as any} />
+ <Route exact path={WebsitePaths.MarketMaker} component={NextMarketMaker as any} />
<Route exact path={WebsitePaths.AboutMission} component={NextAboutMission as any} />
<Route exact path={WebsitePaths.AboutTeam} component={NextAboutTeam as any} />
<Route exact path={WebsitePaths.AboutPress} component={NextAboutPress as any} />
diff --git a/packages/website/ts/types.ts b/packages/website/ts/types.ts
index 73e248713..064085324 100644
--- a/packages/website/ts/types.ts
+++ b/packages/website/ts/types.ts
@@ -359,6 +359,7 @@ export enum WebsitePaths {
LaunchKit = '/launch-kit',
Instant = '/instant',
Ecosystem = '/ecosystem',
+ MarketMaker = '/market-maker',
Why = '/why',
Whitepaper = '/pdfs/0x_white_paper.pdf',
SmartContracts = '/docs/contracts',