Calling CUI menu twice causes it to persist until restart
This may be annoying bug. I fixed it on my own by altering OpenCraftingMenu method - feel free to update with below

 private void OpenCraftingMenu(BasePlayer player)
        {
			//BasePlayer player = arg.Connection.player as BasePlayer;
            if (player == null)
                return;

            //OpenMap(player);
            CuiHelper.DestroyUi(player, UIMain);
            CuiHelper.DestroyUi(player, UIPanel);   
			
            CloseMap(player);

            CuiElementContainer container = NWUI.CreateElementContainer(UIMain, UIColors["dark"], "0 0.92", "1 1");

            NWUI.CreatePanel(ref container, UIMain, UIColors["light"], "0.01 0.05", "0.99 0.95", true);
            NWUI.CreateLabel(ref container, UIMain, "", $"{configData.Options.MSG_MainColor}{Title}</color>", 30, "0.05 0", "0.2 1");

            int number = 0;
            if (configData.Bullets.Enabled && HasPermission(player, NukeType.Bullet))
            {
                CreateMenuButton(ref container, UIMain, MSG("Bullets", player.UserIDString), "NWUI_ChangeElement bullet", number);
                number++;
            }

            if (configData.Explosives.Enabled && HasPermission(player, NukeType.Explosive))
            {
                CreateMenuButton(ref container, UIMain, MSG("Explosives", player.UserIDString), "NWUI_ChangeElement explosive", number);
                number++;
            }

            if (configData.Grenades.Enabled && HasPermission(player, NukeType.Grenade))
            {
                CreateMenuButton(ref container, UIMain, MSG("Grenades", player.UserIDString), "NWUI_ChangeElement grenade", number);
                number++;
            }

            if (configData.Mines.Enabled && HasPermission(player, NukeType.Mine))
            {
                CreateMenuButton(ref container, UIMain, MSG("Mines", player.UserIDString), "NWUI_ChangeElement mine", number);
                number++;
            }

            if (configData.Rockets.Enabled && HasPermission(player, NukeType.Rocket))
            {
                CreateMenuButton(ref container, UIMain, MSG("Rockets", player.UserIDString), "NWUI_ChangeElement rocket", number);
                number++;
            }

            CreateMenuButton(ref container, UIMain, MSG("Close", player.UserIDString), "NWUI_DestroyAll", number);

			CuiHelper.AddUi(player, container);
			
        }​
You would need to destroy any existing before creating a new, and on player disconnection or plugin unload.