39 lines
1.2 KiB
JavaScript
39 lines
1.2 KiB
JavaScript
|
// TODO move this file into assets and use hugo pipes and babel
|
||
|
|
||
|
(function(){
|
||
|
var modeBtnText = document.getElementById('cs-mode-button-state');
|
||
|
var states = ["colorscheme-dark", "colorscheme-light", "colorscheme-auto"];
|
||
|
var labels = ["On", "Off", "Auto"];
|
||
|
var activeState = -1;
|
||
|
|
||
|
function toggleColorscheme() {
|
||
|
for(var i = states.length - 1; i >= 0; i--) {
|
||
|
if (document.body.classList.contains(states[i])) {
|
||
|
document.body.classList.remove(states[activeState]);
|
||
|
activeState = activeState < states.length - 1 ? activeState + 1 : 0;
|
||
|
document.body.classList.add(states[activeState]);
|
||
|
modeBtnText.innerText = labels[activeState];
|
||
|
break;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// TODO use cookie to record state of dark mode
|
||
|
|
||
|
for(var i = states.length - 1; i >= 0; i--) {
|
||
|
if (document.body.classList.contains(states[i])) {
|
||
|
activeState = i;
|
||
|
modeBtnText.innerText = labels[activeState];
|
||
|
}
|
||
|
}
|
||
|
|
||
|
if (activeState > -1) {
|
||
|
document.getElementById('cs-mode-button').addEventListener('click', function() {
|
||
|
toggleColorscheme();
|
||
|
})
|
||
|
} else {
|
||
|
document.getElementById('cs-mode-container').style.display = "none";
|
||
|
}
|
||
|
})();
|
||
|
|