diff options
Diffstat (limited to 'subprojects/frontend/src/theme')
-rw-r--r-- | subprojects/frontend/src/theme/ThemeProvider.tsx | 14 | ||||
-rw-r--r-- | subprojects/frontend/src/theme/ThemeStore.ts | 48 |
2 files changed, 56 insertions, 6 deletions
diff --git a/subprojects/frontend/src/theme/ThemeProvider.tsx b/subprojects/frontend/src/theme/ThemeProvider.tsx index 78146f25..18310147 100644 --- a/subprojects/frontend/src/theme/ThemeProvider.tsx +++ b/subprojects/frontend/src/theme/ThemeProvider.tsx | |||
@@ -75,13 +75,15 @@ function createResponsiveTheme( | |||
75 | ...options, | 75 | ...options, |
76 | typography: { | 76 | typography: { |
77 | fontFamily: | 77 | fontFamily: |
78 | '"Inter Variable", "Inter", "Roboto", "Helvetica", "Arial", sans-serif', | 78 | '"Open Sans Variable", "Open Sans", "Roboto", "Helvetica", "Arial", sans-serif', |
79 | fontWeightMedium: 600, | 79 | fontWeightMedium: 500, |
80 | fontWeightEditorNormal: 400, | 80 | fontWeightEditorNormal: 400, |
81 | fontWeightEditorBold: 700, | 81 | fontWeightEditorBold: 700, |
82 | button: { | 82 | button: { |
83 | // 24px line height for 14px button text to fix browser rounding errors. | 83 | fontWeight: 600, |
84 | lineHeight: 1.714286, | 84 | fontVariationSettings: '"wdth" 87.5', |
85 | fontSize: '1rem', | ||
86 | lineHeight: 1.5, | ||
85 | }, | 87 | }, |
86 | editor: { | 88 | editor: { |
87 | fontFamily: | 89 | fontFamily: |
@@ -151,7 +153,7 @@ function createResponsiveTheme( | |||
151 | }, {}), | 153 | }, {}), |
152 | }, | 154 | }, |
153 | }, | 155 | }, |
154 | sizeSmall: { fontSize: '0.75rem' }, | 156 | sizeSmall: { fontSize: '0.875rem', lineHeight: '1.75' }, |
155 | sizeLarge: { fontSize: '1rem' }, | 157 | sizeLarge: { fontSize: '1rem' }, |
156 | text: { '&.rounded': { padding: '6px 14px' } }, | 158 | text: { '&.rounded': { padding: '6px 14px' } }, |
157 | textSizeSmall: { '&.rounded': { padding: '4px 8px' } }, | 159 | textSizeSmall: { '&.rounded': { padding: '4px 8px' } }, |
@@ -287,7 +289,7 @@ const darkTheme = (() => { | |||
287 | secondary: secondaryText, | 289 | secondary: secondaryText, |
288 | disabled: '#5c6370', | 290 | disabled: '#5c6370', |
289 | }, | 291 | }, |
290 | divider: alpha(secondaryText, 0.24), | 292 | divider: alpha(primaryText, 0.24), |
291 | outer: { | 293 | outer: { |
292 | background: darkBackground, | 294 | background: darkBackground, |
293 | border: '#181a1f', | 295 | border: '#181a1f', |
diff --git a/subprojects/frontend/src/theme/ThemeStore.ts b/subprojects/frontend/src/theme/ThemeStore.ts index 7c657449..12449b94 100644 --- a/subprojects/frontend/src/theme/ThemeStore.ts +++ b/subprojects/frontend/src/theme/ThemeStore.ts | |||
@@ -12,11 +12,19 @@ export enum ThemePreference { | |||
12 | PreferDark, | 12 | PreferDark, |
13 | } | 13 | } |
14 | 14 | ||
15 | export type SelectedPane = 'code' | 'graph' | 'table'; | ||
16 | |||
15 | export default class ThemeStore { | 17 | export default class ThemeStore { |
16 | preference = ThemePreference.System; | 18 | preference = ThemePreference.System; |
17 | 19 | ||
18 | systemDarkMode: boolean; | 20 | systemDarkMode: boolean; |
19 | 21 | ||
22 | showCode = true; | ||
23 | |||
24 | showGraph = true; | ||
25 | |||
26 | showTable = false; | ||
27 | |||
20 | constructor() { | 28 | constructor() { |
21 | const mediaQuery = window.matchMedia('(prefers-color-scheme: dark)'); | 29 | const mediaQuery = window.matchMedia('(prefers-color-scheme: dark)'); |
22 | this.systemDarkMode = mediaQuery.matches; | 30 | this.systemDarkMode = mediaQuery.matches; |
@@ -48,4 +56,44 @@ export default class ThemeStore { | |||
48 | : ThemePreference.PreferDark; | 56 | : ThemePreference.PreferDark; |
49 | } | 57 | } |
50 | } | 58 | } |
59 | |||
60 | toggleCode(): void { | ||
61 | if (!this.showGraph && !this.showTable) { | ||
62 | return; | ||
63 | } | ||
64 | this.showCode = !this.showCode; | ||
65 | } | ||
66 | |||
67 | toggleGraph(): void { | ||
68 | if (!this.showCode && !this.showTable) { | ||
69 | return; | ||
70 | } | ||
71 | this.showGraph = !this.showGraph; | ||
72 | } | ||
73 | |||
74 | toggleTable(): void { | ||
75 | if (!this.showCode && !this.showGraph) { | ||
76 | return; | ||
77 | } | ||
78 | this.showTable = !this.showTable; | ||
79 | } | ||
80 | |||
81 | get selectedPane(): SelectedPane { | ||
82 | if (this.showCode) { | ||
83 | return 'code'; | ||
84 | } | ||
85 | if (this.showGraph) { | ||
86 | return 'graph'; | ||
87 | } | ||
88 | if (this.showTable) { | ||
89 | return 'table'; | ||
90 | } | ||
91 | return 'code'; | ||
92 | } | ||
93 | |||
94 | setSelectedPane(pane: SelectedPane, keepCode = true): void { | ||
95 | this.showCode = pane === 'code' || (keepCode && this.showCode); | ||
96 | this.showGraph = pane === 'graph'; | ||
97 | this.showTable = pane === 'table'; | ||
98 | } | ||
51 | } | 99 | } |