Skip to content

Commit 2a799e9

Browse files
committed
chore(): improvements dark mode
1 parent fa648b0 commit 2a799e9

File tree

10 files changed

+59
-30
lines changed

10 files changed

+59
-30
lines changed

src/app/common/social-wrapper/social-wrapper.component.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
<div class="social-wrapper">
2-
<app-dark-mode-toggle></app-dark-mode-toggle>
32
<a href="https://twitter.com/nestframework"
43
title="Twitter account"
54
target="_blank">
@@ -28,4 +27,5 @@
2827
rel="nofollow">
2928
<i class="fab fa-discord"></i>
3029
</a>
30+
<app-dark-mode-toggle></app-dark-mode-toggle>
3131
</div>

src/app/homepage/dark-mode-toggle/dark-mode-toggle.component.scss

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,5 +32,7 @@
3232

3333
.material-icons {
3434
font-size: 20px;
35+
border-left: 2px solid #fff;
36+
padding-left: 10px;
3537
}
3638
}
Lines changed: 22 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
1-
import { DOCUMENT } from '@angular/common';
21
import { Component, Inject, OnInit } from '@angular/core';
2+
import { DOCUMENT } from '@angular/common';
3+
import { MediaMatcher } from '@angular/cdk/layout';
34

45
@Component({
56
selector: 'app-dark-mode-toggle',
@@ -9,32 +10,36 @@ import { Component, Inject, OnInit } from '@angular/core';
910
export class DarkModeToggleComponent implements OnInit {
1011
isDarkMode: boolean;
1112

12-
private getUserSettingsIsDarkMode(): boolean {
13-
return localStorage.getItem('DARK_MODE') === 'true';
14-
}
15-
16-
private setDarkMode(isDarkMode: boolean) {
17-
this.isDarkMode = isDarkMode;
18-
this.document.documentElement.setAttribute(
19-
'mode',
20-
isDarkMode ? 'dark' : 'light',
21-
);
22-
}
23-
24-
constructor(@Inject(DOCUMENT) private readonly document: Document) {}
13+
constructor(
14+
@Inject(DOCUMENT)
15+
private readonly document: Document,
16+
private readonly mediaMatcher: MediaMatcher,
17+
) {}
2518

2619
ngOnInit() {
2720
const userPrefersDark =
28-
window.matchMedia &&
29-
window.matchMedia('(prefers-color-scheme: dark)').matches;
21+
this.mediaMatcher.matchMedia &&
22+
this.mediaMatcher.matchMedia('(prefers-color-scheme: dark)').matches;
3023
// In case the user has used the toggle button, we prioritize it over the
3124
// system settings
3225
this.setDarkMode(this.getUserSettingsIsDarkMode() || userPrefersDark);
3326
}
3427

3528
toggleDarkMode() {
3629
const isDarkMode = !this.isDarkMode;
37-
localStorage.setItem('DARK_MODE', isDarkMode.toString());
30+
localStorage.setItem('theme-mode', isDarkMode.toString());
3831
this.setDarkMode(isDarkMode);
3932
}
33+
34+
private getUserSettingsIsDarkMode(): boolean {
35+
return localStorage.getItem('theme-mode') === 'true';
36+
}
37+
38+
private setDarkMode(isDarkMode: boolean) {
39+
this.isDarkMode = isDarkMode;
40+
this.document.documentElement.setAttribute(
41+
'mode',
42+
isDarkMode ? 'dark' : 'light',
43+
);
44+
}
4045
}

src/app/homepage/footer/footer.component.scss

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,7 @@ footer {
6969
font-size: 20px;
7070
margin-left: 15px;
7171
cursor: pointer;
72+
color: #fff;
7273

7374
&:first-of-type {
7475
font-size: 20px;

src/app/homepage/homepage.component.scss

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@
6363

6464
a {
6565
font-weight: 600;
66-
color: var(--primary);
66+
color: var(--primary-2dp);
6767
&:hover {
6868
color: #0894e2;
6969
}
@@ -190,7 +190,7 @@
190190
}
191191
.logo-sponsor {
192192
width: 160px;
193-
filter: grayscale(1);
193+
filter: var(--company-logo-filter);
194194

195195
&:hover {
196196
filter: grayscale(0);
@@ -404,7 +404,7 @@
404404
max-height: 90px;
405405
-webkit-filter: var(--company-filter);
406406
filter: var(--company-filter);
407-
opacity: 0.5;
407+
opacity: var(--company-logo-opacity);
408408

409409
&:hover {
410410
-webkit-filter: var(--company-filter-hover);
@@ -467,7 +467,7 @@
467467
bottom: 20px;
468468
overflow: hidden;
469469
padding: 1em;
470-
background: var(--background);
470+
background: var(--background-2dp) !important;
471471
text-align: center;
472472
line-height: 1.5;
473473
font-size: 13px;

src/app/homepage/newsletter/newsletter.component.scss

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@
6363
padding: 10px 20px;
6464
background: #fdfdfd;
6565
width: calc(100% - 70px);
66-
box-shadow: -2px 2px 3px gainsboro;
66+
// box-shadow: -2px 2px 3px var(--background);
6767
border-radius: 3px;
6868
max-width: 100%;
6969
vertical-align: middle;

src/app/shared/components/toc/toc.component.scss

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@
4343
}
4444

4545
.current {
46-
color: var(--primary);
46+
color: var(--primary-3dp);
4747
font-weight: 600;
4848

4949
&::before {

src/scss/theme.scss

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
.light-mode {
22
--primary: #ed2945;
3+
--primary-1dp: #d71e38;
4+
--primary-2dp: #ed2945;
5+
--primary-3dp:#db2840;
36

47
--color: #404040;
58
--color-1dp: #151515;
@@ -31,27 +34,33 @@
3134

3235
--company-filter: grayscale(100%);
3336
--company-filter-hover: grayscale(0%);
37+
--company-logo-filter: grayscale(1);
38+
39+
--company-logo-opacity: 0.5;
3440
}
3541

3642
.dark-mode {
37-
--primary: #ff677c;
43+
--primary: #da001e;
44+
--primary-1dp: #ff445e;
45+
--primary-2dp: #f55168;
46+
--primary-3dp: #ff586f;
3847

3948
--color: rgba(255, 255, 255, 0.9);
4049
--color-1dp: rgba(255, 255, 255, 0.8);
4150

42-
--background: #2c2c2c;
51+
--background: #1D1D1D;
4352
--background-1dp: #272727;
4453
--background-2dp: #212121;
4554
--background-3dp: #272727;
4655

4756
--header-background: #151515;
4857

4958
--menu-color: white;
50-
--menu-background: #272727;
59+
--menu-background: #222222;
5160

5261
--inline-code-color: #8ec2ff;
5362

54-
--code-background: #1d1d1d;
63+
--code-background: #151313;
5564

5665
--warning: #ffb36f;
5766
--warning-color: #ed8529;
@@ -64,6 +73,9 @@
6473
--error: #ff677c;
6574
--error-background: #3a2f30;
6675

67-
--company-filter: opacity(1);
76+
--company-filter: contrast(0.5);
6877
--company-filter-hover: opacity(1);
78+
--company-logo-filter: contrast(0.5);
79+
80+
--company-logo-opacity: unset;
6981
}

src/scss/variables.scss

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
// Base colors
2+
$white-color: #f9f8f8;
3+
$silver-color: #f3f5f7;
4+
$darksilver-color: #a5a5a5;
5+
$grey-color: #404040;
6+
$darkgrey-color: #272727;
7+
$black-color: #151515;
8+
$red-color: #ed2945;

src/styles.scss

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
@use './scss/hljs';
22
@use './scss/variables';
33
@use './scss/utils';
4+
@use './scss/theme.scss';
45

56
:root {
67
--docsearch-primary-color: variables.$red-color;
@@ -157,7 +158,7 @@ tr {
157158

158159
th {
159160
padding: 20px;
160-
background: #efefef;
161+
background: var(--background-1dp);
161162
}
162163

163164
tr:nth-of-type(even) td {

0 commit comments

Comments
 (0)