aboutsummaryrefslogtreecommitdiffstats
path: root/packages/dev-tools-pages/ts/components/content-block.tsx
diff options
context:
space:
mode:
Diffstat (limited to 'packages/dev-tools-pages/ts/components/content-block.tsx')
-rw-r--r--packages/dev-tools-pages/ts/components/content-block.tsx78
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 };