Skip to content

Commit ab763bf

Browse files
feat: add dark theme and improved mouse icons
1 parent 0ff5b68 commit ab763bf

File tree

5 files changed

+202
-56
lines changed

5 files changed

+202
-56
lines changed

public/assets/mouse-left.svg

Lines changed: 10 additions & 0 deletions
Loading

public/assets/mouse-right.svg

Lines changed: 10 additions & 0 deletions
Loading

public/index.html

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,9 @@
1919

2020
<nav class="nav">
2121
<a href="index.html" class="active">🎨 Draw first, Commit later.</a>
22+
<button id="theme-toggle" class="theme-toggle" aria-label="Toggle Dark Mode">
23+
<i class="fas fa-moon"></i>
24+
</button>
2225
</nav>
2326
</header>
2427

@@ -38,8 +41,10 @@ <h2>💠 GitHub Pattern → pattern.json</h2>
3841

3942
<p class="hint">
4043
<strong>✍🏻 Unleash Your Creativity with Every Dot:</strong><br>
41-
<b> 🖱️ Left Click → Add</b><br>
42-
<b> 🖱️ Right Click → Remove</b>
44+
<span class="instruction-line"><img src="assets/mouse-left.svg" class="mouse-icon" alt="Left Click"> <b>Left
45+
Click → Add</b> <span class="demo-cell filled"></span></span><br>
46+
<span class="instruction-line"><img src="assets/mouse-right.svg" class="mouse-icon" alt="Right Click"> <b>Right
47+
Click → Remove</b> <span class="demo-cell empty"></span></span>
4348
</p>
4449

4550
<!-- Month labels -->

public/script.js

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,3 +55,38 @@ document.getElementById("download").onclick = () => {
5555
a.download = "pattern.json";
5656
a.click();
5757
};
58+
/* ================= THEME TOGGLE ================= */
59+
const toggleBtn = document.getElementById("theme-toggle");
60+
const toggleIcon = toggleBtn.querySelector("i");
61+
const rootElement = document.documentElement;
62+
63+
// Function to set theme
64+
function setTheme(theme) {
65+
if (theme === "dark") {
66+
rootElement.setAttribute("data-theme", "dark");
67+
toggleIcon.classList.remove("fa-moon");
68+
toggleIcon.classList.add("fa-sun");
69+
localStorage.setItem("theme", "dark");
70+
} else {
71+
rootElement.removeAttribute("data-theme");
72+
toggleIcon.classList.remove("fa-sun");
73+
toggleIcon.classList.add("fa-moon");
74+
localStorage.setItem("theme", "light");
75+
}
76+
}
77+
78+
// Check local storage on load
79+
const savedTheme = localStorage.getItem("theme");
80+
if (savedTheme) {
81+
setTheme(savedTheme);
82+
} else if (window.matchMedia && window.matchMedia("(prefers-color-scheme: dark)").matches) {
83+
// Optional: Auto-detect system preference if no saved preference
84+
setTheme("dark");
85+
}
86+
87+
// Toggle event
88+
toggleBtn.onclick = () => {
89+
const currentTheme = rootElement.getAttribute("data-theme");
90+
const newTheme = currentTheme === "dark" ? "light" : "dark";
91+
setTheme(newTheme);
92+
};

0 commit comments

Comments
 (0)