Removes <Link> component, clean up Button.tsx
This commit is contained in:
parent
f846e2f6e0
commit
81690d1ce5
@ -1,7 +1,7 @@
|
|||||||
import * as React from 'react';
|
import * as React from 'react';
|
||||||
import styled from 'styled-components';
|
import styled from 'styled-components';
|
||||||
|
|
||||||
import { Link } from 'ts/@next/components/button';
|
import { Button } from 'ts/@next/components/button';
|
||||||
import { ChapterLink } from 'ts/@next/components/chapter_link';
|
import { ChapterLink } from 'ts/@next/components/chapter_link';
|
||||||
import { Column, Section } from 'ts/@next/components/newLayout';
|
import { Column, Section } from 'ts/@next/components/newLayout';
|
||||||
import { SiteWrap } from 'ts/@next/components/siteWrap';
|
import { SiteWrap } from 'ts/@next/components/siteWrap';
|
||||||
@ -37,9 +37,12 @@ export const AboutPageLayout = (props: Props) => (
|
|||||||
</AnimatedParagraph>
|
</AnimatedParagraph>
|
||||||
|
|
||||||
{(props.linkLabel && props.linkUrl) &&
|
{(props.linkLabel && props.linkUrl) &&
|
||||||
<AnimatedLink href={props.linkUrl} isNoBorder={true} isWithArrow={true}>
|
<AnimatedLink
|
||||||
|
to={props.linkUrl}
|
||||||
|
isWithArrow={true}
|
||||||
|
>
|
||||||
{props.linkLabel}
|
{props.linkLabel}
|
||||||
</AnimatedLink>
|
</AnimatedLink>
|
||||||
}
|
}
|
||||||
</Column>
|
</Column>
|
||||||
</Column>
|
</Column>
|
||||||
@ -57,6 +60,6 @@ const AnimatedParagraph = styled(Paragraph)`
|
|||||||
${addFadeInAnimation('0.5s', '0.15s')}
|
${addFadeInAnimation('0.5s', '0.15s')}
|
||||||
`;
|
`;
|
||||||
|
|
||||||
const AnimatedLink = styled(Link)`
|
const AnimatedLink = styled(Button)`
|
||||||
${addFadeInAnimation('0.6s', '0.3s')}
|
${addFadeInAnimation('0.6s', '0.3s')}
|
||||||
`;
|
`;
|
||||||
|
@ -3,7 +3,7 @@ import styled from 'styled-components';
|
|||||||
|
|
||||||
import {colors} from 'ts/style/colors';
|
import {colors} from 'ts/style/colors';
|
||||||
|
|
||||||
import {Button, Link} from 'ts/@next/components/button';
|
import {Button} from 'ts/@next/components/button';
|
||||||
import {Wrap, WrapCentered} from 'ts/@next/components/layout';
|
import {Wrap, WrapCentered} from 'ts/@next/components/layout';
|
||||||
import {ThemeInterface} from 'ts/@next/components/siteWrap';
|
import {ThemeInterface} from 'ts/@next/components/siteWrap';
|
||||||
import {Heading, Paragraph} from 'ts/@next/components/text';
|
import {Heading, Paragraph} from 'ts/@next/components/text';
|
||||||
@ -56,11 +56,21 @@ export const Banner: React.StatelessComponent<Props> = (props: Props) => {
|
|||||||
<Column colWidth="1/2" isPadLarge={true}>
|
<Column colWidth="1/2" isPadLarge={true}>
|
||||||
<ButtonWrap>
|
<ButtonWrap>
|
||||||
{mainCta &&
|
{mainCta &&
|
||||||
<Link isTransparent={false} href={mainCta.href}>{mainCta.text}</Link>
|
<Button
|
||||||
|
isTransparent={false}
|
||||||
|
href={mainCta.href}
|
||||||
|
>
|
||||||
|
{mainCta.text}
|
||||||
|
</Button>
|
||||||
}
|
}
|
||||||
|
|
||||||
{secondaryCta &&
|
{secondaryCta &&
|
||||||
<Button href={secondaryCta.href} isTransparent={true}>{secondaryCta.text}</Button>
|
<Button
|
||||||
|
href={secondaryCta.href}
|
||||||
|
isTransparent={true}
|
||||||
|
>
|
||||||
|
{secondaryCta.text}
|
||||||
|
</Button>
|
||||||
}
|
}
|
||||||
</ButtonWrap>
|
</ButtonWrap>
|
||||||
</Column>
|
</Column>
|
||||||
|
@ -1,15 +1,15 @@
|
|||||||
import * as React from 'react';
|
import * as React from 'react';
|
||||||
import styled from 'styled-components';
|
import styled from 'styled-components';
|
||||||
|
|
||||||
import {Button, Link} from 'ts/@next/components/button';
|
import {Button} from 'ts/@next/components/button';
|
||||||
import {Icon} from 'ts/@next/components/icon';
|
import {Icon} from 'ts/@next/components/icon';
|
||||||
|
|
||||||
interface Props {
|
interface Props {
|
||||||
icon: string;
|
icon: string;
|
||||||
title: string;
|
title: string;
|
||||||
linkLabel: string;
|
linkLabel: string;
|
||||||
linkUrl?: string;
|
linkUrl: string;
|
||||||
onClick?: () => void;
|
linkAction: () => void;
|
||||||
}
|
}
|
||||||
|
|
||||||
export const BlockIconLink = (props: Props) => (
|
export const BlockIconLink = (props: Props) => (
|
||||||
@ -25,29 +25,14 @@ export const BlockIconLink = (props: Props) => (
|
|||||||
{props.title}
|
{props.title}
|
||||||
</Title>
|
</Title>
|
||||||
|
|
||||||
{props.linkUrl &&
|
<Button
|
||||||
<Link
|
isWithArrow={true}
|
||||||
isWithArrow={true}
|
isTransparent={true}
|
||||||
isTransparent={true}
|
href={props.linkUrl}
|
||||||
isNoBorder={true}
|
onClick={props.linkAction}
|
||||||
href={props.linkUrl}
|
>
|
||||||
onClick={props.onClick}
|
{props.linkLabel}
|
||||||
>
|
</Button>
|
||||||
{props.linkLabel}
|
|
||||||
</Link>
|
|
||||||
}
|
|
||||||
|
|
||||||
{props.onClick &&
|
|
||||||
<Button
|
|
||||||
isWithArrow={true}
|
|
||||||
isTransparent={true}
|
|
||||||
isNoBorder={true}
|
|
||||||
href={props.linkUrl}
|
|
||||||
onClick={props.onClick}
|
|
||||||
>
|
|
||||||
{props.linkLabel}
|
|
||||||
</Button>
|
|
||||||
}
|
|
||||||
</div>
|
</div>
|
||||||
</Wrap>
|
</Wrap>
|
||||||
);
|
);
|
||||||
|
@ -2,7 +2,6 @@ import * as React from 'react';
|
|||||||
import { Link as ReactRouterLink, NavLink as ReactRouterNavLink } from 'react-router-dom';
|
import { Link as ReactRouterLink, NavLink as ReactRouterNavLink } from 'react-router-dom';
|
||||||
import styled from 'styled-components';
|
import styled from 'styled-components';
|
||||||
|
|
||||||
import { BREAKPOINTS } from 'ts/@next/components/layout';
|
|
||||||
import { colors } from 'ts/style/colors';
|
import { colors } from 'ts/style/colors';
|
||||||
|
|
||||||
interface ButtonInterface {
|
interface ButtonInterface {
|
||||||
@ -11,7 +10,6 @@ interface ButtonInterface {
|
|||||||
children?: Node | string;
|
children?: Node | string;
|
||||||
isTransparent?: boolean;
|
isTransparent?: boolean;
|
||||||
isNoBorder?: boolean;
|
isNoBorder?: boolean;
|
||||||
isCentered?: boolean;
|
|
||||||
isNoPadding?: boolean;
|
isNoPadding?: boolean;
|
||||||
isWithArrow?: boolean;
|
isWithArrow?: boolean;
|
||||||
isAccentColor?: boolean;
|
isAccentColor?: boolean;
|
||||||
@ -25,11 +23,41 @@ interface ButtonInterface {
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
export const Button = styled.button<ButtonInterface>`
|
export const Button = (props: ButtonInterface) => {
|
||||||
|
const {
|
||||||
|
children,
|
||||||
|
href,
|
||||||
|
isWithArrow,
|
||||||
|
to,
|
||||||
|
} = props;
|
||||||
|
let linkElem;
|
||||||
|
|
||||||
|
if (props.href) { linkElem = 'a'; }
|
||||||
|
if (props.to) { linkElem = ReactRouterLink; }
|
||||||
|
|
||||||
|
const Component = linkElem ? ButtonBase.withComponent(linkElem) : ButtonBase;
|
||||||
|
|
||||||
|
return (
|
||||||
|
<Component {...props}>
|
||||||
|
{props.children}
|
||||||
|
|
||||||
|
{ isWithArrow &&
|
||||||
|
<svg width="16" height="15" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<path
|
||||||
|
d="M4.484.246l.024 1.411 8.146.053L.817 13.547l.996.996L13.65 2.706l.052 8.146 1.412.024L15.045.315 4.484.246z"
|
||||||
|
/>
|
||||||
|
</svg>
|
||||||
|
}
|
||||||
|
</Component>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
const ButtonBase = styled.button<ButtonInterface>`
|
||||||
appearance: none;
|
appearance: none;
|
||||||
border: ${props => !props.isNoBorder && `1px solid ${(!props.isTransparent || props.bgColor) ? (props.bgColor || colors.brandLight) : 'transparent'}`};
|
border: 1px solid transparent;
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
background-color: ${props => (!props.isTransparent || props.bgColor) ? (props.bgColor || colors.brandLight) : 'transparent'};
|
background-color: ${props => props.bgColor || colors.brandLight};
|
||||||
|
background-color: ${props => (props.isTransparent || props.isWithArrow) && 'transparent'}
|
||||||
border-color: ${props => (props.isTransparent && !props.isWithArrow) && 'rgba(255, 255, 255, .4)'};
|
border-color: ${props => (props.isTransparent && !props.isWithArrow) && 'rgba(255, 255, 255, .4)'};
|
||||||
color: ${props => props.isAccentColor ? props.theme.linkColor : (props.color || props.theme.textColor)};
|
color: ${props => props.isAccentColor ? props.theme.linkColor : (props.color || props.theme.textColor)};
|
||||||
padding: ${props => (!props.isNoPadding && !props.isWithArrow) && '18px 30px'};
|
padding: ${props => (!props.isNoPadding && !props.isWithArrow) && '18px 30px'};
|
||||||
@ -38,6 +66,7 @@ export const Button = styled.button<ButtonInterface>`
|
|||||||
line-height: normal;
|
line-height: normal;
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
|
outline: none;
|
||||||
transition: background-color 0.35s, border-color 0.35s;
|
transition: background-color 0.35s, border-color 0.35s;
|
||||||
|
|
||||||
svg {
|
svg {
|
||||||
@ -51,7 +80,7 @@ export const Button = styled.button<ButtonInterface>`
|
|||||||
}
|
}
|
||||||
|
|
||||||
&:hover {
|
&:hover {
|
||||||
background-color: ${props => !props.isTransparent && '#04BEA8'};
|
background-color: ${props => (!props.isTransparent && !props.isWithArrow) && '#04BEA8'};
|
||||||
border-color: ${props => (props.isTransparent && !props.isNoBorder && !props.isWithArrow) && '#00AE99'};
|
border-color: ${props => (props.isTransparent && !props.isNoBorder && !props.isWithArrow) && '#00AE99'};
|
||||||
|
|
||||||
svg {
|
svg {
|
||||||
@ -59,77 +88,3 @@ export const Button = styled.button<ButtonInterface>`
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
`;
|
`;
|
||||||
|
|
||||||
export const Link: React.ReactNode = (props: ButtonInterface) => {
|
|
||||||
const {
|
|
||||||
children,
|
|
||||||
href,
|
|
||||||
isWithArrow,
|
|
||||||
} = props;
|
|
||||||
const Component = Button.withComponent(ReactRouterLink);
|
|
||||||
|
|
||||||
return (
|
|
||||||
<Component to={href} {...props}>
|
|
||||||
{children}
|
|
||||||
|
|
||||||
{ isWithArrow &&
|
|
||||||
<svg width="16" height="15" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
||||||
<path
|
|
||||||
d="M4.484.246l.024 1.411 8.146.053L.817 13.547l.996.996L13.65 2.706l.052 8.146 1.412.024L15.045.315 4.484.246z"
|
|
||||||
/>
|
|
||||||
</svg>
|
|
||||||
}
|
|
||||||
</Component>
|
|
||||||
);
|
|
||||||
};
|
|
||||||
|
|
||||||
Link.defaultProps = {
|
|
||||||
isTransparent: true,
|
|
||||||
};
|
|
||||||
|
|
||||||
export const NavLink: React.ReactNode = (props: ButtonInterface) => {
|
|
||||||
const {
|
|
||||||
children,
|
|
||||||
href,
|
|
||||||
isWithArrow,
|
|
||||||
} = props;
|
|
||||||
const Component = Button.withComponent(ReactRouterNavLink);
|
|
||||||
|
|
||||||
return (
|
|
||||||
<Component to={href} {...props}>
|
|
||||||
{children}
|
|
||||||
|
|
||||||
{ isWithArrow &&
|
|
||||||
<svg width="16" height="15" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
||||||
<path
|
|
||||||
d="M4.484.246l.024 1.411 8.146.053L.817 13.547l.996.996L13.65 2.706l.052 8.146 1.412.024L15.045.315 4.484.246z"
|
|
||||||
/>
|
|
||||||
</svg>
|
|
||||||
}
|
|
||||||
</Component>
|
|
||||||
);
|
|
||||||
};
|
|
||||||
|
|
||||||
NavLink.defaultProps = {
|
|
||||||
isTransparent: true,
|
|
||||||
};
|
|
||||||
|
|
||||||
// Added this, & + & doesnt really work since we switch with element types...
|
|
||||||
export const ButtonWrap = styled.div`
|
|
||||||
button + button,
|
|
||||||
a + a,
|
|
||||||
a + button,
|
|
||||||
button + a {
|
|
||||||
@media (min-width: ${BREAKPOINTS.mobile}) {
|
|
||||||
margin-left: 10px;
|
|
||||||
}
|
|
||||||
|
|
||||||
@media (max-width: ${BREAKPOINTS.mobile}) {
|
|
||||||
margin: 0 10px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@media (max-width: ${BREAKPOINTS.mobile}) {
|
|
||||||
white-space: nowrap;
|
|
||||||
}
|
|
||||||
`;
|
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
import * as React from 'react';
|
import * as React from 'react';
|
||||||
import styled from 'styled-components';
|
import styled from 'styled-components';
|
||||||
|
|
||||||
import {Link} from 'ts/@next/components/button';
|
import { Button } from 'ts/@next/components/button';
|
||||||
import { Icon } from 'ts/@next/components/icon';
|
import { Icon } from 'ts/@next/components/icon';
|
||||||
import { Paragraph } from 'ts/@next/components/text';
|
import { Paragraph } from 'ts/@next/components/text';
|
||||||
|
|
||||||
@ -42,15 +42,13 @@ export const Definition = (props: Props) => (
|
|||||||
{props.actions &&
|
{props.actions &&
|
||||||
<LinkWrap>
|
<LinkWrap>
|
||||||
{props.actions.map((item, index) => (
|
{props.actions.map((item, index) => (
|
||||||
<Link
|
<Button
|
||||||
href={item.url}
|
href={item.url}
|
||||||
isWithArrow={true}
|
isWithArrow={true}
|
||||||
isTransparent={true}
|
|
||||||
isNoBorder={true}
|
|
||||||
isAccentColor={true}
|
isAccentColor={true}
|
||||||
>
|
>
|
||||||
{item.label}
|
{item.label}
|
||||||
</Link>
|
</Button>
|
||||||
))}
|
))}
|
||||||
</LinkWrap>
|
</LinkWrap>
|
||||||
}
|
}
|
||||||
|
@ -3,7 +3,7 @@ import * as React from 'react';
|
|||||||
import {Link as RouterLink} from 'react-router-dom';
|
import {Link as RouterLink} from 'react-router-dom';
|
||||||
import styled, {withTheme} from 'styled-components';
|
import styled, {withTheme} from 'styled-components';
|
||||||
|
|
||||||
import {Link} from 'ts/@next/components/button';
|
import {Button} from 'ts/@next/components/button';
|
||||||
import {Column, Wrap, WrapGrid} from 'ts/@next/components/layout';
|
import {Column, Wrap, WrapGrid} from 'ts/@next/components/layout';
|
||||||
import {Heading} from 'ts/@next/components/text';
|
import {Heading} from 'ts/@next/components/text';
|
||||||
import {GlobalStyle} from 'ts/@next/constants/globalStyle';
|
import {GlobalStyle} from 'ts/@next/constants/globalStyle';
|
||||||
@ -172,7 +172,7 @@ const StyledWrap = styled(Wrap)`
|
|||||||
}
|
}
|
||||||
`;
|
`;
|
||||||
|
|
||||||
const StyledLink = styled(Link)`
|
const StyledLink = styled(Button)`
|
||||||
width: 100%;
|
width: 100%;
|
||||||
position: absolute;
|
position: absolute;
|
||||||
bottom: 0;
|
bottom: 0;
|
||||||
|
@ -5,7 +5,7 @@ import styled, { withTheme } from 'styled-components';
|
|||||||
|
|
||||||
import { colors } from 'ts/style/colors';
|
import { colors } from 'ts/style/colors';
|
||||||
|
|
||||||
import { Button, Link, NavLink } from 'ts/@next/components/button';
|
import { Button } from 'ts/@next/components/button';
|
||||||
import { DropdownDevelopers } from 'ts/@next/components/dropdowns/dropdown_developers';
|
import { DropdownDevelopers } from 'ts/@next/components/dropdowns/dropdown_developers';
|
||||||
import { DropdownProducts } from 'ts/@next/components/dropdowns/dropdown_products';
|
import { DropdownProducts } from 'ts/@next/components/dropdowns/dropdown_products';
|
||||||
import { Dropdown } from 'ts/@next/components/dropdowns/mock';
|
import { Dropdown } from 'ts/@next/components/dropdowns/mock';
|
||||||
@ -85,29 +85,6 @@ class HeaderBase extends React.Component<HeaderProps, HeaderState> {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
public getNavItem = (link: NavItem, index: number): React.ReactNode => {
|
|
||||||
const Wrapper = link.dropdownComponent ? LinkWrap : React.Fragment;
|
|
||||||
const Subnav = link.dropdownComponent;
|
|
||||||
|
|
||||||
return (
|
|
||||||
<Wrapper key={`nav-${index}`}>
|
|
||||||
<StyledNavLink
|
|
||||||
href={link.url}
|
|
||||||
isTransparent={true}
|
|
||||||
isNoBorder={true}
|
|
||||||
>
|
|
||||||
{link.text}
|
|
||||||
</StyledNavLink>
|
|
||||||
|
|
||||||
{link.dropdownComponent &&
|
|
||||||
<DropdownWrap width={link.dropdownWidth}>
|
|
||||||
<Subnav />
|
|
||||||
</DropdownWrap>
|
|
||||||
}
|
|
||||||
</Wrapper>
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
public render(): React.ReactNode {
|
public render(): React.ReactNode {
|
||||||
const { isOpen } = this.state;
|
const { isOpen } = this.state;
|
||||||
const { isNavToggled, toggleMobileNav, theme } = this.props;
|
const { isNavToggled, toggleMobileNav, theme } = this.props;
|
||||||
@ -121,7 +98,7 @@ class HeaderBase extends React.Component<HeaderProps, HeaderState> {
|
|||||||
|
|
||||||
<StyledButtonWrap>
|
<StyledButtonWrap>
|
||||||
{_.map(navItems, (link, index) => (
|
{_.map(navItems, (link, index) => (
|
||||||
this.getNavItem(link, index)
|
<NavItem link={link} index={index} />
|
||||||
))}
|
))}
|
||||||
</StyledButtonWrap>
|
</StyledButtonWrap>
|
||||||
|
|
||||||
@ -143,6 +120,30 @@ class HeaderBase extends React.Component<HeaderProps, HeaderState> {
|
|||||||
|
|
||||||
export const Header = withTheme(HeaderBase);
|
export const Header = withTheme(HeaderBase);
|
||||||
|
|
||||||
|
const NavItem = (props): React.ReactNode => {
|
||||||
|
const { link, index } = props;
|
||||||
|
const Wrapper = link.dropdownComponent ? LinkWrap : React.Fragment;
|
||||||
|
const Subnav = link.dropdownComponent;
|
||||||
|
|
||||||
|
return (
|
||||||
|
<Wrapper key={`nav-${index}`}>
|
||||||
|
<StyledNavLink
|
||||||
|
to={link.url}
|
||||||
|
isTransparent={true}
|
||||||
|
isNoBorder={true}
|
||||||
|
>
|
||||||
|
{link.text}
|
||||||
|
</StyledNavLink>
|
||||||
|
|
||||||
|
{link.dropdownComponent &&
|
||||||
|
<DropdownWrap width={link.dropdownWidth}>
|
||||||
|
<Subnav />
|
||||||
|
</DropdownWrap>
|
||||||
|
}
|
||||||
|
</Wrapper>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
const StyledHeader = styled(Section.withComponent('header'))<HeaderProps>`
|
const StyledHeader = styled(Section.withComponent('header'))<HeaderProps>`
|
||||||
@media (max-width: 800px) {
|
@media (max-width: 800px) {
|
||||||
min-height: ${props => props.isOpen ? '385px' : '70px'};
|
min-height: ${props => props.isOpen ? '385px' : '70px'};
|
||||||
@ -156,11 +157,32 @@ const StyledHeader = styled(Section.withComponent('header'))<HeaderProps>`
|
|||||||
}
|
}
|
||||||
`;
|
`;
|
||||||
|
|
||||||
const StyledNavLink = styled(NavLink).attrs({
|
const LinkWrap = styled.div`
|
||||||
|
position: relative;
|
||||||
|
|
||||||
|
a {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (min-width: 800px) {
|
||||||
|
&:hover > div {
|
||||||
|
display: block;
|
||||||
|
visibility: visible;
|
||||||
|
opacity: 1;
|
||||||
|
transform: translate3d(0, 0, 0);
|
||||||
|
transition: opacity 0.35s, transform 0.35s, visibility 0s;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
`;
|
||||||
|
|
||||||
|
const StyledNavLink = styled(ReactRouterLink).attrs({
|
||||||
activeStyle: { opacity: 1 },
|
activeStyle: { opacity: 1 },
|
||||||
})`
|
})`
|
||||||
|
color: ${props => props.theme.textColor};
|
||||||
opacity: 0.5;
|
opacity: 0.5;
|
||||||
transition: opacity 0.35s;
|
transition: opacity 0.35s;
|
||||||
|
padding: 15px 0;
|
||||||
|
margin: 0 30px;
|
||||||
|
|
||||||
&:hover {
|
&:hover {
|
||||||
opacity: 1;
|
opacity: 1;
|
||||||
@ -186,56 +208,6 @@ const StyledButtonWrap = styled.div`
|
|||||||
@media (max-width: 800px) {
|
@media (max-width: 800px) {
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
@media (max-width: 800px) {
|
|
||||||
background-color: #022924;
|
|
||||||
display: flex;
|
|
||||||
flex-wrap: wrap;
|
|
||||||
padding: 20px 20px;
|
|
||||||
|
|
||||||
a {
|
|
||||||
text-align: left;
|
|
||||||
padding-left: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
a + a {
|
|
||||||
margin-left: 0;
|
|
||||||
}
|
|
||||||
} */
|
|
||||||
`;
|
|
||||||
|
|
||||||
const MobileProductLinksWrap = styled(StyledButtonWrap)`
|
|
||||||
display: none;
|
|
||||||
|
|
||||||
@media (max-width: 800px) {
|
|
||||||
display: block;
|
|
||||||
background-color: transparent;
|
|
||||||
flex-direction: column;
|
|
||||||
|
|
||||||
a {
|
|
||||||
display: block;
|
|
||||||
width: 100%;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
`;
|
|
||||||
|
|
||||||
const LinkWrap = styled.div`
|
|
||||||
position: relative;
|
|
||||||
|
|
||||||
a {
|
|
||||||
display: block;
|
|
||||||
}
|
|
||||||
|
|
||||||
@media (min-width: 800px) {
|
|
||||||
&:hover > div {
|
|
||||||
display: block;
|
|
||||||
visibility: visible;
|
|
||||||
opacity: 1;
|
|
||||||
transform: translate3d(0, 0, 0);
|
|
||||||
transition: opacity 0.35s, transform 0.35s, visibility 0s;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
`;
|
`;
|
||||||
|
|
||||||
const DropdownWrap = styled.div<DropdownWrapInterface>`
|
const DropdownWrap = styled.div<DropdownWrapInterface>`
|
||||||
@ -282,17 +254,6 @@ const DropdownWrap = styled.div<DropdownWrapInterface>`
|
|||||||
}
|
}
|
||||||
`;
|
`;
|
||||||
|
|
||||||
const Nav = styled.div`
|
|
||||||
@media (max-width: 800px) {
|
|
||||||
background-color: ${props => props.theme.bgColor};
|
|
||||||
position: absolute;
|
|
||||||
top: 0;
|
|
||||||
left: 0;
|
|
||||||
right: 0;
|
|
||||||
padding-top: 65px;
|
|
||||||
}
|
|
||||||
`;
|
|
||||||
|
|
||||||
const TradeButton = styled(Button)`
|
const TradeButton = styled(Button)`
|
||||||
padding: 14px 22px;
|
padding: 14px 22px;
|
||||||
|
|
||||||
|
@ -24,13 +24,13 @@ export const SectionLandingCta = (props: Props) => (
|
|||||||
icon="getStarted"
|
icon="getStarted"
|
||||||
title="Ready to build on 0x?"
|
title="Ready to build on 0x?"
|
||||||
linkLabel="Get Started"
|
linkLabel="Get Started"
|
||||||
linkUrl="#"
|
linkUrl="https://0xproject.com/docs"
|
||||||
/>
|
/>
|
||||||
<BlockIconLink
|
<BlockIconLink
|
||||||
icon="getInTouch"
|
icon="getInTouch"
|
||||||
title="Want help from the 0x team?"
|
title="Want help from the 0x team?"
|
||||||
linkLabel="Get in Touch"
|
linkLabel="Get in Touch"
|
||||||
onClick={props.onContactClick}
|
linkAction={props.onContactClick}
|
||||||
/>
|
/>
|
||||||
</Section>
|
</Section>
|
||||||
);
|
);
|
||||||
|
@ -21,7 +21,7 @@ const HeroActions = () => (
|
|||||||
Get Started
|
Get Started
|
||||||
</Button>
|
</Button>
|
||||||
|
|
||||||
<Button href="/why" isTransparent={true} isInline={true}>
|
<Button to="/next/why" isTransparent={true} isInline={true}>
|
||||||
Learn More
|
Learn More
|
||||||
</Button>
|
</Button>
|
||||||
</>
|
</>
|
||||||
|
@ -3,7 +3,7 @@ import * as React from 'react';
|
|||||||
import styled from 'styled-components';
|
import styled from 'styled-components';
|
||||||
|
|
||||||
import { AboutPageLayout } from 'ts/@next/components/aboutPageLayout';
|
import { AboutPageLayout } from 'ts/@next/components/aboutPageLayout';
|
||||||
import { Link } from 'ts/@next/components/button';
|
import { Button } from 'ts/@next/components/button';
|
||||||
import { Column, FlexWrap, Section } from 'ts/@next/components/newLayout';
|
import { Column, FlexWrap, Section } from 'ts/@next/components/newLayout';
|
||||||
import { Separator } from 'ts/@next/components/separator';
|
import { Separator } from 'ts/@next/components/separator';
|
||||||
import { Heading, Paragraph } from 'ts/@next/components/text';
|
import { Heading, Paragraph } from 'ts/@next/components/text';
|
||||||
@ -61,7 +61,7 @@ const Highlight = ({ highlight }) => (
|
|||||||
|
|
||||||
<Column width="60%" maxWidth="560px">
|
<Column width="60%" maxWidth="560px">
|
||||||
<Paragraph isMuted={false}>{highlight.text}</Paragraph>
|
<Paragraph isMuted={false}>{highlight.text}</Paragraph>
|
||||||
<Link href={highlight.href} isWithArrow={true} isNoBorder={true}>Read Article</Link>
|
<Button href={highlight.href} isWithArrow={true} isNoBorder={true}>Read Article</Button>
|
||||||
</Column>
|
</Column>
|
||||||
</HighlightWrap>
|
</HighlightWrap>
|
||||||
);
|
);
|
||||||
|
@ -8,7 +8,7 @@ import { colors } from 'ts/style/colors';
|
|||||||
import {Hero} from 'ts/@next/components/hero';
|
import {Hero} from 'ts/@next/components/hero';
|
||||||
|
|
||||||
import { Banner } from 'ts/@next/components/banner';
|
import { Banner } from 'ts/@next/components/banner';
|
||||||
import { Link } from 'ts/@next/components/button';
|
import { Button } from 'ts/@next/components/button';
|
||||||
import { Icon } from 'ts/@next/components/icon';
|
import { Icon } from 'ts/@next/components/icon';
|
||||||
import { SiteWrap } from 'ts/@next/components/siteWrap';
|
import { SiteWrap } from 'ts/@next/components/siteWrap';
|
||||||
import { Slide, Slider } from 'ts/@next/components/slider/slider';
|
import { Slide, Slider } from 'ts/@next/components/slider/slider';
|
||||||
@ -84,14 +84,13 @@ export class NextWhy extends React.PureComponent {
|
|||||||
title="The exchange layer for the crypto economy"
|
title="The exchange layer for the crypto economy"
|
||||||
description="The world's assets are becoming tokenized on public blockchains. 0x Protocol is free, open-source infrastructure that allows anyone in the world to build products that enable the purchasing and trading of crypto tokens."
|
description="The world's assets are becoming tokenized on public blockchains. 0x Protocol is free, open-source infrastructure that allows anyone in the world to build products that enable the purchasing and trading of crypto tokens."
|
||||||
actions={
|
actions={
|
||||||
<Link
|
<Button
|
||||||
href="/docs"
|
href="/docs"
|
||||||
isCentered={true}
|
|
||||||
isWithArrow={true}
|
isWithArrow={true}
|
||||||
isAccentColor={true}
|
isAccentColor={true}
|
||||||
>
|
>
|
||||||
Build on 0x
|
Build on 0x
|
||||||
</Link>
|
</Button>
|
||||||
}
|
}
|
||||||
/>
|
/>
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user