From bb63c5c86fd6559c13e2cebef253e81f379b46a6 Mon Sep 17 00:00:00 2001 From: Ezekiel Aquino Date: Fri, 30 Nov 2018 14:55:13 +0100 Subject: Adds proposal for padding prop on Wrappers --- packages/website/ts/@next/components/layout.tsx | 23 ++++++++++++++++++++++- packages/website/ts/@next/pages/landing.tsx | 8 ++++---- 2 files changed, 26 insertions(+), 5 deletions(-) (limited to 'packages') diff --git a/packages/website/ts/@next/components/layout.tsx b/packages/website/ts/@next/components/layout.tsx index ce5d6d578..e66dac8a9 100644 --- a/packages/website/ts/@next/components/layout.tsx +++ b/packages/website/ts/@next/components/layout.tsx @@ -12,6 +12,10 @@ interface ColumnWidths { [key: string]: string; } +interface PaddingSizes { + [key: string]: string; +} + interface SectionProps { noPadding?: any; padLarge?: any; @@ -23,6 +27,7 @@ interface SectionProps { interface WrapProps { width?: 'default' | 'full' | 'medium' | 'narrow'; bgColor?: string; + margin?: number | (string | number)[]; } interface ColumnProps { @@ -37,7 +42,6 @@ interface GetColWidthArgs { columns: number; } - const _getColumnWidth = (args: GetColWidthArgs) => { const { span = 1, columns } = args; const percentWidth = (span / columns) * 100; @@ -45,6 +49,18 @@ const _getColumnWidth = (args: GetColWidthArgs) => { return `calc(${percentWidth}% - ${gutterDiff}px)`; }; +const _getPadding = (value: number | (string | number)[]) => { + let padding = ''; + + if (Array.isArray(value)) { + padding = value.map(val => PADDING_SIZES[val] || '0px').join(' '); + } else { + padding = `${value}px`; + } + + return padding; +} + const GUTTER = 30 as number; const MAX_WIDTH = 1500; const BREAKPOINTS = { @@ -62,6 +78,10 @@ const COLUMN_WIDTHS: ColumnWidths = { '1/2': _getColumnWidth({ columns: 2 }), '2/3': _getColumnWidth({ span: 2, columns: 3 }), }; +const PADDING_SIZES: PaddingSizes = { + 'default': '30px', + 'large': '60px', +}; export const Main = styled.main` @@ -87,6 +107,7 @@ export const Section = styled.section` const WrapBase = styled.div` max-width: ${props => WRAPPER_WIDTHS[props.width || 'default']}; + padding: ${props => _getPadding(props.margin)}; background-color: ${props => props.bgColor}; margin: 0 auto; `; diff --git a/packages/website/ts/@next/pages/landing.tsx b/packages/website/ts/@next/pages/landing.tsx index 61d07641b..2793993f9 100644 --- a/packages/website/ts/@next/pages/landing.tsx +++ b/packages/website/ts/@next/pages/landing.tsx @@ -69,9 +69,9 @@ export const NextLanding = () => ( - + {/* NOTE: this probably should be withComponent as part of a
*/} - + 873,435 @@ -81,7 +81,7 @@ export const NextLanding = () => ( - + $203M @@ -91,7 +91,7 @@ export const NextLanding = () => ( - + 227,372 -- cgit v1.2.3