import { ModuleWithProviders, NgModule } from '@angular/core'; import { CommonModule } from '@angular/common'; import { FormsModule, ReactiveFormsModule } from '@angular/forms'; import { NgbModule } from '@ng-bootstrap/ng-bootstrap'; import { NbActionsModule, NbCardModule, NbLayoutModule, NbMenuModule, NbRouteTabsetModule, NbSearchModule, NbSidebarModule, NbTabsetModule, NbThemeModule, NbUserModule, NbCheckboxModule, } from '@nebular/theme'; import { FooterComponent, HeaderComponent, SearchInputComponent, ThemeSettingsComponent, ThemeSwitcherComponent, // XDS_MODS TinyMCEComponent, } from './components'; import { CapitalizePipe, PluralPipe, RoundPipe, TimingPipe } from './pipes'; import { OneColumnLayoutComponent, SampleLayoutComponent, XdsLayoutComponent, // XDS_MODS ThreeColumnsLayoutComponent, TwoColumnsLayoutComponent, } from './layouts'; import { DEFAULT_THEME } from './styles/theme.default'; import { COSMIC_THEME } from './styles/theme.cosmic'; const BASE_MODULES = [CommonModule, FormsModule, ReactiveFormsModule]; const NB_MODULES = [ NbCardModule, NbLayoutModule, NbTabsetModule, NbRouteTabsetModule, NbMenuModule, NbUserModule, NbActionsModule, NbSearchModule, NbSidebarModule, NbCheckboxModule, NgbModule, ]; const COMPONENTS = [ ThemeSwitcherComponent, HeaderComponent, FooterComponent, SearchInputComponent, ThemeSettingsComponent, // XDS_MODS TinyMCEComponent, OneColumnLayoutComponent, SampleLayoutComponent, XdsLayoutComponent, // XDS_MODS ThreeColumnsLayoutComponent, TwoColumnsLayoutComponent, ]; const PIPES = [ CapitalizePipe, PluralPipe, RoundPipe, TimingPipe, ]; const NB_THEME_PROVIDERS = [ ...NbThemeModule.forRoot( { name: 'default', // XDS_MODS }, [ DEFAULT_THEME, COSMIC_THEME ], ).providers, ...NbSidebarModule.forRoot().providers, ...NbMenuModule.forRoot().providers, ]; @NgModule({ imports: [...BASE_MODULES, ...NB_MODULES], exports: [...BASE_MODULES, ...NB_MODULES, ...COMPONENTS, ...PIPES], declarations: [...COMPONENTS, ...PIPES], }) export class ThemeModule { static forRoot(): ModuleWithProviders { return { ngModule: ThemeModule, providers: [...NB_THEME_PROVIDERS], }; } }