import { Link as SmartLink } from '@0x/react-shared'; import * as _ from 'lodash'; import * as React from 'react'; import MediaQuery from 'react-responsive'; import styled from 'styled-components'; import { Logo } from 'ts/components/logo'; import { Column, FlexWrap, WrapGrid } from 'ts/components/newLayout'; import { NewsletterForm } from 'ts/components/newsletter_form'; import { WebsitePaths } from 'ts/types'; import { constants } from 'ts/utils/constants'; interface LinkInterface { text: string; url: string; shouldOpenInNewTab?: boolean; } interface LinkRows { heading: string; isOnMobile?: boolean; links: LinkInterface[]; } interface LinkListProps { links: LinkInterface[]; } const linkRows: LinkRows[] = [ { heading: 'Products', isOnMobile: true, links: [ { url: WebsitePaths.Instant, text: '0x Instant' }, { url: WebsitePaths.LaunchKit, text: '0x Launch Kit' }, ], }, { heading: 'Developers', links: [ { url: WebsitePaths.Docs, text: 'Documentation' }, { url: constants.URL_GITHUB_ORG, text: 'GitHub', shouldOpenInNewTab: true }, { url: constants.URL_PROTOCOL_SPECIFICATION, text: 'Protocol Spec', shouldOpenInNewTab: true }, ], }, { heading: 'About', isOnMobile: true, links: [ { url: WebsitePaths.AboutMission, text: 'Mission' }, { url: WebsitePaths.AboutTeam, text: 'Team' }, { url: WebsitePaths.AboutJobs, text: 'Jobs' }, { url: WebsitePaths.AboutPress, text: 'Press' }, { url: WebsitePaths.Ecosystem, text: 'Grant Program' }, ], }, { heading: 'Community', isOnMobile: true, links: [ { url: constants.URL_TWITTER, text: 'Twitter', shouldOpenInNewTab: true }, { url: constants.URL_ZEROEX_CHAT, text: 'Discord Chat', shouldOpenInNewTab: true }, { url: constants.URL_FACEBOOK, text: 'Facebook', shouldOpenInNewTab: true }, { url: constants.URL_REDDIT, text: 'Reddit', shouldOpenInNewTab: true }, ], }, ]; export const Footer: React.StatelessComponent = () => ( {_.map(linkRows, (row: LinkRows, index) => ( {row.heading} ))} ); const LinkList = (props: LinkListProps) => ( {_.map(props.links, (link, index) => (
  • {link.text}
  • ))}
    ); const FooterWrap = styled.footer` padding: 40px 30px 30px 30px; margin-top: 30px; background-color: ${props => props.theme.footerBg}; color: ${props => props.theme.footerColor}; path { fill: ${props => props.theme.footerColor}; } @media (min-width: 768px) { height: 350px; } `; const FooterColumn = styled(Column)` @media (min-width: 768px) { width: ${props => props.width}; } @media (max-width: 768px) { text-align: left; } `; const FooterSectionWrap = styled(FooterColumn)` @media (max-width: 768px) { width: 50%; & + & { margin-top: 0; margin-bottom: 30px; } } `; const RowHeading = styled.h3` color: inherit; font-weight: 700; font-size: 16px; margin-bottom: 1.25em; opacity: 0.75; `; const List = styled.ul` li + li { margin-top: 8px; } `; const Link = styled(SmartLink)` color: inherit; opacity: 0.5; display: block; font-size: 16px; line-height: 20px; transition: opacity 0.25s; text-decoration: none; &:hover { opacity: 0.8; } `;