import { NgModule } from '@angular/core';
import { HttpClientModule } from '@angular/common/http';
import { BrowserModule } from '@angular/platform-browser';
import { BrowserAnimationsModule } from '@angular/platform-browser/animations';

import { MatButtonModule } from '@angular/material/button';
import { MatIconModule } from '@angular/material/icon';
import { MatMomentDateModule } from '@angular/material-moment-adapter';

import { TranslateModule } from '@ngx-translate/core';

import { FuseModule } from 'src/@fuse/fuse.module';
import { FuseSharedModule } from 'src/@fuse/shared.module';
import {
  FuseProgressBarModule,
  FuseSidebarModule,
  FuseThemeOptionsModule
} from 'src/@fuse/components';

import { AuthModule } from 'src/modules/auth/auth.module';
import { DashboardModule } from 'src/modules/dashboard/dashboard.module';
import { UserModule } from 'src/modules/user/user.module';

import { AppRoutingModule } from './app-routing.module';
import { AppProviderModule } from './app-provider.module';
import { AppStoreModule } from './app-store.module';

import { AppComponent } from './app.component';
import { appFuseConfig } from './app-fuse-config';

import { LayoutModule } from './layout/layout.module';

@NgModule({
  imports: [
    BrowserModule,
    BrowserAnimationsModule,
    HttpClientModule,

    TranslateModule.forRoot(),
    // Material moment date module
    MatMomentDateModule,

    // Material
    MatButtonModule,
    MatIconModule,

    // Fuse modules
    FuseModule.forRoot(appFuseConfig),
    FuseProgressBarModule,
    FuseSharedModule,
    FuseSidebarModule,
    FuseThemeOptionsModule,

    AuthModule.forRoot(),
    DashboardModule.forRoot(),
    UserModule.forRoot(),

    AppRoutingModule,
    AppProviderModule,
    AppStoreModule,

    // App modules
    LayoutModule
  ],
  declarations: [AppComponent],

  bootstrap: [AppComponent]
})
export class AppModule {}
