From fc7e9312d00e60171ed77c477ed91231d3dbfff9 Mon Sep 17 00:00:00 2001 From: Kristóf Marussy Date: Sun, 12 Dec 2021 17:48:47 +0100 Subject: build: move modules into subproject directory --- .../language-web/src/main/js/theme/EditorTheme.ts | 47 ++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 subprojects/language-web/src/main/js/theme/EditorTheme.ts (limited to 'subprojects/language-web/src/main/js/theme/EditorTheme.ts') diff --git a/subprojects/language-web/src/main/js/theme/EditorTheme.ts b/subprojects/language-web/src/main/js/theme/EditorTheme.ts new file mode 100644 index 00000000..1b0dd5de --- /dev/null +++ b/subprojects/language-web/src/main/js/theme/EditorTheme.ts @@ -0,0 +1,47 @@ +import type { PaletteMode } from '@mui/material'; + +import cssVariables from '../../css/themeVariables.module.scss'; + +export enum EditorTheme { + Light, + Dark, +} + +export class EditorThemeData { + className: string; + + paletteMode: PaletteMode; + + toggleDarkMode: EditorTheme; + + foreground!: string; + + foregroundHighlight!: string; + + background!: string; + + primary!: string; + + secondary!: string; + + constructor(className: string, paletteMode: PaletteMode, toggleDarkMode: EditorTheme) { + this.className = className; + this.paletteMode = paletteMode; + this.toggleDarkMode = toggleDarkMode; + Reflect.ownKeys(this).forEach((key) => { + if (!Reflect.get(this, key)) { + const cssKey = `${this.className}--${key.toString()}`; + if (cssKey in cssVariables) { + Reflect.set(this, key, cssVariables[cssKey]); + } + } + }); + } +} + +export const DEFAULT_THEME = EditorTheme.Dark; + +export const EDITOR_THEMES: { [key in EditorTheme]: EditorThemeData } = { + [EditorTheme.Light]: new EditorThemeData('light', 'light', EditorTheme.Dark), + [EditorTheme.Dark]: new EditorThemeData('dark', 'dark', EditorTheme.Light), +}; -- cgit v1.2.3-70-g09d2