1
0

coder.js 1.3 KB

1234567891011121314151617181920212223242526272829303132333435
  1. const body = document.body;
  2. const darkModeToggle = document.getElementById('dark-mode-toggle');
  3. const darkModeMediaQuery = window.matchMedia('(prefers-color-scheme: dark)');
  4. // Check if user preference is set, if not check value of body class for light or dark else it means that colorscheme = auto
  5. if (localStorage.getItem("colorscheme")) {
  6. setTheme(localStorage.getItem("colorscheme"));
  7. } else if (body.classList.contains('colorscheme-light') || body.classList.contains('colorscheme-dark')) {
  8. setTheme(body.classList.contains("colorscheme-dark") ? "dark" : "light");
  9. } else {
  10. setTheme(darkModeMediaQuery.matches ? "dark" : "light");
  11. }
  12. if (darkModeToggle) {
  13. darkModeToggle.addEventListener('click', () => {
  14. setTheme(body.classList.contains("colorscheme-dark") ? "light" : "dark");
  15. });
  16. }
  17. darkModeMediaQuery.addListener((event) => {
  18. setTheme(event.matches ? "dark" : "light");
  19. });
  20. document.addEventListener("DOMContentLoaded", function () {
  21. let node = document.querySelector('.preload-transitions');
  22. node.classList.remove('preload-transitions');
  23. });
  24. function setTheme(theme) {
  25. body.classList.remove('colorscheme-auto');
  26. const inverse = theme === 'dark' ? 'light' : 'dark';
  27. localStorage.setItem('colorscheme', theme);
  28. body.classList.remove('colorscheme-' + inverse);
  29. body.classList.add('colorscheme-' + theme);
  30. }