From c3f31f91d62c200c01d5c3fbd15de2ff241c3783 Mon Sep 17 00:00:00 2001 From: neveler <55753029+neveler@users.noreply.github.com> Date: Thu, 12 Mar 2026 14:00:54 +0800 Subject: [PATCH 1/9] =?UTF-8?q?=E4=BC=98=E5=8C=96=E8=AE=BE=E7=BD=AE?= =?UTF-8?q?=E9=A1=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- _data/settings.yaml | 24 +++------ _layouts/default.html | 2 +- _layouts/settings.html | 92 ++++++++++++++++++++------------ _sass/minimal-mistakes-plus.scss | 14 ++--- assets/js/settings.js | 65 +++++++++++++++------- assets/js/theme.js | 11 ++-- settings.yaml | 21 ++------ 7 files changed, 129 insertions(+), 100 deletions(-) diff --git a/_data/settings.yaml b/_data/settings.yaml index e91dd2cd..803899fb 100644 --- a/_data/settings.yaml +++ b/_data/settings.yaml @@ -5,23 +5,13 @@ appearance_color: - light - dark - auto -appearance_skin_light: - type: radio - default: default - options: - - default - - air - - aqua - - contrast - - dark - - dirt - - neon - - mint - - plum - - sunrise -appearance_skin_dark: - type: radio - default: dark +appearance_skin: + type: multi-radio + children: + light: + default: default + dark: + default: dark options: - default - air diff --git a/_layouts/default.html b/_layouts/default.html index e691d2a6..f820331a 100644 --- a/_layouts/default.html +++ b/_layouts/default.html @@ -12,7 +12,7 @@ {% if site.preview and site.preview.pr-number %} -
当前站点为预览构建而非官方文档。如需反馈问题,请前往 #{{ site.preview.pr-number }} 留言。
+
当前站点为预览构建而非官方文档。如需反馈问题,请前往 #{{ site.preview.pr-number }} 留言。
{% endif %} {% include_cached skip-links.html %} diff --git a/_layouts/settings.html b/_layouts/settings.html index af675a0c..1e86a0dc 100644 --- a/_layouts/settings.html +++ b/_layouts/settings.html @@ -1,46 +1,72 @@ --- -layout: document +layout: single --- -{% for group in page.data %} - -{% capture notice %} - -## {{ group.title }} - +{%- for group in page.data %} +

{{ group.title }}

{% for pair in group.settings %} {% assign name = pair[0] %} {% assign value = pair[1] %} {% assign setting = site.data.settings[name] %} - -{% if setting.type == 'radio' %}
- +

+ {{ value.title }}
+ {{ value.description }} +

+ {% if setting.type == 'radio' %} + {% for option in setting.options %} + + {% endfor %} + {% elsif setting.type == 'multi-radio' %} + + + + + {% for item in setting.children %} + {% capture item_name %}{{ item[0] }}{% endcapture %} + + {% endfor %} + + + + {% for option in setting.options %} + + + {% for item in setting.children %} + + {% endfor %} + + {% endfor %} + +
{{ value.title }}{{ value.children[item_name] }}
{{ value.options[option] }}
+ {% endif %}
+{% endfor %} +{% endfor %} -{% endif %} -{% endfor %} -{% endcapture %} -{{ notice | markdownify }} -{% endfor %} + + diff --git a/_sass/minimal-mistakes-plus.scss b/_sass/minimal-mistakes-plus.scss index 1d6d0b45..07bfdaec 100644 --- a/_sass/minimal-mistakes-plus.scss +++ b/_sass/minimal-mistakes-plus.scss @@ -11,14 +11,10 @@ blockquote { word-break: break-word; } -.notice ul:first-child { - margin-top: 0; -} - -.task-list-item label { - display: inline -} - -.m0 { +.preview { + top: 0; + z-index: 999; + padding: 0.4em; + position: sticky; margin: 0 !important; } diff --git a/assets/js/settings.js b/assets/js/settings.js index 13e6e59f..19f838d0 100644 --- a/assets/js/settings.js +++ b/assets/js/settings.js @@ -5,7 +5,7 @@ layout: null var PREFIX = "HMCL_DOCS_SETTINGS_"; var data = {}; var events = {}; - var config = /*{%comment%}*/{}/*{%endcomment%}*//**{{'/'}}{{ site.data.settings | jsonify }}/**/; + var configs = /*{%comment%}*/{}/*{%endcomment%}*//**{{'/'}}{{ site.data.settings | jsonify }}/**/; global.addEventListener("storage", function (event) { if (!event.key) return; @@ -27,15 +27,21 @@ layout: null }); var settings = { - set: function (key, value) { - if (config[key] === undefined) return; - var strKey = (PREFIX + key).toUpperCase(); + set: function (name, value) { + var keys = name.split("."); + if (keys.length === 0) return; + var item = configs[keys[0]]; + if (item === undefined) return; + for (var i = 1; i < keys.length; i++) { + if (item.children === undefined || item.children[keys[i]] === undefined) return; + item = item.children[keys[i]]; + } + var strKey = (PREFIX + name).toUpperCase(); var newValue = value + ""; data[strKey] = newValue; localStorage.setItem(strKey, newValue); var handlers = events[strKey]; if (!handlers) return; - for (var i = 0; i < handlers.length; i++) { if (typeof handlers[i] === "function") { handlers[i](newValue); @@ -43,29 +49,48 @@ layout: null } }, - get: function (key, defaultValue) { - if (config[key] === undefined) return; - var strKey = (PREFIX + key).toUpperCase(); + get: function (name) { + var keys = name.split("."); + if (keys.length === 0) return; + var item = configs[keys[0]]; + if (item === undefined) return; + for (var i = 1; i < keys.length; i++) { + if (item.children === undefined || item.children[keys[i]] === undefined) return; + item = item.children[keys[i]]; + } + var strKey = (PREFIX + name).toUpperCase(); data.hasOwnProperty(strKey) || (data[strKey] = localStorage.getItem(strKey)); - if (typeof defaultValue === "string" && data[strKey] === null) { - return defaultValue; + if (typeof item.default === "string" && data[strKey] === null) { + return item.default; } return data[strKey]; }, - refresh: function (key) { - if (config[key] === undefined) return; - settings.set(key, settings.get(key, config[key].default)); + refresh: function (name) { + var keys = name.split("."); + if (keys.length === 0) return; + var item = configs[keys[0]]; + if (item === undefined) return; + for (var i = 1; i < keys.length; i++) { + if (item.children === undefined || item.children[keys[i]] === undefined) return; + item = item.children[keys[i]]; + } + settings.set(name, settings.get(name, item.default)); }, - onChange: function (key, handler) { - if (config[key] === undefined) return; - if (typeof handler !== "function") return; - var strKey = (PREFIX + key).toUpperCase(); - if (config[key].type === "radio") { - handler(settings.get(key, config[key].default)); + onChange: function (name, handler) { + var keys = name.split("."); + if (keys.length === 0) return; + var item = configs[keys[0]]; + if (item === undefined) return; + for (var i = 1; i < keys.length; i++) { + if (item.children === undefined || item.children[keys[i]] === undefined) return; + item = item.children[keys[i]]; } - if (!events[strKey]) { + if (typeof handler !== "function") return; + var strKey = (PREFIX + name).toUpperCase(); + handler(settings.get(name, item.default)); + if (events[strKey] === undefined) { events[strKey] = [handler]; } else { events[strKey].push(handler); diff --git a/assets/js/theme.js b/assets/js/theme.js index 9a202792..9d795750 100644 --- a/assets/js/theme.js +++ b/assets/js/theme.js @@ -4,11 +4,14 @@ layout: null window.addEventListener("DOMContentLoaded", function () { var skinLink = document.getElementById("skin"); var darkModeQuery = window.matchMedia("(prefers-color-scheme: dark)"); + function applySkin(skin) { + skinLink.href = "{{ '/assets/css/skins/' | relative_url }}" + skin + ".css"; + } function applyDarkSkin() { - skinLink.href = "{{ '/assets/css/skins/' | relative_url }}" + settings.get("appearance_skin_dark", "dark") + ".css"; + applySkin(settings.get("appearance_skin.dark")); } function applyLightSkin() { - skinLink.href = "{{ '/assets/css/skins/' | relative_url }}" + settings.get("appearance_skin_light", "default") + ".css"; + applySkin(settings.get("appearance_skin.light")); } function autoSchemeHandler() { if (darkModeQuery.matches) { @@ -61,10 +64,10 @@ window.addEventListener("DOMContentLoaded", function () { } } settings.onChange("appearance_color", applyTheme); - settings.onChange("appearance_skin_dark", function () { + settings.onChange("appearance_skin.dark", function () { settings.refresh("appearance_color"); }); - settings.onChange("appearance_skin_light", function () { + settings.onChange("appearance_skin.light", function () { settings.refresh("appearance_color"); }); }); diff --git a/settings.yaml b/settings.yaml index d8d79aed..defbb3fa 100644 --- a/settings.yaml +++ b/settings.yaml @@ -12,23 +12,12 @@ data: light: 亮色 dark: 暗色 auto: 自动 - appearance_skin_light: - title: 亮色皮肤 - description: 亮色模式下应用的皮肤。 - options: - default: 默认 - air: 天空 - aqua: 水蓝 - contrast: 高对比 + appearance_skin: + title: 皮肤 + description: 各颜色模式下应用的皮肤。 + children: + light: 亮色 dark: 暗色 - dirt: 泥土 - neon: 霓虹 - mint: 薄荷 - plum: 梅紫 - sunrise: 日出 - appearance_skin_dark: - title: 暗色皮肤 - description: 暗色模式下应用的皮肤。 options: default: 默认 air: 天空 From 7fd8507fd82ea32ff47c558b1e01da51fac97f2f Mon Sep 17 00:00:00 2001 From: neveler <55753029+neveler@users.noreply.github.com> Date: Thu, 12 Mar 2026 14:39:21 +0800 Subject: [PATCH 2/9] =?UTF-8?q?=E5=85=81=E8=AE=B8=E7=A6=81=E7=94=A8?= =?UTF-8?q?=E9=A2=9C=E8=89=B2=E6=A8=A1=E5=BC=8F=E5=BF=AB=E6=8D=B7=E5=BC=80?= =?UTF-8?q?=E5=85=B3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- _data/settings.yaml | 6 ++++++ assets/js/theme.js | 5 +++++ settings.yaml | 6 ++++++ 3 files changed, 17 insertions(+) diff --git a/_data/settings.yaml b/_data/settings.yaml index 803899fb..9323459d 100644 --- a/_data/settings.yaml +++ b/_data/settings.yaml @@ -5,6 +5,12 @@ appearance_color: - light - dark - auto +appearance_color_switcher: + type: radio + default: enable + options: + - enable + - disable appearance_skin: type: multi-radio children: diff --git a/assets/js/theme.js b/assets/js/theme.js index 9d795750..ee468e88 100644 --- a/assets/js/theme.js +++ b/assets/js/theme.js @@ -70,4 +70,9 @@ window.addEventListener("DOMContentLoaded", function () { settings.onChange("appearance_skin.light", function () { settings.refresh("appearance_color"); }); + settings.onChange("appearance_color_switcher", function (value) { + if (modeSwitcher !== null) { + modeSwitcher.style.display = value === "enable" ? "" : "none"; + } + }); }); diff --git a/settings.yaml b/settings.yaml index defbb3fa..fb8dacd2 100644 --- a/settings.yaml +++ b/settings.yaml @@ -12,6 +12,12 @@ data: light: 亮色 dark: 暗色 auto: 自动 + appearance_color_switcher: + title: 颜色模式快捷开关 + description: 用于快捷切换站点主题颜色模式的开关,位于页面右上角。 + options: + enable: 启用 + disable: 禁用 appearance_skin: title: 皮肤 description: 各颜色模式下应用的皮肤。 From f5897b5d4195cf7b1733cd837bc42b688ee84de8 Mon Sep 17 00:00:00 2001 From: neveler <55753029+neveler@users.noreply.github.com> Date: Thu, 12 Mar 2026 21:29:48 +0800 Subject: [PATCH 3/9] =?UTF-8?q?=E4=BC=98=E5=8C=96=20js=20=E4=BB=A3?= =?UTF-8?q?=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- assets/js/settings.js | 134 ++++++++++++++---------------------------- 1 file changed, 44 insertions(+), 90 deletions(-) diff --git a/assets/js/settings.js b/assets/js/settings.js index 19f838d0..2f197483 100644 --- a/assets/js/settings.js +++ b/assets/js/settings.js @@ -1,101 +1,55 @@ --- layout: null --- -(function (global) { - var PREFIX = "HMCL_DOCS_SETTINGS_"; - var data = {}; - var events = {}; - var configs = /*{%comment%}*/{}/*{%endcomment%}*//**{{'/'}}{{ site.data.settings | jsonify }}/**/; - - global.addEventListener("storage", function (event) { - if (!event.key) return; - if (event.key.indexOf(PREFIX) !== 0) return; - - var handlers = events[event.key]; - if (!handlers) return; - - var newValue = event.newValue; - var oldValue = event.oldValue; - if (oldValue === newValue) return; - - data[event.key] = newValue; - for (var i = 0; i < handlers.length; i++) { - if (typeof handlers[i] === "function") { - handlers[i](newValue, oldValue); - } - } +(function () { + const PREFIX = "HMCL_DOCS_SETTINGS_", data = {}, events = {}, configCache = {}, configs = /*{%comment%}*/ {}; /*{%endcomment%}*/ /**{{'/'}}{{ site.data.settings | jsonify }}/**/ + window.addEventListener("storage", ({ key, newValue }) => { + if (key === null || !key.startsWith(PREFIX) || newValue === data[key]) return; + data[key] = newValue; + events[key]?.forEach((handler) => handler(newValue)); }); - - var settings = { - set: function (name, value) { - var keys = name.split("."); - if (keys.length === 0) return; - var item = configs[keys[0]]; - if (item === undefined) return; - for (var i = 1; i < keys.length; i++) { - if (item.children === undefined || item.children[keys[i]] === undefined) return; - item = item.children[keys[i]]; - } - var strKey = (PREFIX + name).toUpperCase(); - var newValue = value + ""; - data[strKey] = newValue; - localStorage.setItem(strKey, newValue); - var handlers = events[strKey]; - if (!handlers) return; - for (var i = 0; i < handlers.length; i++) { - if (typeof handlers[i] === "function") { - handlers[i](newValue); - } - } + const getConfig = (key) => { + if (typeof key !== "string") return undefined; + if (configCache[key] !== undefined) return configCache[key]; + const keys = key.split("."); + let item = configs[keys[0]]; + for (let i = 1; i < keys.length; i++) { + if (item.children?.[keys[i]] === undefined) return undefined; + item = item.children[keys[i]]; + } + return configCache[key] = JSON.parse(JSON.stringify({ ...configs[keys[0]], ...item })); + }; + window.settings = { + set(key, value) { + const config = getConfig(key); + if (config === undefined) return; + const name = PREFIX + key.toUpperCase().replaceAll(".", "_"); + localStorage.setItem(name, (data[name] = String(value))); + events[name]?.forEach(handler => handler(data[name])); }, - - get: function (name) { - var keys = name.split("."); - if (keys.length === 0) return; - var item = configs[keys[0]]; - if (item === undefined) return; - for (var i = 1; i < keys.length; i++) { - if (item.children === undefined || item.children[keys[i]] === undefined) return; - item = item.children[keys[i]]; - } - var strKey = (PREFIX + name).toUpperCase(); - data.hasOwnProperty(strKey) || (data[strKey] = localStorage.getItem(strKey)); - if (typeof item.default === "string" && data[strKey] === null) { - return item.default; - } - return data[strKey]; + get(key) { + const config = getConfig(key); + if (config === undefined) return null; + const name = PREFIX + key.toUpperCase().replaceAll(".", "_"); + if (data[name] === undefined) data[name] = localStorage.getItem(name); + if (typeof config.default === "string" && data[name] === null) return config.default; + return data[name]; }, - - refresh: function (name) { - var keys = name.split("."); - if (keys.length === 0) return; - var item = configs[keys[0]]; - if (item === undefined) return; - for (var i = 1; i < keys.length; i++) { - if (item.children === undefined || item.children[keys[i]] === undefined) return; - item = item.children[keys[i]]; - } - settings.set(name, settings.get(name, item.default)); + refresh(key) { + const value = settings.get(key); + if (value !== null) settings.set(key, value); }, - - onChange: function (name, handler) { - var keys = name.split("."); - if (keys.length === 0) return; - var item = configs[keys[0]]; - if (item === undefined) return; - for (var i = 1; i < keys.length; i++) { - if (item.children === undefined || item.children[keys[i]] === undefined) return; - item = item.children[keys[i]]; - } + onChange(key, handler) { if (typeof handler !== "function") return; - var strKey = (PREFIX + name).toUpperCase(); - handler(settings.get(name, item.default)); - if (events[strKey] === undefined) { - events[strKey] = [handler]; + const config = getConfig(key); + if (config === undefined) return; + const name = PREFIX + key.toUpperCase().replaceAll(".", "_"); + handler(settings.get(key)); + if (events[name] === undefined) { + events[name] = [handler]; } else { - events[strKey].push(handler); + events[name].push(handler); } - } + }, }; - global.settings = settings; -})(window); +})(); From da0ec9b66fe1fbeae5ad8090a4b48cee96f980ca Mon Sep 17 00:00:00 2001 From: neveler <55753029+neveler@users.noreply.github.com> Date: Fri, 13 Mar 2026 10:12:40 +0800 Subject: [PATCH 4/9] =?UTF-8?q?=E4=BC=98=E5=8C=96=20js?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- assets/js/settings.js | 58 ++++++++++++++----------------------------- assets/js/theme.js | 5 ++-- 2 files changed, 21 insertions(+), 42 deletions(-) diff --git a/assets/js/settings.js b/assets/js/settings.js index 2f197483..088b0c56 100644 --- a/assets/js/settings.js +++ b/assets/js/settings.js @@ -2,54 +2,32 @@ layout: null --- (function () { - const PREFIX = "HMCL_DOCS_SETTINGS_", data = {}, events = {}, configCache = {}, configs = /*{%comment%}*/ {}; /*{%endcomment%}*/ /**{{'/'}}{{ site.data.settings | jsonify }}/**/ - window.addEventListener("storage", ({ key, newValue }) => { - if (key === null || !key.startsWith(PREFIX) || newValue === data[key]) return; - data[key] = newValue; - events[key]?.forEach((handler) => handler(newValue)); - }); - const getConfig = (key) => { - if (typeof key !== "string") return undefined; - if (configCache[key] !== undefined) return configCache[key]; - const keys = key.split("."); - let item = configs[keys[0]]; - for (let i = 1; i < keys.length; i++) { - if (item.children?.[keys[i]] === undefined) return undefined; - item = item.children[keys[i]]; + const PREFIX = "HMCL_DOCS_SETTINGS_", data = {}, bus = new EventTarget(), configs = /*{%comment%}*/{}/*{%endcomment%}*/ /**{{'/'}}{{ site.data.settings | jsonify }}/**/; + window.addEventListener("storage", ({ key, newValue }) => key !== null && key.startsWith(PREFIX) && newValue !== data[key] && bus.dispatchEvent(new CustomEvent(key, { detail: (data[key] = newValue) }))); + for (const [key, config] of Object.entries(configs)) { + if (config.children === undefined) continue; + for (const [childKey, child] of Object.entries(children)) { + configs[`${key}.${childKey}`] = { ...config, ...child }; } - return configCache[key] = JSON.parse(JSON.stringify({ ...configs[keys[0]], ...item })); - }; + } + const formatKey = (key) => PREFIX + key.toUpperCase().replaceAll(".", "_"); window.settings = { set(key, value) { - const config = getConfig(key); - if (config === undefined) return; - const name = PREFIX + key.toUpperCase().replaceAll(".", "_"); + const name = formatKey(key); localStorage.setItem(name, (data[name] = String(value))); - events[name]?.forEach(handler => handler(data[name])); + bus.dispatchEvent(new CustomEvent(name, { detail: data[name] })); }, get(key) { - const config = getConfig(key); - if (config === undefined) return null; - const name = PREFIX + key.toUpperCase().replaceAll(".", "_"); - if (data[name] === undefined) data[name] = localStorage.getItem(name); - if (typeof config.default === "string" && data[name] === null) return config.default; - return data[name]; - }, - refresh(key) { - const value = settings.get(key); - if (value !== null) settings.set(key, value); + const name = formatKey(key); + if (data[name] !== undefined) return data[name]; + data[name] = localStorage.getItem(name); + if (data[name] !== null) return data[name]; + const config = configs[key]; + if (config === undefined || typeof config.default !== "string") return null; + return config.default; }, onChange(key, handler) { - if (typeof handler !== "function") return; - const config = getConfig(key); - if (config === undefined) return; - const name = PREFIX + key.toUpperCase().replaceAll(".", "_"); - handler(settings.get(key)); - if (events[name] === undefined) { - events[name] = [handler]; - } else { - events[name].push(handler); - } + bus.addEventListener(formatKey(key), (event) => handler(event.detail)); }, }; })(); diff --git a/assets/js/theme.js b/assets/js/theme.js index ee468e88..013e8a3d 100644 --- a/assets/js/theme.js +++ b/assets/js/theme.js @@ -64,11 +64,12 @@ window.addEventListener("DOMContentLoaded", function () { } } settings.onChange("appearance_color", applyTheme); + applyTheme(settings.get("appearance_color")); settings.onChange("appearance_skin.dark", function () { - settings.refresh("appearance_color"); + applyTheme(settings.get("appearance_color")); }); settings.onChange("appearance_skin.light", function () { - settings.refresh("appearance_color"); + applyTheme(settings.get("appearance_color")); }); settings.onChange("appearance_color_switcher", function (value) { if (modeSwitcher !== null) { From e45379ec26bbfa678b9bdae3d5acd10a5eb3dbbb Mon Sep 17 00:00:00 2001 From: neveler <55753029+neveler@users.noreply.github.com> Date: Fri, 13 Mar 2026 10:15:19 +0800 Subject: [PATCH 5/9] update --- assets/js/settings.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/assets/js/settings.js b/assets/js/settings.js index 088b0c56..5ad0b8d5 100644 --- a/assets/js/settings.js +++ b/assets/js/settings.js @@ -6,7 +6,7 @@ layout: null window.addEventListener("storage", ({ key, newValue }) => key !== null && key.startsWith(PREFIX) && newValue !== data[key] && bus.dispatchEvent(new CustomEvent(key, { detail: (data[key] = newValue) }))); for (const [key, config] of Object.entries(configs)) { if (config.children === undefined) continue; - for (const [childKey, child] of Object.entries(children)) { + for (const [childKey, child] of Object.entries(config.children)) { configs[`${key}.${childKey}`] = { ...config, ...child }; } } From 3a7a7a1543957990c3efb158e7f0a7ba2c4f4780 Mon Sep 17 00:00:00 2001 From: neveler <55753029+neveler@users.noreply.github.com> Date: Fri, 13 Mar 2026 10:21:16 +0800 Subject: [PATCH 6/9] update --- assets/js/settings.js | 3 +++ assets/js/theme.js | 1 - 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/assets/js/settings.js b/assets/js/settings.js index 5ad0b8d5..1d0dace0 100644 --- a/assets/js/settings.js +++ b/assets/js/settings.js @@ -27,6 +27,9 @@ layout: null return config.default; }, onChange(key, handler) { + const value = this.get(key); + if (value === null) return; + handler(value); bus.addEventListener(formatKey(key), (event) => handler(event.detail)); }, }; diff --git a/assets/js/theme.js b/assets/js/theme.js index 013e8a3d..6cece472 100644 --- a/assets/js/theme.js +++ b/assets/js/theme.js @@ -64,7 +64,6 @@ window.addEventListener("DOMContentLoaded", function () { } } settings.onChange("appearance_color", applyTheme); - applyTheme(settings.get("appearance_color")); settings.onChange("appearance_skin.dark", function () { applyTheme(settings.get("appearance_color")); }); From 9f19908613080fb20803f6d75280fd94233307bf Mon Sep 17 00:00:00 2001 From: neveler <55753029+neveler@users.noreply.github.com> Date: Fri, 13 Mar 2026 10:35:04 +0800 Subject: [PATCH 7/9] update --- _layouts/settings.html | 27 ++++++--------------------- 1 file changed, 6 insertions(+), 21 deletions(-) diff --git a/_layouts/settings.html b/_layouts/settings.html index 1e86a0dc..0279e6bf 100644 --- a/_layouts/settings.html +++ b/_layouts/settings.html @@ -16,8 +16,7 @@

{{ group.title }}

{% if setting.type == 'radio' %} {% for option in setting.options %} {% endfor %} @@ -37,8 +36,7 @@

{{ group.title }}

{{ value.options[option] }} {% for item in setting.children %} - + {% endfor %} {% endfor %} @@ -50,23 +48,10 @@

{{ group.title }}

{% endfor %} - + From 590eb1ae60cc4f45ce432792af775a14712f1606 Mon Sep 17 00:00:00 2001 From: neveler <55753029+neveler@users.noreply.github.com> Date: Sun, 15 Mar 2026 11:47:21 +0800 Subject: [PATCH 8/9] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E4=B8=80=E5=A4=84?= =?UTF-8?q?=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- assets/js/settings.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/assets/js/settings.js b/assets/js/settings.js index 1d0dace0..b4674c33 100644 --- a/assets/js/settings.js +++ b/assets/js/settings.js @@ -20,8 +20,8 @@ layout: null get(key) { const name = formatKey(key); if (data[name] !== undefined) return data[name]; - data[name] = localStorage.getItem(name); - if (data[name] !== null) return data[name]; + const value = localStorage.getItem(name); + if (value !== null) return data[name] = value; const config = configs[key]; if (config === undefined || typeof config.default !== "string") return null; return config.default; From afd0ef836f3d6cf9c5c4a1c1b097fcaf77a5431c Mon Sep 17 00:00:00 2001 From: neveler <55753029+neveler@users.noreply.github.com> Date: Sun, 15 Mar 2026 12:41:15 +0800 Subject: [PATCH 9/9] =?UTF-8?q?=E4=BC=98=E5=8C=96=E6=A0=B7=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- _layouts/settings.html | 2 +- _sass/minimal-mistakes-plus.scss | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/_layouts/settings.html b/_layouts/settings.html index 0279e6bf..96bc81bb 100644 --- a/_layouts/settings.html +++ b/_layouts/settings.html @@ -21,7 +21,7 @@

{{ group.title }}

{% endfor %} {% elsif setting.type == 'multi-radio' %} - +
diff --git a/_sass/minimal-mistakes-plus.scss b/_sass/minimal-mistakes-plus.scss index 07bfdaec..344a3ca8 100644 --- a/_sass/minimal-mistakes-plus.scss +++ b/_sass/minimal-mistakes-plus.scss @@ -18,3 +18,9 @@ blockquote { position: sticky; margin: 0 !important; } + +table.setting-multi-radio td { + border: 0; + text-align: center; + border-left: 1px solid mix(#000, $border-color, 25%); +}
{{ value.title }}