aboutsummaryrefslogtreecommitdiffstats
path: root/packages/instant/src/style/media.ts
diff options
context:
space:
mode:
authorBrandon Millman <brandon.millman@gmail.com>2018-11-09 08:09:38 +0800
committerBrandon Millman <brandon.millman@gmail.com>2018-11-09 08:09:38 +0800
commit211163b3724090347dba736cbcdcb2b1ec252bd0 (patch)
tree80f3b8e23daba4a12e4afc55d7a345678ca04795 /packages/instant/src/style/media.ts
parentc84e163edb329b478749cad09f222cc12e3698fe (diff)
parent117e2f583ff44bdb63340a2134edea0f3ecb77b3 (diff)
downloaddexon-sol-tools-211163b3724090347dba736cbcdcb2b1ec252bd0.tar
dexon-sol-tools-211163b3724090347dba736cbcdcb2b1ec252bd0.tar.gz
dexon-sol-tools-211163b3724090347dba736cbcdcb2b1ec252bd0.tar.bz2
dexon-sol-tools-211163b3724090347dba736cbcdcb2b1ec252bd0.tar.lz
dexon-sol-tools-211163b3724090347dba736cbcdcb2b1ec252bd0.tar.xz
dexon-sol-tools-211163b3724090347dba736cbcdcb2b1ec252bd0.tar.zst
dexon-sol-tools-211163b3724090347dba736cbcdcb2b1ec252bd0.zip
Merge branch 'development' into feature/instant/account-state-change
* development: [instant] Viewport specific errors (#1228) Added more comments Include wholeNumberSchema in sra-spec schemas chore(instant): fix linter Fix isNode fix(instant): update buy quote at start up in the case of default amount fix: apply css reset to overlay as well fix(website): turn off production flag when building locally chore: linter fix: progress bar fix: use fontSize prop in button feat: make instant resistant to external styles feat: add faux externall css file Add upstream issue Use const require instead of import Fix tslint issues Use detect-node Set curstom inspect printer in BigNumber
Diffstat (limited to 'packages/instant/src/style/media.ts')
-rw-r--r--packages/instant/src/style/media.ts38
1 files changed, 23 insertions, 15 deletions
diff --git a/packages/instant/src/style/media.ts b/packages/instant/src/style/media.ts
index beabbac46..5e7aaba37 100644
--- a/packages/instant/src/style/media.ts
+++ b/packages/instant/src/style/media.ts
@@ -14,30 +14,38 @@ const generateMediaWrapper = (screenWidth: ScreenWidths) => (...args: any[]) =>
}
`;
-const media = {
+export 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 interface ScreenSpecification<T> {
+ default: T;
+ sm?: T;
+ md?: T;
+ lg?: T;
}
-export type MediaChoice = string | ScreenSpecifications;
-export const stylesForMedia = (cssPropertyName: string, choice: MediaChoice): InterpolationValue[] => {
- if (typeof choice === 'string') {
+export type OptionallyScreenSpecific<T> = T | ScreenSpecification<T>;
+export type MediaChoice = OptionallyScreenSpecific<string>;
+/**
+ * Given a css property name and a OptionallyScreenSpecific value,
+ * generates css properties with screen-specific viewport styling
+ */
+export function stylesForMedia<T extends string | number>(
+ cssPropertyName: string,
+ choice: OptionallyScreenSpecific<T>,
+): InterpolationValue[] {
+ if (typeof choice === 'object') {
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}`}
`;
-};
+ } else {
+ return css`
+ ${cssPropertyName}: ${choice};
+ `;
+ }
+}