This repository has been archived on 2024-07-11. You can view files and clone it, but cannot push or open issues or pull requests.
nav/assets/js/themer.js

139 lines
4.1 KiB
JavaScript
Raw Permalink Normal View History

2022-11-03 17:02:36 +08:00
const setValue = (property, value) => {
if (value) {
document.documentElement.style.setProperty(`--${property}`, value);
const input = document.querySelector(`#${property}`);
if (input) {
value = value.replace('px', '');
input.value = value;
}
}
};
const setValueFromLocalStorage = property => {
let value = localStorage.getItem(property);
setValue(property, value);
};
const setTheme = options => {
for (let option of Object.keys(options)) {
const property = option;
const value = options[option];
setValue(property, value);
localStorage.setItem(property, value);
}
}
document.addEventListener('DOMContentLoaded', () => {
setValueFromLocalStorage('color-background');
setValueFromLocalStorage('color-text-pri');
setValueFromLocalStorage('color-text-acc');
});
const dataThemeButtons = document.querySelectorAll('[data-theme]');
for (let i = 0; i < dataThemeButtons.length; i++) {
dataThemeButtons[i].addEventListener('click', () => {
const theme = dataThemeButtons[i].dataset.theme;
switch (theme) {
case 'blackboard':
setTheme({
'color-background': '#1a1a1a',
'color-text-pri': '#FFFDEA',
'color-text-acc': '#5c5c5c'
});
return;
case 'gazette':
setTheme({
'color-background': '#F2F7FF',
'color-text-pri': '#000000',
'color-text-acc': '#5c5c5c'
});
return;
case 'espresso':
setTheme({
'color-background': '#21211F',
'color-text-pri': '#D1B59A',
'color-text-acc': '#4E4E4E'
});
return;
case 'cab':
setTheme({
'color-background': '#F6D305',
'color-text-pri': '#1F1F1F',
'color-text-acc': '#424242'
});
return;
case 'cloud':
setTheme({
'color-background': '#f1f2f0',
'color-text-pri': '#35342f',
'color-text-acc': '#37bbe4'
});
return;
case 'lime':
setTheme({
'color-background': '#263238',
'color-text-pri': '#AABBC3',
'color-text-acc': '#aeea00'
});
return;
case 'white':
setTheme({
'color-background': '#ffffff',
'color-text-pri': '#222222',
'color-text-acc': '#dddddd'
});
return;
case 'tron':
setTheme({
'color-background': '#242B33',
'color-text-pri': '#EFFBFF',
'color-text-acc': '#6EE2FF'
});
return;
case 'blues':
setTheme({
'color-background': '#2B2C56',
'color-text-pri': '#EFF1FC',
'color-text-acc': '#6677EB'
});
return;
case 'passion':
setTheme({
'color-background': '#f5f5f5',
'color-text-pri': '#12005e',
'color-text-acc': '#8e24aa'
});
return;
case 'chalk':
setTheme({
'color-background': '#263238',
'color-text-pri': '#AABBC3',
'color-text-acc': '#FF869A'
});
return;
case 'paper':
setTheme({
'color-background': '#F8F6F1',
'color-text-pri': '#4C432E',
'color-text-acc': '#AA9A73'
});
return;
}
})
}