From 56eadcb0df2b0d11acbe93de0105fee3f0c95ef8 Mon Sep 17 00:00:00 2001
From: Aylong <69762909+AyIong@users.noreply.github.com>
Date: Mon, 29 Jul 2024 21:55:22 +0300
Subject: [PATCH] Refactor Stat Panel styles and more TGUI-like appearance
(#85257)
## About The Pull Request
The PR came out a little bigger than I had planned, but creating
separate ones for a couple of little things seemed unnecessary to me.
Let me start with the most important thing: Stat Panel now scales like
TGchat and also looks closer to TGUI!
By default, the Stat Panel font size is tied to the chat font size, but
this can be changed in a couple of clicks...
The rest of the changes are not as big:
1. Stat Panel styles are now more organised
2. The way themes are applied to Byond Skin has been refactored, if
someone decides to make a new theme (maybe me), it won't be necessary to
copy all the elements
3. NumberInput into the general chat settings tab, was changed to slider
4. Reoder tab buttons changed, they are more compact now
5. With the light theme, chat tabs now have a background when
hovering/active tabbing
How it look's like
| New reorder tab buttons | Light Chat tabs |
| - | - |
|

|

|
General Preview
https://github.com/user-attachments/assets/7647d584-c2fd-41b2-b2ee-c7ee61569d1f
## Why It's Good For The Game
More accessibility for owners of 2/4k monitors
Better appearance
NumberInput is behaving extremely strangely in chat
## Changelog
:cl:
add: Stat Panel now scales like a chat, depends on the font size.
Defaults from the chat font size, but you can separate it.
refactor: Refactored Stat Panel styles and Byond skin theme applying.
Stat Panel now looks more like a TGUI
/:cl:
---
html/statbrowser.css | 279 +++++++++---------
html/statbrowser.html | 8 +-
html/statbrowser.js | 29 +-
.../tgui-panel/chat/ChatPageSettings.jsx | 79 +++--
.../tgui-panel/settings/SettingsGeneral.tsx | 80 +++--
.../tgui-panel/settings/middleware.ts | 24 +-
tgui/packages/tgui-panel/settings/reducer.ts | 2 +
.../tgui-panel/styles/themes/light.scss | 9 +-
tgui/packages/tgui-panel/themes.ts | 172 ++++-------
9 files changed, 338 insertions(+), 344 deletions(-)
diff --git a/html/statbrowser.css b/html/statbrowser.css
index dc693f42f75..cd1d63bf7c0 100644
--- a/html/statbrowser.css
+++ b/html/statbrowser.css
@@ -1,150 +1,125 @@
body {
font-family: Verdana, Geneva, Tahoma, sans-serif;
- font-size: 12px !important;
+ font-size: 12px;
margin: 0 !important;
padding: 0 !important;
- overflow-x: hidden;
- overflow-y: scroll;
-}
-
-body.dark {
- background-color: #131313;
- color: #b2c4dd;
- scrollbar-base-color: #1c1c1c;
- scrollbar-face-color: #3b3b3b;
- scrollbar-3dlight-color: #252525;
- scrollbar-highlight-color: #252525;
- scrollbar-track-color: #1c1c1c;
- scrollbar-arrow-color: #929292;
- scrollbar-shadow-color: #3b3b3b;
-}
-
-#menu {
- background-color: #F0F0F0;
- position: fixed;
- width: 100%;
- z-index: 100;
-}
-
-.dark #menu {
- background-color: #202020;
-}
-
-#statcontent {
- padding: 7px 7px 7px 7px;
+ overflow: hidden;
}
a {
- color: black;
- text-decoration: none
-}
-
-.dark a {
- color: #b2c4dd;
-}
-
-a:hover,
-.dark a:hover {
- text-decoration: underline;
-}
-
-ul {
- list-style-type: none;
- margin: 0;
- padding: 0;
- background-color: #333;
-}
-
-li {
- float: left;
-}
-
-li a {
- display: block;
- color: white;
- text-align: center;
- padding: 14px 16px;
+ color: #003399;
text-decoration: none;
}
-li a:hover:not(.active) {
- background-color: #111;
+a:hover {
+ color: #007fff;
}
-.button-container {
- display: inline-flex;
- flex-wrap: wrap-reverse;
- flex-direction: row;
- align-items: flex-start;
- overflow-x: hidden;
- white-space: pre-wrap;
- padding: 0 4px;
+h3 {
+ margin: 0 -0.5em 0.25em;
+ padding: 1em 0.66em 0.5em;
+ border-bottom: 0.1667em solid;
+}
+
+
+img {
+ -ms-interpolation-mode: nearest-neighbor;
+ image-rendering: pixelated;
+}
+
+.stat-container {
+ display: flex;
+ flex-direction: column;
+ height: 100vh;
+}
+
+#menu {
+ display: flex;
+ overflow-x: auto;
+ overflow-y: hidden;
+ padding: 0.25em 0.25em 0;
+ background-color: #ffffff;
}
.button {
- background-color: #dfdfdf;
- border: 1px solid #cecece;
- border-bottom-width: 2px;
- color: rgba(0, 0, 0, 0.7);
- padding: 6px 4px 4px;
- text-align: center;
- text-decoration: none;
- font-size: 12px;
- margin: 0;
+ display: inline-table;
cursor: pointer;
- transition-duration: 100ms;
- order: 3;
- min-width: 40px;
-}
-
-.dark button {
- background-color: #222222;
- border-color: #343434;
- color: rgba(255, 255, 255, 0.5);
+ user-select: none;
+ -ms-user-select: none; /* Remove after Byond 516 */
+ text-align: center;
+ font-size: 1em;
+ min-width: 2.9em;
+ padding: 0.5em 0.5em 0.4em;
+ background-color: transparent;
+ color: rgba(0, 0, 0, 0.5);
+ border: 0;
+ border-bottom: 0.1667em solid transparent;
+ border-radius: 0.25em 0.25em 0 0;
}
.button:hover {
background-color: #ececec;
- transition-duration: 0;
}
-.dark button:hover {
- background-color: #2e2e2e;
-}
-
-.button:active,
.button.active {
- background-color: #ffffff;
+ background-color: #dfdfdf;
color: black;
- border-top-color: #cecece;
- border-left-color: #cecece;
- border-right-color: #cecece;
- border-bottom-color: #ffffff;
+ border-bottom-color: #000000;
}
-.dark .button:active,
-.dark .button.active {
- background-color: #444444;
- color: white;
- border-top-color: #343434;
- border-left-color: #343434;
- border-right-color: #343434;
- border-bottom-color: #ffffff;
+#under-menu {
+ height: 0.5em;
+ background-color: #eeeeee;
+}
+
+#statcontent {
+ flex: 1;
+ padding: 0.75em 0.5em;
+ overflow-y: scroll;
+ overflow-x: hidden;
}
.grid-container {
- margin: -2px;
- margin-right: -15px;
+ margin: 0;
}
.grid-item {
+ display: inline-flex;
position: relative;
- display: inline-block;
+ user-select: none;
+ -ms-user-select: none; /* Remove after Byond 516 */
width: 100%;
box-sizing: border-box;
- overflow: visible;
- padding: 3px 2px;
text-decoration: none;
+ background-color: transparent;
+ color: black;
+}
+
+.grid-item:hover {
+ color: #003399;
+ z-index: 1;
+}
+
+.grid-item-text {
+ display: inline-block;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ box-sizing: border-box;
+ white-space: nowrap;
+ width: 100%;
+ padding: 0.33em 0.5em;
+ border-radius: 0.25em;
+}
+
+.grid-item-text:hover {
+ position: absolute;
+ top: -1.33em;
+ white-space: normal;
+ background-color: #ececec;
+}
+
+.grid-item-text:active {
+ background-color: #dfdfdf;
}
@media only screen and (min-width: 300px) {
@@ -171,57 +146,67 @@ li a:hover:not(.active) {
}
}
-.grid-item:hover {
- z-index: 1;
+.status-info {
+ margin: 0 0.33em 0.25em;
}
-.grid-item:hover .grid-item-text {
- width: auto;
- text-decoration: underline;
+.interview_panel_stats,
+.interview_panel_controls {
+ margin-bottom: 1em;
}
-.grid-item-text {
- display: inline-block;
- width: 100%;
- background-color: #ffffff;
- margin: 0 -6px;
- padding: 0 6px;
- white-space: nowrap;
- overflow: hidden;
- text-overflow: ellipsis;
- pointer-events: none;
+/* Dark theme colors */
+body.dark {
+ background-color: #131313;
+ color: #b2c4dd;
+ scrollbar-base-color: #1c1c1c;
+ scrollbar-face-color: #3b3b3b;
+ scrollbar-3dlight-color: #252525;
+ scrollbar-highlight-color: #252525;
+ scrollbar-track-color: #1c1c1c;
+ scrollbar-arrow-color: #929292;
+ scrollbar-shadow-color: #3b3b3b;
}
-.dark .grid-item-text {
+.dark a {
+ color: #6699ff;
+}
+
+.dark a:hover,
+.dark .grid-item:hover {
+ color: #80bfff;
+}
+
+.dark #menu {
background-color: #131313;
}
-.link {
- display: inline;
- background: none;
- border: none;
- padding: 7px 14px;
- color: black;
- text-decoration: none;
- cursor: pointer;
- font-size: 13px;
- margin: 2px 2px;
+.dark .button {
+ color: rgba(255, 255, 255, 0.5);
}
-.dark .link {
- color: #abc6ec;
+.dark .button:hover {
+ background-color: #252525;
}
-.link:hover {
- text-decoration: underline;
+.dark .button.active {
+ background-color: #313131;
+ color: #d4dfec;
+ border-bottom-color: #d4dfec;
}
-img {
- -ms-interpolation-mode: nearest-neighbor;
- image-rendering: pixelated;
+.dark #under-menu {
+ background-color: #202020;
}
-.interview_panel_controls,
-.interview_panel_stats {
- margin-bottom: 10px;
+.dark .grid-item{
+ color: #b2c4dd;
+}
+
+.dark .grid-item-text:hover {
+ background-color: #252525;
+}
+
+.dark .grid-item-text:active {
+ background-color: #313131;
}
diff --git a/html/statbrowser.html b/html/statbrowser.html
index 1aea8811d58..ffd7425bd26 100644
--- a/html/statbrowser.html
+++ b/html/statbrowser.html
@@ -1,3 +1,5 @@
-
-
-
+
diff --git a/html/statbrowser.js b/html/statbrowser.js
index 0d89487af5b..f6c188c6edd 100644
--- a/html/statbrowser.js
+++ b/html/statbrowser.js
@@ -32,7 +32,6 @@ var turfname = "";
var imageRetryDelay = 500;
var imageRetryLimit = 50;
var menu = document.getElementById('menu');
-var under_menu = document.getElementById('under_menu');
var statcontentdiv = document.getElementById('statcontent');
var storedimages = [];
var split_admin_tabs = false;
@@ -58,23 +57,23 @@ function createStatusTab(name) {
if (!verb_tabs.includes(name) && !permanent_tabs.includes(name)) {
return;
}
- var B = document.createElement("BUTTON");
- B.onclick = function () {
+ var button = document.createElement("DIV");
+ button.onclick = function () {
tab_change(name);
this.blur();
+ statcontentdiv.focus();
};
- B.id = name;
- B.textContent = name;
- B.className = "button";
+ button.id = name;
+ button.textContent = name;
+ button.className = "button";
//ORDERING ALPHABETICALLY
- B.style.order = name.charCodeAt(0);
+ button.style.order = name.charCodeAt(0);
if (name == "Status" || name == "MC") {
- B.style.order = name == "Status" ? 1 : 2;
+ button.style.order = name == "Status" ? 1 : 2;
}
//END ORDERING
- menu.appendChild(B);
+ menu.appendChild(button);
SendTabToByond(name);
- under_menu.style.height = menu.clientHeight + 'px';
}
function removeStatusTab(name) {
@@ -88,7 +87,6 @@ function removeStatusTab(name) {
}
menu.removeChild(document.getElementById(name));
TakeTabFromByond(name);
- under_menu.style.height = menu.clientHeight + 'px';
}
function sortVerbs() {
@@ -104,10 +102,6 @@ function sortVerbs() {
})
}
-window.onresize = function () {
- under_menu.style.height = menu.clientHeight + 'px';
-}
-
function addPermanentTab(name) {
if (!permanent_tabs.includes(name)) {
permanent_tabs.push(name);
@@ -361,6 +355,7 @@ function draw_status() {
} else {
var div = document.createElement("div");
div.textContent = status_tab_parts[i];
+ div.className = "status-info";
document.getElementById("statcontent").appendChild(div);
}
}
@@ -717,6 +712,10 @@ function set_theme(which) {
}
}
+function set_font_size(size) {
+ document.body.style.setProperty('font-size', size);
+}
+
function set_style_sheet(sheet) {
if (document.getElementById("goonStyle")) {
var currentSheet = document.getElementById("goonStyle");
diff --git a/tgui/packages/tgui-panel/chat/ChatPageSettings.jsx b/tgui/packages/tgui-panel/chat/ChatPageSettings.jsx
index 4bd0383d7d7..ba577a1e5ef 100644
--- a/tgui/packages/tgui-panel/chat/ChatPageSettings.jsx
+++ b/tgui/packages/tgui-panel/chat/ChatPageSettings.jsx
@@ -30,7 +30,23 @@ export const ChatPageSettings = (props) => {
return (
-
+ {!!!page.isMain && (
+
+
+ )}
+
{
}
/>
+ {!!!page.isMain && (
+
+
+ )}
{
}),
)
}
- />
+ >
+ Mute
+
- {!page.isMain ? (
+ {!!!page.isMain && (
- ) : (
- ''
- )}
-
-
-
- {!page.isMain ? (
-
- Reorder Chat:
-
-
-
- ) : (
- ''
)}
diff --git a/tgui/packages/tgui-panel/settings/SettingsGeneral.tsx b/tgui/packages/tgui-panel/settings/SettingsGeneral.tsx
index 8203f031395..3599f24e707 100644
--- a/tgui/packages/tgui-panel/settings/SettingsGeneral.tsx
+++ b/tgui/packages/tgui-panel/settings/SettingsGeneral.tsx
@@ -8,8 +8,8 @@ import {
Divider,
Input,
LabeledList,
- NumberInput,
Section,
+ Slider,
Stack,
} from 'tgui/components';
@@ -20,10 +20,11 @@ import { FONTS } from './constants';
import { selectSettings } from './selectors';
export function SettingsGeneral(props) {
- const { theme, fontFamily, fontSize, lineHeight } =
+ const { theme, fontFamily, fontSize, lineHeight, statLinked, statFontSize } =
useSelector(selectSettings);
const dispatch = useDispatch();
const [freeFont, setFreeFont] = useState(false);
+ const [statFont, setStatFont] = useState(false);
return (
@@ -109,35 +110,66 @@ export function SettingsGeneral(props) {
)}
-
- toFixed(value)}
- onChange={(value) =>
- dispatch(
- updateSettings({
- fontSize: value,
- }),
- )
- }
- />
+
+
+
+ toFixed(value)}
+ onChange={(e, value) =>
+ dispatch(
+ updateSettings({
+ [statFont ? 'statFontSize' : 'fontSize']: value,
+ }),
+ )
+ }
+ />
+
+
+
+
+ {!!statFont && (
+
+
+ )}
+
- toFixed(value, 2)}
- onDrag={(value) =>
+ onDrag={(e, value) =>
dispatch(
updateSettings({
lineHeight: value,
diff --git a/tgui/packages/tgui-panel/settings/middleware.ts b/tgui/packages/tgui-panel/settings/middleware.ts
index 01ad8856190..b867d36de0d 100644
--- a/tgui/packages/tgui-panel/settings/middleware.ts
+++ b/tgui/packages/tgui-panel/settings/middleware.ts
@@ -17,6 +17,7 @@ import {
import { FONTS_DISABLED } from './constants';
import { selectSettings } from './selectors';
+let setStatFontTimer: NodeJS.Timeout;
let overrideRule: HTMLStyleElement;
let overrideFontFamily: string | undefined;
let overrideFontSize: string;
@@ -44,8 +45,23 @@ function updateGlobalOverrideRule() {
document.body.style.setProperty('font-size', overrideFontSize);
}
-function setGlobalFontSize(fontSize: string) {
+function setGlobalFontSize(
+ fontSize: string,
+ statFontSize: string,
+ statLinked: boolean,
+) {
overrideFontSize = `${fontSize}px`;
+
+ // Used solution from theme.ts
+ clearInterval(setStatFontTimer);
+ Byond.command(
+ `.output statbrowser:set_font_size ${statLinked ? fontSize : statFontSize}px`,
+ );
+ setStatFontTimer = setTimeout(() => {
+ Byond.command(
+ `.output statbrowser:set_font_size ${statLinked ? fontSize : statFontSize}px`,
+ );
+ }, 1500);
}
function setGlobalFontFamily(fontFamily: string) {
@@ -86,7 +102,11 @@ export function settingsMiddleware(store) {
const settings = selectSettings(store.getState());
// Update global UI font size
- setGlobalFontSize(settings.fontSize);
+ setGlobalFontSize(
+ settings.fontSize,
+ settings.statFontSize,
+ settings.statLinked,
+ );
setGlobalFontFamily(settings.fontFamily);
updateGlobalOverrideRule();
diff --git a/tgui/packages/tgui-panel/settings/reducer.ts b/tgui/packages/tgui-panel/settings/reducer.ts
index 62d08986a14..33df1a745f6 100644
--- a/tgui/packages/tgui-panel/settings/reducer.ts
+++ b/tgui/packages/tgui-panel/settings/reducer.ts
@@ -38,6 +38,8 @@ const initialState = {
visible: false,
activeTab: SETTINGS_TABS[0].id,
},
+ statLinked: true,
+ statFontSize: 12,
} as const;
export function settingsReducer(
diff --git a/tgui/packages/tgui-panel/styles/themes/light.scss b/tgui/packages/tgui-panel/styles/themes/light.scss
index 19ddd3642cd..f8bfd67ee93 100644
--- a/tgui/packages/tgui-panel/styles/themes/light.scss
+++ b/tgui/packages/tgui-panel/styles/themes/light.scss
@@ -34,7 +34,12 @@
// Components
@include meta.load-css(
'~tgui/styles/components/Tabs.scss',
- $with: ('text-color': rgba(0, 0, 0, 0.5), 'color-default': rgba(0, 0, 0, 1))
+ $with: (
+ 'text-color': rgba(0, 0, 0, 0.5),
+ 'color-default': rgba(0, 0, 0, 1),
+ 'tab-color-selected': rgba(0, 0, 0, 0.125),
+ 'tab-color-hovered': rgba(0, 0, 0, 0.075)
+ )
);
@include meta.load-css('~tgui/styles/components/Section.scss');
@include meta.load-css(
@@ -52,7 +57,7 @@
'~tgui/styles/components/Input.scss',
$with: (
'border-color': colors.fg(colors.$label),
- 'background-color': #ffffff
+ 'background-color': #e6e6e6
)
);
@include meta.load-css('~tgui/styles/components/NumberInput.scss');
diff --git a/tgui/packages/tgui-panel/themes.ts b/tgui/packages/tgui-panel/themes.ts
index 67061ff1f4c..98e5e87ed42 100644
--- a/tgui/packages/tgui-panel/themes.ts
+++ b/tgui/packages/tgui-panel/themes.ts
@@ -6,9 +6,20 @@
export const THEMES = ['light', 'dark'];
-const COLOR_DARK_BG = '#202020';
-const COLOR_DARK_BG_DARKER = '#171717';
-const COLOR_DARK_TEXT = '#a4bad6';
+const COLORS = {
+ DARK: {
+ BG_BASE: '#202020',
+ BG_SECOND: '#171717',
+ BUTTON: '#494949',
+ TEXT: '#A4BAD6',
+ },
+ LIGHT: {
+ BG_BASE: '#EEEEEE',
+ BG_SECOND: '#FFFFFF',
+ BUTTON: 'none',
+ TEXT: '#000000',
+ },
+};
let setClientThemeTimer: NodeJS.Timeout;
@@ -31,112 +42,53 @@ export const setClientTheme = (name) => {
Byond.command(`.output statbrowser:set_theme ${name}`);
}, 1500);
- if (name === 'light') {
- return Byond.winset({
- // Main windows
- 'infowindow.background-color': 'none',
- 'infowindow.text-color': '#000000',
- 'info.background-color': 'none',
- 'info.text-color': '#000000',
- 'browseroutput.background-color': 'none',
- 'browseroutput.text-color': '#000000',
- 'outputwindow.background-color': 'none',
- 'outputwindow.text-color': '#000000',
- 'mainwindow.background-color': 'none',
- 'split.background-color': 'none',
- // Buttons
- 'changelog.background-color': 'none',
- 'changelog.text-color': '#000000',
- 'rules.background-color': 'none',
- 'rules.text-color': '#000000',
- 'wiki.background-color': 'none',
- 'wiki.text-color': '#000000',
- 'forum.background-color': 'none',
- 'forum.text-color': '#000000',
- 'github.background-color': 'none',
- 'github.text-color': '#000000',
- 'report-issue.background-color': 'none',
- 'report-issue.text-color': '#000000',
- 'fullscreen-toggle.background-color': 'none',
- 'fullscreen-toggle.text-color': '#000000',
- // Status and verb tabs
- 'output.background-color': 'none',
- 'output.text-color': '#000000',
- 'statwindow.background-color': 'none',
- 'statwindow.text-color': '#000000',
- 'stat.background-color': '#FFFFFF',
- 'stat.tab-background-color': 'none',
- 'stat.text-color': '#000000',
- 'stat.tab-text-color': '#000000',
- 'stat.prefix-color': '#000000',
- 'stat.suffix-color': '#000000',
- // Say, OOC, me Buttons etc.
- 'saybutton.background-color': 'none',
- 'saybutton.text-color': '#000000',
- 'oocbutton.background-color': 'none',
- 'oocbutton.text-color': '#000000',
- 'mebutton.background-color': 'none',
- 'mebutton.text-color': '#000000',
- 'asset_cache_browser.background-color': 'none',
- 'asset_cache_browser.text-color': '#000000',
- 'tooltip.background-color': 'none',
- 'tooltip.text-color': '#000000',
- 'input.background-color': '#FFFFFF',
- 'input.text-color': '#000000',
- });
- }
- if (name === 'dark') {
- Byond.winset({
- // Main windows
- 'infowindow.background-color': COLOR_DARK_BG,
- 'infowindow.text-color': COLOR_DARK_TEXT,
- 'info.background-color': COLOR_DARK_BG,
- 'info.text-color': COLOR_DARK_TEXT,
- 'browseroutput.background-color': COLOR_DARK_BG,
- 'browseroutput.text-color': COLOR_DARK_TEXT,
- 'outputwindow.background-color': COLOR_DARK_BG,
- 'outputwindow.text-color': COLOR_DARK_TEXT,
- 'mainwindow.background-color': COLOR_DARK_BG,
- 'split.background-color': COLOR_DARK_BG,
- // Buttons
- 'changelog.background-color': '#494949',
- 'changelog.text-color': COLOR_DARK_TEXT,
- 'rules.background-color': '#494949',
- 'rules.text-color': COLOR_DARK_TEXT,
- 'wiki.background-color': '#494949',
- 'wiki.text-color': COLOR_DARK_TEXT,
- 'forum.background-color': '#494949',
- 'forum.text-color': COLOR_DARK_TEXT,
- 'github.background-color': '#3a3a3a',
- 'github.text-color': COLOR_DARK_TEXT,
- 'report-issue.background-color': '#492020',
- 'report-issue.text-color': COLOR_DARK_TEXT,
- 'fullscreen-toggle.background-color': '#494949',
- 'fullscreen-toggle.text-color': COLOR_DARK_TEXT,
- // Status and verb tabs
- 'output.background-color': COLOR_DARK_BG_DARKER,
- 'output.text-color': COLOR_DARK_TEXT,
- 'statwindow.background-color': COLOR_DARK_BG_DARKER,
- 'statwindow.text-color': COLOR_DARK_TEXT,
- 'stat.background-color': COLOR_DARK_BG_DARKER,
- 'stat.tab-background-color': COLOR_DARK_BG,
- 'stat.text-color': COLOR_DARK_TEXT,
- 'stat.tab-text-color': COLOR_DARK_TEXT,
- 'stat.prefix-color': COLOR_DARK_TEXT,
- 'stat.suffix-color': COLOR_DARK_TEXT,
- // Say, OOC, me Buttons etc.
- 'saybutton.background-color': COLOR_DARK_BG,
- 'saybutton.text-color': COLOR_DARK_TEXT,
- 'oocbutton.background-color': COLOR_DARK_BG,
- 'oocbutton.text-color': COLOR_DARK_TEXT,
- 'mebutton.background-color': COLOR_DARK_BG,
- 'mebutton.text-color': COLOR_DARK_TEXT,
- 'asset_cache_browser.background-color': COLOR_DARK_BG,
- 'asset_cache_browser.text-color': COLOR_DARK_TEXT,
- 'tooltip.background-color': COLOR_DARK_BG,
- 'tooltip.text-color': COLOR_DARK_TEXT,
- 'input.background-color': COLOR_DARK_BG_DARKER,
- 'input.text-color': COLOR_DARK_TEXT,
- });
+ const themeColor = COLORS[name.toUpperCase()];
+ if (!themeColor) {
+ return;
}
+
+ return Byond.winset({
+ // Main windows
+ 'infowindow.background-color': themeColor.BG_BASE,
+ 'infowindow.text-color': themeColor.TEXT,
+ 'info.background-color': themeColor.BG_BASE,
+ 'info.text-color': themeColor.TEXT,
+ 'browseroutput.background-color': themeColor.BG_BASE,
+ 'browseroutput.text-color': themeColor.TEXT,
+ 'outputwindow.background-color': themeColor.BG_BASE,
+ 'outputwindow.text-color': themeColor.TEXT,
+ 'mainwindow.background-color': themeColor.BG_BASE,
+ 'split.background-color': themeColor.BG_BASE,
+ // Buttons
+ 'changelog.background-color': themeColor.BUTTON,
+ 'changelog.text-color': themeColor.TEXT,
+ 'rules.background-color': themeColor.BUTTON,
+ 'rules.text-color': themeColor.TEXT,
+ 'wiki.background-color': themeColor.BUTTON,
+ 'wiki.text-color': themeColor.TEXT,
+ 'forum.background-color': themeColor.BUTTON,
+ 'forum.text-color': themeColor.TEXT,
+ 'github.background-color': themeColor.BUTTON,
+ 'github.text-color': themeColor.TEXT,
+ 'report-issue.background-color': themeColor.BUTTON,
+ 'report-issue.text-color': themeColor.TEXT,
+ 'fullscreen-toggle.background-color': themeColor.BUTTON,
+ 'fullscreen-toggle.text-color': themeColor.TEXT,
+ // Status and verb tabs
+ 'output.background-color': themeColor.BG_BASE,
+ 'output.text-color': themeColor.TEXT,
+ // Say, OOC, me Buttons etc.
+ 'saybutton.background-color': themeColor.BG_BASE,
+ 'saybutton.text-color': themeColor.TEXT,
+ 'oocbutton.background-color': themeColor.BG_BASE,
+ 'oocbutton.text-color': themeColor.TEXT,
+ 'mebutton.background-color': themeColor.BG_BASE,
+ 'mebutton.text-color': themeColor.TEXT,
+ 'asset_cache_browser.background-color': themeColor.BG_BASE,
+ 'asset_cache_browser.text-color': themeColor.TEXT,
+ 'tooltip.background-color': themeColor.BG_BASE,
+ 'tooltip.text-color': themeColor.TEXT,
+ 'input.background-color': themeColor.BG_SECOND,
+ 'input.text-color': themeColor.TEXT,
+ });
};