@minecraft-docker/mcctl-console 1.15.5 → 2.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (305) hide show
  1. package/.next/standalone/package.json +1 -1
  2. package/.next/standalone/platform/services/mcctl-console/.next/BUILD_ID +1 -1
  3. package/.next/standalone/platform/services/mcctl-console/.next/app-build-manifest.json +190 -134
  4. package/.next/standalone/platform/services/mcctl-console/.next/app-path-routes-manifest.json +1 -1
  5. package/.next/standalone/platform/services/mcctl-console/.next/build-manifest.json +4 -4
  6. package/.next/standalone/platform/services/mcctl-console/.next/prerender-manifest.json +1 -1
  7. package/.next/standalone/platform/services/mcctl-console/.next/routes-manifest.json +1 -1
  8. package/.next/standalone/platform/services/mcctl-console/.next/server/app/(main)/audit-logs/page.js +1 -1
  9. package/.next/standalone/platform/services/mcctl-console/.next/server/app/(main)/audit-logs/page.js.nft.json +1 -1
  10. package/.next/standalone/platform/services/mcctl-console/.next/server/app/(main)/audit-logs/page_client-reference-manifest.js +1 -1
  11. package/.next/standalone/platform/services/mcctl-console/.next/server/app/(main)/backups/page.js +1 -1
  12. package/.next/standalone/platform/services/mcctl-console/.next/server/app/(main)/backups/page.js.nft.json +1 -1
  13. package/.next/standalone/platform/services/mcctl-console/.next/server/app/(main)/backups/page_client-reference-manifest.js +1 -1
  14. package/.next/standalone/platform/services/mcctl-console/.next/server/app/(main)/dashboard/page.js +1 -1
  15. package/.next/standalone/platform/services/mcctl-console/.next/server/app/(main)/dashboard/page.js.nft.json +1 -1
  16. package/.next/standalone/platform/services/mcctl-console/.next/server/app/(main)/dashboard/page_client-reference-manifest.js +1 -1
  17. package/.next/standalone/platform/services/mcctl-console/.next/server/app/(main)/players/page.js +1 -1
  18. package/.next/standalone/platform/services/mcctl-console/.next/server/app/(main)/players/page.js.nft.json +1 -1
  19. package/.next/standalone/platform/services/mcctl-console/.next/server/app/(main)/players/page_client-reference-manifest.js +1 -1
  20. package/.next/standalone/platform/services/mcctl-console/.next/server/app/(main)/routing/page.js +5 -5
  21. package/.next/standalone/platform/services/mcctl-console/.next/server/app/(main)/routing/page.js.nft.json +1 -1
  22. package/.next/standalone/platform/services/mcctl-console/.next/server/app/(main)/routing/page_client-reference-manifest.js +1 -1
  23. package/.next/standalone/platform/services/mcctl-console/.next/server/app/(main)/servers/[name]/console/page.js +1 -1
  24. package/.next/standalone/platform/services/mcctl-console/.next/server/app/(main)/servers/[name]/console/page.js.nft.json +1 -1
  25. package/.next/standalone/platform/services/mcctl-console/.next/server/app/(main)/servers/[name]/console/page_client-reference-manifest.js +1 -1
  26. package/.next/standalone/platform/services/mcctl-console/.next/server/app/(main)/servers/[name]/page.js +1 -1
  27. package/.next/standalone/platform/services/mcctl-console/.next/server/app/(main)/servers/[name]/page.js.nft.json +1 -1
  28. package/.next/standalone/platform/services/mcctl-console/.next/server/app/(main)/servers/[name]/page_client-reference-manifest.js +1 -1
  29. package/.next/standalone/platform/services/mcctl-console/.next/server/app/(main)/servers/page.js +1 -1
  30. package/.next/standalone/platform/services/mcctl-console/.next/server/app/(main)/servers/page.js.nft.json +1 -1
  31. package/.next/standalone/platform/services/mcctl-console/.next/server/app/(main)/servers/page_client-reference-manifest.js +1 -1
  32. package/.next/standalone/platform/services/mcctl-console/.next/server/app/(main)/settings/page.js +1 -0
  33. package/.next/standalone/platform/services/mcctl-console/.next/server/app/(main)/settings/page.js.nft.json +1 -0
  34. package/.next/standalone/platform/services/mcctl-console/.next/server/app/(main)/settings/page_client-reference-manifest.js +1 -0
  35. package/.next/standalone/platform/services/mcctl-console/.next/server/app/(main)/worlds/page.js +1 -1
  36. package/.next/standalone/platform/services/mcctl-console/.next/server/app/(main)/worlds/page.js.nft.json +1 -1
  37. package/.next/standalone/platform/services/mcctl-console/.next/server/app/(main)/worlds/page_client-reference-manifest.js +1 -1
  38. package/.next/standalone/platform/services/mcctl-console/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  39. package/.next/standalone/platform/services/mcctl-console/.next/server/app/_not-found.html +1 -1
  40. package/.next/standalone/platform/services/mcctl-console/.next/server/app/_not-found.rsc +1 -1
  41. package/.next/standalone/platform/services/mcctl-console/.next/server/app/admin/users/page.js +1 -0
  42. package/.next/standalone/platform/services/mcctl-console/.next/server/app/admin/users/page.js.nft.json +1 -0
  43. package/.next/standalone/platform/services/mcctl-console/.next/server/app/admin/users/page_client-reference-manifest.js +1 -0
  44. package/.next/standalone/platform/services/mcctl-console/.next/server/app/admin/users.html +1 -0
  45. package/.next/standalone/platform/services/mcctl-console/.next/server/app/admin/users.meta +5 -0
  46. package/.next/standalone/platform/services/mcctl-console/.next/server/app/admin/users.rsc +12 -0
  47. package/.next/standalone/platform/services/mcctl-console/.next/server/app/api/audit-logs/[id]/route.js +2 -2
  48. package/.next/standalone/platform/services/mcctl-console/.next/server/app/api/audit-logs/export/route.js +2 -2
  49. package/.next/standalone/platform/services/mcctl-console/.next/server/app/api/audit-logs/route.js +2 -2
  50. package/.next/standalone/platform/services/mcctl-console/.next/server/app/api/audit-logs/stats/route.js +2 -2
  51. package/.next/standalone/platform/services/mcctl-console/.next/server/app/api/audit-logs/stream/route.js +1 -1
  52. package/.next/standalone/platform/services/mcctl-console/.next/server/app/api/auth/[...all]/route.js +2 -2
  53. package/.next/standalone/platform/services/mcctl-console/.next/server/app/api/backup/history/route.js +2 -2
  54. package/.next/standalone/platform/services/mcctl-console/.next/server/app/api/backup/restore/route.js +2 -2
  55. package/.next/standalone/platform/services/mcctl-console/.next/server/app/api/backup/route.js +2 -2
  56. package/.next/standalone/platform/services/mcctl-console/.next/server/app/api/players/ban/route.js +2 -2
  57. package/.next/standalone/platform/services/mcctl-console/.next/server/app/api/players/kick/route.js +2 -2
  58. package/.next/standalone/platform/services/mcctl-console/.next/server/app/api/players/op/[player]/route.js +57 -0
  59. package/.next/standalone/platform/services/mcctl-console/.next/server/app/api/players/op/[player]/route.js.nft.json +1 -0
  60. package/.next/standalone/platform/services/mcctl-console/.next/server/app/api/players/op/route.js +2 -2
  61. package/.next/standalone/platform/services/mcctl-console/.next/server/app/api/players/route.js +2 -2
  62. package/.next/standalone/platform/services/mcctl-console/.next/server/app/api/players/whitelist/route.js +2 -2
  63. package/.next/standalone/platform/services/mcctl-console/.next/server/app/api/router/status/route.js +2 -2
  64. package/.next/standalone/platform/services/mcctl-console/.next/server/app/api/servers/[name]/[action]/route.js +2 -2
  65. package/.next/standalone/platform/services/mcctl-console/.next/server/app/api/servers/[name]/config/route.js +2 -2
  66. package/.next/standalone/platform/services/mcctl-console/.next/server/app/api/servers/[name]/exec/route.js +2 -2
  67. package/.next/standalone/platform/services/mcctl-console/.next/server/app/api/servers/[name]/route.js +2 -2
  68. package/.next/standalone/platform/services/mcctl-console/.next/server/app/api/servers/[name]/world/reset/route.js +2 -2
  69. package/.next/standalone/platform/services/mcctl-console/.next/server/app/api/servers/route.js +2 -2
  70. package/.next/standalone/platform/services/mcctl-console/.next/server/app/api/user-servers/[id]/route.js +1 -1
  71. package/.next/standalone/platform/services/mcctl-console/.next/server/app/api/user-servers/route.js +1 -1
  72. package/.next/standalone/platform/services/mcctl-console/.next/server/app/api/users/route.js +2 -2
  73. package/.next/standalone/platform/services/mcctl-console/.next/server/app/api/worlds/[name]/[action]/route.js +2 -2
  74. package/.next/standalone/platform/services/mcctl-console/.next/server/app/api/worlds/[name]/route.js +2 -2
  75. package/.next/standalone/platform/services/mcctl-console/.next/server/app/api/worlds/route.js +2 -2
  76. package/.next/standalone/platform/services/mcctl-console/.next/server/app/audit-logs.html +1 -1
  77. package/.next/standalone/platform/services/mcctl-console/.next/server/app/audit-logs.rsc +3 -3
  78. package/.next/standalone/platform/services/mcctl-console/.next/server/app/backups.html +1 -1
  79. package/.next/standalone/platform/services/mcctl-console/.next/server/app/backups.rsc +3 -3
  80. package/.next/standalone/platform/services/mcctl-console/.next/server/app/dashboard.html +1 -1
  81. package/.next/standalone/platform/services/mcctl-console/.next/server/app/dashboard.rsc +3 -3
  82. package/.next/standalone/platform/services/mcctl-console/.next/server/app/index.html +1 -1
  83. package/.next/standalone/platform/services/mcctl-console/.next/server/app/index.rsc +2 -2
  84. package/.next/standalone/platform/services/mcctl-console/.next/server/app/login/page.js +1 -1
  85. package/.next/standalone/platform/services/mcctl-console/.next/server/app/login/page.js.nft.json +1 -1
  86. package/.next/standalone/platform/services/mcctl-console/.next/server/app/login/page_client-reference-manifest.js +1 -1
  87. package/.next/standalone/platform/services/mcctl-console/.next/server/app/login.html +1 -1
  88. package/.next/standalone/platform/services/mcctl-console/.next/server/app/login.rsc +2 -2
  89. package/.next/standalone/platform/services/mcctl-console/.next/server/app/page.js +1 -1
  90. package/.next/standalone/platform/services/mcctl-console/.next/server/app/page_client-reference-manifest.js +1 -1
  91. package/.next/standalone/platform/services/mcctl-console/.next/server/app/players.html +1 -1
  92. package/.next/standalone/platform/services/mcctl-console/.next/server/app/players.rsc +3 -3
  93. package/.next/standalone/platform/services/mcctl-console/.next/server/app/routing.html +1 -1
  94. package/.next/standalone/platform/services/mcctl-console/.next/server/app/routing.rsc +3 -3
  95. package/.next/standalone/platform/services/mcctl-console/.next/server/app/servers.html +1 -1
  96. package/.next/standalone/platform/services/mcctl-console/.next/server/app/servers.rsc +3 -3
  97. package/.next/standalone/platform/services/mcctl-console/.next/server/app/settings.html +1 -0
  98. package/.next/standalone/platform/services/mcctl-console/.next/server/app/settings.meta +5 -0
  99. package/.next/standalone/platform/services/mcctl-console/.next/server/app/settings.rsc +18 -0
  100. package/.next/standalone/platform/services/mcctl-console/.next/server/app/signup/page.js +1 -1
  101. package/.next/standalone/platform/services/mcctl-console/.next/server/app/signup/page.js.nft.json +1 -1
  102. package/.next/standalone/platform/services/mcctl-console/.next/server/app/signup/page_client-reference-manifest.js +1 -1
  103. package/.next/standalone/platform/services/mcctl-console/.next/server/app/signup.html +1 -1
  104. package/.next/standalone/platform/services/mcctl-console/.next/server/app/signup.rsc +2 -2
  105. package/.next/standalone/platform/services/mcctl-console/.next/server/app/worlds.html +1 -1
  106. package/.next/standalone/platform/services/mcctl-console/.next/server/app/worlds.rsc +3 -3
  107. package/.next/standalone/platform/services/mcctl-console/.next/server/app-paths-manifest.json +17 -14
  108. package/.next/standalone/platform/services/mcctl-console/.next/server/chunks/1645.js +1 -0
  109. package/.next/standalone/platform/services/mcctl-console/.next/server/chunks/2793.js +1 -0
  110. package/.next/standalone/platform/services/mcctl-console/.next/server/chunks/3029.js +5 -5
  111. package/.next/standalone/platform/services/mcctl-console/.next/server/chunks/3048.js +1 -0
  112. package/.next/standalone/platform/services/mcctl-console/.next/server/chunks/354.js +1 -1
  113. package/.next/standalone/platform/services/mcctl-console/.next/server/chunks/4282.js +1 -0
  114. package/.next/standalone/platform/services/mcctl-console/.next/server/chunks/5019.js +1 -0
  115. package/.next/standalone/platform/services/mcctl-console/.next/server/chunks/6088.js +1 -0
  116. package/.next/standalone/platform/services/mcctl-console/.next/server/chunks/609.js +1 -0
  117. package/.next/standalone/platform/services/mcctl-console/.next/server/chunks/613.js +1 -1
  118. package/.next/standalone/platform/services/mcctl-console/.next/server/chunks/6231.js +74 -0
  119. package/.next/standalone/platform/services/mcctl-console/.next/server/chunks/7057.js +1 -0
  120. package/.next/standalone/platform/services/mcctl-console/.next/server/chunks/7453.js +54 -0
  121. package/.next/standalone/platform/services/mcctl-console/.next/server/chunks/8165.js +1 -0
  122. package/.next/standalone/platform/services/mcctl-console/.next/server/chunks/8389.js +1 -0
  123. package/.next/standalone/platform/services/mcctl-console/.next/server/chunks/8402.js +1 -0
  124. package/.next/standalone/platform/services/mcctl-console/.next/server/chunks/8849.js +1 -0
  125. package/.next/standalone/platform/services/mcctl-console/.next/server/chunks/8872.js +1 -0
  126. package/.next/standalone/platform/services/mcctl-console/.next/server/chunks/9250.js +1 -0
  127. package/.next/standalone/platform/services/mcctl-console/.next/server/middleware-build-manifest.js +1 -1
  128. package/.next/standalone/platform/services/mcctl-console/.next/server/middleware-manifest.json +5 -5
  129. package/.next/standalone/platform/services/mcctl-console/.next/server/next-font-manifest.js +1 -1
  130. package/.next/standalone/platform/services/mcctl-console/.next/server/next-font-manifest.json +1 -1
  131. package/.next/standalone/platform/services/mcctl-console/.next/server/pages/404.html +1 -1
  132. package/.next/standalone/platform/services/mcctl-console/.next/server/pages/500.html +1 -1
  133. package/.next/standalone/platform/services/mcctl-console/.next/server/server-reference-manifest.json +1 -1
  134. package/.next/standalone/platform/services/mcctl-console/.next/static/chunks/1189-60aed59c0e82a63d.js +1 -0
  135. package/.next/standalone/platform/services/mcctl-console/.next/static/chunks/1544-d2d1404bef00d038.js +1 -0
  136. package/.next/standalone/platform/services/mcctl-console/.next/static/chunks/1658-1c16e5a05aaa11ee.js +1 -0
  137. package/.next/standalone/platform/services/mcctl-console/.next/static/chunks/1668-c41281dc3163e1c2.js +1 -0
  138. package/.next/standalone/platform/services/mcctl-console/.next/static/chunks/1721-2758853c661770ff.js +1 -0
  139. package/.next/standalone/platform/services/mcctl-console/.next/static/chunks/190-9ecdd3c2ad7fadef.js +1 -0
  140. package/.next/standalone/platform/services/mcctl-console/.next/static/chunks/3489-b8c5f08aa4922197.js +1 -0
  141. package/.next/standalone/platform/services/mcctl-console/.next/static/chunks/4416-2385e5784dc036d6.js +1 -0
  142. package/.next/standalone/platform/services/mcctl-console/.next/static/chunks/4474-b7d88543d50f7f58.js +1 -0
  143. package/.next/standalone/platform/services/mcctl-console/.next/static/chunks/5375-a2d3a8fb915a3971.js +1 -0
  144. package/.next/standalone/platform/services/mcctl-console/.next/static/chunks/5381-4e3aac97e0617278.js +1 -0
  145. package/.next/standalone/platform/services/mcctl-console/.next/static/chunks/5386-a568e84580b1d208.js +1 -0
  146. package/.next/standalone/platform/services/mcctl-console/.next/static/chunks/563-d87300cc5ef5920c.js +1 -0
  147. package/.next/standalone/platform/services/mcctl-console/.next/static/chunks/6357-a9d3501984c53429.js +1 -0
  148. package/.next/standalone/platform/services/mcctl-console/.next/static/chunks/6479-82b21daf8e380c4d.js +1 -0
  149. package/.next/standalone/platform/services/mcctl-console/.next/static/chunks/6571-0d9e629a91d9f630.js +1 -0
  150. package/.next/standalone/platform/services/mcctl-console/.next/static/chunks/6727-e25ea0d10f0fea68.js +1 -0
  151. package/.next/standalone/platform/services/mcctl-console/.next/static/chunks/6758-d0a2d1008691eff1.js +1 -0
  152. package/.next/standalone/platform/services/mcctl-console/.next/static/chunks/680-61e3cda59bad5959.js +1 -0
  153. package/.next/standalone/platform/services/mcctl-console/.next/static/chunks/6857-5b9c04069853bfc4.js +1 -0
  154. package/.next/standalone/platform/services/mcctl-console/.next/static/chunks/6909-9750e61adcf6f5e5.js +1 -0
  155. package/.next/{static/chunks/4840-5802e869ffd1d2a9.js → standalone/platform/services/mcctl-console/.next/static/chunks/7073-46594e6380fdda11.js} +1 -1
  156. package/.next/standalone/platform/services/mcctl-console/.next/static/chunks/7436-44378c85b24787cc.js +1 -0
  157. package/.next/standalone/platform/services/mcctl-console/.next/static/chunks/7782-0f287c9ab0566879.js +1 -0
  158. package/.next/standalone/platform/services/mcctl-console/.next/static/chunks/787-91c6946656342fe4.js +1 -0
  159. package/.next/standalone/platform/services/mcctl-console/.next/static/chunks/8625-b235421f69a178fb.js +1 -0
  160. package/.next/standalone/platform/services/mcctl-console/.next/static/chunks/880-be7151cc9c502be6.js +1 -0
  161. package/.next/standalone/platform/services/mcctl-console/.next/static/chunks/9760-3b9261fc2cfda017.js +1 -0
  162. package/.next/standalone/platform/services/mcctl-console/.next/static/chunks/9810-e8bf0b092d80a553.js +1 -0
  163. package/.next/standalone/platform/services/mcctl-console/.next/static/chunks/app/(main)/audit-logs/{page-7a5d1441bb2811cf.js → page-b879c927081e59a2.js} +1 -1
  164. package/.next/standalone/platform/services/mcctl-console/.next/static/chunks/app/(main)/backups/{page-cc46681d519753dd.js → page-7a59c9269da2d63e.js} +1 -1
  165. package/.next/standalone/platform/services/mcctl-console/.next/static/chunks/app/(main)/dashboard/{page-b548fe2aac951e5b.js → page-d2d8cd0c7a0a54ec.js} +1 -1
  166. package/.next/standalone/platform/services/mcctl-console/.next/static/chunks/app/(main)/layout-bc7b020e80bc6d8d.js +1 -0
  167. package/.next/standalone/platform/services/mcctl-console/.next/static/chunks/app/(main)/players/page-724151791dd69b93.js +1 -0
  168. package/.next/standalone/platform/services/mcctl-console/.next/static/chunks/app/(main)/routing/page-909690ecbe76f31c.js +1 -0
  169. package/.next/standalone/platform/services/mcctl-console/.next/static/chunks/app/(main)/servers/[name]/console/{page-ca0344337ef5da93.js → page-617a1ab914c8d828.js} +1 -1
  170. package/.next/{static/chunks/app/(main)/servers/[name]/page-55fee1f878b51fb8.js → standalone/platform/services/mcctl-console/.next/static/chunks/app/(main)/servers/[name]/page-96518534b90deb1c.js} +1 -1
  171. package/.next/standalone/platform/services/mcctl-console/.next/static/chunks/app/(main)/servers/page-c35bb5a99e6ff107.js +1 -0
  172. package/.next/standalone/platform/services/mcctl-console/.next/static/chunks/app/(main)/settings/page-a805f639e14a10b0.js +1 -0
  173. package/.next/standalone/platform/services/mcctl-console/.next/static/chunks/app/(main)/worlds/page-704a3dafb5b8ec15.js +1 -0
  174. package/.next/standalone/platform/services/mcctl-console/.next/static/chunks/app/admin/users/page-f45f3cd30725a718.js +1 -0
  175. package/.next/standalone/platform/services/mcctl-console/.next/static/chunks/app/login/page-073a17485ca81f18.js +1 -0
  176. package/.next/standalone/platform/services/mcctl-console/.next/static/chunks/app/page-06fbf91c6bf684a9.js +1 -0
  177. package/.next/standalone/platform/services/mcctl-console/.next/static/chunks/app/signup/page-bfb822f4c5c7ce99.js +1 -0
  178. package/.next/{static/chunks/main-43f98b458d773ca0.js → standalone/platform/services/mcctl-console/.next/static/chunks/main-d86dc43481acf07f.js} +1 -1
  179. package/.next/standalone/platform/services/mcctl-console/package.json +1 -1
  180. package/.next/static/chunks/1189-60aed59c0e82a63d.js +1 -0
  181. package/.next/static/chunks/1544-d2d1404bef00d038.js +1 -0
  182. package/.next/static/chunks/1658-1c16e5a05aaa11ee.js +1 -0
  183. package/.next/static/chunks/1668-c41281dc3163e1c2.js +1 -0
  184. package/.next/static/chunks/1721-2758853c661770ff.js +1 -0
  185. package/.next/static/chunks/190-9ecdd3c2ad7fadef.js +1 -0
  186. package/.next/static/chunks/3489-b8c5f08aa4922197.js +1 -0
  187. package/.next/static/chunks/4416-2385e5784dc036d6.js +1 -0
  188. package/.next/static/chunks/4474-b7d88543d50f7f58.js +1 -0
  189. package/.next/static/chunks/5375-a2d3a8fb915a3971.js +1 -0
  190. package/.next/static/chunks/5381-4e3aac97e0617278.js +1 -0
  191. package/.next/static/chunks/5386-a568e84580b1d208.js +1 -0
  192. package/.next/static/chunks/563-d87300cc5ef5920c.js +1 -0
  193. package/.next/static/chunks/6357-a9d3501984c53429.js +1 -0
  194. package/.next/static/chunks/6479-82b21daf8e380c4d.js +1 -0
  195. package/.next/static/chunks/6571-0d9e629a91d9f630.js +1 -0
  196. package/.next/static/chunks/6727-e25ea0d10f0fea68.js +1 -0
  197. package/.next/static/chunks/6758-d0a2d1008691eff1.js +1 -0
  198. package/.next/static/chunks/680-61e3cda59bad5959.js +1 -0
  199. package/.next/static/chunks/6857-5b9c04069853bfc4.js +1 -0
  200. package/.next/static/chunks/6909-9750e61adcf6f5e5.js +1 -0
  201. package/.next/{standalone/platform/services/mcctl-console/.next/static/chunks/4840-5802e869ffd1d2a9.js → static/chunks/7073-46594e6380fdda11.js} +1 -1
  202. package/.next/static/chunks/7436-44378c85b24787cc.js +1 -0
  203. package/.next/static/chunks/7782-0f287c9ab0566879.js +1 -0
  204. package/.next/static/chunks/787-91c6946656342fe4.js +1 -0
  205. package/.next/static/chunks/8625-b235421f69a178fb.js +1 -0
  206. package/.next/static/chunks/880-be7151cc9c502be6.js +1 -0
  207. package/.next/static/chunks/9760-3b9261fc2cfda017.js +1 -0
  208. package/.next/static/chunks/9810-e8bf0b092d80a553.js +1 -0
  209. package/.next/static/chunks/app/(main)/audit-logs/{page-7a5d1441bb2811cf.js → page-b879c927081e59a2.js} +1 -1
  210. package/.next/static/chunks/app/(main)/backups/{page-cc46681d519753dd.js → page-7a59c9269da2d63e.js} +1 -1
  211. package/.next/static/chunks/app/(main)/dashboard/{page-b548fe2aac951e5b.js → page-d2d8cd0c7a0a54ec.js} +1 -1
  212. package/.next/static/chunks/app/(main)/layout-bc7b020e80bc6d8d.js +1 -0
  213. package/.next/static/chunks/app/(main)/players/page-724151791dd69b93.js +1 -0
  214. package/.next/static/chunks/app/(main)/routing/page-909690ecbe76f31c.js +1 -0
  215. package/.next/static/chunks/app/(main)/servers/[name]/console/{page-ca0344337ef5da93.js → page-617a1ab914c8d828.js} +1 -1
  216. package/.next/{standalone/platform/services/mcctl-console/.next/static/chunks/app/(main)/servers/[name]/page-55fee1f878b51fb8.js → static/chunks/app/(main)/servers/[name]/page-96518534b90deb1c.js} +1 -1
  217. package/.next/static/chunks/app/(main)/servers/page-c35bb5a99e6ff107.js +1 -0
  218. package/.next/static/chunks/app/(main)/settings/page-a805f639e14a10b0.js +1 -0
  219. package/.next/static/chunks/app/(main)/worlds/page-704a3dafb5b8ec15.js +1 -0
  220. package/.next/static/chunks/app/admin/users/page-f45f3cd30725a718.js +1 -0
  221. package/.next/static/chunks/app/login/page-073a17485ca81f18.js +1 -0
  222. package/.next/static/chunks/app/page-06fbf91c6bf684a9.js +1 -0
  223. package/.next/static/chunks/app/signup/page-bfb822f4c5c7ce99.js +1 -0
  224. package/.next/{standalone/platform/services/mcctl-console/.next/static/chunks/main-43f98b458d773ca0.js → static/chunks/main-d86dc43481acf07f.js} +1 -1
  225. package/package.json +2 -2
  226. package/.next/standalone/platform/services/mcctl-console/.next/server/chunks/1399.js +0 -1
  227. package/.next/standalone/platform/services/mcctl-console/.next/server/chunks/2365.js +0 -1
  228. package/.next/standalone/platform/services/mcctl-console/.next/server/chunks/3076.js +0 -1
  229. package/.next/standalone/platform/services/mcctl-console/.next/server/chunks/3100.js +0 -1
  230. package/.next/standalone/platform/services/mcctl-console/.next/server/chunks/4972.js +0 -1
  231. package/.next/standalone/platform/services/mcctl-console/.next/server/chunks/5244.js +0 -74
  232. package/.next/standalone/platform/services/mcctl-console/.next/server/chunks/5256.js +0 -1
  233. package/.next/standalone/platform/services/mcctl-console/.next/server/chunks/6010.js +0 -1
  234. package/.next/standalone/platform/services/mcctl-console/.next/server/chunks/8024.js +0 -54
  235. package/.next/standalone/platform/services/mcctl-console/.next/server/chunks/8243.js +0 -1
  236. package/.next/standalone/platform/services/mcctl-console/.next/server/chunks/9157.js +0 -1
  237. package/.next/standalone/platform/services/mcctl-console/.next/server/chunks/959.js +0 -1
  238. package/.next/standalone/platform/services/mcctl-console/.next/static/chunks/1476-a0570078fdf78fae.js +0 -1
  239. package/.next/standalone/platform/services/mcctl-console/.next/static/chunks/2022-6da2f9a847a5d61c.js +0 -1
  240. package/.next/standalone/platform/services/mcctl-console/.next/static/chunks/2093-bceea213e32f6b5f.js +0 -1
  241. package/.next/standalone/platform/services/mcctl-console/.next/static/chunks/2149-ba1bdd1d726ab70c.js +0 -1
  242. package/.next/standalone/platform/services/mcctl-console/.next/static/chunks/310-72d3b802b3cefa99.js +0 -1
  243. package/.next/standalone/platform/services/mcctl-console/.next/static/chunks/315-509f963f6c69d0a8.js +0 -1
  244. package/.next/standalone/platform/services/mcctl-console/.next/static/chunks/3543-1ec838cbe59f6baa.js +0 -1
  245. package/.next/standalone/platform/services/mcctl-console/.next/static/chunks/406-64ea09489141e436.js +0 -1
  246. package/.next/standalone/platform/services/mcctl-console/.next/static/chunks/4278-9a6acf769f296866.js +0 -1
  247. package/.next/standalone/platform/services/mcctl-console/.next/static/chunks/4538-a0d2c88024f1288a.js +0 -1
  248. package/.next/standalone/platform/services/mcctl-console/.next/static/chunks/5511-7a419d84918a8d64.js +0 -1
  249. package/.next/standalone/platform/services/mcctl-console/.next/static/chunks/6189-d8557db379604b3e.js +0 -1
  250. package/.next/standalone/platform/services/mcctl-console/.next/static/chunks/6594-e49e36eb5a5d1bef.js +0 -1
  251. package/.next/standalone/platform/services/mcctl-console/.next/static/chunks/6645-68b73fe1df8dba93.js +0 -1
  252. package/.next/standalone/platform/services/mcctl-console/.next/static/chunks/6655-81288236c1babc44.js +0 -1
  253. package/.next/standalone/platform/services/mcctl-console/.next/static/chunks/7220-4d1d72de4109ad9b.js +0 -1
  254. package/.next/standalone/platform/services/mcctl-console/.next/static/chunks/7294-ffa0013d4b0fa40a.js +0 -1
  255. package/.next/standalone/platform/services/mcctl-console/.next/static/chunks/7413-419718450fadde21.js +0 -1
  256. package/.next/standalone/platform/services/mcctl-console/.next/static/chunks/8006-219c9bbc650b079e.js +0 -1
  257. package/.next/standalone/platform/services/mcctl-console/.next/static/chunks/8322-8ae826d4c9b38acc.js +0 -1
  258. package/.next/standalone/platform/services/mcctl-console/.next/static/chunks/8657-f28db4e9df8cc7b0.js +0 -1
  259. package/.next/standalone/platform/services/mcctl-console/.next/static/chunks/8696-8adf1e9b1a84f5c0.js +0 -1
  260. package/.next/standalone/platform/services/mcctl-console/.next/static/chunks/9030-1dcbf06ed6e20e24.js +0 -1
  261. package/.next/standalone/platform/services/mcctl-console/.next/static/chunks/9887-bff2aa500d1d1995.js +0 -1
  262. package/.next/standalone/platform/services/mcctl-console/.next/static/chunks/app/(main)/layout-692cb1da92b73287.js +0 -1
  263. package/.next/standalone/platform/services/mcctl-console/.next/static/chunks/app/(main)/players/page-706f5e796129df33.js +0 -1
  264. package/.next/standalone/platform/services/mcctl-console/.next/static/chunks/app/(main)/routing/page-14f40cfd98e60a77.js +0 -1
  265. package/.next/standalone/platform/services/mcctl-console/.next/static/chunks/app/(main)/servers/page-efa5f11aa2956719.js +0 -1
  266. package/.next/standalone/platform/services/mcctl-console/.next/static/chunks/app/(main)/worlds/page-3de10e94b77f6e45.js +0 -1
  267. package/.next/standalone/platform/services/mcctl-console/.next/static/chunks/app/login/page-d6a5da720238e5cf.js +0 -1
  268. package/.next/standalone/platform/services/mcctl-console/.next/static/chunks/app/page-8b5b6cb30448bcc5.js +0 -1
  269. package/.next/standalone/platform/services/mcctl-console/.next/static/chunks/app/signup/page-6e5550bc9fffa4bc.js +0 -1
  270. package/.next/static/chunks/1476-a0570078fdf78fae.js +0 -1
  271. package/.next/static/chunks/2022-6da2f9a847a5d61c.js +0 -1
  272. package/.next/static/chunks/2093-bceea213e32f6b5f.js +0 -1
  273. package/.next/static/chunks/2149-ba1bdd1d726ab70c.js +0 -1
  274. package/.next/static/chunks/310-72d3b802b3cefa99.js +0 -1
  275. package/.next/static/chunks/315-509f963f6c69d0a8.js +0 -1
  276. package/.next/static/chunks/3543-1ec838cbe59f6baa.js +0 -1
  277. package/.next/static/chunks/406-64ea09489141e436.js +0 -1
  278. package/.next/static/chunks/4278-9a6acf769f296866.js +0 -1
  279. package/.next/static/chunks/4538-a0d2c88024f1288a.js +0 -1
  280. package/.next/static/chunks/5511-7a419d84918a8d64.js +0 -1
  281. package/.next/static/chunks/6189-d8557db379604b3e.js +0 -1
  282. package/.next/static/chunks/6594-e49e36eb5a5d1bef.js +0 -1
  283. package/.next/static/chunks/6645-68b73fe1df8dba93.js +0 -1
  284. package/.next/static/chunks/6655-81288236c1babc44.js +0 -1
  285. package/.next/static/chunks/7220-4d1d72de4109ad9b.js +0 -1
  286. package/.next/static/chunks/7294-ffa0013d4b0fa40a.js +0 -1
  287. package/.next/static/chunks/7413-419718450fadde21.js +0 -1
  288. package/.next/static/chunks/8006-219c9bbc650b079e.js +0 -1
  289. package/.next/static/chunks/8322-8ae826d4c9b38acc.js +0 -1
  290. package/.next/static/chunks/8657-f28db4e9df8cc7b0.js +0 -1
  291. package/.next/static/chunks/8696-8adf1e9b1a84f5c0.js +0 -1
  292. package/.next/static/chunks/9030-1dcbf06ed6e20e24.js +0 -1
  293. package/.next/static/chunks/9887-bff2aa500d1d1995.js +0 -1
  294. package/.next/static/chunks/app/(main)/layout-692cb1da92b73287.js +0 -1
  295. package/.next/static/chunks/app/(main)/players/page-706f5e796129df33.js +0 -1
  296. package/.next/static/chunks/app/(main)/routing/page-14f40cfd98e60a77.js +0 -1
  297. package/.next/static/chunks/app/(main)/servers/page-efa5f11aa2956719.js +0 -1
  298. package/.next/static/chunks/app/(main)/worlds/page-3de10e94b77f6e45.js +0 -1
  299. package/.next/static/chunks/app/login/page-d6a5da720238e5cf.js +0 -1
  300. package/.next/static/chunks/app/page-8b5b6cb30448bcc5.js +0 -1
  301. package/.next/static/chunks/app/signup/page-6e5550bc9fffa4bc.js +0 -1
  302. /package/.next/standalone/platform/services/mcctl-console/.next/static/{J1RLwJBlYRYnOUdff_T8I → lF2Ag_PdEMco5HscTAFVZ}/_buildManifest.js +0 -0
  303. /package/.next/standalone/platform/services/mcctl-console/.next/static/{J1RLwJBlYRYnOUdff_T8I → lF2Ag_PdEMco5HscTAFVZ}/_ssgManifest.js +0 -0
  304. /package/.next/static/{J1RLwJBlYRYnOUdff_T8I → lF2Ag_PdEMco5HscTAFVZ}/_buildManifest.js +0 -0
  305. /package/.next/static/{J1RLwJBlYRYnOUdff_T8I → lF2Ag_PdEMco5HscTAFVZ}/_ssgManifest.js +0 -0
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[781],{31809:function(e,r,n){Promise.resolve().then(n.bind(n,83785))},83785:function(e,r,n){"use strict";n.r(r),n.d(r,{default:function(){return X}});var t=n(94655),a=n(35106),s=n(7281),i=n(31317),o=n(84840),l=n(33402),c=n(60097),d=n(29793),u=n(75726),y=n(62328),h=n(7178),p=n(69899),x=n(76492),m=n(35847),j=n(628),f=n(41565),v=n(90158),Z=n(58347),b=n(73424),g=n(69783),C=n(86702),S=n(79983),w=n(30417),k=n(25333),E=n(99770),F=n(62508),I=n(5682),q=n(65087),P=n(76678),N=n(97436),K=n(93017),O=n(81071),R=n(66561),T=n(12795),U=n(96407),L=n(69366),D=n(11597),Q=n(81960),A=n(30114);function B(e){let{onPlayerKicked:r}=e,[n,o]=(0,a.useState)(!0),[l,c]=(0,a.useState)(null),[d,u]=(0,a.useState)([]),[y,h]=(0,a.useState)(!1),[p,x]=(0,a.useState)(null),[m,B]=(0,a.useState)(""),[W,z]=(0,a.useState)(!1),J=(0,a.useCallback)(async()=>{o(!0),c(null);try{let e=await fetch("/api/players");if(!e.ok)throw Error("Failed to fetch players");let r=await e.json();u(r.servers)}catch(e){c("Failed to load players"),console.error("Error fetching players:",e)}finally{o(!1)}},[]);(0,a.useEffect)(()=>{J()},[J]);let _=(e,r)=>{x({player:e,server:r}),B(""),h(!0)},M=async()=>{if(p){z(!0);try{if(!(await fetch("/api/players/kick",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({player:p.player.name,server:p.server,reason:m||"Kicked by administrator"})})).ok)throw Error("Failed to kick player");h(!1),x(null),null==r||r(p.player,p.server),await J()}catch(e){console.error("Error kicking player:",e)}finally{z(!1)}}},H=d.some(e=>e.players.length>0);return(0,t.jsx)(j.Z,{"data-testid":"player-list",children:(0,t.jsxs)(f.Z,{children:[(0,t.jsxs)(s.Z,{sx:{display:"flex",justifyContent:"space-between",alignItems:"center",mb:2},children:[(0,t.jsx)(i.Z,{variant:"h6",children:"Online Players"}),(0,t.jsx)(S.Z,{onClick:J,disabled:n,"aria-label":"Refresh",children:(0,t.jsx)(L.Z,{})})]}),n&&(0,t.jsx)(s.Z,{sx:{display:"flex",justifyContent:"center",py:4},children:(0,t.jsx)(K.Z,{})}),l&&(0,t.jsx)(O.Z,{severity:"error",sx:{mb:2},children:l}),!n&&!l&&!H&&(0,t.jsx)(i.Z,{color:"text.secondary",sx:{textAlign:"center",py:4},children:"No players online"}),!n&&!l&&H&&(0,t.jsx)(s.Z,{children:d.map(e=>(0,t.jsxs)(R.Z,{defaultExpanded:e.players.length>0,children:[(0,t.jsx)(T.Z,{expandIcon:(0,t.jsx)(Q.Z,{}),children:(0,t.jsxs)(s.Z,{sx:{display:"flex",alignItems:"center",gap:2,width:"100%"},children:[(0,t.jsx)(i.Z,{variant:"subtitle1",sx:{fontWeight:500},children:e.name}),(0,t.jsx)(k.Z,{label:"".concat(e.players.length," player").concat(1!==e.players.length?"s":""),size:"small",color:e.players.length>0?"success":"default"})]})}),(0,t.jsx)(U.Z,{children:0===e.players.length?(0,t.jsx)(i.Z,{color:"text.secondary",sx:{fontStyle:"italic"},children:"No players online on this server"}):(0,t.jsx)(v.Z,{dense:!0,children:e.players.map(r=>(0,t.jsxs)(Z.ZP,{secondaryAction:(0,t.jsx)(S.Z,{edge:"end","aria-label":"Kick player",onClick:()=>_(r,e.name),color:"error",children:(0,t.jsx)(D.Z,{})}),children:[(0,t.jsx)(g.Z,{children:(0,t.jsx)(C.Z,{src:"https://mc-heads.net/avatar/".concat(r.uuid,"/40"),alt:r.name,children:(0,t.jsx)(A.Z,{})})}),(0,t.jsx)(b.Z,{primary:r.name,secondary:r.uuid.substring(0,8)+"..."})]},r.uuid))})})]},e.name))}),(0,t.jsxs)(E.Z,{open:y,onClose:()=>h(!1),children:[(0,t.jsx)(F.Z,{children:"Kick Player"}),(0,t.jsxs)(I.Z,{children:[(0,t.jsxs)(q.Z,{children:["Are you sure you want to kick ",null==p?void 0:p.player.name," from ",null==p?void 0:p.server,"?"]}),(0,t.jsx)(N.Z,{autoFocus:!0,margin:"dense",label:"Reason (optional)",fullWidth:!0,variant:"outlined",value:m,onChange:e=>B(e.target.value),placeholder:"Kicked by administrator"})]}),(0,t.jsxs)(P.Z,{children:[(0,t.jsx)(w.Z,{onClick:()=>h(!1),disabled:W,children:"Cancel"}),(0,t.jsx)(w.Z,{onClick:M,color:"error",variant:"contained",disabled:W,"aria-label":"Confirm kick",children:W?(0,t.jsx)(K.Z,{size:20}):"Confirm"})]})]})]})})}var W=n(70115),z=n(21111),J=n(47606);function _(e){let{serverName:r}=e,[n,o]=(0,a.useState)(!0),[l,c]=(0,a.useState)(null),[d,u]=(0,a.useState)([]),[y,h]=(0,a.useState)(""),[p,x]=(0,a.useState)(!1),[m,k]=(0,a.useState)(null),E=(0,a.useCallback)(async()=>{o(!0),c(null);try{let e=await fetch("/api/players/whitelist?server=".concat(encodeURIComponent(r)));if(!e.ok)throw Error("Failed to fetch whitelist");let n=await e.json();u(n.players)}catch(e){c("Failed to load whitelist"),console.error("Error fetching whitelist:",e)}finally{o(!1)}},[r]);(0,a.useEffect)(()=>{E()},[E]);let F=async()=>{if(y.trim()){x(!0),c(null);try{if(!(await fetch("/api/players/whitelist",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({player:y.trim(),server:r})})).ok)throw Error("Failed to add player");h(""),await E()}catch(e){c("Failed to add player to whitelist"),console.error("Error adding player:",e)}finally{x(!1)}}},I=async e=>{k(e),c(null);try{if(!(await fetch("/api/players/whitelist?player=".concat(encodeURIComponent(e),"&server=").concat(encodeURIComponent(r)),{method:"DELETE"})).ok)throw Error("Failed to remove player");await E()}catch(e){c("Failed to remove player from whitelist"),console.error("Error removing player:",e)}finally{k(null)}};return(0,t.jsx)(j.Z,{"data-testid":"whitelist-manager",children:(0,t.jsxs)(f.Z,{children:[(0,t.jsx)(i.Z,{variant:"h6",gutterBottom:!0,children:"Whitelist"}),l&&(0,t.jsx)(O.Z,{severity:"error",sx:{mb:2},children:l}),(0,t.jsxs)(W.Z,{direction:"row",spacing:1,sx:{mb:2},children:[(0,t.jsx)(N.Z,{size:"small",placeholder:"Player name",value:y,onChange:e=>h(e.target.value),onKeyDown:e=>{"Enter"===e.key&&F()},disabled:p,fullWidth:!0}),(0,t.jsx)(w.Z,{variant:"contained",onClick:F,disabled:!y.trim()||p,startIcon:p?(0,t.jsx)(K.Z,{size:16}):(0,t.jsx)(J.Z,{}),"aria-label":"Add player to whitelist",children:"Add"})]}),n&&(0,t.jsx)(s.Z,{sx:{display:"flex",justifyContent:"center",py:4},children:(0,t.jsx)(K.Z,{})}),!n&&0===d.length&&(0,t.jsx)(i.Z,{color:"text.secondary",sx:{textAlign:"center",py:4},children:"No players whitelisted"}),!n&&d.length>0&&(0,t.jsx)(v.Z,{dense:!0,children:d.map(e=>(0,t.jsxs)(Z.ZP,{secondaryAction:(0,t.jsx)(S.Z,{edge:"end","aria-label":"Remove from whitelist",onClick:()=>I(e.name),disabled:m===e.name,color:"error",children:m===e.name?(0,t.jsx)(K.Z,{size:20}):(0,t.jsx)(z.Z,{})}),children:[(0,t.jsx)(g.Z,{children:(0,t.jsx)(C.Z,{src:e.uuid?"https://mc-heads.net/avatar/".concat(e.uuid,"/40"):void 0,alt:e.name,children:(0,t.jsx)(A.Z,{})})}),(0,t.jsx)(b.Z,{primary:e.name,secondary:e.uuid?e.uuid.substring(0,8)+"...":"UUID not available"})]},e.uuid||e.name))})]})})}var M=n(407);function H(e){let{serverName:r}=e,[n,o]=(0,a.useState)(!0),[l,c]=(0,a.useState)(null),[d,u]=(0,a.useState)([]),[y,h]=(0,a.useState)(""),[p,x]=(0,a.useState)(!1),[m,E]=(0,a.useState)(null),F=(0,a.useCallback)(async()=>{o(!0),c(null);try{let e=await fetch("/api/players/op?server=".concat(encodeURIComponent(r)));if(!e.ok)throw Error("Failed to fetch operators");let n=await e.json();u(n.operators)}catch(e){c("Failed to load operators"),console.error("Error fetching operators:",e)}finally{o(!1)}},[r]);(0,a.useEffect)(()=>{F()},[F]);let I=async()=>{if(y.trim()){x(!0),c(null);try{if(!(await fetch("/api/players/op",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({player:y.trim(),server:r})})).ok)throw Error("Failed to add operator");h(""),await F()}catch(e){c("Failed to add operator"),console.error("Error adding operator:",e)}finally{x(!1)}}},q=async e=>{E(e),c(null);try{if(!(await fetch("/api/players/op?player=".concat(encodeURIComponent(e),"&server=").concat(encodeURIComponent(r)),{method:"DELETE"})).ok)throw Error("Failed to remove operator");await F()}catch(e){c("Failed to remove operator"),console.error("Error removing operator:",e)}finally{E(null)}},P=e=>{switch(e){case 4:return"error";case 3:return"secondary";case 2:return"primary";default:return"default"}};return(0,t.jsx)(j.Z,{"data-testid":"op-manager",children:(0,t.jsxs)(f.Z,{children:[(0,t.jsx)(i.Z,{variant:"h6",gutterBottom:!0,children:"Operators"}),l&&(0,t.jsx)(O.Z,{severity:"error",sx:{mb:2},children:l}),(0,t.jsxs)(W.Z,{direction:"row",spacing:1,sx:{mb:2},children:[(0,t.jsx)(N.Z,{size:"small",placeholder:"Player name",value:y,onChange:e=>h(e.target.value),onKeyDown:e=>{"Enter"===e.key&&I()},disabled:p,fullWidth:!0}),(0,t.jsx)(w.Z,{variant:"contained",onClick:I,disabled:!y.trim()||p,startIcon:p?(0,t.jsx)(K.Z,{size:16}):(0,t.jsx)(J.Z,{}),"aria-label":"Add operator",children:"Add"})]}),n&&(0,t.jsx)(s.Z,{sx:{display:"flex",justifyContent:"center",py:4},children:(0,t.jsx)(K.Z,{})}),!n&&0===d.length&&(0,t.jsx)(i.Z,{color:"text.secondary",sx:{textAlign:"center",py:4},children:"No operators configured"}),!n&&d.length>0&&(0,t.jsx)(v.Z,{dense:!0,children:d.map(e=>(0,t.jsxs)(Z.ZP,{secondaryAction:(0,t.jsx)(S.Z,{edge:"end","aria-label":"Remove operator",onClick:()=>q(e.name),disabled:m===e.name,color:"error",children:m===e.name?(0,t.jsx)(K.Z,{size:20}):(0,t.jsx)(z.Z,{})}),children:[(0,t.jsx)(g.Z,{children:(0,t.jsx)(C.Z,{src:e.uuid?"https://mc-heads.net/avatar/".concat(e.uuid,"/40"):void 0,alt:e.name,sx:{bgcolor:"warning.main"},children:(0,t.jsx)(M.Z,{})})}),(0,t.jsx)(b.Z,{primary:(0,t.jsxs)(s.Z,{sx:{display:"flex",alignItems:"center",gap:1},children:[e.name,(0,t.jsx)(k.Z,{label:"Level ".concat(e.level),size:"small",color:P(e.level)})]}),secondary:e.uuid?e.uuid.substring(0,8)+"...":"UUID not available"})]},e.uuid||e.name))})]})})}var $=n(397);function Y(e){let{serverName:r}=e,[n,o]=(0,a.useState)(!0),[l,c]=(0,a.useState)(null),[d,u]=(0,a.useState)([]),[y,h]=(0,a.useState)(!1),[p,x]=(0,a.useState)({player:"",reason:""}),[m,k]=(0,a.useState)(!1),[q,R]=(0,a.useState)(null),T=(0,a.useCallback)(async()=>{o(!0),c(null);try{let e=await fetch("/api/players/ban?server=".concat(encodeURIComponent(r)));if(!e.ok)throw Error("Failed to fetch bans");let n=await e.json();u(n.players)}catch(e){c("Failed to load ban list"),console.error("Error fetching bans:",e)}finally{o(!1)}},[r]);(0,a.useEffect)(()=>{T()},[T]);let U=()=>{h(!1),x({player:"",reason:""})},L=async()=>{if(p.player.trim()){k(!0),c(null);try{if(!(await fetch("/api/players/ban",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({player:p.player.trim(),reason:p.reason.trim()||"Banned by administrator",server:r})})).ok)throw Error("Failed to ban player");U(),await T()}catch(e){c("Failed to ban player"),console.error("Error banning player:",e)}finally{k(!1)}}},D=async e=>{R(e),c(null);try{if(!(await fetch("/api/players/ban?player=".concat(encodeURIComponent(e),"&server=").concat(encodeURIComponent(r)),{method:"DELETE"})).ok)throw Error("Failed to unban player");await T()}catch(e){c("Failed to unban player"),console.error("Error unbanning player:",e)}finally{R(null)}},Q=e=>{try{return new Date(e).toLocaleDateString()}catch(r){return e}};return(0,t.jsx)(j.Z,{"data-testid":"ban-manager",children:(0,t.jsxs)(f.Z,{children:[(0,t.jsxs)(s.Z,{sx:{display:"flex",justifyContent:"space-between",alignItems:"center",mb:2},children:[(0,t.jsx)(i.Z,{variant:"h6",children:"Ban List"}),(0,t.jsx)(w.Z,{variant:"outlined",color:"error",startIcon:(0,t.jsx)($.Z,{}),onClick:()=>{x({player:"",reason:""}),h(!0)},"aria-label":"Ban player",children:"Ban Player"})]}),l&&(0,t.jsx)(O.Z,{severity:"error",sx:{mb:2},children:l}),n&&(0,t.jsx)(s.Z,{sx:{display:"flex",justifyContent:"center",py:4},children:(0,t.jsx)(K.Z,{})}),!n&&0===d.length&&(0,t.jsx)(i.Z,{color:"text.secondary",sx:{textAlign:"center",py:4},children:"No players banned"}),!n&&d.length>0&&(0,t.jsx)(v.Z,{dense:!0,children:d.map(e=>(0,t.jsxs)(Z.ZP,{secondaryAction:(0,t.jsx)(S.Z,{edge:"end","aria-label":"Unban player",onClick:()=>D(e.name),disabled:q===e.name,color:"success",children:q===e.name?(0,t.jsx)(K.Z,{size:20}):(0,t.jsx)(z.Z,{})}),children:[(0,t.jsx)(g.Z,{children:(0,t.jsx)(C.Z,{src:e.uuid?"https://mc-heads.net/avatar/".concat(e.uuid,"/40"):void 0,alt:e.name,sx:{bgcolor:"error.main"},children:(0,t.jsx)(A.Z,{})})}),(0,t.jsx)(b.Z,{primary:e.name,secondary:(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)(i.Z,{component:"span",variant:"body2",color:"text.secondary",children:["Reason: ",e.reason||"No reason specified"]}),(0,t.jsx)("br",{}),(0,t.jsxs)(i.Z,{component:"span",variant:"caption",color:"text.secondary",children:["Banned: ",Q(e.created)," by ",e.source||"Unknown"]})]})})]},e.uuid||e.name))}),(0,t.jsxs)(E.Z,{open:y,onClose:U,maxWidth:"sm",fullWidth:!0,children:[(0,t.jsx)(F.Z,{children:"Ban Player"}),(0,t.jsx)(I.Z,{children:(0,t.jsxs)(W.Z,{spacing:2,sx:{mt:1},children:[(0,t.jsx)(N.Z,{label:"Player Name",placeholder:"Enter player name",value:p.player,onChange:e=>x({...p,player:e.target.value}),fullWidth:!0,required:!0}),(0,t.jsx)(N.Z,{label:"Reason",placeholder:"Banned by administrator",value:p.reason,onChange:e=>x({...p,reason:e.target.value}),fullWidth:!0,multiline:!0,rows:2})]})}),(0,t.jsxs)(P.Z,{children:[(0,t.jsx)(w.Z,{onClick:U,disabled:m,children:"Cancel"}),(0,t.jsx)(w.Z,{onClick:L,color:"error",variant:"contained",disabled:!p.player.trim()||m,startIcon:m?(0,t.jsx)(K.Z,{size:16}):(0,t.jsx)($.Z,{}),children:"Ban"})]})]})]})})}var G=n(92666);function V(e){let{children:r,value:n,index:a}=e;return(0,t.jsx)("div",{role:"tabpanel",hidden:n!==a,children:n===a&&(0,t.jsx)(s.Z,{sx:{py:3},children:r})})}function X(){let[e,r]=(0,a.useState)(0),[n,j]=(0,a.useState)(""),{data:f,isLoading:v}=(0,G.x$)(),Z=null==f?void 0:f.servers;return(0,a.useEffect)(()=>{!n&&Z&&Z.length>0&&j(Z[0].name)},[Z,n]),(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(p.Z,{elevation:0,sx:{mb:4,p:3,background:e=>"linear-gradient(135deg, ".concat((0,x.Fq)(e.palette.info.main,.1)," 0%, ").concat((0,x.Fq)(e.palette.secondary.main,.1)," 100%)"),borderRadius:2,border:e=>"1px solid ".concat((0,x.Fq)(e.palette.info.main,.2))},children:(0,t.jsxs)(s.Z,{sx:{display:"flex",alignItems:"center",gap:2},children:[(0,t.jsx)(s.Z,{sx:{display:"flex",alignItems:"center",justifyContent:"center",width:56,height:56,borderRadius:2,bgcolor:"info.main",color:"info.contrastText"},children:(0,t.jsx)(m.Z,{sx:{fontSize:32}})}),(0,t.jsxs)(s.Z,{children:[(0,t.jsx)(i.Z,{variant:"h4",component:"h1",fontWeight:"bold",children:"Player Management"}),(0,t.jsx)(i.Z,{variant:"body1",color:"text.secondary",children:"Manage players, whitelist, operators, and bans across your servers"})]})]})}),(0,t.jsx)(s.Z,{sx:{mb:3},children:(0,t.jsxs)(d.Z,{sx:{minWidth:200},children:[(0,t.jsx)(u.Z,{id:"server-select-label",children:"Server"}),(0,t.jsx)(y.Z,{labelId:"server-select-label",value:n,label:"Server",onChange:e=>j(e.target.value),disabled:v,children:null==Z?void 0:Z.map(e=>(0,t.jsx)(h.Z,{value:e.name,children:e.name},e.name))})]})}),(0,t.jsx)(s.Z,{sx:{borderBottom:1,borderColor:"divider"},children:(0,t.jsxs)(l.Z,{value:e,onChange:(e,n)=>{r(n)},"aria-label":"Player management tabs",children:[(0,t.jsx)(c.Z,{label:"Online Players"}),(0,t.jsx)(c.Z,{label:"Whitelist",disabled:!n}),(0,t.jsx)(c.Z,{label:"Operators",disabled:!n}),(0,t.jsx)(c.Z,{label:"Ban List",disabled:!n})]})}),(0,t.jsx)(V,{value:e,index:0,children:(0,t.jsx)(B,{})}),(0,t.jsx)(V,{value:e,index:1,children:n&&(0,t.jsxs)(o.ZP,{container:!0,spacing:3,children:[(0,t.jsx)(o.ZP,{item:!0,xs:12,md:8,children:(0,t.jsx)(_,{serverName:n})}),(0,t.jsx)(o.ZP,{item:!0,xs:12,md:4,children:(0,t.jsxs)(s.Z,{sx:{p:2,bgcolor:"background.paper",borderRadius:1},children:[(0,t.jsx)(i.Z,{variant:"subtitle2",color:"text.secondary",gutterBottom:!0,children:"About Whitelist"}),(0,t.jsx)(i.Z,{variant:"body2",color:"text.secondary",children:"The whitelist controls which players can join your server. When enabled, only players on the whitelist can connect. Add players by their Minecraft username."})]})})]})}),(0,t.jsx)(V,{value:e,index:2,children:n&&(0,t.jsxs)(o.ZP,{container:!0,spacing:3,children:[(0,t.jsx)(o.ZP,{item:!0,xs:12,md:8,children:(0,t.jsx)(H,{serverName:n})}),(0,t.jsx)(o.ZP,{item:!0,xs:12,md:4,children:(0,t.jsxs)(s.Z,{sx:{p:2,bgcolor:"background.paper",borderRadius:1},children:[(0,t.jsx)(i.Z,{variant:"subtitle2",color:"text.secondary",gutterBottom:!0,children:"About Operators"}),(0,t.jsx)(i.Z,{variant:"body2",color:"text.secondary",children:"Operators (OPs) have elevated permissions on the server. They can use commands like /give, /gamemode, /tp, and more. OP levels range from 1-4, with 4 being the highest."}),(0,t.jsxs)(s.Z,{sx:{mt:2},children:[(0,t.jsx)(i.Z,{variant:"caption",color:"text.secondary",component:"div",children:"Level 1: Can bypass spawn protection"}),(0,t.jsx)(i.Z,{variant:"caption",color:"text.secondary",component:"div",children:"Level 2: Can use /clear, /gamemode, etc."}),(0,t.jsx)(i.Z,{variant:"caption",color:"text.secondary",component:"div",children:"Level 3: Can use /ban, /kick, /op, etc."}),(0,t.jsx)(i.Z,{variant:"caption",color:"text.secondary",component:"div",children:"Level 4: Can use /stop, full access"})]})]})})]})}),(0,t.jsx)(V,{value:e,index:3,children:n&&(0,t.jsxs)(o.ZP,{container:!0,spacing:3,children:[(0,t.jsx)(o.ZP,{item:!0,xs:12,md:8,children:(0,t.jsx)(Y,{serverName:n})}),(0,t.jsx)(o.ZP,{item:!0,xs:12,md:4,children:(0,t.jsxs)(s.Z,{sx:{p:2,bgcolor:"background.paper",borderRadius:1},children:[(0,t.jsx)(i.Z,{variant:"subtitle2",color:"text.secondary",gutterBottom:!0,children:"About Bans"}),(0,t.jsx)(i.Z,{variant:"body2",color:"text.secondary",children:"Banned players cannot connect to your server. You can ban players by username and provide an optional reason. Bans can be removed (pardoned) at any time."})]})})]})})]})}},42936:function(e,r,n){"use strict";async function t(e){let r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n={...r.headers};r.body&&(n["Content-Type"]="application/json");let t=await fetch(e,{...r,headers:n});if(!t.ok){let e=await t.json().catch(()=>({error:"UnknownError",message:t.statusText})),r=Error(e.message);throw r.statusCode=t.status,r.code=e.error,r}return t.json()}n.d(r,{SC:function(){return t}})},92666:function(e,r,n){"use strict";n.d(r,{$t:function(){return C},Aw:function(){return u},Fv:function(){return j},Hq:function(){return c},Hy:function(){return l},MH:function(){return v},Sr:function(){return h},_I:function(){return y},c5:function(){return S},g2:function(){return m},gx:function(){return Z},hy:function(){return p},iC:function(){return f},jM:function(){return d},mj:function(){return g},nq:function(){return x},nv:function(){return b},s8:function(){return w},x$:function(){return o}});var t=n(5632),a=n(58919),s=n(20367),i=n(42936);function o(){return(0,t.a)({queryKey:["servers"],queryFn:()=>(0,i.SC)("/api/servers"),refetchInterval:6e4})}function l(e,r){return(0,t.a)({queryKey:["servers",e],queryFn:()=>(0,i.SC)("/api/servers/".concat(encodeURIComponent(e))),enabled:(null==r?void 0:r.enabled)!==!1&&!!e,refetchInterval:3e4})}function c(){let e=(0,a.NL)();return(0,s.D)({mutationFn:e=>{let{name:r,force:n}=e;return(0,i.SC)("/api/servers/".concat(encodeURIComponent(r)).concat(n?"?force=true":""),{method:"DELETE"})},onSuccess:()=>{e.invalidateQueries({queryKey:["servers"]})}})}function d(){let e=(0,a.NL)();return(0,s.D)({mutationFn:e=>(0,i.SC)("/api/servers/".concat(encodeURIComponent(e),"/start"),{method:"POST"}),onSuccess:(r,n)=>{e.invalidateQueries({queryKey:["servers"]}),e.invalidateQueries({queryKey:["servers",n]})}})}function u(){let e=(0,a.NL)();return(0,s.D)({mutationFn:e=>(0,i.SC)("/api/servers/".concat(encodeURIComponent(e),"/stop"),{method:"POST"}),onSuccess:(r,n)=>{e.invalidateQueries({queryKey:["servers"]}),e.invalidateQueries({queryKey:["servers",n]})}})}function y(){let e=(0,a.NL)();return(0,s.D)({mutationFn:e=>(0,i.SC)("/api/servers/".concat(encodeURIComponent(e),"/restart"),{method:"POST"}),onSuccess:(r,n)=>{e.invalidateQueries({queryKey:["servers"]}),e.invalidateQueries({queryKey:["servers",n]})}})}function h(){return(0,t.a)({queryKey:["worlds"],queryFn:()=>(0,i.SC)("/api/worlds"),refetchInterval:3e4})}function p(){let e=(0,a.NL)();return(0,s.D)({mutationFn:e=>(0,i.SC)("/api/worlds",{method:"POST",body:JSON.stringify(e)}),onSuccess:()=>{e.invalidateQueries({queryKey:["worlds"]})}})}function x(){let e=(0,a.NL)();return(0,s.D)({mutationFn:e=>{let{worldName:r,serverName:n}=e;return(0,i.SC)("/api/worlds/".concat(encodeURIComponent(r),"/assign"),{method:"POST",body:JSON.stringify({serverName:n})})},onSuccess:()=>{e.invalidateQueries({queryKey:["worlds"]}),e.invalidateQueries({queryKey:["servers"]})}})}function m(){let e=(0,a.NL)();return(0,s.D)({mutationFn:e=>{let{worldName:r,force:n}=e;return(0,i.SC)("/api/worlds/".concat(encodeURIComponent(r),"/release").concat(n?"?force=true":""),{method:"POST"})},onSuccess:()=>{e.invalidateQueries({queryKey:["worlds"]})}})}function j(){let e=(0,a.NL)();return(0,s.D)({mutationFn:e=>{let{name:r,force:n}=e;return(0,i.SC)("/api/worlds/".concat(encodeURIComponent(r)).concat(n?"?force=true":""),{method:"DELETE"})},onSuccess:()=>{e.invalidateQueries({queryKey:["worlds"]})}})}function f(e,r){return(0,t.a)({queryKey:["servers",e,"config"],queryFn:()=>(0,i.SC)("/api/servers/".concat(encodeURIComponent(e),"/config")),enabled:(null==r?void 0:r.enabled)!==!1&&!!e})}function v(){let e=(0,a.NL)();return(0,s.D)({mutationFn:e=>{let{serverName:r,config:n}=e;return(0,i.SC)("/api/servers/".concat(encodeURIComponent(r),"/config"),{method:"PATCH",body:JSON.stringify(n)})},onSuccess:(r,n)=>{let{serverName:t}=n;e.invalidateQueries({queryKey:["servers",t,"config"]}),e.invalidateQueries({queryKey:["servers",t]})}})}function Z(){let e=(0,a.NL)();return(0,s.D)({mutationFn:e=>(0,i.SC)("/api/servers/".concat(encodeURIComponent(e),"/world/reset"),{method:"POST"}),onSuccess:(r,n)=>{e.invalidateQueries({queryKey:["servers",n]}),e.invalidateQueries({queryKey:["worlds"]})}})}function b(){return(0,t.a)({queryKey:["router-status"],queryFn:()=>(0,i.SC)("/api/router/status"),refetchInterval:3e4})}function g(){return(0,t.a)({queryKey:["backup-status"],queryFn:()=>(0,i.SC)("/api/backup"),refetchInterval:6e4})}function C(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:20;return(0,t.a)({queryKey:["backup-history",e],queryFn:()=>(0,i.SC)("/api/backup/history?limit=".concat(e)),refetchInterval:6e4})}function S(){let e=(0,a.NL)();return(0,s.D)({mutationFn:e=>{let{message:r}=e;return(0,i.SC)("/api/backup",{method:"POST",body:JSON.stringify({message:r})})},onSuccess:()=>{e.invalidateQueries({queryKey:["backup-status"]}),e.invalidateQueries({queryKey:["backup-history"]})}})}function w(){let e=(0,a.NL)();return(0,s.D)({mutationFn:e=>(0,i.SC)("/api/backup/restore",{method:"POST",body:JSON.stringify({commitHash:e})}),onSuccess:()=>{e.invalidateQueries({queryKey:["worlds"]}),e.invalidateQueries({queryKey:["servers"]})}})}}},function(e){e.O(0,[6812,7220,8006,7294,8696,1071,540,6189,4840,310,8347,2149,2022,8657,2093,3669,2757,1744],function(){return e(e.s=31809)}),_N_E=e.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[148],{61943:function(e,n,r){Promise.resolve().then(r.bind(r,73046))},73046:function(e,n,r){"use strict";r.r(n),r.d(n,{default:function(){return E}});var t=r(94655),s=r(7281),i=r(84840),o=r(31317),a=r(10721),c=r(81071),l=r(628),u=r(41565),d=r(69899),x=r(76492),h=r(29983),f=r(92666),m=r(25333),p=r(21138),y=r(84811),j=r(70366),v=r(47001),Z=r(59602);let g={fontWeight:500,color:"text.secondary",border:0,width:"40%",py:1},b={border:0,py:1};function w(e){var n;let{router:r}=e,i=(n=r.mode)?n.includes("in-docker")||n.includes("auto-discovery")?{label:"Auto Discovery",color:"info"}:n.includes("mapping")?{label:"Manual Mapping",color:"warning"}:{label:n,color:"default"}:{label:"Unknown",color:"default"};return(0,t.jsx)(l.Z,{children:(0,t.jsxs)(u.Z,{children:[(0,t.jsxs)(s.Z,{sx:{display:"flex",alignItems:"center",gap:1,mb:2},children:[(0,t.jsx)(Z.Z,{color:"primary"}),(0,t.jsx)(o.Z,{variant:"h6",component:"h2",children:"Platform Information"})]}),(0,t.jsx)(p.Z,{size:"small",children:(0,t.jsxs)(y.Z,{children:[(0,t.jsxs)(j.Z,{children:[(0,t.jsx)(v.Z,{sx:g,children:"Router Name"}),(0,t.jsx)(v.Z,{sx:b,children:r.name})]}),(0,t.jsxs)(j.Z,{children:[(0,t.jsx)(v.Z,{sx:g,children:"Port"}),(0,t.jsx)(v.Z,{sx:b,children:r.port})]}),(0,t.jsxs)(j.Z,{children:[(0,t.jsx)(v.Z,{sx:g,children:"Mode"}),(0,t.jsx)(v.Z,{sx:b,children:(0,t.jsx)(m.Z,{label:i.label,size:"small",color:i.color,variant:"outlined"})})]}),(0,t.jsxs)(j.Z,{children:[(0,t.jsx)(v.Z,{sx:g,children:"Uptime"}),(0,t.jsx)(v.Z,{sx:b,children:r.uptime||"-"})]})]})})]})})}var S=r(95511),C=r(66561),q=r(12795),I=r(96407),K=r(81960);function F(e){switch(e){case"running":return"#4caf50";case"exited":case"dead":case"not_found":case"not_created":return"#f44336";case"created":case"restarting":case"paused":return"#ff9800";default:return"#9e9e9e"}}function N(e){let{status:n}=e;return(0,t.jsx)(S.Z,{title:n,arrow:!0,children:(0,t.jsx)(s.Z,{sx:{width:10,height:10,borderRadius:"50%",bgcolor:F(n),flexShrink:0,boxShadow:"running"===n?"0 0 6px ".concat(F(n)):"none"}})})}function k(e){let{router:n}=e,r=function(e){let n=new Map;for(let r of e){let e=r.target.replace(/^mc-/,"").replace(/:25565$/,""),t=n.get(e);t?t.hostnames.push(r.hostname):n.set(e,{status:r.serverStatus,hostnames:[r.hostname],serverType:r.serverType,serverVersion:r.serverVersion})}return n}(n.routes);return(0,t.jsx)(l.Z,{sx:{height:"100%"},children:(0,t.jsxs)(u.Z,{children:[(0,t.jsxs)(s.Z,{sx:{display:"flex",alignItems:"center",gap:1,mb:2},children:[(0,t.jsx)(h.Z,{color:"primary"}),(0,t.jsx)(o.Z,{variant:"h6",component:"h2",children:"MC-Router Status"}),(0,t.jsxs)(s.Z,{sx:{ml:"auto",display:"flex",gap:1},children:[(0,t.jsx)(m.Z,{label:n.status,size:"small",color:function(e){switch(e){case"running":return"success";case"exited":case"dead":case"not_found":case"not_created":return"error";case"created":case"restarting":case"paused":return"warning";default:return"default"}}(n.status)}),(0,t.jsx)(m.Z,{label:n.health,size:"small",color:function(e){switch(e){case"healthy":return"success";case"unhealthy":return"error";case"starting":return"warning";default:return"default"}}(n.health),variant:"outlined"})]})]}),(0,t.jsx)(o.Z,{variant:"subtitle2",sx:{mb:1,mt:3},children:"Routing Table"}),0===n.routes.length?(0,t.jsx)(o.Z,{variant:"body2",color:"text.secondary",sx:{py:2,textAlign:"center"},children:"No routes configured"}):(0,t.jsx)(s.Z,{sx:{mt:1},children:Array.from(r.entries()).map(e=>{let[n,{status:r,hostnames:i,serverType:a,serverVersion:c}]=e;return(0,t.jsxs)(C.Z,{defaultExpanded:!0,disableGutters:!0,elevation:0,sx:{border:1,borderColor:"divider","&:not(:last-child)":{borderBottom:0},"&::before":{display:"none"}},children:[(0,t.jsx)(q.Z,{expandIcon:(0,t.jsx)(K.Z,{}),children:(0,t.jsxs)(s.Z,{sx:{display:"flex",alignItems:"center",gap:1,width:"100%",pr:1},children:[(0,t.jsx)(N,{status:r}),(0,t.jsx)(o.Z,{variant:"subtitle2",sx:{fontWeight:600},children:n}),(a||c)&&(0,t.jsx)(o.Z,{variant:"caption",color:"text.secondary",children:[a,c].filter(Boolean).join(" ")}),(0,t.jsxs)(o.Z,{variant:"caption",color:"text.secondary",sx:{ml:"auto"},children:[i.length," ",1===i.length?"route":"routes"]})]})}),(0,t.jsx)(I.Z,{sx:{pt:0},children:(0,t.jsx)(s.Z,{sx:{display:"flex",flexDirection:"column",gap:.5},children:i.map(e=>(0,t.jsx)(o.Z,{variant:"body2",sx:{fontFamily:"monospace",fontSize:"0.85rem",color:"text.secondary"},children:e},e))})})]},n)})})]})})}var D=r(21605);let R={fontWeight:500,color:"text.secondary",border:0,width:"40%",py:1},P={border:0,py:1};function Q(e){var n;let{router:r}=e,i=r.routes.filter(e=>"running"===e.serverStatus).length,a=r.routes.length;return(0,t.jsx)(l.Z,{children:(0,t.jsxs)(u.Z,{children:[(0,t.jsxs)(s.Z,{sx:{display:"flex",alignItems:"center",gap:1,mb:2},children:[(0,t.jsx)(D.Z,{color:"primary"}),(0,t.jsx)(o.Z,{variant:"h6",component:"h2",children:"Network Settings"})]}),(0,t.jsx)(p.Z,{size:"small",children:(0,t.jsxs)(y.Z,{children:[(0,t.jsxs)(j.Z,{children:[(0,t.jsx)(v.Z,{sx:R,children:"Listening Port"}),(0,t.jsx)(v.Z,{sx:P,children:(0,t.jsx)(m.Z,{label:r.port,size:"small",variant:"outlined"})})]}),(0,t.jsxs)(j.Z,{children:[(0,t.jsx)(v.Z,{sx:R,children:"Routing Mode"}),(0,t.jsx)(v.Z,{sx:P,children:(0,t.jsx)(m.Z,{label:(n=r.mode)?n.includes("in-docker")||n.includes("auto-discovery")?"Auto Discovery":n.includes("mapping")?"Manual Mapping":n:"Unknown",size:"small",color:"info",variant:"outlined"})})]}),(0,t.jsxs)(j.Z,{children:[(0,t.jsx)(v.Z,{sx:R,children:"Total Routes"}),(0,t.jsx)(v.Z,{sx:P,children:a})]}),(0,t.jsxs)(j.Z,{children:[(0,t.jsx)(v.Z,{sx:R,children:"Active Routes"}),(0,t.jsx)(v.Z,{sx:P,children:(0,t.jsx)(m.Z,{label:"".concat(i," / ").concat(a),size:"small",color:i>0?"success":"default",variant:"outlined"})})]})]})})]})})}var T=r(76544);function O(e){var n;let{avahi:r}=e,i=null!==(n=null==r?void 0:r.status)&&void 0!==n?n:"unknown";return(0,t.jsx)(l.Z,{children:(0,t.jsxs)(u.Z,{children:[(0,t.jsxs)(s.Z,{sx:{display:"flex",alignItems:"center",gap:1,mb:2},children:[(0,t.jsx)(T.Z,{color:"primary"}),(0,t.jsx)(o.Z,{variant:"h6",component:"h2",children:"mDNS (Avahi)"}),(0,t.jsx)(m.Z,{label:i,size:"small",color:"running"===i?"success":i.includes("not running")?"warning":"not installed"===i?"error":"default",sx:{ml:"auto"}})]}),(0,t.jsxs)(o.Z,{variant:"body2",color:"text.secondary",children:["Avahi mDNS daemon enables ",(0,t.jsx)("code",{children:".local"})," hostname resolution for Minecraft servers on the local network."]})]})})}function L(e){let{rows:n}=e;return(0,t.jsx)(l.Z,{children:(0,t.jsxs)(u.Z,{children:[(0,t.jsxs)(s.Z,{sx:{display:"flex",alignItems:"center",gap:1,mb:2},children:[(0,t.jsx)(a.Z,{variant:"circular",width:24,height:24}),(0,t.jsx)(a.Z,{variant:"text",width:"50%",height:32})]}),[...Array(n)].map((e,n)=>(0,t.jsxs)(s.Z,{sx:{display:"flex",justifyContent:"space-between",py:.75},children:[(0,t.jsx)(a.Z,{variant:"text",width:"35%"}),(0,t.jsx)(a.Z,{variant:"text",width:"40%"})]},n))]})})}function U(){return(0,t.jsx)(l.Z,{sx:{height:"100%"},children:(0,t.jsxs)(u.Z,{children:[(0,t.jsxs)(s.Z,{sx:{display:"flex",alignItems:"center",gap:1,mb:2},children:[(0,t.jsx)(a.Z,{variant:"circular",width:24,height:24}),(0,t.jsx)(a.Z,{variant:"text",width:"40%",height:32}),(0,t.jsxs)(s.Z,{sx:{ml:"auto",display:"flex",gap:1},children:[(0,t.jsx)(a.Z,{variant:"rounded",width:70,height:24}),(0,t.jsx)(a.Z,{variant:"rounded",width:70,height:24})]})]}),(0,t.jsx)(a.Z,{variant:"text",width:"30%",sx:{mt:3,mb:1}}),[0,1].map(e=>(0,t.jsxs)(s.Z,{sx:{border:1,borderColor:"divider",p:2,"&:not(:last-child)":{borderBottom:0}},children:[(0,t.jsxs)(s.Z,{sx:{display:"flex",alignItems:"center",gap:1,mb:1.5},children:[(0,t.jsx)(a.Z,{variant:"circular",width:10,height:10}),(0,t.jsx)(a.Z,{variant:"text",width:"25%"}),(0,t.jsx)(a.Z,{variant:"text",width:"15%"}),(0,t.jsx)(a.Z,{variant:"text",width:"10%",sx:{ml:"auto"}})]}),[0,1,2].map(e=>(0,t.jsx)(a.Z,{variant:"text",width:"70%",sx:{ml:2.5}},e))]},e))]})})}function E(){let{data:e,isLoading:n,error:r}=(0,f.nv)();return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(d.Z,{elevation:0,sx:{mb:4,p:3,background:e=>"linear-gradient(135deg, ".concat((0,x.Fq)(e.palette.warning.main,.1)," 0%, ").concat((0,x.Fq)(e.palette.info.main,.1)," 100%)"),borderRadius:2,border:e=>"1px solid ".concat((0,x.Fq)(e.palette.warning.main,.2))},children:(0,t.jsxs)(s.Z,{sx:{display:"flex",alignItems:"center",gap:2},children:[(0,t.jsx)(s.Z,{sx:{display:"flex",alignItems:"center",justifyContent:"center",width:56,height:56,borderRadius:2,bgcolor:"warning.main",color:"warning.contrastText"},children:(0,t.jsx)(h.Z,{sx:{fontSize:32}})}),(0,t.jsxs)(s.Z,{children:[(0,t.jsx)(o.Z,{variant:"h4",component:"h1",fontWeight:"bold",children:"Routing"}),(0,t.jsx)(o.Z,{variant:"body1",color:"text.secondary",children:"Server routing and network configuration"})]})]})}),r&&(0,t.jsxs)(c.Z,{severity:"error",sx:{mb:3},children:["Failed to load router status: ",r.message]}),n?(0,t.jsxs)(i.ZP,{container:!0,spacing:3,children:[(0,t.jsx)(i.ZP,{item:!0,xs:12,md:4,children:(0,t.jsxs)(s.Z,{sx:{display:"flex",flexDirection:"column",gap:3},children:[(0,t.jsx)(L,{rows:4}),(0,t.jsx)(L,{rows:4}),(0,t.jsx)(L,{rows:1})]})}),(0,t.jsx)(i.ZP,{item:!0,xs:12,md:8,children:(0,t.jsx)(U,{})})]}):(null==e?void 0:e.router)?(0,t.jsxs)(i.ZP,{container:!0,spacing:3,children:[(0,t.jsx)(i.ZP,{item:!0,xs:12,md:4,children:(0,t.jsxs)(s.Z,{sx:{display:"flex",flexDirection:"column",gap:3},children:[(0,t.jsx)(w,{router:e.router}),(0,t.jsx)(Q,{router:e.router}),(0,t.jsx)(O,{avahi:e.avahi})]})}),(0,t.jsx)(i.ZP,{item:!0,xs:12,md:8,children:(0,t.jsx)(k,{router:e.router})})]}):null]})}},42936:function(e,n,r){"use strict";async function t(e){let n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r={...n.headers};n.body&&(r["Content-Type"]="application/json");let t=await fetch(e,{...n,headers:r});if(!t.ok){let e=await t.json().catch(()=>({error:"UnknownError",message:t.statusText})),n=Error(e.message);throw n.statusCode=t.status,n.code=e.error,n}return t.json()}r.d(n,{SC:function(){return t}})},92666:function(e,n,r){"use strict";r.d(n,{$t:function(){return w},Aw:function(){return d},Fv:function(){return y},Hq:function(){return l},Hy:function(){return c},MH:function(){return v},Sr:function(){return h},_I:function(){return x},c5:function(){return S},g2:function(){return p},gx:function(){return Z},hy:function(){return f},iC:function(){return j},jM:function(){return u},mj:function(){return b},nq:function(){return m},nv:function(){return g},s8:function(){return C},x$:function(){return a}});var t=r(5632),s=r(58919),i=r(20367),o=r(42936);function a(){return(0,t.a)({queryKey:["servers"],queryFn:()=>(0,o.SC)("/api/servers"),refetchInterval:6e4})}function c(e,n){return(0,t.a)({queryKey:["servers",e],queryFn:()=>(0,o.SC)("/api/servers/".concat(encodeURIComponent(e))),enabled:(null==n?void 0:n.enabled)!==!1&&!!e,refetchInterval:3e4})}function l(){let e=(0,s.NL)();return(0,i.D)({mutationFn:e=>{let{name:n,force:r}=e;return(0,o.SC)("/api/servers/".concat(encodeURIComponent(n)).concat(r?"?force=true":""),{method:"DELETE"})},onSuccess:()=>{e.invalidateQueries({queryKey:["servers"]})}})}function u(){let e=(0,s.NL)();return(0,i.D)({mutationFn:e=>(0,o.SC)("/api/servers/".concat(encodeURIComponent(e),"/start"),{method:"POST"}),onSuccess:(n,r)=>{e.invalidateQueries({queryKey:["servers"]}),e.invalidateQueries({queryKey:["servers",r]})}})}function d(){let e=(0,s.NL)();return(0,i.D)({mutationFn:e=>(0,o.SC)("/api/servers/".concat(encodeURIComponent(e),"/stop"),{method:"POST"}),onSuccess:(n,r)=>{e.invalidateQueries({queryKey:["servers"]}),e.invalidateQueries({queryKey:["servers",r]})}})}function x(){let e=(0,s.NL)();return(0,i.D)({mutationFn:e=>(0,o.SC)("/api/servers/".concat(encodeURIComponent(e),"/restart"),{method:"POST"}),onSuccess:(n,r)=>{e.invalidateQueries({queryKey:["servers"]}),e.invalidateQueries({queryKey:["servers",r]})}})}function h(){return(0,t.a)({queryKey:["worlds"],queryFn:()=>(0,o.SC)("/api/worlds"),refetchInterval:3e4})}function f(){let e=(0,s.NL)();return(0,i.D)({mutationFn:e=>(0,o.SC)("/api/worlds",{method:"POST",body:JSON.stringify(e)}),onSuccess:()=>{e.invalidateQueries({queryKey:["worlds"]})}})}function m(){let e=(0,s.NL)();return(0,i.D)({mutationFn:e=>{let{worldName:n,serverName:r}=e;return(0,o.SC)("/api/worlds/".concat(encodeURIComponent(n),"/assign"),{method:"POST",body:JSON.stringify({serverName:r})})},onSuccess:()=>{e.invalidateQueries({queryKey:["worlds"]}),e.invalidateQueries({queryKey:["servers"]})}})}function p(){let e=(0,s.NL)();return(0,i.D)({mutationFn:e=>{let{worldName:n,force:r}=e;return(0,o.SC)("/api/worlds/".concat(encodeURIComponent(n),"/release").concat(r?"?force=true":""),{method:"POST"})},onSuccess:()=>{e.invalidateQueries({queryKey:["worlds"]})}})}function y(){let e=(0,s.NL)();return(0,i.D)({mutationFn:e=>{let{name:n,force:r}=e;return(0,o.SC)("/api/worlds/".concat(encodeURIComponent(n)).concat(r?"?force=true":""),{method:"DELETE"})},onSuccess:()=>{e.invalidateQueries({queryKey:["worlds"]})}})}function j(e,n){return(0,t.a)({queryKey:["servers",e,"config"],queryFn:()=>(0,o.SC)("/api/servers/".concat(encodeURIComponent(e),"/config")),enabled:(null==n?void 0:n.enabled)!==!1&&!!e})}function v(){let e=(0,s.NL)();return(0,i.D)({mutationFn:e=>{let{serverName:n,config:r}=e;return(0,o.SC)("/api/servers/".concat(encodeURIComponent(n),"/config"),{method:"PATCH",body:JSON.stringify(r)})},onSuccess:(n,r)=>{let{serverName:t}=r;e.invalidateQueries({queryKey:["servers",t,"config"]}),e.invalidateQueries({queryKey:["servers",t]})}})}function Z(){let e=(0,s.NL)();return(0,i.D)({mutationFn:e=>(0,o.SC)("/api/servers/".concat(encodeURIComponent(e),"/world/reset"),{method:"POST"}),onSuccess:(n,r)=>{e.invalidateQueries({queryKey:["servers",r]}),e.invalidateQueries({queryKey:["worlds"]})}})}function g(){return(0,t.a)({queryKey:["router-status"],queryFn:()=>(0,o.SC)("/api/router/status"),refetchInterval:3e4})}function b(){return(0,t.a)({queryKey:["backup-status"],queryFn:()=>(0,o.SC)("/api/backup"),refetchInterval:6e4})}function w(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:20;return(0,t.a)({queryKey:["backup-history",e],queryFn:()=>(0,o.SC)("/api/backup/history?limit=".concat(e)),refetchInterval:6e4})}function S(){let e=(0,s.NL)();return(0,i.D)({mutationFn:e=>{let{message:n}=e;return(0,o.SC)("/api/backup",{method:"POST",body:JSON.stringify({message:n})})},onSuccess:()=>{e.invalidateQueries({queryKey:["backup-status"]}),e.invalidateQueries({queryKey:["backup-history"]})}})}function C(){let e=(0,s.NL)();return(0,i.D)({mutationFn:e=>(0,o.SC)("/api/backup/restore",{method:"POST",body:JSON.stringify({commitHash:e})}),onSuccess:()=>{e.invalidateQueries({queryKey:["worlds"]}),e.invalidateQueries({queryKey:["servers"]})}})}}},function(e){e.O(0,[6812,7220,8006,1071,540,6189,4840,5511,9654,8657,9030,3669,2757,1744],function(){return e(e.s=61943)}),_N_E=e.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[224],{49726:function(e,t,r){Promise.resolve().then(r.bind(r,7854))},7854:function(e,t,r){"use strict";r.r(t),r.d(t,{default:function(){return en}});var n=r(94655),s=r(35106),o=r(31358),i=r(7281),a=r(30417),l=r(81071),c=r(93017),u=r(69899),d=r(31317),h=r(76492),m=r(32366),p=r(78067),x=r(84840),f=r(97436),v=r(52082),y=r(89923),g=r(10297),S=r(42431),C=r(628),j=r(41565),b=r(25935),Z=r(79983),w=r(25333),k=r(95511),T=r(5501),q=r(93315),R=r(27171),I=r(96292);let E=e=>{switch(e){case"running":return"success";case"stopped":case"exited":case"not_created":return"error";case"created":return"warning";default:return"default"}},F=e=>{switch(e){case"running":return"Running";case"stopped":case"exited":return"Stopped";case"not_created":return"Not Created";case"created":return"Created";default:return e||"Unknown"}},N=e=>{if(!e)return"-";let t=e.split(",").map(e=>e.trim());return t.find(e=>e.endsWith(".local"))||t[0]||"-"};function O(e){var t;let{server:r,statusOverride:s,onClick:o,onStart:a,onStop:l,loading:c=!1}=e,u=(null==s?void 0:s.status)||r.status,h=(e,t)=>{e.stopPropagation(),t(r.name)},m="running"===u,p="stopped"===u||"exited"===u||"not_created"===u,x=N(r.hostname),f=(null===(t=r.hostname)||void 0===t?void 0:t.split(",").map(e=>e.trim()))||[];return(0,n.jsxs)(C.Z,{role:"article",onClick:()=>{o&&o(r.name)},sx:{cursor:o?"pointer":"default",transition:"all 0.2s",height:180,display:"flex",flexDirection:"column","&:hover":o?{transform:"translateY(-2px)",boxShadow:4}:{}},children:[(0,n.jsxs)(j.Z,{sx:{flex:1,pb:1},children:[(0,n.jsxs)(i.Z,{sx:{display:"flex",justifyContent:"space-between",alignItems:"center",mb:2},children:[(0,n.jsx)(d.Z,{variant:"h6",component:"h3",sx:{fontWeight:600,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",flex:1,mr:1},children:r.name}),(0,n.jsx)(w.Z,{label:F(u),size:"small",color:E(u),sx:{fontWeight:500,minWidth:70}})]}),(0,n.jsxs)(i.Z,{sx:{display:"flex",alignItems:"center",gap:1,mb:1.5},children:[(0,n.jsx)(I.Z,{sx:{fontSize:16,color:"text.secondary"}}),(0,n.jsx)(k.Z,{title:f.length>1?f.join("\n"):"",arrow:!0,children:(0,n.jsxs)(d.Z,{variant:"body2",color:"text.secondary",sx:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:[x,f.length>1&&" (+".concat(f.length-1,")")]})})]}),(0,n.jsxs)(i.Z,{sx:{display:"flex",alignItems:"center",gap:1},children:[(0,n.jsx)(R.Z,{sx:{fontSize:16,color:"text.secondary"}}),(0,n.jsx)(d.Z,{variant:"body2",color:"text.secondary",sx:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:r.container})]})]}),(0,n.jsxs)(b.Z,{sx:{justifyContent:"flex-end",px:2,py:1.5,borderTop:"1px solid",borderColor:"divider"},children:[p&&a&&(0,n.jsx)(Z.Z,{"aria-label":"Start server",color:"success",onClick:e=>h(e,a),disabled:c,size:"small",children:(0,n.jsx)(T.Z,{})}),m&&l&&(0,n.jsx)(Z.Z,{"aria-label":"Stop server",color:"error",onClick:e=>h(e,l),disabled:c,size:"small",children:(0,n.jsx)(q.Z,{})}),!p&&!m&&(0,n.jsx)(i.Z,{sx:{height:34}})]})]})}function L(e){let{servers:t,statusMap:r={},onServerClick:o,onStart:l,onStop:c,onCreate:u,loadingServers:h=[]}=e,[p,C]=(0,s.useState)(""),[j,b]=(0,s.useState)("all"),Z=(0,s.useMemo)(()=>t.filter(e=>{if(p&&!e.name.toLowerCase().includes(p.toLowerCase()))return!1;let t=r[e.name],n=(null==t?void 0:t.status)||e.status;return("running"!==j||"running"===n)&&("stopped"!==j||"stopped"===n||"exited"===n||"not_created"===n)}),[t,r,p,j]);return 0===t.length?(0,n.jsxs)(i.Z,{sx:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",minHeight:"400px",gap:2},children:[(0,n.jsx)(d.Z,{variant:"h6",color:"text.secondary",children:"No servers found"}),u&&(0,n.jsx)(a.Z,{variant:"contained",startIcon:(0,n.jsx)(m.Z,{}),onClick:u,children:"Create Server"})]}):(0,n.jsxs)(i.Z,{children:[(0,n.jsxs)(i.Z,{sx:{display:"flex",flexDirection:{xs:"column",sm:"row"},gap:2,mb:3,alignItems:{xs:"stretch",sm:"center"},justifyContent:"space-between"},children:[(0,n.jsxs)(g.Z,{value:j,exclusive:!0,onChange:(e,t)=>{null!==t&&b(t)},size:"small",sx:{flexShrink:0},children:[(0,n.jsx)(y.Z,{value:"all",children:"All"}),(0,n.jsx)(y.Z,{value:"running",children:"Running"}),(0,n.jsx)(y.Z,{value:"stopped",children:"Stopped"})]}),(0,n.jsx)(f.Z,{size:"small",placeholder:"Search servers...",value:p,onChange:e=>C(e.target.value),InputProps:{startAdornment:(0,n.jsx)(v.Z,{position:"start",children:(0,n.jsx)(S.Z,{})})},sx:{flexGrow:{xs:1,sm:0},minWidth:{sm:300}}})]}),(0,n.jsxs)(d.Z,{variant:"body2",color:"text.secondary",sx:{mb:2},children:[Z.length," ",1===Z.length?"server":"servers"]}),0===Z.length?(0,n.jsx)(i.Z,{sx:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",minHeight:"200px",gap:2},children:(0,n.jsx)(d.Z,{variant:"h6",color:"text.secondary",children:"No servers found"})}):(0,n.jsx)(x.ZP,{container:!0,spacing:2,children:Z.map(e=>(0,n.jsx)(x.ZP,{item:!0,xs:12,sm:6,md:4,children:(0,n.jsx)(O,{server:e,statusOverride:r[e.name],onClick:o,onStart:l,onStop:c,loading:h.includes(e.name)})},e.name))})]})}var P=r(99770),D=r(62508),K=r(5682),M=r(76678),A=r(7178),Q=r(40064),W=r(45547),U=r(4405),z=r(73383),_=r(82285),G=r(13609),H=r(46207),J=r(43436),V=r(87716);let $=["VANILLA","PAPER","FABRIC","FORGE","NEOFORGE"],B=["","forge","fabric","neoforge","quilt"],Y={name:"",type:"PAPER",version:"1.21.1",memory:"4G",autoStart:!1,sudoPassword:""},X=[{key:"initializing",label:"Initializing"},{key:"creating",label:"Creating"},{key:"configuring",label:"Configuring"},{key:"starting",label:"Starting"}];function ee(e){let t,{open:r,onClose:o,onSubmit:u,loading:h=!1,status:m="idle",progress:p=0,message:x=""}=e,[v,S]=(0,s.useState)("standard"),[C,j]=(0,s.useState)(Y),[b,Z]=(0,s.useState)({}),[w,k]=(0,s.useState)(!1),T=(0,s.useRef)(null),q=(0,s.useRef)(null),R=X.findIndex(e=>e.key===m),I="idle"!==m&&"completed"!==m&&"error"!==m;(0,s.useEffect)(()=>{r||(S("standard"),j(Y),Z({}),k(!1))},[r]);let E=e=>e?/^[a-z0-9-]+$/.test(e)?null:"Only lowercase letters, numbers, and hyphens are allowed":"Server name is required",F=e=>e?null:"Modpack slug is required",N=e=>t=>{let r=t.target.value;j(t=>({...t,[e]:r})),"memory"===e&&k(!0),b[e]&&Z(t=>({...t,[e]:""}))};return(0,n.jsx)(P.Z,{open:r,onClose:I?void 0:o,maxWidth:"sm",fullWidth:!0,children:(0,n.jsxs)("form",{onSubmit:e=>{e.preventDefault(),Z({});let t=E(C.name);if(t){Z({name:t});return}if("modpack"===v){let e=F(C.modpack||"");if(e){Z({modpack:e});return}}let r={name:C.name,memory:C.memory,autoStart:C.autoStart,sudoPassword:C.sudoPassword};"standard"===v?(r.type=C.type,r.version=C.version):(r.type="MODRINTH",r.modpack=C.modpack,r.modpackVersion=C.modpackVersion||"",r.modLoader=C.modLoader||""),u(r)},children:[(0,n.jsx)(D.Z,{children:"completed"===m?(0,n.jsxs)(i.Z,{sx:{display:"flex",alignItems:"center",gap:1},children:[(0,n.jsx)(H.Z,{color:"success"}),"Server Created Successfully"]}):"error"===m?(0,n.jsxs)(i.Z,{sx:{display:"flex",alignItems:"center",gap:1},children:[(0,n.jsx)(J.Z,{color:"error"}),"Creation Failed"]}):"Create New Server"}),(0,n.jsx)(K.Z,{children:I||"completed"===m||"error"===m?(0,n.jsxs)(i.Z,{sx:{py:2},children:[(0,n.jsx)(z.Z,{activeStep:R,alternativeLabel:!0,sx:{mb:3},children:X.map(e=>(0,n.jsx)(_.Z,{children:(0,n.jsx)(G.Z,{children:e.label})},e.key))}),I&&(0,n.jsxs)(i.Z,{sx:{mb:3},children:[(0,n.jsxs)(i.Z,{sx:{display:"flex",justifyContent:"space-between",mb:1},children:[(0,n.jsx)(d.Z,{variant:"body2",color:"text.secondary",children:x}),(0,n.jsxs)(d.Z,{variant:"body2",color:"text.secondary",children:[p,"%"]})]}),(0,n.jsx)(U.Z,{variant:"determinate",value:p})]}),"completed"===m&&(0,n.jsx)(d.Z,{color:"success.main",sx:{textAlign:"center"},children:x}),"error"===m&&(0,n.jsx)(d.Z,{color:"error.main",sx:{textAlign:"center"},children:x})]}):(0,n.jsxs)(i.Z,{sx:{display:"flex",flexDirection:"column",gap:2,pt:1},children:[(0,n.jsx)(i.Z,{ref:q,role:"status","aria-live":"polite",sx:{position:"absolute",left:"-10000px",width:"1px",height:"1px",overflow:"hidden"}}),(0,n.jsx)(f.Z,{label:"Server Name",value:C.name,onChange:N("name"),error:!!b.name,helperText:b.name||"Only lowercase letters, numbers, and hyphens",fullWidth:!0,autoFocus:!0,disabled:I}),(0,n.jsxs)(i.Z,{sx:{display:"flex",flexDirection:"column",gap:2},children:[(0,n.jsx)(d.Z,{variant:"subtitle2",color:"text.secondary",children:"Server Type"}),(0,n.jsxs)(g.Z,{value:v,exclusive:!0,onChange:(e,t)=>{null!==t&&(S(t),q.current&&(q.current.textContent="".concat("standard"===t?"Standard Server":"Modpack"," category selected")),w||j(e=>({...e,memory:"standard"===t?"4G":"6G"})),setTimeout(()=>{"modpack"===t&&T.current&&T.current.focus()},300))},"aria-label":"Server category",fullWidth:!0,disabled:I,children:[(0,n.jsx)(y.Z,{value:"standard","aria-label":"Standard Server",children:"Standard Server"}),(0,n.jsx)(y.Z,{value:"modpack","aria-label":"Modpack",children:"Modpack"})]}),(0,n.jsx)(V.Z,{in:"standard"===v,unmountOnExit:!0,children:(0,n.jsxs)(i.Z,{sx:{display:"flex",flexDirection:"column",gap:2,mt:2},children:[(0,n.jsx)(f.Z,{label:"Server Type",select:!0,value:C.type,onChange:N("type"),fullWidth:!0,disabled:I,children:$.map(e=>(0,n.jsx)(A.Z,{value:e,children:e},e))}),(0,n.jsx)(f.Z,{label:"Minecraft Version",value:C.version,onChange:N("version"),helperText:"e.g., 1.21.1, 1.20.4, latest",fullWidth:!0,disabled:I})]})}),(0,n.jsx)(V.Z,{in:"modpack"===v,unmountOnExit:!0,children:(0,n.jsxs)(i.Z,{sx:{display:"flex",flexDirection:"column",gap:2,mt:2},children:[(0,n.jsx)(l.Z,{severity:"info",children:"Minecraft version is automatically determined by the modpack"}),(0,n.jsx)(f.Z,{label:"Modpack Slug",value:C.modpack||"",onChange:N("modpack"),error:!!b.modpack,helperText:b.modpack||"e.g., cobblemon, adrenaserver (from modrinth.com/modpacks/SLUG)",fullWidth:!0,disabled:I,inputRef:T}),(0,n.jsxs)(f.Z,{label:"Mod Loader",select:!0,value:C.modLoader||"",onChange:N("modLoader"),helperText:"Leave empty to auto-detect from modpack",fullWidth:!0,disabled:I,children:[(0,n.jsx)(A.Z,{value:"",children:"Auto-detect"}),B.filter(e=>e).map(e=>(0,n.jsx)(A.Z,{value:e,children:e},e))]}),(0,n.jsx)(f.Z,{label:"Modpack Version",value:C.modpackVersion||"",onChange:N("modpackVersion"),helperText:"Leave empty for latest",fullWidth:!0,disabled:I})]})})]}),(0,n.jsx)(f.Z,{label:"Memory",value:C.memory,onChange:N("memory"),helperText:"e.g., 4G, 8G, 16G",fullWidth:!0,disabled:I}),(0,n.jsx)(f.Z,{label:"Sudo Password",type:"password",value:C.sudoPassword||"",onChange:N("sudoPassword"),helperText:"Required for mDNS hostname registration (avahi)",fullWidth:!0,disabled:I}),(0,n.jsx)(Q.Z,{control:(0,n.jsx)(W.Z,{checked:C.autoStart||!1,onChange:(t="autoStart",e=>{j(r=>({...r,[t]:e.target.checked}))}),disabled:I}),label:"Auto-start after creation"})]})}),(0,n.jsx)(M.Z,{sx:{px:3,pb:2},children:"completed"===m||"error"===m?(0,n.jsx)(a.Z,{onClick:o,variant:"contained",fullWidth:!0,children:"Close"}):(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(a.Z,{onClick:o,disabled:I,children:"Cancel"}),(0,n.jsx)(a.Z,{type:"submit",variant:"contained",disabled:I,startIcon:I?(0,n.jsx)(c.Z,{size:16}):null,children:I?"Creating...":"Create"})]})})]})})}var et=r(92666),er=r(59104);function en(){var e,t;let r=(0,o.x)(),[x,f]=(0,s.useState)(!1),[v,y]=(0,s.useState)([]),{data:g,isLoading:S,error:C}=(0,et.x$)(),{statusMap:j}=(0,er.d)(),b=(0,et.jM)(),Z=(0,et.Aw)(),w=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},{onSuccess:t,onError:r,onProgress:n}=e,[o,i]=(0,s.useState)("idle"),[a,l]=(0,s.useState)(0),[c,u]=(0,s.useState)(""),[d,h]=(0,s.useState)(null),m=(0,s.useRef)(null),p=(0,s.useRef)(""),x=(0,s.useCallback)(()=>{i("idle"),l(0),u(""),h(null),m.current&&(m.current.close(),m.current=null)},[]),f=(0,s.useCallback)((e,t,r)=>{i(e),u(t),l(r),null==n||n(e,t,r)},[n]),v=(0,s.useCallback)(async e=>{if("idle"===o||"completed"===o||"error"===o){h(null),f("initializing","Initializing server creation...",0),p.current=e.name,m.current&&m.current.close();try{let r=await fetch("/api/servers",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)});if(!r.ok){let e=await r.text();throw Error(e||"Server creation failed: ".concat(r.statusText))}await r.json(),f("creating","Creating server configuration...",25),await new Promise(e=>setTimeout(e,500)),f("configuring","Configuring Docker compose...",50),await new Promise(e=>setTimeout(e,500)),f("starting","Starting server container...",75),await new Promise(e=>setTimeout(e,500)),f("completed","Server created successfully!",100),null==t||t(e.name)}catch(t){let e=t instanceof Error?t.message:"Unknown error occurred";i("error"),h(e),u("Server creation failed"),null==r||r(e)}}},[o,f,t,r]);return(0,s.useEffect)(()=>()=>{m.current&&(m.current.close(),m.current=null)},[]),{status:o,progress:a,message:c,error:d,isCreating:"idle"!==o&&"completed"!==o&&"error"!==o,createServer:v,reset:x}}({onSuccess:()=>{f(!1)},onError:e=>{console.error("Failed to create server:",e)}}),k=async e=>{y(t=>[...t,e]);try{await b.mutateAsync(e)}catch(e){console.error("Failed to start server:",e)}finally{y(t=>t.filter(t=>t!==e))}},T=async e=>{y(t=>[...t,e]);try{await Z.mutateAsync(e)}catch(e){console.error("Failed to stop server:",e)}finally{y(t=>t.filter(t=>t!==e))}};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)(u.Z,{elevation:0,sx:{mb:4,p:3,background:e=>"linear-gradient(135deg, ".concat((0,h.Fq)(e.palette.info.main,.1)," 0%, ").concat((0,h.Fq)(e.palette.primary.main,.1)," 100%)"),borderRadius:2,border:e=>"1px solid ".concat((0,h.Fq)(e.palette.info.main,.2)),display:"flex",justifyContent:"space-between",alignItems:"center"},children:[(0,n.jsxs)(i.Z,{sx:{display:"flex",alignItems:"center",gap:2},children:[(0,n.jsx)(i.Z,{sx:{display:"flex",alignItems:"center",justifyContent:"center",width:56,height:56,borderRadius:2,bgcolor:"info.main",color:"info.contrastText"},children:(0,n.jsx)(p.Z,{sx:{fontSize:32}})}),(0,n.jsxs)(i.Z,{children:[(0,n.jsx)(d.Z,{variant:"h4",component:"h1",fontWeight:"bold",children:"Servers"}),(0,n.jsx)(d.Z,{variant:"body1",color:"text.secondary",children:"Manage your Minecraft servers"})]})]}),(0,n.jsx)(a.Z,{variant:"contained",startIcon:(0,n.jsx)(m.Z,{}),onClick:()=>f(!0),size:"large",children:"Create Server"})]}),C&&(0,n.jsxs)(l.Z,{severity:"error",sx:{mb:3},children:["Failed to load servers: ",C.message]}),w.error&&(0,n.jsxs)(l.Z,{severity:"error",sx:{mb:3},children:["Failed to create server: ",w.error]}),b.isError&&(0,n.jsxs)(l.Z,{severity:"error",sx:{mb:3},children:["Failed to start server: ",null===(e=b.error)||void 0===e?void 0:e.message]}),Z.isError&&(0,n.jsxs)(l.Z,{severity:"error",sx:{mb:3},children:["Failed to stop server: ",null===(t=Z.error)||void 0===t?void 0:t.message]}),S?(0,n.jsx)(i.Z,{sx:{display:"flex",justifyContent:"center",py:8},children:(0,n.jsx)(c.Z,{})}):(0,n.jsx)(L,{servers:(null==g?void 0:g.servers)||[],statusMap:j,onServerClick:e=>{r.push("/servers/".concat(encodeURIComponent(e)))},onStart:k,onStop:T,onCreate:()=>f(!0),loadingServers:v}),(0,n.jsx)(ee,{open:x,onClose:()=>{f(!1),w.reset()},onSubmit:e=>{w.createServer(e)},loading:w.isCreating,status:w.status,progress:w.progress,message:w.message})]})}},3454:function(e,t,r){"use strict";r.d(t,{LoadingProvider:function(){return l},startLoading:function(){return c},stopLoading:function(){return u}});var n=r(94655),s=r(35106),o=r(74228),i=r(31477),a=r.n(i);function l(e){let{children:t}=e,r=(0,o.usePathname)(),i=(0,o.useSearchParams)();return(0,s.useEffect)(()=>{a().done()},[r,i]),(0,n.jsx)(n.Fragment,{children:t})}function c(){a().start()}function u(){a().done()}a().configure({showSpinner:!1,speed:300,minimum:.1})},8690:function(e,t,r){"use strict";r.d(t,{Av:function(){return n.startLoading}});var n=r(3454)},42936:function(e,t,r){"use strict";async function n(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r={...t.headers};t.body&&(r["Content-Type"]="application/json");let n=await fetch(e,{...t,headers:r});if(!n.ok){let e=await n.json().catch(()=>({error:"UnknownError",message:n.statusText})),t=Error(e.message);throw t.statusCode=n.status,t.code=e.error,t}return n.json()}r.d(t,{SC:function(){return n}})},31358:function(e,t,r){"use strict";r.d(t,{x:function(){return i}});var n=r(74228),s=r(35106),o=r(8690);function i(){let e=(0,n.useRouter)(),t=(0,s.useCallback)((t,r)=>{(0,o.Av)(),e.push(t,r)},[e]),r=(0,s.useCallback)((t,r)=>{(0,o.Av)(),e.replace(t,r)},[e]);return(0,s.useMemo)(()=>({...e,push:t,replace:r}),[e,t,r])}},92666:function(e,t,r){"use strict";r.d(t,{$t:function(){return b},Aw:function(){return d},Fv:function(){return v},Hq:function(){return c},Hy:function(){return l},MH:function(){return g},Sr:function(){return m},_I:function(){return h},c5:function(){return Z},g2:function(){return f},gx:function(){return S},hy:function(){return p},iC:function(){return y},jM:function(){return u},mj:function(){return j},nq:function(){return x},nv:function(){return C},s8:function(){return w},x$:function(){return a}});var n=r(5632),s=r(58919),o=r(20367),i=r(42936);function a(){return(0,n.a)({queryKey:["servers"],queryFn:()=>(0,i.SC)("/api/servers"),refetchInterval:6e4})}function l(e,t){return(0,n.a)({queryKey:["servers",e],queryFn:()=>(0,i.SC)("/api/servers/".concat(encodeURIComponent(e))),enabled:(null==t?void 0:t.enabled)!==!1&&!!e,refetchInterval:3e4})}function c(){let e=(0,s.NL)();return(0,o.D)({mutationFn:e=>{let{name:t,force:r}=e;return(0,i.SC)("/api/servers/".concat(encodeURIComponent(t)).concat(r?"?force=true":""),{method:"DELETE"})},onSuccess:()=>{e.invalidateQueries({queryKey:["servers"]})}})}function u(){let e=(0,s.NL)();return(0,o.D)({mutationFn:e=>(0,i.SC)("/api/servers/".concat(encodeURIComponent(e),"/start"),{method:"POST"}),onSuccess:(t,r)=>{e.invalidateQueries({queryKey:["servers"]}),e.invalidateQueries({queryKey:["servers",r]})}})}function d(){let e=(0,s.NL)();return(0,o.D)({mutationFn:e=>(0,i.SC)("/api/servers/".concat(encodeURIComponent(e),"/stop"),{method:"POST"}),onSuccess:(t,r)=>{e.invalidateQueries({queryKey:["servers"]}),e.invalidateQueries({queryKey:["servers",r]})}})}function h(){let e=(0,s.NL)();return(0,o.D)({mutationFn:e=>(0,i.SC)("/api/servers/".concat(encodeURIComponent(e),"/restart"),{method:"POST"}),onSuccess:(t,r)=>{e.invalidateQueries({queryKey:["servers"]}),e.invalidateQueries({queryKey:["servers",r]})}})}function m(){return(0,n.a)({queryKey:["worlds"],queryFn:()=>(0,i.SC)("/api/worlds"),refetchInterval:3e4})}function p(){let e=(0,s.NL)();return(0,o.D)({mutationFn:e=>(0,i.SC)("/api/worlds",{method:"POST",body:JSON.stringify(e)}),onSuccess:()=>{e.invalidateQueries({queryKey:["worlds"]})}})}function x(){let e=(0,s.NL)();return(0,o.D)({mutationFn:e=>{let{worldName:t,serverName:r}=e;return(0,i.SC)("/api/worlds/".concat(encodeURIComponent(t),"/assign"),{method:"POST",body:JSON.stringify({serverName:r})})},onSuccess:()=>{e.invalidateQueries({queryKey:["worlds"]}),e.invalidateQueries({queryKey:["servers"]})}})}function f(){let e=(0,s.NL)();return(0,o.D)({mutationFn:e=>{let{worldName:t,force:r}=e;return(0,i.SC)("/api/worlds/".concat(encodeURIComponent(t),"/release").concat(r?"?force=true":""),{method:"POST"})},onSuccess:()=>{e.invalidateQueries({queryKey:["worlds"]})}})}function v(){let e=(0,s.NL)();return(0,o.D)({mutationFn:e=>{let{name:t,force:r}=e;return(0,i.SC)("/api/worlds/".concat(encodeURIComponent(t)).concat(r?"?force=true":""),{method:"DELETE"})},onSuccess:()=>{e.invalidateQueries({queryKey:["worlds"]})}})}function y(e,t){return(0,n.a)({queryKey:["servers",e,"config"],queryFn:()=>(0,i.SC)("/api/servers/".concat(encodeURIComponent(e),"/config")),enabled:(null==t?void 0:t.enabled)!==!1&&!!e})}function g(){let e=(0,s.NL)();return(0,o.D)({mutationFn:e=>{let{serverName:t,config:r}=e;return(0,i.SC)("/api/servers/".concat(encodeURIComponent(t),"/config"),{method:"PATCH",body:JSON.stringify(r)})},onSuccess:(t,r)=>{let{serverName:n}=r;e.invalidateQueries({queryKey:["servers",n,"config"]}),e.invalidateQueries({queryKey:["servers",n]})}})}function S(){let e=(0,s.NL)();return(0,o.D)({mutationFn:e=>(0,i.SC)("/api/servers/".concat(encodeURIComponent(e),"/world/reset"),{method:"POST"}),onSuccess:(t,r)=>{e.invalidateQueries({queryKey:["servers",r]}),e.invalidateQueries({queryKey:["worlds"]})}})}function C(){return(0,n.a)({queryKey:["router-status"],queryFn:()=>(0,i.SC)("/api/router/status"),refetchInterval:3e4})}function j(){return(0,n.a)({queryKey:["backup-status"],queryFn:()=>(0,i.SC)("/api/backup"),refetchInterval:6e4})}function b(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:20;return(0,n.a)({queryKey:["backup-history",e],queryFn:()=>(0,i.SC)("/api/backup/history?limit=".concat(e)),refetchInterval:6e4})}function Z(){let e=(0,s.NL)();return(0,o.D)({mutationFn:e=>{let{message:t}=e;return(0,i.SC)("/api/backup",{method:"POST",body:JSON.stringify({message:t})})},onSuccess:()=>{e.invalidateQueries({queryKey:["backup-status"]}),e.invalidateQueries({queryKey:["backup-history"]})}})}function w(){let e=(0,s.NL)();return(0,o.D)({mutationFn:e=>(0,i.SC)("/api/backup/restore",{method:"POST",body:JSON.stringify({commitHash:e})}),onSuccess:()=>{e.invalidateQueries({queryKey:["worlds"]}),e.invalidateQueries({queryKey:["servers"]})}})}},93757:function(e,t,r){"use strict";r.d(t,{D:function(){return o}});var n=r(35106);class s{connect(e){this.options=e,this.shouldReconnect=!0,this.establishConnection()}establishConnection(){this.options&&(this.updateState("connecting"),this.eventSource&&this.eventSource.close(),this.eventSource=new EventSource(this.options.url,{withCredentials:this.options.withCredentials||!1}),this.eventSource.onopen=()=>{this.updateState("connected"),this.retryCount=0,this.lastError=null},this.eventSource.onmessage=e=>{if(!e.data.startsWith(":"))try{var t,r;let n=JSON.parse(e.data);null===(r=this.options)||void 0===r||null===(t=r.onMessage)||void 0===t||t.call(r,n)}catch(e){console.warn("Failed to parse SSE message:",e)}},this.eventSource.onerror=()=>{var e,t;let r={message:"SSE connection error",code:"CONNECTION_ERROR",retryCount:this.retryCount,timestamp:new Date};this.lastError=r,this.updateState("error"),null===(t=this.options)||void 0===t||null===(e=t.onError)||void 0===e||e.call(t,r),this.shouldReconnect&&this.scheduleReconnect()})}scheduleReconnect(){var e,t;if(!this.options)return;let r=null!==(e=this.options.maxReconnectAttempts)&&void 0!==e?e:1/0;if(this.retryCount>=r)return;this.reconnectTimer&&clearTimeout(this.reconnectTimer);let n=null!==(t=this.options.reconnectInterval)&&void 0!==t?t:3e3;this.reconnectTimer=setTimeout(()=>{this.retryCount++,this.establishConnection()},n)}disconnect(){this.shouldReconnect=!1,this.reconnectTimer&&(clearTimeout(this.reconnectTimer),this.reconnectTimer=null),this.eventSource&&(this.eventSource.close(),this.eventSource=null),this.updateState("disconnected")}getState(){return this.state}isConnected(){return"connected"===this.state}getLastError(){return this.lastError}getRetryCount(){return this.retryCount}reconnect(){this.retryCount++,this.shouldReconnect=!0,this.eventSource&&(this.eventSource.close(),this.eventSource=null),this.reconnectTimer&&(clearTimeout(this.reconnectTimer),this.reconnectTimer=null),this.establishConnection()}updateState(e){var t,r;this.state=e,null===(r=this.options)||void 0===r||null===(t=r.onStateChange)||void 0===t||t.call(r,e)}constructor(){this.eventSource=null,this.state="disconnected",this.retryCount=0,this.lastError=null,this.reconnectTimer=null,this.options=null,this.shouldReconnect=!0}}function o(e){let{url:t,onMessage:r,onError:o,reconnectInterval:i=3e3,maxReconnectAttempts:a=1/0,enabled:l=!0,withCredentials:c=!1}=e,[u,d]=(0,n.useState)(null),[h,m]=(0,n.useState)("disconnected"),[p,x]=(0,n.useState)(null),[f,v]=(0,n.useState)(0),y=(0,n.useRef)(null),g=(0,n.useCallback)(e=>{d(e),null==r||r(e)},[r]),S=(0,n.useCallback)(e=>{m(e),"connected"===e&&v(0)},[]),C=(0,n.useCallback)(e=>{x(e),"number"==typeof e.retryCount&&v(e.retryCount),null==o||o(e)},[o]),j=(0,n.useCallback)(()=>{y.current&&(y.current.reconnect(),v(y.current.getRetryCount()))},[]),b=(0,n.useCallback)(()=>{y.current&&y.current.disconnect()},[]);return(0,n.useEffect)(()=>{if(!l){y.current&&(y.current.disconnect(),y.current=null);return}return y.current||(y.current=new s),y.current.connect({url:t,onMessage:g,onStateChange:S,onError:C,reconnectInterval:i,maxReconnectAttempts:a,withCredentials:c}),()=>{y.current&&(y.current.disconnect(),y.current=null)}},[t,l,i,a,c,g,S,C]),{data:u,isConnected:"connected"===h,state:h,error:p,retryCount:f,reconnect:j,disconnect:b}}},59104:function(e,t,r){"use strict";r.d(t,{d:function(){return o}});var n=r(35106),s=r(93757);function o(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},{onStatusChange:t,enabled:r=!0,reconnectInterval:o=3e3}=e,[i,a]=(0,n.useState)({}),l=(0,n.useCallback)(e=>{if("server-status"===e.type){let{serverName:r,status:n,health:s,timestamp:o}=e.data;a(e=>({...e,[r]:{status:n,health:s,timestamp:o}})),null==t||t(r,n,s)}},[t]),{isConnected:c,reconnect:u,retryCount:d}=(0,s.D)({url:"/api/sse/servers-status",onMessage:l,enabled:r,reconnectInterval:o}),h=(0,n.useCallback)(e=>i[e]||null,[i]);return(0,n.useEffect)(()=>{r||a({})},[r]),{statusMap:i,getServerStatus:h,isConnected:c,reconnect:u,retryCount:d}}}},function(e){e.O(0,[6812,7220,8006,7294,8696,1071,540,6189,4840,5511,310,3543,4538,4278,9887,7413,3669,2757,1744],function(){return e(e.s=49726)}),_N_E=e.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[7701],{6199:function(e,n,r){Promise.resolve().then(r.bind(r,36405))},36405:function(e,n,r){"use strict";r.r(n),r.d(n,{default:function(){return E}});var t=r(94655),s=r(35106),i=r(7281),l=r(30417),o=r(81071),a=r(93017),c=r(69899),d=r(31317),u=r(99770),x=r(62508),h=r(5682),m=r(76678),f=r(97436),y=r(76492),v=r(32366),p=r(84974),j=r(84840),g=r(52082),Z=r(89923),b=r(10297),S=r(42431),C=r(628),w=r(41565),q=r(25935),k=r(79983),I=r(25333),F=r(95511),D=r(96292),L=r(97812),K=r(21111),N=r(78067),W=r(33104);function T(e){let{world:n,onAssign:r,onRelease:s,onDelete:l,loading:o=!1}=e,a=(e,r)=>{e.stopPropagation(),r(n.name)};return(0,t.jsxs)(C.Z,{role:"article",sx:{transition:"all 0.2s",height:200,display:"flex",flexDirection:"column","&:hover":{transform:"translateY(-2px)",boxShadow:4}},children:[(0,t.jsxs)(w.Z,{sx:{flex:1,pb:1},children:[(0,t.jsxs)(i.Z,{sx:{display:"flex",justifyContent:"space-between",alignItems:"center",mb:2},children:[(0,t.jsx)(d.Z,{variant:"h6",component:"h3",sx:{fontWeight:600,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",flex:1,mr:1},children:n.name}),(0,t.jsx)(I.Z,{label:n.isLocked?"Locked":"Available",size:"small",color:n.isLocked?"warning":"success",sx:{fontWeight:500,minWidth:80}})]}),(0,t.jsxs)(i.Z,{sx:{display:"flex",alignItems:"center",gap:1,mb:1.5},children:[(0,t.jsx)(N.Z,{sx:{fontSize:16,color:"text.secondary"}}),(0,t.jsx)(d.Z,{variant:"body2",color:"text.secondary",children:n.size||"Unknown size"})]}),n.isLocked&&n.lockedBy&&(0,t.jsxs)(i.Z,{sx:{display:"flex",alignItems:"center",gap:1,mb:1.5},children:[(0,t.jsx)(D.Z,{sx:{fontSize:16,color:"text.secondary"}}),(0,t.jsx)(F.Z,{title:"Assigned to ".concat(n.lockedBy),arrow:!0,children:(0,t.jsx)(d.Z,{variant:"body2",color:"text.secondary",sx:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:n.lockedBy})})]}),(0,t.jsxs)(i.Z,{sx:{display:"flex",alignItems:"center",gap:1},children:[(0,t.jsx)(W.Z,{sx:{fontSize:16,color:"text.secondary"}}),(0,t.jsx)(d.Z,{variant:"body2",color:"text.secondary",children:(e=>{if(!e)return"-";try{return new Date(e).toLocaleDateString(void 0,{year:"numeric",month:"short",day:"numeric"})}catch(n){return e}})(n.lastModified)})]})]}),(0,t.jsxs)(q.Z,{sx:{justifyContent:"flex-end",px:2,py:1.5,borderTop:"1px solid",borderColor:"divider"},children:[!n.isLocked&&r&&(0,t.jsx)(F.Z,{title:"Assign to server",arrow:!0,children:(0,t.jsx)(k.Z,{"aria-label":"Assign world",color:"primary",onClick:e=>a(e,r),disabled:o,size:"small",children:(0,t.jsx)(D.Z,{})})}),n.isLocked&&s&&(0,t.jsx)(F.Z,{title:"Release from server",arrow:!0,children:(0,t.jsx)(k.Z,{"aria-label":"Release world",color:"warning",onClick:e=>a(e,s),disabled:o,size:"small",children:(0,t.jsx)(L.Z,{})})}),l&&(0,t.jsx)(F.Z,{title:"Delete world",arrow:!0,children:(0,t.jsx)(k.Z,{"aria-label":"Delete world",color:"error",onClick:e=>a(e,l),disabled:o,size:"small",children:(0,t.jsx)(K.Z,{})})})]})]})}function O(e){let{worlds:n,onAssign:r,onRelease:o,onDelete:a,onCreate:c,loadingWorlds:u=[]}=e,[x,h]=(0,s.useState)(""),[m,y]=(0,s.useState)("all"),p=(0,s.useMemo)(()=>n.filter(e=>(!x||!!e.name.toLowerCase().includes(x.toLowerCase()))&&("available"!==m||!e.isLocked)&&("locked"!==m||!!e.isLocked)),[n,x,m]);return 0===n.length?(0,t.jsxs)(i.Z,{sx:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",minHeight:"400px",gap:2},children:[(0,t.jsx)(d.Z,{variant:"h6",color:"text.secondary",children:"No worlds found"}),c&&(0,t.jsx)(l.Z,{variant:"contained",startIcon:(0,t.jsx)(v.Z,{}),onClick:c,children:"Create World"})]}):(0,t.jsxs)(i.Z,{children:[(0,t.jsxs)(i.Z,{sx:{display:"flex",flexDirection:{xs:"column",sm:"row"},gap:2,mb:3,alignItems:{xs:"stretch",sm:"center"},justifyContent:"space-between"},children:[(0,t.jsxs)(b.Z,{value:m,exclusive:!0,onChange:(e,n)=>{null!==n&&y(n)},size:"small",sx:{flexShrink:0},children:[(0,t.jsx)(Z.Z,{value:"all",children:"All"}),(0,t.jsx)(Z.Z,{value:"available",children:"Available"}),(0,t.jsx)(Z.Z,{value:"locked",children:"Locked"})]}),(0,t.jsx)(f.Z,{size:"small",placeholder:"Search worlds...",value:x,onChange:e=>h(e.target.value),InputProps:{startAdornment:(0,t.jsx)(g.Z,{position:"start",children:(0,t.jsx)(S.Z,{})})},sx:{flexGrow:{xs:1,sm:0},minWidth:{sm:300}}})]}),(0,t.jsxs)(d.Z,{variant:"body2",color:"text.secondary",sx:{mb:2},children:[p.length," ",1===p.length?"world":"worlds"]}),0===p.length?(0,t.jsx)(i.Z,{sx:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",minHeight:"200px",gap:2},children:(0,t.jsx)(d.Z,{variant:"h6",color:"text.secondary",children:"No worlds found"})}):(0,t.jsx)(j.ZP,{container:!0,spacing:2,children:p.map(e=>(0,t.jsx)(j.ZP,{item:!0,xs:12,sm:6,md:4,children:(0,t.jsx)(T,{world:e,onAssign:r,onRelease:o,onDelete:a,loading:u.includes(e.name)})},e.name))})]})}let P={name:"",seed:""};function Q(e){let{open:n,onClose:r,onSubmit:o,loading:c=!1}=e,[d,y]=(0,s.useState)(P),[v,p]=(0,s.useState)({});(0,s.useEffect)(()=>{n||(y(P),p({}))},[n]);let j=e=>e?/^[a-z0-9-]+$/.test(e)?null:"Only lowercase letters, numbers, and hyphens are allowed":"World name is required",g=e=>n=>{let r=n.target.value;y(n=>({...n,[e]:r})),v[e]&&p(n=>({...n,[e]:""}))};return(0,t.jsx)(u.Z,{open:n,onClose:c?void 0:r,maxWidth:"sm",fullWidth:!0,children:(0,t.jsxs)("form",{onSubmit:e=>{e.preventDefault(),p({});let n=j(d.name);if(n){p({name:n});return}o({name:d.name,...d.seed?{seed:d.seed}:{}})},children:[(0,t.jsx)(x.Z,{children:"Create New World"}),(0,t.jsx)(h.Z,{children:(0,t.jsxs)(i.Z,{sx:{display:"flex",flexDirection:"column",gap:2,pt:1},children:[(0,t.jsx)(f.Z,{label:"World Name",value:d.name,onChange:g("name"),error:!!v.name,helperText:v.name||"Only lowercase letters, numbers, and hyphens",fullWidth:!0,autoFocus:!0,disabled:c}),(0,t.jsx)(f.Z,{label:"Seed (optional)",value:d.seed||"",onChange:g("seed"),helperText:"Leave empty for a random seed",fullWidth:!0,disabled:c})]})}),(0,t.jsxs)(m.Z,{sx:{px:3,pb:2},children:[(0,t.jsx)(l.Z,{onClick:r,disabled:c,children:"Cancel"}),(0,t.jsx)(l.Z,{type:"submit",variant:"contained",disabled:c,startIcon:c?(0,t.jsx)(a.Z,{size:16}):null,children:c?"Creating...":"Create"})]})]})})}var R=r(7178),z=r(92666);function A(e){let{open:n,worldName:r,onClose:c,onSubmit:y,loading:v=!1}=e,[p,j]=(0,s.useState)(""),{data:g,isLoading:Z}=(0,z.x$)();(0,s.useEffect)(()=>{n||j("")},[n]);let b=(null==g?void 0:g.servers)||[],S=b.filter(e=>"running"!==e.status),C=b.filter(e=>"running"===e.status);return(0,t.jsx)(u.Z,{open:n,onClose:v?void 0:c,maxWidth:"sm",fullWidth:!0,children:(0,t.jsxs)("form",{onSubmit:e=>{e.preventDefault(),p&&y(r,p)},children:[(0,t.jsxs)(x.Z,{children:["Assign World: ",r]}),(0,t.jsx)(h.Z,{children:(0,t.jsx)(i.Z,{sx:{display:"flex",flexDirection:"column",gap:2,pt:1},children:Z?(0,t.jsx)(i.Z,{sx:{display:"flex",justifyContent:"center",py:4},children:(0,t.jsx)(a.Z,{})}):0===b.length?(0,t.jsx)(d.Z,{color:"text.secondary",children:"No servers available. Create a server first."}):(0,t.jsxs)(t.Fragment,{children:[0===S.length&&C.length>0&&(0,t.jsx)(o.Z,{severity:"warning",children:"All servers are currently running. It is recommended to assign worlds to stopped servers."}),(0,t.jsxs)(f.Z,{label:"Select Server",select:!0,value:p,onChange:e=>j(e.target.value),fullWidth:!0,disabled:v,helperText:"Select a server to assign this world to",children:[S.length>0&&(0,t.jsx)(R.Z,{disabled:!0,children:(0,t.jsx)(d.Z,{variant:"caption",color:"text.secondary",children:"Available Servers"})}),S.map(e=>(0,t.jsx)(R.Z,{value:e.name,children:e.name},e.name)),C.length>0&&(0,t.jsx)(R.Z,{disabled:!0,children:(0,t.jsx)(d.Z,{variant:"caption",color:"text.secondary",children:"Running Servers (not recommended)"})}),C.map(e=>(0,t.jsx)(R.Z,{value:e.name,children:e.name},e.name))]})]})})}),(0,t.jsxs)(m.Z,{sx:{px:3,pb:2},children:[(0,t.jsx)(l.Z,{onClick:c,disabled:v,children:"Cancel"}),(0,t.jsx)(l.Z,{type:"submit",variant:"contained",disabled:v||!p||Z,startIcon:v?(0,t.jsx)(a.Z,{size:16}):null,children:v?"Assigning...":"Assign"})]})]})})}function E(){var e,n,r,j;let[g,Z]=(0,s.useState)(!1),[b,S]=(0,s.useState)(null),[C,w]=(0,s.useState)(null),[q,k]=(0,s.useState)(""),[I,F]=(0,s.useState)([]),{data:D,isLoading:L,error:K}=(0,z.Sr)(),N=(0,z.hy)(),W=(0,z.nq)(),T=(0,z.g2)(),P=(0,z.Fv)(),R=async e=>{F(n=>[...n,e]);try{await T.mutateAsync({worldName:e})}catch(e){console.error("Failed to release world:",e)}finally{F(n=>n.filter(n=>n!==e))}};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)(c.Z,{elevation:0,sx:{mb:4,p:3,background:e=>"linear-gradient(135deg, ".concat((0,y.Fq)(e.palette.success.main,.1)," 0%, ").concat((0,y.Fq)(e.palette.primary.main,.1)," 100%)"),borderRadius:2,border:e=>"1px solid ".concat((0,y.Fq)(e.palette.success.main,.2)),display:"flex",justifyContent:"space-between",alignItems:"center"},children:[(0,t.jsxs)(i.Z,{sx:{display:"flex",alignItems:"center",gap:2},children:[(0,t.jsx)(i.Z,{sx:{display:"flex",alignItems:"center",justifyContent:"center",width:56,height:56,borderRadius:2,bgcolor:"success.main",color:"success.contrastText"},children:(0,t.jsx)(p.Z,{sx:{fontSize:32}})}),(0,t.jsxs)(i.Z,{children:[(0,t.jsx)(d.Z,{variant:"h4",component:"h1",fontWeight:"bold",children:"Worlds"}),(0,t.jsx)(d.Z,{variant:"body1",color:"text.secondary",children:"Manage your Minecraft worlds"})]})]}),(0,t.jsx)(l.Z,{variant:"contained",startIcon:(0,t.jsx)(v.Z,{}),onClick:()=>Z(!0),size:"large",children:"Create World"})]}),K&&(0,t.jsxs)(o.Z,{severity:"error",sx:{mb:3},children:["Failed to load worlds: ",K.message]}),N.isError&&(0,t.jsxs)(o.Z,{severity:"error",sx:{mb:3},children:["Failed to create world: ",null===(e=N.error)||void 0===e?void 0:e.message]}),W.isError&&(0,t.jsxs)(o.Z,{severity:"error",sx:{mb:3},children:["Failed to assign world: ",null===(n=W.error)||void 0===n?void 0:n.message]}),T.isError&&(0,t.jsxs)(o.Z,{severity:"error",sx:{mb:3},children:["Failed to release world: ",null===(r=T.error)||void 0===r?void 0:r.message]}),P.isError&&(0,t.jsxs)(o.Z,{severity:"error",sx:{mb:3},children:["Failed to delete world: ",null===(j=P.error)||void 0===j?void 0:j.message]}),L?(0,t.jsx)(i.Z,{sx:{display:"flex",justifyContent:"center",py:8},children:(0,t.jsx)(a.Z,{})}):(0,t.jsx)(O,{worlds:(null==D?void 0:D.worlds)||[],onAssign:e=>S(e),onRelease:R,onDelete:e=>{w(e),k("")},onCreate:()=>Z(!0),loadingWorlds:I}),(0,t.jsx)(Q,{open:g,onClose:()=>{Z(!1),N.reset()},onSubmit:e=>{N.mutate(e,{onSuccess:()=>{Z(!1)}})},loading:N.isPending}),(0,t.jsx)(A,{open:!!b,worldName:b||"",onClose:()=>S(null),onSubmit:(e,n)=>{F(n=>[...n,e]),W.mutate({worldName:e,serverName:n},{onSuccess:()=>{S(null)},onSettled:()=>{F(n=>n.filter(n=>n!==e))}})},loading:W.isPending}),(0,t.jsxs)(u.Z,{open:!!C,onClose:()=>{w(null),k("")},maxWidth:"sm",fullWidth:!0,children:[(0,t.jsx)(x.Z,{children:"Delete World"}),(0,t.jsxs)(h.Z,{children:[(0,t.jsxs)(d.Z,{sx:{mb:2},children:["This action cannot be undone. Type ",(0,t.jsx)("strong",{children:C})," to confirm deletion."]}),(0,t.jsx)(f.Z,{label:"World name",value:q,onChange:e=>k(e.target.value),fullWidth:!0,autoFocus:!0})]}),(0,t.jsxs)(m.Z,{sx:{px:3,pb:2},children:[(0,t.jsx)(l.Z,{onClick:()=>{w(null),k("")},children:"Cancel"}),(0,t.jsx)(l.Z,{variant:"contained",color:"error",onClick:()=>{C&&q===C&&(F(e=>[...e,C]),P.mutate({name:C,force:!0},{onSuccess:()=>{w(null),k("")},onSettled:()=>{F(e=>e.filter(e=>e!==C))}}))},disabled:q!==C||P.isPending,startIcon:P.isPending?(0,t.jsx)(a.Z,{size:16}):null,children:P.isPending?"Deleting...":"Delete"})]})]})]})}},42936:function(e,n,r){"use strict";async function t(e){let n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r={...n.headers};n.body&&(r["Content-Type"]="application/json");let t=await fetch(e,{...n,headers:r});if(!t.ok){let e=await t.json().catch(()=>({error:"UnknownError",message:t.statusText})),n=Error(e.message);throw n.statusCode=t.status,n.code=e.error,n}return t.json()}r.d(n,{SC:function(){return t}})},92666:function(e,n,r){"use strict";r.d(n,{$t:function(){return S},Aw:function(){return u},Fv:function(){return v},Hq:function(){return c},Hy:function(){return a},MH:function(){return j},Sr:function(){return h},_I:function(){return x},c5:function(){return C},g2:function(){return y},gx:function(){return g},hy:function(){return m},iC:function(){return p},jM:function(){return d},mj:function(){return b},nq:function(){return f},nv:function(){return Z},s8:function(){return w},x$:function(){return o}});var t=r(5632),s=r(58919),i=r(20367),l=r(42936);function o(){return(0,t.a)({queryKey:["servers"],queryFn:()=>(0,l.SC)("/api/servers"),refetchInterval:6e4})}function a(e,n){return(0,t.a)({queryKey:["servers",e],queryFn:()=>(0,l.SC)("/api/servers/".concat(encodeURIComponent(e))),enabled:(null==n?void 0:n.enabled)!==!1&&!!e,refetchInterval:3e4})}function c(){let e=(0,s.NL)();return(0,i.D)({mutationFn:e=>{let{name:n,force:r}=e;return(0,l.SC)("/api/servers/".concat(encodeURIComponent(n)).concat(r?"?force=true":""),{method:"DELETE"})},onSuccess:()=>{e.invalidateQueries({queryKey:["servers"]})}})}function d(){let e=(0,s.NL)();return(0,i.D)({mutationFn:e=>(0,l.SC)("/api/servers/".concat(encodeURIComponent(e),"/start"),{method:"POST"}),onSuccess:(n,r)=>{e.invalidateQueries({queryKey:["servers"]}),e.invalidateQueries({queryKey:["servers",r]})}})}function u(){let e=(0,s.NL)();return(0,i.D)({mutationFn:e=>(0,l.SC)("/api/servers/".concat(encodeURIComponent(e),"/stop"),{method:"POST"}),onSuccess:(n,r)=>{e.invalidateQueries({queryKey:["servers"]}),e.invalidateQueries({queryKey:["servers",r]})}})}function x(){let e=(0,s.NL)();return(0,i.D)({mutationFn:e=>(0,l.SC)("/api/servers/".concat(encodeURIComponent(e),"/restart"),{method:"POST"}),onSuccess:(n,r)=>{e.invalidateQueries({queryKey:["servers"]}),e.invalidateQueries({queryKey:["servers",r]})}})}function h(){return(0,t.a)({queryKey:["worlds"],queryFn:()=>(0,l.SC)("/api/worlds"),refetchInterval:3e4})}function m(){let e=(0,s.NL)();return(0,i.D)({mutationFn:e=>(0,l.SC)("/api/worlds",{method:"POST",body:JSON.stringify(e)}),onSuccess:()=>{e.invalidateQueries({queryKey:["worlds"]})}})}function f(){let e=(0,s.NL)();return(0,i.D)({mutationFn:e=>{let{worldName:n,serverName:r}=e;return(0,l.SC)("/api/worlds/".concat(encodeURIComponent(n),"/assign"),{method:"POST",body:JSON.stringify({serverName:r})})},onSuccess:()=>{e.invalidateQueries({queryKey:["worlds"]}),e.invalidateQueries({queryKey:["servers"]})}})}function y(){let e=(0,s.NL)();return(0,i.D)({mutationFn:e=>{let{worldName:n,force:r}=e;return(0,l.SC)("/api/worlds/".concat(encodeURIComponent(n),"/release").concat(r?"?force=true":""),{method:"POST"})},onSuccess:()=>{e.invalidateQueries({queryKey:["worlds"]})}})}function v(){let e=(0,s.NL)();return(0,i.D)({mutationFn:e=>{let{name:n,force:r}=e;return(0,l.SC)("/api/worlds/".concat(encodeURIComponent(n)).concat(r?"?force=true":""),{method:"DELETE"})},onSuccess:()=>{e.invalidateQueries({queryKey:["worlds"]})}})}function p(e,n){return(0,t.a)({queryKey:["servers",e,"config"],queryFn:()=>(0,l.SC)("/api/servers/".concat(encodeURIComponent(e),"/config")),enabled:(null==n?void 0:n.enabled)!==!1&&!!e})}function j(){let e=(0,s.NL)();return(0,i.D)({mutationFn:e=>{let{serverName:n,config:r}=e;return(0,l.SC)("/api/servers/".concat(encodeURIComponent(n),"/config"),{method:"PATCH",body:JSON.stringify(r)})},onSuccess:(n,r)=>{let{serverName:t}=r;e.invalidateQueries({queryKey:["servers",t,"config"]}),e.invalidateQueries({queryKey:["servers",t]})}})}function g(){let e=(0,s.NL)();return(0,i.D)({mutationFn:e=>(0,l.SC)("/api/servers/".concat(encodeURIComponent(e),"/world/reset"),{method:"POST"}),onSuccess:(n,r)=>{e.invalidateQueries({queryKey:["servers",r]}),e.invalidateQueries({queryKey:["worlds"]})}})}function Z(){return(0,t.a)({queryKey:["router-status"],queryFn:()=>(0,l.SC)("/api/router/status"),refetchInterval:3e4})}function b(){return(0,t.a)({queryKey:["backup-status"],queryFn:()=>(0,l.SC)("/api/backup"),refetchInterval:6e4})}function S(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:20;return(0,t.a)({queryKey:["backup-history",e],queryFn:()=>(0,l.SC)("/api/backup/history?limit=".concat(e)),refetchInterval:6e4})}function C(){let e=(0,s.NL)();return(0,i.D)({mutationFn:e=>{let{message:n}=e;return(0,l.SC)("/api/backup",{method:"POST",body:JSON.stringify({message:n})})},onSuccess:()=>{e.invalidateQueries({queryKey:["backup-status"]}),e.invalidateQueries({queryKey:["backup-history"]})}})}function w(){let e=(0,s.NL)();return(0,i.D)({mutationFn:e=>(0,l.SC)("/api/backup/restore",{method:"POST",body:JSON.stringify({commitHash:e})}),onSuccess:()=>{e.invalidateQueries({queryKey:["worlds"]}),e.invalidateQueries({queryKey:["servers"]})}})}}},function(e){e.O(0,[6812,7220,8006,7294,8696,1071,540,6189,4840,5511,310,3543,4278,315,3669,2757,1744],function(){return e(e.s=6199)}),_N_E=e.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[2626],{40527:function(e,r,t){Promise.resolve().then(t.bind(t,10672))},628:function(e,r,t){"use strict";t.d(r,{Z:function(){return Z}});var n=t(81500),i=t(32324),s=t(35106),a=t(70316),l=t(65951),o=t(34519),d=t(28057),u=t(69899),c=t(11379),m=t(9049);function x(e){return(0,m.ZP)("MuiCard",e)}(0,c.Z)("MuiCard",["root"]);var h=t(94655);let p=["className","raised"],f=e=>{let{classes:r}=e;return(0,l.Z)({root:["root"]},x,r)},g=(0,o.ZP)(u.Z,{name:"MuiCard",slot:"Root",overridesResolver:(e,r)=>r.root})(()=>({overflow:"hidden"}));var Z=s.forwardRef(function(e,r){let t=(0,d.i)({props:e,name:"MuiCard"}),{className:s,raised:l=!1}=t,o=(0,i.Z)(t,p),u=(0,n.Z)({},t,{raised:l}),c=f(u);return(0,h.jsx)(g,(0,n.Z)({className:(0,a.Z)(c.root,s),elevation:l?8:void 0,ref:r,ownerState:u},o))})},41565:function(e,r,t){"use strict";t.d(r,{Z:function(){return g}});var n=t(81500),i=t(32324),s=t(35106),a=t(70316),l=t(65951),o=t(34519),d=t(28057),u=t(11379),c=t(9049);function m(e){return(0,c.ZP)("MuiCardContent",e)}(0,u.Z)("MuiCardContent",["root"]);var x=t(94655);let h=["className","component"],p=e=>{let{classes:r}=e;return(0,l.Z)({root:["root"]},m,r)},f=(0,o.ZP)("div",{name:"MuiCardContent",slot:"Root",overridesResolver:(e,r)=>r.root})(()=>({padding:16,"&:last-child":{paddingBottom:24}}));var g=s.forwardRef(function(e,r){let t=(0,d.i)({props:e,name:"MuiCardContent"}),{className:s,component:l="div"}=t,o=(0,i.Z)(t,h),u=(0,n.Z)({},t,{component:l}),c=p(u);return(0,x.jsx)(f,(0,n.Z)({as:l,className:(0,a.Z)(c.root,s),ownerState:u,ref:r},o))})},10672:function(e,r,t){"use strict";t.r(r),t.d(r,{default:function(){return x}});var n=t(94655),i=t(74228),s=t(67337),a=t(7281),l=t(628),o=t(41565),d=t(31317),u=t(41261),c=t(85480),m=t(46725);function x(){let e=(0,i.useRouter)();return(0,n.jsx)(s.Z,{maxWidth:"sm",children:(0,n.jsx)(a.Z,{sx:{minHeight:"100vh",display:"flex",alignItems:"center",justifyContent:"center",py:4},children:(0,n.jsx)(l.Z,{sx:{width:"100%",maxWidth:500},children:(0,n.jsxs)(o.Z,{sx:{p:4},children:[(0,n.jsx)(d.Z,{variant:"h4",component:"h1",gutterBottom:!0,sx:{fontWeight:600,textAlign:"center",mb:3},children:"Welcome Back"}),(0,n.jsx)(d.Z,{variant:"body2",color:"text.secondary",sx:{textAlign:"center",mb:4},children:"Sign in to manage your Minecraft servers"}),(0,n.jsx)(c.U0,{onSuccess:()=>{e.push("/dashboard")}}),(0,n.jsx)(a.Z,{sx:{mt:3,textAlign:"center"},children:(0,n.jsxs)(d.Z,{variant:"body2",color:"text.secondary",children:["Don't have an account?"," ",(0,n.jsx)(u.Z,{component:m.default,href:"/signup",underline:"hover",children:"Sign up"})]})})]})})})})}},85480:function(e,r,t){"use strict";t.d(r,{U0:function(){return h},WS:function(){return p},Ie:function(){return k}});var n=t(94655),i=t(35106),s=t(7281),a=t(81071),l=t(97436),o=t(52082),d=t(79983),u=t(30417),c=t(36848),m=t(554),x=t(6986);function h(e){let{onSuccess:r}=e,[t,h]=(0,i.useState)(""),[p,f]=(0,i.useState)(""),[g,Z]=(0,i.useState)(!1),[v,j]=(0,i.useState)({}),[y,b]=(0,i.useState)(null),[w,C]=(0,i.useState)(!1),S=()=>{let e={};return t?/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(t)||(e.email="Invalid email address"):e.email="Email is required",p||(e.password="Password is required"),j(e),0===Object.keys(e).length},P=async e=>{if(e.preventDefault(),b(null),S()){C(!0);try{let e=await x.zB.email({email:t,password:p});if(e.error){b(e.error.message||"Invalid credentials"),C(!1);return}r&&r()}catch(e){b("An unexpected error occurred. Please try again."),C(!1)}}};return(0,n.jsxs)(s.Z,{component:"form",onSubmit:P,sx:{display:"flex",flexDirection:"column",gap:2},children:[y&&(0,n.jsx)(a.Z,{severity:"error",onClose:()=>b(null),children:y}),(0,n.jsx)(l.Z,{label:"Email",type:"email",value:t,onChange:e=>h(e.target.value),error:!!v.email,helperText:v.email,disabled:w,fullWidth:!0,required:!0}),(0,n.jsx)(l.Z,{label:"Password",type:g?"text":"password",value:p,onChange:e=>f(e.target.value),error:!!v.password,helperText:v.password,disabled:w,fullWidth:!0,required:!0,InputProps:{endAdornment:(0,n.jsx)(o.Z,{position:"end",children:(0,n.jsx)(d.Z,{"aria-label":"toggle password visibility",onClick:()=>{Z(!g)},edge:"end",children:g?(0,n.jsx)(c.Z,{}):(0,n.jsx)(m.Z,{})})})}}),(0,n.jsx)(u.Z,{type:"submit",variant:"contained",color:"primary",disabled:w,fullWidth:!0,size:"large",children:w?"Signing in...":"Sign In"})]})}function p(e){let{onSuccess:r}=e,[t,h]=(0,i.useState)(""),[p,f]=(0,i.useState)(""),[g,Z]=(0,i.useState)(""),[v,j]=(0,i.useState)(""),[y,b]=(0,i.useState)(!1),[w,C]=(0,i.useState)(!1),[S,P]=(0,i.useState)({}),[k,W]=(0,i.useState)(null),[I,R]=(0,i.useState)(!1),q=()=>{let e={};return t||(e.name="Name is required"),p?/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(p)||(e.email="Invalid email address"):e.email="Email is required",g?g.length<8&&(e.password="Password must be at least 8 characters"):e.password="Password is required",v?g!==v&&(e.confirmPassword="Passwords do not match"):e.confirmPassword="Please confirm your password",P(e),0===Object.keys(e).length},E=async e=>{if(e.preventDefault(),W(null),q()){R(!0);try{let e=await x.y1.email({email:p,password:g,name:t});if(e.error){W(e.error.message||"Registration failed"),R(!1);return}r&&r()}catch(e){W("An unexpected error occurred. Please try again."),R(!1)}}};return(0,n.jsxs)(s.Z,{component:"form",onSubmit:E,sx:{display:"flex",flexDirection:"column",gap:2},children:[k&&(0,n.jsx)(a.Z,{severity:"error",onClose:()=>W(null),children:k}),(0,n.jsx)(l.Z,{label:"Name",type:"text",value:t,onChange:e=>h(e.target.value),error:!!S.name,helperText:S.name,disabled:I,fullWidth:!0,required:!0}),(0,n.jsx)(l.Z,{label:"Email",type:"email",value:p,onChange:e=>f(e.target.value),error:!!S.email,helperText:S.email,disabled:I,fullWidth:!0,required:!0}),(0,n.jsx)(l.Z,{label:"Password",type:y?"text":"password",value:g,onChange:e=>Z(e.target.value),error:!!S.password,helperText:S.password,disabled:I,fullWidth:!0,required:!0,InputProps:{endAdornment:(0,n.jsx)(o.Z,{position:"end",children:(0,n.jsx)(d.Z,{"aria-label":"toggle password visibility",onClick:()=>{b(!y)},edge:"end",children:y?(0,n.jsx)(c.Z,{}):(0,n.jsx)(m.Z,{})})})}}),(0,n.jsx)(l.Z,{label:"Confirm Password",type:w?"text":"password",value:v,onChange:e=>j(e.target.value),error:!!S.confirmPassword,helperText:S.confirmPassword,disabled:I,fullWidth:!0,required:!0,InputProps:{endAdornment:(0,n.jsx)(o.Z,{position:"end",children:(0,n.jsx)(d.Z,{"aria-label":"toggle password visibility",onClick:()=>{C(!w)},edge:"end",children:w?(0,n.jsx)(c.Z,{}):(0,n.jsx)(m.Z,{})})})}}),(0,n.jsx)(u.Z,{type:"submit",variant:"contained",color:"primary",disabled:I,fullWidth:!0,size:"large",children:I?"Creating account...":"Sign Up"})]})}var f=t(74228),g=t(93017),Z=t(86702),v=t(35694),j=t(31317),y=t(25333),b=t(69123),w=t(7178),C=t(17820),S=t(73424),P=t(78319);function k(){let e=(0,f.useRouter)(),{data:r,isPending:t}=(0,x.kP)(),[a,l]=(0,i.useState)(null),o=()=>{l(null)},c=async()=>{o(),await (0,x.w7)(),e.push("/login")};if(t)return(0,n.jsx)(s.Z,{sx:{display:"flex",alignItems:"center",justifyContent:"center"},children:(0,n.jsx)(g.Z,{size:24})});if(!(null==r?void 0:r.user))return(0,n.jsx)(u.Z,{variant:"contained",color:"primary",onClick:()=>{e.push("/login")},children:"Sign In"});let{user:m}=r,h=((e,r)=>{if(e){let r=e.split(" ");return r.length>=2?"".concat(r[0][0]).concat(r[1][0]).toUpperCase():e.substring(0,2).toUpperCase()}return r?r[0].toUpperCase():"?"})(m.name,m.email);return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(d.Z,{onClick:e=>{l(e.currentTarget)},"aria-label":"user menu",children:(0,n.jsx)(Z.Z,{sx:{bgcolor:"primary.main"},children:h})}),(0,n.jsxs)(v.Z,{anchorEl:a,open:!!a,onClose:o,anchorOrigin:{vertical:"bottom",horizontal:"right"},transformOrigin:{vertical:"top",horizontal:"right"},sx:{mt:1},children:[(0,n.jsxs)(s.Z,{sx:{px:2,py:1.5,minWidth:200},children:[(0,n.jsx)(j.Z,{variant:"subtitle1",fontWeight:"600",children:m.name||"User"}),(0,n.jsx)(j.Z,{variant:"body2",color:"text.secondary",children:m.email}),"admin"===m.role&&(0,n.jsx)(y.Z,{label:"Admin",size:"small",color:"primary",sx:{mt:1}})]}),(0,n.jsx)(b.Z,{}),(0,n.jsxs)(w.Z,{onClick:c,children:[(0,n.jsx)(C.Z,{children:(0,n.jsx)(P.Z,{fontSize:"small"})}),(0,n.jsx)(S.Z,{children:"Logout"})]})]})]})}},6986:function(e,r,t){"use strict";t.d(r,{kP:function(){return d},w7:function(){return l},y1:function(){return o},zB:function(){return a}});var n=t(77054),i=t(61648),s=t(35016);let{signIn:a,signOut:l,signUp:o,useSession:d}=(0,n.X)({baseURL:s.env.NEXT_PUBLIC_BETTER_AUTH_URL||"",plugins:[(0,i.zB)()]})}},function(e){e.O(0,[6812,7220,8006,7294,8696,1071,55,3543,2149,2542,8322,3669,2757,1744],function(){return e(e.s=40527)}),_N_E=e.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[1931],{54985:function(e,r,n){Promise.resolve().then(n.bind(n,26854))},93017:function(e,r,n){"use strict";n.d(r,{Z:function(){return I}});var t=n(16295),a=n(32324),i=n(81500),s=n(35106),o=n(70316),c=n(65951),u=n(41060),l=n(38762),f=n(28057),d=n(34519),h=n(11379),m=n(9049);function v(e){return(0,m.ZP)("MuiCircularProgress",e)}(0,h.Z)("MuiCircularProgress",["root","determinate","indeterminate","colorPrimary","colorSecondary","svg","circle","circleDeterminate","circleIndeterminate","circleDisableShrink"]);var k=n(94655);function p(){let e=(0,t._)(["\n 0% {\n transform: rotate(0deg);\n }\n\n 100% {\n transform: rotate(360deg);\n }\n"]);return p=function(){return e},e}function P(){let e=(0,t._)(["\n 0% {\n stroke-dasharray: 1px, 200px;\n stroke-dashoffset: 0;\n }\n\n 50% {\n stroke-dasharray: 100px, 200px;\n stroke-dashoffset: -15px;\n }\n\n 100% {\n stroke-dasharray: 100px, 200px;\n stroke-dashoffset: -125px;\n }\n"]);return P=function(){return e},e}function g(){let e=(0,t._)(["\n animation: "," 1.4s linear infinite;\n "]);return g=function(){return e},e}function x(){let e=(0,t._)(["\n animation: "," 1.4s ease-in-out infinite;\n "]);return x=function(){return e},e}let Z=["className","color","disableShrink","size","style","thickness","value","variant"],y=e=>e,S,b,_,C,R=(0,u.F4)(S||(S=y(p()))),M=(0,u.F4)(b||(b=y(P()))),w=e=>{let{classes:r,variant:n,color:t,disableShrink:a}=e,i={root:["root",n,"color".concat((0,l.Z)(t))],svg:["svg"],circle:["circle","circle".concat((0,l.Z)(n)),a&&"circleDisableShrink"]};return(0,c.Z)(i,v,r)},D=(0,d.ZP)("span",{name:"MuiCircularProgress",slot:"Root",overridesResolver:(e,r)=>{let{ownerState:n}=e;return[r.root,r[n.variant],r["color".concat((0,l.Z)(n.color))]]}})(e=>{let{ownerState:r,theme:n}=e;return(0,i.Z)({display:"inline-block"},"determinate"===r.variant&&{transition:n.transitions.create("transform")},"inherit"!==r.color&&{color:(n.vars||n).palette[r.color].main})},e=>{let{ownerState:r}=e;return"indeterminate"===r.variant&&(0,u.iv)(_||(_=y(g(),0)),R)}),N=(0,d.ZP)("svg",{name:"MuiCircularProgress",slot:"Svg",overridesResolver:(e,r)=>r.svg})({display:"block"}),E=(0,d.ZP)("circle",{name:"MuiCircularProgress",slot:"Circle",overridesResolver:(e,r)=>{let{ownerState:n}=e;return[r.circle,r["circle".concat((0,l.Z)(n.variant))],n.disableShrink&&r.circleDisableShrink]}})(e=>{let{ownerState:r,theme:n}=e;return(0,i.Z)({stroke:"currentColor"},"determinate"===r.variant&&{transition:n.transitions.create("stroke-dashoffset")},"indeterminate"===r.variant&&{strokeDasharray:"80px, 200px",strokeDashoffset:0})},e=>{let{ownerState:r}=e;return"indeterminate"===r.variant&&!r.disableShrink&&(0,u.iv)(C||(C=y(x(),0)),M)});var I=s.forwardRef(function(e,r){let n=(0,f.i)({props:e,name:"MuiCircularProgress"}),{className:t,color:s="primary",disableShrink:c=!1,size:u=40,style:l,thickness:d=3.6,value:h=0,variant:m="indeterminate"}=n,v=(0,a.Z)(n,Z),p=(0,i.Z)({},n,{color:s,disableShrink:c,size:u,thickness:d,value:h,variant:m}),P=w(p),g={},x={},y={};if("determinate"===m){let e=2*Math.PI*((44-d)/2);g.strokeDasharray=e.toFixed(3),y["aria-valuenow"]=Math.round(h),g.strokeDashoffset="".concat(((100-h)/100*e).toFixed(3),"px"),x.transform="rotate(-90deg)"}return(0,k.jsx)(D,(0,i.Z)({className:(0,o.Z)(P.root,t),style:(0,i.Z)({width:u,height:u},x,l),ownerState:p,ref:r,role:"progressbar"},y,v,{children:(0,k.jsx)(N,{className:P.svg,ownerState:p,viewBox:"".concat(22," ").concat(22," ").concat(44," ").concat(44),children:(0,k.jsx)(E,{className:P.circle,style:g,ownerState:p,cx:44,cy:44,r:(44-d)/2,fill:"none",strokeWidth:d})})}))})},74228:function(e,r,n){"use strict";var t=n(73310);n.o(t,"useParams")&&n.d(r,{useParams:function(){return t.useParams}}),n.o(t,"usePathname")&&n.d(r,{usePathname:function(){return t.usePathname}}),n.o(t,"useRouter")&&n.d(r,{useRouter:function(){return t.useRouter}}),n.o(t,"useSearchParams")&&n.d(r,{useSearchParams:function(){return t.useSearchParams}}),n.o(t,"useServerInsertedHTML")&&n.d(r,{useServerInsertedHTML:function(){return t.useServerInsertedHTML}})},26854:function(e,r,n){"use strict";n.r(r),n.d(r,{default:function(){return u}});var t=n(94655),a=n(35106),i=n(74228),s=n(7281),o=n(93017),c=n(6986);function u(){let e=(0,i.useRouter)(),{data:r,isPending:n}=(0,c.kP)();return(0,a.useEffect)(()=>{n||((null==r?void 0:r.user)?e.push("/dashboard"):e.push("/login"))},[r,n,e]),(0,t.jsx)(s.Z,{sx:{display:"flex",justifyContent:"center",alignItems:"center",minHeight:"100vh"},children:(0,t.jsx)(o.Z,{})})}},6986:function(e,r,n){"use strict";n.d(r,{kP:function(){return u},w7:function(){return o},y1:function(){return c},zB:function(){return s}});var t=n(77054),a=n(61648),i=n(35016);let{signIn:s,signOut:o,signUp:c,useSession:u}=(0,t.X)({baseURL:i.env.NEXT_PUBLIC_BETTER_AUTH_URL||"",plugins:[(0,a.zB)()]})}},function(e){e.O(0,[6812,7220,2542,3669,2757,1744],function(){return e(e.s=54985)}),_N_E=e.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[4966],{24100:function(e,r,t){Promise.resolve().then(t.bind(t,85795))},628:function(e,r,t){"use strict";t.d(r,{Z:function(){return Z}});var n=t(81500),i=t(32324),s=t(35106),a=t(70316),l=t(65951),o=t(34519),d=t(28057),u=t(69899),c=t(11379),x=t(9049);function m(e){return(0,x.ZP)("MuiCard",e)}(0,c.Z)("MuiCard",["root"]);var h=t(94655);let p=["className","raised"],f=e=>{let{classes:r}=e;return(0,l.Z)({root:["root"]},m,r)},g=(0,o.ZP)(u.Z,{name:"MuiCard",slot:"Root",overridesResolver:(e,r)=>r.root})(()=>({overflow:"hidden"}));var Z=s.forwardRef(function(e,r){let t=(0,d.i)({props:e,name:"MuiCard"}),{className:s,raised:l=!1}=t,o=(0,i.Z)(t,p),u=(0,n.Z)({},t,{raised:l}),c=f(u);return(0,h.jsx)(g,(0,n.Z)({className:(0,a.Z)(c.root,s),elevation:l?8:void 0,ref:r,ownerState:u},o))})},41565:function(e,r,t){"use strict";t.d(r,{Z:function(){return g}});var n=t(81500),i=t(32324),s=t(35106),a=t(70316),l=t(65951),o=t(34519),d=t(28057),u=t(11379),c=t(9049);function x(e){return(0,c.ZP)("MuiCardContent",e)}(0,u.Z)("MuiCardContent",["root"]);var m=t(94655);let h=["className","component"],p=e=>{let{classes:r}=e;return(0,l.Z)({root:["root"]},x,r)},f=(0,o.ZP)("div",{name:"MuiCardContent",slot:"Root",overridesResolver:(e,r)=>r.root})(()=>({padding:16,"&:last-child":{paddingBottom:24}}));var g=s.forwardRef(function(e,r){let t=(0,d.i)({props:e,name:"MuiCardContent"}),{className:s,component:l="div"}=t,o=(0,i.Z)(t,h),u=(0,n.Z)({},t,{component:l}),c=p(u);return(0,m.jsx)(f,(0,n.Z)({as:l,className:(0,a.Z)(c.root,s),ownerState:u,ref:r},o))})},85795:function(e,r,t){"use strict";t.r(r),t.d(r,{default:function(){return m}});var n=t(94655),i=t(74228),s=t(67337),a=t(7281),l=t(628),o=t(41565),d=t(31317),u=t(41261),c=t(85480),x=t(46725);function m(){let e=(0,i.useRouter)();return(0,n.jsx)(s.Z,{maxWidth:"sm",children:(0,n.jsx)(a.Z,{sx:{minHeight:"100vh",display:"flex",alignItems:"center",justifyContent:"center",py:4},children:(0,n.jsx)(l.Z,{sx:{width:"100%",maxWidth:500},children:(0,n.jsxs)(o.Z,{sx:{p:4},children:[(0,n.jsx)(d.Z,{variant:"h4",component:"h1",gutterBottom:!0,sx:{fontWeight:600,textAlign:"center",mb:3},children:"Create Account"}),(0,n.jsx)(d.Z,{variant:"body2",color:"text.secondary",sx:{textAlign:"center",mb:4},children:"Sign up to start managing Minecraft servers"}),(0,n.jsx)(c.WS,{onSuccess:()=>{e.push("/dashboard")}}),(0,n.jsx)(a.Z,{sx:{mt:3,textAlign:"center"},children:(0,n.jsxs)(d.Z,{variant:"body2",color:"text.secondary",children:["Already have an account?"," ",(0,n.jsx)(u.Z,{component:x.default,href:"/login",underline:"hover",children:"Sign in"})]})})]})})})})}},85480:function(e,r,t){"use strict";t.d(r,{U0:function(){return h},WS:function(){return p},Ie:function(){return W}});var n=t(94655),i=t(35106),s=t(7281),a=t(81071),l=t(97436),o=t(52082),d=t(79983),u=t(30417),c=t(36848),x=t(554),m=t(6986);function h(e){let{onSuccess:r}=e,[t,h]=(0,i.useState)(""),[p,f]=(0,i.useState)(""),[g,Z]=(0,i.useState)(!1),[v,j]=(0,i.useState)({}),[y,b]=(0,i.useState)(null),[w,C]=(0,i.useState)(!1),S=()=>{let e={};return t?/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(t)||(e.email="Invalid email address"):e.email="Email is required",p||(e.password="Password is required"),j(e),0===Object.keys(e).length},P=async e=>{if(e.preventDefault(),b(null),S()){C(!0);try{let e=await m.zB.email({email:t,password:p});if(e.error){b(e.error.message||"Invalid credentials"),C(!1);return}r&&r()}catch(e){b("An unexpected error occurred. Please try again."),C(!1)}}};return(0,n.jsxs)(s.Z,{component:"form",onSubmit:P,sx:{display:"flex",flexDirection:"column",gap:2},children:[y&&(0,n.jsx)(a.Z,{severity:"error",onClose:()=>b(null),children:y}),(0,n.jsx)(l.Z,{label:"Email",type:"email",value:t,onChange:e=>h(e.target.value),error:!!v.email,helperText:v.email,disabled:w,fullWidth:!0,required:!0}),(0,n.jsx)(l.Z,{label:"Password",type:g?"text":"password",value:p,onChange:e=>f(e.target.value),error:!!v.password,helperText:v.password,disabled:w,fullWidth:!0,required:!0,InputProps:{endAdornment:(0,n.jsx)(o.Z,{position:"end",children:(0,n.jsx)(d.Z,{"aria-label":"toggle password visibility",onClick:()=>{Z(!g)},edge:"end",children:g?(0,n.jsx)(c.Z,{}):(0,n.jsx)(x.Z,{})})})}}),(0,n.jsx)(u.Z,{type:"submit",variant:"contained",color:"primary",disabled:w,fullWidth:!0,size:"large",children:w?"Signing in...":"Sign In"})]})}function p(e){let{onSuccess:r}=e,[t,h]=(0,i.useState)(""),[p,f]=(0,i.useState)(""),[g,Z]=(0,i.useState)(""),[v,j]=(0,i.useState)(""),[y,b]=(0,i.useState)(!1),[w,C]=(0,i.useState)(!1),[S,P]=(0,i.useState)({}),[W,k]=(0,i.useState)(null),[A,I]=(0,i.useState)(!1),R=()=>{let e={};return t||(e.name="Name is required"),p?/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(p)||(e.email="Invalid email address"):e.email="Email is required",g?g.length<8&&(e.password="Password must be at least 8 characters"):e.password="Password is required",v?g!==v&&(e.confirmPassword="Passwords do not match"):e.confirmPassword="Please confirm your password",P(e),0===Object.keys(e).length},q=async e=>{if(e.preventDefault(),k(null),R()){I(!0);try{let e=await m.y1.email({email:p,password:g,name:t});if(e.error){k(e.error.message||"Registration failed"),I(!1);return}r&&r()}catch(e){k("An unexpected error occurred. Please try again."),I(!1)}}};return(0,n.jsxs)(s.Z,{component:"form",onSubmit:q,sx:{display:"flex",flexDirection:"column",gap:2},children:[W&&(0,n.jsx)(a.Z,{severity:"error",onClose:()=>k(null),children:W}),(0,n.jsx)(l.Z,{label:"Name",type:"text",value:t,onChange:e=>h(e.target.value),error:!!S.name,helperText:S.name,disabled:A,fullWidth:!0,required:!0}),(0,n.jsx)(l.Z,{label:"Email",type:"email",value:p,onChange:e=>f(e.target.value),error:!!S.email,helperText:S.email,disabled:A,fullWidth:!0,required:!0}),(0,n.jsx)(l.Z,{label:"Password",type:y?"text":"password",value:g,onChange:e=>Z(e.target.value),error:!!S.password,helperText:S.password,disabled:A,fullWidth:!0,required:!0,InputProps:{endAdornment:(0,n.jsx)(o.Z,{position:"end",children:(0,n.jsx)(d.Z,{"aria-label":"toggle password visibility",onClick:()=>{b(!y)},edge:"end",children:y?(0,n.jsx)(c.Z,{}):(0,n.jsx)(x.Z,{})})})}}),(0,n.jsx)(l.Z,{label:"Confirm Password",type:w?"text":"password",value:v,onChange:e=>j(e.target.value),error:!!S.confirmPassword,helperText:S.confirmPassword,disabled:A,fullWidth:!0,required:!0,InputProps:{endAdornment:(0,n.jsx)(o.Z,{position:"end",children:(0,n.jsx)(d.Z,{"aria-label":"toggle password visibility",onClick:()=>{C(!w)},edge:"end",children:w?(0,n.jsx)(c.Z,{}):(0,n.jsx)(x.Z,{})})})}}),(0,n.jsx)(u.Z,{type:"submit",variant:"contained",color:"primary",disabled:A,fullWidth:!0,size:"large",children:A?"Creating account...":"Sign Up"})]})}var f=t(74228),g=t(93017),Z=t(86702),v=t(35694),j=t(31317),y=t(25333),b=t(69123),w=t(7178),C=t(17820),S=t(73424),P=t(78319);function W(){let e=(0,f.useRouter)(),{data:r,isPending:t}=(0,m.kP)(),[a,l]=(0,i.useState)(null),o=()=>{l(null)},c=async()=>{o(),await (0,m.w7)(),e.push("/login")};if(t)return(0,n.jsx)(s.Z,{sx:{display:"flex",alignItems:"center",justifyContent:"center"},children:(0,n.jsx)(g.Z,{size:24})});if(!(null==r?void 0:r.user))return(0,n.jsx)(u.Z,{variant:"contained",color:"primary",onClick:()=>{e.push("/login")},children:"Sign In"});let{user:x}=r,h=((e,r)=>{if(e){let r=e.split(" ");return r.length>=2?"".concat(r[0][0]).concat(r[1][0]).toUpperCase():e.substring(0,2).toUpperCase()}return r?r[0].toUpperCase():"?"})(x.name,x.email);return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(d.Z,{onClick:e=>{l(e.currentTarget)},"aria-label":"user menu",children:(0,n.jsx)(Z.Z,{sx:{bgcolor:"primary.main"},children:h})}),(0,n.jsxs)(v.Z,{anchorEl:a,open:!!a,onClose:o,anchorOrigin:{vertical:"bottom",horizontal:"right"},transformOrigin:{vertical:"top",horizontal:"right"},sx:{mt:1},children:[(0,n.jsxs)(s.Z,{sx:{px:2,py:1.5,minWidth:200},children:[(0,n.jsx)(j.Z,{variant:"subtitle1",fontWeight:"600",children:x.name||"User"}),(0,n.jsx)(j.Z,{variant:"body2",color:"text.secondary",children:x.email}),"admin"===x.role&&(0,n.jsx)(y.Z,{label:"Admin",size:"small",color:"primary",sx:{mt:1}})]}),(0,n.jsx)(b.Z,{}),(0,n.jsxs)(w.Z,{onClick:c,children:[(0,n.jsx)(C.Z,{children:(0,n.jsx)(P.Z,{fontSize:"small"})}),(0,n.jsx)(S.Z,{children:"Logout"})]})]})]})}},6986:function(e,r,t){"use strict";t.d(r,{kP:function(){return d},w7:function(){return l},y1:function(){return o},zB:function(){return a}});var n=t(77054),i=t(61648),s=t(35016);let{signIn:a,signOut:l,signUp:o,useSession:d}=(0,n.X)({baseURL:s.env.NEXT_PUBLIC_BETTER_AUTH_URL||"",plugins:[(0,i.zB)()]})}},function(e){e.O(0,[6812,7220,8006,7294,8696,1071,55,3543,2149,2542,8322,3669,2757,1744],function(){return e(e.s=24100)}),_N_E=e.O()}]);