Skip to content

Commit 5bedfb6

Browse files
committed
Aesthetic update.
Changelog excerpt: - Added the ability to change the "mode" of the configured theme, thus enabling any singular theme to have some slight variation in its potential presentation. Two new configuration directives have been added to facilitate this (look for "theme_mode" under "frontend" and "web" respectively, directly under the existing "theme" configuration directives). For now, the available "modes" are just "normal" and "inverted" (the latter inverting the tone of the colours/lighting used by the theme).
1 parent 26cce03 commit 5bedfb6

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

58 files changed

+329
-167
lines changed

Changelog.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -204,3 +204,4 @@ __*Why "v3.0.0" instead of "v1.0.0?"*__ Prior to phpMussel v3, the "phpMussel Co
204204
- [2025.07.05]: Aesthetic patch.
205205
- [2025.07.08]: Added the ability to route all outbound requests through a proxy, and two new configuration directives, `request_proxy` and `request_proxyauth`.
206206
- [2025.08.01]: Slightly improved the navigation SVGs.
207+
- [2025.08.08]: Added the ability to change the "mode" of the configured theme, thus enabling any singular theme to have some slight variation in its potential presentation. Two new configuration directives have been added to facilitate this (look for `theme_mode` under `frontend` and `web` respectively, directly under the existing `theme` configuration directives). For now, the available "modes" are just "normal" and "inverted" (the latter inverting the tone of the colours/lighting used by the theme).

assets/bluemetal/frontend.css

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
:root{color-scheme:dark}
1+
:root{color-scheme:dark{theme_mode_effects}}
22
*{vertical-align:text-top}
33
body,input,select,textarea,.idx{font-size:calc((12px * {magnification}) + .03vw)}
44
body{font-family:'Tahoma','Verdana','Noto Sans','Arial';letter-spacing:1px;text-decoration:none;border-style:none;margin:0;white-space:normal;background-color:#333;color:#cde;background-image:url(data:image/gif;base64,R0lGODdhAwADAIACADMzM1VicCwAAAAAAwADAAACBIQRBwUAOw==);background-attachment:fixed}
@@ -83,15 +83,15 @@ input[id=homebutton]{border-top-{FE_Align_Reverse}-radius:0;border-bottom-{FE_Al
8383
.exp{color:#ff0;background-color:#f00}
8484
.pieul{list-style-type:none;margin:0;padding:0}
8585
li>span.comCat:first-child,input[type=file]::file-selector-button{cursor:pointer}
86-
.comCat::before{content:"➖";display:inline-block;margin-{FE_Align_Reverse}:6px;line-height:100%;cursor:pointer}
86+
.comCat::before{content:"";width:16px;height:16px;background-image:url(data:image/svg+xml;base64,{Base64Encode}{Asset:caret.svg}{/Base64Encode});background-repeat:no-repeat;background-position:top 2px center;display:inline-block;margin-{FE_Align_Reverse}:6px;line-height:100%;cursor:pointer}
8787
.caret-down::before{animation:forRotate .2s linear 1;animation-fill-mode:both}
8888
.caret-up::before{animation:revRotate .2s linear 1;animation-fill-mode:both}
8989
.comSub{overflow:hidden;transform:scaleY(0);transform-origin:top;opacity:0;max-height:0;transition:all .5s ease-out}
9090
.active{transform:scaleY(1);transform-origin:top;opacity:1;max-height:99999px;transition:all .3s ease-in}
9191
blockquote.comSub{margin:-2px 0 0 0;padding:0 0 0 0}
92-
@keyframes forRotate{0%{transform:rotate(0)}100%{transform:rotate({45deg})}}
93-
@keyframes revRotate{0%{transform:rotate({45deg})}100%{transform:rotate(0)}}
94-
.navicon{display:inline-block;filter:invert(85%) saturate(1074%) hue-rotate(-154deg) brightness(100%) contrast(87%);position:relative;top:1px;width:16px;height:16px}
92+
@keyframes forRotate{0%{transform:rotate(0) translate(0, 0) scaleX(1)}100%{transform:rotate({45deg}) {caretTransform}}}
93+
@keyframes revRotate{0%{transform:rotate({45deg}) {caretTransform}}100%{transform:rotate(0) translate(0, 0) scaleX(1)}}
94+
.navicon,a.showlink[onclick]::before,a.shownlink[onclick]::before,a.unshownlink[onclick]::before{display:inline-block;filter:invert(85%) saturate(1074%) hue-rotate(-154deg) brightness(100%) contrast(87%);position:relative;top:1px;width:16px;height:16px}
9595
a:hover>.navicon,a:active>.navicon,a:focus>.navicon{filter:invert(91%) sepia(87%) saturate(611%) hue-rotate(-62deg) brightness(100%) contrast(109%)}
9696
select+input[type=submit],select+input[type=button],input[name=qkey]+input[type=submit]{height:20px;margin-{FE_Align}:-3px;border-bottom-{FE_Align}-radius:0;border-top-{FE_Align}-radius:0;padding-{FE_Align}:3px}
9797
input[name=qkey]{margin-{FE_Align}:-3px;padding-{FE_Align}:3px}
@@ -122,7 +122,7 @@ input[type=checkbox]+label,input[type=radio]+label,.gridboxitem>label,.gridboxit
122122
.configMatrixLabel.gridVB{background:linear-gradient(0deg,rgba(127,191,251,.35),rgba(0,0,0,0))}
123123
.warning::before,.warning::after{content:"⚠️";font-size:24px;display:inline;line-height:100%;position:relative;top:2px}
124124
.warning{display:inline-block;margin:4px;font-weight:700;color:#fca;background:linear-gradient({90deg},rgba(0,128,192,0) 0,rgba(0,128,192,.8) 20% 80%,rgba(0,128,192,0) 100%);line-height:100%}
125-
.showlink::before,.shownlink::before,.unshownlink::before{content:"➖";display:inline-block;margin-{FE_Align_Reverse}:6px}
125+
.showlink::before,.shownlink::before,.unshownlink::before{content:"";width:16px;height:16px;background-image:url(data:image/svg+xml;base64,{Base64Encode}{Asset:caret.svg}{/Base64Encode});background-repeat:no-repeat;background-position:top 2px center;display:inline-block;margin-{FE_Align_Reverse}:6px}
126126
.shownlink::before{animation:forRotate .5s ease-out 1;animation-fill-mode:both}
127127
.unshownlink::before{animation:revRotate .5s ease-out 1;animation-fill-mode:both}
128128
.subNav{text-align:center;font-size:calc((10px * {magnification}) + .03vw);color:rgba(204,221,238,.6);text-shadow:2px 2px 1px rgba(255,255,255,.2)}

assets/config.yml

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
# License: GNU/GPLv2
88
# @see LICENSE.txt
99
#
10-
# This file: Configuration defaults file (last modified: 2024.06.26).
10+
# This file: Configuration defaults file (last modified: 2025.08.08).
1111
##/
1212

1313
frontend:
@@ -89,6 +89,16 @@ frontend:
8989
primerdark: "Primer Dark"
9090
rbi: "Red-Blue Inverted"
9191
slate: "Slate"
92+
theme_mode:
93+
type: "string"
94+
default: "normal"
95+
choices:
96+
normal: "label.Normal"
97+
inverted: "label.Inverted"
98+
effects:
99+
inverted: ";filter:invert(1) hue-rotate(-180deg)"
100+
preview: "js:const root=document.documentElement;function config_frontend_theme_mode_function(){var sR=document.querySelector('input[name="config_frontend_theme_mode"]:checked');if(sR){root.style.filter=sR.value==='inverted'?'invert(1) hue-rotate(-180deg)':'none'}}"
101+
style: "radio"
92102
magnification:
93103
type: "float"
94104
step: "any"

assets/default/caret.svg

Lines changed: 1 addition & 0 deletions
Loading

assets/default/frontend.css

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
:root{color-scheme:light}
1+
:root{color-scheme:light{theme_mode_effects}}
22
*{vertical-align:text-top}
33
body,input,select,textarea,.idx{font-size:calc((12px * {magnification}) + .03vw)}
44
body{font-family:'Tahoma','Verdana','Noto Sans','Arial';letter-spacing:1px;text-decoration:none;border-style:none;margin:0;white-space:normal;background-color:#ccc;color:#033}
@@ -87,15 +87,15 @@ input[id=homebutton]{border-top-{FE_Align_Reverse}-radius:0;border-bottom-{FE_Al
8787
.exp{color:#ff0;background-color:#f00}
8888
.pieul{list-style-type:none;margin:0;padding:0}
8989
li>span.comCat:first-child,input[type=file]::file-selector-button{cursor:pointer}
90-
.comCat::before{content:"➖";display:inline-block;margin-{FE_Align_Reverse}:6px;line-height:100%;cursor:pointer}
90+
.comCat::before{content:"";width:16px;height:16px;background-image:url(data:image/svg+xml;base64,{Base64Encode}{Asset:caret.svg}{/Base64Encode});background-repeat:no-repeat;background-position:top 2px center;display:inline-block;margin-{FE_Align_Reverse}:6px;line-height:100%;cursor:pointer}
9191
.caret-down::before{animation:forRotate .2s linear 1;animation-fill-mode:both}
9292
.caret-up::before{animation:revRotate .2s linear 1;animation-fill-mode:both}
9393
.comSub{overflow:hidden;transform:scaleY(0);transform-origin:top;opacity:0;max-height:0;transition:all .5s ease-out}
9494
.active{transform:scaleY(1);transform-origin:top;opacity:1;max-height:99999px;transition:all .3s ease-in}
9595
blockquote.comSub{margin:-2px 0 0 0;padding:0 0 0 0}
96-
@keyframes forRotate{0%{transform:rotate(0)}100%{transform:rotate({45deg})}}
97-
@keyframes revRotate{0%{transform:rotate({45deg})}100%{transform:rotate(0)}}
98-
.navicon{display:inline-block;filter:invert(12%) sepia(91%) saturate(1979%) hue-rotate(222deg) brightness(107%) contrast(94%);position:relative;top:1px;width:16px;height:16px}
96+
@keyframes forRotate{0%{transform:rotate(0) translate(0, 0) scaleX(1)}100%{transform:rotate({45deg}) {caretTransform}}}
97+
@keyframes revRotate{0%{transform:rotate({45deg}) {caretTransform}}100%{transform:rotate(0) translate(0, 0) scaleX(1)}}
98+
.navicon,a.showlink[onclick]::before,a.shownlink[onclick]::before,a.unshownlink[onclick]::before{display:inline-block;filter:invert(12%) sepia(91%) saturate(1979%) hue-rotate(222deg) brightness(107%) contrast(94%);position:relative;top:1px;width:16px;height:16px}
9999
a:hover>.navicon,a:active>.navicon,a:focus>.navicon{filter:invert(33%) sepia(54%) saturate(1938%) hue-rotate(212deg) brightness(103%) contrast(108%)}
100100
select+input[type=submit],select+input[type=button],input[name=qkey]+input[type=submit]{margin-{FE_Align}:-3px;border-bottom-{FE_Align}-radius:0;border-top-{FE_Align}-radius:0;padding-{FE_Align}:3px}
101101
input[name=qkey]{margin-{FE_Align}:-3px;padding-{FE_Align}:3px}
@@ -126,7 +126,7 @@ input[type=checkbox]+label,input[type=radio]+label,.gridboxitem>label,.gridboxit
126126
.configMatrixLabel.gridVB{background:linear-gradient(0deg,rgba(251,191,127,.7),rgba(0,0,0,0))}
127127
.warning::before,.warning::after{content:"⚠️";font-size:24px;display:inline;line-height:100%;position:relative;top:2px}
128128
.warning{display:inline-block;margin:4px;font-weight:700;color:red;background:linear-gradient({90deg},rgba(255,192,0,0) 0,rgba(255,192,0,.8) 20% 80%,rgba(255,192,0,0) 100%);line-height:100%}
129-
.showlink::before,.shownlink::before,.unshownlink::before{content:"➖";display:inline-block;margin-{FE_Align_Reverse}:6px}
129+
.showlink::before,.shownlink::before,.unshownlink::before{content:"";width:16px;height:16px;background-image:url(data:image/svg+xml;base64,{Base64Encode}{Asset:caret.svg}{/Base64Encode});background-repeat:no-repeat;background-position:top 2px center;display:inline-block;margin-{FE_Align_Reverse}:6px}
130130
.shownlink::before{animation:forRotate .5s ease-out 1;animation-fill-mode:both}
131131
.unshownlink::before{animation:revRotate .5s ease-out 1;animation-fill-mode:both}
132132
.subNav{text-align:center;font-size:calc((10px * {magnification}) + .03vw);color:rgba(0,51,51,.6);text-shadow:2px 2px 1px rgba(0,0,0,.2)}

assets/default/frontend.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
55
<meta name="robots" content="noindex,nofollow" />
66
<meta name="viewport" content="width=device-width, initial-scale=1" />
7-
<link rel="stylesheet" type="text/css" href="?phpmussel-page=css&theme={theme}" />
7+
<link rel="stylesheet" type="text/css" href="?phpmussel-page=css&theme={theme}&theme-mode={theme_mode}" />
88
<link rel="shortcut icon" type="image/png" href="?phpmussel-page=favicon" />
99
<title>{FE_Title}</title>
1010
</head>

assets/fullmoon/frontend.css

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
:root{color-scheme:dark}
1+
:root{color-scheme:dark{theme_mode_effects}}
22
*{vertical-align:text-top}
33
body,input,select,textarea{font-size:calc((12px * {magnification}) + .03vw);background-repeat:no-repeat}
44
body{font-family:'Tahoma','Verdana','Noto Sans','Arial';letter-spacing:1px;text-decoration:none;border-style:none;margin:0;white-space:normal;background-color:#36393b;color:#c5bc8e;background-image:url('?phpmussel-asset=moon.jpg&theme={theme}');background-attachment:fixed;background-position:center center}
@@ -78,14 +78,14 @@ input[id=homebutton]{border-top-{FE_Align_Reverse}-radius:0;border-bottom-{FE_Al
7878
.exp{color:#ff0;background-color:#f00}
7979
.pieul{list-style-type:none;margin:0;padding:0}
8080
li>span.comCat:first-child,input[type=file]::file-selector-button{cursor:pointer}
81-
.comCat::before{content:"➖";display:inline-block;margin-{FE_Align_Reverse}:6px;line-height:100%;cursor:pointer}
81+
.comCat::before{content:"";width:16px;height:16px;background-image:url(data:image/svg+xml;base64,{Base64Encode}{Asset:caret.svg}{/Base64Encode});background-repeat:no-repeat;background-position:top 2px center;display:inline-block;margin-{FE_Align_Reverse}:6px;line-height:100%;cursor:pointer}
8282
.caret-down::before{animation:forRotate .2s linear 1;animation-fill-mode:both}
8383
.caret-up::before{animation:revRotate .2s linear 1;animation-fill-mode:both}
8484
.comSub{overflow:hidden;transform:scaleY(0);transform-origin:top;opacity:0;max-height:0;transition:all .5s ease-out}
8585
.active{transform:scaleY(1);transform-origin:top;opacity:1;max-height:99999px;transition:all .3s ease-in}
8686
blockquote.comSub{margin:-2px 0 0 0;padding:0 0 0 0}
87-
@keyframes forRotate{0%{transform:rotate(0)}100%{transform:rotate({45deg})}}
88-
@keyframes revRotate{0%{transform:rotate({45deg})}100%{transform:rotate(0)}}
87+
@keyframes forRotate{0%{transform:rotate(0) translate(0, 0) scaleX(1)}100%{transform:rotate({45deg}) {caretTransform}}}
88+
@keyframes revRotate{0%{transform:rotate({45deg}) {caretTransform}}100%{transform:rotate(0) translate(0, 0) scaleX(1)}}
8989
select+input[type=submit],select+input[type=button],input[name=qkey]+input[type=submit]{height:20px;margin-{FE_Align}:-3px;border-bottom-{FE_Align}-radius:0;border-top-{FE_Align}-radius:0;padding-{FE_Align}:3px}
9090
input[name=qkey]{margin-{FE_Align}:-3px;padding-{FE_Align}:3px}
9191
select,input[type=submit],input[type=reset],input[type=button],input[type=file]::file-selector-button,input[type=text],input[type=password],input[type=number],input[type=date],input[type=time],button{box-sizing:border-box;height:20px;padding-top:0;padding-bottom:0}
@@ -115,7 +115,7 @@ input[type=checkbox]+label,input[type=radio]+label,.gridboxitem>label,.gridboxit
115115
.configMatrixLabel.gridVB{background:linear-gradient(0deg,rgba(251,191,127,.35),rgba(0,0,0,0))}
116116
.warning::before,.warning::after{content:"⚠️";font-size:24px;display:inline;line-height:100%;position:relative;top:2px}
117117
.warning{display:inline-block;margin:4px;font-weight:700;color:#e7ab7d;background:linear-gradient({90deg},rgba(128,92,0,0) 0,rgba(128,92,0,.8) 20% 80%,rgba(128,92,0,0) 100%);line-height:100%}
118-
.showlink::before,.shownlink::before,.unshownlink::before{content:"➖";display:inline-block;margin-{FE_Align_Reverse}:6px}
118+
.showlink::before,.shownlink::before,.unshownlink::before{content:"";width:16px;height:16px;background-image:url(data:image/svg+xml;base64,{Base64Encode}{Asset:caret.svg}{/Base64Encode});background-repeat:no-repeat;background-position:top 2px center;display:inline-block;margin-{FE_Align_Reverse}:6px}
119119
.shownlink::before{animation:forRotate .5s ease-out 1;animation-fill-mode:both}
120120
.unshownlink::before{animation:revRotate .5s ease-out 1;animation-fill-mode:both}
121121
input[type=button].reset{background:none;cursor:pointer;border:none;padding:0 12px 0 12px;margin:0;width:auto;color:#e7ab7d}

assets/fullmoon/frontend.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
55
<meta name="robots" content="noindex,nofollow" />
66
<meta name="viewport" content="width=device-width, initial-scale=1" />
7-
<link rel="stylesheet" type="text/css" href="?phpmussel-page=css&theme={theme}" />
7+
<link rel="stylesheet" type="text/css" href="?phpmussel-page=css&theme={theme}&theme-mode={theme_mode}" />
88
<link rel="shortcut icon" type="image/png" href="?phpmussel-page=favicon" />
99
<title>{FE_Title}</title>
1010
</head>

assets/moss/frontend.css

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
:root{color-scheme:normal}
1+
:root{color-scheme:normal{theme_mode_effects}}
22
*{vertical-align:text-top}
33
body,input,select,textarea,.idx{font-size:calc((12px * {magnification}) + .03vw);background-repeat:no-repeat}
44
body{font-family:'Tahoma','Verdana','Noto Sans','Arial';letter-spacing:1px;text-decoration:none;border-style:none;margin:0;white-space:normal;background-color:#789048;background-image:url('?phpmussel-asset=bg.png&theme={theme}');background-attachment:fixed;background-position:left bottom;color:#303c24}
@@ -84,15 +84,15 @@ input[id=homebutton]{border-top-{FE_Align_Reverse}-radius:0;border-bottom-{FE_Al
8484
.exp{color:#ff0;background-color:#f00}
8585
.pieul{list-style-type:none;margin:0;padding:0}
8686
li>span.comCat:first-child,input[type=file]::file-selector-button{cursor:pointer}
87-
.comCat::before{content:"➖";display:inline-block;margin-{FE_Align_Reverse}:6px;line-height:100%;cursor:pointer}
87+
.comCat::before{content:"";width:16px;height:16px;background-image:url(data:image/svg+xml;base64,{Base64Encode}{Asset:caret.svg}{/Base64Encode});background-repeat:no-repeat;background-position:top 2px center;display:inline-block;margin-{FE_Align_Reverse}:6px;line-height:100%;cursor:pointer}
8888
.caret-down::before{animation:forRotate .2s linear 1;animation-fill-mode:both}
8989
.caret-up::before{animation:revRotate .2s linear 1;animation-fill-mode:both}
9090
.comSub{overflow:hidden;transform:scaleY(0);transform-origin:top;opacity:0;max-height:0;transition:all .5s ease-out}
9191
.active{transform:scaleY(1);transform-origin:top;opacity:1;max-height:99999px;transition:all .3s ease-in}
9292
blockquote.comSub{margin:-2px 0 0 0;padding:0 0 0 0}
93-
@keyframes forRotate{0%{transform:rotate(0)}100%{transform:rotate({45deg})}}
94-
@keyframes revRotate{0%{transform:rotate({45deg})}100%{transform:rotate(0)}}
95-
.navicon{display:inline-block;filter:invert(27%) sepia(5%) saturate(2258%) hue-rotate(-46deg) brightness(97%) contrast(85%);position:relative;top:1px;width:16px;height:16px}
93+
@keyframes forRotate{0%{transform:rotate(0) translate(0, 0) scaleX(1)}100%{transform:rotate({45deg}) {caretTransform}}}
94+
@keyframes revRotate{0%{transform:rotate({45deg}) {caretTransform}}100%{transform:rotate(0) translate(0, 0) scaleX(1)}}
95+
.navicon,a.showlink[onclick]::before,a.shownlink[onclick]::before,a.unshownlink[onclick]::before{display:inline-block;filter:invert(27%) sepia(5%) saturate(2258%) hue-rotate(-46deg) brightness(97%) contrast(85%);position:relative;top:1px;width:16px;height:16px}
9696
a:hover>.navicon,a:active>.navicon,a:focus>.navicon{filter:invert(40%) sepia(6%) saturate(1564%) hue-rotate(-46deg) brightness(103%) contrast(87%)}
9797
select+input[type=submit],select+input[type=button],input[name=qkey]+input[type=submit]{height:20px;margin-{FE_Align}:-3px;border-bottom-{FE_Align}-radius:0;border-top-{FE_Align}-radius:0;padding-{FE_Align}:3px}
9898
input[name=qkey]{margin-{FE_Align}:-3px;padding-{FE_Align}:3px}
@@ -123,7 +123,7 @@ input[type=checkbox]+label,input[type=radio]+label,.gridboxitem>label,.gridboxit
123123
.configMatrixLabel.gridVB{background:linear-gradient(0deg,rgba(191,251,127,.7),rgba(0,0,0,0))}
124124
.warning::before,.warning::after{content:"⚠️";font-size:24px;display:inline;line-height:100%;position:relative;top:2px}
125125
.warning{display:inline-block;margin:4px;font-weight:700;color:#a04848;background:linear-gradient({90deg},rgba(255,192,0,0) 0,rgba(255,192,0,.8) 20% 80%,rgba(255,192,0,0) 100%);line-height:100%}
126-
.showlink::before,.shownlink::before,.unshownlink::before{content:"➖";display:inline-block;margin-{FE_Align_Reverse}:6px}
126+
.showlink::before,.shownlink::before,.unshownlink::before{content:"";width:16px;height:16px;background-image:url(data:image/svg+xml;base64,{Base64Encode}{Asset:caret.svg}{/Base64Encode});background-repeat:no-repeat;background-position:top 2px center;display:inline-block;margin-{FE_Align_Reverse}:6px}
127127
.shownlink::before{animation:forRotate .5s ease-out 1;animation-fill-mode:both}
128128
.unshownlink::before{animation:revRotate .5s ease-out 1;animation-fill-mode:both}
129129
.subNav{text-align:center;font-size:calc((10px * {magnification}) + .03vw);color:rgba(48,60,36,.6);text-shadow:2px 2px 1px rgba(0,0,0,.2)}

0 commit comments

Comments
 (0)