From d18cd11713ed4ec350e89bd764a6db5ebce0ace3 Mon Sep 17 00:00:00 2001 From: Kashargul <144968721+Kashargul@users.noreply.github.com> Date: Tue, 8 Apr 2025 22:49:38 +0200 Subject: [PATCH] [TGUI v6] Migration to CSS Variables, styles refactor & React 19 (#17487) * Initial Port of tg's tgui 2.0 * initial * first UI fixes * fix retro theme * rd console * wiki theme * better tgui say handling * Ui scaling port * smaller gap * guh * reset subcats on main cat change * blink a bit later * tofixed * fixed * currently not fully supported * increase that * fix powermonitor chart * typescript up * tgui core up --- code/datums/browser.dm | 16 +- code/game/machinery/telecomms/broadcaster.dm | 4 - code/modules/admin/player_panel.dm | 7 +- .../admin/view_variables/view_variables.dm | 9 +- code/modules/client/client defines.dm | 3 + code/modules/client/client procs.dm | 9 +- .../client/preferences/types/game/ui.dm | 13 + .../silicon/robot/subtypes/lost_drone.dm | 1 + code/modules/tgui/tgui.dm | 1 + code/modules/tgui_input/say_modal/modal.dm | 11 +- tgui/.yarn/sdks/typescript/package.json | 2 +- tgui/package.json | 14 +- tgui/packages/tgui-bench/package.json | 12 +- .../packages/tgui-bench/tests/Button.test.tsx | 9 +- .../tgui-bench/tests/Tooltip.test.tsx | 3 +- tgui/packages/tgui-dev-server/package.json | 2 +- tgui/packages/tgui-panel/chat/ChatPanel.tsx | 2 +- tgui/packages/tgui-panel/chat/ChatTabs.tsx | 22 +- tgui/packages/tgui-panel/package.json | 8 +- .../tgui-panel/styles/components/Chat.scss | 28 +- .../tgui-panel/styles/components/Ping.scss | 21 +- .../styles/components/UnreadCount.scss | 12 + tgui/packages/tgui-panel/styles/main.scss | 46 +- .../tgui-panel/styles/tgchat/chat-dark.scss | 30 +- .../tgui-panel/styles/tgchat/chat-light.scss | 31 +- .../styles/tgchat/chat-vchatdark.scss | 30 +- .../styles/tgchat/chat-vchatlight.scss | 19 +- .../tgui-panel/styles/themes/light.scss | 101 +--- .../tgui-panel/styles/themes/vchatdark.scss | 30 +- .../tgui-panel/styles/themes/vchatlight.scss | 101 +--- tgui/packages/tgui-say/TguiSay.tsx | 45 +- tgui/packages/tgui-say/helpers.ts | 47 +- tgui/packages/tgui-say/package.json | 10 +- tgui/packages/tgui-say/styles/styles.scss | 24 +- tgui/packages/tgui/assets/bg-admin.svg | 29 ++ tgui/packages/tgui/assets/bg-cat.svg | 24 + .../tgui/assets/bg-spookycomp-compressed.svg | 1 + .../tgui/assets/bg-spookycomp-raw.svg | 485 ++++++++++++++++++ tgui/packages/tgui/assets/bg-spookycomp.svg | 32 ++ .../assets/bg-synthsunset-c-grid-size.svg | 49 ++ .../tgui/assets/bg-synthsunset-c-grid.svg | 49 ++ tgui/packages/tgui/backend.ts | 6 +- tgui/packages/tgui/components/Interactive.tsx | 2 +- tgui/packages/tgui/drag.ts | 34 +- tgui/packages/tgui/interfaces/Canister.tsx | 1 + tgui/packages/tgui/interfaces/Canvas.tsx | 2 +- .../ChemDispenser/ChemDispenserChemicals.tsx | 8 +- .../DNAModifierMainRadiationEmitter.tsx | 3 + .../tgui/interfaces/Flamethrower/index.tsx | 2 + .../tgui/interfaces/GasTemperatureSystem.tsx | 1 + .../tgui/interfaces/GyrotronControl.tsx | 3 + .../tgui/interfaces/ICAssembly/Port.tsx | 2 +- tgui/packages/tgui/interfaces/JanitorCart.tsx | 6 +- tgui/packages/tgui/interfaces/MobSpawner.tsx | 2 + .../ModifyRobotTabs/ModifyRobotModules.tsx | 4 +- .../tgui/interfaces/ModifyRobot/index.tsx | 8 +- .../OperatingComputerOptions.tsx | 5 +- tgui/packages/tgui/interfaces/PanDEMIC.tsx | 3 +- tgui/packages/tgui/interfaces/Pda/index.tsx | 2 +- .../PowerMonitor/PowerMonitorFocus.tsx | 2 +- .../interfaces/PreferencesMenu/TabbedMenu.tsx | 6 +- .../features/game_preferences/ui.tsx | 7 + .../features/game_preferences/ui_style.tsx | 3 +- .../WikiPages/WikiSearchPage.tsx | 22 +- .../WikiPages/WikiSubPages/WikiNoDataPage.tsx | 44 +- .../interfaces/PublicLibraryWiki/index.tsx | 13 +- tgui/packages/tgui/interfaces/RCON/index.tsx | 2 +- .../ResearchConsole/pages/Constructor.tsx | 157 +++--- .../ResearchConsole/pages/DesignList.tsx | 61 ++- tgui/packages/tgui/interfaces/SpaceHeater.tsx | 4 +- .../SupplyConsole/SupplyConsoleMenu.tsx | 84 +-- .../SupplyConsoleMenuHistoryExport.tsx | 2 +- .../SupplyConsole/SupplyConsoleMenuOrder.tsx | 63 ++- .../SupplyConsoleMenuOrderList.tsx | 2 +- .../SupplyConsoleShuttleStatus.tsx | 4 +- .../tgui/interfaces/SupplyConsole/index.tsx | 24 +- .../VoreUserPreferencesAesthetic.tsx | 8 +- .../VoreUserPreferencesDevouring.tsx | 7 +- .../VoreUserPreferencesMechanical.tsx | 7 +- .../VoreUserPreferencesSoulcatcher.tsx | 7 +- .../VoreUserPreferencesSpawn.tsx | 7 +- .../VoreUserPreferencesSpontaneous.tsx | 7 +- tgui/packages/tgui/layouts/TitleBar.tsx | 83 +++ tgui/packages/tgui/layouts/Window.tsx | 113 +--- tgui/packages/tgui/package.json | 8 +- .../tgui/styles/atomic/candystripe.scss | 9 +- tgui/packages/tgui/styles/atomic/color.scss | 13 +- tgui/packages/tgui/styles/atomic/links.scss | 27 +- tgui/packages/tgui/styles/atomic/outline.scss | 8 +- tgui/packages/tgui/styles/base.scss | 19 +- tgui/packages/tgui/styles/colors.scss | 118 ++--- .../tgui/styles/components/NanoMap.scss | 4 +- tgui/packages/tgui/styles/css-variables.scss | 27 + tgui/packages/tgui/styles/functions.scss | 53 +- .../tgui/styles/interfaces/AlertModal.scss | 10 +- .../tgui/styles/interfaces/CameraConsole.scss | 4 +- .../tgui/styles/interfaces/Changelog.scss | 2 +- .../tgui/styles/interfaces/CrewManifest.scss | 34 +- .../interfaces/ExperimentConfigure.scss | 28 +- .../tgui/styles/interfaces/IDCard.scss | 4 +- .../tgui/styles/interfaces/InputModal.scss | 10 +- .../styles/interfaces/IntegratedCircuit.scss | 102 +++- .../tgui/styles/interfaces/ListInput.scss | 12 +- .../tgui/styles/interfaces/NuclearBomb.scss | 81 +-- .../tgui/styles/interfaces/Roulette.scss | 16 +- .../packages/tgui/styles/interfaces/Safe.scss | 28 +- .../tgui/styles/interfaces/Techweb.scss | 56 +- .../styles/interfaces/TinderMessaging.scss | 11 +- .../tgui/styles/interfaces/Turbolift.scss | 12 +- tgui/packages/tgui/styles/layouts/Layout.scss | 40 +- .../tgui/styles/layouts/NtosWindow.scss | 7 +- .../tgui/styles/layouts/TitleBar.scss | 177 +++---- tgui/packages/tgui/styles/layouts/Window.scss | 54 +- tgui/packages/tgui/styles/main.scss | 38 +- tgui/packages/tgui/styles/reset.scss | 24 +- .../packages/tgui/styles/themes/abductor.scss | 71 +-- .../packages/tgui/styles/themes/abstract.scss | 2 +- tgui/packages/tgui/styles/themes/admin.scss | 19 + tgui/packages/tgui/styles/themes/bingle.scss | 10 +- .../tgui/styles/themes/cardtable.scss | 61 +-- .../tgui/styles/themes/hackerman.scss | 63 +-- .../tgui/styles/themes/malfunction.scss | 71 +-- tgui/packages/tgui/styles/themes/neutral.scss | 46 +- tgui/packages/tgui/styles/themes/ntOS95.scss | 127 +++++ tgui/packages/tgui/styles/themes/ntos.scss | 44 +- .../packages/tgui/styles/themes/ntos_cat.scss | 52 ++ .../tgui/styles/themes/ntos_darkmode.scss | 17 + .../tgui/styles/themes/ntos_lightmode.scss | 25 + .../tgui/styles/themes/ntos_spooky.scss | 22 + .../tgui/styles/themes/ntos_synth.scss | 68 +++ .../tgui/styles/themes/ntos_terminal.scss | 78 +++ tgui/packages/tgui/styles/themes/paper.scss | 105 ++-- .../tgui/styles/themes/pda-retro.scss | 86 ++-- tgui/packages/tgui/styles/themes/retro.scss | 85 ++- .../tgui/styles/themes/spookyconsole.scss | 22 + .../tgui/styles/themes/syndicate.scss | 70 +-- tgui/packages/tgui/styles/themes/wizard.scss | 71 +-- tgui/yarn.lock | 135 +++-- 138 files changed, 2624 insertions(+), 1987 deletions(-) create mode 100644 tgui/packages/tgui-panel/styles/components/UnreadCount.scss create mode 100644 tgui/packages/tgui/assets/bg-admin.svg create mode 100644 tgui/packages/tgui/assets/bg-cat.svg create mode 100644 tgui/packages/tgui/assets/bg-spookycomp-compressed.svg create mode 100644 tgui/packages/tgui/assets/bg-spookycomp-raw.svg create mode 100644 tgui/packages/tgui/assets/bg-spookycomp.svg create mode 100644 tgui/packages/tgui/assets/bg-synthsunset-c-grid-size.svg create mode 100644 tgui/packages/tgui/assets/bg-synthsunset-c-grid.svg create mode 100644 tgui/packages/tgui/layouts/TitleBar.tsx create mode 100644 tgui/packages/tgui/styles/css-variables.scss create mode 100644 tgui/packages/tgui/styles/themes/admin.scss create mode 100644 tgui/packages/tgui/styles/themes/ntOS95.scss create mode 100644 tgui/packages/tgui/styles/themes/ntos_cat.scss create mode 100644 tgui/packages/tgui/styles/themes/ntos_darkmode.scss create mode 100644 tgui/packages/tgui/styles/themes/ntos_lightmode.scss create mode 100644 tgui/packages/tgui/styles/themes/ntos_spooky.scss create mode 100644 tgui/packages/tgui/styles/themes/ntos_synth.scss create mode 100644 tgui/packages/tgui/styles/themes/ntos_terminal.scss create mode 100644 tgui/packages/tgui/styles/themes/spookyconsole.scss diff --git a/code/datums/browser.dm b/code/datums/browser.dm index f15363958f..a5e9896d41 100644 --- a/code/datums/browser.dm +++ b/code/datums/browser.dm @@ -71,6 +71,14 @@ for (file in stylesheets) head_content += "" + if(user.client?.window_scaling && user.client?.window_scaling != 1 && !user.client?.prefs.read_preference(/datum/preference/toggle/ui_scale) && width && height) + head_content += {" + + "} for (file in scripts) head_content += "" @@ -108,8 +116,12 @@ to_chat(user, span_userdanger("The [title] browser you tried to open failed a sanity check! Please report this on GitHub!")) return var/window_size = "" - if (width && height) - window_size = "size=[width]x[height];" + if(width && height) + if(user.client?.prefs?.read_preference(/datum/preference/toggle/ui_scale)) + var/scaling = user.client.window_scaling + window_size = "size=[width * scaling]x[height * scaling];" + else + window_size = "size=[width]x[height];" var/datum/asset/simple/namespaced/common/common_asset = get_asset_datum(/datum/asset/simple/namespaced/common) common_asset.send(user) if (stylesheets.len) diff --git a/code/game/machinery/telecomms/broadcaster.dm b/code/game/machinery/telecomms/broadcaster.dm index 04fe4c0c6d..00c32d540d 100644 --- a/code/game/machinery/telecomms/broadcaster.dm +++ b/code/game/machinery/telecomms/broadcaster.dm @@ -30,10 +30,6 @@ var/message_delay = 0 // To make sure restarting the recentmessages list is kept //Linked bluespace radios var/list/linked_radios_weakrefs = list() -/obj/machinery/telecomms/processor/Initialize(mapload) - . = ..() - default_apply_parts() - /obj/machinery/telecomms/broadcaster/proc/link_radio(var/obj/item/radio/R) if(!istype(R)) return diff --git a/code/modules/admin/player_panel.dm b/code/modules/admin/player_panel.dm index 8f8db066b3..0f1e7f62c6 100644 --- a/code/modules/admin/player_panel.dm +++ b/code/modules/admin/player_panel.dm @@ -2,12 +2,14 @@ /datum/admins/proc/player_panel_new()//The new one if (!usr.client.holder) return + var/ui_scale = owner.prefs.read_preference(/datum/preference/toggle/ui_scale) var/dat = "