aboutsummaryrefslogtreecommitdiffstats
path: root/subprojects/frontend/src/theme/ThemeStore.ts
blob: ded1f29a6e5058b984f55a4e5dfa7afd5c9d81f0 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
import { makeAutoObservable } from 'mobx';

import EditorTheme from './EditorTheme';

export default class ThemeStore {
  currentTheme: EditorTheme = EditorTheme.Default;

  constructor() {
    makeAutoObservable(this);
  }

  toggleDarkMode(): void {
    switch (this.currentTheme) {
      case EditorTheme.Light:
        this.currentTheme = EditorTheme.Dark;
        break;
      case EditorTheme.Dark:
        this.currentTheme = EditorTheme.Light;
        break;
      default:
        throw new Error(`Unknown theme: ${this.currentTheme}`);
    }
  }

  get darkMode(): boolean {
    return this.currentTheme === EditorTheme.Dark;
  }
}