Use CSS variables

This commit is contained in:
KernelDeimos 2024-04-07 02:34:04 -04:00
parent 178f851684
commit d1bbbb8e93
2 changed files with 72 additions and 13 deletions

View File

@ -22,6 +22,28 @@
user-select: none; user-select: none;
} }
:root {
--primary-hue: 231;
--primary-saturation: 100%;
--primary-lightness: 50%;
--primary-alpha: 0.7;
--window-head-hue: var(--primary-hue);
--window-head-saturation: var(--primary-saturation);
--window-head-lightness: var(--primary-lightness);
--window-head-alpha: var(--primary-alpha);
--window-sidebar-hue: var(--primary-hue);
--window-sidebar-saturation: var(--primary-saturation);
--window-sidebar-lightness: var(--primary-lightness);
--window-sidebar-alpha: var(--primary-alpha);
--taskbar-hue: var(--primary-hue);
--taskbar-saturation: var(--primary-saturation);
--taskbar-lightness: var(--primary-lightness);
--taskbar-alpha: var(--primary-alpha);
}
html, body { html, body {
/* disables two fingers back/forward swipe */ /* disables two fingers back/forward swipe */
overscroll-behavior-x: none; overscroll-behavior-x: none;
@ -827,7 +849,12 @@ span.header-sort-icon img {
.window-head { .window-head {
overflow: hidden !important; overflow: hidden !important;
padding: 0; padding: 0;
background-color: rgba(231, 238, 245, .95); background-color: hsla(
var(--window-head-hue),
var(--window-head-saturation),
var(--window-head-lightness),
calc(0.5 + 0.5 * var(--window-head-alpha))
);
filter: grayscale(80%); filter: grayscale(80%);
box-shadow: inset 0px -4px 5px -7px rgb(0 0 0 / 64%); box-shadow: inset 0px -4px 5px -7px rgb(0 0 0 / 64%);
display: flex; display: flex;
@ -1025,7 +1052,12 @@ span.header-sort-icon img {
border-right: 1px solid #CCC; border-right: 1px solid #CCC;
padding: 15px 10px; padding: 15px 10px;
box-sizing: border-box; box-sizing: border-box;
background-color: rgba(231, 238, 245, .95); background-color: hsla(
var(--window-sidebar-hue),
var(--window-sidebar-saturation),
var(--window-sidebar-lightness),
calc(0.5 + 0.5*var(--window-sidebar-alpha))
);
overflow-y: scroll; overflow-y: scroll;
margin-top: 1px; margin-top: 1px;
} }
@ -2019,7 +2051,12 @@ label {
bottom: 0; bottom: 0;
left: 0; left: 0;
width: 100%; width: 100%;
background-color: rgba(231, 238, 245, .9); background-color: hsla(
var(--taskbar-hue),
var(--taskbar-saturation),
var(--taskbar-lightness),
calc(0.5 + 0.5*var(--taskbar-alpha))
);
display: flex; display: flex;
justify-content: center; justify-content: center;
z-index: 99999; z-index: 99999;
@ -2126,7 +2163,12 @@ label {
@supports ((backdrop-filter: blur())) { @supports ((backdrop-filter: blur())) {
.taskbar { .taskbar {
background-color: #ffffff94; background-color: hsla(
var(--taskbar-hue),
var(--taskbar-saturation),
var(--taskbar-lightness),
var(--taskbar-alpha)
);
backdrop-filter: blur(10px); backdrop-filter: blur(10px);
} }
@ -2646,7 +2688,12 @@ label {
@supports ((backdrop-filter: blur())) { @supports ((backdrop-filter: blur())) {
.window-head { .window-head {
background-color: rgba(231, 238, 245, .80); background-color: hsla(
var(--window-head-hue),
var(--window-head-saturation),
var(--window-head-lightness),
var(--window-head-alpha)
);
backdrop-filter: blur(10px); backdrop-filter: blur(10px);
} }
@ -2656,7 +2703,13 @@ label {
} }
.window-sidebar { .window-sidebar {
background-color: rgb(231 238 245 / 91%); /* background-color: var(--puter-window-background); */
background-color: hsla(
var(--window-sidebar-hue),
var(--window-sidebar-saturation),
var(--window-sidebar-lightness),
var(--window-sidebar-alpha)
);
backdrop-filter: blur(10px); backdrop-filter: blur(10px);
} }

View File

@ -8,8 +8,9 @@ export class ThemeService extends Service {
lig: 70, lig: 70,
alpha: 1, alpha: 1,
}; };
this.ss = new CSSStyleSheet(); this.root = document.querySelector(':root');
document.adoptedStyleSheets.push(this.ss); // this.ss = new CSSStyleSheet();
// document.adoptedStyleSheets.push(this.ss);
} }
apply (values) { apply (values) {
@ -25,10 +26,15 @@ export class ThemeService extends Service {
reload_ () { reload_ () {
// debugger; // debugger;
const s = this.state; const s = this.state;
this.ss.replace(` // this.ss.replace(`
.taskbar, .window-head, .window-sidebar { // .taskbar, .window-head, .window-sidebar {
background-color: hsla(${s.hue}, ${s.sat}%, ${s.lig}%, ${s.alpha}); // background-color: hsla(${s.hue}, ${s.sat}%, ${s.lig}%, ${s.alpha});
} // }
`) // `)
// this.root.style.setProperty('--puter-window-background', `hsla(${s.hue}, ${s.sat}%, ${s.lig}%, ${s.alpha})`);
this.root.style.setProperty('--primary-hue', s.hue);
this.root.style.setProperty('--primary-saturation', s.sat + '%');
this.root.style.setProperty('--primary-lightness', s.lig + '%');
this.root.style.setProperty('--primary-alpha', s.alpha);
} }
} }