diff options
author | Steve Klebanoff <steve@0xproject.com> | 2018-11-08 09:40:35 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-11-08 09:40:35 +0800 |
commit | 771f8a6a6cff935631e8c6ebcdc012cdd3533de6 (patch) | |
tree | 2666ceb3a5868242d13c33a6f7b96eb52172593c /packages/instant/src/style/media.ts | |
parent | 95b2898b9c0898c7e2d98ee603bff0604bf2a829 (diff) | |
parent | c6e7ad5a53a267dfe1ca6ecf2b9d2252fbad18ea (diff) | |
download | dexon-sol-tools-771f8a6a6cff935631e8c6ebcdc012cdd3533de6.tar dexon-sol-tools-771f8a6a6cff935631e8c6ebcdc012cdd3533de6.tar.gz dexon-sol-tools-771f8a6a6cff935631e8c6ebcdc012cdd3533de6.tar.bz2 dexon-sol-tools-771f8a6a6cff935631e8c6ebcdc012cdd3533de6.tar.lz dexon-sol-tools-771f8a6a6cff935631e8c6ebcdc012cdd3533de6.tar.xz dexon-sol-tools-771f8a6a6cff935631e8c6ebcdc012cdd3533de6.tar.zst dexon-sol-tools-771f8a6a6cff935631e8c6ebcdc012cdd3533de6.zip |
Merge pull request #1219 from 0xProject/feature/instant/mobile-full-bleed
[instant] Mobile full view
Diffstat (limited to 'packages/instant/src/style/media.ts')
-rw-r--r-- | packages/instant/src/style/media.ts | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/packages/instant/src/style/media.ts b/packages/instant/src/style/media.ts new file mode 100644 index 000000000..beabbac46 --- /dev/null +++ b/packages/instant/src/style/media.ts @@ -0,0 +1,43 @@ +import { InterpolationValue } from 'styled-components'; + +import { css } from './theme'; + +export enum ScreenWidths { + Sm = 40, + Md = 52, + Lg = 64, +} + +const generateMediaWrapper = (screenWidth: ScreenWidths) => (...args: any[]) => css` + @media (max-width: ${screenWidth}em) { + ${css.apply(css, args)}; + } +`; + +const media = { + small: generateMediaWrapper(ScreenWidths.Sm), + medium: generateMediaWrapper(ScreenWidths.Md), + large: generateMediaWrapper(ScreenWidths.Lg), +}; + +export interface ScreenSpecifications { + default: string; + sm?: string; + md?: string; + lg?: string; +} +export type MediaChoice = string | ScreenSpecifications; +export const stylesForMedia = (cssPropertyName: string, choice: MediaChoice): InterpolationValue[] => { + if (typeof choice === 'string') { + return css` + ${cssPropertyName}: ${choice}; + `; + } + + return css` + ${cssPropertyName}: ${choice.default}; + ${choice.lg && media.large`${cssPropertyName}: ${choice.lg}`} + ${choice.md && media.medium`${cssPropertyName}: ${choice.md}`} + ${choice.sm && media.small`${cssPropertyName}: ${choice.sm}`} + `; +}; |