From 88b7c214f71fedc7d3acf63d1279da9b1e98a04f Mon Sep 17 00:00:00 2001 From: Fred Carlsen Date: Thu, 21 Feb 2019 11:16:52 +0100 Subject: [PATCH] Add extensions page --- packages/website/ts/components/card.tsx | 69 +++++++++ .../dropdowns/dropdown_products.tsx | 5 + packages/website/ts/index.tsx | 2 + packages/website/ts/pages/extensions.tsx | 143 ++++++++++++++++++ packages/website/ts/types.ts | 1 + 5 files changed, 220 insertions(+) create mode 100644 packages/website/ts/components/card.tsx create mode 100644 packages/website/ts/pages/extensions.tsx diff --git a/packages/website/ts/components/card.tsx b/packages/website/ts/components/card.tsx new file mode 100644 index 0000000000..02b3136f67 --- /dev/null +++ b/packages/website/ts/components/card.tsx @@ -0,0 +1,69 @@ +import * as React from 'react'; +import styled from 'styled-components'; + +import { colors } from 'ts/style/colors'; + +import { Icon } from 'ts/components/icon'; +import { Heading, Paragraph } from 'ts/components/text'; + +interface CardProps { + icon: string; + heading: string; + description: string; + href?: string; +} + +export const Card: React.StatelessComponent = (props: CardProps) => { + const { heading, description, icon } = props; + + return ( + + + + + + + {heading} + + {description} + + + ); +}; + +const StyledCard = styled.div` + background-color: ${colors.backgroundDark}; + width: 100%; + min-height: 520px; + flex: 0 0 auto; + transition: opacity 0.4s ease-in-out; + + @media (max-width: 1200px) { + width: 100%; + } + + @media (max-width: 500px) { + width: calc(100vw - 10px - 30px); + height: 450px; + } +`; + +const CardHead = styled.div` + background-color: ${colors.brandDark}; + height: 300px; + display: flex; + justify-content: center; + align-items: center; + + @media (max-width: 500px) { + height: 240px; + } +`; + +const CardContent = styled.div` + padding: 30px; + + @media (max-width: 500px) { + padding: 20px; + } +`; diff --git a/packages/website/ts/components/dropdowns/dropdown_products.tsx b/packages/website/ts/components/dropdowns/dropdown_products.tsx index 6cb94f14ca..fb85130c14 100644 --- a/packages/website/ts/components/dropdowns/dropdown_products.tsx +++ b/packages/website/ts/components/dropdowns/dropdown_products.tsx @@ -17,6 +17,11 @@ const navData = [ description: 'Build on the 0x protocol', url: WebsitePaths.LaunchKit, }, + { + title: '0x Extensions', + description: 'Support new types of trading on your relayer with 0x Extensions', + url: WebsitePaths.Extensions, + }, { title: 'Governance', description: 'Vote on changes to the 0x protocol', diff --git a/packages/website/ts/index.tsx b/packages/website/ts/index.tsx index 403db1dc22..347471cd41 100644 --- a/packages/website/ts/index.tsx +++ b/packages/website/ts/index.tsx @@ -22,6 +22,7 @@ import { NextAboutPress } from 'ts/pages/about/press'; import { NextAboutTeam } from 'ts/pages/about/team'; import { Credits } from 'ts/pages/credits'; import { NextEcosystem } from 'ts/pages/ecosystem'; +import { Extensions } from 'ts/pages/extensions'; import { Governance } from 'ts/pages/governance/governance'; import { Next0xInstant } from 'ts/pages/instant'; import { NextLanding } from 'ts/pages/landing'; @@ -117,6 +118,7 @@ render( + + + } + actions={} + /> + +
+ + {_.map(extensionData, (item, index) => ( + + ))} + +
+ + + + + ); + } + + public _onOpenContactModal = (): void => { + this.setState({ isContactModalOpen: true }); + }; + + public _onDismissContactModal = (): void => { + this.setState({ isContactModalOpen: false }); + }; +} + +const HeroActions = () => ( + + + + + +); + +const Grid = styled.div` + display: grid; + grid-template-columns: repeat(1, 1fr); + grid-column-gap: 30px; + grid-row-gap: 30px; + + @media (min-width: 500px) { + grid-template-columns: repeat(2, 1fr); + } + + @media (min-width: 900px) { + grid-template-columns: repeat(3, 1fr); + } +`; diff --git a/packages/website/ts/types.ts b/packages/website/ts/types.ts index 49e2869671..2b4abc1b1e 100644 --- a/packages/website/ts/types.ts +++ b/packages/website/ts/types.ts @@ -386,6 +386,7 @@ export enum WebsitePaths { Careers = '/careers', Credits = '/credits', Vote = '/vote', + Extensions = '/extensions', } export enum DocPackages {