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, NbPopoverModule, NbContextMenuModule, NbProgressBarModule, NbCalendarModule, NbCalendarRangeModule, NbStepperModule, NbButtonModule, NbInputModule, NbAccordionModule, NbDatepickerModule, NbDialogModule, NbWindowModule, NbListModule, NbToastrModule, NbAlertModule, NbSpinnerModule, NbRadioModule, NbSelectModule, NbChatModule, NbTooltipModule, NbCalendarKitModule, } from '@nebular/theme'; import { NbSecurityModule } from '@nebular/security'; import { FooterComponent, HeaderComponent, SearchInputComponent, ThemeSettingsComponent, SwitcherComponent, LayoutDirectionSwitcherComponent, ThemeSwitcherComponent, TinyMCEComponent, ThemeSwitcherListComponent, } from './components'; import { CapitalizePipe, PluralPipe, RoundPipe, TimingPipe, NumberWithCommasPipe, EvaIconsPipe, } from './pipes'; import { OneColumnLayoutComponent, SampleLayoutComponent, ThreeColumnsLayoutComponent, TwoColumnsLayoutComponent, } from './layouts'; import { DEFAULT_THEME } from './styles/theme.default'; import { COSMIC_THEME } from './styles/theme.cosmic'; import { CORPORATE_THEME } from './styles/theme.corporate'; const BASE_MODULES = [CommonModule, FormsModule, ReactiveFormsModule]; const NB_MODULES = [ NbCardModule, NbLayoutModule, NbTabsetModule, NbRouteTabsetModule, NbMenuModule, NbUserModule, NbActionsModule, NbSearchModule, NbSidebarModule, NbCheckboxModule, NbPopoverModule, NbContextMenuModule, NgbModule, NbSecurityModule, // *nbIsGranted directive, NbProgressBarModule, NbCalendarModule, NbCalendarRangeModule, NbStepperModule, NbButtonModule, NbListModule, NbToastrModule, NbInputModule, NbAccordionModule, NbDatepickerModule, NbDialogModule, NbWindowModule, NbAlertModule, NbSpinnerModule, NbRadioModule, NbSelectModule, NbChatModule, NbTooltipModule, NbCalendarKitModule, ]; const COMPONENTS = [ SwitcherComponent, LayoutDirectionSwitcherComponent, ThemeSwitcherComponent, ThemeSwitcherListComponent, HeaderComponent, FooterComponent, SearchInputComponent, ThemeSettingsComponent, TinyMCEComponent, OneColumnLayoutComponent, SampleLayoutComponent, ThreeColumnsLayoutComponent, TwoColumnsLayoutComponent, ]; const ENTRY_COMPONENTS = [ ThemeSwitcherListComponent, ]; const PIPES = [ CapitalizePipe, PluralPipe, RoundPipe, TimingPipe, NumberWithCommasPipe, EvaIconsPipe, ]; const NB_THEME_PROVIDERS = [ ...NbThemeModule.forRoot( { name: 'cosmic', }, [ DEFAULT_THEME, COSMIC_THEME, CORPORATE_THEME ], ).providers, ...NbSidebarModule.forRoot().providers, ...NbMenuModule.forRoot().providers, ...NbDatepickerModule.forRoot().providers, ...NbDialogModule.forRoot().providers, ...NbWindowModule.forRoot().providers, ...NbToastrModule.forRoot().providers, ...NbChatModule.forRoot({ messageGoogleMapKey: 'AIzaSyA_wNuCzia92MAmdLRzmqitRGvCF7wCZPY', }).providers, ]; @NgModule({ imports: [...BASE_MODULES, ...NB_MODULES], exports: [...BASE_MODULES, ...NB_MODULES, ...COMPONENTS, ...PIPES], declarations: [...COMPONENTS, ...PIPES], entryComponents: [...ENTRY_COMPONENTS], }) export class ThemeModule { static forRoot(): ModuleWithProviders { return { ngModule: ThemeModule, providers: [...NB_THEME_PROVIDERS], }; } }