From 38e12c240573dc7da0143809b29864bfa07a6c63 Mon Sep 17 00:00:00 2001 From: Ezekiel Aquino Date: Wed, 28 Nov 2018 17:27:05 +0100 Subject: [WIP] Proposed layout modules --- packages/website/ts/@next/components/layout.tsx | 64 +++++++++++++++++++++++ packages/website/ts/@next/components/siteWrap.tsx | 15 ++++-- packages/website/ts/@next/pages/landing.tsx | 47 ++++++++++++++++- 3 files changed, 122 insertions(+), 4 deletions(-) create mode 100644 packages/website/ts/@next/components/layout.tsx (limited to 'packages/website/ts/@next') diff --git a/packages/website/ts/@next/components/layout.tsx b/packages/website/ts/@next/components/layout.tsx new file mode 100644 index 000000000..c5b816f9d --- /dev/null +++ b/packages/website/ts/@next/components/layout.tsx @@ -0,0 +1,64 @@ +import * as React from 'react'; +import styled from 'styled-components'; + +interface WrapWidths { + default: string, + full: string, + medium: string, + narrow: string, + [key: string]: string, +} + +interface ColumnWidths { + [key: string]: string, +} + +interface SectionProps { + noPadding?: any, + bgColor?: string, +} + +interface WrapProps { + width?: 'default' | 'full' | 'medium' | 'narrow', + bgColor?: string, +} + +interface ColumnProps { + colWidth?: '1/4' | '1/3' | '1/2' | '2/3', +} + +const GUTTER = 30 as number; +const WRAPPER_WIDTHS: WrapWidths = { + default: `calc(100% - ${GUTTER * 2}px)`, + full: '100%', + medium: '1136px', + narrow: '930px', +}; +const COLUMN_WIDTHS: ColumnWidths = { + '1/4': `calc(${(1 / 4) * 100}% - ${(GUTTER * 3) / 4}px)`, + '1/3': `calc(${(1 / 3) * 100}% - ${(GUTTER * 2) / 3}px)`, + '1/2': `calc(${(1 / 2) * 100}% - ${GUTTER / 2}px)`, + '2/3': `calc(${(2 / 3) * 100}% - ${GUTTER / 2}px)`, +}; + +export const Section = styled.section` + width: 100%; + padding: ${props => !props.noPadding && '30px'}; + background-color: ${props => props.bgColor}; + border: 1px solid blue; +`; + +export const Wrap = styled.div` + max-width: ${props => WRAPPER_WIDTHS[props.width || 'default']}; + background-color: ${props => props.bgColor}; + margin: 0 auto; + border: 1px solid green; + display: flex; + justify-content: space-between; +`; + +export const Column = styled.div` + width: ${props => props.colWidth ? COLUMN_WIDTHS[props.colWidth] : '100%'}; + padding: 30px; + border: 1px solid yellow; +`; diff --git a/packages/website/ts/@next/components/siteWrap.tsx b/packages/website/ts/@next/components/siteWrap.tsx index 0a62a1783..eebf6c25c 100644 --- a/packages/website/ts/@next/components/siteWrap.tsx +++ b/packages/website/ts/@next/components/siteWrap.tsx @@ -1,7 +1,8 @@ import * as React from 'react'; +import styled from 'styled-components'; import { GlobalStyles } from 'ts/@next/constants/globalStyle'; +import { Header } from 'ts/@next/components/header'; -import { Header } from './header'; interface Props { @@ -16,11 +17,19 @@ const SiteWrap: React.StatelessComponent = props => {
- {children} +
+ { children } +
OMG FOOTER
); }; -export { SiteWrap }; +const Main = styled.main` + border: 1px solid blue; + padding: 30px; +`; + + +export { SiteWrap } diff --git a/packages/website/ts/@next/pages/landing.tsx b/packages/website/ts/@next/pages/landing.tsx index 64ef15274..709b77e76 100644 --- a/packages/website/ts/@next/pages/landing.tsx +++ b/packages/website/ts/@next/pages/landing.tsx @@ -1,9 +1,54 @@ import * as React from 'react'; import { SiteWrap } from 'ts/@next/components/siteWrap'; +import { Section, Wrap, Column } from 'ts/@next/components/layout'; export const NextLanding = () => ( -
Hello
+
+ + + Powering Decentralized Exchange
+ Example of a 2/3 1/3 assymetric composition +
+ + + RIGHT IMAGE + +
+
+ +
+ + 0x is an open protocol that enables the peer-to-peer exchange of Ethereum-based tokens. Anyone can utilize 0x to service a wide variety of markets ranging from gaming items to traditional financial assets. + + + + + This + + + + is a + + + + three-column module + + +
+ +
+ + + This is a 2 COLUMN section + + + + Again a 2 column section + + +
); -- cgit