theme-switch-button: init feature (#15)
* thanks to https://feathericons.com for svgs * can be disabled in site config Params: disableThemeToggle : true
This commit is contained in:
		
							parent
							
								
									af19236002
								
							
						
					
					
						commit
						6a9e9e129a
					
				|  | @ -16,6 +16,7 @@ | ||||||
| 
 | 
 | ||||||
| .logo, | .logo, | ||||||
| .menu { | .menu { | ||||||
|  |     display: flex; | ||||||
|     margin: auto var(--gap); |     margin: auto var(--gap); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | @ -24,8 +25,21 @@ | ||||||
|     font-weight: 700; |     font-weight: 700; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | .theme-toggle svg{ | ||||||
|  |     height: 18px; | ||||||
|  |     margin: 0 10px; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | body.dark #moon{ | ||||||
|  |     vertical-align: middle; | ||||||
|  |     display: none; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | body:not(.dark) #sun { | ||||||
|  |     display: none; | ||||||
|  | } | ||||||
|  | 
 | ||||||
| .menu { | .menu { | ||||||
|     display: flex; |  | ||||||
|     list-style: none; |     list-style: none; | ||||||
|     word-break: keep-all; |     word-break: keep-all; | ||||||
|     overflow-x: auto; |     overflow-x: auto; | ||||||
|  |  | ||||||
|  | @ -45,3 +45,21 @@ | ||||||
|         localStorage.setItem("menu-scroll-position", document.getElementById('menu').scrollLeft); |         localStorage.setItem("menu-scroll-position", document.getElementById('menu').scrollLeft); | ||||||
|     } |     } | ||||||
| </script> | </script> | ||||||
|  | {{- if not .Site.Params.disableThemeToggle }} | ||||||
|  | <script> | ||||||
|  |     document.getElementById("theme-toggle").addEventListener("click", () => { | ||||||
|  |         if (document.body.className.includes("dark")) { | ||||||
|  |             document.body.classList.remove('dark'); | ||||||
|  |             localStorage.setItem("pref-theme", 'light'); | ||||||
|  |         } else { | ||||||
|  |             document.body.classList.add('dark'); | ||||||
|  |             localStorage.setItem("pref-theme", 'dark'); | ||||||
|  |         } | ||||||
|  |     }) | ||||||
|  | </script> | ||||||
|  | {{- else -}} | ||||||
|  | <!-- case where owner disables theme button after deployment, this resets the stored theme --> | ||||||
|  | <script> | ||||||
|  |     localStorage.removeItem("pref-theme"); | ||||||
|  | </script> | ||||||
|  | {{- end }} | ||||||
|  | @ -1,14 +1,46 @@ | ||||||
| {{- if eq .Site.Params.defaultTheme "auto" }} | {{- if eq .Site.Params.defaultTheme "auto" }} | ||||||
| <script> | <script> | ||||||
|  |     // load memory | ||||||
|  |     if (localStorage.getItem("pref-theme") === "dark") { | ||||||
|  |         document.body.classList.add('dark'); | ||||||
|  |     } else if (localStorage.getItem("pref-theme") === "light") { | ||||||
|  |         document.body.classList.remove('dark') | ||||||
|  |     } else { | ||||||
|         if (window.matchMedia('(prefers-color-scheme: dark)').matches) { |         if (window.matchMedia('(prefers-color-scheme: dark)').matches) { | ||||||
|             document.body.classList.add('dark'); |             document.body.classList.add('dark'); | ||||||
|         } |         } | ||||||
|  |     } | ||||||
| </script> | </script> | ||||||
| {{- end }} | {{- end }} | ||||||
| <header class="header"> | <header class="header"> | ||||||
|     <nav class="nav"> |     <nav class="nav"> | ||||||
|         <p class="logo"><a href="{{ "" | absLangURL }}">{{ .Site.Title }}</a></p> |         <p class="logo"> | ||||||
| 
 |             <a href="{{ "" | absLangURL }}">{{ .Site.Title }}</a> | ||||||
|  |             {{- if not .Site.Params.disableThemeToggle }} | ||||||
|  |             <span class="theme-toggle"> | ||||||
|  |                 <a id="theme-toggle"> | ||||||
|  |                     <svg id="moon" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" | ||||||
|  |                         fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" | ||||||
|  |                         stroke-linejoin="round"> | ||||||
|  |                         <path d="M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z"></path> | ||||||
|  |                     </svg> | ||||||
|  |                     <svg id="sun" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" | ||||||
|  |                         fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" | ||||||
|  |                         stroke-linejoin="round"> | ||||||
|  |                         <circle cx="12" cy="12" r="5"></circle> | ||||||
|  |                         <line x1="12" y1="1" x2="12" y2="3"></line> | ||||||
|  |                         <line x1="12" y1="21" x2="12" y2="23"></line> | ||||||
|  |                         <line x1="4.22" y1="4.22" x2="5.64" y2="5.64"></line> | ||||||
|  |                         <line x1="18.36" y1="18.36" x2="19.78" y2="19.78"></line> | ||||||
|  |                         <line x1="1" y1="12" x2="3" y2="12"></line> | ||||||
|  |                         <line x1="21" y1="12" x2="23" y2="12"></line> | ||||||
|  |                         <line x1="4.22" y1="19.78" x2="5.64" y2="18.36"></line> | ||||||
|  |                         <line x1="18.36" y1="5.64" x2="19.78" y2="4.22"></line> | ||||||
|  |                     </svg> | ||||||
|  |                 </a> | ||||||
|  |             </span> | ||||||
|  |             {{- end}} | ||||||
|  |         </p> | ||||||
|         {{- $currentPage := . }} |         {{- $currentPage := . }} | ||||||
|         <ul class="menu" id="menu" onscroll="menu_on_scroll()"> |         <ul class="menu" id="menu" onscroll="menu_on_scroll()"> | ||||||
|             {{- range .Site.Menus.main }} |             {{- range .Site.Menus.main }} | ||||||
|  |  | ||||||
		Loading…
	
		Reference in a new issue
	
	 Aditya Telange
						Aditya Telange