Skip to content

Commit 2b56d90

Browse files
committed
Dark Mode Toggles
Dark mode now toggles with a 200ms transition time. TODO: Tidy up using CSS variables and not hard coding. Swap any images/icons or things that don't contrast well with dark mode. Style the button to be a nice clean slider. Make sure button placement is clean on mobile, unsure of how to implement that but will figure it out.
1 parent d86b684 commit 2b56d90

File tree

7 files changed

+79
-19
lines changed

7 files changed

+79
-19
lines changed

_layouts/default.html

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,15 @@ <h1>
5858
<button type="button" class="open-nav" id="open-nav">
5959
<i class="fas fa-bars" style="color: #bbbbbb; font-size: 5.5em;"></i>
6060
</button>
61-
<a href="{{ site.baseurl }}/"><img src="{{ site.baseurl }}/images/submitty_logo.png" alt="{{ site.title }} logo"></a>
61+
<a href="{{ site.baseurl }}/" class="logo-link">
62+
<img
63+
id="site-logo"
64+
src="{{ site.baseurl }}/images/submitty_logo.png"
65+
data-light="{{ site.baseurl }}/images/submitty_logo.png"
66+
data-dark="{{ site.baseurl }}/images/submitty_logo_white.png"
67+
alt="{{ site.title }} logo"
68+
>
69+
</a>
6270
<!--{{ site.title }}-->
6371
</h1>
6472
<form action="{{ site.baseurl }}/search/" method="get">

_sass/_colors.scss

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,10 @@
1313

1414
// Dark theme overrides
1515
:root[data-theme="dark"] {
16-
--body-bg: #121212;
17-
--content-bg: #1e1e1e;
18-
--content-color: #eeeeee;
19-
--nav-bg: #191919;
16+
--body-bg: #36393f;
17+
--content-bg: #36393f;
18+
--content-color: #ffffff;
19+
--nav-bg: #202225;
2020
--nav-text: #cccccc;
2121
--brand-color: #000000;
2222
}

_sass/_dark-mode.scss

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
@import "colors";
2+
3+
:root[data-theme="dark"] {
4+
body {
5+
background-color: var(--body-bg);
6+
}
7+
8+
header {
9+
background-color: var(--nav-bg);
10+
}
11+
12+
a {
13+
color: var(--content-color);
14+
}
15+
16+
h2 {
17+
color: var(--content-color);
18+
}
19+
20+
h3 {
21+
color: var(--content-color);
22+
}
23+
24+
#nav-tree .selected {
25+
background-color: #535353;
26+
}
27+
28+
#nav-tree .selected a {
29+
color: var(--content-color);
30+
}
31+
32+
.arrow {
33+
color: var(--content-color);
34+
}
35+
36+
#search-input {
37+
background-color: #535353;
38+
color: var(--content-color);
39+
}
40+
}
41+
42+
*,
43+
*::before,
44+
*::after {
45+
transition:
46+
color 200ms ease-in-out,
47+
background-color 200ms ease-in-out;
48+
}

_sass/_layout.scss

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@ input::-ms-reveal {
88
body {
99
height: auto;
1010
overflow-x: hidden;
11-
background-color: var(--body-bg);
1211

1312
&.nav-open {
1413
overflow: hidden;
@@ -27,7 +26,6 @@ body {
2726

2827
&::before {
2928
content: "";
30-
background-color: var(--body-bg);
3129
position: fixed;
3230
top: 0;
3331
right: 0;
@@ -55,7 +53,6 @@ body {
5553
&::after {
5654
left: 0;
5755
width: $nav-width;
58-
background-color: var(--nav-bg);
5956
}
6057

6158
#search-input,
@@ -66,7 +63,6 @@ body {
6663
&::before {
6764
left: $nav-width;
6865
right: 0;
69-
background-color: var(--content-bg);
7066
}
7167
}
7268
}
@@ -100,7 +96,6 @@ header {
10096
right: 0;
10197
overflow-x: hidden;
10298
z-index: 1;
103-
background-color: var(--nav-bg);
10499

105100
ul {
106101
list-style-type: none;
@@ -112,7 +107,6 @@ header {
112107
padding: $emblem-vertical-padding $emblem-horizontal-padding;
113108
//height: $nav-header-height;
114109
box-sizing: border-box;
115-
background-color: var(--brand-color);
116110
color: var(--content-color);
117111
margin: 0;
118112
font-size: 1.7rem;
@@ -181,7 +175,6 @@ header {
181175

182176
.content {
183177
position: relative;
184-
background-color: var(--content-bg);
185178
color: var(--content-color);
186179

187180
h3::before {
@@ -352,8 +345,6 @@ h3 + .warning {
352345

353346

354347
h4 code {
355-
background: var(--nav-bg);
356-
color: var(--content-color);
357348
background-color: transparent;
358349
font-weight: 700;
359350
padding: 0;

css/main.scss

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ $full-width-break: $nav-width + ($space * 4) + $content-max-width;
2121
@import "code";
2222
@import "tables";
2323
@import "layout";
24+
@import "dark-mode";
2425

2526
header.main-nav > ul {
2627
margin-bottom: 30px;

images/submitty_logo_white.png

92.2 KB
Loading

scripts/main.js

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -60,17 +60,22 @@ function toggle_display(id) {
6060

6161
function changeMode() {
6262
const toggle = document.getElementById('dark-mode-toggle');
63-
let saved = localStorage.getItem('site_mode') || 'light';
63+
const logo = document.getElementById('site-logo');
64+
let saved = localStorage.getItem('site_mode') || 'light';
6465

6566
if (saved !== 'dark') {
6667
saved = 'dark';
67-
toggle.innerHTML = 'Toggle Light Mode';
68-
console.log('Setting dark mode');
68+
toggle.textContent = 'Toggle Light Mode';
6969
}
7070
else {
7171
saved = 'light';
72-
toggle.innerHTML = 'Toggle Dark Mode';
73-
console.log('Setting light mode');
72+
toggle.textContent = 'Toggle Dark Mode';
73+
}
74+
75+
if (logo) {
76+
logo.src = (saved === 'dark')
77+
? logo.dataset.dark
78+
: logo.dataset.light;
7479
}
7580

7681
localStorage.setItem('site_mode', saved);
@@ -81,8 +86,15 @@ window.addEventListener('DOMContentLoaded', () => {
8186
const html = document.documentElement;
8287
const toggle = document.getElementById('dark-mode-toggle');
8388
const saved = localStorage.getItem('site_mode') || 'light';
89+
const logo = document.getElementById('site-logo');
8490

8591
html.setAttribute('data-theme', saved);
8692
toggle.textContent = saved === 'dark' ? 'Light Mode' : 'Dark Mode';
93+
94+
if (logo) {
95+
logo.src = (saved === 'dark')
96+
? logo.dataset.dark
97+
: logo.dataset.light;
98+
}
8799
});
88100

0 commit comments

Comments
 (0)