comparison mrjunejune/pages/index.js @ 80:d55157451947

[MrJuneJune] Updating my homepage.
author June Park <parkjune1995@gmail.com>
date Thu, 01 Jan 2026 08:23:46 -0800
parents 35b1abc37969
children 1ded13720541
comparison
equal deleted inserted replaced
79:5710108c949e 80:d55157451947
12 function applyTheme(preference) 12 function applyTheme(preference)
13 { 13 {
14 const root = document.documentElement; 14 const root = document.documentElement;
15 15
16 if (preference === 'light') { 16 if (preference === 'light') {
17 root.classList.remove('dark', 'auto');
17 root.classList.add('light-mode'); 18 root.classList.add('light-mode');
18 root.classList.remove('dark');
19 } else if (preference === 'dark') { 19 } else if (preference === 'dark') {
20 root.classList.remove('light-mode'); 20 root.classList.remove('light-mode', 'auto');
21 root.classList.add('dark'); 21 root.classList.add('dark');
22 } else { 22 } else {
23 // Auto - remove manual overrides and let CSS media query handle it 23 // Auto - remove manual overrides and let CSS media query handle it
24 root.classList.remove('light-mode', 'dark'); 24 root.classList.remove('light-mode', 'dark');
25 root.classList.add('auto');
25 } 26 }
26 } 27 }
27
28 function populateHeader()
29 {
30 fetch("/parts/headers.html")
31 .then(res => res.text())
32 .then(headerHTML => {
33 const range = document.createRange();
34 const fragment = range.createContextualFragment(headerHTML);
35 header.appendChild(fragment);
36
37 const toggle = document.querySelector('#themeToggle');
38 if (!toggle) return;
39
40 toggle.addEventListener('click', function() {
41 let preference = getThemePreference();
42
43 // Cycle through: auto -> light -> dark -> auto
44 if (preference === 'auto') {
45 preference = 'light';
46 } else if (preference === 'light') {
47 preference = 'dark';
48 } else {
49 preference = 'auto';
50 }
51
52 localStorage.setItem(STORAGE_KEY, preference);
53 applyTheme(preference);
54 });
55 });
56 }
57 populateHeader();
58 28
59 (function() { 29 (function() {
60 const currentPreference = getThemePreference(); 30 const currentPreference = getThemePreference();
61 applyTheme(currentPreference); 31 applyTheme(currentPreference);
62 })(); 32 })();
33
34 /* Toggle lights auto and dark */
35 const toggle = document.querySelector('#themeToggle');
36 toggle.addEventListener('click', function() {
37 let preference = getThemePreference();
38
39 // Cycle through: auto -> light -> dark -> auto
40 if (preference === 'auto') {
41 preference = 'light';
42 } else if (preference === 'light') {
43 preference = 'dark';
44 } else {
45 preference = 'auto';
46 }
47
48 localStorage.setItem(STORAGE_KEY, preference);
49 applyTheme(preference);
50 });