diff --git a/src/mods/LuaLoader.cpp b/src/mods/LuaLoader.cpp
index 5aad714a..30ef9980 100644
--- a/src/mods/LuaLoader.cpp
+++ b/src/mods/LuaLoader.cpp
@@ -82,10 +82,8 @@ void LuaLoader::on_frame() {
     }
 }
 
-void LuaLoader::on_draw_ui() {
-    ImGui::SetNextItemOpen(false, ImGuiCond_::ImGuiCond_Once);
-
-    if (ImGui::CollapsingHeader(get_name().data())) {
+void LuaLoader::on_draw_sidebar_entry(std::string_view in_entry) {
+    if (in_entry == "Main") {
         if (ImGui::Button("Run script")) {
             OPENFILENAME ofn{};
             char file[260]{};
@@ -201,9 +199,12 @@ void LuaLoader::on_draw_ui() {
         } else {
             ImGui::Text("No scripts loaded.");
         }
+
+        ImGui::TreePop();
     }
 
-    if (ImGui::CollapsingHeader("Script Generated UI")) {
+
+    if (in_entry == "Script UI") {
         std::scoped_lock _{m_access_mutex};
 
         if (m_states.empty()) {
@@ -213,6 +214,8 @@ void LuaLoader::on_draw_ui() {
         for (auto& state : m_states) {
             state->on_draw_ui();
         }
+
+        ImGui::TreePop();
     }
 }
 
diff --git a/src/mods/LuaLoader.hpp b/src/mods/LuaLoader.hpp
index c938964a..b7ad5704 100644
--- a/src/mods/LuaLoader.hpp
+++ b/src/mods/LuaLoader.hpp
@@ -21,7 +21,15 @@ class LuaLoader : public Mod {
     std::string_view get_name() const override { return "LuaLoader"; }
     bool is_advanced_mod() const override { return true; }
     std::optional<std::string> on_initialize_d3d_thread() override;
-    void on_draw_ui() override;
+
+    std::vector<SidebarEntryInfo> get_sidebar_entries() override {
+        return {
+            {"Main", true},
+            {"Script UI", true}
+        };
+    }
+
+    void on_draw_sidebar_entry(std::string_view in_entry);
     void on_frame() override;
 
     void on_config_load(const utility::Config& cfg, bool set_defaults) override;