// angular
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { FormsModule } from '@angular/forms';
import { ReactiveFormsModule } from '@angular/forms';
import { MAT_DATE_LOCALE } from '@angular/material/core';

// libs
import { MatFormFieldModule } from '@angular/material/form-field';
import { MatInputModule } from '@angular/material/input';
import { MatSelectModule } from '@angular/material/select';
import { MatTabsModule } from '@angular/material/tabs';
import { MatIconModule } from '@angular/material/icon';
import { MatButtonModule } from '@angular/material/button';
import { MatDialogModule } from '@angular/material/dialog';
import { MatDatepickerModule } from '@angular/material/datepicker';
import { MatGridListModule } from '@angular/material/grid-list';
import { MatCardModule } from '@angular/material/card';
import { NgxMaskModule } from 'ngx-mask';
import { NgxCurrencyModule } from "ngx-currency";
import { MatExpansionModule } from '@angular/material/expansion';
import { MatAutocompleteModule } from '@angular/material/autocomplete';
import { MatCheckboxModule } from '@angular/material/checkbox';

// app
import { PagesRoutingModule } from './pages-routing.module';
import { ComponentsModule } from '../shared/components/components.module';
import { SettingsCurrencyComponent } from './settings/currency/currency.component';
import { SettingsConnectCurrencyComponent } from './settings/currency/connect.currency.component';
import { UserProfileComponent } from './user-profile/user-profile.component';
import { SettingsRateCurrencyComponent } from './settings/currency/rate.currency.component';
import { SettingsAccountCategoryComponent } from './settings/account/account.category.component';
import { SettingsAccountComponent } from './settings/account/account.component';
import { SettingsAccountAddComponent } from './settings/account/add.account.component';
import { SettingsAccountEditComponent } from './settings/account/edit.account.component';
import { CurrencyService } from '../services/currency.service';
import { ItemService } from '../services/item.service';
import { SettingsItemCategoryComponent } from './settings/item/item.category.component';
import { SettingsItemComponent } from './settings/item/item.component';
import { SettingsItemEditComponent } from './settings/item/edit.item.component';
import { AccountListComponent } from './accounts/account.list.component';
import { AccountComponent } from './accounts/account.component';
import { MotionComponent } from './accounts/motion.component';
import { SettingsItemCategoryEditComponent } from './settings/item/edit.item.category.component';

@NgModule({
	declarations: [
		UserProfileComponent,

		SettingsCurrencyComponent,
		SettingsConnectCurrencyComponent,
		SettingsRateCurrencyComponent,

		SettingsAccountCategoryComponent,
		SettingsAccountComponent,
		SettingsAccountAddComponent,
		SettingsAccountEditComponent,

		SettingsItemCategoryComponent,
		SettingsItemComponent,
		SettingsItemEditComponent,
		SettingsItemCategoryEditComponent,

		AccountListComponent,
		AccountComponent,
		MotionComponent,
	],
	imports: [
		CommonModule,
		ComponentsModule,
		FormsModule,
		ReactiveFormsModule,
		PagesRoutingModule,
		MatFormFieldModule,
		MatSelectModule,
		MatInputModule,
		MatIconModule,
		MatButtonModule,
		MatTabsModule,
		MatDialogModule,
		MatDatepickerModule,
		MatGridListModule,
		MatCardModule,
		MatExpansionModule,
		MatAutocompleteModule,
		NgxMaskModule,
		NgxCurrencyModule,
		MatCheckboxModule,
	],
	providers: [
		{ provide: MAT_DATE_LOCALE, useValue: 'en-GB' },
		CurrencyService,
		ItemService,
	],
})
export class PagesModule {
}
