1 import { Component, OnInit } from '@angular/core';
2 import { NbThemeService } from '@nebular/theme';
3 import { NbJSThemeOptions } from '@nebular/theme/services/js-themes/theme.options';
4 import { AnalyticsService } from '../../../@core/utils/analytics.service';
7 selector: 'ngx-theme-switcher',
8 styleUrls: ['./theme-switcher.component.scss'],
10 <label class="theme-switch">
11 <span class="light">Light</span>
13 <input type="checkbox" [checked]="currentBoolTheme()" (change)="toggleTheme(theme.checked)" #theme>
14 <span class="slider"></span>
16 <span class="cosmic">Cosmic</span>
20 export class ThemeSwitcherComponent implements OnInit {
21 theme: NbJSThemeOptions;
23 constructor(private themeService: NbThemeService, private analyticsService: AnalyticsService) {
27 this.themeService.getJsTheme()
28 .subscribe((theme: NbJSThemeOptions) => this.theme = theme);
31 toggleTheme(theme: boolean) {
32 const boolTheme = this.boolToTheme(theme);
33 this.themeService.changeTheme(boolTheme);
34 this.analyticsService.trackEvent('switchTheme');
38 return this.themeToBool(this.theme);
41 private themeToBool(theme: NbJSThemeOptions) {
42 return theme.name === 'cosmic';
45 private boolToTheme(theme: boolean) {
46 return theme ? 'cosmic' : 'default';