aboutsummaryrefslogtreecommitdiffstats
path: root/packages/theme/src
diff options
context:
space:
mode:
Diffstat (limited to 'packages/theme/src')
-rw-r--r--packages/theme/src/index.ts18
-rw-r--r--packages/theme/src/themes/dark/index.ts62
-rw-r--r--packages/theme/src/themes/default/index.ts139
-rw-r--r--packages/theme/src/themes/legacy/index.ts38
4 files changed, 257 insertions, 0 deletions
diff --git a/packages/theme/src/index.ts b/packages/theme/src/index.ts
new file mode 100644
index 000000000..524a9edf1
--- /dev/null
+++ b/packages/theme/src/index.ts
@@ -0,0 +1,18 @@
1import * as darkThemeConfig from './themes/dark';
2import * as defaultThemeConfig from './themes/default';
3import * as legacyStyles from './themes/legacy';
4
5export enum ThemeType {
6 default = 'default',
7 dark = 'dark',
8}
9
10export function theme(themeId: ThemeType) {
11 if (themeId === ThemeType.dark) {
12 return Object.assign({}, defaultThemeConfig, darkThemeConfig, { legacyStyles });
13 }
14
15 return Object.assign({}, defaultThemeConfig, { legacyStyles });
16}
17
18export type Theme = typeof defaultThemeConfig;
diff --git a/packages/theme/src/themes/dark/index.ts b/packages/theme/src/themes/dark/index.ts
new file mode 100644
index 000000000..9b6bf055c
--- /dev/null
+++ b/packages/theme/src/themes/dark/index.ts
@@ -0,0 +1,62 @@
1import color from 'color';
2
3import * as defaultStyles from '../default';
4import * as legacyStyles from '../legacy';
5
6export const colorBackground = legacyStyles.darkThemeGrayDarkest;
7export const colorContentBackground = legacyStyles.darkThemeGrayDarkest;
8export const colorBackgroundSubscriptionContainer = legacyStyles.themeBrandInfo;
9
10export const colorHeadline = legacyStyles.darkThemeTextColor;
11export const colorText = legacyStyles.darkThemeTextColor;
12
13// Loader
14export const colorFullscreenLoaderSpinner = '#FFF';
15export const colorWebviewLoaderBackground = color(legacyStyles.darkThemeGrayDarkest).alpha(0.5).rgb().string();
16
17// Input
18export const labelColor = legacyStyles.darkThemeTextColor;
19export const inputColor = legacyStyles.darkThemeGrayLightest;
20export const inputBackground = legacyStyles.themeGrayDark;
21export const inputBorder = `1px solid ${legacyStyles.darkThemeGrayLight}`;
22export const inputPrefixColor = color(legacyStyles.darkThemeGrayLighter).lighten(0.3).hex();
23export const inputPrefixBackground = legacyStyles.darkThemeGray;
24export const inputDisabledOpacity = 0.5;
25export const inputScorePasswordBackground = legacyStyles.darkThemeGrayDark;
26export const inputModifierColor = color(legacyStyles.darkThemeGrayLighter).lighten(0.3).hex();
27export const inputPlaceholderColor = color(legacyStyles.darkThemeGrayLighter).darken(0.1).hex();
28
29// Toggle
30export const toggleBackground = legacyStyles.darkThemeGray;
31export const toggleButton = legacyStyles.darkThemeGrayLighter;
32
33// Button
34export const buttonPrimaryTextColor = legacyStyles.darkThemeTextColor;
35
36export const buttonSecondaryBackground = legacyStyles.darkThemeGrayLighter;
37export const buttonSecondaryTextColor = legacyStyles.darkThemeTextColor;
38
39export const buttonDangerTextColor = legacyStyles.darkThemeTextColor;
40
41export const buttonWarningTextColor = legacyStyles.darkThemeTextColor;
42
43export const buttonLoaderColor = {
44 primary: '#FFF',
45 secondary: buttonSecondaryTextColor,
46 success: '#FFF',
47 warning: '#FFF',
48 danger: '#FFF',
49 inverted: defaultStyles.brandPrimary,
50};
51
52// Select
53export const selectBackground = inputBackground;
54export const selectBorder = inputBorder;
55export const selectColor = inputColor;
56export const selectToggleColor = inputPrefixColor;
57export const selectPopupBackground = legacyStyles.darkThemeGrayLight;
58export const selectOptionColor = '#FFF';
59export const selectOptionBorder = `1px solid ${color(legacyStyles.darkThemeGrayLight).darken(0.2).hex()}`;
60export const selectOptionItemHover = color(legacyStyles.darkThemeGrayLight).darken(0.2).hex();
61export const selectOptionItemHoverColor = selectColor;
62export const selectSearchColor = inputBackground;
diff --git a/packages/theme/src/themes/default/index.ts b/packages/theme/src/themes/default/index.ts
new file mode 100644
index 000000000..d36558ff0
--- /dev/null
+++ b/packages/theme/src/themes/default/index.ts
@@ -0,0 +1,139 @@
1import color from 'color';
2
3import * as legacyStyles from '../legacy';
4
5export interface IStyleTypes {
6 [index: string]: {
7 accent: string;
8 contrast: string;
9 border?: string;
10 };
11}
12
13export const brandPrimary = '#3498db';
14export const brandSuccess = '#5cb85c';
15export const brandInfo = '#5bc0de';
16export const brandWarning = '#FF9F00';
17export const brandDanger = '#d9534f';
18
19export const uiFontSize = 14;
20
21export const borderRadius = legacyStyles.themeBorderRadius;
22export const borderRadiusSmall = legacyStyles.themeBorderRadiusSmall;
23
24export const colorBackground = legacyStyles.themeGrayLighter;
25export const colorContentBackground = '#FFFFFF';
26export const colorHeadline = legacyStyles.themeGrayDark;
27
28export const colorText = legacyStyles.themeTextColor;
29
30// Subscription Container Component
31export const colorSubscriptionContainerBackground = 'none';
32export const colorSubscriptionContainerBorder = `1px solid ${brandPrimary}`;
33export const colorSubscriptionContainerTitle = brandPrimary;
34export const colorSubscriptionContainerActionButtonBackground = brandPrimary;
35export const colorSubscriptionContainerActionButtonColor = '#FFF';
36
37// Loader
38export const colorAppLoaderSpinner = '#FFF';
39export const colorFullscreenLoaderSpinner = legacyStyles.themeGrayDark;
40export const colorWebviewLoaderBackground = color(legacyStyles.themeGrayLighter).alpha(0.8).rgb().string();
41
42// Input
43export const labelColor = legacyStyles.themeGrayLight;
44export const inputColor = legacyStyles.themeGray;
45export const inputHeight = '35px';
46export const inputBackground = legacyStyles.themeGrayLightest;
47export const inputBorder = `1px solid ${legacyStyles.themeGrayLighter}`;
48export const inputModifierColor = legacyStyles.themeGrayLight;
49export const inputPlaceholderColor = color(legacyStyles.themeGrayLight).lighten(0.3).hex();
50export const inputPrefixColor = legacyStyles.themeGrayLight;
51export const inputPrefixBackground = legacyStyles.themeGrayLighter;
52export const inputDisabledOpacity = 0.5;
53export const inputScorePasswordBackground = legacyStyles.themeGrayLighter;
54
55// Toggle
56export const toggleBackground = legacyStyles.themeGrayLighter;
57export const toggleButton = legacyStyles.themeGrayLight;
58export const toggleButtonActive = brandPrimary;
59export const toggleWidth = 40;
60export const toggleHeight = 14;
61
62// Style Types
63export const styleTypes: IStyleTypes = {
64 primary: {
65 accent: brandPrimary,
66 contrast: '#FFF',
67 },
68 secondary: {
69 accent: legacyStyles.themeGrayLighter,
70 contrast: legacyStyles.themeGray,
71 },
72 success: {
73 accent: brandSuccess,
74 contrast: '#FFF',
75 },
76 warning: {
77 accent: brandWarning,
78 contrast: '#FFF',
79 },
80 danger: {
81 accent: brandDanger,
82 contrast: '#FFF',
83 },
84 inverted: {
85 accent: 'none',
86 contrast: brandPrimary,
87 border: `1px solid ${brandPrimary}`,
88 },
89};
90
91// Button
92export const buttonPrimaryBackground = brandPrimary;
93export const buttonPrimaryTextColor = '#FFF';
94
95export const buttonSecondaryBackground = legacyStyles.themeGrayLighter;
96export const buttonSecondaryTextColor = legacyStyles.themeGray;
97
98export const buttonSuccessBackground = brandSuccess;
99export const buttonSuccessTextColor = '#FFF';
100
101export const buttonDangerBackground = brandDanger;
102export const buttonDangerTextColor = '#FFF';
103
104export const buttonWarningBackground = brandWarning;
105export const buttonWarningTextColor = '#FFF';
106
107export const buttonInvertedBackground = 'none';
108export const buttonInvertedTextColor = brandPrimary;
109export const buttonInvertedBorder = `1px solid ${brandPrimary}`;
110
111export const buttonLoaderColor = {
112 primary: '#FFF',
113 secondary: buttonSecondaryTextColor,
114 success: '#FFF',
115 warning: '#FFF',
116 danger: '#FFF',
117 inverted: brandPrimary,
118};
119
120// Select
121export const selectBackground = inputBackground;
122export const selectBorder = inputBorder;
123export const selectHeight = inputHeight;
124export const selectColor = inputColor;
125export const selectToggleColor = inputPrefixColor;
126export const selectPopupBackground = '#FFF';
127export const selectOptionColor = inputColor;
128export const selectOptionBorder = `1px solid ${legacyStyles.themeGrayLightest}`;
129export const selectOptionItemHover = legacyStyles.themeGrayLighter;
130export const selectOptionItemHoverColor = selectColor;
131export const selectOptionItemActive = brandPrimary;
132export const selectOptionItemActiveColor = '#FFF';
133export const selectSearchBackground = legacyStyles.themeGrayLighter;
134export const selectSearchColor = inputColor;
135export const selectDisabledOpacity = inputDisabledOpacity;
136
137// Badge
138export const badgeFontSize = uiFontSize - 2;
139export const badgeBorderRadius = 50;
diff --git a/packages/theme/src/themes/legacy/index.ts b/packages/theme/src/themes/legacy/index.ts
new file mode 100644
index 000000000..2114b92c1
--- /dev/null
+++ b/packages/theme/src/themes/legacy/index.ts
@@ -0,0 +1,38 @@
1/* legacy config, injected into sass */
2export const themeBrandPrimary = '#3498db';
3export const themeBrandSuccess = '#5cb85c';
4export const themeBrandInfo = '#5bc0de';
5export const themeBrandWarning = '#FF9F00';
6export const themeBrandDanger = '#d9534f';
7
8export const themeGrayDark = '#373a3c';
9export const themeGray = '#55595c';
10export const themeGrayLight = '#818a91';
11export const themeGrayLighter = '#eceeef';
12export const themeGrayLightest = '#f7f7f9';
13
14export const themeBorderRadius = '6px';
15export const themeBorderRadiusSmall = '3px';
16
17export const themeSidebarWidth = '68px';
18
19export const themeTextColor = themeGrayDark;
20
21export const themeTransitionTime = '.5s';
22
23export const themeInsetShadow = 'inset 0 2px 5px rgba(0, 0, 0, .03)';
24
25export const darkThemeBlack = '#1A1A1A';
26
27export const darkThemeGrayDarkest = '#1E1E1E';
28export const darkThemeGrayDarker = '#2D2F31';
29export const darkThemeGrayDark = '#383A3B';
30
31export const darkThemeGray = '#47494B';
32
33export const darkThemeGrayLight = '#515355';
34export const darkThemeGrayLighter = '#8a8b8b';
35export const darkThemeGrayLightest = '#FFFFFF';
36
37export const darkThemeGraySmoke = '#CED0D1';
38export const darkThemeTextColor = '#FFFFFF';