Textshadow color and width are now customizable.

This commit is contained in:
RossAscends
2023-04-27 02:02:25 +09:00
parent c354f8ee30
commit df7f6c0168
6 changed files with 83 additions and 13 deletions

View File

@ -1183,6 +1183,17 @@
<span id="blur_strength_counter">select</span> <span id="blur_strength_counter">select</span>
</div> </div>
</div> </div>
<div id="shadow-width-block" class="range-block">
<div class="range-block-title">
Text Shadow Width
</div>
<div class="range-block-range">
<input type="range" id="shadow_width" name="shadow_width" min="0" max="5" step="1">
</div>
<div class="range-block-counter">
<span id="shadow_width_counter">select</span>
</div>
</div>
</div> </div>
<div> <div>
@ -1251,6 +1262,10 @@
<toolcool-color-picker id="quote-color-picker"></toolcool-color-picker> <toolcool-color-picker id="quote-color-picker"></toolcool-color-picker>
Quote Text Quote Text
</div> </div>
<div class="flex-container">
<toolcool-color-picker id="shadow-color-picker"></toolcool-color-picker>
Shadow Color
</div>
<div class="flex-container"> <div class="flex-container">
<toolcool-color-picker id="fastui-bg-color-picker"></toolcool-color-picker> <toolcool-color-picker id="fastui-bg-color-picker"></toolcool-color-picker>
FastUI BG FastUI BG

View File

@ -72,12 +72,14 @@ let power_user = {
sort_rule: null, sort_rule: null,
font_scale: 1, font_scale: 1,
blur_strength: 10, blur_strength: 10,
shadow_width: 2,
main_text_color: `${getComputedStyle(document.documentElement).getPropertyValue('--SmartThemeBodyColor').trim()}`, main_text_color: `${getComputedStyle(document.documentElement).getPropertyValue('--SmartThemeBodyColor').trim()}`,
italics_text_color: `${getComputedStyle(document.documentElement).getPropertyValue('--SmartThemeEmColor').trim()}`, italics_text_color: `${getComputedStyle(document.documentElement).getPropertyValue('--SmartThemeEmColor').trim()}`,
quote_text_color: `${getComputedStyle(document.documentElement).getPropertyValue('--SmartThemeQuoteColor').trim()}`, quote_text_color: `${getComputedStyle(document.documentElement).getPropertyValue('--SmartThemeQuoteColor').trim()}`,
fastui_bg_color: `${getComputedStyle(document.documentElement).getPropertyValue('--SmartThemeFastUIBGColor').trim()}`, fastui_bg_color: `${getComputedStyle(document.documentElement).getPropertyValue('--SmartThemeFastUIBGColor').trim()}`,
blur_tint_color: `${getComputedStyle(document.documentElement).getPropertyValue('--SmartThemeBlurTintColor').trim()}`, blur_tint_color: `${getComputedStyle(document.documentElement).getPropertyValue('--SmartThemeBlurTintColor').trim()}`,
shadow_color: `${getComputedStyle(document.documentElement).getPropertyValue('--SmartThemeShadowColor').trim()}`,
waifuMode: false, waifuMode: false,
movingUI: false, movingUI: false,
@ -99,6 +101,9 @@ const storage_keys = {
fastui_bg_color: "TavernAI_fastui_bg_color", fastui_bg_color: "TavernAI_fastui_bg_color",
blur_tint_color: "TavernAI_blur_tint_color", blur_tint_color: "TavernAI_blur_tint_color",
blur_strength: "TavernAI_blur_strength", blur_strength: "TavernAI_blur_strength",
shadow_color: "TavernAI_shadow_color",
shadow_width: "TavernAI_shadow_width",
waifuMode: "TavernAI_waifuMode", waifuMode: "TavernAI_waifuMode",
movingUI: "TavernAI_movingUI", movingUI: "TavernAI_movingUI",
@ -183,6 +188,9 @@ async function applyThemeColor(type) {
if (type === 'blurTint') { if (type === 'blurTint') {
document.documentElement.style.setProperty('--SmartThemeBlurTintColor', power_user.blur_tint_color); document.documentElement.style.setProperty('--SmartThemeBlurTintColor', power_user.blur_tint_color);
} }
if (type === 'shadow') {
document.documentElement.style.setProperty('--SmartThemeShadowColor', power_user.shadow_color);
}
} }
async function applyBlurStrength() { async function applyBlurStrength() {
@ -192,6 +200,13 @@ async function applyBlurStrength() {
} }
async function applyShadowWidth() {
power_user.shadow_width = Number(localStorage.getItem(storage_keys.shadow_width) ?? 2);
document.documentElement.style.setProperty('--shadowWidth', power_user.shadow_width);
$("#blur_strength_counter").text(power_user.shadow_width);
}
async function applyFontScale() { async function applyFontScale() {
power_user.font_scale = Number(localStorage.getItem(storage_keys.font_scale) ?? 1); power_user.font_scale = Number(localStorage.getItem(storage_keys.font_scale) ?? 1);
@ -212,12 +227,20 @@ async function applyTheme(name) {
{ key: 'quote_text_color', selector: '#quote-color-picker', type: 'quote' }, { key: 'quote_text_color', selector: '#quote-color-picker', type: 'quote' },
{ key: 'fastui_bg_color', selector: '#fastui-bg-color-picker', type: 'fastUIBG' }, { key: 'fastui_bg_color', selector: '#fastui-bg-color-picker', type: 'fastUIBG' },
{ key: 'blur_tint_color', selector: '#blur-tint-color-picker', type: 'blurTint' }, { key: 'blur_tint_color', selector: '#blur-tint-color-picker', type: 'blurTint' },
{ key: 'shadow_color', selector: '#shadow-color-picker', type: 'shadow' },
{ {
key: 'blur_strength', key: 'blur_strength',
action: async () => { action: async () => {
localStorage.setItem(storage_keys.blur_strength, power_user.blur_strength); localStorage.setItem(storage_keys.blur_strength, power_user.blur_strength);
await applyBlurStrength(); await applyBlurStrength();
} }
},
{
key: 'shadow_width',
action: async () => {
localStorage.setItem(storage_keys.shadow_width, power_user.shadow_width);
await applyShadowWidth();
}
} }
]; ];
@ -289,17 +312,22 @@ function loadPowerUserSettings(settings, data) {
$(`input[name="avatar_style"][value="${power_user.avatar_style}"]`).prop("checked", true); $(`input[name="avatar_style"][value="${power_user.avatar_style}"]`).prop("checked", true);
$(`input[name="chat_display"][value="${power_user.chat_display}"]`).prop("checked", true); $(`input[name="chat_display"][value="${power_user.chat_display}"]`).prop("checked", true);
$(`input[name="sheld_width"][value="${power_user.sheld_width}"]`).prop("checked", true); $(`input[name="sheld_width"][value="${power_user.sheld_width}"]`).prop("checked", true);
$("#font_scale").val(power_user.font_scale); $("#font_scale").val(power_user.font_scale);
$("#font_scale_counter").text(power_user.font_scale); $("#font_scale_counter").text(power_user.font_scale);
$("#blur_strength").val(power_user.blur_strength); $("#blur_strength").val(power_user.blur_strength);
$("#blur_strength_counter").text(power_user.blur_strength); $("#blur_strength_counter").text(power_user.blur_strength);
$("#shadow_width").val(power_user.shadow_width);
$("#shadow_width_counter").text(power_user.shadow_width);
$("#main-text-color-picker").attr('color', power_user.main_text_color); $("#main-text-color-picker").attr('color', power_user.main_text_color);
$("#italics-color-picker").attr('color', power_user.italics_text_color); $("#italics-color-picker").attr('color', power_user.italics_text_color);
$("#quote-color-picker").attr('color', power_user.quote_text_color); $("#quote-color-picker").attr('color', power_user.quote_text_color);
$("#fastui-bg-color-picker").attr('color', power_user.fastui_bg_color); $("#fastui-bg-color-picker").attr('color', power_user.fastui_bg_color);
$("#blur-tint-color-picker").attr('color', power_user.blur_tint_color); $("#blur-tint-color-picker").attr('color', power_user.blur_tint_color);
$("#shadow-color-picker").attr('color', power_user.shadow_color);
for (const theme of themes) { for (const theme of themes) {
const option = document.createElement('option'); const option = document.createElement('option');
@ -318,7 +346,7 @@ function sortCharactersList(selector = '.character_select') {
const compareFunc = (first, second) => { const compareFunc = (first, second) => {
switch (power_user.sort_rule) { switch (power_user.sort_rule) {
case 'boolean': case 'boolean':
return Number(first[power_user.sort_field] == "true") - Number(second[power_user.sort_field] == "true"); return Number(first[power_user.sort_field] == "true") - Number(second[power_user.sort_field] == "true");
default: default:
return typeof first[power_user.sort_field] == "string" return typeof first[power_user.sort_field] == "string"
? first[power_user.sort_field].localeCompare(second[power_user.sort_field]) ? first[power_user.sort_field].localeCompare(second[power_user.sort_field])
@ -474,6 +502,13 @@ $(document).ready(() => {
await applyBlurStrength(); await applyBlurStrength();
}); });
$(`input[name="shadow_width"]`).on('input', async function (e) {
power_user.shadow_width = Number(e.target.value);
$("#shadow_width_counter").text(power_user.shadow_width);
localStorage.setItem(storage_keys.shadow_width, power_user.shadow_width);
await applyShadowWidth();
});
$("#main-text-color-picker").on('change', (evt) => { $("#main-text-color-picker").on('change', (evt) => {
power_user.main_text_color = evt.detail.rgba; power_user.main_text_color = evt.detail.rgba;
applyThemeColor('main'); applyThemeColor('main');
@ -485,7 +520,7 @@ $(document).ready(() => {
applyThemeColor('italics'); applyThemeColor('italics');
saveSettingsDebounced(); saveSettingsDebounced();
}); });
$("#quote-color-picker").on('change', (evt) => { $("#quote-color-picker").on('change', (evt) => {
power_user.quote_text_color = evt.detail.rgba; power_user.quote_text_color = evt.detail.rgba;
applyThemeColor('quote'); applyThemeColor('quote');
@ -504,6 +539,12 @@ $(document).ready(() => {
saveSettingsDebounced(); saveSettingsDebounced();
}); });
$("#shadow-color-picker").on('change', (evt) => {
power_user.shadow_color = evt.detail.rgba;
applyThemeColor('shadow');
saveSettingsDebounced();
});
$("#themes").on('change', function () { $("#themes").on('change', function () {
const themeSelected = $(this).find(':selected').val(); const themeSelected = $(this).find(':selected').val();
power_user.theme = themeSelected; power_user.theme = themeSelected;
@ -526,6 +567,8 @@ $(document).ready(() => {
quote_text_color: power_user.quote_text_color, quote_text_color: power_user.quote_text_color,
fastui_bg_color: power_user.fastui_bg_color, fastui_bg_color: power_user.fastui_bg_color,
blur_tint_color: power_user.blur_tint_color, blur_tint_color: power_user.blur_tint_color,
shadow_color: power_user.shadow_color,
shadow_width: power_user.shadow_width,
}; };
const response = await fetch('/savetheme', { const response = await fetch('/savetheme', {
@ -595,7 +638,7 @@ $(document).ready(() => {
const value = $(this).find(':selected').val(); const value = $(this).find(':selected').val();
power_user.tokenizer = Number(value); power_user.tokenizer = Number(value);
saveSettingsDebounced(); saveSettingsDebounced();
// Trigger character editor re-tokenize // Trigger character editor re-tokenize
$("#rm_ch_create_block").trigger('input'); $("#rm_ch_create_block").trigger('input');
$("#character_popup").trigger('input'); $("#character_popup").trigger('input');

View File

@ -43,6 +43,8 @@
--SmartThemeFastUIBGColor: rgba(0, 0, 0, 0.9); --SmartThemeFastUIBGColor: rgba(0, 0, 0, 0.9);
--SmartThemeBlurTintColor: rgba(0, 0, 0, 0.5); --SmartThemeBlurTintColor: rgba(0, 0, 0, 0.5);
--SmartThemeBlurStrength: calc(var(--blurStrength) * 1px); --SmartThemeBlurStrength: calc(var(--blurStrength) * 1px);
--SmartThemeShadowColor: rgba(0, 0, 0, 0.5);
--sheldWidth: 800px; --sheldWidth: 800px;
/*base variable calculated in rems*/ /*base variable calculated in rems*/
@ -51,6 +53,10 @@
/* base variable for blur strength slider calculations */ /* base variable for blur strength slider calculations */
--blurStrength: 10; --blurStrength: 10;
/* base variable for shadow width slider calculations */
--shadowWidth: 2;
color-scheme: only light; color-scheme: only light;
@ -63,7 +69,7 @@
box-sizing: border-box; box-sizing: border-box;
-webkit-font-smoothing: antialiased; -webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale; -moz-osx-font-smoothing: grayscale;
text-shadow: 0px 0px 3px black; text-shadow: 0px 0px calc(var(--shadowWidth) * 1px) var(--SmartThemeShadowColor);
} }
html { html {
@ -276,7 +282,7 @@ code {
backdrop-filter: blur(var(--SmartThemeBlurStrength)); backdrop-filter: blur(var(--SmartThemeBlurStrength));
background-color: var(--SmartThemeBlurTintColor); background-color: var(--SmartThemeBlurTintColor);
-webkit-backdrop-filter: blur(var(--SmartThemeBlurStrength)); -webkit-backdrop-filter: blur(var(--SmartThemeBlurStrength));
text-shadow: #000 0 0 3px; text-shadow: 0px 0px calc(var(--shadowWidth) * 1px) var(--SmartThemeShadowColor);
scrollbar-width: thin; scrollbar-width: thin;
/* transition: all 1s ease-in-out; */ /* transition: all 1s ease-in-out; */
flex-direction: column; flex-direction: column;
@ -390,7 +396,7 @@ code {
border: 1px solid var(--white30a); border: 1px solid var(--white30a);
border-radius: 15px; border-radius: 15px;
box-shadow: 0 0 5px black; box-shadow: 0 0 5px black;
text-shadow: 0 0 3px black; text-shadow: 0px 0px calc(var(--shadowWidth) * 1px) var(--SmartThemeShadowColor);
backdrop-filter: blur(calc(var(--SmartThemeBlurStrength)*2)); backdrop-filter: blur(calc(var(--SmartThemeBlurStrength)*2));
/* min-width: 200px; */ /* min-width: 200px; */
z-index: 2000; z-index: 2000;
@ -654,7 +660,7 @@ select {
padding: 6px; padding: 6px;
font-family: "Noto Sans", "Noto Color Emoji", sans-serif; font-family: "Noto Sans", "Noto Color Emoji", sans-serif;
margin: 0; margin: 0;
text-shadow: #000 0 0 3px; text-shadow: 0px 0px calc(var(--shadowWidth) * 1px) var(--SmartThemeShadowColor);
flex: 1; flex: 1;
} }
@ -1844,7 +1850,7 @@ input[type='checkbox']:not(#nav-toggle):not(#rm_button_panel_pin):not(#lm_button
width: max-content; width: max-content;
margin-left: 5px; margin-left: 5px;
font-size: calc(var(--mainFontSize) - 0.2rem); font-size: calc(var(--mainFontSize) - 0.2rem);
color: var(--white50a); color: var(--SmartThemeBodyColor);
} }
.range-block-range { .range-block-range {
@ -2539,7 +2545,7 @@ h5 {
bottom: 10px; bottom: 10px;
margin: 10px; margin: 10px;
opacity: 0.85; opacity: 0.85;
text-shadow: 2px 2px 2px var(--black60a); text-shadow: 0px 0px calc(var(--shadowWidth) * 1px) var(--SmartThemeShadowColor);
} }
.missing-avatar { .missing-avatar {
@ -2820,7 +2826,7 @@ a {
border: 1px solid var(--white30a); border: 1px solid var(--white30a);
border-radius: 15px; border-radius: 15px;
box-shadow: 0 0 5px black; box-shadow: 0 0 5px black;
text-shadow: 0 0 3px black; text-shadow: 0px 0px calc(var(--shadowWidth) * 1px) var(--SmartThemeShadowColor);
} }
.list-group-item:hover { .list-group-item:hover {

View File

@ -4,5 +4,7 @@
"main_text_color": "rgba(160, 190, 190, 1)", "main_text_color": "rgba(160, 190, 190, 1)",
"italics_text_color": "rgba(170, 200, 200, 1)", "italics_text_color": "rgba(170, 200, 200, 1)",
"fastui_bg_color": "rgba(7, 54, 66, 0.9)", "fastui_bg_color": "rgba(7, 54, 66, 0.9)",
"blur_tint_color": "rgba(0, 43, 54, 0.8)" "blur_tint_color": "rgba(0, 43, 54, 0.8)",
"shadow_color": "rgba(0, 0, 0, 0.5)",
"shadow_width": 2
} }

View File

@ -4,5 +4,7 @@
"main_text_color": "rgb(220, 220, 210)", "main_text_color": "rgb(220, 220, 210)",
"italics_text_color": "rgb(175, 175, 175)", "italics_text_color": "rgb(175, 175, 175)",
"fastui_bg_color": "rgba(0, 0, 0, 0.9)", "fastui_bg_color": "rgba(0, 0, 0, 0.9)",
"blur_tint_color": "rgba(0, 0, 0, 0.5)" "blur_tint_color": "rgba(0, 0, 0, 0.5)",
"shadow_color": "rgba(0, 0, 0, 0.5)",
"shadow_width": 2
} }

View File

@ -4,5 +4,7 @@
"main_text_color": "rgba(230, 230, 230, 1)", "main_text_color": "rgba(230, 230, 230, 1)",
"italics_text_color": "rgba(200, 200, 200, 1)", "italics_text_color": "rgba(200, 200, 200, 1)",
"fastui_bg_color": "rgba(70, 5, 5, 0.9)", "fastui_bg_color": "rgba(70, 5, 5, 0.9)",
"blur_tint_color": "rgba(50, 10, 10, 0.75)" "blur_tint_color": "rgba(50, 10, 10, 0.75)",
"shadow_color": "rgba(0, 0, 0, 0.5)",
"shadow_width": 2
} }