import { ModuleWithProviders, NgModule } from '@angular/core'; import { CommonModule } from '@angular/common'; import { MatRippleModule } from '@angular/material/core'; import { NbActionsModule, NbLayoutModule, NbMenuModule, NbSearchModule, NbSidebarModule, NbUserModule, NbContextMenuModule, NbButtonModule, NbSelectModule, NbIconModule, NbThemeModule, } from '@nebular/theme'; import { NbEvaIconsModule } from '@nebular/eva-icons'; import { NbSecurityModule } from '@nebular/security'; import { FooterComponent, HeaderComponent, SearchInputComponent, TinyMCEComponent, } from './components'; import { CapitalizePipe, PluralPipe, RoundPipe, TimingPipe, NumberWithCommasPipe, } from './pipes'; import { OneColumnLayoutComponent, ThreeColumnsLayoutComponent, TwoColumnsLayoutComponent, } from './layouts'; import { MATERIAL_LIGHT_THEME } from './styles/theme.material-light'; import { MATERIAL_DARK_THEME } from './styles/theme.material-dark'; const NB_MODULES = [ NbLayoutModule, NbMenuModule, NbUserModule, NbActionsModule, NbSearchModule, NbSidebarModule, NbContextMenuModule, NbSecurityModule, NbButtonModule, NbSelectModule, NbIconModule, NbEvaIconsModule, ]; const COMPONENTS = [ HeaderComponent, FooterComponent, SearchInputComponent, TinyMCEComponent, OneColumnLayoutComponent, ThreeColumnsLayoutComponent, TwoColumnsLayoutComponent, ]; const PIPES = [ CapitalizePipe, PluralPipe, RoundPipe, TimingPipe, NumberWithCommasPipe, ]; @NgModule({ imports: [CommonModule, MatRippleModule, ...NB_MODULES], exports: [CommonModule, MatRippleModule, ...PIPES, ...COMPONENTS], declarations: [...COMPONENTS, ...PIPES], }) export class ThemeModule { static forRoot(): ModuleWithProviders { return { ngModule: ThemeModule, providers: [ ...NbThemeModule.forRoot( { name: 'material-light' }, [MATERIAL_LIGHT_THEME, MATERIAL_DARK_THEME], ).providers, ], }; } }