parent
c185804341
commit
27d220de87
14 changed files with 204 additions and 13 deletions
@ -0,0 +1,15 @@ |
|||||||
|
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; |
||||||
|
|
||||||
|
import RowBlock from 'components/row-block'; |
||||||
|
import { SubmitText, SubmitWrap } from './style'; |
||||||
|
|
||||||
|
const IconRowBlock = ({ url, icon, text, openExternal=false }) => ( |
||||||
|
<RowBlock url={ url } openExternal={openExternal}> |
||||||
|
<SubmitWrap> |
||||||
|
<FontAwesomeIcon icon={ icon } /> |
||||||
|
<SubmitText>{ text }</SubmitText> |
||||||
|
</SubmitWrap> |
||||||
|
</RowBlock> |
||||||
|
); |
||||||
|
|
||||||
|
export default IconRowBlock; |
@ -0,0 +1,20 @@ |
|||||||
|
import styled from 'styled-components'; |
||||||
|
|
||||||
|
export const SubmitWrap = styled.div` |
||||||
|
display: flex; |
||||||
|
flex-direction: column; |
||||||
|
height: 100%; |
||||||
|
align-items: center; |
||||||
|
justify-content: center; |
||||||
|
|
||||||
|
svg { |
||||||
|
height: 25px; |
||||||
|
color: dimgrey; |
||||||
|
} |
||||||
|
`;
|
||||||
|
|
||||||
|
export const SubmitText = styled.p` |
||||||
|
margin-bottom: 0; |
||||||
|
color: dimgrey; |
||||||
|
margin-top: 8px; |
||||||
|
`;
|
@ -0,0 +1,11 @@ |
|||||||
|
import { HeaderWrap, Subtitle, Title } from './style'; |
||||||
|
|
||||||
|
const PageHeader = (props) => ( |
||||||
|
<HeaderWrap> |
||||||
|
<Title>Developer Roadmaps</Title> |
||||||
|
<Subtitle>We continue to improve these roadmaps and add new ones, subscribe to get occasional updates</Subtitle> |
||||||
|
{ props.children } |
||||||
|
</HeaderWrap> |
||||||
|
); |
||||||
|
|
||||||
|
export default PageHeader; |
@ -0,0 +1,16 @@ |
|||||||
|
import styled from 'styled-components'; |
||||||
|
|
||||||
|
export const HeaderWrap = styled.div` |
||||||
|
text-align: center; |
||||||
|
padding: 45px 30px; |
||||||
|
`;
|
||||||
|
|
||||||
|
export const Title = styled.h1` |
||||||
|
font-size: 48px; |
||||||
|
font-weight: 700; |
||||||
|
`;
|
||||||
|
|
||||||
|
export const Subtitle = styled.p` |
||||||
|
font-size: 16px; |
||||||
|
color: #444; |
||||||
|
`;
|
@ -0,0 +1,28 @@ |
|||||||
|
import { Badge, BlockItem, ItemSubtitle, ItemTitle, ItemWrap } from './style'; |
||||||
|
|
||||||
|
const RowBlock = ({ |
||||||
|
title, |
||||||
|
subtitle, |
||||||
|
url, |
||||||
|
badge, |
||||||
|
openExternal = false, |
||||||
|
disabled = false, |
||||||
|
children = null |
||||||
|
}) => ( |
||||||
|
<ItemWrap className="col-md-6 col-lg-4 col-xl-4"> |
||||||
|
<BlockItem href={ url } disabled={ disabled } target={openExternal ? '_blank' : '_self'}> |
||||||
|
{ !children && ( |
||||||
|
<> |
||||||
|
<ItemTitle> |
||||||
|
{ title } |
||||||
|
{ badge && <Badge>{ badge }</Badge>} |
||||||
|
</ItemTitle> |
||||||
|
<ItemSubtitle>{ subtitle }</ItemSubtitle> |
||||||
|
</> |
||||||
|
) } |
||||||
|
{ children } |
||||||
|
</BlockItem> |
||||||
|
</ItemWrap> |
||||||
|
); |
||||||
|
|
||||||
|
export default RowBlock; |
@ -0,0 +1,62 @@ |
|||||||
|
import styled from 'styled-components'; |
||||||
|
|
||||||
|
export const ItemWrap = styled.div` |
||||||
|
padding: 0 10px 20px; |
||||||
|
`;
|
||||||
|
|
||||||
|
export const BlockItem = styled.a` |
||||||
|
height: 114px; |
||||||
|
box-shadow: rgba(0, 0, 0, 0.12) 0 5px 10px; |
||||||
|
transition: box-shadow 0.2s ease 0s; |
||||||
|
align-items: stretch; |
||||||
|
flex: 1; |
||||||
|
display: flex; |
||||||
|
flex-direction: column; |
||||||
|
min-width: 1px; |
||||||
|
max-width: 100%; |
||||||
|
background: white; |
||||||
|
padding: 20px; |
||||||
|
border-radius: 10px; |
||||||
|
justify-content: center; |
||||||
|
text-decoration:none; |
||||||
|
opacity: ${ props => props.disabled ? 0.5 : 1 }; |
||||||
|
|
||||||
|
&:hover { |
||||||
|
text-decoration:none; |
||||||
|
box-shadow: rgba(0, 0, 0, 0.12) 0 30px 60px; |
||||||
|
z-index: 1; |
||||||
|
} |
||||||
|
`;
|
||||||
|
|
||||||
|
export const ItemTitle = styled.h3` |
||||||
|
font-weight: 600; |
||||||
|
font-size: 18px; |
||||||
|
line-height: 24px; |
||||||
|
color: #101010; |
||||||
|
display: flex; |
||||||
|
align-items: center; |
||||||
|
justify-content: flex-start; |
||||||
|
`;
|
||||||
|
|
||||||
|
export const Badge = styled.span` |
||||||
|
font-size: 10px; |
||||||
|
font-weight: 600; |
||||||
|
background: #696969; |
||||||
|
color: white; |
||||||
|
padding: 0 8px; |
||||||
|
border-radius: 4px; |
||||||
|
text-transform: uppercase; |
||||||
|
display: flex; |
||||||
|
align-items: center; |
||||||
|
justify-content: center; |
||||||
|
margin-left: 10px; |
||||||
|
height: 18px; |
||||||
|
`;
|
||||||
|
|
||||||
|
export const ItemSubtitle = styled.p` |
||||||
|
font-size: 14px; |
||||||
|
color: rgb(102, 102, 102); |
||||||
|
white-space: normal; |
||||||
|
line-height: 1.5; |
||||||
|
margin: 0; |
||||||
|
`;
|
@ -0,0 +1,2 @@ |
|||||||
|
## Submitting a Guide |
||||||
|
|
Loading…
Reference in new issue