187 lines
		
	
	
		
			4.9 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			187 lines
		
	
	
		
			4.9 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
import * as _ from 'lodash';
 | 
						|
import * as React from 'react';
 | 
						|
import {Link as RouterLink} from 'react-router-dom';
 | 
						|
import styled, {withTheme} from 'styled-components';
 | 
						|
 | 
						|
import {Button} from 'ts/@next/components/button';
 | 
						|
import {Column, FlexWrap, WrapGrid} from 'ts/@next/components/newLayout';
 | 
						|
import {ThemeValuesInterface} from 'ts/@next/components/siteWrap';
 | 
						|
import {Heading} from 'ts/@next/components/text';
 | 
						|
 | 
						|
interface Props {
 | 
						|
    theme: ThemeValuesInterface;
 | 
						|
}
 | 
						|
 | 
						|
const introData = [
 | 
						|
    {
 | 
						|
        label: 'Build a relayer',
 | 
						|
        url: 'https://0x.org/wiki#Build-A-Relayer',
 | 
						|
    },
 | 
						|
    {
 | 
						|
        label: 'Develop on Ethereum',
 | 
						|
        url: 'https://0x.org/wiki#Ethereum-Development',
 | 
						|
    },
 | 
						|
    {
 | 
						|
        label: 'Make & take orders',
 | 
						|
        url: 'https://0x.org/wiki#Create,-Validate,-Fill-Order',
 | 
						|
    },
 | 
						|
    {
 | 
						|
        label: 'Use networked liquidity',
 | 
						|
        url: 'https://0x.org/wiki#Find,-Submit,-Fill-Order-From-Relayer',
 | 
						|
    },
 | 
						|
];
 | 
						|
 | 
						|
const docsData = [
 | 
						|
    {
 | 
						|
        label: '0x.js',
 | 
						|
        url: 'https://0x.org/docs/0x.js',
 | 
						|
    },
 | 
						|
    {
 | 
						|
        label: '0x Connect',
 | 
						|
        url: 'https://0x.org/docs/connect',
 | 
						|
    },
 | 
						|
    {
 | 
						|
        label: 'Smart Contract',
 | 
						|
        url: 'https://0x.org/docs/contracts',
 | 
						|
    },
 | 
						|
];
 | 
						|
 | 
						|
const linksData = [
 | 
						|
    {
 | 
						|
        label: 'Wiki',
 | 
						|
        url: 'https://0x.org/wiki',
 | 
						|
    },
 | 
						|
    {
 | 
						|
        label: 'Github',
 | 
						|
        url: 'https://github.com/0xProject',
 | 
						|
    },
 | 
						|
    {
 | 
						|
        label: 'Whitepaper',
 | 
						|
        url: 'https://github.com/0xProject/0x-protocol-specification/blob/master/v2/v2-specification.md',
 | 
						|
    },
 | 
						|
];
 | 
						|
 | 
						|
export const DropdownDevelopers: React.FunctionComponent<Props> = withTheme((props: Props) => (
 | 
						|
    <>
 | 
						|
        <DropdownWrap>
 | 
						|
            <div>
 | 
						|
                <Heading
 | 
						|
                    asElement="h4"
 | 
						|
                    size={14}
 | 
						|
                    color="inherit"
 | 
						|
                    marginBottom="15px"
 | 
						|
                    isMuted={0.35}
 | 
						|
                >
 | 
						|
                    Getting Started
 | 
						|
                </Heading>
 | 
						|
 | 
						|
                <StyledGrid isCentered={false} isWrapped={true}>
 | 
						|
                    {_.map(introData, (item, index) => (
 | 
						|
                        <li>
 | 
						|
                            <RouterLink
 | 
						|
                                key={`introLink-${index}`}
 | 
						|
                                to={item.url}
 | 
						|
                            >
 | 
						|
                                {item.label}
 | 
						|
                            </RouterLink>
 | 
						|
                        </li>
 | 
						|
                    ))}
 | 
						|
                </StyledGrid>
 | 
						|
            </div>
 | 
						|
 | 
						|
            <StyledWrap>
 | 
						|
                <Column width="calc(100% - 15px)">
 | 
						|
                    <Heading
 | 
						|
                        asElement="h4"
 | 
						|
                        size={14}
 | 
						|
                        color="inherit"
 | 
						|
                        marginBottom="15px"
 | 
						|
                        isMuted={0.35}
 | 
						|
                    >
 | 
						|
                        Popular Docs
 | 
						|
                    </Heading>
 | 
						|
 | 
						|
                    <ul>
 | 
						|
                        {_.map(docsData, (item, index) => (
 | 
						|
                            <li key={`docsLink-${index}`}>
 | 
						|
                                <RouterLink to={item.url}>
 | 
						|
                                    {item.label}
 | 
						|
                                </RouterLink>
 | 
						|
                            </li>
 | 
						|
                        ))}
 | 
						|
                    </ul>
 | 
						|
                </Column>
 | 
						|
 | 
						|
                <Column width="calc(100% - 15px)">
 | 
						|
                    <Heading
 | 
						|
                        asElement="h4"
 | 
						|
                        size={14}
 | 
						|
                        color="inherit"
 | 
						|
                        marginBottom="15px"
 | 
						|
                        isMuted={0.35}
 | 
						|
                    >
 | 
						|
                        Useful Links
 | 
						|
                    </Heading>
 | 
						|
 | 
						|
                    <ul>
 | 
						|
                        {_.map(linksData, (item, index) => (
 | 
						|
                            <li key={`usefulLink-${index}`}>
 | 
						|
                                <RouterLink to={item.url}>
 | 
						|
                                    {item.label}
 | 
						|
                                </RouterLink>
 | 
						|
                            </li>
 | 
						|
                        ))}
 | 
						|
                    </ul>
 | 
						|
                </Column>
 | 
						|
            </StyledWrap>
 | 
						|
 | 
						|
            <StyledLink to="https://0x.org/docs" bgColor={props.theme.dropdownButtonBg} isAccentColor={true} isNoBorder={true}>
 | 
						|
                View All Documentation
 | 
						|
            </StyledLink>
 | 
						|
        </DropdownWrap>
 | 
						|
    </>
 | 
						|
));
 | 
						|
 | 
						|
const DropdownWrap = styled.div`
 | 
						|
    padding: 15px 30px 75px 30px;
 | 
						|
 | 
						|
    a {
 | 
						|
        color: inherit;
 | 
						|
    }
 | 
						|
 | 
						|
    li {
 | 
						|
        margin: 8px 0;
 | 
						|
    }
 | 
						|
`;
 | 
						|
 | 
						|
const StyledGrid = styled(WrapGrid.withComponent('ul'))`
 | 
						|
    li {
 | 
						|
        width: 50%;
 | 
						|
        flex-shrink: 0;
 | 
						|
    }
 | 
						|
`;
 | 
						|
 | 
						|
const StyledWrap = styled(FlexWrap)`
 | 
						|
    padding-top: 20px;
 | 
						|
    margin-top: 30px;
 | 
						|
    position: relative;
 | 
						|
 | 
						|
    &:before {
 | 
						|
        content: '';
 | 
						|
        width: 100%;
 | 
						|
        height: 1px;
 | 
						|
        background-color: ${props => props.theme.dropdownColor};
 | 
						|
        opacity: 0.15;
 | 
						|
        position: absolute;
 | 
						|
        top: 0;
 | 
						|
        left:0;
 | 
						|
    }
 | 
						|
`;
 | 
						|
 | 
						|
const StyledLink = styled(Button)`
 | 
						|
    width: 100%;
 | 
						|
    position: absolute;
 | 
						|
    bottom: 0;
 | 
						|
    left: 0;
 | 
						|
`;
 |