// Angular Core
import { NgModule } from '@angular/core';
import { BrowserModule, Title } from '@angular/platform-browser';
import { HTTP_INTERCEPTORS } from '@angular/common/http';
import { BrowserAnimationsModule } from '@angular/platform-browser/animations'
import { provideAnimationsAsync } from '@angular/platform-browser/animations/async';
import { providePrimeNG } from 'primeng/config';
import Aura from '@primeng/themes/aura';

// Modules
import { AppRoutingModule } from './app-routing.module';
import { SharedModule } from './shared-module/shared-module.module';

// Components
import { PageNotFoundComponent } from './feature-modules/page-not-found/page-not-found.component';
import { AppComponent } from './app.component';

// Interceptors
import { HeaderInterceptor } from './interceptors/header.interceptor';
import { ErrorCatchingInterceptor } from './interceptors/error-catching.interceptor';
import { IsobjectPipe } from './filters/is-object.pipe';
import { IsArrayPipe } from './filters/is-array.pipe';

@NgModule({
  declarations: [
    AppComponent,
    PageNotFoundComponent,
    IsobjectPipe,
    IsArrayPipe
  ],
  imports: [
    BrowserModule,
    AppRoutingModule,
    SharedModule,
    BrowserAnimationsModule
  ],
  providers: [
    Title, 
    {provide: HTTP_INTERCEPTORS, useClass: HeaderInterceptor, multi:true},
    {provide: HTTP_INTERCEPTORS, useClass: ErrorCatchingInterceptor, multi: true},
    provideAnimationsAsync(),
    providePrimeNG({
        theme: {
            preset: Aura,
            options: {
                darkModeSelector: false // || 'none'
            }
        }
    })                                                                     
  ],
  bootstrap: [AppComponent]
})
export class AppModule { }
