Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/wangchucheng/hugo-eureka.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWang Chucheng <ccwangchn@gmail.com>2020-11-18 19:08:23 +0300
committerWang Chucheng <ccwangchn@gmail.com>2020-11-18 19:08:23 +0300
commit1fc544b7cd8c578f4fc9daf810e42761b7a1e8c5 (patch)
tree26e2ea5b99d7f31ea62955a6e55e9dc1f59a9700
parent96741f4b4da8079b96e9c7d342b0b03235f4654b (diff)
feat: customize default color scheme
-rw-r--r--assets/js/eureka.js13
-rw-r--r--exampleSite/config/_default/params.toml3
-rw-r--r--layouts/_default/baseof.html2
-rw-r--r--layouts/partials/header.html66
4 files changed, 68 insertions, 16 deletions
diff --git a/assets/js/eureka.js b/assets/js/eureka.js
index 923756f..bcc3d14 100644
--- a/assets/js/eureka.js
+++ b/assets/js/eureka.js
@@ -120,19 +120,6 @@ function getcolorscheme() {
let targets = targetDiv.getElementsByTagName('span');
let screen = document.getElementById('is-open');
- if (storageColorScheme == null || storageColorScheme == 'Auto') {
- switchMode('Auto')
- }
- if (storageColorScheme == 'Light') {
- element.firstElementChild.setAttribute("data-icon", 'sun')
- element.firstElementChild.classList.remove('fa-adjust')
- element.firstElementChild.classList.add('fa-sun')
- } else if (storageColorScheme == 'Dark') {
- element.firstElementChild.setAttribute("data-icon", 'moon')
- element.firstElementChild.classList.remove('fa-adjust')
- element.firstElementChild.classList.add('fa-moon')
- }
-
element.addEventListener('click', () => {
targetDiv.classList.toggle('hidden')
screen.classList.toggle('hidden')
diff --git a/exampleSite/config/_default/params.toml b/exampleSite/config/_default/params.toml
index 098fb47..93543cb 100644
--- a/exampleSite/config/_default/params.toml
+++ b/exampleSite/config/_default/params.toml
@@ -7,6 +7,9 @@ repoEditURL = ""
dateFormat = ""
+# Options: auto, light and dark. Default is auto.
+colorScheme = ""
+
# E.g. Person, Organization, LocalBusiness, Project, EducationalOrganization
siteType = "Person"
icon = "images/icon.png"
diff --git a/layouts/_default/baseof.html b/layouts/_default/baseof.html
index b9b31f9..003c52f 100644
--- a/layouts/_default/baseof.html
+++ b/layouts/_default/baseof.html
@@ -1,5 +1,5 @@
<!DOCTYPE html>
-<html lang='{{ .Site.LanguageCode }}'>
+<html lang='{{ .Site.LanguageCode }}' {{ if eq .Site.Params.colorScheme "dark" }}class="dark"{{ end }}>
{{- partial "head.html" . -}}
<body class="flex flex-col min-h-screen">
diff --git a/layouts/partials/header.html b/layouts/partials/header.html
index 84003c8..6183e16 100644
--- a/layouts/partials/header.html
+++ b/layouts/partials/header.html
@@ -1,11 +1,24 @@
<script>
let storageColorScheme = localStorage.getItem("lightDarkMode")
- if (((storageColorScheme == 'Auto' || storageColorScheme == null) && window.matchMedia("(prefers-color-scheme: dark)").matches)
- || storageColorScheme == "Dark") {
+ {{ if eq .Site.Params.colorScheme "light" }}
+ if (storageColorScheme == 'Auto' && window.matchMedia("(prefers-color-scheme: dark)").matches) {
document.getElementsByTagName('html')[0].classList.add('dark')
+ } else if (storageColorScheme == "Dark") {
+ document.getElementsByTagName('html')[0].classList.add('dark')
+ }
+ {{ else if eq .Site.Params.colorScheme "dark" }}
+ if (storageColorScheme == 'Auto' && window.matchMedia("(prefers-color-scheme: light)").matches) {
+ document.getElementsByTagName('html')[0].classList.remove('dark')
} else if (storageColorScheme == "Light") {
document.getElementsByTagName('html')[0].classList.remove('dark')
}
+ {{ else }}
+ if ((storageColorScheme == 'Auto' || storageColorScheme == null) && window.matchMedia("(prefers-color-scheme: dark)").matches) {
+ document.getElementsByTagName('html')[0].classList.add('dark')
+ } else if (storageColorScheme == "Dark") {
+ document.getElementsByTagName('html')[0].classList.add('dark')
+ }
+ {{ end }}
</script>
<nav class="flex items-center justify-between flex-wrap p-4">
<a href="{{ "/" | relLangURL }}" class="mr-6 text-primary-text text-xl font-bold">{{ .Site.Title }}</a>
@@ -26,7 +39,13 @@
<div class="flex">
<div class="relative pt-4 md:pt-0">
<div class="cursor-pointer hover:text-eureka" id="lightDarkMode">
+ {{ if eq .Site.Params.colorScheme "dark" }}
+ <i class="fas fa-moon"></i>
+ {{ else if eq .Site.Params.colorScheme "light" }}
+ <i class="fas fa-sun"></i>
+ {{ else }}
<i class="fas fa-adjust"></i>
+ {{ end }}
</div>
<div class="fixed hidden inset-0 opacity-0 h-full w-full cursor-default z-30" id="is-open">
</div>
@@ -63,6 +82,49 @@
</nav>
<script>
+ let element = document.getElementById('lightDarkMode')
+ {{ if eq .Site.Params.colorScheme "light" }}
+ if (storageColorScheme == 'Auto') {
+ element.firstElementChild.classList.remove('fa-sun')
+ element.firstElementChild.setAttribute("data-icon", 'adjust')
+ element.firstElementChild.classList.add('fa-adjust')
+ document.addEventListener('DOMContentLoaded', () => {
+ switchMode('Auto')
+ })
+ } else if (storageColorScheme == "Dark") {
+ element.firstElementChild.classList.remove('fa-sun')
+ element.firstElementChild.setAttribute("data-icon", 'moon')
+ element.firstElementChild.classList.add('fa-moon')
+ }
+ {{ else if eq .Site.Params.colorScheme "dark" }}
+ if (storageColorScheme == 'Auto') {
+ element.firstElementChild.classList.remove('fa-moon')
+ element.firstElementChild.setAttribute("data-icon", 'adjust')
+ element.firstElementChild.classList.add('fa-adjust')
+ document.addEventListener('DOMContentLoaded', () => {
+ switchMode('Auto')
+ })
+ } else if (storageColorScheme == "Light") {
+ element.firstElementChild.classList.remove('fa-moon')
+ element.firstElementChild.setAttribute("data-icon", 'sun')
+ element.firstElementChild.classList.add('fa-sun')
+ }
+ {{ else }}
+ if (storageColorScheme == null || storageColorScheme == 'Auto') {
+ document.addEventListener('DOMContentLoaded', () => {
+ switchMode('Auto')
+ })
+ } else if (storageColorScheme == "Light") {
+ element.firstElementChild.classList.remove('fa-adjust')
+ element.firstElementChild.setAttribute("data-icon", 'sun')
+ element.firstElementChild.classList.add('fa-sun')
+ } else if (storageColorScheme == "Dark") {
+ element.firstElementChild.classList.remove('fa-adjust')
+ element.firstElementChild.setAttribute("data-icon", 'moon')
+ element.firstElementChild.classList.add('fa-moon')
+ }
+ {{ end }}
+
document.addEventListener('DOMContentLoaded', () => {
getcolorscheme();
switchBurger();