From f40e0c463e7477c35b0391148b329e08dd9af6b9 Mon Sep 17 00:00:00 2001
From: Sergey Andrievskiy
Date: Fri, 6 Aug 2021 17:23:50 +0300
Subject: [PATCH 1/5] feat: rebase with master
---
package.json | 2 +-
src/app/@core/core.module.ts | 3 +
src/app/@core/utils/ripple.service.ts | 11 +
.../components/header/header.component.html | 55 +-
.../components/header/header.component.scss | 4 +-
.../components/header/header.component.ts | 37 +-
src/app/@theme/styles/_overrides.scss | 11 +
.../styles/material/_angular-material.scss | 19 +
.../styles/material/_material-dark.scss | 501 ++++++++++++++++++
.../styles/material/_material-light.scss | 497 +++++++++++++++++
.../styles/material/_material-overrides.scss | 44 ++
.../styles/material/theme.material-dark.ts | 361 +++++++++++++
.../styles/material/theme.material-light.ts | 361 +++++++++++++
src/app/@theme/styles/styles.scss | 7 +
src/app/@theme/styles/themes.scss | 51 +-
src/app/@theme/theme.module.ts | 9 +-
.../contacts/contacts.component.html | 4 +-
.../pages/dashboard/dashboard.component.ts | 4 +
.../electricity/electricity.component.html | 4 +-
.../room-selector.component.scss | 1 +
.../security-cameras.component.html | 10 +-
.../security-cameras.component.scss | 9 +-
.../status-card/status-card.component.scss | 2 +-
.../status-card/status-card.component.ts | 2 +-
.../temperature-dragger.component.html | 2 +-
.../temperature-dragger.component.scss | 12 +-
.../temperature/temperature.component.html | 16 +-
.../dashboard/traffic/traffic.component.ts | 4 +-
.../chart-panel-header.component.html | 4 +-
.../chart-panel-header.component.scss | 6 +-
.../charts-panel/charts-panel.component.scss | 4 +
.../earning-card-front.component.html | 4 +-
.../traffic-back-card.component.html | 11 +-
.../traffic-back-card.component.scss | 12 -
.../traffic-front-card.component.scss | 6 +-
.../traffic-cards-header.component.html | 10 +-
.../traffic-cards-header.component.scss | 17 +-
.../traffic-reveal-card.component.html | 14 +-
.../traffic-reveal-card.component.scss | 7 +
.../user-activity.component.html | 4 +-
.../visitors-analytics.component.scss | 2 +-
.../spinner-in-buttons.component.html | 12 +-
.../forms/buttons/buttons.component.html | 44 +-
.../forms/buttons/buttons.component.scss | 5 +
.../pages/forms/buttons/buttons.component.ts | 21 +-
.../material-buttons.component.html | 9 +
.../material-buttons.component.scss | 3 +
.../material-buttons.component.ts | 8 +
.../form-inputs/form-inputs.component.html | 17 +-
.../form-inputs/form-inputs.component.ts | 25 +-
.../material-inputs.component.html | 58 ++
.../material-inputs.component.scss | 16 +
.../material-inputs.component.ts | 8 +
src/app/pages/forms/forms.module.ts | 29 +
.../layout/accordion/accordion.component.html | 14 +-
src/app/pages/layout/list/list.component.html | 14 +-
.../layout/stepper/stepper.component.html | 44 +-
.../not-found/not-found.component.html | 2 +-
.../dialog-name-prompt.component.html | 4 +-
.../dialog/dialog.component.html | 20 +-
.../showcase-dialog.component.html | 2 +-
.../popovers/popover-examples.component.ts | 2 +-
.../popovers/popovers.component.html | 60 +--
.../toastr/toastr.component.html | 12 +-
.../tooltip/tooltip.component.html | 24 +-
.../window/window.component.html | 8 +-
.../search-fields.component.html | 63 ++-
src/assets/images/kitten-material-dark.png | Bin 0 -> 48440 bytes
src/assets/images/kitten-material-light.png | Bin 0 -> 36208 bytes
69 files changed, 2416 insertions(+), 252 deletions(-)
create mode 100644 src/app/@core/utils/ripple.service.ts
create mode 100644 src/app/@theme/styles/material/_angular-material.scss
create mode 100644 src/app/@theme/styles/material/_material-dark.scss
create mode 100644 src/app/@theme/styles/material/_material-light.scss
create mode 100644 src/app/@theme/styles/material/_material-overrides.scss
create mode 100644 src/app/@theme/styles/material/theme.material-dark.ts
create mode 100644 src/app/@theme/styles/material/theme.material-light.ts
create mode 100644 src/app/pages/forms/buttons/material-buttons/material-buttons.component.html
create mode 100644 src/app/pages/forms/buttons/material-buttons/material-buttons.component.scss
create mode 100644 src/app/pages/forms/buttons/material-buttons/material-buttons.component.ts
create mode 100644 src/app/pages/forms/form-inputs/material-inputs/material-inputs.component.html
create mode 100644 src/app/pages/forms/form-inputs/material-inputs/material-inputs.component.scss
create mode 100644 src/app/pages/forms/form-inputs/material-inputs/material-inputs.component.ts
create mode 100644 src/assets/images/kitten-material-dark.png
create mode 100644 src/assets/images/kitten-material-light.png
diff --git a/package.json b/package.json
index d7bf3e9e8b..a3a4356941 100644
--- a/package.json
+++ b/package.json
@@ -40,6 +40,7 @@
"@angular/platform-browser": "^15.2.10",
"@angular/platform-browser-dynamic": "^15.2.10",
"@angular/router": "^15.2.10",
+ "@angular/material": "^14.2.0",
"@asymmetrik/ngx-leaflet": "3.0.1",
"@nebular/auth": "11.0.1",
"@nebular/eva-icons": "11.0.1",
@@ -62,7 +63,6 @@
"ng2-completer": "^9.0.1",
"ng2-smart-table": "^1.6.0",
"ngx-echarts": "^4.2.2",
- "node-sass": "^4.14.1",
"normalize.css": "6.0.0",
"pace-js": "1.0.2",
"roboto-fontface": "0.8.0",
diff --git a/src/app/@core/core.module.ts b/src/app/@core/core.module.ts
index 1135104a05..26bf07438e 100644
--- a/src/app/@core/core.module.ts
+++ b/src/app/@core/core.module.ts
@@ -1,5 +1,6 @@
import { ModuleWithProviders, NgModule, Optional, SkipSelf } from '@angular/core';
import { CommonModule } from '@angular/common';
+import { MAT_RIPPLE_GLOBAL_OPTIONS } from '@angular/material/core';
import { NbAuthModule, NbDummyAuthStrategy } from '@nebular/auth';
import { NbSecurityModule, NbRoleProvider } from '@nebular/security';
import { of as observableOf } from 'rxjs';
@@ -51,6 +52,7 @@ import { CountryOrderService } from './mock/country-order.service';
import { StatsProgressBarService } from './mock/stats-progress-bar.service';
import { VisitorsAnalyticsService } from './mock/visitors-analytics.service';
import { SecurityCamerasService } from './mock/security-cameras.service';
+import { RippleService } from './utils/ripple.service';
import { MockDataModule } from './mock/mock-data.module';
const socialLinks = [
@@ -91,6 +93,7 @@ const DATA_SERVICES = [
{ provide: StatsProgressBarData, useClass: StatsProgressBarService },
{ provide: VisitorsAnalyticsData, useClass: VisitorsAnalyticsService },
{ provide: SecurityCamerasData, useClass: SecurityCamerasService },
+ {provide: MAT_RIPPLE_GLOBAL_OPTIONS, useExisting: RippleService},
];
export class NbSimpleRoleProvider extends NbRoleProvider {
diff --git a/src/app/@core/utils/ripple.service.ts b/src/app/@core/utils/ripple.service.ts
new file mode 100644
index 0000000000..5efb7a3c56
--- /dev/null
+++ b/src/app/@core/utils/ripple.service.ts
@@ -0,0 +1,11 @@
+import { Injectable } from '@angular/core';
+import { RippleGlobalOptions } from '@angular/material/core';
+
+@Injectable({providedIn: 'root'})
+export class RippleService implements RippleGlobalOptions {
+ public disabled: boolean = false;
+
+ public toggle(enabled: boolean): void {
+ this.disabled = !enabled;
+ }
+}
diff --git a/src/app/@theme/components/header/header.component.html b/src/app/@theme/components/header/header.component.html
index 6fdc5d3570..b228cde1f0 100644
--- a/src/app/@theme/components/header/header.component.html
+++ b/src/app/@theme/components/header/header.component.html
@@ -1,12 +1,28 @@
@@ -14,11 +30,32 @@
-
-
-
-
-
+
+
+
+
= new Subject();
+ public readonly materialTheme$: Observable;
userPictureOnly: boolean = false;
user: any;
@@ -34,18 +36,34 @@ export class HeaderComponent implements OnInit, OnDestroy {
value: 'corporate',
name: 'Corporate',
},
+ {
+ value: 'material-light',
+ name: 'Material Light',
+ },
+ {
+ value: 'material-dark',
+ name: 'Material Dark',
+ },
];
currentTheme = 'default';
userMenu = [ { title: 'Profile' }, { title: 'Log out' } ];
- constructor(private sidebarService: NbSidebarService,
- private menuService: NbMenuService,
- private themeService: NbThemeService,
- private userService: UserData,
- private layoutService: LayoutService,
- private breakpointService: NbMediaBreakpointsService) {
+ public constructor(
+ private sidebarService: NbSidebarService,
+ private menuService: NbMenuService,
+ private themeService: NbThemeService,
+ private userService: UserData,
+ private layoutService: LayoutService,
+ private breakpointService: NbMediaBreakpointsService,
+ private rippleService: RippleService,
+ ) {
+ this.materialTheme$ = this.themeService.onThemeChange()
+ .pipe(map(theme => {
+ const themeName: string = theme?.name || '';
+ return themeName.startsWith('material');
+ }));
}
ngOnInit() {
@@ -68,7 +86,10 @@ export class HeaderComponent implements OnInit, OnDestroy {
map(({ name }) => name),
takeUntil(this.destroy$),
)
- .subscribe(themeName => this.currentTheme = themeName);
+ .subscribe(themeName => {
+ this.currentTheme = themeName;
+ this.rippleService.toggle(themeName?.startsWith('material'));
+ });
}
ngOnDestroy() {
diff --git a/src/app/@theme/styles/_overrides.scss b/src/app/@theme/styles/_overrides.scss
index acf7d8ac1d..7fa53aaa4b 100644
--- a/src/app/@theme/styles/_overrides.scss
+++ b/src/app/@theme/styles/_overrides.scss
@@ -8,4 +8,15 @@
right: 0.41rem !important;
}
}
+
+ nb-card nb-list {
+ @include nb-scrollbars(
+ nb-theme(card-scrollbar-color),
+ nb-theme(card-scrollbar-background-color),
+ nb-theme(card-scrollbar-width));
+ }
+
+ .table {
+ color: nb-theme(text-basic-color) !important;
+ }
}
diff --git a/src/app/@theme/styles/material/_angular-material.scss b/src/app/@theme/styles/material/_angular-material.scss
new file mode 100644
index 0000000000..f9787f5f3a
--- /dev/null
+++ b/src/app/@theme/styles/material/_angular-material.scss
@@ -0,0 +1,19 @@
+@use '~@angular/material' as mat;
+
+@mixin angular-material() {
+ @include mat.core();
+
+ @include nb-for-theme(material-dark) {
+ $custom-dark-theme: mat.define-dark-theme(
+ mat.define-palette(mat.$pink-palette),
+ mat.define-palette(mat.$blue-grey-palette));
+ @include mat.all-component-themes($custom-dark-theme);
+ }
+
+ @include nb-for-theme(material-light) {
+ $custom-light-theme: mat.define-light-theme(
+ mat.define-palette(mat.$indigo-palette),
+ mat.define-palette(mat.$pink-palette));
+ @include mat.all-component-themes($custom-light-theme);
+ }
+}
diff --git a/src/app/@theme/styles/material/_material-dark.scss b/src/app/@theme/styles/material/_material-dark.scss
new file mode 100644
index 0000000000..b991f81bd3
--- /dev/null
+++ b/src/app/@theme/styles/material/_material-dark.scss
@@ -0,0 +1,501 @@
+/**
+ * @license
+ * Copyright Akveo. All Rights Reserved.
+ * Licensed under the MIT License. See License.txt in the project root for license information.
+ */
+
+@import '~@nebular/theme/styles/core/functions';
+@import '~@nebular/theme/styles/core/mixins';
+
+$theme: (
+ color-primary-100: #fff2f7,
+ color-primary-200: #ffd4e3,
+ color-primary-300: #fc9abc,
+ color-primary-400: #f24681,
+ color-primary-500: #e91d63,
+ color-primary-600: #c71451,
+ color-primary-700: #a80d43,
+ color-primary-800: #870935,
+ color-primary-900: #70062a,
+
+ color-primary-transparent-100: rgba(233, 29, 99, 0.08),
+ color-primary-transparent-200: rgba(233, 29, 99, 0.16),
+ color-primary-transparent-300: rgba(233, 29, 99, 0.24),
+ color-primary-transparent-400: rgba(233, 29, 99, 0.32),
+ color-primary-transparent-500: rgba(233, 29, 99, 0.4),
+ color-primary-transparent-600: rgba(233, 29, 99, 0.48),
+
+ color-success-100: #edfbd1,
+ color-success-200: #d7f7a6,
+ color-success-300: #b4e775,
+ color-success-400: #8fcf50,
+ color-success-500: #60af20,
+ color-success-600: #499617,
+ color-success-700: #357d10,
+ color-success-800: #24650a,
+ color-success-900: #175306,
+
+ color-success-transparent-100: rgba(96, 175, 32, 0.08),
+ color-success-transparent-200: rgba(96, 175, 32, 0.16),
+ color-success-transparent-300: rgba(96, 175, 32, 0.24),
+ color-success-transparent-400: rgba(96, 175, 32, 0.32),
+ color-success-transparent-500: rgba(96, 175, 32, 0.4),
+ color-success-transparent-600: rgba(96, 175, 32, 0.48),
+
+ color-info-100: #ccf7fe,
+ color-info-200: #99e9fd,
+ color-info-300: #66d3f9,
+ color-info-400: #40bbf4,
+ color-info-500: #0495ee,
+ color-info-600: #0273cc,
+ color-info-700: #0256ab,
+ color-info-800: #013d8a,
+ color-info-900: #002b72,
+
+ color-info-transparent-100: rgba(4, 149, 238, 0.08),
+ color-info-transparent-200: rgba(4, 149, 238, 0.16),
+ color-info-transparent-300: rgba(4, 149, 238, 0.24),
+ color-info-transparent-400: rgba(4, 149, 238, 0.32),
+ color-info-transparent-500: rgba(4, 149, 238, 0.4),
+ color-info-transparent-600: rgba(4, 149, 238, 0.48),
+
+ color-warning-100: #fff3cd,
+ color-warning-200: #ffe49b,
+ color-warning-300: #ffd169,
+ color-warning-400: #ffbe43,
+ color-warning-500: #ff9f05,
+ color-warning-600: #db8003,
+ color-warning-700: #b76302,
+ color-warning-800: #934a01,
+ color-warning-900: #7a3800,
+
+ color-warning-transparent-100: rgba(255, 159, 5, 0.08),
+ color-warning-transparent-200: rgba(255, 159, 5, 0.16),
+ color-warning-transparent-300: rgba(255, 159, 5, 0.24),
+ color-warning-transparent-400: rgba(255, 159, 5, 0.32),
+ color-warning-transparent-500: rgba(255, 159, 5, 0.4),
+ color-warning-transparent-600: rgba(255, 159, 5, 0.48),
+
+ color-danger-100: #fbd2c8,
+ color-danger-200: #f79e94,
+ color-danger-300: #e75d5c,
+ color-danger-400: #cf3341,
+ color-danger-500: #b00020,
+ color-danger-600: #970029,
+ color-danger-700: #7e002e,
+ color-danger-800: #66002f,
+ color-danger-900: #54002f,
+
+ color-danger-transparent-100: rgba(176, 0, 32, 0.08),
+ color-danger-transparent-200: rgba(176, 0, 32, 0.16),
+ color-danger-transparent-300: rgba(176, 0, 32, 0.24),
+ color-danger-transparent-400: rgba(176, 0, 32, 0.32),
+ color-danger-transparent-500: rgba(176, 0, 32, 0.4),
+ color-danger-transparent-600: rgba(176, 0, 32, 0.48),
+
+ color-basic-100: #ffffff,
+ color-basic-200: #f5f5f5,
+ color-basic-300: #f5f5f5,
+ color-basic-400: #d4d4d4,
+ color-basic-500: #b3b3b3,
+ color-basic-600: #808080,
+ color-basic-700: #404040,
+ color-basic-800: #353535,
+ color-basic-900: #303030,
+ color-basic-1000: #1f1f1f,
+ color-basic-1100: #141414,
+
+ color-basic-transparent-100: rgba(128, 128, 128, 0.08),
+ color-basic-transparent-200: rgba(128, 128, 128, 0.16),
+ color-basic-transparent-300: rgba(128, 128, 128, 0.24),
+ color-basic-transparent-400: rgba(128, 128, 128, 0.32),
+ color-basic-transparent-500: rgba(128, 128, 128, 0.4),
+ color-basic-transparent-600: rgba(128, 128, 128, 0.48),
+
+ color-basic-control-transparent-100: rgba(255, 255, 255, 0.08),
+ color-basic-control-transparent-200: rgba(255, 255, 255, 0.16),
+ color-basic-control-transparent-300: rgba(255, 255, 255, 0.24),
+ color-basic-control-transparent-400: rgba(255, 255, 255, 0.32),
+ color-basic-control-transparent-500: rgba(255, 255, 255, 0.4),
+ color-basic-control-transparent-600: rgba(255, 255, 255, 0.48),
+
+ color-basic-focus: color-basic-400,
+ color-basic-hover: color-basic-200,
+ color-basic-default: color-basic-300,
+ color-basic-active: color-basic-400,
+ color-basic-disabled: color-basic-transparent-300,
+ color-basic-focus-border: color-basic-500,
+ color-basic-hover-border: color-basic-hover,
+ color-basic-default-border: color-basic-default,
+ color-basic-active-border: color-basic-active,
+ color-basic-disabled-border: color-basic-disabled,
+
+ color-basic-transparent-focus: color-basic-transparent-300,
+ color-basic-transparent-hover: color-basic-transparent-200,
+ color-basic-transparent-default: color-basic-transparent-100,
+ color-basic-transparent-active: color-basic-transparent-300,
+ color-basic-transparent-disabled: color-basic-transparent-200,
+ color-basic-transparent-focus-border: color-basic-500,
+ color-basic-transparent-hover-border: color-basic-500,
+ color-basic-transparent-default-border: color-basic-500,
+ color-basic-transparent-active-border: color-basic-500,
+ color-basic-transparent-disabled-border: color-basic-transparent-300,
+
+ color-primary-focus: color-primary-600,
+ color-primary-hover: color-primary-400,
+ color-primary-default: color-primary-500,
+ color-primary-active: color-primary-600,
+ color-primary-disabled: color-basic-transparent-300,
+ color-primary-focus-border: color-primary-700,
+ color-primary-hover-border: color-primary-hover,
+ color-primary-default-border: color-primary-default,
+ color-primary-active-border: color-primary-active,
+ color-primary-disabled-border: color-primary-disabled,
+
+ color-primary-transparent-focus: color-primary-transparent-300,
+ color-primary-transparent-hover: color-primary-transparent-200,
+ color-primary-transparent-default: color-primary-transparent-100,
+ color-primary-transparent-active: color-primary-transparent-300,
+ color-primary-transparent-disabled: color-basic-transparent-200,
+ color-primary-transparent-focus-border: color-primary-500,
+ color-primary-transparent-hover-border: color-primary-500,
+ color-primary-transparent-default-border: color-primary-500,
+ color-primary-transparent-active-border: color-primary-500,
+ color-primary-transparent-disabled-border: color-basic-transparent-300,
+
+ color-success-focus: color-success-600,
+ color-success-hover: color-success-400,
+ color-success-default: color-success-500,
+ color-success-active: color-success-600,
+ color-success-disabled: color-basic-transparent-300,
+ color-success-focus-border: color-success-700,
+ color-success-hover-border: color-success-hover,
+ color-success-default-border: color-success-default,
+ color-success-active-border: color-success-active,
+ color-success-disabled-border: color-success-disabled,
+
+ color-success-transparent-focus: color-success-transparent-300,
+ color-success-transparent-hover: color-success-transparent-200,
+ color-success-transparent-default: color-success-transparent-100,
+ color-success-transparent-active: color-success-transparent-300,
+ color-success-transparent-disabled: color-basic-transparent-200,
+ color-success-transparent-focus-border: color-success-500,
+ color-success-transparent-hover-border: color-success-500,
+ color-success-transparent-default-border: color-success-500,
+ color-success-transparent-active-border: color-success-500,
+ color-success-transparent-disabled-border: color-basic-transparent-300,
+
+ color-info-focus: color-info-600,
+ color-info-hover: color-info-400,
+ color-info-default: color-info-500,
+ color-info-active: color-info-600,
+ color-info-disabled: color-basic-transparent-300,
+ color-info-focus-border: color-info-700,
+ color-info-hover-border: color-info-hover,
+ color-info-default-border: color-info-default,
+ color-info-active-border: color-info-active,
+ color-info-disabled-border: color-info-disabled,
+
+ color-info-transparent-focus: color-info-transparent-300,
+ color-info-transparent-hover: color-info-transparent-200,
+ color-info-transparent-default: color-info-transparent-100,
+ color-info-transparent-active: color-info-transparent-300,
+ color-info-transparent-disabled: color-basic-transparent-200,
+ color-info-transparent-focus-border: color-info-500,
+ color-info-transparent-hover-border: color-info-500,
+ color-info-transparent-default-border: color-info-500,
+ color-info-transparent-active-border: color-info-500,
+ color-info-transparent-disabled-border: color-basic-transparent-300,
+
+ color-warning-focus: color-warning-600,
+ color-warning-hover: color-warning-400,
+ color-warning-default: color-warning-500,
+ color-warning-active: color-warning-600,
+ color-warning-disabled: color-basic-transparent-300,
+ color-warning-focus-border: color-warning-700,
+ color-warning-hover-border: color-warning-hover,
+ color-warning-default-border: color-warning-default,
+ color-warning-active-border: color-warning-active,
+ color-warning-disabled-border: color-warning-disabled,
+
+ color-warning-transparent-focus: color-warning-transparent-300,
+ color-warning-transparent-hover: color-warning-transparent-200,
+ color-warning-transparent-default: color-warning-transparent-100,
+ color-warning-transparent-active: color-warning-transparent-300,
+ color-warning-transparent-disabled: color-basic-transparent-200,
+ color-warning-transparent-focus-border: color-warning-500,
+ color-warning-transparent-hover-border: color-warning-500,
+ color-warning-transparent-default-border: color-warning-500,
+ color-warning-transparent-active-border: color-warning-500,
+ color-warning-transparent-disabled-border: color-basic-transparent-300,
+
+ color-danger-focus: color-danger-600,
+ color-danger-hover: color-danger-400,
+ color-danger-default: color-danger-500,
+ color-danger-active: color-danger-600,
+ color-danger-disabled: color-basic-transparent-300,
+ color-danger-focus-border: color-danger-700,
+ color-danger-hover-border: color-danger-hover,
+ color-danger-default-border: color-danger-default,
+ color-danger-active-border: color-danger-active,
+ color-danger-disabled-border: color-danger-disabled,
+
+ color-danger-transparent-focus: color-danger-transparent-300,
+ color-danger-transparent-hover: color-danger-transparent-200,
+ color-danger-transparent-default: color-danger-transparent-100,
+ color-danger-transparent-active: color-danger-transparent-300,
+ color-danger-transparent-disabled: color-basic-transparent-200,
+ color-danger-transparent-focus-border: color-danger-500,
+ color-danger-transparent-hover-border: color-danger-500,
+ color-danger-transparent-default-border: color-danger-500,
+ color-danger-transparent-active-border: color-danger-500,
+ color-danger-transparent-disabled-border: color-basic-transparent-300,
+
+ color-control-focus: color-basic-300,
+ color-control-hover: color-basic-200,
+ color-control-default: color-basic-100,
+ color-control-active: color-basic-300,
+ color-control-disabled: color-basic-transparent-300,
+ color-control-focus-border: color-basic-500,
+ color-control-hover-border: color-control-hover,
+ color-control-default-border: color-control-default,
+ color-control-active-border: color-control-active,
+ color-control-disabled-border: color-control-disabled,
+
+ color-control-transparent-focus: color-basic-control-transparent-300,
+ color-control-transparent-hover: color-basic-control-transparent-200,
+ color-control-transparent-default: color-basic-control-transparent-100,
+ color-control-transparent-active: color-basic-control-transparent-300,
+ color-control-transparent-disabled: color-basic-transparent-200,
+ color-control-transparent-focus-border: color-basic-100,
+ color-control-transparent-hover-border: color-basic-100,
+ color-control-transparent-default-border: color-basic-100,
+ color-control-transparent-active-border: color-basic-100,
+ color-control-transparent-disabled-border: color-basic-transparent-300,
+
+ background-basic-color-1: color-basic-1000,
+ background-basic-color-2: color-basic-1000,
+ background-basic-color-3: color-basic-900,
+ background-basic-color-4: color-basic-1100,
+
+ background-alternative-color-1: color-basic-100,
+ background-alternative-color-2: color-basic-200,
+ background-alternative-color-3: color-basic-300,
+ background-alternative-color-4: color-basic-400,
+
+ border-basic-color-1: color-basic-800,
+ border-basic-color-2: color-basic-900,
+ border-basic-color-3: color-basic-1000,
+ border-basic-color-4: color-basic-1100,
+ border-basic-color-5: color-basic-1100,
+
+ border-alternative-color-1: color-basic-100,
+ border-alternative-color-2: color-basic-200,
+ border-alternative-color-3: color-basic-300,
+ border-alternative-color-4: color-basic-400,
+ border-alternative-color-5: color-basic-500,
+
+ border-primary-color-1: color-primary-500,
+ border-primary-color-2: color-primary-600,
+ border-primary-color-3: color-primary-700,
+ border-primary-color-4: color-primary-800,
+ border-primary-color-5: color-primary-900,
+
+ border-success-color-1: color-success-500,
+ border-success-color-2: color-success-600,
+ border-success-color-3: color-success-700,
+ border-success-color-4: color-success-800,
+ border-success-color-5: color-success-900,
+
+ border-info-color-1: color-info-500,
+ border-info-color-2: color-info-600,
+ border-info-color-3: color-info-700,
+ border-info-color-4: color-info-800,
+ border-info-color-5: color-info-900,
+
+ border-warning-color-1: color-warning-500,
+ border-warning-color-2: color-warning-600,
+ border-warning-color-3: color-warning-700,
+ border-warning-color-4: color-warning-800,
+ border-warning-color-5: color-warning-900,
+
+ border-danger-color-1: color-danger-500,
+ border-danger-color-2: color-danger-600,
+ border-danger-color-3: color-danger-700,
+ border-danger-color-4: color-danger-800,
+ border-danger-color-5: color-danger-900,
+
+ text-basic-color: color-basic-100,
+ text-alternate-color: color-basic-900,
+ text-control-color: color-basic-100,
+ text-disabled-color: color-basic-transparent-600,
+ text-hint-color: color-basic-600,
+
+ text-primary-color: color-primary-default,
+ text-primary-focus-color: color-primary-focus,
+ text-primary-hover-color: color-primary-hover,
+ text-primary-active-color: color-primary-active,
+ text-primary-disabled-color: color-primary-400,
+
+ text-success-color: color-success-default,
+ text-success-focus-color: color-success-focus,
+ text-success-hover-color: color-success-hover,
+ text-success-active-color: color-success-active,
+ text-success-disabled-color: color-success-400,
+
+ text-info-color: color-info-default,
+ text-info-focus-color: color-info-focus,
+ text-info-hover-color: color-info-hover,
+ text-info-active-color: color-info-active,
+ text-info-disabled-color: color-info-400,
+
+ text-warning-color: color-warning-default,
+ text-warning-focus-color: color-warning-focus,
+ text-warning-hover-color: color-warning-hover,
+ text-warning-active-color: color-warning-active,
+ text-warning-disabled-color: color-warning-400,
+
+ text-danger-color: color-danger-default,
+ text-danger-focus-color: color-danger-focus,
+ text-danger-hover-color: color-danger-hover,
+ text-danger-active-color: color-danger-active,
+ text-danger-disabled-color: color-danger-400,
+
+ font-family-primary: unquote('Roboto, sans-serif'),
+
+ shadow: unquote(
+ '0px 2px 1px -1px rgba(0, 0, 0, 0.2), 0px 1px 1px 0px rgba(0, 0, 0, 0.14), 0px 1px 3px 0px rgba(0, 0, 0, 0.12)'
+ ),
+ card-shadow: shadow,
+ header-shadow: unquote(
+ '0px 3px 5px -1px rgba(0, 0, 0, 0.2), 0px 6px 10px 0px rgba(0, 0, 0, 0.14), 0px 1px 18px 0px rgba(0, 0, 0, 0.12)'
+ ),
+
+ header-background-color: color-primary-default,
+ footer-background-color: color-primary-default,
+ header-text-color: text-basic-color,
+ footer-text-color: text-basic-color,
+ footer-text-highlight-color: footer-text-color,
+ sidebar-background-color: background-basic-color-2,
+
+ material-regular-font-weight: 400,
+ menu-text-font-weight: material-regular-font-weight,
+ menu-text-color: rgba(255, 255, 255, 0.7),
+ menu-item-hover-text-color: rgba(255, 255, 255, 0.7),
+ menu-item-hover-background-color: rgba(255, 255, 255, 0.04),
+ menu-item-active-background-color: rgba(0, 0, 0, 0.25),
+
+ menu-item-icon-color: rgba(255, 255, 255, 0.7),
+ menu-item-icon-hover-color: rgba(255, 255, 255, 0.7),
+
+ menu-submenu-item-hover-background-color: rgba(255, 255, 255, 0.04),
+ menu-submenu-item-active-hover-background-color: rgba(255, 255, 255, 0.1),
+ menu-submenu-item-active-background-color: rgba(0, 0, 0, 0.25),
+
+ card-border-style: none,
+ card-background-color: color-basic-800,
+ card-divider-color: color-basic-700,
+
+ input-border-width: 1px,
+ input-basic-border-color: rgba(255, 255, 255, 0.7),
+ input-basic-focus-border-color: color-primary-focus,
+ input-basic-disabled-border-color: input-basic-border-color,
+ input-basic-hover-border-color: input-basic-border-color,
+ input-basic-background-color: transparent,
+ input-basic-focus-background-color: transparent,
+ input-basic-disabled-background-color: transparent,
+ input-basic-hover-background-color: transparent,
+ input-rectangle-border-radius: 0.25rem,
+ input-semi-round-border-radius: 0.25rem,
+ input-round-border-radius: 0.25rem,
+ input-medium-padding: 0.75rem 1rem,
+ input-large-padding: 1rem 1rem,
+ input-small-text-font-weight: text-paragraph-font-weight,
+ input-medium-text-font-weight: text-paragraph-font-weight,
+ input-large-text-font-weight: text-paragraph-font-weight,
+ input-primary-background-color: input-basic-background-color,
+ input-primary-focus-background-color: input-basic-focus-background-color,
+ input-primary-disabled-background-color: input-basic-disabled-background-color,
+ input-primary-hover-background-color: input-basic-hover-background-color,
+ input-info-background-color: input-basic-background-color,
+ input-info-focus-background-color: input-basic-focus-background-color,
+ input-info-disabled-background-color: input-basic-disabled-background-color,
+ input-info-hover-background-color: input-basic-hover-background-color,
+ input-success-background-color: input-basic-background-color,
+ input-success-focus-background-color: input-basic-focus-background-color,
+ input-success-disabled-background-color: input-basic-disabled-background-color,
+ input-success-hover-background-color: input-basic-hover-background-color,
+ input-warning-background-color: input-basic-background-color,
+ input-warning-focus-background-color: input-basic-focus-background-color,
+ input-warning-disabled-background-color: input-basic-disabled-background-color,
+ input-warning-hover-background-color: input-basic-hover-background-color,
+ input-danger-background-color: input-basic-background-color,
+ input-danger-focus-background-color: input-basic-focus-background-color,
+ input-danger-disabled-background-color: input-basic-disabled-background-color,
+ input-danger-hover-background-color: input-basic-hover-background-color,
+ input-control-background-color: input-basic-background-color,
+ input-control-focus-background-color: input-basic-focus-background-color,
+ input-control-disabled-background-color: input-basic-disabled-background-color,
+ input-control-hover-background-color: input-basic-hover-background-color,
+
+ select-tiny-text-font-weight: material-regular-font-weight,
+ select-small-text-font-weight: material-regular-font-weight,
+ select-medium-text-font-weight: material-regular-font-weight,
+ select-large-text-font-weight: material-regular-font-weight,
+ select-giant-text-font-weight: material-regular-font-weight,
+ select-rectangle-border-radius: 0,
+ select-semi-round-border-radius: 0,
+ select-round-border-radius: 0,
+ select-outline-border-width: 0 0 1px 0,
+ select-outline-basic-border-color: rgba(255, 255, 255, 0.7),
+ select-outline-basic-focus-border-color: color-primary-focus,
+ select-outline-basic-hover-border-color: select-outline-basic-border-color,
+ select-outline-basic-disabled-border-color: select-outline-basic-border-color,
+ select-outline-basic-background-color: transparent,
+ select-outline-basic-focus-background-color: transparent,
+ select-outline-basic-hover-background-color: transparent,
+ select-outline-basic-disabled-background-color: transparent,
+ select-outline-primary-background-color: select-outline-basic-background-color,
+ select-outline-primary-focus-background-color: select-outline-basic-focus-background-color,
+ select-outline-primary-hover-background-color: select-outline-basic-hover-background-color,
+ select-outline-primary-disabled-background-color: select-outline-basic-disabled-background-color,
+ select-outline-success-background-color: select-outline-basic-background-color,
+ select-outline-success-focus-background-color: select-outline-basic-focus-background-color,
+ select-outline-success-hover-background-color: select-outline-basic-hover-background-color,
+ select-outline-success-disabled-background-color: select-outline-basic-disabled-background-color,
+ select-outline-info-background-color: select-outline-basic-background-color,
+ select-outline-info-focus-background-color: select-outline-basic-focus-background-color,
+ select-outline-info-hover-background-color: select-outline-basic-hover-background-color,
+ select-outline-info-disabled-background-color: select-outline-basic-disabled-background-color,
+ select-outline-warning-background-color: select-outline-basic-background-color,
+ select-outline-warning-focus-background-color: select-outline-basic-focus-background-color,
+ select-outline-warning-hover-background-color: select-outline-basic-hover-background-color,
+ select-outline-warning-disabled-background-color: select-outline-basic-disabled-background-color,
+ select-outline-danger-background-color: select-outline-basic-background-color,
+ select-outline-danger-focus-background-color: select-outline-basic-focus-background-color,
+ select-outline-danger-hover-background-color: select-outline-basic-hover-background-color,
+ select-outline-danger-disabled-background-color: select-outline-basic-disabled-background-color,
+ select-outline-control-background-color: select-outline-basic-background-color,
+ select-outline-control-focus-background-color: select-outline-basic-focus-background-color,
+ select-outline-control-hover-background-color: select-outline-basic-hover-background-color,
+ select-outline-control-disabled-background-color: select-outline-basic-disabled-background-color,
+ option-list-shadow: shadow,
+ option-list-border-style: none,
+ option-list-adjacent-border-style: none,
+ option-background-color: color-basic-700,
+ option-hover-background-color: #4a4a4a,
+ option-focus-background-color: option-hover-background-color,
+ option-selected-background-color: #525252,
+ option-selected-hover-background-color: option-selected-background-color,
+ option-selected-focus-background-color: option-selected-background-color,
+ option-selected-text-color: text-primary-color,
+ option-selected-hover-text-color: text-primary-color,
+ option-selected-focus-text-color: text-primary-color,
+ option-tiny-text-font-weight: material-regular-font-weight,
+ option-small-text-font-weight: material-regular-font-weight,
+ option-medium-text-font-weight: material-regular-font-weight,
+ option-large-text-font-weight: material-regular-font-weight,
+ option-giant-text-font-weight: material-regular-font-weight
+);
+
+$nb-themes: nb-register-theme($theme, material-dark, dark);
diff --git a/src/app/@theme/styles/material/_material-light.scss b/src/app/@theme/styles/material/_material-light.scss
new file mode 100644
index 0000000000..fd033164c9
--- /dev/null
+++ b/src/app/@theme/styles/material/_material-light.scss
@@ -0,0 +1,497 @@
+/**
+ * @license
+ * Copyright Akveo. All Rights Reserved.
+ * Licensed under the MIT License. See License.txt in the project root for license information.
+ */
+
+@import '~@nebular/theme/styles/core/functions';
+@import '~@nebular/theme/styles/core/mixins';
+
+$theme: (
+ color-primary-100: #e8cbfe,
+ color-primary-200: #ce97fd,
+ color-primary-300: #ae63f9,
+ color-primary-400: #903df4,
+ color-primary-500: #6200ee,
+ color-primary-600: #4b00cc,
+ color-primary-700: #3800ab,
+ color-primary-800: #27008a,
+ color-primary-900: #1b0072,
+
+ color-primary-transparent-100: rgba(98, 0, 238, 0.08),
+ color-primary-transparent-200: rgba(98, 0, 238, 0.16),
+ color-primary-transparent-300: rgba(98, 0, 238, 0.24),
+ color-primary-transparent-400: rgba(98, 0, 238, 0.32),
+ color-primary-transparent-500: rgba(98, 0, 238, 0.4),
+ color-primary-transparent-600: rgba(98, 0, 238, 0.48),
+
+ color-success-100: #edfbd1,
+ color-success-200: #d7f7a6,
+ color-success-300: #b4e775,
+ color-success-400: #8fcf50,
+ color-success-500: #60af20,
+ color-success-600: #499617,
+ color-success-700: #357d10,
+ color-success-800: #24650a,
+ color-success-900: #175306,
+
+ color-success-transparent-100: rgba(96, 175, 32, 0.08),
+ color-success-transparent-200: rgba(96, 175, 32, 0.16),
+ color-success-transparent-300: rgba(96, 175, 32, 0.24),
+ color-success-transparent-400: rgba(96, 175, 32, 0.32),
+ color-success-transparent-500: rgba(96, 175, 32, 0.4),
+ color-success-transparent-600: rgba(96, 175, 32, 0.48),
+
+ color-info-100: #ccf7fe,
+ color-info-200: #99e9fd,
+ color-info-300: #66d3f9,
+ color-info-400: #40bbf4,
+ color-info-500: #0495ee,
+ color-info-600: #0273cc,
+ color-info-700: #0256ab,
+ color-info-800: #013d8a,
+ color-info-900: #002b72,
+
+ color-info-transparent-100: rgba(4, 149, 238, 0.08),
+ color-info-transparent-200: rgba(4, 149, 238, 0.16),
+ color-info-transparent-300: rgba(4, 149, 238, 0.24),
+ color-info-transparent-400: rgba(4, 149, 238, 0.32),
+ color-info-transparent-500: rgba(4, 149, 238, 0.4),
+ color-info-transparent-600: rgba(4, 149, 238, 0.48),
+
+ color-warning-100: #fff3cd,
+ color-warning-200: #ffe49b,
+ color-warning-300: #ffd169,
+ color-warning-400: #ffbe43,
+ color-warning-500: #ff9f05,
+ color-warning-600: #db8003,
+ color-warning-700: #b76302,
+ color-warning-800: #934a01,
+ color-warning-900: #7a3800,
+
+ color-warning-transparent-100: rgba(255, 159, 5, 0.08),
+ color-warning-transparent-200: rgba(255, 159, 5, 0.16),
+ color-warning-transparent-300: rgba(255, 159, 5, 0.24),
+ color-warning-transparent-400: rgba(255, 159, 5, 0.32),
+ color-warning-transparent-500: rgba(255, 159, 5, 0.4),
+ color-warning-transparent-600: rgba(255, 159, 5, 0.48),
+
+ color-danger-100: #fbd2c8,
+ color-danger-200: #f79e94,
+ color-danger-300: #e75d5c,
+ color-danger-400: #cf3341,
+ color-danger-500: #b00020,
+ color-danger-600: #970029,
+ color-danger-700: #7e002e,
+ color-danger-800: #66002f,
+ color-danger-900: #54002f,
+
+ color-danger-transparent-100: rgba(176, 0, 32, 0.08),
+ color-danger-transparent-200: rgba(176, 0, 32, 0.16),
+ color-danger-transparent-300: rgba(176, 0, 32, 0.24),
+ color-danger-transparent-400: rgba(176, 0, 32, 0.32),
+ color-danger-transparent-500: rgba(176, 0, 32, 0.4),
+ color-danger-transparent-600: rgba(176, 0, 32, 0.48),
+
+ color-basic-100: #ffffff,
+ color-basic-200: #f5f5f5,
+ color-basic-300: #ebebeb,
+ color-basic-400: #e0e0e0,
+ color-basic-500: #b3b3b3,
+ color-basic-600: #838383,
+ color-basic-700: #636363,
+ color-basic-800: #424242,
+ color-basic-900: #242424,
+ color-basic-1000: #1b1b1b,
+ color-basic-1100: #000000,
+
+ color-basic-transparent-100: rgba(131, 131, 131, 0.08),
+ color-basic-transparent-200: rgba(131, 131, 131, 0.16),
+ color-basic-transparent-300: rgba(131, 131, 131, 0.24),
+ color-basic-transparent-400: rgba(131, 131, 131, 0.32),
+ color-basic-transparent-500: rgba(131, 131, 131, 0.4),
+ color-basic-transparent-600: rgba(131, 131, 131, 0.48),
+
+ color-basic-control-transparent-100: rgba(255, 255, 255, 0.08),
+ color-basic-control-transparent-200: rgba(255, 255, 255, 0.16),
+ color-basic-control-transparent-300: rgba(255, 255, 255, 0.24),
+ color-basic-control-transparent-400: rgba(255, 255, 255, 0.32),
+ color-basic-control-transparent-500: rgba(255, 255, 255, 0.4),
+ color-basic-control-transparent-600: rgba(255, 255, 255, 0.48),
+
+ color-basic-focus: color-basic-400,
+ color-basic-hover: color-basic-200,
+ color-basic-default: color-basic-300,
+ color-basic-active: color-basic-400,
+ color-basic-disabled: color-basic-transparent-300,
+ color-basic-focus-border: color-basic-500,
+ color-basic-hover-border: color-basic-hover,
+ color-basic-default-border: color-basic-default,
+ color-basic-active-border: color-basic-active,
+ color-basic-disabled-border: color-basic-disabled,
+
+ color-basic-transparent-focus: color-basic-transparent-300,
+ color-basic-transparent-hover: color-basic-transparent-200,
+ color-basic-transparent-default: color-basic-transparent-100,
+ color-basic-transparent-active: color-basic-transparent-300,
+ color-basic-transparent-disabled: color-basic-transparent-200,
+ color-basic-transparent-focus-border: color-basic-500,
+ color-basic-transparent-hover-border: color-basic-500,
+ color-basic-transparent-default-border: color-basic-500,
+ color-basic-transparent-active-border: color-basic-500,
+ color-basic-transparent-disabled-border: color-basic-transparent-300,
+
+ color-primary-focus: color-primary-600,
+ color-primary-hover: color-primary-400,
+ color-primary-default: color-primary-500,
+ color-primary-active: color-primary-600,
+ color-primary-disabled: color-basic-transparent-300,
+ color-primary-focus-border: color-primary-700,
+ color-primary-hover-border: color-primary-hover,
+ color-primary-default-border: color-primary-default,
+ color-primary-active-border: color-primary-active,
+ color-primary-disabled-border: color-primary-disabled,
+
+ color-primary-transparent-focus: color-primary-transparent-300,
+ color-primary-transparent-hover: color-primary-transparent-200,
+ color-primary-transparent-default: color-primary-transparent-100,
+ color-primary-transparent-active: color-primary-transparent-300,
+ color-primary-transparent-disabled: color-basic-transparent-200,
+ color-primary-transparent-focus-border: color-primary-500,
+ color-primary-transparent-hover-border: color-primary-500,
+ color-primary-transparent-default-border: color-primary-500,
+ color-primary-transparent-active-border: color-primary-500,
+ color-primary-transparent-disabled-border: color-basic-transparent-300,
+
+ color-success-focus: color-success-600,
+ color-success-hover: color-success-400,
+ color-success-default: color-success-500,
+ color-success-active: color-success-600,
+ color-success-disabled: color-basic-transparent-300,
+ color-success-focus-border: color-success-700,
+ color-success-hover-border: color-success-hover,
+ color-success-default-border: color-success-default,
+ color-success-active-border: color-success-active,
+ color-success-disabled-border: color-success-disabled,
+
+ color-success-transparent-focus: color-success-transparent-300,
+ color-success-transparent-hover: color-success-transparent-200,
+ color-success-transparent-default: color-success-transparent-100,
+ color-success-transparent-active: color-success-transparent-300,
+ color-success-transparent-disabled: color-basic-transparent-200,
+ color-success-transparent-focus-border: color-success-500,
+ color-success-transparent-hover-border: color-success-500,
+ color-success-transparent-default-border: color-success-500,
+ color-success-transparent-active-border: color-success-500,
+ color-success-transparent-disabled-border: color-basic-transparent-300,
+
+ color-info-focus: color-info-600,
+ color-info-hover: color-info-400,
+ color-info-default: color-info-500,
+ color-info-active: color-info-600,
+ color-info-disabled: color-basic-transparent-300,
+ color-info-focus-border: color-info-700,
+ color-info-hover-border: color-info-hover,
+ color-info-default-border: color-info-default,
+ color-info-active-border: color-info-active,
+ color-info-disabled-border: color-info-disabled,
+
+ color-info-transparent-focus: color-info-transparent-300,
+ color-info-transparent-hover: color-info-transparent-200,
+ color-info-transparent-default: color-info-transparent-100,
+ color-info-transparent-active: color-info-transparent-300,
+ color-info-transparent-disabled: color-basic-transparent-200,
+ color-info-transparent-focus-border: color-info-500,
+ color-info-transparent-hover-border: color-info-500,
+ color-info-transparent-default-border: color-info-500,
+ color-info-transparent-active-border: color-info-500,
+ color-info-transparent-disabled-border: color-basic-transparent-300,
+
+ color-warning-focus: color-warning-600,
+ color-warning-hover: color-warning-400,
+ color-warning-default: color-warning-500,
+ color-warning-active: color-warning-600,
+ color-warning-disabled: color-basic-transparent-300,
+ color-warning-focus-border: color-warning-700,
+ color-warning-hover-border: color-warning-hover,
+ color-warning-default-border: color-warning-default,
+ color-warning-active-border: color-warning-active,
+ color-warning-disabled-border: color-warning-disabled,
+
+ color-warning-transparent-focus: color-warning-transparent-300,
+ color-warning-transparent-hover: color-warning-transparent-200,
+ color-warning-transparent-default: color-warning-transparent-100,
+ color-warning-transparent-active: color-warning-transparent-300,
+ color-warning-transparent-disabled: color-basic-transparent-200,
+ color-warning-transparent-focus-border: color-warning-500,
+ color-warning-transparent-hover-border: color-warning-500,
+ color-warning-transparent-default-border: color-warning-500,
+ color-warning-transparent-active-border: color-warning-500,
+ color-warning-transparent-disabled-border: color-basic-transparent-300,
+
+ color-danger-focus: color-danger-600,
+ color-danger-hover: color-danger-400,
+ color-danger-default: color-danger-500,
+ color-danger-active: color-danger-600,
+ color-danger-disabled: color-basic-transparent-300,
+ color-danger-focus-border: color-danger-700,
+ color-danger-hover-border: color-danger-hover,
+ color-danger-default-border: color-danger-default,
+ color-danger-active-border: color-danger-active,
+ color-danger-disabled-border: color-danger-disabled,
+
+ color-danger-transparent-focus: color-danger-transparent-300,
+ color-danger-transparent-hover: color-danger-transparent-200,
+ color-danger-transparent-default: color-danger-transparent-100,
+ color-danger-transparent-active: color-danger-transparent-300,
+ color-danger-transparent-disabled: color-basic-transparent-200,
+ color-danger-transparent-focus-border: color-danger-500,
+ color-danger-transparent-hover-border: color-danger-500,
+ color-danger-transparent-default-border: color-danger-500,
+ color-danger-transparent-active-border: color-danger-500,
+ color-danger-transparent-disabled-border: color-basic-transparent-300,
+
+ color-control-focus: color-basic-300,
+ color-control-hover: color-basic-200,
+ color-control-default: color-basic-100,
+ color-control-active: color-basic-300,
+ color-control-disabled: color-basic-transparent-300,
+ color-control-focus-border: color-basic-500,
+ color-control-hover-border: color-control-hover,
+ color-control-default-border: color-control-default,
+ color-control-active-border: color-control-active,
+ color-control-disabled-border: color-control-disabled,
+
+ color-control-transparent-focus: color-basic-control-transparent-300,
+ color-control-transparent-hover: color-basic-control-transparent-200,
+ color-control-transparent-default: color-basic-control-transparent-100,
+ color-control-transparent-active: color-basic-control-transparent-300,
+ color-control-transparent-disabled: color-basic-transparent-200,
+ color-control-transparent-focus-border: color-basic-100,
+ color-control-transparent-hover-border: color-basic-100,
+ color-control-transparent-default-border: color-basic-100,
+ color-control-transparent-active-border: color-basic-100,
+ color-control-transparent-disabled-border: color-basic-transparent-300,
+
+ background-basic-color-1: color-basic-100,
+ background-basic-color-2: color-basic-300,
+ background-basic-color-3: #fafafa,
+ background-basic-color-4: color-basic-400,
+
+ background-alternative-color-1: color-basic-800,
+ background-alternative-color-2: color-basic-900,
+ background-alternative-color-3: color-basic-1000,
+ background-alternative-color-4: color-basic-1100,
+
+ border-basic-color-1: color-basic-100,
+ border-basic-color-2: color-basic-200,
+ border-basic-color-3: color-basic-300,
+ border-basic-color-4: color-basic-400,
+ border-basic-color-5: color-basic-500,
+
+ border-alternative-color-1: color-basic-800,
+ border-alternative-color-2: color-basic-900,
+ border-alternative-color-3: color-basic-1000,
+ border-alternative-color-4: color-basic-1100,
+ border-alternative-color-5: color-basic-1100,
+
+ border-primary-color-1: color-primary-500,
+ border-primary-color-2: color-primary-600,
+ border-primary-color-3: color-primary-700,
+ border-primary-color-4: color-primary-800,
+ border-primary-color-5: color-primary-900,
+
+ border-success-color-1: color-success-500,
+ border-success-color-2: color-success-600,
+ border-success-color-3: color-success-700,
+ border-success-color-4: color-success-800,
+ border-success-color-5: color-success-900,
+
+ border-info-color-1: color-info-500,
+ border-info-color-2: color-info-600,
+ border-info-color-3: color-info-700,
+ border-info-color-4: color-info-800,
+ border-info-color-5: color-info-900,
+
+ border-warning-color-1: color-warning-500,
+ border-warning-color-2: color-warning-600,
+ border-warning-color-3: color-warning-700,
+ border-warning-color-4: color-warning-800,
+ border-warning-color-5: color-warning-900,
+
+ border-danger-color-1: color-danger-500,
+ border-danger-color-2: color-danger-600,
+ border-danger-color-3: color-danger-700,
+ border-danger-color-4: color-danger-800,
+ border-danger-color-5: color-danger-900,
+
+ text-basic-color: color-basic-800,
+ text-alternate-color: color-basic-100,
+ text-control-color: color-basic-100,
+ text-disabled-color: color-basic-transparent-600,
+ text-hint-color: color-basic-600,
+
+ text-primary-color: color-primary-default,
+ text-primary-focus-color: color-primary-focus,
+ text-primary-hover-color: color-primary-hover,
+ text-primary-active-color: color-primary-active,
+ text-primary-disabled-color: color-primary-400,
+
+ text-success-color: color-success-default,
+ text-success-focus-color: color-success-focus,
+ text-success-hover-color: color-success-hover,
+ text-success-active-color: color-success-active,
+ text-success-disabled-color: color-success-400,
+
+ text-info-color: color-info-default,
+ text-info-focus-color: color-info-focus,
+ text-info-hover-color: color-info-hover,
+ text-info-active-color: color-info-active,
+ text-info-disabled-color: color-info-400,
+
+ text-warning-color: color-warning-default,
+ text-warning-focus-color: color-warning-focus,
+ text-warning-hover-color: color-warning-hover,
+ text-warning-active-color: color-warning-active,
+ text-warning-disabled-color: color-warning-400,
+
+ text-danger-color: color-danger-default,
+ text-danger-focus-color: color-danger-focus,
+ text-danger-hover-color: color-danger-hover,
+ text-danger-active-color: color-danger-active,
+ text-danger-disabled-color: color-danger-400,
+
+ font-family-primary: unquote('Roboto, sans-serif'),
+
+ shadow: unquote('0 2px 1px -1px rgba(0,0,0,.2), 0 1px 1px 0 rgba(0,0,0,.14), 0 1px 3px 0 rgba(0,0,0,.12)'),
+ card-shadow: shadow,
+ header-shadow: unquote(
+ '0 3px 5px -1px rgba(0,0,0,.2), 0 6px 10px 0 rgba(0,0,0,.14), 0 1px 18px 0 rgba(0,0,0,.12)'
+ ),
+
+ header-background-color: color-primary-default,
+ footer-background-color: color-primary-default,
+ header-text-color: text-alternate-color,
+ footer-text-color: text-alternate-color,
+ footer-text-highlight-color: footer-text-color,
+ sidebar-background-color: background-basic-color-2,
+
+ menu-text-font-weight: 400,
+ menu-text-color: rgba(0, 0, 0, 0.87),
+ menu-item-hover-text-color: rgba(0, 0, 0, 0.87),
+ menu-item-hover-background-color: rgba(0, 0, 0, 0.04),
+ menu-item-active-background-color: rgba(0, 0, 0, 0.08),
+
+ menu-item-icon-color: rgba(0, 0, 0, 0.87),
+ menu-item-icon-hover-color: rgba(0, 0, 0, 0.87),
+
+ menu-submenu-item-hover-background-color: rgba(0, 0, 0, 0.04),
+ menu-submenu-item-active-hover-background-color: rgba(0, 0, 0, 0.1),
+ menu-submenu-item-active-background-color: rgba(0, 0, 0, 0.08),
+
+ card-border-style: none,
+ card-divider-color: color-basic-200,
+
+ input-border-width: 1px,
+ input-basic-border-color: rgba(0, 0, 0, 0.42),
+ input-basic-focus-border-color: color-primary-focus,
+ input-basic-disabled-border-color: rgba(0, 0, 0, 0.42),
+ input-basic-hover-border-color: rgba(0, 0, 0, 0.42),
+ input-basic-background-color: transparent,
+ input-basic-focus-background-color: transparent,
+ input-basic-disabled-background-color: transparent,
+ input-basic-hover-background-color: transparent,
+ input-rectangle-border-radius: 0.25rem,
+ input-semi-round-border-radius: 0.25rem,
+ input-round-border-radius: 0.25rem,
+ input-medium-padding: 0.75rem 1rem,
+ input-large-padding: 1rem 1rem,
+ input-small-text-font-weight: text-paragraph-font-weight,
+ input-medium-text-font-weight: text-paragraph-font-weight,
+ input-large-text-font-weight: text-paragraph-font-weight,
+ input-primary-background-color: input-basic-background-color,
+ input-primary-focus-background-color: input-basic-focus-background-color,
+ input-primary-disabled-background-color: input-basic-disabled-background-color,
+ input-primary-hover-background-color: input-basic-hover-background-color,
+ input-info-background-color: input-basic-background-color,
+ input-info-focus-background-color: input-basic-focus-background-color,
+ input-info-disabled-background-color: input-basic-disabled-background-color,
+ input-info-hover-background-color: input-basic-hover-background-color,
+ input-success-background-color: input-basic-background-color,
+ input-success-focus-background-color: input-basic-focus-background-color,
+ input-success-disabled-background-color: input-basic-disabled-background-color,
+ input-success-hover-background-color: input-basic-hover-background-color,
+ input-warning-background-color: input-basic-background-color,
+ input-warning-focus-background-color: input-basic-focus-background-color,
+ input-warning-disabled-background-color: input-basic-disabled-background-color,
+ input-warning-hover-background-color: input-basic-hover-background-color,
+ input-danger-background-color: input-basic-background-color,
+ input-danger-focus-background-color: input-basic-focus-background-color,
+ input-danger-disabled-background-color: input-basic-disabled-background-color,
+ input-danger-hover-background-color: input-basic-hover-background-color,
+ input-control-background-color: input-basic-background-color,
+ input-control-focus-background-color: input-basic-focus-background-color,
+ input-control-disabled-background-color: input-basic-disabled-background-color,
+ input-control-hover-background-color: input-basic-hover-background-color,
+
+ select-tiny-text-font-weight: material-regular-font-weight,
+ select-small-text-font-weight: material-regular-font-weight,
+ select-medium-text-font-weight: material-regular-font-weight,
+ select-large-text-font-weight: material-regular-font-weight,
+ select-giant-text-font-weight: material-regular-font-weight,
+ select-rectangle-border-radius: 0,
+ select-semi-round-border-radius: 0,
+ select-round-border-radius: 0,
+ select-outline-border-width: 0 0 1px 0,
+ select-outline-basic-border-color: rgba(0, 0, 0, 0.42),
+ select-outline-basic-focus-border-color: color-primary-focus,
+ select-outline-basic-hover-border-color: select-outline-basic-border-color,
+ select-outline-basic-disabled-border-color: select-outline-basic-border-color,
+ select-outline-basic-background-color: transparent,
+ select-outline-basic-focus-background-color: transparent,
+ select-outline-basic-hover-background-color: transparent,
+ select-outline-basic-disabled-background-color: transparent,
+ select-outline-primary-background-color: select-outline-basic-background-color,
+ select-outline-primary-focus-background-color: select-outline-basic-focus-background-color,
+ select-outline-primary-hover-background-color: select-outline-basic-hover-background-color,
+ select-outline-primary-disabled-background-color: select-outline-basic-disabled-background-color,
+ select-outline-success-background-color: select-outline-basic-background-color,
+ select-outline-success-focus-background-color: select-outline-basic-focus-background-color,
+ select-outline-success-hover-background-color: select-outline-basic-hover-background-color,
+ select-outline-success-disabled-background-color: select-outline-basic-disabled-background-color,
+ select-outline-info-background-color: select-outline-basic-background-color,
+ select-outline-info-focus-background-color: select-outline-basic-focus-background-color,
+ select-outline-info-hover-background-color: select-outline-basic-hover-background-color,
+ select-outline-info-disabled-background-color: select-outline-basic-disabled-background-color,
+ select-outline-warning-background-color: select-outline-basic-background-color,
+ select-outline-warning-focus-background-color: select-outline-basic-focus-background-color,
+ select-outline-warning-hover-background-color: select-outline-basic-hover-background-color,
+ select-outline-warning-disabled-background-color: select-outline-basic-disabled-background-color,
+ select-outline-danger-background-color: select-outline-basic-background-color,
+ select-outline-danger-focus-background-color: select-outline-basic-focus-background-color,
+ select-outline-danger-hover-background-color: select-outline-basic-hover-background-color,
+ select-outline-danger-disabled-background-color: select-outline-basic-disabled-background-color,
+ select-outline-control-background-color: select-outline-basic-background-color,
+ select-outline-control-focus-background-color: select-outline-basic-focus-background-color,
+ select-outline-control-hover-background-color: select-outline-basic-hover-background-color,
+ select-outline-control-disabled-background-color: select-outline-basic-disabled-background-color,
+ option-list-shadow: shadow,
+ option-list-border-style: none,
+ option-list-adjacent-border-style: none,
+ option-background-color: color-basic-100,
+ option-hover-background-color: color-basic-200,
+ option-focus-background-color: option-hover-background-color,
+ option-selected-background-color: color-basic-300,
+ option-selected-hover-background-color: option-selected-background-color,
+ option-selected-focus-background-color: option-selected-background-color,
+ option-selected-text-color: text-primary-color,
+ option-selected-hover-text-color: text-primary-color,
+ option-selected-focus-text-color: text-primary-color,
+ option-tiny-text-font-weight: material-regular-font-weight,
+ option-small-text-font-weight: material-regular-font-weight,
+ option-medium-text-font-weight: material-regular-font-weight,
+ option-large-text-font-weight: material-regular-font-weight,
+ option-giant-text-font-weight: material-regular-font-weight
+);
+
+$nb-themes: nb-register-theme($theme, material-light, default);
diff --git a/src/app/@theme/styles/material/_material-overrides.scss b/src/app/@theme/styles/material/_material-overrides.scss
new file mode 100644
index 0000000000..ebb4c2461b
--- /dev/null
+++ b/src/app/@theme/styles/material/_material-overrides.scss
@@ -0,0 +1,44 @@
+@mixin material-overrides() {
+ @include nb-for-themes(material-dark, material-light) {
+ nb-layout-header {
+ nb-actions, .logo-container {
+ nb-icon, .user-name {
+ color: nb-theme(color-basic-100) !important;
+ }
+ }
+
+ .select-button {
+ background-color: nb-theme(background-basic-color-3) !important;
+ }
+ }
+
+ nb-sidebar {
+ transition: width 0.3s;
+
+ .main-container {
+ transition: width 0.3s;
+ }
+ }
+
+ nb-card {
+ border-bottom-left-radius: 0.125rem;
+ border-bottom-right-radius: 0.125rem;
+
+ nb-card-header, .tabset {
+ background-color: nb-theme(card-divider-color);
+ }
+ }
+
+ [nbinput] {
+ font-weight: 400;
+
+ &.status-basic:focus:hover {
+ border-color: nb-theme(color-primary-focus) !important;
+ }
+ }
+
+ [nbbutton] {
+ box-shadow: none !important;
+ }
+ }
+}
diff --git a/src/app/@theme/styles/material/theme.material-dark.ts b/src/app/@theme/styles/material/theme.material-dark.ts
new file mode 100644
index 0000000000..28fad118b9
--- /dev/null
+++ b/src/app/@theme/styles/material/theme.material-dark.ts
@@ -0,0 +1,361 @@
+import { NbJSThemeOptions } from '@nebular/theme';
+
+const palette = {
+ primary: '#e91d63',
+ success: '#60af20',
+ info: '#0495ee',
+ warning: '#ff9f05',
+ danger: '#b00020',
+};
+
+export const baseTheme: NbJSThemeOptions = {
+ name: 'material-dark',
+ base: 'dark',
+ variables: {
+ fontMain: 'Roboto, sans-serif',
+ fontSecondary: 'Roboto, sans-serif',
+
+ bg: '#383838',
+ bg2: '#292929',
+ bg3: '#1f1f1f',
+ bg4: '#141414',
+
+ border: '#383838',
+ border2: '#292929',
+ border3: '#1f1f1f',
+ border4: '#141414',
+ border5: '#141414',
+
+ fg: '#808080',
+ fgHeading: '#ffffff',
+ fgText: '#ffffff',
+ fgHighlight: palette.primary,
+ layoutBg: '#1f1f1f',
+ separator: '#1f1f1f',
+
+ primary: palette.primary,
+ success: palette.success,
+ info: palette.info,
+ warning: palette.warning,
+ danger: palette.danger,
+
+ primaryLight: '#f24681',
+ successLight: '#8fcf50',
+ infoLight: '#40bbf4',
+ warningLight: '#ffbe43',
+ dangerLight: '#cf3341',
+ },
+};
+
+const baseThemeVariables = baseTheme.variables;
+
+export const MATERIAL_DARK_THEME = {
+ name: 'material-dark',
+ base: 'default',
+ variables: {
+ temperature: {
+ arcFill: [
+ baseThemeVariables.primary,
+ baseThemeVariables.primary,
+ baseThemeVariables.primary,
+ baseThemeVariables.primary,
+ baseThemeVariables.primary,
+ ],
+ arcEmpty: baseThemeVariables.bg2,
+ thumbBg: baseThemeVariables.bg2,
+ thumbBorder: baseThemeVariables.primary,
+ },
+
+ solar: {
+ gradientLeft: baseThemeVariables.primary,
+ gradientRight: baseThemeVariables.primary,
+ shadowColor: 'rgba(0, 0, 0, 0)',
+ secondSeriesFill: baseThemeVariables.bg2,
+ radius: ['80%', '90%'],
+ },
+
+ traffic: {
+ tooltipBg: baseThemeVariables.bg,
+ tooltipBorderColor: baseThemeVariables.border2,
+ tooltipExtraCss: 'border-radius: 10px; padding: 4px 16px;',
+ tooltipTextColor: baseThemeVariables.fgText,
+ tooltipFontWeight: 'normal',
+
+ yAxisSplitLine: baseThemeVariables.separator,
+
+ lineBg: baseThemeVariables.border4,
+ lineShadowBlur: '1',
+ itemColor: baseThemeVariables.border4,
+ itemBorderColor: baseThemeVariables.border4,
+ itemEmphasisBorderColor: baseThemeVariables.primary,
+ shadowLineDarkBg: 'rgba(0, 0, 0, 0)',
+ shadowLineShadow: 'rgba(0, 0, 0, 0)',
+ gradFrom: baseThemeVariables.bg2,
+ gradTo: baseThemeVariables.bg2,
+ },
+
+ electricity: {
+ tooltipBg: baseThemeVariables.bg,
+ tooltipLineColor: baseThemeVariables.fgText,
+ tooltipLineWidth: '0',
+ tooltipBorderColor: baseThemeVariables.border2,
+ tooltipExtraCss: 'border-radius: 10px; padding: 8px 24px;',
+ tooltipTextColor: baseThemeVariables.fgText,
+ tooltipFontWeight: 'normal',
+
+ axisLineColor: baseThemeVariables.border3,
+ xAxisTextColor: baseThemeVariables.fg,
+ yAxisSplitLine: baseThemeVariables.separator,
+
+ itemBorderColor: baseThemeVariables.primary,
+ lineStyle: 'solid',
+ lineWidth: '4',
+ lineGradFrom: baseThemeVariables.primary,
+ lineGradTo: baseThemeVariables.primary,
+ lineShadow: 'rgba(0, 0, 0, 0)',
+
+ areaGradFrom: baseThemeVariables.bg2,
+ areaGradTo: baseThemeVariables.bg2,
+ shadowLineDarkBg: 'rgba(0, 0, 0, 0)',
+ },
+
+ bubbleMap: {
+ titleColor: baseThemeVariables.fgText,
+ areaColor: baseThemeVariables.bg4,
+ areaHoverColor: baseThemeVariables.fgHighlight,
+ areaBorderColor: baseThemeVariables.border5,
+ },
+
+ profitBarAnimationEchart: {
+ textColor: baseThemeVariables.fgText,
+
+ firstAnimationBarColor: baseThemeVariables.primary,
+ secondAnimationBarColor: baseThemeVariables.success,
+
+ splitLineStyleOpacity: '1',
+ splitLineStyleWidth: '1',
+ splitLineStyleColor: baseThemeVariables.separator,
+
+ tooltipTextColor: baseThemeVariables.fgText,
+ tooltipFontWeight: 'normal',
+ tooltipFontSize: '16',
+ tooltipBg: baseThemeVariables.bg,
+ tooltipBorderColor: baseThemeVariables.border2,
+ tooltipBorderWidth: '1',
+ tooltipExtraCss: 'border-radius: 10px; padding: 4px 16px;',
+ },
+
+ trafficBarEchart: {
+ gradientFrom: baseThemeVariables.warningLight,
+ gradientTo: baseThemeVariables.warning,
+ shadow: baseThemeVariables.warningLight,
+ shadowBlur: '0',
+
+ axisTextColor: baseThemeVariables.fgText,
+ axisFontSize: '12',
+
+ tooltipBg: baseThemeVariables.bg,
+ tooltipBorderColor: baseThemeVariables.border2,
+ tooltipExtraCss: 'border-radius: 10px; padding: 4px 16px;',
+ tooltipTextColor: baseThemeVariables.fgText,
+ tooltipFontWeight: 'normal',
+ },
+
+ countryOrders: {
+ countryBorderColor: baseThemeVariables.border4,
+ countryFillColor: baseThemeVariables.bg3,
+ countryBorderWidth: '1',
+ hoveredCountryBorderColor: baseThemeVariables.primary,
+ hoveredCountryFillColor: baseThemeVariables.primaryLight,
+ hoveredCountryBorderWidth: '1',
+
+ chartAxisLineColor: baseThemeVariables.border4,
+ chartAxisTextColor: baseThemeVariables.fg,
+ chartAxisFontSize: '16',
+ chartGradientTo: baseThemeVariables.primary,
+ chartGradientFrom: baseThemeVariables.primaryLight,
+ chartAxisSplitLine: baseThemeVariables.separator,
+ chartShadowLineColor: baseThemeVariables.primaryLight,
+
+ chartLineBottomShadowColor: baseThemeVariables.primary,
+
+ chartInnerLineColor: baseThemeVariables.bg2,
+ },
+
+ echarts: {
+ bg: baseThemeVariables.bg,
+ textColor: baseThemeVariables.fgText,
+ axisLineColor: baseThemeVariables.fgText,
+ splitLineColor: baseThemeVariables.separator,
+ itemHoverShadowColor: 'rgba(0, 0, 0, 0.5)',
+ tooltipBackgroundColor: baseThemeVariables.primary,
+ areaOpacity: '0.7',
+ },
+
+ chartjs: {
+ axisLineColor: baseThemeVariables.separator,
+ textColor: baseThemeVariables.fgText,
+ },
+
+ orders: {
+ tooltipBg: baseThemeVariables.bg,
+ tooltipLineColor: 'rgba(0, 0, 0, 0)',
+ tooltipLineWidth: '0',
+ tooltipBorderColor: baseThemeVariables.border2,
+ tooltipExtraCss: 'border-radius: 10px; padding: 8px 24px;',
+ tooltipTextColor: baseThemeVariables.fgText,
+ tooltipFontWeight: 'normal',
+ tooltipFontSize: '20',
+
+ axisLineColor: baseThemeVariables.border4,
+ axisFontSize: '16',
+ axisTextColor: baseThemeVariables.fg,
+ yAxisSplitLine: baseThemeVariables.separator,
+
+ itemBorderColor: baseThemeVariables.primary,
+ lineStyle: 'solid',
+ lineWidth: '4',
+
+ // first line
+ firstAreaGradFrom: baseThemeVariables.bg3,
+ firstAreaGradTo: baseThemeVariables.bg3,
+ firstShadowLineDarkBg: 'rgba(0, 0, 0, 0)',
+
+ // second line
+ secondLineGradFrom: baseThemeVariables.primary,
+ secondLineGradTo: baseThemeVariables.primary,
+
+ secondAreaGradFrom: 'rgba(51, 102, 255, 0.2)',
+ secondAreaGradTo: 'rgba(51, 102, 255, 0)',
+ secondShadowLineDarkBg: 'rgba(0, 0, 0, 0)',
+
+ // third line
+ thirdLineGradFrom: baseThemeVariables.success,
+ thirdLineGradTo: baseThemeVariables.successLight,
+
+ thirdAreaGradFrom: 'rgba(0, 214, 143, 0.2)',
+ thirdAreaGradTo: 'rgba(0, 214, 143, 0)',
+ thirdShadowLineDarkBg: 'rgba(0, 0, 0, 0)',
+ },
+
+ profit: {
+ bg: baseThemeVariables.bg,
+ textColor: baseThemeVariables.fgText,
+ axisLineColor: baseThemeVariables.border4,
+ splitLineColor: baseThemeVariables.separator,
+ areaOpacity: '1',
+
+ axisFontSize: '16',
+ axisTextColor: baseThemeVariables.fg,
+
+ // first bar
+ firstLineGradFrom: baseThemeVariables.bg3,
+ firstLineGradTo: baseThemeVariables.bg3,
+ firstLineShadow: 'rgba(0, 0, 0, 0)',
+
+ // second bar
+ secondLineGradFrom: baseThemeVariables.primary,
+ secondLineGradTo: baseThemeVariables.primary,
+ secondLineShadow: 'rgba(0, 0, 0, 0)',
+
+ // third bar
+ thirdLineGradFrom: baseThemeVariables.success,
+ thirdLineGradTo: baseThemeVariables.successLight,
+ thirdLineShadow: 'rgba(0, 0, 0, 0)',
+ },
+
+ orderProfitLegend: {
+ firstItem: baseThemeVariables.success,
+ secondItem: baseThemeVariables.primary,
+ thirdItem: baseThemeVariables.bg3,
+ },
+
+ visitors: {
+ tooltipBg: baseThemeVariables.bg,
+ tooltipLineColor: 'rgba(0, 0, 0, 0)',
+ tooltipLineWidth: '1',
+ tooltipBorderColor: baseThemeVariables.border2,
+ tooltipExtraCss: 'border-radius: 10px; padding: 8px 24px;',
+ tooltipTextColor: baseThemeVariables.fgText,
+ tooltipFontWeight: 'normal',
+ tooltipFontSize: '20',
+
+ axisLineColor: baseThemeVariables.border4,
+ axisFontSize: '16',
+ axisTextColor: baseThemeVariables.fg,
+ yAxisSplitLine: baseThemeVariables.separator,
+
+ itemBorderColor: baseThemeVariables.primary,
+ lineStyle: 'dotted',
+ lineWidth: '6',
+ lineGradFrom: '#ffffff',
+ lineGradTo: '#ffffff',
+ lineShadow: 'rgba(0, 0, 0, 0)',
+
+ areaGradFrom: baseThemeVariables.primary,
+ areaGradTo: baseThemeVariables.primaryLight,
+
+ innerLineStyle: 'solid',
+ innerLineWidth: '1',
+
+ innerAreaGradFrom: baseThemeVariables.success,
+ innerAreaGradTo: baseThemeVariables.success,
+ },
+
+ visitorsLegend: {
+ firstIcon: baseThemeVariables.success,
+ secondIcon: baseThemeVariables.primary,
+ },
+
+ visitorsPie: {
+ firstPieGradientLeft: baseThemeVariables.success,
+ firstPieGradientRight: baseThemeVariables.success,
+ firstPieShadowColor: 'rgba(0, 0, 0, 0)',
+ firstPieRadius: ['70%', '90%'],
+
+ secondPieGradientLeft: baseThemeVariables.warning,
+ secondPieGradientRight: baseThemeVariables.warningLight,
+ secondPieShadowColor: 'rgba(0, 0, 0, 0)',
+ secondPieRadius: ['60%', '97%'],
+ shadowOffsetX: '0',
+ shadowOffsetY: '0',
+ },
+
+ visitorsPieLegend: {
+ firstSection: baseThemeVariables.warning,
+ secondSection: baseThemeVariables.success,
+ },
+
+ earningPie: {
+ radius: ['65%', '100%'],
+ center: ['50%', '50%'],
+
+ fontSize: '22',
+
+ firstPieGradientLeft: baseThemeVariables.success,
+ firstPieGradientRight: baseThemeVariables.success,
+ firstPieShadowColor: 'rgba(0, 0, 0, 0)',
+
+ secondPieGradientLeft: baseThemeVariables.primary,
+ secondPieGradientRight: baseThemeVariables.primary,
+ secondPieShadowColor: 'rgba(0, 0, 0, 0)',
+
+ thirdPieGradientLeft: baseThemeVariables.warning,
+ thirdPieGradientRight: baseThemeVariables.warning,
+ thirdPieShadowColor: 'rgba(0, 0, 0, 0)',
+ },
+
+ earningLine: {
+ gradFrom: baseThemeVariables.primary,
+ gradTo: baseThemeVariables.primary,
+
+ tooltipTextColor: baseThemeVariables.fgText,
+ tooltipFontWeight: 'normal',
+ tooltipFontSize: '16',
+ tooltipBg: baseThemeVariables.bg,
+ tooltipBorderColor: baseThemeVariables.border2,
+ tooltipBorderWidth: '1',
+ tooltipExtraCss: 'border-radius: 10px; padding: 4px 16px;',
+ },
+ },
+} as NbJSThemeOptions;
diff --git a/src/app/@theme/styles/material/theme.material-light.ts b/src/app/@theme/styles/material/theme.material-light.ts
new file mode 100644
index 0000000000..f0a40c7a35
--- /dev/null
+++ b/src/app/@theme/styles/material/theme.material-light.ts
@@ -0,0 +1,361 @@
+import { NbJSThemeOptions } from '@nebular/theme';
+
+const palette = {
+ primary: '#6200ee',
+ success: '#60af20',
+ info: '#0495ee',
+ warning: '#ff9f05',
+ danger: '#b00020',
+};
+
+export const baseTheme: NbJSThemeOptions = {
+ name: 'material-light',
+ base: 'default',
+ variables: {
+ fontMain: 'Roboto, sans-serif',
+ fontSecondary: 'Roboto, sans-serif',
+
+ bg: '#ffffff',
+ bg2: '#f5f5f5',
+ bg3: '#ebebeb',
+ bg4: '#e0e0e0',
+
+ border: '#ffffff',
+ border2: '#f5f5f5',
+ border3: '#ebebeb',
+ border4: '#e0e0e0',
+ border5: '#b3b3b3',
+
+ fg: '#838383',
+ fgHeading: '#1a2138',
+ fgText: '#1a2138',
+ fgHighlight: palette.primary,
+ layoutBg: '#ebebeb',
+ separator: '#ebebeb',
+
+ primary: palette.primary,
+ success: palette.success,
+ info: palette.info,
+ warning: palette.warning,
+ danger: palette.danger,
+
+ primaryLight: '#903df4',
+ successLight: '#8fcf50',
+ infoLight: '#40bbf4',
+ warningLight: '#ffbe43',
+ dangerLight: '#cf3341',
+ },
+};
+
+const baseThemeVariables = baseTheme.variables;
+
+export const MATERIAL_LIGHT_THEME = {
+ name: 'material-light',
+ base: 'default',
+ variables: {
+ temperature: {
+ arcFill: [
+ baseThemeVariables.primary,
+ baseThemeVariables.primary,
+ baseThemeVariables.primary,
+ baseThemeVariables.primary,
+ baseThemeVariables.primary,
+ ],
+ arcEmpty: baseThemeVariables.bg2,
+ thumbBg: baseThemeVariables.bg2,
+ thumbBorder: baseThemeVariables.primary,
+ },
+
+ solar: {
+ gradientLeft: baseThemeVariables.primary,
+ gradientRight: baseThemeVariables.primary,
+ shadowColor: 'rgba(0, 0, 0, 0)',
+ secondSeriesFill: baseThemeVariables.bg2,
+ radius: ['80%', '90%'],
+ },
+
+ traffic: {
+ tooltipBg: baseThemeVariables.bg,
+ tooltipBorderColor: baseThemeVariables.border2,
+ tooltipExtraCss: 'border-radius: 10px; padding: 4px 16px;',
+ tooltipTextColor: baseThemeVariables.fgText,
+ tooltipFontWeight: 'normal',
+
+ yAxisSplitLine: baseThemeVariables.separator,
+
+ lineBg: baseThemeVariables.border4,
+ lineShadowBlur: '1',
+ itemColor: baseThemeVariables.border4,
+ itemBorderColor: baseThemeVariables.border4,
+ itemEmphasisBorderColor: baseThemeVariables.primary,
+ shadowLineDarkBg: 'rgba(0, 0, 0, 0)',
+ shadowLineShadow: 'rgba(0, 0, 0, 0)',
+ gradFrom: baseThemeVariables.bg2,
+ gradTo: baseThemeVariables.bg2,
+ },
+
+ electricity: {
+ tooltipBg: baseThemeVariables.bg,
+ tooltipLineColor: baseThemeVariables.fgText,
+ tooltipLineWidth: '0',
+ tooltipBorderColor: baseThemeVariables.border2,
+ tooltipExtraCss: 'border-radius: 10px; padding: 8px 24px;',
+ tooltipTextColor: baseThemeVariables.fgText,
+ tooltipFontWeight: 'normal',
+
+ axisLineColor: baseThemeVariables.border3,
+ xAxisTextColor: baseThemeVariables.fg,
+ yAxisSplitLine: baseThemeVariables.separator,
+
+ itemBorderColor: baseThemeVariables.primary,
+ lineStyle: 'solid',
+ lineWidth: '4',
+ lineGradFrom: baseThemeVariables.primary,
+ lineGradTo: baseThemeVariables.primary,
+ lineShadow: 'rgba(0, 0, 0, 0)',
+
+ areaGradFrom: baseThemeVariables.bg2,
+ areaGradTo: baseThemeVariables.bg2,
+ shadowLineDarkBg: 'rgba(0, 0, 0, 0)',
+ },
+
+ bubbleMap: {
+ titleColor: baseThemeVariables.fgText,
+ areaColor: baseThemeVariables.bg4,
+ areaHoverColor: baseThemeVariables.fgHighlight,
+ areaBorderColor: baseThemeVariables.border5,
+ },
+
+ profitBarAnimationEchart: {
+ textColor: baseThemeVariables.fgText,
+
+ firstAnimationBarColor: baseThemeVariables.primary,
+ secondAnimationBarColor: baseThemeVariables.success,
+
+ splitLineStyleOpacity: '1',
+ splitLineStyleWidth: '1',
+ splitLineStyleColor: baseThemeVariables.separator,
+
+ tooltipTextColor: baseThemeVariables.fgText,
+ tooltipFontWeight: 'normal',
+ tooltipFontSize: '16',
+ tooltipBg: baseThemeVariables.bg,
+ tooltipBorderColor: baseThemeVariables.border2,
+ tooltipBorderWidth: '1',
+ tooltipExtraCss: 'border-radius: 10px; padding: 4px 16px;',
+ },
+
+ trafficBarEchart: {
+ gradientFrom: baseThemeVariables.warningLight,
+ gradientTo: baseThemeVariables.warning,
+ shadow: baseThemeVariables.warningLight,
+ shadowBlur: '0',
+
+ axisTextColor: baseThemeVariables.fgText,
+ axisFontSize: '12',
+
+ tooltipBg: baseThemeVariables.bg,
+ tooltipBorderColor: baseThemeVariables.border2,
+ tooltipExtraCss: 'border-radius: 10px; padding: 4px 16px;',
+ tooltipTextColor: baseThemeVariables.fgText,
+ tooltipFontWeight: 'normal',
+ },
+
+ countryOrders: {
+ countryBorderColor: baseThemeVariables.border4,
+ countryFillColor: baseThemeVariables.bg3,
+ countryBorderWidth: '1',
+ hoveredCountryBorderColor: baseThemeVariables.primary,
+ hoveredCountryFillColor: baseThemeVariables.primaryLight,
+ hoveredCountryBorderWidth: '1',
+
+ chartAxisLineColor: baseThemeVariables.border4,
+ chartAxisTextColor: baseThemeVariables.fg,
+ chartAxisFontSize: '16',
+ chartGradientTo: baseThemeVariables.primary,
+ chartGradientFrom: baseThemeVariables.primaryLight,
+ chartAxisSplitLine: baseThemeVariables.separator,
+ chartShadowLineColor: baseThemeVariables.primaryLight,
+
+ chartLineBottomShadowColor: baseThemeVariables.primary,
+
+ chartInnerLineColor: baseThemeVariables.bg2,
+ },
+
+ echarts: {
+ bg: baseThemeVariables.bg,
+ textColor: baseThemeVariables.fgText,
+ axisLineColor: baseThemeVariables.fgText,
+ splitLineColor: baseThemeVariables.separator,
+ itemHoverShadowColor: 'rgba(0, 0, 0, 0.5)',
+ tooltipBackgroundColor: baseThemeVariables.primary,
+ areaOpacity: '0.7',
+ },
+
+ chartjs: {
+ axisLineColor: baseThemeVariables.separator,
+ textColor: baseThemeVariables.fgText,
+ },
+
+ orders: {
+ tooltipBg: baseThemeVariables.bg,
+ tooltipLineColor: 'rgba(0, 0, 0, 0)',
+ tooltipLineWidth: '0',
+ tooltipBorderColor: baseThemeVariables.border2,
+ tooltipExtraCss: 'border-radius: 10px; padding: 8px 24px;',
+ tooltipTextColor: baseThemeVariables.fgText,
+ tooltipFontWeight: 'normal',
+ tooltipFontSize: '20',
+
+ axisLineColor: baseThemeVariables.border4,
+ axisFontSize: '16',
+ axisTextColor: baseThemeVariables.fg,
+ yAxisSplitLine: baseThemeVariables.separator,
+
+ itemBorderColor: baseThemeVariables.primary,
+ lineStyle: 'solid',
+ lineWidth: '4',
+
+ // first line
+ firstAreaGradFrom: baseThemeVariables.bg3,
+ firstAreaGradTo: baseThemeVariables.bg3,
+ firstShadowLineDarkBg: 'rgba(0, 0, 0, 0)',
+
+ // second line
+ secondLineGradFrom: baseThemeVariables.primary,
+ secondLineGradTo: baseThemeVariables.primary,
+
+ secondAreaGradFrom: 'rgba(51, 102, 255, 0.2)',
+ secondAreaGradTo: 'rgba(51, 102, 255, 0)',
+ secondShadowLineDarkBg: 'rgba(0, 0, 0, 0)',
+
+ // third line
+ thirdLineGradFrom: baseThemeVariables.success,
+ thirdLineGradTo: baseThemeVariables.successLight,
+
+ thirdAreaGradFrom: 'rgba(0, 214, 143, 0.2)',
+ thirdAreaGradTo: 'rgba(0, 214, 143, 0)',
+ thirdShadowLineDarkBg: 'rgba(0, 0, 0, 0)',
+ },
+
+ profit: {
+ bg: baseThemeVariables.bg,
+ textColor: baseThemeVariables.fgText,
+ axisLineColor: baseThemeVariables.border4,
+ splitLineColor: baseThemeVariables.separator,
+ areaOpacity: '1',
+
+ axisFontSize: '16',
+ axisTextColor: baseThemeVariables.fg,
+
+ // first bar
+ firstLineGradFrom: baseThemeVariables.bg3,
+ firstLineGradTo: baseThemeVariables.bg3,
+ firstLineShadow: 'rgba(0, 0, 0, 0)',
+
+ // second bar
+ secondLineGradFrom: baseThemeVariables.primary,
+ secondLineGradTo: baseThemeVariables.primary,
+ secondLineShadow: 'rgba(0, 0, 0, 0)',
+
+ // third bar
+ thirdLineGradFrom: baseThemeVariables.success,
+ thirdLineGradTo: baseThemeVariables.successLight,
+ thirdLineShadow: 'rgba(0, 0, 0, 0)',
+ },
+
+ orderProfitLegend: {
+ firstItem: baseThemeVariables.success,
+ secondItem: baseThemeVariables.primary,
+ thirdItem: baseThemeVariables.bg3,
+ },
+
+ visitors: {
+ tooltipBg: baseThemeVariables.bg,
+ tooltipLineColor: 'rgba(0, 0, 0, 0)',
+ tooltipLineWidth: '1',
+ tooltipBorderColor: baseThemeVariables.border2,
+ tooltipExtraCss: 'border-radius: 10px; padding: 8px 24px;',
+ tooltipTextColor: baseThemeVariables.fgText,
+ tooltipFontWeight: 'normal',
+ tooltipFontSize: '20',
+
+ axisLineColor: baseThemeVariables.border4,
+ axisFontSize: '16',
+ axisTextColor: baseThemeVariables.fg,
+ yAxisSplitLine: baseThemeVariables.separator,
+
+ itemBorderColor: baseThemeVariables.primary,
+ lineStyle: 'dotted',
+ lineWidth: '6',
+ lineGradFrom: '#ffffff',
+ lineGradTo: '#ffffff',
+ lineShadow: 'rgba(0, 0, 0, 0)',
+
+ areaGradFrom: baseThemeVariables.primary,
+ areaGradTo: baseThemeVariables.primaryLight,
+
+ innerLineStyle: 'solid',
+ innerLineWidth: '1',
+
+ innerAreaGradFrom: baseThemeVariables.success,
+ innerAreaGradTo: baseThemeVariables.success,
+ },
+
+ visitorsLegend: {
+ firstIcon: baseThemeVariables.success,
+ secondIcon: baseThemeVariables.primary,
+ },
+
+ visitorsPie: {
+ firstPieGradientLeft: baseThemeVariables.success,
+ firstPieGradientRight: baseThemeVariables.success,
+ firstPieShadowColor: 'rgba(0, 0, 0, 0)',
+ firstPieRadius: ['70%', '90%'],
+
+ secondPieGradientLeft: baseThemeVariables.warning,
+ secondPieGradientRight: baseThemeVariables.warningLight,
+ secondPieShadowColor: 'rgba(0, 0, 0, 0)',
+ secondPieRadius: ['60%', '97%'],
+ shadowOffsetX: '0',
+ shadowOffsetY: '0',
+ },
+
+ visitorsPieLegend: {
+ firstSection: baseThemeVariables.warning,
+ secondSection: baseThemeVariables.success,
+ },
+
+ earningPie: {
+ radius: ['65%', '100%'],
+ center: ['50%', '50%'],
+
+ fontSize: '22',
+
+ firstPieGradientLeft: baseThemeVariables.success,
+ firstPieGradientRight: baseThemeVariables.success,
+ firstPieShadowColor: 'rgba(0, 0, 0, 0)',
+
+ secondPieGradientLeft: baseThemeVariables.primary,
+ secondPieGradientRight: baseThemeVariables.primary,
+ secondPieShadowColor: 'rgba(0, 0, 0, 0)',
+
+ thirdPieGradientLeft: baseThemeVariables.warning,
+ thirdPieGradientRight: baseThemeVariables.warning,
+ thirdPieShadowColor: 'rgba(0, 0, 0, 0)',
+ },
+
+ earningLine: {
+ gradFrom: baseThemeVariables.primary,
+ gradTo: baseThemeVariables.primary,
+
+ tooltipTextColor: baseThemeVariables.fgText,
+ tooltipFontWeight: 'normal',
+ tooltipFontSize: '16',
+ tooltipBg: baseThemeVariables.bg,
+ tooltipBorderColor: baseThemeVariables.border2,
+ tooltipBorderWidth: '1',
+ tooltipExtraCss: 'border-radius: 10px; padding: 4px 16px;',
+ },
+ },
+} as NbJSThemeOptions;
diff --git a/src/app/@theme/styles/styles.scss b/src/app/@theme/styles/styles.scss
index 5b3be87e1e..56704397ab 100644
--- a/src/app/@theme/styles/styles.scss
+++ b/src/app/@theme/styles/styles.scss
@@ -1,4 +1,5 @@
@import url('https://fonts.googleapis.com/css?family=Open+Sans:400,600,700&display=swap');
+@import url('https://fonts.googleapis.com/css?family=Roboto:200,300,400,500,600,700,800&display=swap');
// themes - our custom or/and out of the box themes
@import 'themes';
@@ -12,15 +13,20 @@
@import 'bootstrap/scss/mixins';
@import 'bootstrap/scss/grid';
+@import './material/angular-material';
+
// loading progress bar theme
@import './pace.theme';
@import './layout';
@import './overrides';
+@import './material/material-overrides';
// install the framework and custom global styles
@include nb-install() {
+ @include angular-material();
+
// framework global styles
@include nb-theme-global();
@include nb-auth-global();
@@ -30,4 +36,5 @@
@include ngx-pace-theme();
@include nb-overrides();
+ @include material-overrides();
};
diff --git a/src/app/@theme/styles/themes.scss b/src/app/@theme/styles/themes.scss
index 6ee6e40ee8..8c8917ee8a 100644
--- a/src/app/@theme/styles/themes.scss
+++ b/src/app/@theme/styles/themes.scss
@@ -1,7 +1,10 @@
// @nebular theming framework
-@import '@nebular/theme/styles/theming';
+@import '~@nebular/theme/styles/theming';
// @nebular out of the box themes
-@import '@nebular/theme/styles/themes';
+@import '~@nebular/theme/styles/themes';
+// material themes
+@import './material/material-dark';
+@import './material/material-light';
$nb-themes: nb-register-theme((
layout-padding-top: 2.25rem,
@@ -86,3 +89,47 @@ $nb-themes: nb-register-theme((
slide-out-shadow-color: 0 4px 14px 0 #8f9bb3,
slide-out-shadow-color-rtl: 0 4px 14px 0 #8f9bb3,
), dark, dark);
+
+$nb-themes: nb-register-theme((
+ layout-padding-top: 2.25rem,
+
+ menu-item-icon-margin: 0 0.5rem 0 0,
+
+ card-height-tiny: 13.5rem,
+ card-height-small: 21.1875rem,
+ card-height-medium: 28.875rem,
+ card-height-large: 36.5625rem,
+ card-height-giant: 44.25rem,
+ card-margin-bottom: 1.875rem,
+ card-header-with-select-padding-top: 0.5rem,
+ card-header-with-select-padding-bottom: 0.5rem,
+
+ select-min-width: 6rem,
+ option-list-border-radius: 0,
+
+ slide-out-background: linear-gradient(270deg, #e0e0e0 0%, #ebebeb 100%),
+ slide-out-shadow-color: 0 4px 14px 0 #ebebeb,
+ slide-out-shadow-color-rtl: 0 4px 14px 0 #ebebeb,
+), material-light, material-light);
+
+$nb-themes: nb-register-theme((
+ layout-padding-top: 2.25rem,
+
+ menu-item-icon-margin: 0 0.5rem 0 0,
+
+ card-height-tiny: 13.5rem,
+ card-height-small: 21.1875rem,
+ card-height-medium: 28.875rem,
+ card-height-large: 36.5625rem,
+ card-height-giant: 44.25rem,
+ card-margin-bottom: 1.875rem,
+ card-header-with-select-padding-top: 0.5rem,
+ card-header-with-select-padding-bottom: 0.5rem,
+
+ select-min-width: 6rem,
+ option-list-border-radius: 0,
+
+ slide-out-background: linear-gradient(270deg, #1f1f1f 0%, #292929 100%),
+ slide-out-shadow-color: 0 4px 14px 0 #292929,
+ slide-out-shadow-color-rtl: 0 4px 14px 0 #292929,
+), material-dark, material-dark);
diff --git a/src/app/@theme/theme.module.ts b/src/app/@theme/theme.module.ts
index 9bb4442024..f573109874 100644
--- a/src/app/@theme/theme.module.ts
+++ b/src/app/@theme/theme.module.ts
@@ -1,5 +1,6 @@
import { ModuleWithProviders, NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
+import { MatRippleModule } from '@angular/material/core';
import {
NbActionsModule,
NbLayoutModule,
@@ -38,6 +39,8 @@ import { DEFAULT_THEME } from './styles/theme.default';
import { COSMIC_THEME } from './styles/theme.cosmic';
import { CORPORATE_THEME } from './styles/theme.corporate';
import { DARK_THEME } from './styles/theme.dark';
+import { MATERIAL_LIGHT_THEME } from './styles/material/theme.material-light';
+import { MATERIAL_DARK_THEME } from './styles/material/theme.material-dark';
const NB_MODULES = [
NbLayoutModule,
@@ -71,8 +74,8 @@ const PIPES = [
];
@NgModule({
- imports: [CommonModule, ...NB_MODULES],
- exports: [CommonModule, ...PIPES, ...COMPONENTS],
+ imports: [CommonModule, MatRippleModule, ...NB_MODULES],
+ exports: [CommonModule, MatRippleModule, ...PIPES, ...COMPONENTS],
declarations: [...COMPONENTS, ...PIPES],
})
export class ThemeModule {
@@ -84,7 +87,7 @@ export class ThemeModule {
{
name: 'default',
},
- [ DEFAULT_THEME, COSMIC_THEME, CORPORATE_THEME, DARK_THEME ],
+ [ DEFAULT_THEME, COSMIC_THEME, CORPORATE_THEME, DARK_THEME, MATERIAL_LIGHT_THEME, MATERIAL_DARK_THEME ],
).providers,
],
};
diff --git a/src/app/pages/dashboard/contacts/contacts.component.html b/src/app/pages/dashboard/contacts/contacts.component.html
index 0aac40bfee..ef34b97710 100644
--- a/src/app/pages/dashboard/contacts/contacts.component.html
+++ b/src/app/pages/dashboard/contacts/contacts.component.html
@@ -3,7 +3,7 @@
-
+
@@ -12,7 +12,7 @@
-
+
{{ c.time | date: 'shortTime' }}
diff --git a/src/app/pages/dashboard/dashboard.component.ts b/src/app/pages/dashboard/dashboard.component.ts
index c359216af2..083d3bdd09 100644
--- a/src/app/pages/dashboard/dashboard.component.ts
+++ b/src/app/pages/dashboard/dashboard.component.ts
@@ -54,6 +54,8 @@ export class DashboardComponent implements OnDestroy {
cosmic: CardSettings[];
corporate: CardSettings[];
dark: CardSettings[];
+ 'material-dark': CardSettings[];
+ 'material-light': CardSettings[];
} = {
default: this.commonStatusCardsSet,
cosmic: this.commonStatusCardsSet,
@@ -76,6 +78,8 @@ export class DashboardComponent implements OnDestroy {
},
],
dark: this.commonStatusCardsSet,
+ 'material-dark': this.commonStatusCardsSet,
+ 'material-light': this.commonStatusCardsSet,
};
constructor(private themeService: NbThemeService,
diff --git a/src/app/pages/dashboard/electricity/electricity.component.html b/src/app/pages/dashboard/electricity/electricity.component.html
index 7085cbd7cb..c68ede53bd 100644
--- a/src/app/pages/dashboard/electricity/electricity.component.html
+++ b/src/app/pages/dashboard/electricity/electricity.component.html
@@ -37,8 +37,8 @@
291 USD
-
- {{ t }}
+
+ {{ t }}
diff --git a/src/app/pages/dashboard/rooms/room-selector/room-selector.component.scss b/src/app/pages/dashboard/rooms/room-selector/room-selector.component.scss
index d66ebb204e..ea35240676 100644
--- a/src/app/pages/dashboard/rooms/room-selector/room-selector.component.scss
+++ b/src/app/pages/dashboard/rooms/room-selector/room-selector.component.scss
@@ -7,6 +7,7 @@
border-width: 0;
box-shadow: none;
margin: 0;
+ height: 100%;
}
nb-card-header {
diff --git a/src/app/pages/dashboard/security-cameras/security-cameras.component.html b/src/app/pages/dashboard/security-cameras/security-cameras.component.html
index 739acc0555..70d7b445cc 100644
--- a/src/app/pages/dashboard/security-cameras/security-cameras.component.html
+++ b/src/app/pages/dashboard/security-cameras/security-cameras.component.html
@@ -22,7 +22,7 @@
-
+
{{ selectedCamera.title }}
@@ -40,19 +40,19 @@
-
+
Pause
-
+
Logs
-
+
Search
-
+
Setup
diff --git a/src/app/pages/dashboard/security-cameras/security-cameras.component.scss b/src/app/pages/dashboard/security-cameras/security-cameras.component.scss
index 451e98208e..9ea05e115c 100644
--- a/src/app/pages/dashboard/security-cameras/security-cameras.component.scss
+++ b/src/app/pages/dashboard/security-cameras/security-cameras.component.scss
@@ -13,7 +13,7 @@
.single-view-button {
.nb-square {
- font-size: 1.25rem;
+ font-size: 1rem;
}
@include nb-ltr {
@@ -72,6 +72,10 @@
background-size: cover;
position: relative;
+ &:not(.single) {
+ cursor: pointer;
+ }
+
&::before {
background-color: rgba(255, 255, 255, 0.1);
content: '';
@@ -96,6 +100,9 @@
}
nb-action {
+ cursor: pointer;
+ border-radius: 2px;
+
nb-icon {
@include nb-ltr(margin-right, 0.5rem);
@include nb-rtl(margin-left, 0.5rem);
diff --git a/src/app/pages/dashboard/status-card/status-card.component.scss b/src/app/pages/dashboard/status-card/status-card.component.scss
index 03be02f59f..158df84bc6 100644
--- a/src/app/pages/dashboard/status-card/status-card.component.scss
+++ b/src/app/pages/dashboard/status-card/status-card.component.scss
@@ -5,7 +5,7 @@
flex-direction: row;
align-items: center;
height: 6rem;
- overflow: visible;
+ cursor: pointer;
.icon-container {
height: 100%;
diff --git a/src/app/pages/dashboard/status-card/status-card.component.ts b/src/app/pages/dashboard/status-card/status-card.component.ts
index 1627640857..3ffd6ad200 100644
--- a/src/app/pages/dashboard/status-card/status-card.component.ts
+++ b/src/app/pages/dashboard/status-card/status-card.component.ts
@@ -4,7 +4,7 @@ import { Component, Input } from '@angular/core';
selector: 'ngx-status-card',
styleUrls: ['./status-card.component.scss'],
template: `
-
+
diff --git a/src/app/pages/dashboard/temperature/temperature-dragger/temperature-dragger.component.html b/src/app/pages/dashboard/temperature/temperature-dragger/temperature-dragger.component.html
index 7f46e3322e..826b87b9c5 100644
--- a/src/app/pages/dashboard/temperature/temperature-dragger/temperature-dragger.component.html
+++ b/src/app/pages/dashboard/temperature/temperature-dragger/temperature-dragger.component.html
@@ -42,6 +42,6 @@
-
+
diff --git a/src/app/pages/dashboard/temperature/temperature-dragger/temperature-dragger.component.scss b/src/app/pages/dashboard/temperature/temperature-dragger/temperature-dragger.component.scss
index 0fa12c1ae6..2a91157613 100644
--- a/src/app/pages/dashboard/temperature/temperature-dragger/temperature-dragger.component.scss
+++ b/src/app/pages/dashboard/temperature/temperature-dragger/temperature-dragger.component.scss
@@ -39,25 +39,27 @@
position: absolute;
width: 5.25rem;
height: 5.25rem;
- background-color: nb-theme(card-background-color);
+ background-color: nb-theme(card-background-color) !important;
border-radius: 50%;
bottom: 2%;
left: 50%;
transform: translate(-50%, 50%);
z-index: 2;
- display: flex;
- align-items: center;
- justify-content: center;
cursor: pointer;
border: nb-theme(divider-width) nb-theme(divider-style) nb-theme(divider-color);
&.on {
- color: nb-theme(text-hint-color);
+ color: nb-theme(color-primary-default);
}
}
.power-icon {
+ position: absolute;
+ top: 50%;
+ margin-top: -0.625rem;
+ left: 50%;
+ margin-left: -0.625rem;
font-size: 3rem;
}
}
diff --git a/src/app/pages/dashboard/temperature/temperature.component.html b/src/app/pages/dashboard/temperature/temperature.component.html
index 8f6c0e4b79..a7da27bbac 100644
--- a/src/app/pages/dashboard/temperature/temperature.component.html
+++ b/src/app/pages/dashboard/temperature/temperature.component.html
@@ -20,16 +20,16 @@
-
+
-
+
-
+
-
+
@@ -51,16 +51,16 @@
-
+
-
+
-
+
-
+
diff --git a/src/app/pages/dashboard/traffic/traffic.component.ts b/src/app/pages/dashboard/traffic/traffic.component.ts
index 3ddd6e2c7c..a0396689ec 100644
--- a/src/app/pages/dashboard/traffic/traffic.component.ts
+++ b/src/app/pages/dashboard/traffic/traffic.component.ts
@@ -12,8 +12,8 @@ import { TrafficChartData } from '../../../@core/data/traffic-chart';
Traffic Consumption
-
- {{ t }}
+
+ {{ t }}
diff --git a/src/app/pages/e-commerce/charts-panel/chart-panel-header/chart-panel-header.component.html b/src/app/pages/e-commerce/charts-panel/chart-panel-header/chart-panel-header.component.html
index 30bf039a73..f2ba91aa17 100644
--- a/src/app/pages/e-commerce/charts-panel/chart-panel-header/chart-panel-header.component.html
+++ b/src/app/pages/e-commerce/charts-panel/chart-panel-header/chart-panel-header.component.html
@@ -1,7 +1,7 @@
-
-
+
+
{{ period }}
diff --git a/src/app/pages/e-commerce/charts-panel/chart-panel-header/chart-panel-header.component.scss b/src/app/pages/e-commerce/charts-panel/chart-panel-header/chart-panel-header.component.scss
index 4fe23d7ddf..b8d236a232 100644
--- a/src/app/pages/e-commerce/charts-panel/chart-panel-header/chart-panel-header.component.scss
+++ b/src/app/pages/e-commerce/charts-panel/chart-panel-header/chart-panel-header.component.scss
@@ -11,9 +11,9 @@
ngx-legend-chart,
.period-select {
- padding-top: 1rem;
- @include nb-ltr(padding-left, 0.5rem);
- @include nb-rtl(padding-right, 0.5rem);
+ margin-top: 1rem;
+ @include nb-ltr(margin-left, 0.5rem);
+ @include nb-rtl(margin-right, 0.5rem);
}
@include media-breakpoint-up(md) {
diff --git a/src/app/pages/e-commerce/charts-panel/charts-panel.component.scss b/src/app/pages/e-commerce/charts-panel/charts-panel.component.scss
index acf1a9025e..4d601af136 100644
--- a/src/app/pages/e-commerce/charts-panel/charts-panel.component.scss
+++ b/src/app/pages/e-commerce/charts-panel/charts-panel.component.scss
@@ -6,6 +6,10 @@ $legend-canceled-color: #3f4fda;
@include nb-install-component() {
+ nb-card {
+ overflow: hidden;
+ }
+
nb-tabset {
display: flex;
flex-direction: column;
diff --git a/src/app/pages/e-commerce/earning-card/front-side/earning-card-front.component.html b/src/app/pages/e-commerce/earning-card/front-side/earning-card-front.component.html
index 0f93231837..abaa6784b0 100644
--- a/src/app/pages/e-commerce/earning-card/front-side/earning-card-front.component.html
+++ b/src/app/pages/e-commerce/earning-card/front-side/earning-card-front.component.html
@@ -1,6 +1,6 @@
-
- {{ currency }}
+
+ {{ currency }}
diff --git a/src/app/pages/e-commerce/traffic-reveal-card/back-side/traffic-back-card.component.html b/src/app/pages/e-commerce/traffic-reveal-card/back-side/traffic-back-card.component.html
index 8c483a7e40..42e18aa369 100644
--- a/src/app/pages/e-commerce/traffic-reveal-card/back-side/traffic-back-card.component.html
+++ b/src/app/pages/e-commerce/traffic-reveal-card/back-side/traffic-back-card.component.html
@@ -1,6 +1,5 @@
-
-
-
-
+
diff --git a/src/app/pages/e-commerce/traffic-reveal-card/back-side/traffic-back-card.component.scss b/src/app/pages/e-commerce/traffic-reveal-card/back-side/traffic-back-card.component.scss
index 00e2406edb..0663243a88 100644
--- a/src/app/pages/e-commerce/traffic-reveal-card/back-side/traffic-back-card.component.scss
+++ b/src/app/pages/e-commerce/traffic-reveal-card/back-side/traffic-back-card.component.scss
@@ -1,19 +1,7 @@
@import '../../../../@theme/styles/themes';
@include nb-install-component() {
- display: flex;
- flex-direction: column;
- flex: 1;
-
- nb-card-body {
- overflow: hidden;
- position: relative;
- display: flex;
- flex-direction: column;
- }
-
ngx-traffic-bar-chart {
- flex: 1;
position: relative;
::ng-deep {
diff --git a/src/app/pages/e-commerce/traffic-reveal-card/front-side/traffic-front-card.component.scss b/src/app/pages/e-commerce/traffic-reveal-card/front-side/traffic-front-card.component.scss
index da0b762f09..f2daf37ce7 100644
--- a/src/app/pages/e-commerce/traffic-reveal-card/front-side/traffic-front-card.component.scss
+++ b/src/app/pages/e-commerce/traffic-reveal-card/front-side/traffic-front-card.component.scss
@@ -3,7 +3,11 @@
@import '../../../../@theme/styles/themes';
@include nb-install-component() {
- overflow: auto;
+ overflow: hidden;
+
+ nb-list {
+ height: 100%;
+ }
.item {
display: flex;
diff --git a/src/app/pages/e-commerce/traffic-reveal-card/traffic-cards-header/traffic-cards-header.component.html b/src/app/pages/e-commerce/traffic-reveal-card/traffic-cards-header/traffic-cards-header.component.html
index 4e22530534..630e056437 100644
--- a/src/app/pages/e-commerce/traffic-reveal-card/traffic-cards-header/traffic-cards-header.component.html
+++ b/src/app/pages/e-commerce/traffic-reveal-card/traffic-cards-header/traffic-cards-header.component.html
@@ -1,6 +1,4 @@
-
- Traffic
-
- {{ period }}
-
-
+Traffic
+
+ {{ period }}
+
diff --git a/src/app/pages/e-commerce/traffic-reveal-card/traffic-cards-header/traffic-cards-header.component.scss b/src/app/pages/e-commerce/traffic-reveal-card/traffic-cards-header/traffic-cards-header.component.scss
index b92c1db3fe..958c42bc38 100644
--- a/src/app/pages/e-commerce/traffic-reveal-card/traffic-cards-header/traffic-cards-header.component.scss
+++ b/src/app/pages/e-commerce/traffic-reveal-card/traffic-cards-header/traffic-cards-header.component.scss
@@ -1,14 +1,5 @@
-@import '../../../../@theme/styles/themes';
-
-@include nb-install-component() {
- nb-card-header {
- display: flex;
- align-items: center;
- justify-content: space-between;
- padding-top: nb-theme(card-header-with-select-padding-top);
- padding-bottom: nb-theme(card-header-with-select-padding-bottom);
-
- @include nb-ltr(padding-right, 4rem);
- @include nb-rtl(padding-left, 4rem);
- }
+:host {
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
}
diff --git a/src/app/pages/e-commerce/traffic-reveal-card/traffic-reveal-card.component.html b/src/app/pages/e-commerce/traffic-reveal-card/traffic-reveal-card.component.html
index 1b11ab714c..1a8faa0049 100644
--- a/src/app/pages/e-commerce/traffic-reveal-card/traffic-reveal-card.component.html
+++ b/src/app/pages/e-commerce/traffic-reveal-card/traffic-reveal-card.component.html
@@ -1,15 +1,23 @@
-
+
+
+
+
-
-
+
+
+
+
+
+
+
diff --git a/src/app/pages/e-commerce/traffic-reveal-card/traffic-reveal-card.component.scss b/src/app/pages/e-commerce/traffic-reveal-card/traffic-reveal-card.component.scss
index 42f557468b..ccf47060e4 100644
--- a/src/app/pages/e-commerce/traffic-reveal-card/traffic-reveal-card.component.scss
+++ b/src/app/pages/e-commerce/traffic-reveal-card/traffic-reveal-card.component.scss
@@ -9,4 +9,11 @@
@include nb-rtl(left, 1.25rem);
cursor: pointer;
}
+
+ nb-card-header {
+ padding-top: nb-theme(card-header-with-select-padding-top);
+ padding-bottom: nb-theme(card-header-with-select-padding-bottom);
+ @include nb-ltr(padding-right, 4rem);
+ @include nb-rtl(padding-left, 4rem);
+ }
}
diff --git a/src/app/pages/e-commerce/user-activity/user-activity.component.html b/src/app/pages/e-commerce/user-activity/user-activity.component.html
index 445f18f97c..46ba0524fb 100644
--- a/src/app/pages/e-commerce/user-activity/user-activity.component.html
+++ b/src/app/pages/e-commerce/user-activity/user-activity.component.html
@@ -2,8 +2,8 @@
User Activity
-
- {{ t }}
+
+ {{ t }}
diff --git a/src/app/pages/e-commerce/visitors-analytics/visitors-analytics.component.scss b/src/app/pages/e-commerce/visitors-analytics/visitors-analytics.component.scss
index 19d834b90b..2d977fa77c 100644
--- a/src/app/pages/e-commerce/visitors-analytics/visitors-analytics.component.scss
+++ b/src/app/pages/e-commerce/visitors-analytics/visitors-analytics.component.scss
@@ -5,10 +5,10 @@
@include nb-install-component() {
position: relative;
display: block;
- overflow: hidden;
nb-card {
position: relative;
+ overflow: hidden;
}
nb-card-header {
diff --git a/src/app/pages/extra-components/spinner/spinner-in-buttons/spinner-in-buttons.component.html b/src/app/pages/extra-components/spinner/spinner-in-buttons/spinner-in-buttons.component.html
index bc2ff55cd0..e547a3eaee 100644
--- a/src/app/pages/extra-components/spinner/spinner-in-buttons/spinner-in-buttons.component.html
+++ b/src/app/pages/extra-components/spinner/spinner-in-buttons/spinner-in-buttons.component.html
@@ -3,33 +3,33 @@
-
Download
-
Download
-
Download
-
Download
-
Download
-
Download
diff --git a/src/app/pages/forms/buttons/buttons.component.html b/src/app/pages/forms/buttons/buttons.component.html
index b9bbeb50c2..a4673f5dba 100644
--- a/src/app/pages/forms/buttons/buttons.component.html
+++ b/src/app/pages/forms/buttons/buttons.component.html
@@ -4,10 +4,10 @@
Hero Buttons
-
+
{{ status }}
-
+
disabled
@@ -18,10 +18,10 @@
Default Buttons
-
+
{{ status }}
-
+
disabled
@@ -32,10 +32,10 @@
Outline Buttons
-
+
{{ status }}
-
+
disabled
@@ -46,10 +46,10 @@
Ghost Buttons
-
+
{{ status }}
-
+
disabled
@@ -62,7 +62,7 @@
Button shapes
-
+
{{ shape }}
@@ -73,7 +73,7 @@
Button sizes
-
+
{{ size }}
@@ -86,13 +86,13 @@
Action Groups
-
-
-
+
+
+
-
+
-
+
@@ -100,24 +100,30 @@
-
+
Pause
-
+
Logs
-
+
Search
-
+
Setup
+
+
+
+
+
+
diff --git a/src/app/pages/forms/buttons/buttons.component.scss b/src/app/pages/forms/buttons/buttons.component.scss
index 71df895406..19176e49ab 100644
--- a/src/app/pages/forms/buttons/buttons.component.scss
+++ b/src/app/pages/forms/buttons/buttons.component.scss
@@ -17,4 +17,9 @@
.actions-card {
height: 8rem;
}
+
+ nb-action {
+ border-radius: 2px;
+ cursor: pointer;
+ }
}
diff --git a/src/app/pages/forms/buttons/buttons.component.ts b/src/app/pages/forms/buttons/buttons.component.ts
index f839321e2b..52e8506b3b 100644
--- a/src/app/pages/forms/buttons/buttons.component.ts
+++ b/src/app/pages/forms/buttons/buttons.component.ts
@@ -1,5 +1,7 @@
import { Component } from '@angular/core';
-import { NbComponentShape, NbComponentSize, NbComponentStatus } from '@nebular/theme';
+import { NbComponentShape, NbComponentSize, NbComponentStatus, NbThemeService } from '@nebular/theme';
+import { Observable } from 'rxjs';
+import { map } from 'rxjs/operators';
@Component({
selector: 'ngx-buttons',
@@ -7,7 +9,18 @@ import { NbComponentShape, NbComponentSize, NbComponentStatus } from '@nebular/t
templateUrl: './buttons.component.html',
})
export class ButtonsComponent {
- statuses: NbComponentStatus[] = [ 'primary', 'success', 'info', 'warning', 'danger' ];
- shapes: NbComponentShape[] = [ 'rectangle', 'semi-round', 'round' ];
- sizes: NbComponentSize[] = [ 'tiny', 'small', 'medium', 'large', 'giant' ];
+ public constructor(private readonly themeService: NbThemeService) {
+ this.materialTheme$ = this.themeService.onThemeChange()
+ .pipe(map(theme => {
+ const themeName: string = theme?.name || '';
+ return themeName.startsWith('material');
+ }));
+ }
+
+ public readonly materialTheme$: Observable;
+
+ public readonly statuses: NbComponentStatus[] = [ 'primary', 'success', 'info', 'warning', 'danger' ];
+ public readonly shapes: NbComponentShape[] = [ 'rectangle', 'semi-round', 'round' ];
+ public readonly sizes: NbComponentSize[] = [ 'tiny', 'small', 'medium', 'large', 'giant' ];
+
}
diff --git a/src/app/pages/forms/buttons/material-buttons/material-buttons.component.html b/src/app/pages/forms/buttons/material-buttons/material-buttons.component.html
new file mode 100644
index 0000000000..d9c0e9825f
--- /dev/null
+++ b/src/app/pages/forms/buttons/material-buttons/material-buttons.component.html
@@ -0,0 +1,9 @@
+Basic
+Raised
+Stroked
+Flat
+FAB
+
+ Toggle left
+ Toggle right
+
\ No newline at end of file
diff --git a/src/app/pages/forms/buttons/material-buttons/material-buttons.component.scss b/src/app/pages/forms/buttons/material-buttons/material-buttons.component.scss
new file mode 100644
index 0000000000..8957100515
--- /dev/null
+++ b/src/app/pages/forms/buttons/material-buttons/material-buttons.component.scss
@@ -0,0 +1,3 @@
+button, mat-button-toggle-group {
+ margin: 0.5rem;
+}
diff --git a/src/app/pages/forms/buttons/material-buttons/material-buttons.component.ts b/src/app/pages/forms/buttons/material-buttons/material-buttons.component.ts
new file mode 100644
index 0000000000..55cf55ffa7
--- /dev/null
+++ b/src/app/pages/forms/buttons/material-buttons/material-buttons.component.ts
@@ -0,0 +1,8 @@
+import { Component } from '@angular/core';
+
+@Component({
+ selector: 'ngx-material-buttons',
+ templateUrl: './material-buttons.component.html',
+ styleUrls: ['./material-buttons.component.scss'],
+})
+export class MaterialButtonsComponent {}
diff --git a/src/app/pages/forms/form-inputs/form-inputs.component.html b/src/app/pages/forms/form-inputs/form-inputs.component.html
index 962904abcf..5e40366a1a 100644
--- a/src/app/pages/forms/form-inputs/form-inputs.component.html
+++ b/src/app/pages/forms/form-inputs/form-inputs.component.html
@@ -10,8 +10,10 @@
-
-
+
+
+
+
@@ -26,9 +28,9 @@
Select
-
- Option 1
- Option 2
+
+ Option 1
+ Option 2
@@ -85,3 +87,8 @@
+
\ No newline at end of file
diff --git a/src/app/pages/forms/form-inputs/form-inputs.component.ts b/src/app/pages/forms/form-inputs/form-inputs.component.ts
index 4ec7045a01..84d4ae1eb6 100644
--- a/src/app/pages/forms/form-inputs/form-inputs.component.ts
+++ b/src/app/pages/forms/form-inputs/form-inputs.component.ts
@@ -1,13 +1,28 @@
-import { Component } from '@angular/core';
+import { Component, OnInit } from '@angular/core';
+import { NbThemeService } from '@nebular/theme';
+import { Observable } from 'rxjs';
+import { tap } from 'rxjs/operators';
@Component({
selector: 'ngx-form-inputs',
styleUrls: ['./form-inputs.component.scss'],
templateUrl: './form-inputs.component.html',
})
-export class FormInputsComponent {
+export class FormInputsComponent implements OnInit {
+ public constructor(private readonly themeService: NbThemeService) {
+ }
- starRate = 2;
- heartRate = 4;
- radioGroupValue = 'This is value 2';
+ public materialTheme$: Observable;
+ public starRate: number = 2;
+ public heartRate: number = 4;
+ public radioGroupValue: string = 'This is value 2';
+ public showMaterialInputs = false;
+
+ ngOnInit() {
+ this.materialTheme$ = this.themeService.onThemeChange()
+ .pipe(tap(theme => {
+ const themeName: string = theme?.name || '';
+ this.showMaterialInputs = themeName.startsWith('material');
+ }));
+ }
}
diff --git a/src/app/pages/forms/form-inputs/material-inputs/material-inputs.component.html b/src/app/pages/forms/form-inputs/material-inputs/material-inputs.component.html
new file mode 100644
index 0000000000..326bcd075e
--- /dev/null
+++ b/src/app/pages/forms/form-inputs/material-inputs/material-inputs.component.html
@@ -0,0 +1,58 @@
+
+ Angular Material
+
+
+
+
+ Input
+
+ hint
+
+
+
+ Select
+
+ Option 1
+ Option 2
+ Option 3
+
+ hint
+
+
+
+ Datepicker
+
+
+
+ hint
+
+
+
+
+ Textarea
+
+ hint
+
+
+
+ Checkbox
+
+
+
+
+ Toggle
+
+
+
+
+ Radio
+
+ Option 1
+ Option 2
+ Option 3
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/app/pages/forms/form-inputs/material-inputs/material-inputs.component.scss b/src/app/pages/forms/form-inputs/material-inputs/material-inputs.component.scss
new file mode 100644
index 0000000000..0e4bda6c88
--- /dev/null
+++ b/src/app/pages/forms/form-inputs/material-inputs/material-inputs.component.scss
@@ -0,0 +1,16 @@
+:host {
+ display: block;
+}
+
+.input-example {
+ display: block;
+ margin-top: 1rem;
+
+ label, mat-radio-button {
+ margin-right: 1rem;
+ }
+
+ textarea {
+ min-height: 3rem;
+ }
+}
diff --git a/src/app/pages/forms/form-inputs/material-inputs/material-inputs.component.ts b/src/app/pages/forms/form-inputs/material-inputs/material-inputs.component.ts
new file mode 100644
index 0000000000..ff29c9cec0
--- /dev/null
+++ b/src/app/pages/forms/form-inputs/material-inputs/material-inputs.component.ts
@@ -0,0 +1,8 @@
+import { Component } from '@angular/core';
+
+@Component({
+ selector: 'ngx-material-inputs',
+ templateUrl: './material-inputs.component.html',
+ styleUrls: ['./material-inputs.component.scss'],
+})
+export class MaterialInputsComponent {}
diff --git a/src/app/pages/forms/forms.module.ts b/src/app/pages/forms/forms.module.ts
index a7b939624f..52487d113b 100644
--- a/src/app/pages/forms/forms.module.ts
+++ b/src/app/pages/forms/forms.module.ts
@@ -15,11 +15,37 @@ import { ThemeModule } from '../../@theme/theme.module';
import { FormsRoutingModule } from './forms-routing.module';
import { FormsComponent } from './forms.component';
import { FormInputsComponent } from './form-inputs/form-inputs.component';
+import { MaterialInputsComponent } from './form-inputs/material-inputs/material-inputs.component';
import { FormLayoutsComponent } from './form-layouts/form-layouts.component';
import { DatepickerComponent } from './datepicker/datepicker.component';
import { ButtonsComponent } from './buttons/buttons.component';
+import { MaterialButtonsComponent } from './buttons/material-buttons/material-buttons.component';
import { FormsModule as ngFormsModule } from '@angular/forms';
+import { MatNativeDateModule } from '@angular/material/core';
+import { MatFormFieldModule } from '@angular/material/form-field';
+import { MatInputModule } from '@angular/material/input';
+import { MatSelectModule } from '@angular/material/select';
+import { MatDatepickerModule } from '@angular/material/datepicker';
+import { MatCheckboxModule } from '@angular/material/checkbox';
+import { MatSlideToggleModule } from '@angular/material/slide-toggle';
+import { MatRadioModule } from '@angular/material/radio';
+import { MatButtonModule } from '@angular/material/button';
+import { MatButtonToggleModule } from '@angular/material/button-toggle';
+
+const materialModules = [
+ MatFormFieldModule,
+ MatInputModule,
+ MatSelectModule,
+ MatNativeDateModule,
+ MatDatepickerModule,
+ MatCheckboxModule,
+ MatSlideToggleModule,
+ MatRadioModule,
+ MatButtonModule,
+ MatButtonToggleModule,
+];
+
@NgModule({
imports: [
ThemeModule,
@@ -35,6 +61,7 @@ import { FormsModule as ngFormsModule } from '@angular/forms';
NbSelectModule,
NbIconModule,
ngFormsModule,
+ ...materialModules,
],
declarations: [
FormsComponent,
@@ -42,6 +69,8 @@ import { FormsModule as ngFormsModule } from '@angular/forms';
FormInputsComponent,
FormLayoutsComponent,
DatepickerComponent,
+ MaterialInputsComponent,
+ MaterialButtonsComponent,
],
})
export class FormsModule { }
diff --git a/src/app/pages/layout/accordion/accordion.component.html b/src/app/pages/layout/accordion/accordion.component.html
index 180e3abab8..1b5240bff5 100644
--- a/src/app/pages/layout/accordion/accordion.component.html
+++ b/src/app/pages/layout/accordion/accordion.component.html
@@ -3,13 +3,13 @@
Toggle Accordion By Button
- Toggle First Item
+ Toggle First Item
-
+
Product Details
@@ -20,7 +20,7 @@
-
+
Reviews
@@ -31,7 +31,7 @@
-
+
Edit
@@ -46,7 +46,7 @@
-
+
Product Details
@@ -57,7 +57,7 @@
-
+
Reviews
@@ -68,7 +68,7 @@
-
+
Edit
diff --git a/src/app/pages/layout/list/list.component.html b/src/app/pages/layout/list/list.component.html
index a11abe3c6e..9be4c3bbcb 100644
--- a/src/app/pages/layout/list/list.component.html
+++ b/src/app/pages/layout/list/list.component.html
@@ -15,12 +15,14 @@
Users
-
-
-
-
-
-
+
+
+
+
+
+
+
+
diff --git a/src/app/pages/layout/stepper/stepper.component.html b/src/app/pages/layout/stepper/stepper.component.html
index 86e0116cd3..e6c220cc50 100644
--- a/src/app/pages/layout/stepper/stepper.component.html
+++ b/src/app/pages/layout/stepper/stepper.component.html
@@ -4,25 +4,25 @@
First step
Step content #1
- prev
- next
+ prev
+ next
Second step
Step content #2
- prev
- next
+ prev
+ next
Step content #3
- prev
- next
+ prev
+ next
Fourth step
Step content #4
- prev
- next
+ prev
+ next
@@ -43,7 +43,7 @@ Step content #4
- next
+ next
@@ -57,8 +57,8 @@ Step content #4
- prev
- next
+ prev
+ next
@@ -70,14 +70,14 @@ Step content #4
- prev
- Confirm
+ prev
+ Confirm
Wizard completed!
- Try again
+ Try again
@@ -97,8 +97,8 @@ Step content #1
viverra ex. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent metus turpis, commodo vel
placerat quis, lobortis in ligula.
- prev
- next
+ prev
+ next
Step content #2
@@ -107,8 +107,8 @@ Step content #2
sed ornare magna. Mauris vitae laoreet diam. Mauris fermentum ligula at lacinia semper. Nulla placerat dui
eu sapien pellentesque, eu placerat leo luctus. Cras pharetra blandit fermentum.
- prev
- next
+ prev
+ next
Step content #3
@@ -123,8 +123,8 @@ Step content #3
sed ornare magna. Mauris vitae laoreet diam. Mauris fermentum ligula at lacinia semper. Nulla placerat dui
eu sapien pellentesque, eu placerat leo luctus. Cras pharetra blandit fermentum.
- prev
- next
+ prev
+ next
Step content #4
@@ -133,8 +133,8 @@ Step content #4
sit amet fringilla orci efficitur. Nam bibendum lectus ut viverra tristique. Fusce eu pulvinar magna, quis
viverra ex.
- prev
- next
+ prev
+ next
diff --git a/src/app/pages/miscellaneous/not-found/not-found.component.html b/src/app/pages/miscellaneous/not-found/not-found.component.html
index 9eb129fa3d..df0284ad5b 100644
--- a/src/app/pages/miscellaneous/not-found/not-found.component.html
+++ b/src/app/pages/miscellaneous/not-found/not-found.component.html
@@ -5,7 +5,7 @@
404 Page Not Found
The page you were looking for doesn't exist
-
+
Take me home
diff --git a/src/app/pages/modal-overlays/dialog/dialog-name-prompt/dialog-name-prompt.component.html b/src/app/pages/modal-overlays/dialog/dialog-name-prompt/dialog-name-prompt.component.html
index 267efd3782..a4202be36c 100644
--- a/src/app/pages/modal-overlays/dialog/dialog-name-prompt/dialog-name-prompt.component.html
+++ b/src/app/pages/modal-overlays/dialog/dialog-name-prompt/dialog-name-prompt.component.html
@@ -4,7 +4,7 @@
- Cancel
- Submit
+ Cancel
+ Submit
diff --git a/src/app/pages/modal-overlays/dialog/dialog.component.html b/src/app/pages/modal-overlays/dialog/dialog.component.html
index 655d03ae79..a017869eb1 100644
--- a/src/app/pages/modal-overlays/dialog/dialog.component.html
+++ b/src/app/pages/modal-overlays/dialog/dialog.component.html
@@ -3,9 +3,9 @@
Open Dialog
- Open Dialog with component
+ Open Dialog with component
- Open Dialog with template
+ Open Dialog with template
@@ -14,9 +14,9 @@
Open Without Backdrop
- Open Dialog with backdrop
+ Open Dialog with backdrop
- Open Dialog without backdrop
+ Open Dialog without backdrop
@@ -25,9 +25,9 @@
Open Without Esc Close
- Open Dialog with esc close
+ Open Dialog with esc close
- Open Dialog without esc close
+ Open Dialog without esc close
@@ -36,9 +36,9 @@
Open Without Backdrop Click
- Open Dialog with backdrop click
+ Open Dialog with backdrop click
- Open without backdrop click
+ Open without backdrop click
@@ -47,7 +47,7 @@
Return Result From Dialog
- Enter Name
+ Enter Name
Names:
@@ -63,7 +63,7 @@ Names:
Template Dialog
{{ data }}
- Close Dialog
+ Close Dialog
diff --git a/src/app/pages/modal-overlays/dialog/showcase-dialog/showcase-dialog.component.html b/src/app/pages/modal-overlays/dialog/showcase-dialog/showcase-dialog.component.html
index 4cd3db631e..1e82a3b4e8 100644
--- a/src/app/pages/modal-overlays/dialog/showcase-dialog/showcase-dialog.component.html
+++ b/src/app/pages/modal-overlays/dialog/showcase-dialog/showcase-dialog.component.html
@@ -9,6 +9,6 @@
in aliquet massa aliquet et.
- Dismiss Dialog
+ Dismiss Dialog
diff --git a/src/app/pages/modal-overlays/popovers/popover-examples.component.ts b/src/app/pages/modal-overlays/popovers/popover-examples.component.ts
index c542b774ee..000d50bc80 100644
--- a/src/app/pages/modal-overlays/popovers/popover-examples.component.ts
+++ b/src/app/pages/modal-overlays/popovers/popover-examples.component.ts
@@ -34,7 +34,7 @@ export class NgxPopoverTabsComponent {
- Send
+ Send
`,
diff --git a/src/app/pages/modal-overlays/popovers/popovers.component.html b/src/app/pages/modal-overlays/popovers/popovers.component.html
index 0f9f38d655..4d7465ba9f 100644
--- a/src/app/pages/modal-overlays/popovers/popovers.component.html
+++ b/src/app/pages/modal-overlays/popovers/popovers.component.html
@@ -4,10 +4,10 @@
Popover Position
When popover has not enough space based on the configured placement, it will adjust accordingly trying to fit the screen.
- Left
- Top
- Bottom
- Right
+ Left
+ Top
+ Bottom
+ Right
@@ -17,9 +17,9 @@
Simple Popovers
In a simples form popover can take a string of text to render.
- on click
- on hover
- on hint
+ on click
+ on hover
+ on hint
@@ -55,7 +55,7 @@
- Send
+ Send
@@ -76,9 +76,9 @@
Template Popovers
You can pass a refference to `ng-template` to be rendered.
- With tabs
- With form
- With card
+ With tabs
+ With form
+ With card
@@ -88,9 +88,9 @@
Component Popovers
Same way popover can render any angular compnoent.
- With tabs
- With form
- With card
+ With tabs
+ With form
+ With card
@@ -103,52 +103,52 @@
Quickly move mouse cursor over the buttons, only the last popover will be created. It allows us to avoid excess white improving page performance.
-
+
show hint
-
+
show hint
-
+
show hint
-
+
show hint
-
+
show hint
-
+
show hint
-
+
show hint
-
+
show hint
-
+
show hint
-
+
show hint
-
+
show hint
-
+
show hint
-
+
show hint
-
+
show hint
-
+
show hint
-
+
show hint
diff --git a/src/app/pages/modal-overlays/toastr/toastr.component.html b/src/app/pages/modal-overlays/toastr/toastr.component.html
index 6e1c4c6346..f9204833b6 100644
--- a/src/app/pages/modal-overlays/toastr/toastr.component.html
+++ b/src/app/pages/modal-overlays/toastr/toastr.component.html
@@ -8,8 +8,8 @@
Position:
-
- {{ p }}
+
+ {{ p }}
@@ -34,8 +34,8 @@
Toast type:
-
- {{ t }}
+
+ {{ t }}
@@ -53,7 +53,7 @@
- Show toast
- Random toast
+ Show toast
+ Random toast
diff --git a/src/app/pages/modal-overlays/tooltip/tooltip.component.html b/src/app/pages/modal-overlays/tooltip/tooltip.component.html
index edddfcd144..a5113a5fd9 100644
--- a/src/app/pages/modal-overlays/tooltip/tooltip.component.html
+++ b/src/app/pages/modal-overlays/tooltip/tooltip.component.html
@@ -3,8 +3,8 @@
Tooltip With Icon
- Show Tooltip
- Show Tooltip
+ Show Tooltip
+ Show Tooltip
@@ -13,10 +13,10 @@
Tooltip Placements
- Top
- Right
- Bottom
- Left
+ Top
+ Right
+ Bottom
+ Left
@@ -25,12 +25,12 @@
Colored Tooltips
- Default
- Primary
- Success
- Danger
- Info
- Warning
+ Default
+ Primary
+ Success
+ Danger
+ Info
+ Warning
diff --git a/src/app/pages/modal-overlays/window/window.component.html b/src/app/pages/modal-overlays/window/window.component.html
index db824d2d11..a6fb387ba7 100644
--- a/src/app/pages/modal-overlays/window/window.component.html
+++ b/src/app/pages/modal-overlays/window/window.component.html
@@ -3,9 +3,9 @@
Window Form
- Open window form
+ Open window form
- Open window with template
+ Open window with template
@@ -14,9 +14,9 @@
Window Without Backdrop
- Open window with backdrop
+ Open window with backdrop
- Open window without backdrop
+ Open window without backdrop
diff --git a/src/app/pages/ui-features/search-fields/search-fields.component.html b/src/app/pages/ui-features/search-fields/search-fields.component.html
index eee086fb02..138d1694c5 100644
--- a/src/app/pages/ui-features/search-fields/search-fields.component.html
+++ b/src/app/pages/ui-features/search-fields/search-fields.component.html
@@ -5,7 +5,14 @@
Layout Rotate Search
-
+
@@ -15,7 +22,14 @@
Modal Zoomin Search
-
+
@@ -25,7 +39,14 @@
Modal Move Search
-
+
@@ -35,7 +56,14 @@
Modal Drop Search
-
+
@@ -45,7 +73,14 @@
Modal Half Search
-
+
@@ -55,7 +90,14 @@
Curtain Search
-
+
@@ -65,7 +107,14 @@
Column Curtain Search
-
+
diff --git a/src/assets/images/kitten-material-dark.png b/src/assets/images/kitten-material-dark.png
new file mode 100644
index 0000000000000000000000000000000000000000..3966612cb6d49b0a87e275ba4820597ab8f895b8
GIT binary patch
literal 48440
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
literal 0
HcmV?d00001
diff --git a/src/assets/images/kitten-material-light.png b/src/assets/images/kitten-material-light.png
new file mode 100644
index 0000000000000000000000000000000000000000..15e03eb8be8e5599a1b8ab83e5e73ca9600ea7a2
GIT binary patch
literal 36208
zcmafbRa9Nuvh6}b(BSR_m*8#*BoN%)-50?fLa^ZO7Tn$40t9z=cXwTHX76);?rpa{
zK4`Q#Y>pZ=s(SURNwB=EI0_;GA_xRRk@)&q5d?xh1%aT7;h}*iOS-D=AP^Zy;`1kE
z*RDK+H?ZbS^V#+nme*kWHAx4Fcu6=Q+$&+QY^mxUrc!c_0N(P78br3
z_X?`MfeP?%y1#xE5xrdv78lsGu^PKueR(0*im{PMFdnGiyn1PsEBPa5i*P`^;&IyK
zuZXxp7pE977$WilaxeRVCIU|$XYUV!BJ)QRQ4b_XHh@2a#w%dClRTN6@f*
z8oT6Kt(B$wCJssf40MAhhx@4iu{Vk_gY)7T9y^u!8!y2G=`yS;QXpHLV(OArVmwaf
z^0vaFXLT=)7FEb6WMGItTn6;IYG;W&jxiz`1~l0~+@ZQy1qSqlv>ENznMC!#AVNXK
zB-H{{Z=QUxBI0-r@mq3WE%RUUpj2s{5bF!NIug^`6vC1XCoE8*aLUH762U%d2AcGC
zqj!2aY9!k^V!$G3hnqR;In#OL&Jq{&=?JZl<@NaQK(ybLvVe{`?=m&IdEov|E2&X7=~qf=Uo#UYdwSP_DZ1m+n`pzoYVC5IX7UuxM3i-^Mj#9V!<7uwnbVA4yD%
z@3D%AoeCi4glvH@lPjxc&Xpkz(@^tZ33A>0!P
zXe9T?2+I2B6ejTk|I-U^@b8h+h8xiSJ3R2e9o~Xq#f{$oZ4)#o`5%MkyZ+r`;D6Wp
zKWF*xGOy^;u;MI#_fAXvzoz?NqcL&+^HTqF;s4e1zi<2Bb^cces>{C{kL%+Bfkapm
z{t*XX_dDvp@1MttZ1Qg-OWZ#V1UiP)MtUvdRi^Dy~`t%XUH{u(d8Y49Y@g~Xq
zHv@pTr`-{=xW|6bL?LV!PX#5xI)BM>t+k{S2?JFS>Ews$1=E
zds2%Md)kWys+aDr3L5o{Qv1tO{*|p{N)_KmLNtDsopfwCSh#F{8B}}LyX7ZXC#k}Z
zViPcczOW=lAZ~u|D@+XB)6V27bP4VgKUT=-tX`vD%(GSy40=
zGr!joCy;?&I-*4r>A?lmE$g=o*U!0lJY^lxa=Ol7QxgdOLc#AC!m0jjP@1{I?c7in
zU592wlZAhkG=sk|ng95?-+SQN1e1aGcFawUVfo`**@#LL7tT>ffk>lgB3wcft)Tv77y)oYpxKR7XPm&ho{1Sm)PKp{_S_zoTXX@!u8it-N
ztA{aFKS_Y?{Ift5QzdseOJE->jaIIonJ40j4_JCl>Pv~^uT`3$+R^Qw$1?B3;7B?K
z(FoeluOiVxRH{;1yg#!HsHy7vq*oMwk@Z5x)FxmW9G%jQ#Ig>Yup0&j@KU_95;0G@
zO#JhHekBYo1RN&YSo@LizWn^Fqg?pdA&LJ3EaQjfvPpgi|6giOBoTk2j--&!W|xk%
zCp$?|Ma;kbwHSrAu_&7+b_K9Hbn@>k3xT1waW=D!q?vOry5n$1D8+
zZ7xKe3frs}kXg^fNvzJ9+`7Cif!2lKO60f5dJvS^uXn_|PSW
z@KBZaac!n9c|F|b;$di#B%6*Nx@9hWRh?KOJ;Bjt<#dzc^!=N07NOz~ARr`UXJg|akeQFyDxG}Qyc<7OJ1ol{7-G-mpm`>vmWWA{Es!lRN*bLS
zQ>p^&r}KJk9DE+T^wSq}*NIAF%fNjf>pD%f3SF=LadOa~krBbYGzT1J-B#m)n3xz0
z2qLkpn_M_UUMvIE$^=|P=O+bIGY+Ggg?j6S%NaF2ua}#-`1tr3N^BgQa-A0E=|Y89
zY|~U_j}a0*_jF1TT3EYg!3u+NWRae}TI7q?v{ASuaS}Jm
z%;?g+v=hPmT6{S^EhAj@fxL_fLzefBl2=qQG*(+~uG+MO$A(9>DzA$JhSW@UaNhNi_y0br
zwOza4NVu_`Qzk-a5y6>grCa5Q9#|@v)}!xebi3Lm1UGg;XwpJ3vTFb0ogOKD-J_`j
zIhgMtWY7rJB6lyLnwu_fUhS>7gt*m|LEXPQ$B^_hRb4Aq@Zx(?~
z9f1R3`~hKs?0@bGUhEPI+8(PBbhjrcx;w7TiQjoK6;Ds?>G2r7P6o4&sT9?<&6Sq$
zc>`@Us3*k&^=p=3sdXMszMewX*na5@L4(KENjoKk1AI%`YR}6*r!Pxfr_0aLd2LjW
zvxq-8P%a)>rRyQmZDdg2XDm@lJNxmt$^8Q0qdcST@&v41g@LTFhmMd#%*kWpB&-5lB=Cpvd_7
z`75j6h7OX&jRIEI+?Dl-?@42DXb5Wk=j0{`_xrR_Q*`QmyQ>W^E6QOPHEn329**j3
zns6di(_N8GtX0<0^$TC?;5sp*NMXl6Gg#a>I@e+0;u407G5^sUPyw~C4q;I{v{~K|
zFLO|rU4H#wGQ<@!r}GCVNU&(Cw(f^Bs56dE37Q!}8`EE&uUj52Ya?&r{R1hQ$f)3*
zHpo>^h~%~$bzKR{%RlqUx3N0R82M14pE9*@4t^*D_roxSb}swlM5KnxY=JXqUCh3KPKbOJu*7L&okIpkIM%+0Y+EXTB!F>30VLJ#GqPwzcA*#8=cF&o#SGM*h?_zkN}kWqWsbcY7NzT+FZQmtv86f)fuBSL%pm9TzuuLv3x+$nNX$=7+OB
zhom%*CW))$)=CCzMFRRFY>;ZXHoj|hFO!FH$eJ&FUIhn9)^{{X5L8riA4#foKEA`~
zN|V!6=w;Q?f@1kxBmv^L92Zd(r{67!$H&KXO8L?m0&bVvbS6fFQX!#Ei=&3_;D-LA
z8}~M$0D9=L(ClBTB`-eqP1<#JPVw>BZvoTfxIdmH8kCZ<37hsU7Z7p0Sh3q&}N1Sbw7N)#@3{w$h~?NMGZ0*+h-Fyl#*1OU9AF!qwGuol1=V
z2s?Zp4S*6}-THRoF4)7y7tXr1M?U+l`)JP`^U2%5d=DpmbvOx?19d{|cevRevW|Sj
z`EEZoB2YtpH%Ph~L_02Ywj%7ngdN@sfCsydT@zL;mOzn@CP!scGPV*t^PsK^oLp_W$GthAL0Zd%8|XOSP>8lwDF5nO8DHgEsc
zHMETjx=d2@n*l740C;b#-79#=fPtc0ZP_@h#6S!x>2PTcO0efmnW_hX1lGLwR=&J(
zD@Zv}DXU*pt)YrH}IdHdsGLPA2Kp7%q%nl3^*9-BT5cU}~{uTOb`taTn2=zbv+qQaA1!?PMAkuS}3
z=EJD;cxjO;+O6pZpO?H8%E|KsA#20Xpq~C*LRi)8&S|Coi$dG|rpnQpTTzC)p2DbS
z>OtvwOTeN>KWm9<*<a1_=4Q9+c*K{RIk((S46xBaC49nivC
zNs2seV-4L7@0Z7$qpPdSv(~E!fWO+y@Hln59H7y2KcLF{>*r1L9}$Q3QH38i+{i$yx{8ar<(O_Fr$lg0
zuO@Q=*Zw!x3vv>&;iV$
zaN^L-{Z=HiX07>ZtJ~e0kI#OlW#P4GQxTN)7#-765h1AhDx^;)71MndYd?!Xi)8|(oMK_Vyla6$|)oQLhh}8RjLY(vk5X<3(EA&`J-f5lU`Dat+
z<|NQm4)gG7OmS*@o*Mx~Slr@X0DEq`&kY$(k_I3rGWM
zb#;i_@-D3qdhKJRWxYBhzw>btzso6brE#1Cj$5;TpzjzU^*6Rks>If`{;I*d_==Lr
zP|edtDPjSuWrD^xG{XAkN;qO}sk>hKJ~7&eT5R#p{zMMbsyR%2#B9Th`$;~`Ot^&L
zEe{c&qxtpzMD#14#cVe%jd%7c&LRstKPI6mnk1@b1QcL}`C71xngmqLVx>cSrz|f%
zw`Yl}${OUJ0Paz3do)k(UE1pqjfZvlc9^WBw31S6m;TS|xvE$*abCLyH6da)WRKbi
zZiM@lpX2g0)t`GX&Rtko|DtOROVzJ1JrjHk;hIolG4D+q{!|YKJf+CfzUcwFB76!o_0s^U?HB$KW
z0Jb;zpQm^wt5$YxSX){mKc6&`Y$dhwISmdD5)cqj
zywufYeRynYSynXf8CFkUhtvh35u{w}*dgDG;$w@#QZEK2fGS~mM0iBbr^4l%lM>La
zV|d;AX7?UPP&lJsYfXl5+B&yO{4#w4x`mymZ7RS=d!MMkI6L14;OaI4F7PWuEywI_
zQ?wF!;!m_B>)&BO@Io6+?)i0j@*z}a2)&{~>xcmgO`U?ppQbY=<04eLt3bX&L~xL-
zf&RUJw_=rXTDt=VMS*y+mBaOehK-N|-(+S4sqpLB-JFi+L0;xG%ZMuIdjo2nbp>m`
z(^vPh-9aQ=-P&)X+f_L-_+p^Sg=2BqwB_fuGOM*07bT+~W&Cb#Zb!3aCB?<=cPlRM
z%N+9aDcs*;g4EMiscZO|bJ(TaB?Bv4dcvos$T?swnq6F7oSEz>@zz;j9f@M8s^KCO
zSaV%~_>>U}TMAhqmZ@4ZB6u<14~+me7FpyM%FQ%Bze;x4`hoUgiQJckb(gcJOq5I?
z=PyN;?irR=Wm};kJex_T4F!R
zZ)GpnGY22<>fA=!)hX>N!`^nUr_Tz{vkmRo7TMOI!Xh3K?7T6CZ`DHT@#@BZ)Z5T3
z`~ckmqxle$Xq?!R3j+2@%#=+L=*-pX>z88a-g<&Kp2ic
z3_6yNSyW|0zoE&K6I(pnS}9?NAKYbvp`f=P$zxTy`2UiCl51
zSvq)r+3N7P8sT0!%}_DpiD-Gg9O`&lIa~F7DPMcp7@*1U96UMn(Cp97&Zfz5-E2N8
z_c*DW^L`l8yIr-Wja-_Ul;`&vbd5GDPC1TNwL1Q`pe@wa%+6$P8TgIE9-qX2{FnUQ
zpd$kHvpp=En;4-S5#~n_a0p#SSI8ow-GICPqbayzefJpm6`?{mGbS}lSE%HC`64+K
z=YxKd5FAwN{bnd`nos-A^ebeQ^JT4JG(}lItorgt(Ux=T<2I>}Yd@sS&3mHT0df)P
znxP1dQH!H~w?+4;I4*+j8+$e=%1
ze68~we&g#&HW)Cm*vA4BnlpH;IQa1em~QpO1G_hLkf-(VaHkniC(Cg5m(cQ#*T+1m
z#A?Q;9RL76Ev-ewC?J87lar+qKcox$cn|!Hei!sI-sK0V-o-{wkVok)it{FEK%POv
zd86&o)MPn{Tm(M*ZU{qpl8~1>7!3CEdO2Nb5q>(Z!K9J>%o}6txkY%l>Tw2m!Lc;n
ztKC#vfUv61r{?K?=C%@|9~|R4=nV-pztBkd)cVc6^8BLD6xVc^i~|H4_>&PGKA1sc
zXOhVG$fNAO3b21hu`vXs
zi>Z8>RIVcBVx$j^`he7HDAiHQMZ0?=hP*E6q7qE1LUhE;WM6B%;O~%s@_SvsmpzmCvOPl8e
zb?J$Atr`6Qikl_}Stb-N{GPH2o;rD;SSVxjHqHD|Rt=9*NffQ4GP%I3IAgwKCtwJr
zCma~HNpu2_sTG^n8E8X*FA_)i4T<66O=SQm
z%G%>>gKC*3Rmf)j%F~Kr*21cbHe2~TPa7k{`IuUXjq|fjpgdxsdiKsE0T^v2Bu!a1
zIUkAN1WAN8zHi^}3Mma7!G&7yqfn?gW&N}v+M(O-`2bjS60hqCn78l#8mplMCQScr
zHI?Y^uV4AxI%*sIX5IFa*CgMb#YN;&L<|fKwY=Oeaa+$<0s;mU=M^wpX+mC)a^9Cw
z3#SJyo$tm|Ottn|7Qdq%k_LW{HoJZaHF{Q@r-uRIWN!8b;`_rPLfxwtb!B4i
zT@D_#mq$!;a+Fi{>_i`G5+UaK+#lGOS;|6v*DTWoJPvpJML59QHEEYK04NX8B04^0
z=&0<#2p<4jBH=Jrsxy*$o_A^4w$<6L2|=!qd!BCte)|HL&b_05|II4{sdU!Mu$CFjZ>~`_fsJ1
z?=uY}R@uJ%dQ;}yz^zHEGG&eA&qnP#f`;cXeS(BFKDq^D$CeE3KigQ9%tc`%fWdVN#*W1??%$9w^oR&
zISEWpPIkMQQS$-rFA1yR@2c2%Ch$!%m$+WhFxj`^_`L);40M;;raQ-LJ3(|2uT6MX
zM2UT6#74@QGB()nM)1@S3Jw;rBR=5?*~n>dxGHFFY%4Y*1MG8o7m1|UZ_}`H`*>8*
z(9qy>-u3pZ{pobI&Etuvk>mHl%_DHX)&a+=RjKbgb)enid?Ll%_S>rF^!Wm_s&$!R
zK*m(fS7HldRuu8~ig+8s!IJ2-I^O!wv_PM
z6<*%^Mhd_32n$0FODftAi%Y<5H?sf=zpd&gky_}=Uj~G{=6=MakOzPwGg$K~LanEFoj_J;5g|qgFQA$ci2y`+|sqgDzrsA;+Jd9q!=kl?xv`
z82;Y>`Evs7?l-Wx!=H<5zhMn~3svxhmX-I~#9}{IjD<|ujGo(68#^vzD8rk=^4^3Z
z+?UAEX(B0*0|ZU-dkR%is)^8!Fx$CO^UU&p!`3_B*I!jb{J9#1D7V`r4E+nxNjVqp*0|sp{_oabcL{zVengw~u%z-*1We{oe
z_{)$PvnH6cfq1#e1QNkqB1a5W~w5s4J$uVHD5s;{p>dn
zyRTd#b{I;rCxlU#@?w%TXCM71BSWb0b*_py>-b|a-1fus-$?m^7zZFduz#h_XMi#N#R1)}2dy^F=!g_+6
z6-Ph!hKAqT+J(|(i%+!g8R(ft=SxmzDUfw;=2gRANM`{X{%>qD)doNI16>
zEHjF+Z)1uhGJj!-Nl}ObF&9-ezCeztL`aY!IfwS}
zFxJ=@QXi`>{_Qkf!4kG)5k(#~@ywn8fMVT+M_7*Agda|BTs)bn_`}yztSWpi5B5|n
zoz8?u_{=i;4J3MH+rZp;wF~*jh0(<1b4gU&G0*^iiT02OkKzI|p23P%mO~_3OJszh
z4l{O+H$fIh3;oSI!#zO)Spdk86Bp#YD}auJ&J(JbgOCLysl-J*8X;p|v~1?Lc)PAN
zkm5xlfz-+#`v6LdVzLV@@Pd!8Fq`s)qESZ{0#gul%EQFzl39ASOf>W3IBB=wGkhNO
zQ%xo$d$9;v`bIJV4O_}JkXHQ-UKWp?zqVo_ei2GU3%H)nt>1sx8zyeBcoAUN9D?M&|diO!X!Z07*k5?d_
zJN80%1^pR5hYD@FdfI$KO)aXlg^tO-{W7WnQTC{j)Lf?cJieYDzMg-|)fDUHC3!?)E_C;2tA-9YvpnmtOCB;fszT4$t7twf=09yT+WZ|n
z;W9Tn``3|oTu(}kjI0E@T?s&LJxC)`d773;=x7nYB6_{#0sQKroyI%wU>(;5?gZV3
zve$HXx!#=q2X~!IMke;Q&+8(OEh#IPKBM{^e)8PZzA`$_1DDnrFAHNn3c1*h0#n-w
zZ|{4=zyD-3fWI&R`oPjBXlsN%nOq@l5(
zSaJ3>F|nRMPFs-hK4aEix+;+0BsNg{i?Kf(YJb!;_8`NYqs*OV_6E*wp_1T+k~)0?
zo-169FZ!X3{+~gLvaAx<;L^_1sSLQ#&+jF7Q5@%R&uSa$ZoFUjv%Fk%T_kn}Sd`e9
zwA@4&?k!&X#c}{>qNiPBDr0A7r~QNtyV0`ta@rS8SRj}A4)k6uto13w!=qw$V%2$W
zWX|(;;;9W{d|>``_SmqsXpxDB@fwnvetAnD$xkUkEpE)rFpc~%K*@hHfV)?Qsw+?-
zwv%yK0Y#FdhyC}@31pEK1mvdHuTxABMa~V26n(7rilN6XsEUu_M28PO(#TnB`u334gZ<^g4*_6ATYNV&n?hbL-
z0^qsbF-XmRw^W_Gk$H!l?gXv4$4ls#aB6Dm(wLDxp6NohiBZ4Y@kFdi!xFgTA|)iY
zKc{u}#6BdO$9_1M_UJbiH_gya`2EXvtVNB=D7U@#+*cIh{_UUE0fNazQt)}qfa@);
ziZgE{%D846)5l1{Po_AahZ2ZF68{-(l+-oP`JoZH&cq^vT5SfupBBqmg;&c)NHTt3
z3ZsL}+2_S1^GKa<(c2C(^3G#SVC}8bxtX=F?~xS|J@~eg+Nnw?w0E*97-Z9b?#Npe%f6l#xG=0pDQUE}
zrsY-^yYQc!`8<_Cz^iyeR%6quCo7K{lag=xIya&l)OcFSPZqaOy04L02R~78NYi4a
zNsI*IYOv9iu+vd{F0=H~7Ak6tQv;mJ;ipAT5z#Il7~usxX%t@hBkO8+BiVzm5${_%
zLcDfX^n4!1IDL@4#InXSwne-&8yVdABM+D=oAPv2-tp#gS~w^0
zs0+VCCs5R8lQB&HfuC$h*23*c+rvtEJ>>Y^f)~yYpF?1$Xg+|qYat+lyU}t9f?7_$i*9dGEUNIezP1*RxA|T2;$W^e
z4s@07nsbY-ZQc88!lxesbrPMorv9C~O6F|dj@ZRbo+_2cy1&;DdkIecWvUSLoq#@U>^9CH4#;;zARXWl3Cl)bIg1YfuesP9eBIB2meDH^R1J%f)N1RlY+e3a*QmynQ
z*b7QSLh`ETqQ?W1$J@bUh&>X*b1qlFJTSHK`XJ}SsI
zqZrb{fOz5%P~I~7UR^2sLT2SScv6_E@*i)*OyRGuBD^;DyI#{mo5~(WI6LlyWmR*A
ztt#5>@8vrpig%|cUd7!MMbeeuHPkjN67XOIMqP=lTKNakK>ympV@mwmA!pE7nHy=1
z7u(4qL9~fa6M+^@t}7iUYF2lUoZWsTE*7-nQahUPtp?tJ_fV>}wRFius?mjRed&Ge#*Op%FnZO*leZY>>Kt?r`9Woj?bG#*d97Ijrp^GVEzMd*J+@U6IUvG
zesOy=TDe}%J3=e^M;{>J@iGKS<7+K|xIM|p$S{|>3E_*wj-b@NxbcoTytwIk##A><
z63r7x{YhhFgbE8JhU@&p{(?W5v(r5$uyTjHwoYA&MkXLyi3h{SfNj