import { colors } from '@0xproject/react-shared'; import * as _ from 'lodash'; import * as React from 'react'; import { Container } from 'ts/components/ui/container'; import { DropDown } from 'ts/components/ui/drop_down'; import { Link } from 'ts/components/ui/link'; import { Text } from 'ts/components/ui/text'; import { ALink, Deco, Key, LinkType, WebsitePaths } from 'ts/types'; import { constants } from 'ts/utils/constants'; import { Translate } from 'ts/utils/translate'; const gettingStartedKeyToLinkInfo1: ALink[] = [ { title: Key.BuildARelayer, to: `${WebsitePaths.Wiki}#Build-A-Relayer`, }, { title: Key.OrderBasics, to: `${WebsitePaths.Wiki}#Create,-Validate,-Fill-Order`, }, ]; const gettingStartedKeyToLinkInfo2: ALink[] = [ { title: Key.DevelopOnEthereum, to: `${WebsitePaths.Wiki}#Ethereum-Development`, }, { title: Key.UseSharedLiquidity, to: `${WebsitePaths.Wiki}#Find,-Submit,-Fill-Order-From-Relayer`, }, ]; const popularDocsToLinkInfos: ALink[] = [ { title: Key.ZeroExJs, to: WebsitePaths.ZeroExJs, }, { title: Key.Connect, to: WebsitePaths.Connect, }, { title: Key.SmartContract, to: WebsitePaths.SmartContracts, }, ]; const usefulLinksToLinkInfo: ALink[] = [ { title: Key.Github, to: constants.URL_GITHUB_ORG, type: LinkType.External, shouldOpenInNewTab: true, }, { title: Key.Whitepaper, to: WebsitePaths.Whitepaper, type: LinkType.External, shouldOpenInNewTab: true, }, { title: Key.Sandbox, to: constants.URL_SANDBOX, type: LinkType.External, shouldOpenInNewTab: true, }, ]; interface DevelopersDropDownProps { translate: Translate; menuItemStyles: React.CSSProperties; menuIconStyle: React.CSSProperties; } interface DevelopersDropDownState {} export class DevelopersDropDown extends React.Component { public render(): React.ReactNode { const activeNode = ( {this.props.translate.get(Key.Developers, Deco.Cap)} ); return ( ); } private _renderDropdownMenu(): React.ReactNode { const dropdownMenu = (
{this._renderTitle('Getting started')}
{this._renderLinkSection(gettingStartedKeyToLinkInfo1)}
{this._renderLinkSection(gettingStartedKeyToLinkInfo2)}
{this._renderTitle('Popular docs')}
{this._renderLinkSection(popularDocsToLinkInfos)}
{this._renderTitle('Useful links')}
{this._renderLinkSection(usefulLinksToLinkInfo)}
{this.props.translate.get(Key.ViewAllDocumentation, Deco.Upper)}
); return dropdownMenu; } private _renderTitle(title: string): React.ReactNode { return (
{title.toUpperCase()}
); } private _renderLinkSection(links: ALink[]): React.ReactNode { const linkStyle: React.CSSProperties = { color: colors.lightBlueA700, fontFamily: 'Roboto, Roboto Mono', }; const numLinks = links.length; let i = 0; const renderLinks = _.map(links, (link: ALink) => { i++; const isLast = i === numLinks; const linkText = this.props.translate.get(link.title as Key, Deco.Cap); return (
{linkText}
); }); return
{renderLinks}
; } }