From 820aeee8e7f5ff455413ba72422510f989d6e7bf Mon Sep 17 00:00:00 2001
From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com>
Date: Sun, 11 Aug 2024 15:19:36 +0200
Subject: [PATCH 1/3] Migrate from M2 to M3
---
apps/client/src/app/app.component.ts | 2 +
apps/client/src/styles/m3-theme.scss | 155 ++++++++++++++++
apps/client/src/styles/theme.scss | 255 +++++++++++++++++----------
3 files changed, 319 insertions(+), 93 deletions(-)
create mode 100644 apps/client/src/styles/m3-theme.scss
diff --git a/apps/client/src/app/app.component.ts b/apps/client/src/app/app.component.ts
index 4982615a5..088b732dc 100644
--- a/apps/client/src/app/app.component.ts
+++ b/apps/client/src/app/app.component.ts
@@ -355,7 +355,9 @@ export class AppComponent implements OnDestroy, OnInit {
if (isDarkTheme) {
this.document.body.classList.add('theme-dark');
+ this.document.body.classList.remove('theme-light');
} else {
+ this.document.body.classList.add('theme-light');
this.document.body.classList.remove('theme-dark');
}
diff --git a/apps/client/src/styles/m3-theme.scss b/apps/client/src/styles/m3-theme.scss
new file mode 100644
index 000000000..69be1fd7c
--- /dev/null
+++ b/apps/client/src/styles/m3-theme.scss
@@ -0,0 +1,155 @@
+// This file was generated by running 'ng generate @angular/material:m3-theme'.
+// Proceed with caution if making changes to this file.
+
+@use 'sass:map';
+@use '@angular/material' as mat;
+
+// Note: Color palettes are generated from primary: #36cfcc, secondary: #3686cf
+$_palettes: (
+ primary: (
+ 0: #000000,
+ 10: #00201f,
+ 20: #003736,
+ 25: #004342,
+ 30: #00504e,
+ 35: #005d5b,
+ 40: #006a68,
+ 50: #008583,
+ 60: #00a19f,
+ 70: #11bebc,
+ 80: #47dbd7,
+ 90: #6bf7f4,
+ 95: #affffc,
+ 98: #e3fffd,
+ 99: #f2fffe,
+ 100: #ffffff
+ ),
+ secondary: (
+ 0: #000000,
+ 10: #001d36,
+ 20: #003258,
+ 25: #003d6a,
+ 30: #00497c,
+ 35: #00558f,
+ 40: #0061a3,
+ 50: #267bc3,
+ 60: #4895df,
+ 70: #66b0fb,
+ 80: #9ecaff,
+ 90: #d1e4ff,
+ 95: #e9f1ff,
+ 98: #f8f9ff,
+ 99: #fdfcff,
+ 100: #ffffff
+ ),
+ tertiary: (
+ 0: #000000,
+ 10: #031d35,
+ 20: #1b324b,
+ 25: #273d57,
+ 30: #324863,
+ 35: #3e546f,
+ 40: #4a607b,
+ 50: #637995,
+ 60: #7c92b0,
+ 70: #97adcc,
+ 80: #b2c8e8,
+ 90: #d2e4ff,
+ 95: #eaf1ff,
+ 98: #f8f9ff,
+ 99: #fdfcff,
+ 100: #ffffff
+ ),
+ neutral: (
+ 0: #000000,
+ 10: #191c1c,
+ 20: #2d3131,
+ 25: #383c3c,
+ 30: #444747,
+ 35: #4f5353,
+ 40: #5b5f5e,
+ 50: #747877,
+ 60: #8e9191,
+ 70: #a9acab,
+ 80: #c4c7c6,
+ 90: #e0e3e2,
+ 95: #eff1f0,
+ 98: #f7faf9,
+ 99: #fafdfc,
+ 100: #ffffff,
+ 4: #0b0f0f,
+ 6: #101414,
+ 12: #1d2020,
+ 17: #272b2a,
+ 22: #323535,
+ 24: #363a39,
+ 87: #d8dada,
+ 92: #e6e9e8,
+ 94: #eceeed,
+ 96: #f2f4f3
+ ),
+ neutral-variant: (
+ 0: #000000,
+ 10: #141d1d,
+ 20: #293232,
+ 25: #343d3d,
+ 30: #3f4948,
+ 35: #4a5454,
+ 40: #566060,
+ 50: #6f7978,
+ 60: #889392,
+ 70: #a3adac,
+ 80: #bec9c7,
+ 90: #dae5e3,
+ 95: #e8f3f2,
+ 98: #f1fbfa,
+ 99: #f4fefd,
+ 100: #ffffff
+ ),
+ error: (
+ 0: #000000,
+ 10: #410002,
+ 20: #690005,
+ 25: #7e0007,
+ 30: #93000a,
+ 35: #a80710,
+ 40: #ba1a1a,
+ 50: #de3730,
+ 60: #ff5449,
+ 70: #ff897d,
+ 80: #ffb4ab,
+ 90: #ffdad6,
+ 95: #ffedea,
+ 98: #fff8f7,
+ 99: #fffbff,
+ 100: #ffffff
+ )
+);
+
+$_rest: (
+ secondary: map.get($_palettes, secondary),
+ neutral: map.get($_palettes, neutral),
+ neutral-variant: map.get($_palettes, neutral-variant),
+ error: map.get($_palettes, error)
+);
+$_primary: map.merge(map.get($_palettes, primary), $_rest);
+$_tertiary: map.merge(map.get($_palettes, tertiary), $_rest);
+
+$light-theme: mat.define-theme(
+ (
+ color: (
+ theme-type: light,
+ primary: $_primary,
+ tertiary: $_tertiary
+ )
+ )
+);
+$dark-theme: mat.define-theme(
+ (
+ color: (
+ theme-type: dark,
+ primary: $_primary,
+ tertiary: $_tertiary
+ )
+ )
+);
diff --git a/apps/client/src/styles/theme.scss b/apps/client/src/styles/theme.scss
index 6b41fccaa..dc9ca3460 100644
--- a/apps/client/src/styles/theme.scss
+++ b/apps/client/src/styles/theme.scss
@@ -1,112 +1,181 @@
@use '@angular/material' as mat;
+@use 'sass:map';
$dark-primary-text: rgba(black, 0.87);
$light-primary-text: white;
-$mat-css-dark-theme-selector: '.theme-dark';
-
-$gf-primary: (
- 50: var(--gf-theme-primary-50),
- 100: var(--gf-theme-primary-100),
- 200: var(--gf-theme-primary-200),
- 300: var(--gf-theme-primary-300),
- 400: var(--gf-theme-primary-400),
- 500: var(--gf-theme-primary-500),
- 600: var(--gf-theme-primary-600),
- 700: var(--gf-theme-primary-700),
- 800: var(--gf-theme-primary-800),
- 900: var(--gf-theme-primary-900),
- A100: var(--gf-theme-primary-A100),
- A200: var(--gf-theme-primary-A200),
- A400: var(--gf-theme-primary-A400),
- A700: var(--gf-theme-primary-A700),
- contrast: (
- 50: $dark-primary-text,
- 100: $dark-primary-text,
- 200: $dark-primary-text,
- 300: $light-primary-text,
- 400: $light-primary-text,
- 500: $light-primary-text,
- 600: $light-primary-text,
- 700: $light-primary-text,
- 800: $light-primary-text,
- 900: $light-primary-text,
- A100: $dark-primary-text,
- A200: $light-primary-text,
- A400: $light-primary-text,
- A700: $light-primary-text
+$_palettes: (
+ primary: (
+ 0: #000000,
+ 10: #00201f,
+ 20: #003736,
+ 25: #004342,
+ 30: #00504e,
+ 35: #005d5b,
+ 40: #006a68,
+ 50: #008583,
+ 60: #00a19f,
+ 70: #11bebc,
+ 80: #47dbd7,
+ 90: #6bf7f4,
+ 95: #affffc,
+ 98: #e3fffd,
+ 99: #f2fffe,
+ 100: #ffffff
+ ),
+ secondary: (
+ 0: #000000,
+ 10: #001d36,
+ 20: #003258,
+ 25: #003d6a,
+ 30: #00497c,
+ 35: #00558f,
+ 40: #0061a3,
+ 50: #267bc3,
+ 60: #4895df,
+ 70: #66b0fb,
+ 80: #9ecaff,
+ 90: #d1e4ff,
+ 95: #e9f1ff,
+ 98: #f8f9ff,
+ 99: #fdfcff,
+ 100: #ffffff
+ ),
+ tertiary: (
+ 0: #000000,
+ 10: #031d35,
+ 20: #1b324b,
+ 25: #273d57,
+ 30: #324863,
+ 35: #3e546f,
+ 40: #4a607b,
+ 50: #637995,
+ 60: #7c92b0,
+ 70: #97adcc,
+ 80: #b2c8e8,
+ 90: #d2e4ff,
+ 95: #eaf1ff,
+ 98: #f8f9ff,
+ 99: #fdfcff,
+ 100: #ffffff
+ ),
+ neutral: (
+ 0: #000000,
+ 10: #191c1c,
+ 20: #2d3131,
+ 25: #383c3c,
+ 30: #444747,
+ 35: #4f5353,
+ 40: #5b5f5e,
+ 50: #747877,
+ 60: #8e9191,
+ 70: #a9acab,
+ 80: #c4c7c6,
+ 90: #e0e3e2,
+ 95: #eff1f0,
+ 98: #f7faf9,
+ 99: #fafdfc,
+ 100: #ffffff,
+ 4: #0b0f0f,
+ 6: #101414,
+ 12: #1d2020,
+ 17: #272b2a,
+ 22: #323535,
+ 24: #363a39,
+ 87: #d8dada,
+ 92: #e6e9e8,
+ 94: #eceeed,
+ 96: #f2f4f3
+ ),
+ neutral-variant: (
+ 0: #000000,
+ 10: #141d1d,
+ 20: #293232,
+ 25: #343d3d,
+ 30: #3f4948,
+ 35: #4a5454,
+ 40: #566060,
+ 50: #6f7978,
+ 60: #889392,
+ 70: #a3adac,
+ 80: #bec9c7,
+ 90: #dae5e3,
+ 95: #e8f3f2,
+ 98: #f1fbfa,
+ 99: #f4fefd,
+ 100: #ffffff
+ ),
+ error: (
+ 0: #000000,
+ 10: #410002,
+ 20: #690005,
+ 25: #7e0007,
+ 30: #93000a,
+ 35: #a80710,
+ 40: #ba1a1a,
+ 50: #de3730,
+ 60: #ff5449,
+ 70: #ff897d,
+ 80: #ffb4ab,
+ 90: #ffdad6,
+ 95: #ffedea,
+ 98: #fff8f7,
+ 99: #fffbff,
+ 100: #ffffff
)
);
-$gf-secondary: (
- 50: var(--gf-theme-secondary-50),
- 100: var(--gf-theme-secondary-100),
- 200: var(--gf-theme-secondary-200),
- 300: var(--gf-theme-secondary-300),
- 400: var(--gf-theme-secondary-400),
- 500: var(--gf-theme-secondary-500),
- 600: var(--gf-theme-secondary-600),
- 700: var(--gf-theme-secondary-700),
- 800: var(--gf-theme-secondary-800),
- 900: var(--gf-theme-secondary-900),
- A100: var(--gf-theme-secondary-A100),
- A200: var(--gf-theme-secondary-A200),
- A400: var(--gf-theme-secondary-A400),
- A700: var(--gf-theme-secondary-A700),
- contrast: (
- 50: $dark-primary-text,
- 100: $dark-primary-text,
- 200: $dark-primary-text,
- 300: $light-primary-text,
- 400: $light-primary-text,
- 500: $light-primary-text,
- 600: $light-primary-text,
- 700: $light-primary-text,
- 800: $light-primary-text,
- 900: $light-primary-text,
- A100: $dark-primary-text,
- A200: $light-primary-text,
- A400: $light-primary-text,
- A700: $light-primary-text
- )
+$_rest: (
+ secondary: map.get($_palettes, secondary),
+ neutral: map.get($_palettes, neutral),
+ neutral-variant: map.get($_palettes, neutral-variant),
+ error: map.get($_palettes, error)
);
+$_primary: map.merge(map.get($_palettes, primary), $_rest);
+$_tertiary: map.merge(map.get($_palettes, tertiary), $_rest);
-$gf-typography: mat.m2-define-typography-config();
+@include mat.app-background();
+@include mat.button-density(0);
+@include mat.elevation-classes();
+@include mat.table-density(-1);
-// Create default theme
-$gf-theme-default: mat.m2-define-light-theme(
- (
- color: (
- accent: mat.m2-define-palette($gf-secondary, 500, 900, A100),
- primary: mat.m2-define-palette($gf-primary)
- ),
- density: -3,
- typography: $gf-typography
- )
-);
+// $gf-typography: mat.m2-define-typography-config();
-@include mat.all-component-themes($gf-theme-default);
+.theme-light {
+ $gf-theme-default: mat.define-theme(
+ (
+ color: (
+ primary: $_primary,
+ theme-type: light,
+ tertiary: $_tertiary
+ ),
+ density: (
+ scale: -3
+ ),
+ // typography: $gf-typography
+ )
+ );
-// Create dark theme
-$gf-theme-dark: mat.m2-define-dark-theme(
- (
- color: (
- accent: mat.m2-define-palette($gf-secondary, 500, 900, A100),
- primary: mat.m2-define-palette($gf-primary)
- ),
- density: -3,
- typography: $gf-typography
- )
-);
+ @include mat.all-component-themes($gf-theme-default);
+}
.theme-dark {
- @include mat.all-component-colors($gf-theme-dark);
-}
+ $gf-theme-dark: mat.define-theme(
+ (
+ color: (
+ primary: $_primary,
+ theme-type: dark,
+ tertiary: $_tertiary
+ ),
+ density: (
+ scale: -3
+ ),
+ // typography: $gf-typography
+ )
+ );
-@include mat.button-density(0);
-@include mat.elevation-classes();
-@include mat.app-background();
-@include mat.table-density(-1);
+ @include mat.all-component-themes($gf-theme-dark);
+}
:root {
--gf-theme-alpha-hover: 0.04;
From 86b649997febe35cc207fbe6323376fb55c308e2 Mon Sep 17 00:00:00 2001
From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com>
Date: Sun, 11 Aug 2024 15:20:36 +0200
Subject: [PATCH 2/3] Update changelog
---
CHANGELOG.md | 1 +
1 file changed, 1 insertion(+)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index f6451e259..0c285cb13 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -500,6 +500,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
### Changed
- Refactored the dark theme CSS selector
+- Migrated from _Material Design_ 2 to _Material Design_ 3
- Improved the language localization for German (`de`)
- Upgraded `date-fns` from version `2.29.3` to `3.6.0`
- Upgraded `zone.js` from version `0.14.7` to `0.14.10`
From 3365d86f1394cb9669c8fc7e2a3f8789956d2edd Mon Sep 17 00:00:00 2001
From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com>
Date: Sat, 26 Oct 2024 11:46:53 +0200
Subject: [PATCH 3/3] Improve header
---
.../components/header/header.component.html | 28 +++++++++----------
.../components/header/header.component.scss | 1 +
apps/client/src/styles/theme.scss | 4 +++
3 files changed, 19 insertions(+), 14 deletions(-)
diff --git a/apps/client/src/app/components/header/header.component.html b/apps/client/src/app/components/header/header.component.html
index 8a611d935..276cb30f8 100644
--- a/apps/client/src/app/components/header/header.component.html
+++ b/apps/client/src/app/components/header/header.component.html
@@ -17,7 +17,7 @@