diff options
Diffstat (limited to 'packages/dev-tools-pages/ts/components/content-block.tsx')
-rw-r--r-- | packages/dev-tools-pages/ts/components/content-block.tsx | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/packages/dev-tools-pages/ts/components/content-block.tsx b/packages/dev-tools-pages/ts/components/content-block.tsx new file mode 100644 index 000000000..b800c5d44 --- /dev/null +++ b/packages/dev-tools-pages/ts/components/content-block.tsx @@ -0,0 +1,78 @@ +import * as _ from 'lodash'; +import * as React from 'react'; +import styled from 'styled-components'; + +import { ContextInterface } from 'ts/context'; +import { media } from 'ts/variables'; + +import { Alpha, Beta } from './typography'; + +const Base = styled.div` + display: flex; + align-items: flex-start; + justify-content: space-between; + :not(:last-of-type) { + margin-bottom: 6.25rem; + } + ${Beta} { + margin-bottom: 2.5rem; + } + ${media.small` + display: block; + :not(:last-of-type) { + margin-bottom: 3.125rem; + } + `}; +`; + +const Content = styled.div` + width: 66.693548387%; + ${media.small` + width: 100%; + `}; +`; + +const Item = styled.div` + p { + max-width: 31.25rem; + } + + &:not(:last-of-type) { + margin-bottom: 2.5rem; + ${media.small` + margin-bottom: 1.875rem; + `}; + } +`; + +const StyledTitle = styled(Alpha)` + color: ${props => props.color}; + ${media.small` + & + div { + margin-top: 1.5rem; + } + `}; +`; + +interface ContentBlockProps extends ContextInterface { + title: string; + main?: boolean; + children?: React.ReactNode; +} + +const ContentBlock: React.StatelessComponent<ContentBlockProps> = props => { + const children = React.Children.map(props.children, child => { + return <Item>{child}</Item>; + }); + + const Title = props.main ? StyledTitle : Beta; + + return ( + <Base> + <Title color={props.colors}>{props.title}</Title> + {_.isUndefined(children) ? null : <Content>{children}</Content>} + </Base> + ); +}; + +export { ContentBlock }; |