From fc54cc9cb64ba1eff1df7e8cdbbd7a7962a95ab3 Mon Sep 17 00:00:00 2001 From: yvling Date: Wed, 25 Dec 2024 00:08:50 +0800 Subject: [PATCH] new: Added dark and light theme switching --- config/mInfo.go | 1 - internal/mApp/mHandler.go | 8 -- templates/default/assets/css/global.css | 50 ++++++++++--- .../default/assets/css/lib/xcode-light.css | 69 ++++++++++++++++++ .../default/assets/img/logo-dark-theme.png | Bin 0 -> 8629 bytes .../default/assets/img/logo-light-theme.png | Bin 0 -> 8641 bytes templates/default/assets/js/global.js | 57 +++++++++++++++ templates/default/html/about.html | 8 +- templates/default/html/archive.html | 8 +- templates/default/html/category.html | 8 +- templates/default/html/friend.html | 8 +- templates/default/html/index.html | 11 ++- templates/default/html/post.html | 8 +- templates/default/html/search.html | 8 +- templates/default/html/tag.html | 8 +- 15 files changed, 225 insertions(+), 27 deletions(-) create mode 100644 templates/default/assets/css/lib/xcode-light.css create mode 100644 templates/default/assets/img/logo-dark-theme.png create mode 100644 templates/default/assets/img/logo-light-theme.png create mode 100644 templates/default/assets/js/global.js diff --git a/config/mInfo.go b/config/mInfo.go index 5f7a7c8..bdf3a9f 100644 --- a/config/mInfo.go +++ b/config/mInfo.go @@ -1,7 +1,6 @@ package config type mInfo struct { - Logo string `yaml:"logo"` Link string `yaml:"link"` Title string `yaml:"title"` Author string `yaml:"author"` diff --git a/internal/mApp/mHandler.go b/internal/mApp/mHandler.go index d7224cc..87c1f20 100644 --- a/internal/mApp/mHandler.go +++ b/internal/mApp/mHandler.go @@ -39,7 +39,6 @@ func (ma *MApp) IndexHandler(ctx *gin.Context) { // return some basic information resData := gin.H{ "site_info": gin.H{ - "logo": ma.Config.MSite.Info.Logo, "title": ma.Config.MSite.Info.Title, "author": ma.Config.MSite.Info.Author, "language": ma.Config.MSite.Info.Language, @@ -115,7 +114,6 @@ func (ma *MApp) PostHandler(ctx *gin.Context) { resData := gin.H{ "site_info": gin.H{ - "logo": ma.Config.MSite.Info.Logo, "title": ma.Config.MSite.Info.Title, "author": ma.Config.MSite.Info.Author, "language": ma.Config.MSite.Info.Language, @@ -202,7 +200,6 @@ func (ma *MApp) TagHandler(ctx *gin.Context) { tagListJson, _ := json.Marshal(tagList) resData := gin.H{ "site_info": gin.H{ - "logo": ma.Config.MSite.Info.Logo, "title": ma.Config.MSite.Info.Title, "author": ma.Config.MSite.Info.Author, "language": ma.Config.MSite.Info.Language, @@ -291,7 +288,6 @@ func (ma *MApp) CategoryHandler(ctx *gin.Context) { resData := gin.H{ "site_info": gin.H{ - "logo": ma.Config.MSite.Info.Logo, "title": ma.Config.MSite.Info.Title, "author": ma.Config.MSite.Info.Author, "language": ma.Config.MSite.Info.Language, @@ -382,7 +378,6 @@ func (ma *MApp) ArchiveHandler(ctx *gin.Context) { resData := gin.H{ "site_info": gin.H{ - "logo": ma.Config.MSite.Info.Logo, "title": ma.Config.MSite.Info.Title, "author": ma.Config.MSite.Info.Author, "language": ma.Config.MSite.Info.Language, @@ -472,7 +467,6 @@ func (ma *MApp) SearchHandler(ctx *gin.Context) { resData := gin.H{ "site_info": gin.H{ - "logo": ma.Config.MSite.Info.Logo, "title": ma.Config.MSite.Info.Title, "author": ma.Config.MSite.Info.Author, "language": ma.Config.MSite.Info.Language, @@ -562,7 +556,6 @@ func (ma *MApp) AboutHandler(ctx *gin.Context) { // return some basic information resData := gin.H{ "site_info": gin.H{ - "logo": ma.Config.MSite.Info.Logo, "title": ma.Config.MSite.Info.Title, "author": ma.Config.MSite.Info.Author, "language": ma.Config.MSite.Info.Language, @@ -605,7 +598,6 @@ func (ma *MApp) RSSHandler(ctx *gin.Context) { func (ma *MApp) FriendHandler(ctx *gin.Context) { resData := gin.H{ "site_info": gin.H{ - "logo": ma.Config.MSite.Info.Logo, "title": ma.Config.MSite.Info.Title, "author": ma.Config.MSite.Info.Author, "language": ma.Config.MSite.Info.Language, diff --git a/templates/default/assets/css/global.css b/templates/default/assets/css/global.css index 32959de..8d02bf2 100644 --- a/templates/default/assets/css/global.css +++ b/templates/default/assets/css/global.css @@ -1,12 +1,30 @@ :root{ - /* colors */ - --primary-color: #8589e0; - --secondary-color: #b2cbd3; + /* dark mode */ + --dark-primary-color: #c5c6ff; + --dark-secondary-color: #898cc8; - --primary-text-color: #c9cacc; - --secondary-text-color: #9c9c9c; + --dark-primary-text-color: #e4e1e9; + --dark-secondary-text-color: #a3a2ac; - --background-color: #191c1d; + --dark-background-color: #131318; + + /* light mode */ + --light-primary-color: #6d6faa; + --light-secondary-color: #737388; + + --light-primary-text-color: #303036; + --light-secondary-text-color: #5f5e67; + + --light-background-color: #fbf8ff; + + /* used color */ + --primary-color: #0; + --secondary-color: #0; + + --primary-text-color: #0; + --secondary-text-color: #0; + + --background-color: #0; } @font-face { @@ -126,7 +144,7 @@ a:hover { height: 30px; line-height: 30px; display: inline; - border: none; + border: 1px var(--secondary-color) solid; border-radius: 4px; } @@ -134,11 +152,25 @@ a:hover { width: 30px; height: 30px; display: inline; - border: none; border-radius: 4px; - background: var(--secondary-color); + border: 1px var(--secondary-color) solid; } .search-button:hover { background: var(--primary-color); } + +.theme-wrap { + width: 36px; + height: 36px; + position: fixed; + right: 30px; + bottom: 50px; + color: var(--secondary-color); + z-index: 999; +} + +.theme-wrap:hover { + color: var(--primary-color); + cursor: pointer; +} \ No newline at end of file diff --git a/templates/default/assets/css/lib/xcode-light.css b/templates/default/assets/css/lib/xcode-light.css new file mode 100644 index 0000000..e8fcae4 --- /dev/null +++ b/templates/default/assets/css/lib/xcode-light.css @@ -0,0 +1,69 @@ +/* Background */ .highlight-bg { background-color: #ffffff } +/* PreWrapper */ .highlight-chroma { background-color: #ffffff; } +/* Error */ .highlight-chroma .highlight-err { color: #000000 } +/* LineTableTD */ .highlight-chroma .highlight-lntd { vertical-align: top; padding: 0; margin: 0; border: 0; } +/* LineTable */ .highlight-chroma .highlight-lntable { border-spacing: 0; padding: 0; margin: 0; border: 0; } +/* LineHighlight */ .highlight-chroma .highlight-hl { background-color: #e5e5e5 } +/* LineNumbersTable */ .highlight-chroma .highlight-lnt { white-space: pre; user-select: none; margin-right: 0.4em; padding: 0 0.4em 0 0.4em;color: #7f7f7f } +/* LineNumbers */ .highlight-chroma .highlight-ln { white-space: pre; user-select: none; margin-right: 0.4em; padding: 0 0.4em 0 0.4em;color: #7f7f7f } +/* Line */ .highlight-chroma .highlight-line { display: flex; } +/* Keyword */ .highlight-chroma .highlight-k { color: #a90d91 } +/* KeywordConstant */ .highlight-chroma .highlight-kc { color: #a90d91 } +/* KeywordDeclaration */ .highlight-chroma .highlight-kd { color: #a90d91 } +/* KeywordNamespace */ .highlight-chroma .highlight-kn { color: #a90d91 } +/* KeywordPseudo */ .highlight-chroma .highlight-kp { color: #a90d91 } +/* KeywordReserved */ .highlight-chroma .highlight-kr { color: #a90d91 } +/* KeywordType */ .highlight-chroma .highlight-kt { color: #a90d91 } +/* Name */ .highlight-chroma .highlight-n { color: #000000 } +/* NameAttribute */ .highlight-chroma .highlight-na { color: #836c28 } +/* NameBuiltin */ .highlight-chroma .highlight-nb { color: #a90d91 } +/* NameBuiltinPseudo */ .highlight-chroma .highlight-bp { color: #5b269a } +/* NameClass */ .highlight-chroma .highlight-nc { color: #3f6e75 } +/* NameConstant */ .highlight-chroma .highlight-no { color: #000000 } +/* NameDecorator */ .highlight-chroma .highlight-nd { color: #000000 } +/* NameEntity */ .highlight-chroma .highlight-ni { color: #000000 } +/* NameException */ .highlight-chroma .highlight-ne { color: #000000 } +/* NameFunction */ .highlight-chroma .highlight-nf { color: #000000 } +/* NameFunctionMagic */ .highlight-chroma .highlight-fm { color: #000000 } +/* NameLabel */ .highlight-chroma .highlight-nl { color: #000000 } +/* NameNamespace */ .highlight-chroma .highlight-nn { color: #000000 } +/* NameOther */ .highlight-chroma .highlight-nx { color: #000000 } +/* NameProperty */ .highlight-chroma .highlight-py { color: #000000 } +/* NameTag */ .highlight-chroma .highlight-nt { color: #000000 } +/* NameVariable */ .highlight-chroma .highlight-nv { color: #000000 } +/* NameVariableClass */ .highlight-chroma .highlight-vc { color: #000000 } +/* NameVariableGlobal */ .highlight-chroma .highlight-vg { color: #000000 } +/* NameVariableInstance */ .highlight-chroma .highlight-vi { color: #000000 } +/* NameVariableMagic */ .highlight-chroma .highlight-vm { color: #000000 } +/* Literal */ .highlight-chroma .highlight-l { color: #1c01ce } +/* LiteralDate */ .highlight-chroma .highlight-ld { color: #1c01ce } +/* LiteralString */ .highlight-chroma .highlight-s { color: #c41a16 } +/* LiteralStringAffix */ .highlight-chroma .highlight-sa { color: #c41a16 } +/* LiteralStringBacktick */ .highlight-chroma .highlight-sb { color: #c41a16 } +/* LiteralStringChar */ .highlight-chroma .highlight-sc { color: #2300ce } +/* LiteralStringDelimiter */ .highlight-chroma .highlight-dl { color: #c41a16 } +/* LiteralStringDoc */ .highlight-chroma .highlight-sd { color: #c41a16 } +/* LiteralStringDouble */ .highlight-chroma .highlight-s2 { color: #c41a16 } +/* LiteralStringEscape */ .highlight-chroma .highlight-se { color: #c41a16 } +/* LiteralStringHeredoc */ .highlight-chroma .highlight-sh { color: #c41a16 } +/* LiteralStringInterpol */ .highlight-chroma .highlight-si { color: #c41a16 } +/* LiteralStringOther */ .highlight-chroma .highlight-sx { color: #c41a16 } +/* LiteralStringRegex */ .highlight-chroma .highlight-sr { color: #c41a16 } +/* LiteralStringSingle */ .highlight-chroma .highlight-s1 { color: #c41a16 } +/* LiteralStringSymbol */ .highlight-chroma .highlight-ss { color: #c41a16 } +/* LiteralNumber */ .highlight-chroma .highlight-m { color: #1c01ce } +/* LiteralNumberBin */ .highlight-chroma .highlight-mb { color: #1c01ce } +/* LiteralNumberFloat */ .highlight-chroma .highlight-mf { color: #1c01ce } +/* LiteralNumberHex */ .highlight-chroma .highlight-mh { color: #1c01ce } +/* LiteralNumberInteger */ .highlight-chroma .highlight-mi { color: #1c01ce } +/* LiteralNumberIntegerLong */ .highlight-chroma .highlight-il { color: #1c01ce } +/* LiteralNumberOct */ .highlight-chroma .highlight-mo { color: #1c01ce } +/* Operator */ .highlight-chroma .highlight-o { color: #000000 } +/* OperatorWord */ .highlight-chroma .highlight-ow { color: #000000 } +/* Comment */ .highlight-chroma .highlight-c { color: #177500 } +/* CommentHashbang */ .highlight-chroma .highlight-ch { color: #177500 } +/* CommentMultiline */ .highlight-chroma .highlight-cm { color: #177500 } +/* CommentSingle */ .highlight-chroma .highlight-c1 { color: #177500 } +/* CommentSpecial */ .highlight-chroma .highlight-cs { color: #177500 } +/* CommentPreproc */ .highlight-chroma .highlight-cp { color: #633820 } +/* CommentPreprocFile */ .highlight-chroma .highlight-cpf { color: #633820 } diff --git a/templates/default/assets/img/logo-dark-theme.png b/templates/default/assets/img/logo-dark-theme.png new file mode 100644 index 0000000000000000000000000000000000000000..cd3b25fe8dedb13c6a6623c333f35c84b954b3c6 GIT binary patch literal 8629 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�dSj6(3SBs^dbM2f_8OtwlqY#S?leHEd5YPhscbQ|7 z^?rTQO^3>K3wr`(LFLB)k~(Kq8MxzA328LI`P;=sveaROTtY>chU% zWh!tIC2(=LL|exFMGeo!>5Yq(k5A>a*;3gFbCkqsP<_GLmQ=4{tyui)tJY5Xdw5?h z#2%ht9+*={c2(Dnpr`Ibr_SUYjOJgLLnmv4gOb9>6gG&S7HJ}|)C+RUetozXD@NOZ zpYf2UXe*b{?tRhogzMMYxD~L6JF*2+@6Tzbo&EP{>dJP7y(@$rqLRldpzJDwIahl9 zL5YTXoNmqO0R$J&yX&>EbI`h&-Zw>)u%ckvpfLh4&=h@4Ky8Yny}s+;Ec0tWhyF&( z0`_9UB4v122YE$GjEatI97px)joPfA7lsjp>>T}&gF#Y9VSg%*i0N7^`>aHHODz;X zb-8jU>BNq=VngZG(`l83`sDMAms24GC1GL9P<9q;y*qEKIz_4FQnzcruI2*3%6Gn+ z3H<#6A$_-h&%9lk$%aenKOJiokd#NYEU(4xEy|_sI~~i>frS;~VDFlo;(PbBi0*7#b@u*zQ z+Amr&NM&cAkq8`lkXJm!@MqKNMiVK&L3wyOPd^X~6F;B|tkF5!IMtsPGCB8qv$9O_ zy$4FnERYl}HU4~(AG|VYlh2#6XraEwqRC_H2o24yJ$nt-*EG}Q?M9zGL#1$4iuHA@)yDxd(t|F=kMO+4iA^P)Uo+OS*3 zFWAHyJGOf%XAUh^zqkm9FD}yk`~=w1)x7Ii%;}gmsw^z4{Tdd|-rFLkj;{c9NwM)_)2_%W6xY<6Dz|;Ms;jF&T z+~nee&VH*~OvsWf0sxAM?cw3j-{jH+!?+RY*Mz>% literal 0 HcmV?d00001 diff --git a/templates/default/assets/js/global.js b/templates/default/assets/js/global.js new file mode 100644 index 0000000..11e8839 --- /dev/null +++ b/templates/default/assets/js/global.js @@ -0,0 +1,57 @@ +let theme; + +if (localStorage.getItem("theme") === null) { + theme = "dark"; +} else { + theme = localStorage.getItem("theme"); +} + +replaceCssFile(); +setTheme(); + +function changeTheme() { + if (theme === "dark") { + theme = "light"; + } else { + theme = "dark"; + } + + localStorage.setItem("theme", theme); + replaceCssFile(); + setTheme(); +} + +function setTheme() { + const root = document.documentElement; + root.style.setProperty("--primary-color", `var(--${theme}-primary-color)`); + root.style.setProperty("--secondary-color", `var(--${theme}-secondary-color)`); + + root.style.setProperty("--primary-text-color", `var(--${theme}-primary-text-color)`); + root.style.setProperty("--secondary-text-color", `var(--${theme}-secondary-text-color)`); + + root.style.setProperty("--background-color", `var(--${theme}-background-color)`); + + const logo = document.querySelector(".main-logo-img") + if (logo !== null) { + logo.style.setProperty("background-image", `url(../assets/img/logo-${theme}-theme.png)`); + } +} + +function replaceCssFile() { + let oldHref, newHref; + if (theme === "dark") { + oldHref = "xcode-light.css"; + newHref = "xcode-dark.css"; + } else { + oldHref = "xcode-dark.css"; + newHref = "xcode-light.css"; + } + + const links = document.querySelectorAll('link[rel="stylesheet"]'); + for (const link of links) { + if (link.href.includes(oldHref)) { + link.href = "../assets/css/lib/" + newHref; + break; + } + } +} \ No newline at end of file diff --git a/templates/default/html/about.html b/templates/default/html/about.html index a256726..0550dd4 100644 --- a/templates/default/html/about.html +++ b/templates/default/html/about.html @@ -5,7 +5,7 @@ {{ .site_info.title }} | {{ .about.title }} - + @@ -68,6 +68,12 @@ {{ end }} + +
+ +
+ + diff --git a/templates/default/html/archive.html b/templates/default/html/archive.html index 76bf355..78b76c5 100644 --- a/templates/default/html/archive.html +++ b/templates/default/html/archive.html @@ -5,7 +5,7 @@ {{ .site_info.title }} | {{ .history_post.title }} - + @@ -107,6 +107,12 @@ {{ .site_info.copyright }} + +
+ +
+ + diff --git a/templates/default/html/category.html b/templates/default/html/category.html index c34dfb9..e2bfe37 100644 --- a/templates/default/html/category.html +++ b/templates/default/html/category.html @@ -5,7 +5,7 @@ {{ .site_info.title }} - + @@ -98,6 +98,12 @@ {{ .site_info.copyright }} + +
+ +
+ + diff --git a/templates/default/html/friend.html b/templates/default/html/friend.html index 3ec8310..a97353b 100644 --- a/templates/default/html/friend.html +++ b/templates/default/html/friend.html @@ -5,7 +5,7 @@ {{ .site_info.title }} | {{ .friend.title }} - + @@ -74,6 +74,12 @@ {{ .site_info.copyright }} + +
+ +
+ + diff --git a/templates/default/html/post.html b/templates/default/html/post.html index b290c47..75b6292 100644 --- a/templates/default/html/post.html +++ b/templates/default/html/post.html @@ -5,7 +5,7 @@ {{ .site_info.title }} - + @@ -129,6 +129,12 @@ {{ end }} + +
+ +
+ + diff --git a/templates/default/html/search.html b/templates/default/html/search.html index 208962d..06c814f 100644 --- a/templates/default/html/search.html +++ b/templates/default/html/search.html @@ -5,7 +5,7 @@ {{ .site_info.title }} - + @@ -105,6 +105,12 @@ {{ .site_info.copyright }} + +
+ +
+ + diff --git a/templates/default/html/tag.html b/templates/default/html/tag.html index 7f14885..9200a11 100644 --- a/templates/default/html/tag.html +++ b/templates/default/html/tag.html @@ -5,7 +5,7 @@ {{ .site_info.title }} - + @@ -89,6 +89,12 @@ {{ .site_info.copyright }} + +
+ +
+ +