aboutsummaryrefslogtreecommitdiffstats
path: root/packages/website/ts/components/newLayout.tsx
diff options
context:
space:
mode:
authorSteve Klebanoff <steve.klebanoff@gmail.com>2019-01-03 07:17:26 +0800
committerSteve Klebanoff <steve.klebanoff@gmail.com>2019-01-03 07:17:26 +0800
commit65af195054e1f6de41d36a2d30d8342bef9752c0 (patch)
tree8559d71d6dd4269139afa5334b317f6efe90acd3 /packages/website/ts/components/newLayout.tsx
parent9f47f90c6e80ba9a61bcb6065fed1e2c6be8c5b7 (diff)
parent1ddf1087dd327b2ef35165518ee91eb457b84174 (diff)
downloaddexon-sol-tools-65af195054e1f6de41d36a2d30d8342bef9752c0.tar
dexon-sol-tools-65af195054e1f6de41d36a2d30d8342bef9752c0.tar.gz
dexon-sol-tools-65af195054e1f6de41d36a2d30d8342bef9752c0.tar.bz2
dexon-sol-tools-65af195054e1f6de41d36a2d30d8342bef9752c0.tar.lz
dexon-sol-tools-65af195054e1f6de41d36a2d30d8342bef9752c0.tar.xz
dexon-sol-tools-65af195054e1f6de41d36a2d30d8342bef9752c0.tar.zst
dexon-sol-tools-65af195054e1f6de41d36a2d30d8342bef9752c0.zip
Merge branch 'development' into feature/monorepo/release-notes
Diffstat (limited to 'packages/website/ts/components/newLayout.tsx')
-rw-r--r--packages/website/ts/components/newLayout.tsx152
1 files changed, 152 insertions, 0 deletions
diff --git a/packages/website/ts/components/newLayout.tsx b/packages/website/ts/components/newLayout.tsx
new file mode 100644
index 000000000..28e7653c5
--- /dev/null
+++ b/packages/website/ts/components/newLayout.tsx
@@ -0,0 +1,152 @@
+import * as React from 'react';
+import styled from 'styled-components';
+
+export interface WrapProps {
+ bgColor?: string;
+ id?: string;
+ offsetTop?: string;
+ maxWidth?: string;
+ wrapWidth?: string;
+ isFullWidth?: boolean;
+ isTextCentered?: boolean;
+ isCentered?: boolean;
+ isWrapped?: boolean;
+}
+
+export interface WrapGridProps {
+ isWrapped?: boolean;
+ isCentered?: boolean;
+}
+
+export interface WrapStickyProps {
+ offsetTop?: string;
+}
+
+export interface SectionProps extends WrapProps {
+ isPadded?: boolean;
+ isFullWidth?: boolean;
+ isFlex?: boolean;
+ padding?: string;
+ paddingMobile?: string;
+ flexBreakpoint?: string;
+ maxWidth?: string;
+ bgColor?: 'dark' | 'light' | string;
+ children: any;
+}
+
+export interface FlexProps {
+ padding?: string;
+ isFlex?: boolean;
+ flexBreakpoint?: string;
+}
+
+export interface ColumnProps {
+ padding?: string;
+ width?: string;
+ maxWidth?: string;
+}
+
+export const Section: React.FunctionComponent<SectionProps> = (props: SectionProps) => {
+ return (
+ <SectionBase {...props}>
+ <Wrap {...props}>{props.children}</Wrap>
+ </SectionBase>
+ );
+};
+
+export const Column =
+ styled.div <
+ ColumnProps >
+ `
+ width: ${props => props.width};
+ max-width: ${props => props.maxWidth};
+ padding: ${props => props.padding};
+
+ @media (max-width: 768px) {
+ width: 100%;
+
+ & + & {
+ margin-top: 60px;
+ }
+ }
+`;
+
+export const FlexWrap =
+ styled.div <
+ FlexProps >
+ `
+ max-width: 1500px;
+ margin: 0 auto;
+ padding: ${props => props.padding};
+
+ @media (min-width: ${props => props.flexBreakpoint || '768px'}) {
+ display: ${props => props.isFlex && 'flex'};
+ justify-content: ${props => props.isFlex && 'space-between'};
+ }
+`;
+
+export const WrapSticky =
+ styled.div <
+ WrapProps >
+ `
+ position: sticky;
+ top: ${props => props.offsetTop || '60px'};
+`;
+
+const SectionBase =
+ styled.section <
+ SectionProps >
+ `
+ width: ${props => !props.isFullWidth && 'calc(100% - 60px)'};
+ max-width: 1500px;
+ margin: 0 auto;
+ padding: ${props => props.isPadded && '120px 0'};
+ background-color: ${props => props.theme[`${props.bgColor}BgColor`] || props.bgColor};
+ position: relative;
+ overflow: ${props => !props.isFullWidth && 'hidden'};
+
+ @media (max-width: 768px) {
+ padding: ${props => props.isPadded && (props.paddingMobile || '40px 0')};
+ }
+`;
+
+const Wrap =
+ styled(FlexWrap) <
+ WrapProps >
+ `
+ width: ${props => props.wrapWidth || 'calc(100% - 60px)'};
+ width: ${props => props.bgColor && 'calc(100% - 60px)'};
+ max-width: ${props => !props.isFullWidth && (props.maxWidth || '895px')};
+ text-align: ${props => props.isTextCentered && 'center'};
+ margin: 0 auto;
+`;
+
+export const WrapGrid =
+ styled(Wrap) <
+ WrapProps >
+ `
+ display: flex;
+ flex-wrap: ${props => props.isWrapped && `wrap`};
+ justify-content: ${props => (props.isCentered ? `center` : 'space-between')};
+
+ @media (max-width: 768px) {
+ width: 100%;
+ }
+`;
+
+Section.defaultProps = {
+ isPadded: true,
+};
+
+FlexWrap.defaultProps = {
+ isFlex: true,
+};
+
+WrapGrid.defaultProps = {
+ isCentered: true,
+ isFullWidth: true,
+};
+
+Wrap.defaultProps = {
+ isFlex: false,
+};