diff --git a/src/app/@theme/components/header/header.component.ts b/src/app/@theme/components/header/header.component.ts index bfe2b9bc3e..fb62f5867e 100644 --- a/src/app/@theme/components/header/header.component.ts +++ b/src/app/@theme/components/header/header.component.ts @@ -34,6 +34,10 @@ export class HeaderComponent implements OnInit, OnDestroy { value: 'corporate', name: 'Corporate', }, + { + value: 'blueberry', + name: 'Blueberry', + }, ]; currentTheme = 'default'; diff --git a/src/app/@theme/layouts/one-column/one-column.layout.scss b/src/app/@theme/layouts/one-column/one-column.layout.scss index 448cb73846..490185d40b 100644 --- a/src/app/@theme/layouts/one-column/one-column.layout.scss +++ b/src/app/@theme/layouts/one-column/one-column.layout.scss @@ -2,6 +2,20 @@ @import '~bootstrap/scss/mixins/breakpoints'; @import '~@nebular/theme/styles/global/breakpoints'; +::ng-deep .nb-theme-blueberry { + nb-layout-header nav { + height: 4rem; + } + + nb-layout .layout .layout-container .content nb-layout-footer nav { + padding: 0.25rem 1rem; + } + + nb-layout-header.fixed ~ .layout-container { + padding-top: 4rem; + } +} + @include nb-install-component() { .menu-sidebar ::ng-deep .scrollable { padding-top: nb-theme(layout-padding-top); diff --git a/src/app/@theme/layouts/three-columns/three-columns.layout.scss b/src/app/@theme/layouts/three-columns/three-columns.layout.scss index 448cb73846..490185d40b 100644 --- a/src/app/@theme/layouts/three-columns/three-columns.layout.scss +++ b/src/app/@theme/layouts/three-columns/three-columns.layout.scss @@ -2,6 +2,20 @@ @import '~bootstrap/scss/mixins/breakpoints'; @import '~@nebular/theme/styles/global/breakpoints'; +::ng-deep .nb-theme-blueberry { + nb-layout-header nav { + height: 4rem; + } + + nb-layout .layout .layout-container .content nb-layout-footer nav { + padding: 0.25rem 1rem; + } + + nb-layout-header.fixed ~ .layout-container { + padding-top: 4rem; + } +} + @include nb-install-component() { .menu-sidebar ::ng-deep .scrollable { padding-top: nb-theme(layout-padding-top); diff --git a/src/app/@theme/layouts/two-columns/two-columns.layout.scss b/src/app/@theme/layouts/two-columns/two-columns.layout.scss index 448cb73846..490185d40b 100644 --- a/src/app/@theme/layouts/two-columns/two-columns.layout.scss +++ b/src/app/@theme/layouts/two-columns/two-columns.layout.scss @@ -2,6 +2,20 @@ @import '~bootstrap/scss/mixins/breakpoints'; @import '~@nebular/theme/styles/global/breakpoints'; +::ng-deep .nb-theme-blueberry { + nb-layout-header nav { + height: 4rem; + } + + nb-layout .layout .layout-container .content nb-layout-footer nav { + padding: 0.25rem 1rem; + } + + nb-layout-header.fixed ~ .layout-container { + padding-top: 4rem; + } +} + @include nb-install-component() { .menu-sidebar ::ng-deep .scrollable { padding-top: nb-theme(layout-padding-top); diff --git a/src/app/@theme/styles/theme.blueberry.ts b/src/app/@theme/styles/theme.blueberry.ts new file mode 100644 index 0000000000..2414f48470 --- /dev/null +++ b/src/app/@theme/styles/theme.blueberry.ts @@ -0,0 +1,314 @@ +import { NbJSThemeOptions, BLUEBERRY_THEME as baseTheme } from '@nebular/theme'; + +const baseThemeVariables = baseTheme.variables; + +export const BLUEBERRY_THEME = { + name: 'blueberry', + base: 'blueberry', + 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: 'rgba(0, 0, 0, 0)', + + lineBg: baseThemeVariables.primary, + lineShadowBlur: '0', + itemColor: baseThemeVariables.border4, + itemBorderColor: baseThemeVariables.border4, + itemEmphasisBorderColor: baseThemeVariables.primaryLight, + shadowLineDarkBg: 'rgba(0, 0, 0, 0)', + shadowLineShadow: 'rgba(0, 0, 0, 0)', + gradFrom: baseThemeVariables.bg, + gradTo: baseThemeVariables.bg, + }, + + 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: 'rgba(0, 0, 0, 0)', + areaGradTo: 'rgba(0, 0, 0, 0)', + 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: 8px 24px;', + tooltipTextColor: baseThemeVariables.fgText, + tooltipFontWeight: 'normal', + }, + + countryOrders: { + countryBorderColor: baseThemeVariables.border4, + countryFillColor: baseThemeVariables.bg4, + 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(0, 0, 0, 0)', + secondAreaGradTo: 'rgba(0, 0, 0, 0)', + secondShadowLineDarkBg: 'rgba(0, 0, 0, 0)', + + // third line + thirdLineGradFrom: baseThemeVariables.success, + thirdLineGradTo: baseThemeVariables.successLight, + + thirdAreaGradFrom: 'rgba(0, 0, 0, 0)', + thirdAreaGradTo: 'rgba(0, 0, 0, 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.success, + 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: ['65%', '90%'], + + secondPieGradientLeft: baseThemeVariables.warning, + secondPieGradientRight: baseThemeVariables.warningLight, + secondPieShadowColor: 'rgba(0, 0, 0, 0)', + secondPieRadius: ['63%', '92%'], + shadowOffsetX: '-4', + shadowOffsetY: '-4', + }, + + 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/themes.scss b/src/app/@theme/styles/themes.scss index c5d5aa8d5d..cc3f557a43 100644 --- a/src/app/@theme/styles/themes.scss +++ b/src/app/@theme/styles/themes.scss @@ -86,3 +86,24 @@ $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, + + slide-out-background: linear-gradient(270deg, #e3eef6 0%, #cbdfea 100%), + slide-out-shadow-color: 0 4px 14px 0 #7d9eb5, + slide-out-shadow-color-rtl: 0 4px 14px 0 #7d9eb5, +), blueberry, blueberry); diff --git a/src/app/@theme/theme.module.ts b/src/app/@theme/theme.module.ts index 9bb4442024..28de984683 100644 --- a/src/app/@theme/theme.module.ts +++ b/src/app/@theme/theme.module.ts @@ -38,6 +38,7 @@ 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 { BLUEBERRY_THEME } from './styles/theme.blueberry'; const NB_MODULES = [ NbLayoutModule, @@ -84,7 +85,7 @@ export class ThemeModule { { name: 'default', }, - [ DEFAULT_THEME, COSMIC_THEME, CORPORATE_THEME, DARK_THEME ], + [ DEFAULT_THEME, COSMIC_THEME, CORPORATE_THEME, DARK_THEME, BLUEBERRY_THEME ], ).providers, ], }; diff --git a/src/app/pages/dashboard/dashboard.component.ts b/src/app/pages/dashboard/dashboard.component.ts index c359216af2..c867b65ebc 100644 --- a/src/app/pages/dashboard/dashboard.component.ts +++ b/src/app/pages/dashboard/dashboard.component.ts @@ -54,6 +54,7 @@ export class DashboardComponent implements OnDestroy { cosmic: CardSettings[]; corporate: CardSettings[]; dark: CardSettings[]; + blueberry: CardSettings[]; } = { default: this.commonStatusCardsSet, cosmic: this.commonStatusCardsSet, @@ -76,6 +77,7 @@ export class DashboardComponent implements OnDestroy { }, ], dark: this.commonStatusCardsSet, + blueberry: this.commonStatusCardsSet, }; constructor(private themeService: NbThemeService,