@@ -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