@minecraft-docker/mcctl-console 2.1.3 → 2.2.0

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 (204) 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 +90 -87
  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)/admin/users/page_client-reference-manifest.js +1 -1
  9. package/.next/standalone/platform/services/mcctl-console/.next/server/app/(main)/audit-logs/page_client-reference-manifest.js +1 -1
  10. package/.next/standalone/platform/services/mcctl-console/.next/server/app/(main)/backups/page_client-reference-manifest.js +1 -1
  11. package/.next/standalone/platform/services/mcctl-console/.next/server/app/(main)/dashboard/page.js +1 -1
  12. package/.next/standalone/platform/services/mcctl-console/.next/server/app/(main)/dashboard/page_client-reference-manifest.js +1 -1
  13. package/.next/standalone/platform/services/mcctl-console/.next/server/app/(main)/players/page.js +1 -1
  14. package/.next/standalone/platform/services/mcctl-console/.next/server/app/(main)/players/page.js.nft.json +1 -1
  15. package/.next/standalone/platform/services/mcctl-console/.next/server/app/(main)/players/page_client-reference-manifest.js +1 -1
  16. package/.next/standalone/platform/services/mcctl-console/.next/server/app/(main)/routing/page.js +1 -1
  17. package/.next/standalone/platform/services/mcctl-console/.next/server/app/(main)/routing/page_client-reference-manifest.js +1 -1
  18. package/.next/standalone/platform/services/mcctl-console/.next/server/app/(main)/servers/[name]/console/page_client-reference-manifest.js +1 -1
  19. package/.next/standalone/platform/services/mcctl-console/.next/server/app/(main)/servers/[name]/page.js +1 -1
  20. package/.next/standalone/platform/services/mcctl-console/.next/server/app/(main)/servers/[name]/page.js.nft.json +1 -1
  21. package/.next/standalone/platform/services/mcctl-console/.next/server/app/(main)/servers/[name]/page_client-reference-manifest.js +1 -1
  22. package/.next/standalone/platform/services/mcctl-console/.next/server/app/(main)/servers/page_client-reference-manifest.js +1 -1
  23. package/.next/standalone/platform/services/mcctl-console/.next/server/app/(main)/settings/page.js +1 -1
  24. package/.next/standalone/platform/services/mcctl-console/.next/server/app/(main)/settings/page.js.nft.json +1 -1
  25. package/.next/standalone/platform/services/mcctl-console/.next/server/app/(main)/settings/page_client-reference-manifest.js +1 -1
  26. package/.next/standalone/platform/services/mcctl-console/.next/server/app/(main)/worlds/page.js +1 -1
  27. package/.next/standalone/platform/services/mcctl-console/.next/server/app/(main)/worlds/page_client-reference-manifest.js +1 -1
  28. package/.next/standalone/platform/services/mcctl-console/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  29. package/.next/standalone/platform/services/mcctl-console/.next/server/app/_not-found.html +1 -1
  30. package/.next/standalone/platform/services/mcctl-console/.next/server/app/_not-found.rsc +1 -1
  31. package/.next/standalone/platform/services/mcctl-console/.next/server/app/api/backup/history/route.js +1 -57
  32. package/.next/standalone/platform/services/mcctl-console/.next/server/app/api/backup/history/route.js.nft.json +1 -1
  33. package/.next/standalone/platform/services/mcctl-console/.next/server/app/api/backup/restore/route.js +1 -57
  34. package/.next/standalone/platform/services/mcctl-console/.next/server/app/api/backup/restore/route.js.nft.json +1 -1
  35. package/.next/standalone/platform/services/mcctl-console/.next/server/app/api/backup/route.js +1 -57
  36. package/.next/standalone/platform/services/mcctl-console/.next/server/app/api/backup/route.js.nft.json +1 -1
  37. package/.next/standalone/platform/services/mcctl-console/.next/server/app/api/players/ban/route.js +1 -57
  38. package/.next/standalone/platform/services/mcctl-console/.next/server/app/api/players/ban/route.js.nft.json +1 -1
  39. package/.next/standalone/platform/services/mcctl-console/.next/server/app/api/players/kick/route.js +1 -57
  40. package/.next/standalone/platform/services/mcctl-console/.next/server/app/api/players/kick/route.js.nft.json +1 -1
  41. package/.next/standalone/platform/services/mcctl-console/.next/server/app/api/players/op/[player]/route.js +1 -57
  42. package/.next/standalone/platform/services/mcctl-console/.next/server/app/api/players/op/[player]/route.js.nft.json +1 -1
  43. package/.next/standalone/platform/services/mcctl-console/.next/server/app/api/players/op/route.js +1 -57
  44. package/.next/standalone/platform/services/mcctl-console/.next/server/app/api/players/op/route.js.nft.json +1 -1
  45. package/.next/standalone/platform/services/mcctl-console/.next/server/app/api/players/route.js +1 -57
  46. package/.next/standalone/platform/services/mcctl-console/.next/server/app/api/players/route.js.nft.json +1 -1
  47. package/.next/standalone/platform/services/mcctl-console/.next/server/app/api/players/whitelist/route.js +1 -57
  48. package/.next/standalone/platform/services/mcctl-console/.next/server/app/api/players/whitelist/route.js.nft.json +1 -1
  49. package/.next/standalone/platform/services/mcctl-console/.next/server/app/api/players/whitelist/status/route.js +1 -0
  50. package/.next/standalone/platform/services/mcctl-console/.next/server/app/api/players/whitelist/status/route.js.nft.json +1 -0
  51. package/.next/standalone/platform/services/mcctl-console/.next/server/app/api/router/status/route.js +1 -57
  52. package/.next/standalone/platform/services/mcctl-console/.next/server/app/api/router/status/route.js.nft.json +1 -1
  53. package/.next/standalone/platform/services/mcctl-console/.next/server/app/api/servers/[name]/[action]/route.js +1 -57
  54. package/.next/standalone/platform/services/mcctl-console/.next/server/app/api/servers/[name]/[action]/route.js.nft.json +1 -1
  55. package/.next/standalone/platform/services/mcctl-console/.next/server/app/api/servers/[name]/config/route.js +1 -57
  56. package/.next/standalone/platform/services/mcctl-console/.next/server/app/api/servers/[name]/config/route.js.nft.json +1 -1
  57. package/.next/standalone/platform/services/mcctl-console/.next/server/app/api/servers/[name]/exec/route.js +1 -57
  58. package/.next/standalone/platform/services/mcctl-console/.next/server/app/api/servers/[name]/exec/route.js.nft.json +1 -1
  59. package/.next/standalone/platform/services/mcctl-console/.next/server/app/api/servers/[name]/hostnames/route.js +1 -0
  60. package/.next/standalone/platform/services/mcctl-console/.next/server/app/api/servers/[name]/hostnames/route.js.nft.json +1 -0
  61. package/.next/standalone/platform/services/mcctl-console/.next/server/app/api/servers/[name]/route.js +1 -57
  62. package/.next/standalone/platform/services/mcctl-console/.next/server/app/api/servers/[name]/route.js.nft.json +1 -1
  63. package/.next/standalone/platform/services/mcctl-console/.next/server/app/api/servers/[name]/world/reset/route.js +1 -57
  64. package/.next/standalone/platform/services/mcctl-console/.next/server/app/api/servers/[name]/world/reset/route.js.nft.json +1 -1
  65. package/.next/standalone/platform/services/mcctl-console/.next/server/app/api/servers/route.js +1 -57
  66. package/.next/standalone/platform/services/mcctl-console/.next/server/app/api/servers/route.js.nft.json +1 -1
  67. package/.next/standalone/platform/services/mcctl-console/.next/server/app/api/worlds/[name]/[action]/route.js +1 -57
  68. package/.next/standalone/platform/services/mcctl-console/.next/server/app/api/worlds/[name]/[action]/route.js.nft.json +1 -1
  69. package/.next/standalone/platform/services/mcctl-console/.next/server/app/api/worlds/[name]/route.js +1 -57
  70. package/.next/standalone/platform/services/mcctl-console/.next/server/app/api/worlds/[name]/route.js.nft.json +1 -1
  71. package/.next/standalone/platform/services/mcctl-console/.next/server/app/api/worlds/route.js +1 -57
  72. package/.next/standalone/platform/services/mcctl-console/.next/server/app/api/worlds/route.js.nft.json +1 -1
  73. package/.next/standalone/platform/services/mcctl-console/.next/server/app/audit-logs.html +1 -1
  74. package/.next/standalone/platform/services/mcctl-console/.next/server/app/audit-logs.rsc +3 -3
  75. package/.next/standalone/platform/services/mcctl-console/.next/server/app/backups.html +1 -1
  76. package/.next/standalone/platform/services/mcctl-console/.next/server/app/backups.rsc +3 -3
  77. package/.next/standalone/platform/services/mcctl-console/.next/server/app/dashboard.html +1 -1
  78. package/.next/standalone/platform/services/mcctl-console/.next/server/app/dashboard.rsc +3 -3
  79. package/.next/standalone/platform/services/mcctl-console/.next/server/app/index.html +1 -1
  80. package/.next/standalone/platform/services/mcctl-console/.next/server/app/index.rsc +1 -1
  81. package/.next/standalone/platform/services/mcctl-console/.next/server/app/login/page_client-reference-manifest.js +1 -1
  82. package/.next/standalone/platform/services/mcctl-console/.next/server/app/login.html +1 -1
  83. package/.next/standalone/platform/services/mcctl-console/.next/server/app/login.rsc +2 -2
  84. package/.next/standalone/platform/services/mcctl-console/.next/server/app/page_client-reference-manifest.js +1 -1
  85. package/.next/standalone/platform/services/mcctl-console/.next/server/app/players.html +1 -1
  86. package/.next/standalone/platform/services/mcctl-console/.next/server/app/players.rsc +3 -3
  87. package/.next/standalone/platform/services/mcctl-console/.next/server/app/routing.html +1 -1
  88. package/.next/standalone/platform/services/mcctl-console/.next/server/app/routing.rsc +3 -3
  89. package/.next/standalone/platform/services/mcctl-console/.next/server/app/servers.html +1 -1
  90. package/.next/standalone/platform/services/mcctl-console/.next/server/app/servers.rsc +3 -3
  91. package/.next/standalone/platform/services/mcctl-console/.next/server/app/settings.html +1 -1
  92. package/.next/standalone/platform/services/mcctl-console/.next/server/app/settings.rsc +3 -3
  93. package/.next/standalone/platform/services/mcctl-console/.next/server/app/signup/page_client-reference-manifest.js +1 -1
  94. package/.next/standalone/platform/services/mcctl-console/.next/server/app/signup.html +1 -1
  95. package/.next/standalone/platform/services/mcctl-console/.next/server/app/signup.rsc +2 -2
  96. package/.next/standalone/platform/services/mcctl-console/.next/server/app/worlds.html +1 -1
  97. package/.next/standalone/platform/services/mcctl-console/.next/server/app/worlds.rsc +3 -3
  98. package/.next/standalone/platform/services/mcctl-console/.next/server/app-paths-manifest.json +17 -15
  99. package/.next/standalone/platform/services/mcctl-console/.next/server/chunks/1080.js +1 -1
  100. package/.next/standalone/platform/services/mcctl-console/.next/server/chunks/1309.js +57 -0
  101. package/.next/standalone/platform/services/mcctl-console/.next/server/chunks/1314.js +7 -7
  102. package/.next/standalone/platform/services/mcctl-console/.next/server/chunks/3434.js +1 -0
  103. package/.next/standalone/platform/services/mcctl-console/.next/server/chunks/354.js +1 -1
  104. package/.next/standalone/platform/services/mcctl-console/.next/server/chunks/5019.js +1 -1
  105. package/.next/standalone/platform/services/mcctl-console/.next/server/chunks/8685.js +1 -0
  106. package/.next/standalone/platform/services/mcctl-console/.next/server/middleware-build-manifest.js +1 -1
  107. package/.next/standalone/platform/services/mcctl-console/.next/server/middleware-manifest.json +5 -5
  108. package/.next/standalone/platform/services/mcctl-console/.next/server/next-font-manifest.js +1 -1
  109. package/.next/standalone/platform/services/mcctl-console/.next/server/next-font-manifest.json +1 -1
  110. package/.next/standalone/platform/services/mcctl-console/.next/server/pages/404.html +1 -1
  111. package/.next/standalone/platform/services/mcctl-console/.next/server/pages/500.html +1 -1
  112. package/.next/standalone/platform/services/mcctl-console/.next/server/server-reference-manifest.json +1 -1
  113. package/.next/standalone/platform/services/mcctl-console/.next/static/chunks/1476-a0570078fdf78fae.js +1 -0
  114. package/.next/standalone/platform/services/mcctl-console/.next/static/chunks/2666-060d67b8e56af9d0.js +1 -0
  115. package/.next/standalone/platform/services/mcctl-console/.next/static/chunks/5787-3387a2b82bbb1e66.js +1 -0
  116. package/.next/standalone/platform/services/mcctl-console/.next/static/chunks/6645-9bcc9a0f9cd2fdc9.js +1 -0
  117. package/.next/standalone/platform/services/mcctl-console/.next/static/chunks/7305-17eb783421477032.js +1 -0
  118. package/.next/standalone/platform/services/mcctl-console/.next/static/chunks/7727-2552fac729c5514a.js +1 -0
  119. package/.next/standalone/platform/services/mcctl-console/.next/static/chunks/9058-02ac41562ff141d0.js +1 -0
  120. package/.next/standalone/platform/services/mcctl-console/.next/static/chunks/9154-c792f0aadd25fffe.js +1 -0
  121. package/.next/standalone/platform/services/mcctl-console/.next/static/chunks/9949-92aa4cba630945d3.js +1 -0
  122. package/.next/standalone/platform/services/mcctl-console/.next/static/chunks/app/(main)/backups/page-201b9f9aecc8932e.js +1 -0
  123. package/.next/standalone/platform/services/mcctl-console/.next/static/chunks/app/(main)/dashboard/page-626f566be94160eb.js +1 -0
  124. package/.next/standalone/platform/services/mcctl-console/.next/static/chunks/app/(main)/layout-9ce7f2bf657eacfa.js +1 -0
  125. package/.next/standalone/platform/services/mcctl-console/.next/static/chunks/app/(main)/players/page-a655062812711f1b.js +1 -0
  126. package/.next/standalone/platform/services/mcctl-console/.next/static/chunks/app/(main)/routing/page-7797d4cf74c7fa77.js +1 -0
  127. package/.next/standalone/platform/services/mcctl-console/.next/static/chunks/app/(main)/servers/[name]/console/page-4e811ac018a2a049.js +1 -0
  128. package/.next/standalone/platform/services/mcctl-console/.next/static/chunks/app/(main)/servers/[name]/page-f1026a973b0f8ac1.js +1 -0
  129. package/.next/standalone/platform/services/mcctl-console/.next/static/chunks/app/(main)/servers/page-9d374aef836cdbae.js +1 -0
  130. package/.next/standalone/platform/services/mcctl-console/.next/static/chunks/app/(main)/settings/page-fe918cc58acd9ed9.js +1 -0
  131. package/.next/standalone/platform/services/mcctl-console/.next/static/chunks/app/(main)/worlds/page-2e4a4b525d3b0f1d.js +1 -0
  132. package/.next/{static/chunks/app/login/page-073a17485ca81f18.js → standalone/platform/services/mcctl-console/.next/static/chunks/app/login/page-ff4d395f77e036b5.js} +1 -1
  133. package/.next/standalone/platform/services/mcctl-console/.next/static/chunks/app/signup/{page-bfb822f4c5c7ce99.js → page-861124fab907567f.js} +1 -1
  134. package/.next/standalone/platform/services/mcctl-console/.next/static/chunks/{main-d86dc43481acf07f.js → main-c1b58e7640294abf.js} +1 -1
  135. package/.next/standalone/platform/services/mcctl-console/package.json +1 -1
  136. package/.next/static/chunks/1476-a0570078fdf78fae.js +1 -0
  137. package/.next/static/chunks/2666-060d67b8e56af9d0.js +1 -0
  138. package/.next/static/chunks/5787-3387a2b82bbb1e66.js +1 -0
  139. package/.next/static/chunks/6645-9bcc9a0f9cd2fdc9.js +1 -0
  140. package/.next/static/chunks/7305-17eb783421477032.js +1 -0
  141. package/.next/static/chunks/7727-2552fac729c5514a.js +1 -0
  142. package/.next/static/chunks/9058-02ac41562ff141d0.js +1 -0
  143. package/.next/static/chunks/9154-c792f0aadd25fffe.js +1 -0
  144. package/.next/static/chunks/9949-92aa4cba630945d3.js +1 -0
  145. package/.next/static/chunks/app/(main)/backups/page-201b9f9aecc8932e.js +1 -0
  146. package/.next/static/chunks/app/(main)/dashboard/page-626f566be94160eb.js +1 -0
  147. package/.next/static/chunks/app/(main)/layout-9ce7f2bf657eacfa.js +1 -0
  148. package/.next/static/chunks/app/(main)/players/page-a655062812711f1b.js +1 -0
  149. package/.next/static/chunks/app/(main)/routing/page-7797d4cf74c7fa77.js +1 -0
  150. package/.next/static/chunks/app/(main)/servers/[name]/console/page-4e811ac018a2a049.js +1 -0
  151. package/.next/static/chunks/app/(main)/servers/[name]/page-f1026a973b0f8ac1.js +1 -0
  152. package/.next/static/chunks/app/(main)/servers/page-9d374aef836cdbae.js +1 -0
  153. package/.next/static/chunks/app/(main)/settings/page-fe918cc58acd9ed9.js +1 -0
  154. package/.next/static/chunks/app/(main)/worlds/page-2e4a4b525d3b0f1d.js +1 -0
  155. package/.next/{standalone/platform/services/mcctl-console/.next/static/chunks/app/login/page-073a17485ca81f18.js → static/chunks/app/login/page-ff4d395f77e036b5.js} +1 -1
  156. package/.next/static/chunks/app/signup/{page-bfb822f4c5c7ce99.js → page-861124fab907567f.js} +1 -1
  157. package/.next/static/chunks/{main-d86dc43481acf07f.js → main-c1b58e7640294abf.js} +1 -1
  158. package/package.json +2 -2
  159. package/.next/standalone/platform/services/mcctl-console/.next/server/chunks/2793.js +0 -1
  160. package/.next/standalone/platform/services/mcctl-console/.next/server/chunks/8402.js +0 -1
  161. package/.next/standalone/platform/services/mcctl-console/.next/static/chunks/1544-d2d1404bef00d038.js +0 -1
  162. package/.next/standalone/platform/services/mcctl-console/.next/static/chunks/1721-2758853c661770ff.js +0 -1
  163. package/.next/standalone/platform/services/mcctl-console/.next/static/chunks/2537-6c9d2dfd403b7448.js +0 -1
  164. package/.next/standalone/platform/services/mcctl-console/.next/static/chunks/3489-b8c5f08aa4922197.js +0 -1
  165. package/.next/standalone/platform/services/mcctl-console/.next/static/chunks/5375-a2d3a8fb915a3971.js +0 -1
  166. package/.next/standalone/platform/services/mcctl-console/.next/static/chunks/563-d87300cc5ef5920c.js +0 -1
  167. package/.next/standalone/platform/services/mcctl-console/.next/static/chunks/6357-a9d3501984c53429.js +0 -1
  168. package/.next/standalone/platform/services/mcctl-console/.next/static/chunks/6857-5b9c04069853bfc4.js +0 -1
  169. package/.next/standalone/platform/services/mcctl-console/.next/static/chunks/8558-4356df5e91ec7f4c.js +0 -1
  170. package/.next/standalone/platform/services/mcctl-console/.next/static/chunks/app/(main)/backups/page-a8606e93b4994f33.js +0 -1
  171. package/.next/standalone/platform/services/mcctl-console/.next/static/chunks/app/(main)/dashboard/page-fe3321721ddfe2a7.js +0 -1
  172. package/.next/standalone/platform/services/mcctl-console/.next/static/chunks/app/(main)/layout-bc7b020e80bc6d8d.js +0 -1
  173. package/.next/standalone/platform/services/mcctl-console/.next/static/chunks/app/(main)/players/page-5bbed669a03279a3.js +0 -1
  174. package/.next/standalone/platform/services/mcctl-console/.next/static/chunks/app/(main)/routing/page-ee0b47f2cc2bc235.js +0 -1
  175. package/.next/standalone/platform/services/mcctl-console/.next/static/chunks/app/(main)/servers/[name]/console/page-617a1ab914c8d828.js +0 -1
  176. package/.next/standalone/platform/services/mcctl-console/.next/static/chunks/app/(main)/servers/[name]/page-b8d4a08a748e882d.js +0 -1
  177. package/.next/standalone/platform/services/mcctl-console/.next/static/chunks/app/(main)/servers/page-e47f9c34ab4e890d.js +0 -1
  178. package/.next/standalone/platform/services/mcctl-console/.next/static/chunks/app/(main)/settings/page-dac4b25dde7b0719.js +0 -1
  179. package/.next/standalone/platform/services/mcctl-console/.next/static/chunks/app/(main)/worlds/page-7e2bc35fda11d7c4.js +0 -1
  180. package/.next/static/chunks/1544-d2d1404bef00d038.js +0 -1
  181. package/.next/static/chunks/1721-2758853c661770ff.js +0 -1
  182. package/.next/static/chunks/2537-6c9d2dfd403b7448.js +0 -1
  183. package/.next/static/chunks/3489-b8c5f08aa4922197.js +0 -1
  184. package/.next/static/chunks/5375-a2d3a8fb915a3971.js +0 -1
  185. package/.next/static/chunks/563-d87300cc5ef5920c.js +0 -1
  186. package/.next/static/chunks/6357-a9d3501984c53429.js +0 -1
  187. package/.next/static/chunks/6857-5b9c04069853bfc4.js +0 -1
  188. package/.next/static/chunks/8558-4356df5e91ec7f4c.js +0 -1
  189. package/.next/static/chunks/app/(main)/backups/page-a8606e93b4994f33.js +0 -1
  190. package/.next/static/chunks/app/(main)/dashboard/page-fe3321721ddfe2a7.js +0 -1
  191. package/.next/static/chunks/app/(main)/layout-bc7b020e80bc6d8d.js +0 -1
  192. package/.next/static/chunks/app/(main)/players/page-5bbed669a03279a3.js +0 -1
  193. package/.next/static/chunks/app/(main)/routing/page-ee0b47f2cc2bc235.js +0 -1
  194. package/.next/static/chunks/app/(main)/servers/[name]/console/page-617a1ab914c8d828.js +0 -1
  195. package/.next/static/chunks/app/(main)/servers/[name]/page-b8d4a08a748e882d.js +0 -1
  196. package/.next/static/chunks/app/(main)/servers/page-e47f9c34ab4e890d.js +0 -1
  197. package/.next/static/chunks/app/(main)/settings/page-dac4b25dde7b0719.js +0 -1
  198. package/.next/static/chunks/app/(main)/worlds/page-7e2bc35fda11d7c4.js +0 -1
  199. /package/.next/standalone/platform/services/mcctl-console/.next/static/{ODNQp8gXEvQR9CpUaVR-y → 0yTJAIAp_3b6rB4bkr7KX}/_buildManifest.js +0 -0
  200. /package/.next/standalone/platform/services/mcctl-console/.next/static/{ODNQp8gXEvQR9CpUaVR-y → 0yTJAIAp_3b6rB4bkr7KX}/_ssgManifest.js +0 -0
  201. /package/.next/standalone/platform/services/mcctl-console/.next/static/chunks/app/(main)/audit-logs/{page-21b37416096d3cfc.js → page-592b5471bbfd01e3.js} +0 -0
  202. /package/.next/static/{ODNQp8gXEvQR9CpUaVR-y → 0yTJAIAp_3b6rB4bkr7KX}/_buildManifest.js +0 -0
  203. /package/.next/static/{ODNQp8gXEvQR9CpUaVR-y → 0yTJAIAp_3b6rB4bkr7KX}/_ssgManifest.js +0 -0
  204. /package/.next/static/chunks/app/(main)/audit-logs/{page-21b37416096d3cfc.js → page-592b5471bbfd01e3.js} +0 -0
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[2248],{12121:function(e,t,r){Promise.resolve().then(r.bind(r,61714))},61714:function(e,t,r){"use strict";r.r(t),r.d(t,{default:function(){return q}});var n=r(94655),s=r(69899),i=r(76492),a=r(7281),o=r(31317),l=r(84840),c=r(628),d=r(41565),u=r(10721),h=r(25065),x=r(91179),p=r(11767),m=r(53832),v=r(30164),f=r(92666),g=r(59104);function j(e){let{title:t,value:r,icon:s,color:i="primary",description:l}=e,u={primary:"#1bd96a",success:"#22c55e",info:"#3b82f6",secondary:"#7c3aed"};return(0,n.jsx)(c.Z,{"data-testid":"stat-card",sx:{height:"100%",position:"relative",overflow:"hidden","&::before":{content:'""',position:"absolute",top:0,left:0,right:0,height:"4px",background:u[i]}},children:(0,n.jsxs)(d.Z,{children:[(0,n.jsxs)(a.Z,{sx:{display:"flex",alignItems:"center",justifyContent:"space-between",mb:2},children:[(0,n.jsx)(o.Z,{variant:"body2",color:"text.secondary",sx:{fontWeight:500},children:t}),s&&(0,n.jsx)(a.Z,{sx:{color:u[i],opacity:.8},children:s})]}),(0,n.jsx)(o.Z,{variant:"h3",component:"div",sx:{fontWeight:700,color:"text.primary",mb:l?1:0},children:r}),l&&(0,n.jsx)(o.Z,{variant:"caption",color:"text.secondary",children:l})]})})}var y=r(98406),Z=r(93017),b=r(25333),w=r(46725),S=r(8690),C=r(31358);function k(e){let{servers:t,statusMap:r={},isLoading:s,maxItems:i,showViewAll:l=!1,onServerClick:u}=e,h=(0,C.x)(),x=i?t.slice(0,i):t,p=e=>{u?u(e):h.push("/servers/".concat(e))},m=e=>{switch(e){case"running":return"success";case"stopped":case"exited":return"error";case"created":return"warning";default:return"default"}},v=e=>{switch(e){case"healthy":return"success";case"unhealthy":return"error";case"starting":return"warning";default:return"default"}};return s?(0,n.jsxs)(c.Z,{children:[(0,n.jsx)(y.Z,{title:"Servers"}),(0,n.jsx)(d.Z,{children:(0,n.jsx)(a.Z,{sx:{display:"flex",justifyContent:"center",py:4},children:(0,n.jsx)(Z.Z,{})})})]}):0===t.length?(0,n.jsxs)(c.Z,{children:[(0,n.jsx)(y.Z,{title:"Servers"}),(0,n.jsx)(d.Z,{children:(0,n.jsx)(o.Z,{color:"text.secondary",align:"center",children:"No servers found. Create your first server to get started."})})]}):(0,n.jsxs)(c.Z,{children:[(0,n.jsx)(y.Z,{title:"Servers",action:l&&t.length>(i||0)?(0,n.jsxs)(w.default,{href:"/servers",onClick:()=>(0,S.Av)(),style:{textDecoration:"none",color:"inherit",fontSize:"0.875rem"},children:["View All (",t.length,")"]}):null}),(0,n.jsx)(d.Z,{children:(0,n.jsx)(a.Z,{sx:{display:"flex",flexDirection:"column",gap:2},children:x.map(e=>{let t=r[e.name],s=(null==t?void 0:t.status)||e.status,i=(null==t?void 0:t.health)||e.health;return(0,n.jsx)(a.Z,{role:"button",onClick:()=>p(e.name),sx:{p:2,borderRadius:1,border:"1px solid",borderColor:"divider",cursor:"pointer",transition:"all 0.2s","&:hover":{borderColor:"primary.main",backgroundColor:"action.hover"}},children:(0,n.jsxs)(a.Z,{sx:{display:"flex",justifyContent:"space-between",alignItems:"center"},children:[(0,n.jsxs)(a.Z,{children:[(0,n.jsx)(o.Z,{variant:"subtitle1",fontWeight:600,children:e.name}),(0,n.jsx)(o.Z,{variant:"caption",color:"text.secondary",children:e.hostname})]}),(0,n.jsxs)(a.Z,{sx:{display:"flex",gap:1},children:[(0,n.jsx)(b.Z,{label:s,color:m(s),size:"small"}),"none"!==i&&(0,n.jsx)(b.Z,{label:i,color:v(i),size:"small",variant:"outlined"})]})]})},e.name)})})})]})}var T=r(35106),R=r(41261);function E(e){let{maxVersions:t=2,title:r="Recent Updates"}=e,[s,i]=(0,T.useState)([]),[l,h]=(0,T.useState)(!0),[x,p]=(0,T.useState)(null);return((0,T.useEffect)(()=>{(async function(){try{let e=await fetch("https://api.github.com/repos/smallmiro/minecraft-server-manager/contents/CHANGELOG.md",{headers:{Accept:"application/vnd.github.v3+json"}});if(!e.ok)throw Error("Failed to fetch changelog");let r=await e.json(),n=atob(r.content),s=function(e,t){let r=[],n=e.split("\n"),s=null,i="added";for(let e of n){let n=e.match(/^## \[([^\]]+)\] - (\d{4}-\d{2}-\d{2})/);if(n){if(s&&(r.push(s),r.length>=t))break;s={version:n[1],date:n[2],items:[]};continue}let a=e.match(/^### (Added|Fixed|Changed)/i);if(a){i=a[1].toLowerCase();continue}let o=e.match(/^- \*\*([^*]+)\*\*\s*[-–]?\s*(.*)$/);o&&s&&s.items.push({type:i,message:o[1].trim()})}return s&&r.length<t&&r.push(s),r}(n,t);i(s)}catch(e){p(e instanceof Error?e.message:"Unknown error")}finally{h(!1)}})()},[t]),l)?(0,n.jsxs)(c.Z,{children:[(0,n.jsx)(y.Z,{title:r}),(0,n.jsxs)(d.Z,{children:[(0,n.jsx)(u.Z,{variant:"text",width:"60%",height:28}),(0,n.jsx)(u.Z,{variant:"text",width:"80%"}),(0,n.jsx)(u.Z,{variant:"text",width:"70%"}),(0,n.jsxs)(a.Z,{sx:{mt:2},children:[(0,n.jsx)(u.Z,{variant:"text",width:"60%",height:28}),(0,n.jsx)(u.Z,{variant:"text",width:"75%"})]})]})]}):x?(0,n.jsxs)(c.Z,{children:[(0,n.jsx)(y.Z,{title:r}),(0,n.jsx)(d.Z,{children:(0,n.jsx)(o.Z,{color:"text.secondary",align:"center",children:"Unable to load updates"})})]}):(0,n.jsxs)(c.Z,{children:[(0,n.jsx)(y.Z,{title:r,action:(0,n.jsx)(R.Z,{href:"https://github.com/smallmiro/minecraft-server-manager/blob/develop/CHANGELOG.md",target:"_blank",rel:"noopener",sx:{fontSize:13,mr:1},children:"View all"})}),(0,n.jsx)(d.Z,{sx:{pt:0},children:s.map((e,t)=>{let r=e.items.filter(e=>"added"===e.type),i=e.items.filter(e=>"fixed"===e.type),l=e.items.filter(e=>"changed"===e.type);return(0,n.jsxs)(a.Z,{sx:{mb:t<s.length-1?2.5:0,pb:t<s.length-1?2:0,borderBottom:t<s.length-1?"1px solid":"none",borderColor:"divider"},children:[(0,n.jsxs)(o.Z,{variant:"subtitle2",sx:{fontWeight:600,color:"primary.main",mb:1},children:["[",e.version,"] - ",e.date]}),r.length>0&&(0,n.jsxs)(a.Z,{sx:{mb:1},children:[(0,n.jsx)(b.Z,{label:"Added",size:"small",sx:{bgcolor:"success.main",color:"success.contrastText",fontSize:11,height:20,mb:.5}}),r.map((e,t)=>(0,n.jsxs)(o.Z,{variant:"body2",sx:{color:"text.secondary",pl:1},children:["• ",e.message]},t))]}),i.length>0&&(0,n.jsxs)(a.Z,{sx:{mb:1},children:[(0,n.jsx)(b.Z,{label:"Fixed",size:"small",sx:{bgcolor:"warning.main",color:"warning.contrastText",fontSize:11,height:20,mb:.5}}),i.map((e,t)=>(0,n.jsxs)(o.Z,{variant:"body2",sx:{color:"text.secondary",pl:1},children:["• ",e.message]},t))]}),l.length>0&&(0,n.jsxs)(a.Z,{children:[(0,n.jsx)(b.Z,{label:"Changed",size:"small",sx:{bgcolor:"info.main",color:"info.contrastText",fontSize:11,height:20,mb:.5}}),l.map((e,t)=>(0,n.jsxs)(o.Z,{variant:"body2",sx:{color:"text.secondary",pl:1},children:["• ",e.message]},t))]})]},e.version)})})]})}var z=r(30417),P=r(90158),A=r(58347),I=r(73424),F=r(95511),N=r(26577),D=r(56813),L=r(26892),W=r(84509);function O(e){var t;let{maxItems:r=5}=e,{data:s,isLoading:i,error:l}=(0,W.oL)(r),h=null!==(t=null==s?void 0:s.logs)&&void 0!==t?t:[];return(0,n.jsxs)(c.Z,{children:[(0,n.jsx)(y.Z,{title:"Recent Activity",action:(0,n.jsx)(z.Z,{component:w.default,href:"/audit-logs",size:"small",endIcon:(0,n.jsx)(N.Z,{}),sx:{textTransform:"none"},children:"View All"})}),(0,n.jsx)(d.Z,{sx:{pt:0},children:i?(0,n.jsx)(P.Z,{sx:{py:0},children:[...Array(r)].map((e,t)=>(0,n.jsx)(A.ZP,{sx:{px:0,py:1.5},children:(0,n.jsx)(I.Z,{primary:(0,n.jsxs)(a.Z,{sx:{display:"flex",gap:1},children:[(0,n.jsx)(u.Z,{variant:"rounded",width:60,height:24}),(0,n.jsx)(u.Z,{variant:"text",width:80}),(0,n.jsx)(u.Z,{variant:"text",width:60})]}),secondary:(0,n.jsx)(u.Z,{variant:"text",width:50})})},t))}):l?(0,n.jsx)(o.Z,{color:"text.secondary",align:"center",children:"Failed to load recent activity"}):0===h.length?(0,n.jsx)(o.Z,{color:"text.secondary",align:"center",sx:{py:2},children:"No recent activity"}):(0,n.jsx)(P.Z,{sx:{py:0},children:h.map(e=>{var t;return(0,n.jsx)(A.ZP,{sx:{px:0,py:1.5,"&:not(:last-child)":{borderBottom:"1px solid",borderColor:"divider"}},children:(0,n.jsx)(I.Z,{primary:(0,n.jsxs)(a.Z,{sx:{display:"flex",alignItems:"center",gap:1,flexWrap:"wrap"},children:[(0,n.jsx)(D.I,{action:e.action,size:"small"}),(0,n.jsx)(o.Z,{variant:"body2",sx:{fontWeight:500},children:e.targetName}),(0,n.jsxs)(o.Z,{variant:"body2",color:"text.secondary",children:["by ",e.actor.replace("api:","").replace("cli:","")]}),"failure"===e.status&&(0,n.jsx)(L.c,{status:e.status,size:"small"})]}),secondary:(0,n.jsx)(F.Z,{title:(t=e.timestamp,new Intl.DateTimeFormat(void 0,{year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit",timeZoneName:"short"}).format(new Date(t))),arrow:!0,children:(0,n.jsx)(o.Z,{variant:"caption",component:"span",color:"text.disabled",children:function(e){let t=new Date,r=new Date(e),n=Math.floor((t.getTime()-r.getTime())/6e4),s=Math.floor(n/60);return n<1?"just now":n<60?"".concat(n,"m ago"):s<24?"".concat(s,"h ago"):"".concat(Math.floor(s/24),"d ago")}(e.timestamp)})})})},e.id)})})})]})}function q(){let{data:e,isLoading:t}=(0,f.x$)(),{data:r,isLoading:y}=(0,f.Sr)(),{statusMap:Z}=(0,g.d)(),b=t||y,w=(null==e?void 0:e.total)||0,S=(null==e?void 0:e.servers.filter(e=>{let t=Z[e.name];return"running"===((null==t?void 0:t.status)||e.status)}).length)||0,C=(null==r?void 0:r.total)||0;return b?(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(s.Z,{elevation:0,sx:{mb:4,p:3,background:e=>"linear-gradient(135deg, ".concat((0,i.Fq)(e.palette.secondary.main,.1)," 0%, ").concat((0,i.Fq)(e.palette.primary.main,.1)," 100%)"),borderRadius:2,border:e=>"1px solid ".concat((0,i.Fq)(e.palette.secondary.main,.2))},children:(0,n.jsxs)(a.Z,{sx:{display:"flex",alignItems:"center",gap:2},children:[(0,n.jsx)(a.Z,{sx:{display:"flex",alignItems:"center",justifyContent:"center",width:56,height:56,borderRadius:2,bgcolor:"primary.main",color:"primary.contrastText"},children:(0,n.jsx)(h.Z,{sx:{fontSize:32}})}),(0,n.jsxs)(a.Z,{children:[(0,n.jsx)(o.Z,{variant:"h4",component:"h1",fontWeight:"bold",children:"Dashboard"}),(0,n.jsx)(o.Z,{variant:"body1",color:"text.secondary",children:"Overview of your Minecraft server infrastructure"})]})]})}),(0,n.jsx)(l.ZP,{container:!0,spacing:3,sx:{mb:4},children:[0,1,2,3].map(e=>(0,n.jsx)(l.ZP,{item:!0,xs:12,sm:6,md:3,children:(0,n.jsx)(c.Z,{sx:{height:"100%",position:"relative",overflow:"hidden","&::before":{content:'""',position:"absolute",top:0,left:0,right:0,height:"4px",background:"grey.300"}},children:(0,n.jsxs)(d.Z,{children:[(0,n.jsxs)(a.Z,{sx:{display:"flex",alignItems:"center",justifyContent:"space-between",mb:2},children:[(0,n.jsx)(u.Z,{variant:"text",width:"60%"}),(0,n.jsx)(u.Z,{variant:"circular",width:32,height:32})]}),(0,n.jsx)(u.Z,{variant:"text",width:"40%",height:48}),(0,n.jsx)(u.Z,{variant:"text",width:"70%"})]})})},e))}),(0,n.jsxs)(l.ZP,{container:!0,spacing:3,children:[(0,n.jsx)(l.ZP,{item:!0,xs:12,lg:7,children:(0,n.jsx)(c.Z,{children:(0,n.jsxs)(d.Z,{children:[(0,n.jsx)(u.Z,{variant:"text",width:"30%",height:32,sx:{mb:2}}),[0,1,2,3,4].map(e=>(0,n.jsxs)(a.Z,{sx:{display:"flex",alignItems:"center",gap:2,py:1.5,borderBottom:"1px solid",borderColor:"divider"},children:[(0,n.jsx)(u.Z,{variant:"circular",width:10,height:10}),(0,n.jsx)(u.Z,{variant:"text",width:"25%"}),(0,n.jsx)(u.Z,{variant:"rounded",width:60,height:24,sx:{ml:"auto"}})]},e))]})})}),(0,n.jsx)(l.ZP,{item:!0,xs:12,lg:5,children:(0,n.jsxs)(a.Z,{sx:{display:"flex",flexDirection:"column",gap:3},children:[(0,n.jsx)(c.Z,{children:(0,n.jsxs)(d.Z,{children:[(0,n.jsx)(u.Z,{variant:"text",width:"40%",height:32,sx:{mb:2}}),[0,1,2,3].map(e=>(0,n.jsxs)(a.Z,{sx:{display:"flex",gap:1.5,py:1,borderBottom:"1px solid",borderColor:"divider"},children:[(0,n.jsx)(u.Z,{variant:"circular",width:24,height:24}),(0,n.jsxs)(a.Z,{sx:{flex:1},children:[(0,n.jsx)(u.Z,{variant:"text",width:"80%"}),(0,n.jsx)(u.Z,{variant:"text",width:"50%"})]})]},e))]})}),(0,n.jsx)(c.Z,{children:(0,n.jsxs)(d.Z,{children:[(0,n.jsx)(u.Z,{variant:"text",width:"35%",height:32,sx:{mb:2}}),[0,1].map(e=>(0,n.jsxs)(a.Z,{sx:{py:1,borderBottom:"1px solid",borderColor:"divider"},children:[(0,n.jsx)(u.Z,{variant:"text",width:"60%"}),(0,n.jsx)(u.Z,{variant:"text",width:"90%"})]},e))]})})]})})]})]}):(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(s.Z,{elevation:0,sx:{mb:4,p:3,background:e=>"linear-gradient(135deg, ".concat((0,i.Fq)(e.palette.secondary.main,.1)," 0%, ").concat((0,i.Fq)(e.palette.primary.main,.1)," 100%)"),borderRadius:2,border:e=>"1px solid ".concat((0,i.Fq)(e.palette.secondary.main,.2))},children:(0,n.jsxs)(a.Z,{sx:{display:"flex",alignItems:"center",gap:2},children:[(0,n.jsx)(a.Z,{sx:{display:"flex",alignItems:"center",justifyContent:"center",width:56,height:56,borderRadius:2,bgcolor:"secondary.main",color:"secondary.contrastText"},children:(0,n.jsx)(h.Z,{sx:{fontSize:32}})}),(0,n.jsxs)(a.Z,{children:[(0,n.jsx)(o.Z,{variant:"h4",component:"h1",fontWeight:"bold",children:"Dashboard"}),(0,n.jsx)(o.Z,{variant:"body1",color:"text.secondary",children:"Overview of your Minecraft server infrastructure"})]})]})}),(0,n.jsxs)(l.ZP,{container:!0,spacing:3,sx:{mb:4},children:[(0,n.jsx)(l.ZP,{item:!0,xs:12,sm:6,md:3,children:(0,n.jsx)(j,{title:"Total Servers",value:w,icon:(0,n.jsx)(x.Z,{fontSize:"large"}),color:"primary",description:"All configured servers"})}),(0,n.jsx)(l.ZP,{item:!0,xs:12,sm:6,md:3,children:(0,n.jsx)(j,{title:"Online Servers",value:S,icon:(0,n.jsx)(p.Z,{fontSize:"large"}),color:"success",description:"Currently running"})}),(0,n.jsx)(l.ZP,{item:!0,xs:12,sm:6,md:3,children:(0,n.jsx)(j,{title:"Total Players",value:0,icon:(0,n.jsx)(m.Z,{fontSize:"large"}),color:"info",description:"Across all servers"})}),(0,n.jsx)(l.ZP,{item:!0,xs:12,sm:6,md:3,children:(0,n.jsx)(j,{title:"Total Worlds",value:C,icon:(0,n.jsx)(v.Z,{fontSize:"large"}),color:"secondary",description:"Available worlds"})})]}),(0,n.jsxs)(l.ZP,{container:!0,spacing:3,children:[(0,n.jsx)(l.ZP,{item:!0,xs:12,lg:7,children:(0,n.jsx)(k,{servers:(null==e?void 0:e.servers)||[],statusMap:Z,isLoading:t,maxItems:5,showViewAll:!0})}),(0,n.jsx)(l.ZP,{item:!0,xs:12,lg:5,children:(0,n.jsxs)(a.Z,{sx:{display:"flex",flexDirection:"column",gap:3},children:[(0,n.jsx)(O,{maxItems:5}),(0,n.jsx)(E,{maxVersions:2})]})})]})]})}},56813:function(e,t,r){"use strict";r.d(t,{I:function(){return a}});var n=r(94655),s=r(25333),i=r(82925);function a(e){let{action:t,size:r="small"}=e,a=i.Lu[t]||"default",o=i.n3[t]||t;return(0,n.jsx)(s.Z,{label:o,color:a,size:r,variant:"filled",sx:{fontWeight:600,fontSize:"small"===r?"0.7rem":"0.8rem"}})}},26892:function(e,t,r){"use strict";r.d(t,{c:function(){return o}});var n=r(94655),s=r(25333),i=r(46207),a=r(43436);function o(e){let{status:t,size:r="small"}=e;return(0,n.jsx)(s.Z,{icon:"success"===t?(0,n.jsx)(i.Z,{}):(0,n.jsx)(a.Z,{}),label:"success"===t?"OK":"Error",color:"success"===t?"success":"error",size:r,variant:"outlined",sx:{fontWeight:500,fontSize:"small"===r?"0.7rem":"0.8rem"}})}},3454:function(e,t,r){"use strict";r.d(t,{LoadingProvider:function(){return l},startLoading:function(){return c},stopLoading:function(){return d}});var n=r(94655),s=r(35106),i=r(74228),a=r(31477),o=r.n(a);function l(e){let{children:t}=e,r=(0,i.usePathname)(),a=(0,i.useSearchParams)();return(0,s.useEffect)(()=>{o().done()},[r,a]),(0,n.jsx)(n.Fragment,{children:t})}function c(){o().start()}function d(){o().done()}o().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)},31358:function(e,t,r){"use strict";r.d(t,{x:function(){return a}});var n=r(74228),s=r(35106),i=r(8690);function a(){let e=(0,n.useRouter)(),t=(0,s.useCallback)((t,r)=>{(0,i.Av)(),e.push(t,r)},[e]),r=(0,s.useCallback)((t,r)=>{(0,i.Av)(),e.replace(t,r)},[e]);return(0,s.useMemo)(()=>({...e,push:t,replace:r}),[e,t,r])}},84509:function(e,t,r){"use strict";r.d(t,{DM:function(){return a},HZ:function(){return l},VM:function(){return o},hT:function(){return i},oL:function(){return c}});var n=r(5632),s=r(42936);function i(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1?arguments[1]:void 0,r=function(e){let t=new URLSearchParams;e.action&&t.set("action",e.action),e.actor&&t.set("actor",e.actor),e.targetType&&t.set("targetType",e.targetType),e.targetName&&t.set("targetName",e.targetName),e.status&&t.set("status",e.status),e.from&&t.set("from",e.from),e.to&&t.set("to",e.to),void 0!==e.limit&&t.set("limit",String(e.limit)),void 0!==e.offset&&t.set("offset",String(e.offset)),e.sort&&t.set("sort",e.sort);let r=t.toString();return r?"?".concat(r):""}(e);return(0,n.a)({queryKey:["audit-logs",e],queryFn:()=>(0,s.SC)("/api/audit-logs".concat(r)),enabled:(null==t?void 0:t.enabled)!==!1})}function a(e){return(0,n.a)({queryKey:["audit-logs","stats"],queryFn:()=>(0,s.SC)("/api/audit-logs/stats"),enabled:(null==e?void 0:e.enabled)!==!1,refetchInterval:3e4})}function o(e,t){return(0,n.a)({queryKey:["audit-logs",e],queryFn:()=>(0,s.SC)("/api/audit-logs/".concat(encodeURIComponent(e))),enabled:(null==t?void 0:t.enabled)!==!1&&!!e})}function l(e,t){var r;return i({targetType:"server",targetName:e,limit:null!==(r=null==t?void 0:t.limit)&&void 0!==r?r:20},{enabled:(null==t?void 0:t.enabled)!==!1&&!!e})}function c(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:10;return i({limit:e,sort:"timestamp:desc"})}},93757:function(e,t,r){"use strict";r.d(t,{D:function(){return i}});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 i(e){let{url:t,onMessage:r,onError:i,reconnectInterval:a=3e3,maxReconnectAttempts:o=1/0,enabled:l=!0,withCredentials:c=!1}=e,[d,u]=(0,n.useState)(null),[h,x]=(0,n.useState)("disconnected"),[p,m]=(0,n.useState)(null),[v,f]=(0,n.useState)(0),g=(0,n.useRef)(null),j=(0,n.useCallback)(e=>{u(e),null==r||r(e)},[r]),y=(0,n.useCallback)(e=>{x(e),"connected"===e&&f(0)},[]),Z=(0,n.useCallback)(e=>{m(e),"number"==typeof e.retryCount&&f(e.retryCount),null==i||i(e)},[i]),b=(0,n.useCallback)(()=>{g.current&&(g.current.reconnect(),f(g.current.getRetryCount()))},[]),w=(0,n.useCallback)(()=>{g.current&&g.current.disconnect()},[]);return(0,n.useEffect)(()=>{if(!l){g.current&&(g.current.disconnect(),g.current=null);return}return g.current||(g.current=new s),g.current.connect({url:t,onMessage:j,onStateChange:y,onError:Z,reconnectInterval:a,maxReconnectAttempts:o,withCredentials:c}),()=>{g.current&&(g.current.disconnect(),g.current=null)}},[t,l,a,o,c,j,y,Z]),{data:d,isConnected:"connected"===h,state:h,error:p,retryCount:v,reconnect:b,disconnect:w}}},59104:function(e,t,r){"use strict";r.d(t,{d:function(){return i}});var n=r(35106),s=r(93757);function i(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},{onStatusChange:t,enabled:r=!0,reconnectInterval:i=3e3}=e,[a,o]=(0,n.useState)({}),l=(0,n.useCallback)(e=>{if("server-status"===e.type){let{serverName:r,status:n,health:s,timestamp:i}=e.data;o(e=>({...e,[r]:{status:n,health:s,timestamp:i}})),null==t||t(r,n,s)}},[t]),{isConnected:c,reconnect:d,retryCount:u}=(0,s.D)({url:"/api/sse/servers-status",onMessage:l,enabled:r,reconnectInterval:i}),h=(0,n.useCallback)(e=>a[e]||null,[a]);return(0,n.useEffect)(()=>{r||o({})},[r]),{statusMap:a,getServerStatus:h,isConnected:c,reconnect:d,retryCount:u}}},82925:function(e,t,r){"use strict";r.d(t,{KK:function(){return o},Lu:function(){return n},Xn:function(){return a},n3:function(){return s},xg:function(){return i}});let n={"server.create":"success","server.delete":"error","server.start":"info","server.stop":"warning","server.restart":"secondary","player.whitelist.add":"success","player.whitelist.remove":"warning","player.ban":"error","player.unban":"success","player.op":"info","player.deop":"warning","player.kick":"error","audit.purge":"default"},s={"server.create":"Create","server.delete":"Delete","server.start":"Start","server.stop":"Stop","server.restart":"Restart","player.whitelist.add":"Whitelist Add","player.whitelist.remove":"Whitelist Remove","player.ban":"Ban","player.unban":"Unban","player.op":"Op","player.deop":"Deop","player.kick":"Kick","audit.purge":"Purge"},i=["server.create","server.delete","server.start","server.stop","server.restart","player.whitelist.add","player.whitelist.remove","player.ban","player.unban","player.op","player.deop","player.kick","audit.purge"],a=["server.create","server.delete","server.start","server.stop","server.restart"],o=["player.whitelist.add","player.whitelist.remove","player.ban","player.unban","player.op","player.deop","player.kick"]}},function(e){e.O(0,[6812,9760,6758,1668,540,4416,521,5511,7359,55,8347,2777,2666,3669,2757,1744],function(){return e(e.s=12121)}),_N_E=e.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[4095],{16387:function(e,r,t){Promise.resolve().then(t.bind(t,6453))},6453:function(e,r,t){"use strict";t.r(r),t.d(r,{default:function(){return B}});var n=t(94655),i=t(35106),a=t(7281),s=t(74228),l=t(46725),o=t(56275),c=t(62108),d=t(79983),x=t(31317),h=t(78765),m=t(90158),u=t(58347),p=t(49954),f=t(17820),g=t(73424),b=t(61505),j=t(71185),y=t(76176),v=t(27171),Z=t(35847),w=t(29983),C=t(80620),k=t(84974),S=t(34675),P=t(85480),z=t(64779);function I(e){return(0,n.jsxs)(z.Z,{...e,viewBox:"0 0 32 32",children:[(0,n.jsx)("rect",{width:"32",height:"32",fill:"#5DA840"}),(0,n.jsx)("rect",{x:"4",y:"8",width:"8",height:"8",fill:"#000"}),(0,n.jsx)("rect",{x:"20",y:"8",width:"8",height:"8",fill:"#000"}),(0,n.jsx)("rect",{x:"12",y:"16",width:"8",height:"4",fill:"#000"}),(0,n.jsx)("rect",{x:"8",y:"20",width:"16",height:"8",fill:"#000"}),(0,n.jsx)("rect",{x:"8",y:"28",width:"4",height:"4",fill:"#000"}),(0,n.jsx)("rect",{x:"20",y:"28",width:"4",height:"4",fill:"#000"}),(0,n.jsx)("rect",{x:"0",y:"0",width:"4",height:"4",fill:"#4A9030",opacity:"0.5"}),(0,n.jsx)("rect",{x:"8",y:"4",width:"4",height:"4",fill:"#4A9030",opacity:"0.5"}),(0,n.jsx)("rect",{x:"24",y:"0",width:"4",height:"4",fill:"#4A9030",opacity:"0.5"}),(0,n.jsx)("rect",{x:"28",y:"8",width:"4",height:"4",fill:"#4A9030",opacity:"0.5"}),(0,n.jsx)("rect",{x:"0",y:"24",width:"4",height:"4",fill:"#4A9030",opacity:"0.5"})]})}var W=t(8690),A=t(6986);let D=[{label:"Dashboard",href:"/dashboard",icon:(0,n.jsx)(y.Z,{})},{label:"Servers",href:"/servers",icon:(0,n.jsx)(v.Z,{})},{label:"Worlds",href:"/worlds",icon:(0,n.jsx)(k.Z,{})},{label:"Players",href:"/players",icon:(0,n.jsx)(Z.Z,{})},{label:"Audit",href:"/audit-logs",icon:(0,n.jsx)(C.Z,{})},{label:"Backups",href:"/backups",icon:(0,n.jsx)(S.Z,{})},{label:"Routing",href:"/routing",icon:(0,n.jsx)(w.Z,{})}];function T(e){let{mobileOpen:r,onMenuToggle:t}=e,i=(0,s.usePathname)(),{data:y}=(0,A.kP)(),v=e=>"/dashboard"===e?"/dashboard"===i||"/"===i:i.startsWith(e);return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(o.Z,{position:"fixed",elevation:0,sx:{backgroundColor:"background.paper",borderBottom:"1px solid",borderColor:"divider",zIndex:e=>e.zIndex.drawer+1},children:(0,n.jsxs)(c.Z,{sx:{maxWidth:"1400px",width:"100%",mx:"auto",px:{xs:2,sm:3}},children:[(0,n.jsx)(d.Z,{color:"inherit","aria-label":"open menu",edge:"start",onClick:t,sx:{mr:2,display:{md:"none"}},children:(0,n.jsx)(b.Z,{})}),(0,n.jsxs)(l.default,{href:"/",style:{textDecoration:"none",display:"flex",alignItems:"center"},children:[(0,n.jsx)(I,{sx:{fontSize:28,color:"primary.main",mr:1}}),(0,n.jsx)(x.Z,{variant:"h6",component:"span",sx:{fontFamily:'"Minecraft", sans-serif',fontWeight:400,color:"common.white",letterSpacing:"0.05em",fontSize:"1.1rem"},children:"Minecraft Console"})]}),(0,n.jsx)(a.Z,{component:"nav",sx:{display:{xs:"none",md:"flex"},alignItems:"center",gap:1,ml:4,flex:1},children:D.map(e=>{let r=v(e.href);return(0,n.jsx)(l.default,{href:e.href,style:{textDecoration:"none"},onClick:()=>!r&&(0,W.Av)(),children:(0,n.jsxs)(a.Z,{sx:{display:"flex",alignItems:"center",gap:1,px:2,py:1,borderRadius:2,color:r?"primary.main":"text.secondary",backgroundColor:r?"action.selected":"transparent",transition:"all 0.2s ease","&:hover":{backgroundColor:"action.hover",color:r?"primary.main":"text.primary"}},children:[(0,n.jsx)(a.Z,{component:"span",sx:{display:"flex",alignItems:"center","& svg":{fontSize:20}},children:e.icon}),(0,n.jsx)(x.Z,{variant:"body2",sx:{fontWeight:r?600:400},children:e.label})]})},e.href)})}),(0,n.jsx)(a.Z,{sx:{display:"flex",alignItems:"center",gap:2},children:(0,n.jsx)(P.Ie,{})})]})}),(0,n.jsx)(h.ZP,{variant:"temporary",anchor:"left",open:r,onClose:t,ModalProps:{keepMounted:!0},sx:{display:{xs:"block",md:"none"},"& .MuiDrawer-paper":{boxSizing:"border-box",width:280,backgroundColor:"background.paper"}},children:(0,n.jsxs)(a.Z,{sx:{display:"flex",flexDirection:"column",height:"100%"},children:[(0,n.jsxs)(a.Z,{sx:{display:"flex",alignItems:"center",justifyContent:"space-between",px:2,py:2,minHeight:64,borderBottom:"1px solid",borderColor:"divider"},children:[(0,n.jsxs)(a.Z,{sx:{display:"flex",alignItems:"center"},children:[(0,n.jsx)(I,{sx:{fontSize:24,color:"primary.main",mr:1}}),(0,n.jsx)(x.Z,{variant:"h6",component:"span",sx:{fontFamily:'"Minecraft", sans-serif',fontWeight:400,color:"primary.main",letterSpacing:"0.05em",fontSize:"1rem"},children:"Minecraft Console"})]}),(0,n.jsx)(d.Z,{onClick:t,"aria-label":"close menu",children:(0,n.jsx)(j.Z,{})})]}),(0,n.jsx)(m.Z,{sx:{flex:1,px:1,py:2},children:D.map(e=>{let r=v(e.href);return(0,n.jsx)(u.ZP,{disablePadding:!0,sx:{mb:.5},children:(0,n.jsxs)(p.Z,{component:l.default,href:e.href,onClick:()=>{t(),r||(0,W.Av)()},"aria-current":r?"page":void 0,sx:{borderRadius:2,backgroundColor:r?"action.selected":"transparent","&:hover":{backgroundColor:"action.hover"}},children:[(0,n.jsx)(f.Z,{sx:{color:r?"primary.main":"text.secondary",minWidth:40},children:e.icon}),(0,n.jsx)(g.Z,{primary:e.label,primaryTypographyProps:{fontWeight:r?600:400,color:r?"primary.main":"text.primary"}})]})},e.href)})})]})})]})}var _=t(67337),E=t(41261),q=t(69123),M=t(75845),L=t(43880);function R(e){return(0,n.jsx)(z.Z,{...e,viewBox:"0 0 24 24",children:(0,n.jsx)("path",{d:"M13.983 11.078h2.119a.186.186 0 00.186-.185V9.006a.186.186 0 00-.186-.186h-2.119a.185.185 0 00-.185.185v1.888c0 .102.083.185.185.185m-2.954-5.43h2.118a.186.186 0 00.186-.186V3.574a.186.186 0 00-.186-.185h-2.118a.185.185 0 00-.185.185v1.888c0 .102.082.185.185.186m0 2.716h2.118a.187.187 0 00.186-.186V6.29a.186.186 0 00-.186-.185h-2.118a.185.185 0 00-.185.185v1.887c0 .102.082.185.185.186m-2.93 0h2.12a.186.186 0 00.184-.186V6.29a.185.185 0 00-.185-.185H8.1a.185.185 0 00-.185.185v1.887c0 .102.083.185.185.186m-2.964 0h2.119a.186.186 0 00.185-.186V6.29a.185.185 0 00-.185-.185H5.136a.186.186 0 00-.186.185v1.887c0 .102.084.185.186.186m5.893 2.715h2.118a.186.186 0 00.186-.185V9.006a.186.186 0 00-.186-.186h-2.118a.185.185 0 00-.185.185v1.888c0 .102.082.185.185.185m-2.93 0h2.12a.185.185 0 00.184-.185V9.006a.185.185 0 00-.184-.186h-2.12a.185.185 0 00-.184.185v1.888c0 .102.083.185.185.185m-2.964 0h2.119a.185.185 0 00.185-.185V9.006a.185.185 0 00-.184-.186h-2.12a.186.186 0 00-.186.186v1.887c0 .102.084.185.186.185m-2.92 0h2.12a.185.185 0 00.184-.185V9.006a.185.185 0 00-.184-.186h-2.12a.185.185 0 00-.184.185v1.888c0 .102.082.185.185.185M23.763 9.89c-.065-.051-.672-.51-1.954-.51-.338.001-.676.03-1.01.087-.248-1.7-1.653-2.53-1.716-2.566l-.344-.199-.226.327c-.284.438-.49.922-.612 1.43-.23.97-.09 1.882.403 2.661-.595.332-1.55.413-1.744.42H.751a.751.751 0 00-.75.748 11.376 11.376 0 00.692 4.062c.545 1.428 1.355 2.48 2.41 3.124 1.18.723 3.1 1.137 5.275 1.137.983.003 1.963-.086 2.93-.266a12.248 12.248 0 003.823-1.389c.98-.567 1.86-1.288 2.61-2.136 1.252-1.418 1.998-2.997 2.553-4.4h.221c1.372 0 2.215-.549 2.68-1.009.309-.293.55-.65.707-1.046l.098-.288z"})})}let U=[{title:"Resources",links:[{label:"Getting Started",href:"https://minecraft-server-manager.readthedocs.io/en/latest/getting-started/",external:!0},{label:"Configuration",href:"https://minecraft-server-manager.readthedocs.io/en/latest/configuration/",external:!0},{label:"Troubleshooting",href:"https://minecraft-server-manager.readthedocs.io/en/latest/troubleshooting/",external:!0}]},{title:"Documentation",links:[{label:"CLI Commands",href:"https://minecraft-server-manager.readthedocs.io/en/latest/cli/",external:!0},{label:"API Reference",href:"https://minecraft-server-manager.readthedocs.io/en/latest/console/",external:!0},{label:"itzg Reference",href:"https://minecraft-server-manager.readthedocs.io/en/latest/itzg-reference/",external:!0}]},{title:"Community",links:[{label:"GitHub",href:"https://github.com/smallmiro/minecraft-server-manager",external:!0},{label:"Issues",href:"https://github.com/smallmiro/minecraft-server-manager/issues",external:!0}]},{title:"About",links:[{label:"License",href:"https://github.com/smallmiro/minecraft-server-manager/blob/main/LICENSE",external:!0},{label:"Docker Hub",href:"https://hub.docker.com/r/itzg/minecraft-server",external:!0}]}];function H(){let e=new Date().getFullYear();return(0,n.jsx)(a.Z,{component:"footer",sx:{backgroundColor:"background.paper",borderTop:"1px solid",borderColor:"divider",mt:"auto"},children:(0,n.jsxs)(_.Z,{maxWidth:"lg",sx:{py:6},children:[(0,n.jsx)(a.Z,{sx:{display:"grid",gridTemplateColumns:{xs:"repeat(2, 1fr)",sm:"repeat(4, 1fr)"},gap:4,mb:4},children:U.map(e=>(0,n.jsxs)(a.Z,{children:[(0,n.jsx)(x.Z,{variant:"subtitle2",sx:{fontWeight:600,color:"text.primary",mb:2},children:e.title}),(0,n.jsx)(a.Z,{component:"ul",sx:{listStyle:"none",p:0,m:0},children:e.links.map(e=>(0,n.jsx)(a.Z,{component:"li",sx:{mb:1},children:(0,n.jsx)(E.Z,{href:e.href,target:e.external?"_blank":void 0,rel:e.external?"noopener noreferrer":void 0,underline:"hover",sx:{color:"text.secondary",fontSize:"0.875rem",transition:"color 0.2s ease","&:hover":{color:"primary.main"}},children:e.label})},e.label))})]},e.title))}),(0,n.jsx)(q.Z,{sx:{mb:3}}),(0,n.jsxs)(a.Z,{sx:{display:"flex",flexDirection:{xs:"column",sm:"row"},justifyContent:"space-between",alignItems:{xs:"flex-start",sm:"center"},gap:2},children:[(0,n.jsxs)(x.Z,{variant:"body2",sx:{color:"text.tertiary"},children:[e," \xa9"," ",(0,n.jsx)(E.Z,{href:"https://github.com/smallmiro/minecraft-server-manager",target:"_blank",rel:"noopener noreferrer",underline:"hover",sx:{color:"primary.main"},children:"Minecraft Server Management Console"})]}),(0,n.jsxs)(a.Z,{sx:{display:"flex",gap:2},children:[(0,n.jsx)(E.Z,{href:"https://github.com/smallmiro/minecraft-server-manager",target:"_blank",rel:"noopener noreferrer","aria-label":"GitHub",sx:{color:"text.secondary",transition:"color 0.2s ease","&:hover":{color:"text.primary"}},children:(0,n.jsx)(M.Z,{fontSize:"small"})}),(0,n.jsx)(E.Z,{href:"https://minecraft-server-manager.readthedocs.io/",target:"_blank",rel:"noopener noreferrer","aria-label":"Documentation",sx:{color:"text.secondary",transition:"color 0.2s ease","&:hover":{color:"text.primary"}},children:(0,n.jsx)(L.Z,{fontSize:"small"})}),(0,n.jsx)(E.Z,{href:"https://hub.docker.com/r/itzg/minecraft-server",target:"_blank",rel:"noopener noreferrer","aria-label":"Docker Hub",sx:{color:"text.secondary",transition:"color 0.2s ease","&:hover":{color:"text.primary"}},children:(0,n.jsx)(R,{fontSize:"small"})})]})]})]})})}function B(e){let{children:r}=e,[t,s]=(0,i.useState)(!1);return(0,n.jsxs)(a.Z,{sx:{display:"flex",flexDirection:"column",minHeight:"100vh",backgroundColor:"background.default"},children:[(0,n.jsx)(T,{mobileOpen:t,onMenuToggle:()=>{s(!t)}}),(0,n.jsx)(a.Z,{component:"main",sx:{flexGrow:1,display:"flex",flexDirection:"column",pt:{xs:"".concat(88,"px"),sm:"".concat(96,"px")},pb:{xs:3,sm:4},px:{xs:2,sm:3,md:4},maxWidth:"1400px",width:"100%",mx:"auto"},children:r}),(0,n.jsx)(H,{})]})}},85480:function(e,r,t){"use strict";t.d(r,{U0:function(){return u},WS:function(){return p},Ie:function(){return I}});var n=t(94655),i=t(35106),a=t(7281),s=t(81071),l=t(97436),o=t(52082),c=t(79983),d=t(30417),x=t(36848),h=t(554),m=t(6986);function u(e){let{onSuccess:r}=e,[t,u]=(0,i.useState)(""),[p,f]=(0,i.useState)(""),[g,b]=(0,i.useState)(!1),[j,y]=(0,i.useState)({}),[v,Z]=(0,i.useState)(null),[w,C]=(0,i.useState)(!1),k=()=>{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"),y(e),0===Object.keys(e).length},S=async e=>{if(e.preventDefault(),Z(null),k()){C(!0);try{let e=await m.cg.email({email:t,password:p});if(e.error){Z(e.error.message||"Invalid credentials"),C(!1);return}r&&r()}catch(e){Z("An unexpected error occurred. Please try again."),C(!1)}}};return(0,n.jsxs)(a.Z,{component:"form",onSubmit:S,sx:{display:"flex",flexDirection:"column",gap:2},children:[v&&(0,n.jsx)(s.Z,{severity:"error",onClose:()=>Z(null),children:v}),(0,n.jsx)(l.Z,{label:"Email",type:"email",value:t,onChange:e=>u(e.target.value),error:!!j.email,helperText:j.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:!!j.password,helperText:j.password,disabled:w,fullWidth:!0,required:!0,InputProps:{endAdornment:(0,n.jsx)(o.Z,{position:"end",children:(0,n.jsx)(c.Z,{"aria-label":"toggle password visibility",onClick:()=>{b(!g)},edge:"end",children:g?(0,n.jsx)(x.Z,{}):(0,n.jsx)(h.Z,{})})})}}),(0,n.jsx)(d.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,u]=(0,i.useState)(""),[p,f]=(0,i.useState)(""),[g,b]=(0,i.useState)(""),[j,y]=(0,i.useState)(""),[v,Z]=(0,i.useState)(!1),[w,C]=(0,i.useState)(!1),[k,S]=(0,i.useState)({}),[P,z]=(0,i.useState)(null),[I,W]=(0,i.useState)(!1),A=()=>{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",j?g!==j&&(e.confirmPassword="Passwords do not match"):e.confirmPassword="Please confirm your password",S(e),0===Object.keys(e).length},D=async e=>{if(e.preventDefault(),z(null),A()){W(!0);try{let e=await m.y1.email({email:p,password:g,name:t});if(e.error){z(e.error.message||"Registration failed"),W(!1);return}r&&r()}catch(e){z("An unexpected error occurred. Please try again."),W(!1)}}};return(0,n.jsxs)(a.Z,{component:"form",onSubmit:D,sx:{display:"flex",flexDirection:"column",gap:2},children:[P&&(0,n.jsx)(s.Z,{severity:"error",onClose:()=>z(null),children:P}),(0,n.jsx)(l.Z,{label:"Name",type:"text",value:t,onChange:e=>u(e.target.value),error:!!k.name,helperText:k.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:!!k.email,helperText:k.email,disabled:I,fullWidth:!0,required:!0}),(0,n.jsx)(l.Z,{label:"Password",type:v?"text":"password",value:g,onChange:e=>b(e.target.value),error:!!k.password,helperText:k.password,disabled:I,fullWidth:!0,required:!0,InputProps:{endAdornment:(0,n.jsx)(o.Z,{position:"end",children:(0,n.jsx)(c.Z,{"aria-label":"toggle password visibility",onClick:()=>{Z(!v)},edge:"end",children:v?(0,n.jsx)(x.Z,{}):(0,n.jsx)(h.Z,{})})})}}),(0,n.jsx)(l.Z,{label:"Confirm Password",type:w?"text":"password",value:j,onChange:e=>y(e.target.value),error:!!k.confirmPassword,helperText:k.confirmPassword,disabled:I,fullWidth:!0,required:!0,InputProps:{endAdornment:(0,n.jsx)(o.Z,{position:"end",children:(0,n.jsx)(c.Z,{"aria-label":"toggle password visibility",onClick:()=>{C(!w)},edge:"end",children:w?(0,n.jsx)(x.Z,{}):(0,n.jsx)(h.Z,{})})})}}),(0,n.jsx)(d.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),b=t(86702),j=t(35694),y=t(31317),v=t(25333),Z=t(69123),w=t(7178),C=t(17820),k=t(73424),S=t(25169),P=t(41094),z=t(78319);function I(){let e=(0,f.useRouter)(),{data:r,isPending:t}=(0,m.kP)(),[s,l]=(0,i.useState)(null),o=()=>{l(null)},x=async()=>{o(),await (0,m.w7)(),e.push("/login")};if(t)return(0,n.jsx)(a.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)(d.Z,{variant:"contained",color:"primary",onClick:()=>{e.push("/login")},children:"Sign In"});let{user:h}=r,u=((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():"?"})(h.name,h.email);return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(c.Z,{onClick:e=>{l(e.currentTarget)},"aria-label":"user menu",children:(0,n.jsx)(b.Z,{sx:{bgcolor:"primary.main"},children:u})}),(0,n.jsxs)(j.Z,{anchorEl:s,open:!!s,onClose:o,anchorOrigin:{vertical:"bottom",horizontal:"right"},transformOrigin:{vertical:"top",horizontal:"right"},sx:{mt:1},children:[(0,n.jsxs)(a.Z,{sx:{px:2,py:1.5,minWidth:200},children:[(0,n.jsx)(y.Z,{variant:"subtitle1",fontWeight:"600",children:h.name||"User"}),(0,n.jsx)(y.Z,{variant:"body2",color:"text.secondary",children:h.email}),"admin"===h.role&&(0,n.jsx)(v.Z,{label:"Admin",size:"small",color:"primary",sx:{mt:1}})]}),(0,n.jsx)(Z.Z,{}),"admin"===h.role&&(0,n.jsxs)(w.Z,{onClick:()=>{o(),e.push("/admin/users")},children:[(0,n.jsx)(C.Z,{children:(0,n.jsx)(S.Z,{fontSize:"small"})}),(0,n.jsx)(k.Z,{children:"Users"})]}),(0,n.jsxs)(w.Z,{onClick:()=>{o(),e.push("/settings")},children:[(0,n.jsx)(C.Z,{children:(0,n.jsx)(P.Z,{fontSize:"small"})}),(0,n.jsx)(k.Z,{children:"Settings"})]}),(0,n.jsxs)(w.Z,{onClick:x,children:[(0,n.jsx)(C.Z,{children:(0,n.jsx)(z.Z,{fontSize:"small"})}),(0,n.jsx)(k.Z,{children:"Logout"})]})]})]})}},3454:function(e,r,t){"use strict";t.d(r,{LoadingProvider:function(){return o},startLoading:function(){return c},stopLoading:function(){return d}});var n=t(94655),i=t(35106),a=t(74228),s=t(31477),l=t.n(s);function o(e){let{children:r}=e,t=(0,a.usePathname)(),s=(0,a.useSearchParams)();return(0,i.useEffect)(()=>{l().done()},[t,s]),(0,n.jsx)(n.Fragment,{children:r})}function c(){l().start()}function d(){l().done()}l().configure({showSpinner:!1,speed:300,minimum:.1})},8690:function(e,r,t){"use strict";t.d(r,{Av:function(){return n.startLoading}});var n=t(3454)},6986:function(e,r,t){"use strict";t.d(r,{Cp:function(){return h},Nq:function(){return x},cg:function(){return l},kP:function(){return d},w7:function(){return o},y1:function(){return c},zB:function(){return m}});var n=t(77054),i=t(61648),a=t(35016);let s=(0,n.X)({baseURL:a.env.NEXT_PUBLIC_BETTER_AUTH_URL||"",plugins:[(0,i.zB)()]}),{signIn:l,signOut:o,signUp:c,useSession:d,updateUser:x,changePassword:h}=s,m=s.admin}},function(e){e.O(0,[6812,9760,6758,680,1668,7436,1071,2542,55,7727,8347,9949,8918,212,3669,2757,1744],function(){return e(e.s=16387)}),_N_E=e.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[781],{31809:function(e,n,r){Promise.resolve().then(r.bind(r,79875))},397:function(e,n,r){"use strict";var a=r(8091);n.Z=void 0;var t=a(r(66758)),l=r(94655);n.Z=(0,t.default)((0,l.jsx)("path",{d:"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2M4 12c0-4.42 3.58-8 8-8 1.85 0 3.55.63 4.9 1.69L5.69 16.9C4.63 15.55 4 13.85 4 12m8 8c-1.85 0-3.55-.63-4.9-1.69L18.31 7.1C19.37 8.45 20 10.15 20 12c0 4.42-3.58 8-8 8"}),"Block")},45813:function(e,n,r){"use strict";var a=r(8091);n.Z=void 0;var t=a(r(66758)),l=r(94655);n.Z=(0,t.default)((0,l.jsx)("path",{d:"M3 17.25V21h3.75L17.81 9.94l-3.75-3.75zM20.71 7.04c.39-.39.39-1.02 0-1.41l-2.34-2.34a.9959.9959 0 0 0-1.41 0l-1.83 1.83 3.75 3.75z"}),"Edit")},29114:function(e,n,r){"use strict";var a=r(8091);n.Z=void 0;var t=a(r(66758)),l=r(94655);n.Z=(0,t.default)((0,l.jsx)("path",{d:"M22 9V7h-2v2h-2v2h2v2h2v-2h2V9zM8 12c2.21 0 4-1.79 4-4s-1.79-4-4-4-4 1.79-4 4 1.79 4 4 4m0 1c-2.67 0-8 1.34-8 4v3h16v-3c0-2.66-5.33-4-8-4m4.51-8.95C13.43 5.11 14 6.49 14 8s-.57 2.89-1.49 3.95C14.47 11.7 16 10.04 16 8s-1.53-3.7-3.49-3.95m4.02 9.78C17.42 14.66 18 15.7 18 17v3h2v-3c0-1.45-1.59-2.51-3.47-3.17"}),"GroupAdd")},69366:function(e,n,r){"use strict";var a=r(8091);n.Z=void 0;var t=a(r(66758)),l=r(94655);n.Z=(0,t.default)((0,l.jsx)("path",{d:"M17.65 6.35C16.2 4.9 14.21 4 12 4c-4.42 0-7.99 3.58-7.99 8s3.57 8 7.99 8c3.73 0 6.84-2.55 7.73-6h-2.08c-.82 2.33-3.04 4-5.65 4-3.31 0-6-2.69-6-6s2.69-6 6-6c1.66 0 3.14.69 4.22 1.78L13 11h7V4z"}),"Refresh")},42431:function(e,n,r){"use strict";var a=r(8091);n.Z=void 0;var t=a(r(66758)),l=r(94655);n.Z=(0,t.default)((0,l.jsx)("path",{d:"M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14"}),"Search")},65087:function(e,n,r){"use strict";r.d(n,{Z:function(){return v}});var a=r(32324),t=r(81500),l=r(35106),s=r(70316),i=r(65951),o=r(34519),c=r(15651),d=r(28057),u=r(31317),h=r(11379),x=r(9049);function p(e){return(0,x.ZP)("MuiDialogContentText",e)}(0,h.Z)("MuiDialogContentText",["root"]);var m=r(94655);let y=["children","className"],j=e=>{let{classes:n}=e,r=(0,i.Z)({root:["root"]},p,n);return(0,t.Z)({},n,r)},Z=(0,o.ZP)(u.Z,{shouldForwardProp:e=>(0,c.Z)(e)||"classes"===e,name:"MuiDialogContentText",slot:"Root",overridesResolver:(e,n)=>n.root})({});var v=l.forwardRef(function(e,n){let r=(0,d.i)({props:e,name:"MuiDialogContentText"}),{className:l}=r,i=(0,a.Z)(r,y),o=j(i);return(0,m.jsx)(Z,(0,t.Z)({component:"p",variant:"body1",color:"text.secondary",ref:n,ownerState:i,className:(0,s.Z)(o.root,l)},r,{classes:o}))})},73424:function(e,n,r){"use strict";var a=r(32324),t=r(81500),l=r(35106),s=r(70316),i=r(65951),o=r(31317),c=r(75084),d=r(28057),u=r(34519),h=r(64769),x=r(94655);let p=["children","className","disableTypography","inset","primary","primaryTypographyProps","secondary","secondaryTypographyProps"],m=e=>{let{classes:n,inset:r,primary:a,secondary:t,dense:l}=e;return(0,i.Z)({root:["root",r&&"inset",l&&"dense",a&&t&&"multiline"],primary:["primary"],secondary:["secondary"]},h.L,n)},y=(0,u.ZP)("div",{name:"MuiListItemText",slot:"Root",overridesResolver:(e,n)=>{let{ownerState:r}=e;return[{["& .".concat(h.Z.primary)]:n.primary},{["& .".concat(h.Z.secondary)]:n.secondary},n.root,r.inset&&n.inset,r.primary&&r.secondary&&n.multiline,r.dense&&n.dense]}})(e=>{let{ownerState:n}=e;return(0,t.Z)({flex:"1 1 auto",minWidth:0,marginTop:4,marginBottom:4},n.primary&&n.secondary&&{marginTop:6,marginBottom:6},n.inset&&{paddingLeft:56})}),j=l.forwardRef(function(e,n){let r=(0,d.i)({props:e,name:"MuiListItemText"}),{children:i,className:u,disableTypography:h=!1,inset:j=!1,primary:Z,primaryTypographyProps:v,secondary:f,secondaryTypographyProps:g}=r,b=(0,a.Z)(r,p),{dense:C}=l.useContext(c.Z),w=null!=Z?Z:i,S=f,k=(0,t.Z)({},r,{disableTypography:h,inset:j,primary:!!w,secondary:!!S,dense:C}),I=m(k);return null==w||w.type===o.Z||h||(w=(0,x.jsx)(o.Z,(0,t.Z)({variant:C?"body2":"body1",className:I.primary,component:null!=v&&v.variant?void 0:"span",display:"block"},v,{children:w}))),null==S||S.type===o.Z||h||(S=(0,x.jsx)(o.Z,(0,t.Z)({variant:"body2",className:I.secondary,color:"text.secondary",display:"block"},g,{children:S}))),(0,x.jsxs)(y,(0,t.Z)({className:(0,s.Z)(I.root,u),ownerState:k,ref:n},b,{children:[w,S]}))});n.Z=j},64769:function(e,n,r){"use strict";r.d(n,{L:function(){return l}});var a=r(11379),t=r(9049);function l(e){return(0,t.ZP)("MuiListItemText",e)}let s=(0,a.Z)("MuiListItemText",["root","multiline","dense","inset","primary","secondary"]);n.Z=s},79875:function(e,n,r){"use strict";r.r(n),r.d(n,{default:function(){return eI}});var a=r(94655),t=r(35106),l=r(7281),s=r(31317),i=r(84840),o=r(33402),c=r(60097),d=r(29793),u=r(75726),h=r(62328),x=r(7178),p=r(69899),m=r(76492),y=r(35847),j=r(628),Z=r(41565),v=r(90158),f=r(58347),g=r(73424),b=r(32324),C=r(81500),w=r(70316),S=r(65951),k=r(75084),I=r(34519),P=r(28057),E=r(11379),F=r(9049);function L(e){return(0,F.ZP)("MuiListItemAvatar",e)}(0,E.Z)("MuiListItemAvatar",["root","alignItemsFlexStart"]);let A=["className"],T=e=>{let{alignItems:n,classes:r}=e;return(0,S.Z)({root:["root","flex-start"===n&&"alignItemsFlexStart"]},L,r)},N=(0,I.ZP)("div",{name:"MuiListItemAvatar",slot:"Root",overridesResolver:(e,n)=>{let{ownerState:r}=e;return[n.root,"flex-start"===r.alignItems&&n.alignItemsFlexStart]}})(e=>{let{ownerState:n}=e;return(0,C.Z)({minWidth:56,flexShrink:0},"flex-start"===n.alignItems&&{marginTop:8})}),R=t.forwardRef(function(e,n){let r=(0,P.i)({props:e,name:"MuiListItemAvatar"}),{className:l}=r,s=(0,b.Z)(r,A),i=t.useContext(k.Z),o=(0,C.Z)({},r,{alignItems:i.alignItems}),c=T(o);return(0,a.jsx)(N,(0,C.Z)({className:(0,w.Z)(c.root,l),ownerState:o,ref:n},s))});var O=r(86702),D=r(79983),W=r(30417),z=r(25333),M=r(99770),B=r(62508),U=r(5682),_=r(65087),K=r(76678),q=r(97436),J=r(93017),V=r(81071),G=r(66561),Y=r(12795),H=r(96407),$=r(69366),Q=r(11597),X=r(81960),ee=r(30114);function en(e){let{onPlayerKicked:n}=e,[r,i]=(0,t.useState)(!0),[o,c]=(0,t.useState)(null),[d,u]=(0,t.useState)([]),[h,x]=(0,t.useState)(!1),[p,m]=(0,t.useState)(null),[y,b]=(0,t.useState)(""),[C,w]=(0,t.useState)(!1),S=(0,t.useCallback)(async()=>{i(!0),c(null);try{let e=await fetch("/api/players");if(!e.ok)throw Error("Failed to fetch players");let n=await e.json();u(n.servers)}catch(e){c("Failed to load players"),console.error("Error fetching players:",e)}finally{i(!1)}},[]);(0,t.useEffect)(()=>{S()},[S]);let k=(e,n)=>{m({player:e,server:n}),b(""),x(!0)},I=async()=>{if(p){w(!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:y||"Kicked by administrator"})})).ok)throw Error("Failed to kick player");x(!1),m(null),null==n||n(p.player,p.server),await S()}catch(e){console.error("Error kicking player:",e)}finally{w(!1)}}},P=d.some(e=>e.players.length>0);return(0,a.jsx)(j.Z,{"data-testid":"player-list",children:(0,a.jsxs)(Z.Z,{children:[(0,a.jsxs)(l.Z,{sx:{display:"flex",justifyContent:"space-between",alignItems:"center",mb:2},children:[(0,a.jsx)(s.Z,{variant:"h6",children:"Online Players"}),(0,a.jsx)(D.Z,{onClick:S,disabled:r,"aria-label":"Refresh",children:(0,a.jsx)($.Z,{})})]}),r&&(0,a.jsx)(l.Z,{sx:{display:"flex",justifyContent:"center",py:4},children:(0,a.jsx)(J.Z,{})}),o&&(0,a.jsx)(V.Z,{severity:"error",sx:{mb:2},children:o}),!r&&!o&&!P&&(0,a.jsx)(s.Z,{color:"text.secondary",sx:{textAlign:"center",py:4},children:"No players online"}),!r&&!o&&P&&(0,a.jsx)(l.Z,{children:d.map(e=>(0,a.jsxs)(G.Z,{defaultExpanded:e.players.length>0,children:[(0,a.jsx)(Y.Z,{expandIcon:(0,a.jsx)(X.Z,{}),children:(0,a.jsxs)(l.Z,{sx:{display:"flex",alignItems:"center",gap:2,width:"100%"},children:[(0,a.jsx)(s.Z,{variant:"subtitle1",sx:{fontWeight:500},children:e.name}),(0,a.jsx)(z.Z,{label:"".concat(e.players.length," player").concat(1!==e.players.length?"s":""),size:"small",color:e.players.length>0?"success":"default"})]})}),(0,a.jsx)(H.Z,{children:0===e.players.length?(0,a.jsx)(s.Z,{color:"text.secondary",sx:{fontStyle:"italic"},children:"No players online on this server"}):(0,a.jsx)(v.Z,{dense:!0,children:e.players.map(n=>(0,a.jsxs)(f.ZP,{secondaryAction:(0,a.jsx)(D.Z,{edge:"end","aria-label":"Kick player",onClick:()=>k(n,e.name),color:"error",children:(0,a.jsx)(Q.Z,{})}),children:[(0,a.jsx)(R,{children:(0,a.jsx)(O.Z,{src:"https://mc-heads.net/avatar/".concat(n.uuid,"/40"),alt:n.name,children:(0,a.jsx)(ee.Z,{})})}),(0,a.jsx)(g.Z,{primary:n.name,secondary:n.uuid.substring(0,8)+"..."})]},n.uuid))})})]},e.name))}),(0,a.jsxs)(M.Z,{open:h,onClose:()=>x(!1),children:[(0,a.jsx)(B.Z,{children:"Kick Player"}),(0,a.jsxs)(U.Z,{children:[(0,a.jsxs)(_.Z,{children:["Are you sure you want to kick ",null==p?void 0:p.player.name," from ",null==p?void 0:p.server,"?"]}),(0,a.jsx)(q.Z,{autoFocus:!0,margin:"dense",label:"Reason (optional)",fullWidth:!0,variant:"outlined",value:y,onChange:e=>b(e.target.value),placeholder:"Kicked by administrator"})]}),(0,a.jsxs)(K.Z,{children:[(0,a.jsx)(W.Z,{onClick:()=>x(!1),disabled:C,children:"Cancel"}),(0,a.jsx)(W.Z,{onClick:I,color:"error",variant:"contained",disabled:C,"aria-label":"Confirm kick",children:C?(0,a.jsx)(J.Z,{size:20}):"Confirm"})]})]})]})})}var er=r(70115),ea=r(38393),et=r(52082),el=r(21111),es=r(47606),ei=r(42431),eo=r(29114),ec=r(92666);function ed(e){var n,r;let{serverName:i}=e,[o,c]=(0,t.useState)(""),[d,u]=(0,t.useState)(null),[h,x]=(0,t.useState)(!1),[p,m]=(0,t.useState)(""),[y,b]=(0,t.useState)(null),[C,w]=(0,t.useState)(""),{data:S,isLoading:k,error:I}=(0,ec.ox)(i),{data:P}=(0,ec.Yo)(i),E=(0,ec.zF)(),F=(0,ec.Ll)(),L=(0,ec.S0)(),A=null!==(n=null==S?void 0:S.players)&&void 0!==n?n:[],T=null==S?void 0:S.source,N=null!==(r=null==P?void 0:P.enabled)&&void 0!==r&&r,M=(0,t.useMemo)(()=>{if(!C.trim())return A;let e=C.toLowerCase();return A.filter(n=>n.name.toLowerCase().includes(e))},[A,C]),B=(null==I?void 0:I.message)||(F.error?"Failed to add player to whitelist":null)||(L.error&&!d?"Failed to remove player from whitelist":null)||(E.error?"Failed to update whitelist status":null),U=()=>{o.trim()&&F.mutate({serverName:i,player:o.trim()},{onSuccess:()=>c("")})},_=e=>{u(e),L.mutate({serverName:i,player:e},{onSettled:()=>u(null)})},K=async()=>{let e=p.split(/[,\n]/).map(e=>e.trim()).filter(Boolean);if(0===e.length)return;b(null);let n=0;for(let r of e)try{await F.mutateAsync({serverName:i,player:r}),n++}catch(e){}b("Added ".concat(n," of ").concat(e.length," players")),n>0&&m("")},G=F.isPending;return(0,a.jsx)(j.Z,{"data-testid":"whitelist-manager",children:(0,a.jsxs)(Z.Z,{children:[(0,a.jsxs)(er.Z,{direction:"row",alignItems:"center",justifyContent:"space-between",sx:{mb:2},children:[(0,a.jsxs)(er.Z,{direction:"row",alignItems:"center",spacing:1,children:[(0,a.jsx)(s.Z,{variant:"h6",children:"Whitelist"}),(0,a.jsx)(z.Z,{label:N?"ON":"OFF",color:N?"success":"default",size:"small","data-testid":"whitelist-status-chip"})]}),(0,a.jsx)(ea.Z,{checked:N,onChange:()=>{E.mutate({serverName:i,enabled:!N})},disabled:E.isPending,inputProps:{"aria-label":"Toggle whitelist"},"data-testid":"whitelist-toggle"})]}),B&&(0,a.jsx)(V.Z,{severity:"error",sx:{mb:2},children:B}),!k&&T&&"rcon"!==T&&(0,a.jsxs)(V.Z,{severity:"info",sx:{mb:2},children:["Server is offline. Showing data from ","config"===T?"config.env":"whitelist.json",". Changes will apply on next server start."]}),(0,a.jsxs)(er.Z,{direction:"row",spacing:1,alignItems:"flex-start",sx:{mb:2},children:[h?(0,a.jsxs)(l.Z,{sx:{flex:1},children:[(0,a.jsx)(q.Z,{size:"small",placeholder:"player1, player2, player3",value:p,onChange:e=>m(e.target.value),disabled:G,fullWidth:!0,multiline:!0,rows:3,"data-testid":"bulk-input"}),y&&(0,a.jsx)(V.Z,{severity:"info",sx:{mt:1},"data-testid":"bulk-result",children:y})]}):(0,a.jsx)(q.Z,{size:"small",placeholder:"Player name",value:o,onChange:e=>c(e.target.value),onKeyDown:e=>{"Enter"===e.key&&U()},disabled:G,fullWidth:!0}),h?(0,a.jsx)(W.Z,{variant:"contained",onClick:K,disabled:!p.trim()||G,startIcon:G?(0,a.jsx)(J.Z,{size:16}):(0,a.jsx)(eo.Z,{}),"aria-label":"Add players in bulk",children:"Add All"}):(0,a.jsx)(W.Z,{variant:"contained",onClick:U,disabled:!o.trim()||G,startIcon:G?(0,a.jsx)(J.Z,{size:16}):(0,a.jsx)(es.Z,{}),"aria-label":"Add player to whitelist",children:"Add"}),(0,a.jsx)(W.Z,{variant:h?"contained":"outlined",onClick:()=>{x(!h),b(null)},size:"small","aria-label":"Toggle bulk mode","data-testid":"bulk-toggle",sx:{minWidth:"auto",whiteSpace:"nowrap"},children:"Bulk"})]}),A.length>=5&&(0,a.jsx)(q.Z,{size:"small",placeholder:"Search players...",value:C,onChange:e=>w(e.target.value),fullWidth:!0,sx:{mb:2},InputProps:{startAdornment:(0,a.jsx)(et.Z,{position:"start",children:(0,a.jsx)(ei.Z,{})})},"data-testid":"search-input"}),k&&(0,a.jsx)(l.Z,{sx:{display:"flex",justifyContent:"center",py:4},children:(0,a.jsx)(J.Z,{})}),!k&&0===A.length&&(0,a.jsx)(s.Z,{color:"text.secondary",sx:{textAlign:"center",py:4},children:"No players whitelisted"}),!k&&A.length>0&&0===M.length&&(0,a.jsx)(s.Z,{color:"text.secondary",sx:{textAlign:"center",py:4},"data-testid":"no-match-message",children:"No matching players"}),!k&&M.length>0&&(0,a.jsx)(v.Z,{dense:!0,children:M.map(e=>(0,a.jsxs)(f.ZP,{secondaryAction:(0,a.jsx)(D.Z,{edge:"end","aria-label":"Remove from whitelist",onClick:()=>_(e.name),disabled:d===e.name,color:"error",children:d===e.name?(0,a.jsx)(J.Z,{size:20}):(0,a.jsx)(el.Z,{})}),children:[(0,a.jsx)(R,{children:(0,a.jsx)(O.Z,{src:e.uuid?"https://mc-heads.net/avatar/".concat(e.uuid,"/40"):void 0,alt:e.name,children:(0,a.jsx)(ee.Z,{})})}),(0,a.jsx)(g.Z,{primary:e.name,secondary:e.uuid?e.uuid.substring(0,8)+"...":"UUID not available"})]},e.uuid||e.name))})]})})}var eu=r(35694),eh=r(37809),ex=r(407),ep=r(45813);let em={1:{color:"info",label:"Moderator",icon:"\uD83D\uDEE1️"},2:{color:"success",label:"Gamemaster",icon:"\uD83C\uDFAE"},3:{color:"warning",label:"Admin",icon:"⚙️"},4:{color:"error",label:"Owner",icon:"\uD83D\uDC51"}};function ey(e){let{level:n,showIcon:r=!1,compact:t=!1,size:s="medium",variant:i="filled"}=e,o=em[n];if(!o)return null;let c=t?n.toString():"Level ".concat(n," - ").concat(o.label),d=r?(0,a.jsx)(l.Z,{component:"span",sx:{mr:.5},children:o.icon}):void 0;return(0,a.jsx)(z.Z,{label:(0,a.jsxs)(a.Fragment,{children:[d,c]}),color:o.color,size:s,variant:i})}var ej=r(68038),eZ=r(34080),ev=r(40064),ef=r(39181);let eg=[{value:1,label:"Level 1 - Moderator",description:"Bypass spawn protection",icon:"\uD83D\uDEE1️"},{value:2,label:"Level 2 - Gamemaster",description:"Cheats, command blocks",icon:"\uD83C\uDFAE"},{value:3,label:"Level 3 - Admin",description:"Player management commands",icon:"⚙️"},{value:4,label:"Level 4 - Owner",description:"Full server control",icon:"\uD83D\uDC51"}];function eb(e){let{value:n,onChange:r,label:t,disabled:i=!1}=e;return(0,a.jsxs)(d.Z,{component:"fieldset",fullWidth:!0,disabled:i,children:[t&&(0,a.jsx)(ej.Z,{component:"legend",sx:{mb:1},children:t}),(0,a.jsx)(eZ.Z,{value:n,onChange:e=>{r(parseInt(e.target.value,10))},children:eg.map(e=>(0,a.jsx)(ev.Z,{value:e.value,control:(0,a.jsx)(ef.Z,{}),label:(0,a.jsxs)(l.Z,{children:[(0,a.jsxs)(l.Z,{sx:{display:"flex",alignItems:"center",gap:1},children:[(0,a.jsx)(s.Z,{component:"span",children:e.icon}),(0,a.jsx)(s.Z,{component:"span",fontWeight:"medium",children:e.label})]}),(0,a.jsx)(s.Z,{variant:"body2",color:"text.secondary",sx:{ml:4},children:e.description})]}),sx:{alignItems:"flex-start",py:1}},e.value))})]})}function eC(e){let{serverName:n}=e,[r,i]=(0,t.useState)(!0),[o,c]=(0,t.useState)(null),[d,u]=(0,t.useState)([]),[h,p]=(0,t.useState)(),[m,y]=(0,t.useState)(""),[b,C]=(0,t.useState)(!1),[w,S]=(0,t.useState)(null),[k,I]=(0,t.useState)(!1),[P,E]=(0,t.useState)(4),[F,L]=(0,t.useState)(!1),[A,T]=(0,t.useState)(null),[N,z]=(0,t.useState)(4),[_,G]=(0,t.useState)(!1),[Y,H]=(0,t.useState)(null),[$,Q]=(0,t.useState)(null),X=(0,t.useCallback)(async()=>{i(!0),c(null);try{let e=await fetch("/api/players/op?server=".concat(encodeURIComponent(n)));if(!e.ok)throw Error("Failed to fetch operators");let r=await e.json();u(r.operators),p(r.source)}catch(e){c("Failed to load operators"),console.error("Error fetching operators:",e)}finally{i(!1)}},[n]);(0,t.useEffect)(()=>{X()},[X]);let ee=async()=>{if(m.trim()){C(!0),c(null);try{if(!(await fetch("/api/players/op",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({player:m.trim(),server:n,level:P})})).ok)throw Error("Failed to add operator");y(""),E(4),I(!1),await X()}catch(e){c("Failed to add operator"),console.error("Error adding operator:",e)}finally{C(!1)}}},en=async e=>{S(e),c(null),H(null),Q(null);try{if(!(await fetch("/api/players/op?player=".concat(encodeURIComponent(e),"&server=").concat(encodeURIComponent(n)),{method:"DELETE"})).ok)throw Error("Failed to remove operator");await X()}catch(e){c("Failed to remove operator"),console.error("Error removing operator:",e)}finally{S(null)}},er=async()=>{if(A){G(!0),c(null);try{if(!(await fetch("/api/players/op/".concat(encodeURIComponent(A.name),"?server=").concat(encodeURIComponent(n)),{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({level:N})})).ok)throw Error("Failed to change operator level");L(!1),T(null),await X()}catch(e){c("Failed to change operator level"),console.error("Error changing operator level:",e)}finally{G(!1)}}},ea=(e,n)=>{H(e.currentTarget),Q(n)},et=()=>{H(null),Q(null)};return(0,a.jsxs)(j.Z,{"data-testid":"op-manager",children:[(0,a.jsxs)(Z.Z,{children:[(0,a.jsx)(s.Z,{variant:"h6",gutterBottom:!0,children:"Operators"}),o&&(0,a.jsx)(V.Z,{severity:"error",sx:{mb:2},children:o}),!r&&h&&"rcon"!==h&&(0,a.jsxs)(V.Z,{severity:"info",sx:{mb:2},children:["Server is offline. Showing data from ","config"===h?"config.env":"ops.json",". Changes will apply on next server start."]}),(0,a.jsx)(l.Z,{sx:{mb:2},children:(0,a.jsx)(W.Z,{variant:"contained",onClick:()=>I(!0),startIcon:(0,a.jsx)(es.Z,{}),"aria-label":"Add operator",fullWidth:!0,children:"Add Operator"})}),r&&(0,a.jsx)(l.Z,{sx:{display:"flex",justifyContent:"center",py:4},children:(0,a.jsx)(J.Z,{})}),!r&&0===d.length&&(0,a.jsx)(s.Z,{color:"text.secondary",sx:{textAlign:"center",py:4},children:"No operators configured"}),!r&&d.length>0&&(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(v.Z,{dense:!0,children:d.map(e=>(0,a.jsxs)(f.ZP,{secondaryAction:(0,a.jsx)(D.Z,{edge:"end","aria-label":"Operator actions",onClick:n=>ea(n,e),disabled:w===e.name,children:w===e.name?(0,a.jsx)(J.Z,{size:20}):(0,a.jsx)(eh.Z,{})}),children:[(0,a.jsx)(R,{children:(0,a.jsx)(O.Z,{src:e.uuid?"https://mc-heads.net/avatar/".concat(e.uuid,"/40"):void 0,alt:e.name,sx:{bgcolor:"warning.main"},children:(0,a.jsx)(ex.Z,{})})}),(0,a.jsx)(g.Z,{primary:(0,a.jsxs)(l.Z,{sx:{display:"flex",alignItems:"center",gap:1,flexWrap:"wrap"},children:[(0,a.jsx)(s.Z,{component:"span",children:e.name}),(0,a.jsx)(ey,{level:e.level,showIcon:!0,size:"small"})]}),secondary:e.uuid?e.uuid.substring(0,8)+"...":"UUID not available"})]},e.uuid||e.name))}),(0,a.jsxs)(eu.Z,{anchorEl:Y,open:!!Y,onClose:et,children:[(0,a.jsxs)(x.Z,{onClick:()=>{$&&(T($),z($.level),L(!0),et())},children:[(0,a.jsx)(ep.Z,{sx:{mr:1},fontSize:"small"}),"Change Level"]}),(0,a.jsxs)(x.Z,{onClick:()=>$&&en($.name),children:[(0,a.jsx)(el.Z,{sx:{mr:1},fontSize:"small",color:"error"}),"Remove OP"]})]})]})]}),(0,a.jsxs)(M.Z,{open:k,onClose:()=>!b&&I(!1),maxWidth:"sm",fullWidth:!0,children:[(0,a.jsx)(B.Z,{children:"Add Operator"}),(0,a.jsxs)(U.Z,{children:[(0,a.jsx)(q.Z,{autoFocus:!0,margin:"dense",label:"Player Name",placeholder:"Enter player name",fullWidth:!0,value:m,onChange:e=>y(e.target.value),disabled:b,sx:{mb:2}}),(0,a.jsx)(eb,{value:P,onChange:E,label:"OP Level",disabled:b})]}),(0,a.jsxs)(K.Z,{children:[(0,a.jsx)(W.Z,{onClick:()=>I(!1),disabled:b,children:"Cancel"}),(0,a.jsx)(W.Z,{variant:"contained",onClick:ee,disabled:!m.trim()||b,startIcon:b?(0,a.jsx)(J.Z,{size:16}):void 0,children:b?"Adding...":"Add OP"})]})]}),(0,a.jsxs)(M.Z,{open:F,onClose:()=>!_&&L(!1),maxWidth:"sm",fullWidth:!0,children:[(0,a.jsxs)(B.Z,{children:["Change OP Level - ",null==A?void 0:A.name]}),(0,a.jsx)(U.Z,{children:A&&(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)(s.Z,{variant:"body2",color:"text.secondary",sx:{mb:2},children:["Current: Level ",A.level," (",A.role,")"]}),(0,a.jsx)(eb,{value:N,onChange:z,label:"New Level",disabled:_})]})}),(0,a.jsxs)(K.Z,{children:[(0,a.jsx)(W.Z,{onClick:()=>L(!1),disabled:_,children:"Cancel"}),(0,a.jsx)(W.Z,{variant:"contained",onClick:er,disabled:_||N===(null==A?void 0:A.level),startIcon:_?(0,a.jsx)(J.Z,{size:16}):void 0,children:_?"Saving...":"Save Changes"})]})]})]})}var ew=r(397);function eS(e){let{serverName:n}=e,[r,i]=(0,t.useState)(!0),[o,c]=(0,t.useState)(null),[d,u]=(0,t.useState)([]),[h,x]=(0,t.useState)(),[p,m]=(0,t.useState)(!1),[y,b]=(0,t.useState)({player:"",reason:""}),[C,w]=(0,t.useState)(!1),[S,k]=(0,t.useState)(null),I=(0,t.useCallback)(async()=>{i(!0),c(null);try{let e=await fetch("/api/players/ban?server=".concat(encodeURIComponent(n)));if(!e.ok)throw Error("Failed to fetch bans");let r=await e.json();u(r.players),x(r.source)}catch(e){c("Failed to load ban list"),console.error("Error fetching bans:",e)}finally{i(!1)}},[n]);(0,t.useEffect)(()=>{I()},[I]);let P=()=>{m(!1),b({player:"",reason:""})},E=async()=>{if(y.player.trim()){w(!0),c(null);try{if(!(await fetch("/api/players/ban",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({player:y.player.trim(),reason:y.reason.trim()||"Banned by administrator",server:n})})).ok)throw Error("Failed to ban player");P(),await I()}catch(e){c("Failed to ban player"),console.error("Error banning player:",e)}finally{w(!1)}}},F=async e=>{k(e),c(null);try{if(!(await fetch("/api/players/ban?player=".concat(encodeURIComponent(e),"&server=").concat(encodeURIComponent(n)),{method:"DELETE"})).ok)throw Error("Failed to unban player");await I()}catch(e){c("Failed to unban player"),console.error("Error unbanning player:",e)}finally{k(null)}},L=e=>{try{return new Date(e).toLocaleDateString()}catch(n){return e}};return(0,a.jsx)(j.Z,{"data-testid":"ban-manager",children:(0,a.jsxs)(Z.Z,{children:[(0,a.jsxs)(l.Z,{sx:{display:"flex",justifyContent:"space-between",alignItems:"center",mb:2},children:[(0,a.jsx)(s.Z,{variant:"h6",children:"Ban List"}),(0,a.jsx)(W.Z,{variant:"outlined",color:"error",startIcon:(0,a.jsx)(ew.Z,{}),onClick:()=>{b({player:"",reason:""}),m(!0)},"aria-label":"Ban player",children:"Ban Player"})]}),o&&(0,a.jsx)(V.Z,{severity:"error",sx:{mb:2},children:o}),!r&&h&&"rcon"!==h&&(0,a.jsxs)(V.Z,{severity:"info",sx:{mb:2},children:["Server is offline. Showing data from ","config"===h?"config.env":"banned-players.json",". Changes will apply on next server start."]}),r&&(0,a.jsx)(l.Z,{sx:{display:"flex",justifyContent:"center",py:4},children:(0,a.jsx)(J.Z,{})}),!r&&0===d.length&&(0,a.jsx)(s.Z,{color:"text.secondary",sx:{textAlign:"center",py:4},children:"No players banned"}),!r&&d.length>0&&(0,a.jsx)(v.Z,{dense:!0,children:d.map(e=>(0,a.jsxs)(f.ZP,{secondaryAction:(0,a.jsx)(D.Z,{edge:"end","aria-label":"Unban player",onClick:()=>F(e.name),disabled:S===e.name,color:"success",children:S===e.name?(0,a.jsx)(J.Z,{size:20}):(0,a.jsx)(el.Z,{})}),children:[(0,a.jsx)(R,{children:(0,a.jsx)(O.Z,{src:e.uuid?"https://mc-heads.net/avatar/".concat(e.uuid,"/40"):void 0,alt:e.name,sx:{bgcolor:"error.main"},children:(0,a.jsx)(ee.Z,{})})}),(0,a.jsx)(g.Z,{primary:e.name,secondary:(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)(s.Z,{component:"span",variant:"body2",color:"text.secondary",children:["Reason: ",e.reason||"No reason specified"]}),(0,a.jsx)("br",{}),(0,a.jsxs)(s.Z,{component:"span",variant:"caption",color:"text.secondary",children:["Banned: ",L(e.created)," by ",e.source||"Unknown"]})]})})]},e.uuid||e.name))}),(0,a.jsxs)(M.Z,{open:p,onClose:P,maxWidth:"sm",fullWidth:!0,children:[(0,a.jsx)(B.Z,{children:"Ban Player"}),(0,a.jsx)(U.Z,{children:(0,a.jsxs)(er.Z,{spacing:2,sx:{mt:1},children:[(0,a.jsx)(q.Z,{label:"Player Name",placeholder:"Enter player name",value:y.player,onChange:e=>b({...y,player:e.target.value}),fullWidth:!0,required:!0}),(0,a.jsx)(q.Z,{label:"Reason",placeholder:"Banned by administrator",value:y.reason,onChange:e=>b({...y,reason:e.target.value}),fullWidth:!0,multiline:!0,rows:2})]})}),(0,a.jsxs)(K.Z,{children:[(0,a.jsx)(W.Z,{onClick:P,disabled:C,children:"Cancel"}),(0,a.jsx)(W.Z,{onClick:E,color:"error",variant:"contained",disabled:!y.player.trim()||C,startIcon:C?(0,a.jsx)(J.Z,{size:16}):(0,a.jsx)(ew.Z,{}),children:"Ban"})]})]})]})})}function ek(e){let{children:n,value:r,index:t}=e;return(0,a.jsx)("div",{role:"tabpanel",hidden:r!==t,children:r===t&&(0,a.jsx)(l.Z,{sx:{py:3},children:n})})}function eI(){let[e,n]=(0,t.useState)(0),[r,j]=(0,t.useState)(""),{data:Z,isLoading:v}=(0,ec.x$)(),f=null==Z?void 0:Z.servers;return(0,t.useEffect)(()=>{!r&&f&&f.length>0&&j(f[0].name)},[f,r]),(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(p.Z,{elevation:0,sx:{mb:4,p:3,background:e=>"linear-gradient(135deg, ".concat((0,m.Fq)(e.palette.info.main,.1)," 0%, ").concat((0,m.Fq)(e.palette.secondary.main,.1)," 100%)"),borderRadius:2,border:e=>"1px solid ".concat((0,m.Fq)(e.palette.info.main,.2))},children:(0,a.jsxs)(l.Z,{sx:{display:"flex",alignItems:"center",gap:2},children:[(0,a.jsx)(l.Z,{sx:{display:"flex",alignItems:"center",justifyContent:"center",width:56,height:56,borderRadius:2,bgcolor:"info.main",color:"info.contrastText"},children:(0,a.jsx)(y.Z,{sx:{fontSize:32}})}),(0,a.jsxs)(l.Z,{children:[(0,a.jsx)(s.Z,{variant:"h4",component:"h1",fontWeight:"bold",children:"Player Management"}),(0,a.jsx)(s.Z,{variant:"body1",color:"text.secondary",children:"Manage players, whitelist, operators, and bans across your servers"})]})]})}),(0,a.jsx)(l.Z,{sx:{mb:3},children:(0,a.jsxs)(d.Z,{sx:{minWidth:200},children:[(0,a.jsx)(u.Z,{id:"server-select-label",children:"Server"}),(0,a.jsx)(h.Z,{labelId:"server-select-label",value:r,label:"Server",onChange:e=>j(e.target.value),disabled:v,children:null==f?void 0:f.map(e=>(0,a.jsx)(x.Z,{value:e.name,children:e.name},e.name))})]})}),(0,a.jsx)(l.Z,{sx:{borderBottom:1,borderColor:"divider"},children:(0,a.jsxs)(o.Z,{value:e,onChange:(e,r)=>{n(r)},"aria-label":"Player management tabs",children:[(0,a.jsx)(c.Z,{label:"Online Players"}),(0,a.jsx)(c.Z,{label:"Whitelist",disabled:!r}),(0,a.jsx)(c.Z,{label:"Operators",disabled:!r}),(0,a.jsx)(c.Z,{label:"Ban List",disabled:!r})]})}),(0,a.jsx)(ek,{value:e,index:0,children:(0,a.jsx)(en,{})}),(0,a.jsx)(ek,{value:e,index:1,children:r&&(0,a.jsxs)(i.ZP,{container:!0,spacing:3,children:[(0,a.jsx)(i.ZP,{item:!0,xs:12,md:8,children:(0,a.jsx)(ed,{serverName:r})}),(0,a.jsx)(i.ZP,{item:!0,xs:12,md:4,children:(0,a.jsxs)(l.Z,{sx:{p:2,bgcolor:"background.paper",borderRadius:1},children:[(0,a.jsx)(s.Z,{variant:"subtitle2",color:"text.secondary",gutterBottom:!0,children:"About Whitelist"}),(0,a.jsx)(s.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,a.jsx)(ek,{value:e,index:2,children:r&&(0,a.jsxs)(i.ZP,{container:!0,spacing:3,children:[(0,a.jsx)(i.ZP,{item:!0,xs:12,md:8,children:(0,a.jsx)(eC,{serverName:r})}),(0,a.jsx)(i.ZP,{item:!0,xs:12,md:4,children:(0,a.jsxs)(l.Z,{sx:{p:2,bgcolor:"background.paper",borderRadius:1},children:[(0,a.jsx)(s.Z,{variant:"subtitle2",color:"text.secondary",gutterBottom:!0,children:"About Operators"}),(0,a.jsx)(s.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,a.jsxs)(l.Z,{sx:{mt:2},children:[(0,a.jsx)(s.Z,{variant:"caption",color:"text.secondary",component:"div",children:"Level 1: Can bypass spawn protection"}),(0,a.jsx)(s.Z,{variant:"caption",color:"text.secondary",component:"div",children:"Level 2: Can use /clear, /gamemode, etc."}),(0,a.jsx)(s.Z,{variant:"caption",color:"text.secondary",component:"div",children:"Level 3: Can use /ban, /kick, /op, etc."}),(0,a.jsx)(s.Z,{variant:"caption",color:"text.secondary",component:"div",children:"Level 4: Can use /stop, full access"})]})]})})]})}),(0,a.jsx)(ek,{value:e,index:3,children:r&&(0,a.jsxs)(i.ZP,{container:!0,spacing:3,children:[(0,a.jsx)(i.ZP,{item:!0,xs:12,md:8,children:(0,a.jsx)(eS,{serverName:r})}),(0,a.jsx)(i.ZP,{item:!0,xs:12,md:4,children:(0,a.jsxs)(l.Z,{sx:{p:2,bgcolor:"background.paper",borderRadius:1},children:[(0,a.jsx)(s.Z,{variant:"subtitle2",color:"text.secondary",gutterBottom:!0,children:"About Bans"}),(0,a.jsx)(s.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."})]})})]})})]})}}},function(e){e.O(0,[6812,9760,6758,680,1668,7436,1071,540,4416,521,7359,880,7727,8347,1658,5381,4474,7305,2666,3669,2757,1744],function(){return e(e.s=31809)}),_N_E=e.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[148],{61943:function(e,t,i){Promise.resolve().then(i.bind(i,34488))},34488:function(e,t,i){"use strict";i.r(t),i.d(t,{default:function(){return p}});var n=i(94655),r=i(7281),s=i(84840),a=i(31317),x=i(10721),l=i(81071),d=i(628),o=i(41565),c=i(69899),h=i(76492),j=i(29983),u=i(92666),Z=i(11189);function g(e){let{rows:t}=e;return(0,n.jsx)(d.Z,{children:(0,n.jsxs)(o.Z,{children:[(0,n.jsxs)(r.Z,{sx:{display:"flex",alignItems:"center",gap:1,mb:2},children:[(0,n.jsx)(x.Z,{variant:"circular",width:24,height:24}),(0,n.jsx)(x.Z,{variant:"text",width:"50%",height:32})]}),[...Array(t)].map((e,t)=>(0,n.jsxs)(r.Z,{sx:{display:"flex",justifyContent:"space-between",py:.75},children:[(0,n.jsx)(x.Z,{variant:"text",width:"35%"}),(0,n.jsx)(x.Z,{variant:"text",width:"40%"})]},t))]})})}function m(){return(0,n.jsx)(d.Z,{sx:{height:"100%"},children:(0,n.jsxs)(o.Z,{children:[(0,n.jsxs)(r.Z,{sx:{display:"flex",alignItems:"center",gap:1,mb:2},children:[(0,n.jsx)(x.Z,{variant:"circular",width:24,height:24}),(0,n.jsx)(x.Z,{variant:"text",width:"40%",height:32}),(0,n.jsxs)(r.Z,{sx:{ml:"auto",display:"flex",gap:1},children:[(0,n.jsx)(x.Z,{variant:"rounded",width:70,height:24}),(0,n.jsx)(x.Z,{variant:"rounded",width:70,height:24})]})]}),(0,n.jsx)(x.Z,{variant:"text",width:"30%",sx:{mt:3,mb:1}}),[0,1].map(e=>(0,n.jsxs)(r.Z,{sx:{border:1,borderColor:"divider",p:2,"&:not(:last-child)":{borderBottom:0}},children:[(0,n.jsxs)(r.Z,{sx:{display:"flex",alignItems:"center",gap:1,mb:1.5},children:[(0,n.jsx)(x.Z,{variant:"circular",width:10,height:10}),(0,n.jsx)(x.Z,{variant:"text",width:"25%"}),(0,n.jsx)(x.Z,{variant:"text",width:"15%"}),(0,n.jsx)(x.Z,{variant:"text",width:"10%",sx:{ml:"auto"}})]}),[0,1,2].map(e=>(0,n.jsx)(x.Z,{variant:"text",width:"70%",sx:{ml:2.5}},e))]},e))]})})}function p(){let{data:e,isLoading:t,error:i}=(0,u.nv)();return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(c.Z,{elevation:0,sx:{mb:4,p:3,background:e=>"linear-gradient(135deg, ".concat((0,h.Fq)(e.palette.warning.main,.1)," 0%, ").concat((0,h.Fq)(e.palette.info.main,.1)," 100%)"),borderRadius:2,border:e=>"1px solid ".concat((0,h.Fq)(e.palette.warning.main,.2))},children:(0,n.jsxs)(r.Z,{sx:{display:"flex",alignItems:"center",gap:2},children:[(0,n.jsx)(r.Z,{sx:{display:"flex",alignItems:"center",justifyContent:"center",width:56,height:56,borderRadius:2,bgcolor:"warning.main",color:"warning.contrastText"},children:(0,n.jsx)(j.Z,{sx:{fontSize:32}})}),(0,n.jsxs)(r.Z,{children:[(0,n.jsx)(a.Z,{variant:"h4",component:"h1",fontWeight:"bold",children:"Routing"}),(0,n.jsx)(a.Z,{variant:"body1",color:"text.secondary",children:"Server routing and network configuration"})]})]})}),i&&(0,n.jsxs)(l.Z,{severity:"error",sx:{mb:3},children:["Failed to load router status: ",i.message]}),t?(0,n.jsxs)(s.ZP,{container:!0,spacing:3,children:[(0,n.jsx)(s.ZP,{item:!0,xs:12,md:4,children:(0,n.jsxs)(r.Z,{sx:{display:"flex",flexDirection:"column",gap:3},children:[(0,n.jsx)(g,{rows:4}),(0,n.jsx)(g,{rows:4}),(0,n.jsx)(g,{rows:1})]})}),(0,n.jsx)(s.ZP,{item:!0,xs:12,md:8,children:(0,n.jsx)(m,{})})]}):(null==e?void 0:e.router)?(0,n.jsxs)(s.ZP,{container:!0,spacing:3,children:[(0,n.jsx)(s.ZP,{item:!0,xs:12,md:4,children:(0,n.jsxs)(r.Z,{sx:{display:"flex",flexDirection:"column",gap:3},children:[(0,n.jsx)(Z.hI,{router:e.router}),(0,n.jsx)(Z.SB,{router:e.router}),(0,n.jsx)(Z.E4,{avahi:e.avahi})]})}),(0,n.jsx)(s.ZP,{item:!0,xs:12,md:8,children:(0,n.jsx)(Z.Ik,{router:e.router})})]}):null]})}}},function(e){e.O(0,[6812,9760,6758,680,1668,7436,1071,540,4416,521,5511,2542,7359,9654,5381,4668,2666,1189,3669,2757,1744],function(){return e(e.s=61943)}),_N_E=e.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[3767],{32823:function(e,n,r){Promise.resolve().then(r.bind(r,32050))},32050:function(e,n,r){"use strict";r.r(n),r.d(n,{default:function(){return d}});var s=r(94655),i=r(35106),o=r(31358),c=r(7281),l=r(31317),t=r(26138),a=r(41261),h=r(79983),u=r(10117),x=r(73660);function d(e){let{params:n}=e,r=(0,o.x)(),{name:d}=(0,i.use)(n),p=decodeURIComponent(d);return(0,s.jsxs)(c.Z,{sx:{height:"100%",display:"flex",flexDirection:"column"},children:[(0,s.jsxs)(c.Z,{sx:{mb:2},children:[(0,s.jsxs)(c.Z,{sx:{display:"flex",alignItems:"center",gap:1,mb:1},children:[(0,s.jsx)(h.Z,{onClick:()=>r.push("/servers/".concat(d)),size:"small","aria-label":"Back to server",children:(0,s.jsx)(u.Z,{})}),(0,s.jsxs)(t.Z,{"aria-label":"breadcrumb",children:[(0,s.jsx)(a.Z,{component:"button",variant:"body1",onClick:()=>r.push("/servers"),sx:{cursor:"pointer"},underline:"hover",color:"inherit",children:"Servers"}),(0,s.jsx)(a.Z,{component:"button",variant:"body1",onClick:()=>r.push("/servers/".concat(d)),sx:{cursor:"pointer"},underline:"hover",color:"inherit",children:p}),(0,s.jsx)(l.Z,{color:"text.primary",children:"Console"})]})]}),(0,s.jsxs)(l.Z,{variant:"h5",component:"h1",children:[p," Console"]})]}),(0,s.jsx)(c.Z,{sx:{flex:1,minHeight:0},children:(0,s.jsx)(x.K,{serverName:p})})]})}}},function(e){e.O(0,[6812,9760,6758,680,1668,7436,1658,6727,6645,1476,5787,3669,2757,1744],function(){return e(e.s=32823)}),_N_E=e.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[278],{59616:function(e,r,s){Promise.resolve().then(s.bind(s,10607))},10607:function(e,r,s){"use strict";s.r(r),s.d(r,{default:function(){return eV}});var t=s(94655),n=s(35106),i=s(74228),a=s(31358),o=s(7281),l=s(30417),d=s(79983),c=s(81071),x=s(93017),h=s(10721),u=s(628),m=s(41565),p=s(31317),v=s(35694),j=s(7178),g=s(17820),Z=s(73424),f=s(99770),y=s(62508),b=s(5682),C=s(76678),w=s(97436),S=s(84840),k=s(76492),R=s(10117),z=s(5501),I=s(37809),P=s(21111),W=s(17978),F=s(89573),T=s(96292),D=s(33104),M=s(25333),A=s(52082),O=s(69123),B=s(71185),E=s(30165),N=s(97293),U=s(11259),q=s(66615),H=s(89161),L=s(34071),K=s(4405);function G(e){let{value:r,unit:s,label:n,icon:i,progress:a,progressMax:l,color:d="#1bd96a"}=e;return(0,t.jsxs)(u.Z,{"data-testid":"resource-stat-card",sx:{p:2.5,bgcolor:"background.paper",border:"1px solid",borderColor:"divider",borderRadius:3},children:[(0,t.jsxs)(o.Z,{sx:{display:"flex",justifyContent:"space-between",alignItems:"flex-start",gap:2},children:[(0,t.jsxs)(o.Z,{sx:{display:"flex",alignItems:"baseline",gap:.75,flexWrap:"wrap",minWidth:0},children:[(0,t.jsx)(p.Z,{variant:"h4",component:"span",sx:{fontWeight:700,color:"text.primary",fontFamily:"'JetBrains Mono', 'Fira Code', monospace",letterSpacing:"-0.5px"},children:r}),(0,t.jsx)(p.Z,{variant:"body2",component:"span",sx:{color:"text.secondary",fontWeight:500},children:s})]}),(0,t.jsx)(o.Z,{sx:{color:"text.secondary",flexShrink:0},children:i})]}),(0,t.jsx)(p.Z,{variant:"body2",sx:{color:"text.secondary",fontWeight:500,mt:.5},children:n}),(0,t.jsx)(K.Z,{variant:"determinate",value:Math.min(a/l*100,100),sx:{mt:1,height:6,borderRadius:1.5,bgcolor:"#2a2d3a","& .MuiLinearProgress-bar":{borderRadius:1.5,background:"linear-gradient(90deg, ".concat(d," 0%, ").concat(d,"cc 100%)")}}})]})}var V=s(163),_=s(73660),J=s(90158),Q=s(58347),$=s(95511),Y=s(46725),X=s(26577),ee=s(56813),er=s(26892),es=s(84509);function et(e){var r;let{serverName:s}=e,{data:n,isLoading:i,error:a}=(0,es.HZ)(s,{limit:20});if(i)return(0,t.jsx)(o.Z,{children:[void 0,void 0,void 0,void 0,void 0].map((e,r)=>(0,t.jsxs)(o.Z,{sx:{display:"flex",gap:2,py:1.5},children:[(0,t.jsx)(h.Z,{variant:"rounded",width:60,height:24}),(0,t.jsx)(h.Z,{variant:"text",width:"60%"}),(0,t.jsx)(h.Z,{variant:"text",width:50})]},r))});if(a)return(0,t.jsxs)(c.Z,{severity:"error",children:["Failed to load activity: ",a.message]});let d=null!==(r=null==n?void 0:n.logs)&&void 0!==r?r:[];if(0===d.length)return(0,t.jsx)(p.Z,{variant:"body2",color:"text.secondary",sx:{py:4,textAlign:"center"},children:"No activity recorded for this server yet."});let x="/audit-logs?targetType=server&targetName=".concat(encodeURIComponent(s));return(0,t.jsxs)(o.Z,{children:[(0,t.jsx)(J.Z,{sx:{py:0},children:d.map(e=>{var r;return(0,t.jsx)(Q.ZP,{sx:{px:0,py:1.5,"&:not(:last-child)":{borderBottom:"1px solid",borderColor:"divider"}},children:(0,t.jsx)(Z.Z,{primary:(0,t.jsxs)(o.Z,{sx:{display:"flex",alignItems:"center",gap:1},children:[(0,t.jsx)(ee.I,{action:e.action,size:"small"}),(0,t.jsxs)(p.Z,{variant:"body2",color:"text.secondary",children:["by ",e.actor.replace("api:","").replace("cli:","")]}),(0,t.jsx)(er.c,{status:e.status,size:"small"})]}),secondary:(0,t.jsx)($.Z,{title:(r=e.timestamp,new Intl.DateTimeFormat(void 0,{year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit",timeZoneName:"short"}).format(new Date(r))),arrow:!0,children:(0,t.jsx)(p.Z,{variant:"caption",component:"span",color:"text.disabled",children:function(e){let r=new Date,s=new Date(e),t=Math.floor((r.getTime()-s.getTime())/6e4),n=Math.floor(t/60);return t<1?"just now":t<60?"".concat(t,"m ago"):n<24?"".concat(n,"h ago"):"".concat(Math.floor(n/24),"d ago")}(e.timestamp)})})})},e.id)})}),(0,t.jsx)(o.Z,{sx:{mt:2,textAlign:"center"},children:(0,t.jsx)(l.Z,{component:Y.default,href:x,size:"small",endIcon:(0,t.jsx)(X.Z,{}),sx:{textTransform:"none"},children:"View Full History"})})]})}var en=s(62328),ei=s(29793),ea=s(75726),eo=s(40064),el=s(38393),ed=s(37530),ec=s(5942),ex=s(84420),eh=s(46121),eu=s(84775),em=s(92666),ep=s(70115),ev=s(70603),ej=s(32366),eg=s(25523);function eZ(e){let{serverName:r}=e,{data:s,isLoading:i}=(0,em.Js)(r),a=(0,em.Bx)(),[h,v]=(0,n.useState)([]),[j,g]=(0,n.useState)(!1),[Z,f]=(0,n.useState)(!1),[y,b]=(0,n.useState)(""),[C,S]=(0,n.useState)(""),[k,R]=(0,n.useState)(!1),[z,I]=(0,n.useState)({open:!1,message:"",severity:"success"});(0,n.useEffect)(()=>{(null==s?void 0:s.customHostnames)&&(v(s.customHostnames),g(!1),R(!1))},[s]);let W=e=>{let r=e.trim().toLowerCase();return r?r.length>253?"Domain exceeds 253 characters":/^[a-z0-9]([a-z0-9\-.]*[a-z0-9])?$/.test(r)?r.endsWith(".local")?"Cannot use .local system domain":r.endsWith(".nip.io")?"Cannot use .nip.io system domain":h.includes(r)?"Domain already exists":"":"Invalid domain format":"Domain cannot be empty"},F=()=>{let e=y.trim().toLowerCase(),r=W(e);if(r){S(r);return}v(r=>[...r,e]),b(""),S(""),f(!1),g(!0)},T=e=>{v(r=>r.filter(r=>r!==e)),g(!0)},D=async()=>{try{await a.mutateAsync({serverName:r,customHostnames:h}),g(!1),R(!0),I({open:!0,message:"Hostnames saved. Container recreation required to apply changes.",severity:"warning"})}catch(e){I({open:!0,message:e instanceof Error?e.message:"Failed to save hostnames",severity:"error"})}},A=()=>{f(!1),b(""),S("")};return i?(0,t.jsx)(u.Z,{sx:{mb:3,borderRadius:3},children:(0,t.jsx)(m.Z,{children:(0,t.jsx)(o.Z,{sx:{display:"flex",justifyContent:"center",py:4},children:(0,t.jsx)(x.Z,{size:24})})})}):(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(u.Z,{sx:{mb:3,borderRadius:3},children:(0,t.jsxs)(m.Z,{children:[(0,t.jsxs)(o.Z,{sx:{display:"flex",alignItems:"center",gap:1,mb:1},children:[(0,t.jsx)(eg.Z,{color:"primary"}),(0,t.jsx)(p.Z,{variant:"h6",fontWeight:600,children:"Hostnames / Domains"})]}),(0,t.jsx)(p.Z,{variant:"body2",color:"text.secondary",sx:{mb:2},children:"Manage hostnames used by mc-router to route connections to this server."}),(0,t.jsx)(O.Z,{sx:{mb:3}}),(null==s?void 0:s.systemHostnames)&&s.systemHostnames.length>0&&(0,t.jsxs)(o.Z,{sx:{mb:3},children:[(0,t.jsx)(p.Z,{variant:"subtitle2",color:"text.secondary",sx:{mb:1},children:"System Hostnames (read-only)"}),(0,t.jsx)(ep.Z,{direction:"row",flexWrap:"wrap",gap:1,children:s.systemHostnames.map(e=>(0,t.jsx)(M.Z,{icon:(0,t.jsx)(ev.Z,{sx:{fontSize:16}}),label:e.hostname,title:e.description,variant:"outlined",color:"default",size:"small"},e.hostname))})]}),(0,t.jsxs)(o.Z,{sx:{mb:2},children:[(0,t.jsx)(p.Z,{variant:"subtitle2",color:"text.secondary",sx:{mb:1},children:"Custom Domains"}),0===h.length&&!Z&&(0,t.jsx)(p.Z,{variant:"body2",color:"text.disabled",sx:{mb:1},children:"No custom domains configured."}),(0,t.jsx)(ep.Z,{spacing:1,children:h.map(e=>(0,t.jsxs)(o.Z,{sx:{display:"flex",alignItems:"center",justifyContent:"space-between",py:.5,px:1.5,borderRadius:1,bgcolor:"action.hover"},children:[(0,t.jsx)(p.Z,{variant:"body2",fontFamily:"monospace",children:e}),(0,t.jsx)(d.Z,{size:"small",color:"error",onClick:()=>T(e),title:"Remove domain",children:(0,t.jsx)(P.Z,{fontSize:"small"})})]},e))}),Z?(0,t.jsxs)(o.Z,{sx:{display:"flex",alignItems:"flex-start",gap:1,mt:1},children:[(0,t.jsx)(w.Z,{size:"small",placeholder:"e.g. play.example.com",value:y,onChange:e=>{b(e.target.value),S("")},onKeyDown:e=>{"Enter"===e.key&&F(),"Escape"===e.key&&A()},error:!!C,helperText:C,autoFocus:!0,sx:{flex:1}}),(0,t.jsx)(l.Z,{size:"small",variant:"contained",onClick:F,children:"Add"}),(0,t.jsx)(d.Z,{size:"small",onClick:A,children:(0,t.jsx)(B.Z,{fontSize:"small"})})]}):(0,t.jsx)(l.Z,{size:"small",startIcon:(0,t.jsx)(ej.Z,{}),onClick:()=>f(!0),sx:{mt:1},children:"Add Domain"})]}),k&&(0,t.jsxs)(c.Z,{severity:"warning",sx:{mb:2},children:["Container recreation is required for hostname changes to take effect. Run ",(0,t.jsx)("code",{children:"docker compose up -d"})," or restart the server from the dashboard."]}),(0,t.jsx)(o.Z,{sx:{display:"flex",justifyContent:"flex-end"},children:(0,t.jsx)(l.Z,{variant:"contained",size:"small",startIcon:(0,t.jsx)(ec.Z,{}),onClick:D,disabled:!j||a.isPending,children:a.isPending?"Saving...":"Save Hostnames"})})]})}),(0,t.jsx)(ed.Z,{open:z.open,autoHideDuration:6e3,onClose:()=>I({...z,open:!1}),anchorOrigin:{vertical:"bottom",horizontal:"right"},children:(0,t.jsx)(c.Z,{onClose:()=>I({...z,open:!1}),severity:z.severity,sx:{width:"100%"},children:z.message})})]})}function ef(e){var r,s;let{serverName:i,isRunning:a}=e,{data:d,isLoading:h}=(0,em.iC)(i),v=(0,em.MH)(),g=(0,em.gx)(),[Z,k]=(0,n.useState)({}),[R,z]=(0,n.useState)(!1),[I,P]=(0,n.useState)(!1),[W,F]=(0,n.useState)(!1),[T,D]=(0,n.useState)(""),[M,A]=(0,n.useState)({open:!1,message:"",severity:"info"});(0,n.useEffect)(()=>{(null==d?void 0:d.config)&&k(d.config)},[d]);let B=(e,r)=>{k(s=>({...s,[e]:r})),z(!0),("memory"===e||"useAikarFlags"===e)&&P(!0)},E=async()=>{try{let e=await v.mutateAsync({serverName:i,config:Z});A({open:!0,message:e.restartRequired?"Settings saved. Restart required for some changes to take effect.":"Settings saved successfully.",severity:e.restartRequired?"warning":"success"}),z(!1),P(!1)}catch(e){A({open:!0,message:e instanceof Error?e.message:"Failed to save settings",severity:"error"})}},N=async()=>{if("RESET"!==T){A({open:!0,message:"Please type RESET to confirm",severity:"warning"});return}try{await g.mutateAsync(i),A({open:!0,message:"World reset successfully",severity:"success"}),F(!1),D("")}catch(e){A({open:!0,message:e instanceof Error?e.message:"Failed to reset world",severity:"error"})}};return h?(0,t.jsx)(o.Z,{sx:{display:"flex",justifyContent:"center",py:8},children:(0,t.jsx)(x.Z,{})}):(0,t.jsxs)(o.Z,{children:[(0,t.jsx)(eZ,{serverName:i}),I&&(0,t.jsx)(c.Z,{severity:"warning",icon:(0,t.jsx)(ex.Z,{}),sx:{mb:3},children:"Performance settings require a server restart to take effect."}),(0,t.jsx)(u.Z,{sx:{mb:3,borderRadius:3},children:(0,t.jsxs)(m.Z,{children:[(0,t.jsx)(p.Z,{variant:"h6",gutterBottom:!0,fontWeight:600,children:"Server Properties"}),(0,t.jsx)(p.Z,{variant:"body2",color:"text.secondary",sx:{mb:2},children:"These settings can be changed without restarting the server."}),(0,t.jsx)(O.Z,{sx:{mb:3}}),(0,t.jsxs)(S.ZP,{container:!0,spacing:3,children:[(0,t.jsx)(S.ZP,{item:!0,xs:12,children:(0,t.jsx)(w.Z,{fullWidth:!0,label:"MOTD (Message of the Day)",value:Z.motd||"",onChange:e=>B("motd",e.target.value),helperText:"The message displayed in the server list"})}),(0,t.jsx)(S.ZP,{item:!0,xs:12,sm:6,children:(0,t.jsx)(w.Z,{fullWidth:!0,type:"number",label:"Max Players",value:Z.maxPlayers||20,onChange:e=>B("maxPlayers",parseInt(e.target.value,10)),inputProps:{min:1,max:100}})}),(0,t.jsx)(S.ZP,{item:!0,xs:12,sm:6,children:(0,t.jsxs)(ei.Z,{fullWidth:!0,children:[(0,t.jsx)(ea.Z,{children:"Difficulty"}),(0,t.jsxs)(en.Z,{value:Z.difficulty||"normal",label:"Difficulty",onChange:e=>B("difficulty",e.target.value),children:[(0,t.jsx)(j.Z,{value:"peaceful",children:"Peaceful"}),(0,t.jsx)(j.Z,{value:"easy",children:"Easy"}),(0,t.jsx)(j.Z,{value:"normal",children:"Normal"}),(0,t.jsx)(j.Z,{value:"hard",children:"Hard"})]})]})}),(0,t.jsx)(S.ZP,{item:!0,xs:12,sm:6,children:(0,t.jsxs)(ei.Z,{fullWidth:!0,children:[(0,t.jsx)(ea.Z,{children:"Game Mode"}),(0,t.jsxs)(en.Z,{value:Z.gameMode||"survival",label:"Game Mode",onChange:e=>B("gameMode",e.target.value),children:[(0,t.jsx)(j.Z,{value:"survival",children:"Survival"}),(0,t.jsx)(j.Z,{value:"creative",children:"Creative"}),(0,t.jsx)(j.Z,{value:"adventure",children:"Adventure"}),(0,t.jsx)(j.Z,{value:"spectator",children:"Spectator"})]})]})}),(0,t.jsx)(S.ZP,{item:!0,xs:12,sm:6,children:(0,t.jsx)(eo.Z,{control:(0,t.jsx)(el.Z,{checked:null===(r=Z.pvp)||void 0===r||r,onChange:e=>B("pvp",e.target.checked)}),label:"Enable PvP"})}),(0,t.jsx)(S.ZP,{item:!0,xs:12,sm:6,children:(0,t.jsx)(w.Z,{fullWidth:!0,type:"number",label:"View Distance (chunks)",value:Z.viewDistance||10,onChange:e=>B("viewDistance",parseInt(e.target.value,10)),inputProps:{min:3,max:32}})}),(0,t.jsx)(S.ZP,{item:!0,xs:12,sm:6,children:(0,t.jsx)(w.Z,{fullWidth:!0,type:"number",label:"Spawn Protection (blocks)",value:Z.spawnProtection||16,onChange:e=>B("spawnProtection",parseInt(e.target.value,10)),inputProps:{min:0,max:128}})})]})]})}),(0,t.jsx)(u.Z,{sx:{mb:3,borderRadius:3},children:(0,t.jsxs)(m.Z,{children:[(0,t.jsx)(p.Z,{variant:"h6",gutterBottom:!0,fontWeight:600,children:"Performance Settings"}),(0,t.jsx)(p.Z,{variant:"body2",color:"text.secondary",sx:{mb:2},children:"These settings require a server restart to take effect."}),(0,t.jsx)(O.Z,{sx:{mb:3}}),(0,t.jsxs)(S.ZP,{container:!0,spacing:3,children:[(0,t.jsx)(S.ZP,{item:!0,xs:12,sm:6,children:(0,t.jsx)(w.Z,{fullWidth:!0,label:"Memory Allocation",value:Z.memory||"4G",onChange:e=>B("memory",e.target.value),helperText:"Format: 4G, 8G, etc."})}),(0,t.jsx)(S.ZP,{item:!0,xs:12,sm:6,children:(0,t.jsx)(eo.Z,{control:(0,t.jsx)(el.Z,{checked:null!==(s=Z.useAikarFlags)&&void 0!==s&&s,onChange:e=>B("useAikarFlags",e.target.checked)}),label:"Use Aikar's Flags (Optimized GC)"})})]})]})}),(0,t.jsx)(o.Z,{sx:{display:"flex",justifyContent:"flex-end",mb:3},children:(0,t.jsx)(l.Z,{variant:"contained",size:"large",startIcon:(0,t.jsx)(ec.Z,{}),onClick:E,disabled:!R||v.isPending,sx:{px:4},children:v.isPending?"Saving...":"Save Changes"})}),(0,t.jsx)(u.Z,{sx:{borderRadius:3,borderColor:"error.main",borderWidth:1,borderStyle:"solid"},children:(0,t.jsxs)(m.Z,{children:[(0,t.jsx)(p.Z,{variant:"h6",gutterBottom:!0,fontWeight:600,color:"error",children:"Danger Zone"}),(0,t.jsx)(O.Z,{sx:{mb:3}}),(0,t.jsxs)(o.Z,{sx:{mb:3},children:[(0,t.jsx)(p.Z,{variant:"subtitle1",fontWeight:600,gutterBottom:!0,children:"Reset World"}),(0,t.jsx)(p.Z,{variant:"body2",color:"text.secondary",sx:{mb:2},children:"This will permanently delete the current world and generate a new one. This action cannot be undone."}),(0,t.jsx)(l.Z,{variant:"outlined",color:"error",startIcon:(0,t.jsx)(eu.Z,{}),onClick:()=>F(!0),disabled:a,children:"Reset World"}),a&&(0,t.jsx)(p.Z,{variant:"caption",color:"text.secondary",sx:{ml:2},children:"Stop the server first"})]})]})}),(0,t.jsxs)(f.Z,{open:W,onClose:()=>F(!1),maxWidth:"sm",fullWidth:!0,children:[(0,t.jsx)(y.Z,{children:(0,t.jsxs)(o.Z,{sx:{display:"flex",alignItems:"center",gap:1},children:[(0,t.jsx)(ex.Z,{color:"error"}),(0,t.jsx)(p.Z,{variant:"h6",fontWeight:600,children:"Reset World"})]})}),(0,t.jsxs)(b.Z,{children:[(0,t.jsxs)(p.Z,{variant:"body1",gutterBottom:!0,children:["This will permanently delete the world for ",(0,t.jsx)("strong",{children:i})," and generate a new one."]}),(0,t.jsx)(p.Z,{variant:"body2",color:"text.secondary",gutterBottom:!0,children:"This action cannot be undone. All player progress and builds will be lost."}),(0,t.jsx)(w.Z,{fullWidth:!0,label:"Type RESET to confirm",value:T,onChange:e=>D(e.target.value),sx:{mt:3},autoFocus:!0})]}),(0,t.jsxs)(C.Z,{children:[(0,t.jsx)(l.Z,{onClick:()=>F(!1),children:"Cancel"}),(0,t.jsx)(l.Z,{variant:"contained",color:"error",onClick:N,disabled:"RESET"!==T||g.isPending,startIcon:g.isPending?(0,t.jsx)(x.Z,{size:16}):(0,t.jsx)(eh.Z,{}),children:g.isPending?"Resetting...":"Reset World"})]})]}),(0,t.jsx)(ed.Z,{open:M.open,autoHideDuration:6e3,onClose:()=>A({...M,open:!1}),anchorOrigin:{vertical:"bottom",horizontal:"right"},children:(0,t.jsx)(c.Z,{onClose:()=>A({...M,open:!1}),severity:M.severity,sx:{width:"100%"},children:M.message})})]})}var ey=s(86702),eb=s(47606),eC=s(407),ew=s(56056),eS=s(28058),ek=s(11597),eR=s(59602);let ez={admin:{label:"Owner",color:"primary",variant:"filled"},manage:{label:"Operator",color:"info",variant:"outlined"},view:{label:"Viewer",color:"default",variant:"outlined"}};function eI(e){let{permission:r,size:s="medium"}=e,n=ez[r];return(0,t.jsx)(M.Z,{label:n.label,color:n.color,variant:n.variant,size:s})}var eP=s(99046),eW=s(68038),eF=s(34080),eT=s(39181),eD=s(5632),eM=s(58919),eA=s(20367),eO=s(42936);function eB(e){var r,s;let{open:i,onClose:a,serverId:d}=e,[h,u]=(0,n.useState)(""),[m,v]=(0,n.useState)(null),[j,g]=(0,n.useState)("view"),{data:Z,isLoading:S}=(s={enabled:i},(0,eD.a)({queryKey:["users","search",h],queryFn:()=>(0,eO.SC)("/api/users?q=".concat(encodeURIComponent(h))),enabled:(null==s?void 0:s.enabled)!==!1&&h.length>=2,staleTime:3e4})),k=function(){let e=(0,eM.NL)();return(0,eA.D)({mutationFn:e=>(0,eO.SC)("/api/user-servers",{method:"POST",body:JSON.stringify(e)}),onSuccess:(r,s)=>{e.invalidateQueries({queryKey:["user-servers",s.serverId]}),e.invalidateQueries({queryKey:["user-servers"]})}})}(),R=(0,n.useMemo)(()=>{var e;return null!==(e=null==Z?void 0:Z.users)&&void 0!==e?e:[]},[Z]),z=()=>{u(""),v(null),g("view"),k.reset(),a()};return(0,t.jsxs)(f.Z,{open:i,onClose:z,maxWidth:"sm",fullWidth:!0,PaperProps:{sx:{borderRadius:3}},children:[(0,t.jsx)(y.Z,{sx:{fontWeight:600},children:"Add User Access"}),(0,t.jsxs)(b.Z,{sx:{display:"flex",flexDirection:"column",gap:3,pt:"8px !important"},children:[k.isError&&(0,t.jsx)(c.Z,{severity:"error",sx:{mb:1},children:(null===(r=k.error)||void 0===r?void 0:r.message)||"Failed to grant access"}),(0,t.jsx)(eP.Z,{options:R,getOptionLabel:e=>e.name||e.email,isOptionEqualToValue:(e,r)=>e.id===r.id,value:m,onChange:(e,r)=>v(r),inputValue:h,onInputChange:(e,r)=>u(r),loading:S,filterOptions:e=>e,noOptionsText:h.length<2?"Type at least 2 characters":"No users found",renderInput:e=>(0,t.jsx)(w.Z,{...e,label:"Search User",placeholder:"Search by name or email...",InputProps:{...e.InputProps,endAdornment:(0,t.jsxs)(t.Fragment,{children:[S&&(0,t.jsx)(x.Z,{size:20}),e.InputProps.endAdornment]})}}),renderOption:(e,r)=>{var s,n,i;let{key:a,...l}=e;return(0,t.jsxs)(o.Z,{component:"li",...l,sx:{display:"flex",gap:1.5,py:1},children:[(0,t.jsx)(ey.Z,{src:null!==(i=r.image)&&void 0!==i?i:void 0,sx:{width:32,height:32,bgcolor:"primary.main",fontSize:14},children:((null===(s=r.name)||void 0===s?void 0:s[0])||(null===(n=r.email)||void 0===n?void 0:n[0])||"?").toUpperCase()}),(0,t.jsxs)(o.Z,{children:[(0,t.jsx)(p.Z,{variant:"body2",fontWeight:500,children:r.name||"Unknown"}),(0,t.jsx)(p.Z,{variant:"caption",color:"text.secondary",children:r.email})]})]},a)}}),(0,t.jsxs)(ei.Z,{children:[(0,t.jsx)(eW.Z,{sx:{fontWeight:500,mb:1},children:"Permission Level"}),(0,t.jsxs)(eF.Z,{value:j,onChange:e=>g(e.target.value),children:[(0,t.jsx)(eo.Z,{value:"view",control:(0,t.jsx)(eT.Z,{size:"small"}),label:(0,t.jsxs)(o.Z,{children:[(0,t.jsx)(p.Z,{variant:"body2",fontWeight:500,children:"Viewer"}),(0,t.jsx)(p.Z,{variant:"caption",color:"text.secondary",children:"Can view server status and logs"})]})}),(0,t.jsx)(eo.Z,{value:"manage",control:(0,t.jsx)(eT.Z,{size:"small"}),label:(0,t.jsxs)(o.Z,{children:[(0,t.jsx)(p.Z,{variant:"body2",fontWeight:500,children:"Operator"}),(0,t.jsx)(p.Z,{variant:"caption",color:"text.secondary",children:"Can start, stop, and configure the server"})]})}),(0,t.jsx)(eo.Z,{value:"admin",control:(0,t.jsx)(eT.Z,{size:"small"}),label:(0,t.jsxs)(o.Z,{children:[(0,t.jsx)(p.Z,{variant:"body2",fontWeight:500,children:"Owner"}),(0,t.jsx)(p.Z,{variant:"caption",color:"text.secondary",children:"Full control including managing other users"})]})})]})]})]}),(0,t.jsxs)(C.Z,{sx:{px:3,pb:2},children:[(0,t.jsx)(l.Z,{onClick:z,color:"inherit",children:"Cancel"}),(0,t.jsx)(l.Z,{onClick:()=>{m&&k.mutate({userId:m.id,serverId:d,permission:j},{onSuccess:z})},variant:"contained",disabled:!m||k.isPending,sx:{borderRadius:2},children:k.isPending?"Adding...":"Add User"})]})]})}function eE(e){var r,s;let{serverId:i}=e,{data:a,isLoading:x,error:f}=(0,eD.a)({queryKey:["user-servers",i],queryFn:()=>(0,eO.SC)("/api/user-servers?serverId=".concat(encodeURIComponent(i))),enabled:!!i}),y=function(){let e=(0,eM.NL)();return(0,eA.D)({mutationFn:e=>{let{id:r,permission:s}=e;return(0,eO.SC)("/api/user-servers/".concat(encodeURIComponent(r)),{method:"PATCH",body:JSON.stringify({permission:s})})},onSuccess:()=>{e.invalidateQueries({queryKey:["user-servers"]})}})}(),b=function(){let e=(0,eM.NL)();return(0,eA.D)({mutationFn:e=>(0,eO.SC)("/api/user-servers/".concat(encodeURIComponent(e)),{method:"DELETE"}),onSuccess:()=>{e.invalidateQueries({queryKey:["user-servers"]})}})}(),[C,w]=(0,n.useState)(!1),[S,k]=(0,n.useState)(null),[R,z]=(0,n.useState)(null),P=(e,r)=>{k(e.currentTarget),z(r)},W=()=>{k(null),z(null)},F=e=>{if(!R||R.permission===e){W();return}y.mutate({id:R.id,permission:e},{onSettled:W})},T=null!==(r=null==a?void 0:a.users.filter(e=>"admin"===e.permission).length)&&void 0!==r?r:0,D=(null==R?void 0:R.permission)==="admin"&&T<=1;if(x)return(0,t.jsx)(u.Z,{sx:{borderRadius:3},children:(0,t.jsxs)(m.Z,{children:[(0,t.jsxs)(o.Z,{sx:{display:"flex",justifyContent:"space-between",alignItems:"center",mb:2},children:[(0,t.jsx)(h.Z,{variant:"text",width:"30%",height:32}),(0,t.jsx)(h.Z,{variant:"rounded",width:120,height:36,sx:{borderRadius:2}})]}),(0,t.jsx)(O.Z,{sx:{mb:2}}),[0,1,2].map(e=>(0,t.jsxs)(o.Z,{sx:{display:"flex",alignItems:"center",gap:2,py:1.5,borderBottom:"1px solid",borderColor:"divider"},children:[(0,t.jsx)(h.Z,{variant:"circular",width:40,height:40}),(0,t.jsxs)(o.Z,{sx:{flex:1},children:[(0,t.jsx)(h.Z,{variant:"text",width:"40%"}),(0,t.jsx)(h.Z,{variant:"text",width:"60%"})]}),(0,t.jsx)(h.Z,{variant:"rounded",width:80,height:28,sx:{borderRadius:10}}),(0,t.jsx)(h.Z,{variant:"circular",width:32,height:32})]},e))]})});if(f)return(0,t.jsxs)(c.Z,{severity:"error",children:["Failed to load access list: ",f.message]});let M=null!==(s=null==a?void 0:a.users)&&void 0!==s?s:[];return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(u.Z,{sx:{borderRadius:3},children:(0,t.jsxs)(m.Z,{children:[(0,t.jsxs)(o.Z,{sx:{display:"flex",justifyContent:"space-between",alignItems:"center",mb:2},children:[(0,t.jsx)(p.Z,{variant:"h6",fontWeight:600,children:"Server Access"}),(0,t.jsx)(l.Z,{variant:"contained",size:"small",startIcon:(0,t.jsx)(eb.Z,{}),onClick:()=>w(!0),sx:{borderRadius:2},children:"Add User"})]}),(0,t.jsx)(O.Z,{sx:{mb:1}}),0===M.length?(0,t.jsx)(o.Z,{sx:{py:4,textAlign:"center"},children:(0,t.jsx)(p.Z,{variant:"body2",color:"text.secondary",children:"No users have been granted access to this server yet."})}):M.map(e=>{var r,s,n,i,a,l,c,x;return(0,t.jsxs)(o.Z,{sx:{display:"flex",alignItems:"center",gap:2,py:1.5,"&:not(:last-child)":{borderBottom:"1px solid",borderColor:"divider"}},children:[(0,t.jsx)(ey.Z,{src:null!==(x=null===(r=e.user)||void 0===r?void 0:r.image)&&void 0!==x?x:void 0,sx:{width:40,height:40,bgcolor:"primary.main",fontSize:16},children:((null===(n=e.user)||void 0===n?void 0:null===(s=n.name)||void 0===s?void 0:s[0])||(null===(a=e.user)||void 0===a?void 0:null===(i=a.email)||void 0===i?void 0:i[0])||"?").toUpperCase()}),(0,t.jsxs)(o.Z,{sx:{flex:1,minWidth:0},children:[(0,t.jsx)(p.Z,{variant:"body2",fontWeight:500,noWrap:!0,children:(null===(l=e.user)||void 0===l?void 0:l.name)||"Unknown User"}),(0,t.jsx)(p.Z,{variant:"caption",color:"text.secondary",noWrap:!0,children:(null===(c=e.user)||void 0===c?void 0:c.email)||e.userId})]}),(0,t.jsx)(eI,{permission:e.permission,size:"small"}),(0,t.jsx)(d.Z,{size:"small",onClick:r=>P(r,e),sx:{color:"text.secondary"},children:(0,t.jsx)(I.Z,{fontSize:"small"})})]},e.id)}),(0,t.jsxs)(o.Z,{sx:{display:"flex",alignItems:"center",gap:1,mt:2,pt:1},children:[(0,t.jsx)(eR.Z,{sx:{fontSize:16,color:"text.disabled"}}),(0,t.jsx)(p.Z,{variant:"caption",color:"text.disabled",children:"Only platform admins and server owners can manage access."})]})]})}),(0,t.jsxs)(v.Z,{anchorEl:S,open:!!S,onClose:W,anchorOrigin:{vertical:"bottom",horizontal:"right"},transformOrigin:{vertical:"top",horizontal:"right"},disableScrollLock:!0,children:[(0,t.jsxs)(j.Z,{onClick:()=>F("admin"),disabled:(null==R?void 0:R.permission)==="admin",children:[(0,t.jsx)(g.Z,{children:(0,t.jsx)(eC.Z,{fontSize:"small"})}),(0,t.jsx)(Z.Z,{children:"Change to Owner"})]}),(0,t.jsxs)(j.Z,{onClick:()=>F("manage"),disabled:(null==R?void 0:R.permission)==="manage"||D,children:[(0,t.jsx)(g.Z,{children:(0,t.jsx)(ew.Z,{fontSize:"small"})}),(0,t.jsx)(Z.Z,{children:"Change to Operator"})]}),(0,t.jsxs)(j.Z,{onClick:()=>F("view"),disabled:(null==R?void 0:R.permission)==="view"||D,children:[(0,t.jsx)(g.Z,{children:(0,t.jsx)(eS.Z,{fontSize:"small"})}),(0,t.jsx)(Z.Z,{children:"Change to Viewer"})]}),(0,t.jsx)(O.Z,{}),(0,t.jsxs)(j.Z,{onClick:()=>{R&&b.mutate(R.id,{onSettled:W})},disabled:D,sx:{color:"error.main"},children:[(0,t.jsx)(g.Z,{children:(0,t.jsx)(ek.Z,{fontSize:"small",sx:{color:"error.main"}})}),(0,t.jsx)(Z.Z,{children:"Remove Access"})]})]}),(0,t.jsx)(eB,{open:C,onClose:()=>w(!1),serverId:i})]})}let eN=["Overview","Activity","Content","Files","Backups","Access","Options"];function eU(e){return e.replace(/\x1b\[\?[\d;]*[a-zA-Z]/g,"").replace(/\x1b\[[0-9;]*[a-zA-Z]/g,"").replace(/\x1b=/g,"").replace(/\[\?[\d;]*[a-zA-Z]/g,"").replace(/\[[0-9;]*[a-zA-Z]/g,"").replace(/\[m/g,"").replace(/>\.\.\.\.\r?/g,"").replace(/\r/g,"").trim()}function eq(e){var r,s,i,a,c;let{server:x,onSendCommand:h}=e,[v,j]=(0,n.useState)("Overview"),[g,Z]=(0,n.useState)(""),[y,C]=(0,n.useState)(!0),[R,z]=(0,n.useState)(!1),I=(0,n.useRef)(null),{logs:P,isConnected:W}=(0,V.Y)({serverName:x.name}),F=(0,n.useMemo)(()=>P.filter(e=>!e.includes("RCON Listener")&&!e.includes("RCON Client")&&!e.includes("RconClient")),[P]);(0,n.useEffect)(()=>{I.current&&y&&(I.current.scrollTop=I.current.scrollHeight)},[F,y]);let T=async()=>{g.trim()&&h&&(await h(g.trim()),Z(""))},D=null!==(a=null===(r=x.stats)||void 0===r?void 0:r.cpuPercent)&&void 0!==a?a:0;(null===(s=x.stats)||void 0===s?void 0:s.memoryUsage)&&x.stats.memoryUsage,function(e){if(!e)return;let r=e.match(/^(\d+)\s*(M|G)?$/i);if(r)parseInt(r[1],10),(r[2]||"M").toUpperCase()}(x.memory);let K=null!==(c=null===(i=x.stats)||void 0===i?void 0:i.memoryPercent)&&void 0!==c?c:0;return(0,t.jsxs)(o.Z,{children:[(0,t.jsx)(o.Z,{sx:{display:"flex",gap:.5,mb:3},children:eN.map(e=>(0,t.jsx)(l.Z,{onClick:()=>j(e),sx:{px:2,py:1,borderRadius:5,fontSize:14,fontWeight:500,textTransform:"none",bgcolor:v===e?"primary.main":"transparent",color:v===e?"#0a0e14":"text.secondary","&:hover":{bgcolor:v===e?"primary.main":(0,k.Fq)("#1bd96a",.1)}},children:e},e))}),(0,t.jsxs)(o.Z,{sx:{display:"grid",gridTemplateColumns:{xs:"1fr",sm:"repeat(3, 1fr)"},gap:2,mb:2.5},children:[(0,t.jsx)(G,{value:"".concat(D.toFixed(2),"%"),unit:"/ 100%",label:"CPU usage",icon:(0,t.jsx)(E.Z,{sx:{fontSize:28}}),progress:D,progressMax:100,color:"#1bd96a"}),(0,t.jsx)(G,{value:"".concat(K.toFixed(2),"%"),unit:"/ 100%",label:"Memory usage",icon:(0,t.jsx)(N.Z,{sx:{fontSize:28}}),progress:K,progressMax:100,color:"#1bd96a"}),(0,t.jsx)(G,{value:x.worldSize||"0 B",unit:"/ 10 GB",label:"World size",icon:(0,t.jsx)(U.Z,{sx:{fontSize:28}}),progress:function(e){if(!e)return 0;let r=e.match(/^([\d.]+)\s*(B|KB|MB|MiB|GB|GiB)?$/i);if(!r)return 0;let s=parseFloat(r[1]);switch((r[2]||"B").toUpperCase()){case"GB":case"GIB":return 1024*s;case"MB":case"MIB":return s;case"KB":return s/1024;default:return s/1048576}}(x.worldSize),progressMax:10240,color:"#1bd96a"})]}),(0,t.jsxs)(u.Z,{sx:{bgcolor:"background.paper",borderRadius:3,border:"1px solid",borderColor:"divider",overflow:"hidden"},children:[(0,t.jsxs)(o.Z,{sx:{px:3,py:2,borderBottom:"1px solid",borderColor:"divider",display:"flex",alignItems:"center",gap:1.25},children:[(0,t.jsx)(p.Z,{variant:"h6",sx:{fontWeight:700,color:"text.primary"},children:"Console"}),(0,t.jsx)(o.Z,{sx:{width:10,height:10,borderRadius:"50%",bgcolor:W?"primary.main":"error.main",boxShadow:W?"0 0 8px rgba(27, 217, 106, 0.4)":"0 0 8px rgba(239, 68, 68, 0.4)"}})]}),(0,t.jsxs)(o.Z,{sx:{position:"relative"},children:[(0,t.jsx)(o.Z,{ref:I,onScroll:()=>{if(!I.current)return;let{scrollTop:e,scrollHeight:r,clientHeight:s}=I.current;C(r-e-s<30)},sx:{height:360,overflowY:"auto",px:2.5,py:2,fontFamily:"'JetBrains Mono', 'Fira Code', 'Cascadia Code', 'Consolas', monospace",fontSize:13,lineHeight:1.85,color:"#b4b6c4",bgcolor:"#0a0a0a",scrollbarWidth:"thin",scrollbarColor:"#3a3d4e #0a0a0a","&::-webkit-scrollbar":{width:8},"&::-webkit-scrollbar-track":{bgcolor:"#0a0a0a"},"&::-webkit-scrollbar-thumb":{bgcolor:"#3a3d4e",borderRadius:4}},children:0===F.length?(0,t.jsx)(p.Z,{sx:{color:"text.secondary",textAlign:"center",py:8},children:"Waiting for logs..."}):F.map((e,r)=>{let s=function(e){let r=eU(e).match(/\[(\d{2}:\d{2}:\d{2})\]\s*\[([^/]+)\/(\w+)\]:\s*(.+)/);return r?{time:r[1],thread:r[2],level:r[3]||"INFO",msg:r[4]}:null}(e);return s?(0,t.jsxs)(o.Z,{sx:{display:"flex",gap:0,whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"},children:[(0,t.jsxs)(o.Z,{component:"span",sx:{color:"#4a4d60"},children:["[",s.time,"]"]}),(0,t.jsxs)(o.Z,{component:"span",sx:{color:"#4a4d60"},children:["\xa0[",s.thread,"/",(0,t.jsx)(o.Z,{component:"span",sx:{color:"WARN"===s.level?"#e8a848":"#6b6e80"},children:s.level}),"]:\xa0"]}),(0,t.jsx)(o.Z,{component:"span",sx:{color:"WARN"===s.level?"#c4a45a":"#b4b6c4"},children:s.msg})]},r):(0,t.jsx)(o.Z,{sx:{color:"#b4b6c4"},children:eU(e)},r)})}),(0,t.jsx)(d.Z,{onClick:()=>z(!0),sx:{position:"absolute",top:12,right:12,width:36,height:36,borderRadius:2,bgcolor:"#282a3a",border:"1px solid #3a3d4e",color:"#8b8da0","&:hover":{bgcolor:"#313440"}},children:(0,t.jsx)(q.Z,{sx:{fontSize:18}})}),!y&&(0,t.jsx)(d.Z,{onClick:()=>{I.current&&I.current.scrollTo({top:I.current.scrollHeight,behavior:"smooth"})},sx:{position:"absolute",bottom:12,right:12,width:36,height:36,borderRadius:2,bgcolor:"#282a3a",border:"1px solid #3a3d4e",color:"#8b8da0","&:hover":{bgcolor:"#313440"}},children:(0,t.jsx)(H.Z,{sx:{fontSize:18}})})]}),(0,t.jsx)(o.Z,{sx:{px:2.5,py:1.5,borderTop:"1px solid",borderColor:"divider"},children:(0,t.jsx)(w.Z,{fullWidth:!0,size:"small",placeholder:"Send a command",value:g,onChange:e=>Z(e.target.value),onKeyDown:e=>{"Enter"===e.key&&(e.preventDefault(),T())},disabled:!W,InputProps:{startAdornment:(0,t.jsx)(A.Z,{position:"start",children:(0,t.jsx)(L.Z,{sx:{fontSize:16,color:"#999"}})}),sx:{bgcolor:"#13141c",borderRadius:2,fontFamily:"'JetBrains Mono', 'Fira Code', monospace",fontSize:14,"& .MuiOutlinedInput-notchedOutline":{borderColor:"#2a2d3e"},"&:hover .MuiOutlinedInput-notchedOutline":{borderColor:"#3a3d4e"},"&.Mui-focused .MuiOutlinedInput-notchedOutline":{borderColor:"primary.main"}}}})})]}),"Overview"===v&&(0,t.jsxs)(S.ZP,{container:!0,spacing:3,sx:{mt:1},children:[(0,t.jsx)(S.ZP,{item:!0,xs:12,md:6,children:(0,t.jsx)(u.Z,{sx:{borderRadius:3},children:(0,t.jsxs)(m.Z,{children:[(0,t.jsx)(p.Z,{variant:"h6",gutterBottom:!0,fontWeight:600,children:"Server Information"}),(0,t.jsx)(O.Z,{sx:{mb:2}}),(0,t.jsx)(eH,{label:"Name",value:x.name}),(0,t.jsx)(eH,{label:"Container",value:x.container}),(0,t.jsx)(eH,{label:"Hostname",value:x.hostname}),(0,t.jsx)(eH,{label:"Type",value:x.type}),(0,t.jsx)(eH,{label:"Version",value:x.version}),(0,t.jsx)(eH,{label:"Memory",value:x.memory}),(0,t.jsx)(eH,{label:"Uptime",value:x.uptime||function(e){if(!e||e<0)return"0s";let r=Math.floor(e/3600),s=Math.floor(e%3600/60),t=e%60;return r>0?"".concat(r,"h ").concat(s,"m"):s>0?"".concat(s,"m ").concat(t,"s"):"".concat(t,"s")}(x.uptimeSeconds)})]})})}),(0,t.jsx)(S.ZP,{item:!0,xs:12,md:6,children:(0,t.jsx)(u.Z,{sx:{borderRadius:3},children:(0,t.jsxs)(m.Z,{children:[(0,t.jsx)(p.Z,{variant:"h6",gutterBottom:!0,fontWeight:600,children:"Players"}),(0,t.jsx)(O.Z,{sx:{mb:2}}),x.players?(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(eH,{label:"Online",value:"".concat(x.players.online," / ").concat(x.players.max)}),x.players.list&&x.players.list.length>0&&(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(p.Z,{variant:"body2",color:"text.secondary",sx:{mt:2,mb:1},children:"Online Players"}),(0,t.jsx)(o.Z,{sx:{display:"flex",flexWrap:"wrap",gap:1},children:x.players.list.map(e=>(0,t.jsx)(M.Z,{label:e,size:"small"},e))})]})]}):(0,t.jsx)(p.Z,{variant:"body2",color:"text.secondary",children:"Player information unavailable"})]})})})]}),"Activity"===v&&(0,t.jsx)(o.Z,{sx:{mt:3},children:(0,t.jsx)(u.Z,{sx:{borderRadius:3},children:(0,t.jsxs)(m.Z,{children:[(0,t.jsx)(p.Z,{variant:"h6",gutterBottom:!0,fontWeight:600,children:"Server Activity"}),(0,t.jsx)(O.Z,{sx:{mb:2}}),(0,t.jsx)(et,{serverName:x.name})]})})}),"Content"===v&&(0,t.jsx)(o.Z,{sx:{mt:3},children:(0,t.jsx)(p.Z,{variant:"body1",color:"text.secondary",children:"Content management coming soon"})}),"Files"===v&&(0,t.jsx)(o.Z,{sx:{mt:3},children:(0,t.jsx)(p.Z,{variant:"body1",color:"text.secondary",children:"File browser coming soon"})}),"Backups"===v&&(0,t.jsx)(o.Z,{sx:{mt:3},children:(0,t.jsx)(p.Z,{variant:"body1",color:"text.secondary",children:"Backup management coming soon"})}),"Access"===v&&(0,t.jsx)(o.Z,{sx:{mt:3},children:(0,t.jsx)(eE,{serverId:x.name})}),"Options"===v&&(0,t.jsx)(o.Z,{sx:{mt:3},children:(0,t.jsx)(ef,{serverName:x.name,isRunning:"running"===x.status})}),(0,t.jsxs)(f.Z,{open:R,onClose:()=>z(!1),maxWidth:"xl",fullWidth:!0,PaperProps:{sx:{height:"90vh",bgcolor:"background.paper"}},children:[(0,t.jsxs)(o.Z,{sx:{display:"flex",justifyContent:"space-between",alignItems:"center",p:2,borderBottom:1,borderColor:"divider"},children:[(0,t.jsxs)(p.Z,{variant:"h6",sx:{fontFamily:'"Minecraft", sans-serif',fontWeight:400,letterSpacing:"0.05em"},children:["Console - ",x.name]}),(0,t.jsx)(d.Z,{onClick:()=>z(!1),children:(0,t.jsx)(B.Z,{})})]}),(0,t.jsx)(b.Z,{sx:{p:0,display:"flex",flexDirection:"column"},children:(0,t.jsx)(_.K,{serverName:x.name})})]})]})}function eH(e){let{label:r,value:s}=e;return s?(0,t.jsxs)(o.Z,{sx:{display:"flex",justifyContent:"space-between",py:1},children:[(0,t.jsx)(p.Z,{variant:"body2",color:"text.secondary",children:r}),(0,t.jsx)(p.Z,{variant:"body2",sx:{fontWeight:500},children:s})]}):null}var eL=s(93757);function eK(){return(0,t.jsxs)("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,t.jsx)("circle",{cx:"12",cy:"12",r:"10"}),(0,t.jsx)("line",{x1:"8",y1:"12",x2:"16",y2:"12"})]})}function eG(){return(0,t.jsxs)("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,t.jsx)("path",{d:"M21 2v6h-6"}),(0,t.jsx)("path",{d:"M3 12a9 9 0 0115.36-6.36L21 8"}),(0,t.jsx)("path",{d:"M3 22v-6h6"}),(0,t.jsx)("path",{d:"M21 12a9 9 0 01-15.36 6.36L3 16"})]})}function eV(){var e,r,s,M;let A=(0,i.useParams)(),O=(0,a.x)(),B=decodeURIComponent(A.name),{data:E,isLoading:N,error:U}=(0,em.Hy)(B),{status:q,health:H}=function(e){let{serverName:r,onStatusChange:s,enabled:t=!0,reconnectInterval:i=3e3}=e,[a,o]=(0,n.useState)(null),[l,d]=(0,n.useState)(null);(0,n.useEffect)(()=>{o(null),d(null)},[r]);let c=(0,n.useCallback)(e=>{if("server-status"===e.type){let r=e.data.status,t=e.data.health;o(r),d(t),null==s||s(r,t)}},[s]),{isConnected:x,reconnect:h,retryCount:u}=(0,eL.D)({url:"/api/sse/servers/".concat(encodeURIComponent(r),"/status"),onMessage:c,enabled:t,reconnectInterval:i});return{status:a,health:l,isConnected:x,reconnect:h,retryCount:u}}({serverName:B,enabled:!!B}),[L,K]=(0,n.useState)(null),[G,V]=(0,n.useState)(!1),[_,J]=(0,n.useState)(""),Q=(0,em.jM)(),$=(0,em.Aw)(),Y=(0,em._I)(),X=(0,em.Hq)(),ee=async()=>{try{await Q.mutateAsync(B)}catch(e){console.error("Failed to start server:",e)}},er=async()=>{try{await $.mutateAsync(B)}catch(e){console.error("Failed to stop server:",e)}},es=async()=>{try{await Y.mutateAsync(B)}catch(e){console.error("Failed to restart server:",e)}},et=async e=>{try{await fetch("/api/servers/".concat(encodeURIComponent(B),"/exec"),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({command:e})})}catch(e){console.error("Failed to send command:",e)}},en=q||(null==E?void 0:E.server.status),ei=Q.isPending||$.isPending||Y.isPending,ea=null==E?void 0:E.server;return(0,t.jsxs)(t.Fragment,{children:[U&&(0,t.jsxs)(c.Z,{severity:"error",sx:{mb:3},children:["Failed to load server: ",U.message]}),Q.isError&&(0,t.jsxs)(c.Z,{severity:"error",sx:{mb:3},children:["Failed to start server: ",null===(e=Q.error)||void 0===e?void 0:e.message]}),$.isError&&(0,t.jsxs)(c.Z,{severity:"error",sx:{mb:3},children:["Failed to stop server: ",null===(r=$.error)||void 0===r?void 0:r.message]}),Y.isError&&(0,t.jsxs)(c.Z,{severity:"error",sx:{mb:3},children:["Failed to restart server: ",null===(s=Y.error)||void 0===s?void 0:s.message]}),X.isError&&(0,t.jsxs)(c.Z,{severity:"error",sx:{mb:3},children:["Failed to delete server: ",null===(M=X.error)||void 0===M?void 0:M.message]}),N?(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)(o.Z,{sx:{display:"flex",alignItems:"center",gap:2,mb:2.5},children:[(0,t.jsx)(h.Z,{variant:"rounded",width:64,height:64,sx:{borderRadius:3,flexShrink:0}}),(0,t.jsxs)(o.Z,{sx:{flex:1},children:[(0,t.jsx)(h.Z,{variant:"text",width:80,height:18,sx:{mb:.5}}),(0,t.jsx)(h.Z,{variant:"text",width:"40%",height:40}),(0,t.jsxs)(o.Z,{sx:{display:"flex",gap:2,mt:.75},children:[(0,t.jsx)(h.Z,{variant:"text",width:100}),(0,t.jsx)(h.Z,{variant:"text",width:60}),(0,t.jsx)(h.Z,{variant:"text",width:140}),(0,t.jsx)(h.Z,{variant:"text",width:50})]})]}),(0,t.jsxs)(o.Z,{sx:{display:"flex",gap:1,flexShrink:0},children:[(0,t.jsx)(h.Z,{variant:"rounded",width:90,height:40,sx:{borderRadius:2}}),(0,t.jsx)(h.Z,{variant:"rounded",width:36,height:36,sx:{borderRadius:2}})]})]}),(0,t.jsx)(o.Z,{sx:{display:"flex",gap:.5,mb:3},children:[80,70,65,50,65,65].map((e,r)=>(0,t.jsx)(h.Z,{variant:"rounded",width:e,height:36,sx:{borderRadius:5}},r))}),(0,t.jsx)(o.Z,{sx:{display:"grid",gridTemplateColumns:{xs:"1fr",sm:"repeat(3, 1fr)"},gap:2,mb:2.5},children:[0,1,2].map(e=>(0,t.jsx)(u.Z,{sx:{borderRadius:3},children:(0,t.jsxs)(m.Z,{children:[(0,t.jsxs)(o.Z,{sx:{display:"flex",alignItems:"center",justifyContent:"space-between",mb:1.5},children:[(0,t.jsx)(h.Z,{variant:"text",width:"50%"}),(0,t.jsx)(h.Z,{variant:"circular",width:28,height:28})]}),(0,t.jsx)(h.Z,{variant:"text",width:"60%",height:36}),(0,t.jsx)(h.Z,{variant:"rounded",width:"100%",height:6,sx:{borderRadius:3,mt:1}})]})},e))}),(0,t.jsxs)(u.Z,{sx:{borderRadius:3,border:"1px solid",borderColor:"divider"},children:[(0,t.jsxs)(o.Z,{sx:{px:3,py:2,borderBottom:"1px solid",borderColor:"divider",display:"flex",alignItems:"center",gap:1.25},children:[(0,t.jsx)(h.Z,{variant:"text",width:80,height:28}),(0,t.jsx)(h.Z,{variant:"circular",width:10,height:10})]}),(0,t.jsx)(h.Z,{variant:"rectangular",height:360,sx:{bgcolor:"#0a0a0a"}}),(0,t.jsx)(o.Z,{sx:{px:2.5,py:1.5,borderTop:"1px solid",borderColor:"divider"},children:(0,t.jsx)(h.Z,{variant:"rounded",width:"100%",height:40,sx:{borderRadius:2}})})]}),(0,t.jsxs)(S.ZP,{container:!0,spacing:3,sx:{mt:1},children:[(0,t.jsx)(S.ZP,{item:!0,xs:12,md:6,children:(0,t.jsx)(u.Z,{sx:{borderRadius:3},children:(0,t.jsxs)(m.Z,{children:[(0,t.jsx)(h.Z,{variant:"text",width:"40%",height:28,sx:{mb:1}}),(0,t.jsx)(h.Z,{variant:"rectangular",height:1,sx:{mb:2}}),[0,1,2,3,4,5,6].map(e=>(0,t.jsxs)(o.Z,{sx:{display:"flex",justifyContent:"space-between",py:1},children:[(0,t.jsx)(h.Z,{variant:"text",width:"30%"}),(0,t.jsx)(h.Z,{variant:"text",width:"40%"})]},e))]})})}),(0,t.jsx)(S.ZP,{item:!0,xs:12,md:6,children:(0,t.jsx)(u.Z,{sx:{borderRadius:3},children:(0,t.jsxs)(m.Z,{children:[(0,t.jsx)(h.Z,{variant:"text",width:"30%",height:28,sx:{mb:1}}),(0,t.jsx)(h.Z,{variant:"rectangular",height:1,sx:{mb:2}}),(0,t.jsxs)(o.Z,{sx:{display:"flex",justifyContent:"space-between",py:1},children:[(0,t.jsx)(h.Z,{variant:"text",width:"25%"}),(0,t.jsx)(h.Z,{variant:"text",width:"20%"})]})]})})})]})]}):ea?(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)(o.Z,{sx:{display:"flex",alignItems:"center",gap:2,mb:2.5},children:[(0,t.jsx)(o.Z,{sx:{width:64,height:64,borderRadius:3,overflow:"hidden",bgcolor:"background.paper",display:"flex",alignItems:"center",justifyContent:"center",flexShrink:0,border:"1px solid",borderColor:"divider",fontSize:36},children:function(e){if(!e)return"\uD83C\uDFAE";let r=e.toUpperCase();return["PAPER","SPIGOT","BUKKIT","PURPUR"].includes(r)?"\uD83D\uDD0C":["FORGE","NEOFORGE","FABRIC","QUILT"].includes(r)?"\uD83D\uDD27":"\uD83C\uDFAE"}(ea.type)}),(0,t.jsxs)(o.Z,{sx:{flex:1},children:[(0,t.jsxs)(p.Z,{onClick:()=>O.push("/servers"),sx:{fontSize:12,color:"primary.main",cursor:"pointer",mb:.25,display:"flex",alignItems:"center",gap:.5,"&:hover":{textDecoration:"underline"}},children:[(0,t.jsx)(R.Z,{sx:{fontSize:14}})," All servers"]}),(0,t.jsx)(p.Z,{variant:"h4",component:"h1",sx:{fontFamily:'"Minecraft", sans-serif',fontWeight:400,color:"text.primary",letterSpacing:"0.5px",m:0,textTransform:"uppercase"},children:B}),(0,t.jsxs)(o.Z,{sx:{display:"flex",alignItems:"center",gap:0,mt:.75,flexWrap:"wrap",fontSize:13,color:"text.secondary"},children:[ea.version&&(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)(o.Z,{sx:{display:"flex",alignItems:"center",gap:.5},children:[(0,t.jsx)(W.Z,{sx:{fontSize:14}}),"Minecraft ",ea.version]}),(0,t.jsx)(o.Z,{component:"span",sx:{mx:1.25,color:"#3a3d4e"},children:"|"})]}),ea.type&&(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)(o.Z,{sx:{display:"flex",alignItems:"center",gap:.5},children:[(0,t.jsx)(F.Z,{sx:{fontSize:14}}),ea.type]}),(0,t.jsx)(o.Z,{component:"span",sx:{mx:1.25,color:"#3a3d4e"},children:"|"})]}),ea.hostname&&(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)(o.Z,{sx:{display:"flex",alignItems:"center",gap:.5},children:[(0,t.jsx)(T.Z,{sx:{fontSize:14}}),ea.hostname]}),(0,t.jsx)(o.Z,{component:"span",sx:{mx:1.25,color:"#3a3d4e"},children:"|"})]}),(0,t.jsxs)(o.Z,{sx:{display:"flex",alignItems:"center",gap:.5},children:[(0,t.jsx)(D.Z,{sx:{fontSize:14}}),ea.uptime||function(e){if(!e||e<0)return"0s";let r=Math.floor(e/3600),s=Math.floor(e%3600/60),t=e%60;return r>0?"".concat(r,"h ").concat(s,"m"):s>0?"".concat(s,"m ").concat(t,"s"):"".concat(t,"s")}(ea.uptimeSeconds)||"0s"]})]})]}),(0,t.jsxs)(o.Z,{sx:{display:"flex",alignItems:"center",gap:1.25,flexShrink:0},children:[("stopped"===en||"exited"===en||"not_created"===en)&&(0,t.jsx)(l.Z,{variant:"contained",color:"success",startIcon:ei?(0,t.jsx)(x.Z,{size:16,color:"inherit"}):(0,t.jsx)(z.Z,{}),onClick:ee,disabled:ei,sx:{px:2,py:1,borderRadius:2,fontSize:14,fontWeight:600},children:"Start"}),"running"===en&&(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(l.Z,{variant:"outlined",startIcon:ei?(0,t.jsx)(x.Z,{size:16}):(0,t.jsx)(eK,{}),onClick:er,disabled:ei,sx:{px:2,py:1,borderRadius:2,fontSize:14,fontWeight:500,borderColor:"divider",color:"text.secondary","&:hover":{borderColor:"text.secondary",bgcolor:(0,k.Fq)("#fff",.05)}},children:"Stop"}),(0,t.jsx)(l.Z,{variant:"contained",startIcon:ei?(0,t.jsx)(x.Z,{size:16,color:"inherit"}):(0,t.jsx)(eG,{}),onClick:es,disabled:ei,sx:{px:2,py:1,borderRadius:2,fontSize:14,fontWeight:600,bgcolor:"primary.main",color:"#0a0e14","&:hover":{bgcolor:"primary.dark"}},children:"Restart"})]}),(0,t.jsx)(d.Z,{onClick:e=>K(e.currentTarget),sx:{width:36,height:36,borderRadius:2,border:"1px solid",borderColor:"divider",color:"text.secondary"},children:(0,t.jsx)(I.Z,{sx:{fontSize:18}})}),(0,t.jsx)(v.Z,{anchorEl:L,open:!!L,onClose:()=>K(null),children:(0,t.jsxs)(j.Z,{onClick:()=>{K(null),V(!0),J("")},sx:{color:"error.main"},children:[(0,t.jsx)(g.Z,{children:(0,t.jsx)(P.Z,{fontSize:"small",sx:{color:"error.main"}})}),(0,t.jsx)(Z.Z,{children:"Delete Server"})]})})]})]}),(0,t.jsx)(eq,{server:ea,onSendCommand:et})]}):(0,t.jsx)(c.Z,{severity:"warning",children:"Server not found"}),(0,t.jsxs)(f.Z,{open:G,onClose:()=>{V(!1),J("")},maxWidth:"sm",fullWidth:!0,children:[(0,t.jsx)(y.Z,{children:"Delete Server"}),(0,t.jsxs)(b.Z,{children:[(0,t.jsxs)(p.Z,{sx:{mb:2},children:["This action cannot be undone. Type ",(0,t.jsx)("strong",{children:B})," to confirm deletion."]}),(0,t.jsx)(w.Z,{label:"Server name",value:_,onChange:e=>J(e.target.value),fullWidth:!0,autoFocus:!0})]}),(0,t.jsxs)(C.Z,{sx:{px:3,pb:2},children:[(0,t.jsx)(l.Z,{onClick:()=>{V(!1),J("")},children:"Cancel"}),(0,t.jsx)(l.Z,{variant:"contained",color:"error",onClick:()=>{_===B&&X.mutate({name:B,force:!0},{onSuccess:()=>{O.push("/servers")}})},disabled:_!==B||X.isPending,startIcon:X.isPending?(0,t.jsx)(x.Z,{size:16}):null,children:X.isPending?"Deleting...":"Delete"})]})]})]})}},56813:function(e,r,s){"use strict";s.d(r,{I:function(){return a}});var t=s(94655),n=s(25333),i=s(82925);function a(e){let{action:r,size:s="small"}=e,a=i.Lu[r]||"default",o=i.n3[r]||r;return(0,t.jsx)(n.Z,{label:o,color:a,size:s,variant:"filled",sx:{fontWeight:600,fontSize:"small"===s?"0.7rem":"0.8rem"}})}},26892:function(e,r,s){"use strict";s.d(r,{c:function(){return o}});var t=s(94655),n=s(25333),i=s(46207),a=s(43436);function o(e){let{status:r,size:s="small"}=e;return(0,t.jsx)(n.Z,{icon:"success"===r?(0,t.jsx)(i.Z,{}):(0,t.jsx)(a.Z,{}),label:"success"===r?"OK":"Error",color:"success"===r?"success":"error",size:s,variant:"outlined",sx:{fontWeight:500,fontSize:"small"===s?"0.7rem":"0.8rem"}})}},84509:function(e,r,s){"use strict";s.d(r,{DM:function(){return a},HZ:function(){return l},VM:function(){return o},hT:function(){return i},oL:function(){return d}});var t=s(5632),n=s(42936);function i(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},r=arguments.length>1?arguments[1]:void 0,s=function(e){let r=new URLSearchParams;e.action&&r.set("action",e.action),e.actor&&r.set("actor",e.actor),e.targetType&&r.set("targetType",e.targetType),e.targetName&&r.set("targetName",e.targetName),e.status&&r.set("status",e.status),e.from&&r.set("from",e.from),e.to&&r.set("to",e.to),void 0!==e.limit&&r.set("limit",String(e.limit)),void 0!==e.offset&&r.set("offset",String(e.offset)),e.sort&&r.set("sort",e.sort);let s=r.toString();return s?"?".concat(s):""}(e);return(0,t.a)({queryKey:["audit-logs",e],queryFn:()=>(0,n.SC)("/api/audit-logs".concat(s)),enabled:(null==r?void 0:r.enabled)!==!1})}function a(e){return(0,t.a)({queryKey:["audit-logs","stats"],queryFn:()=>(0,n.SC)("/api/audit-logs/stats"),enabled:(null==e?void 0:e.enabled)!==!1,refetchInterval:3e4})}function o(e,r){return(0,t.a)({queryKey:["audit-logs",e],queryFn:()=>(0,n.SC)("/api/audit-logs/".concat(encodeURIComponent(e))),enabled:(null==r?void 0:r.enabled)!==!1&&!!e})}function l(e,r){var s;return i({targetType:"server",targetName:e,limit:null!==(s=null==r?void 0:r.limit)&&void 0!==s?s:20},{enabled:(null==r?void 0:r.enabled)!==!1&&!!e})}function d(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:10;return i({limit:e,sort:"timestamp:desc"})}},82925:function(e,r,s){"use strict";s.d(r,{KK:function(){return o},Lu:function(){return t},Xn:function(){return a},n3:function(){return n},xg:function(){return i}});let t={"server.create":"success","server.delete":"error","server.start":"info","server.stop":"warning","server.restart":"secondary","player.whitelist.add":"success","player.whitelist.remove":"warning","player.ban":"error","player.unban":"success","player.op":"info","player.deop":"warning","player.kick":"error","audit.purge":"default"},n={"server.create":"Create","server.delete":"Delete","server.start":"Start","server.stop":"Stop","server.restart":"Restart","player.whitelist.add":"Whitelist Add","player.whitelist.remove":"Whitelist Remove","player.ban":"Ban","player.unban":"Unban","player.op":"Op","player.deop":"Deop","player.kick":"Kick","audit.purge":"Purge"},i=["server.create","server.delete","server.start","server.stop","server.restart","player.whitelist.add","player.whitelist.remove","player.ban","player.unban","player.op","player.deop","player.kick","audit.purge"],a=["server.create","server.delete","server.start","server.stop","server.restart"],o=["player.whitelist.add","player.whitelist.remove","player.ban","player.unban","player.op","player.deop","player.kick"]}},function(e){e.O(0,[6812,9760,6758,680,1668,7436,1071,540,4416,521,5511,7359,880,55,7727,8347,1658,6727,6645,7305,9154,9058,2666,5787,3669,2757,1744],function(){return e(e.s=59616)}),_N_E=e.O()}]);
@@ -0,0 +1 @@
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),d=r(69899),u=r(31317),h=r(76492),x=r(32366),m=r(78067),p=r(84840),f=r(97436),v=r(52082),g=r(89923),j=r(10297),y=r(42431),S=r(628),b=r(41565),Z=r(25935),C=r(79983),k=r(25333),w=r(95511),T=r(5501),E=r(93315),R=r(27171),I=r(96292);let P=e=>{switch(e){case"running":return"success";case"stopped":case"exited":case"not_created":return"error";case"created":return"warning";default:return"default"}},M=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"}},O=e=>{if(!e)return"-";let t=e.split(",").map(e=>e.trim());return t.find(e=>e.endsWith(".local"))||t[0]||"-"};function F(e){var t;let{server:r,statusOverride:s,onClick:o,onStart:a,onStop:l,loading:c=!1}=e,d=(null==s?void 0:s.status)||r.status,h=(e,t)=>{e.stopPropagation(),t(r.name)},x="running"===d,m="stopped"===d||"exited"===d||"not_created"===d,p=O(r.hostname),f=(null===(t=r.hostname)||void 0===t?void 0:t.split(",").map(e=>e.trim()))||[];return(0,n.jsxs)(S.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)(b.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)(u.Z,{variant:"h6",component:"h3",sx:{fontWeight:600,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",flex:1,mr:1},children:r.name}),(0,n.jsx)(k.Z,{label:M(d),size:"small",color:P(d),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)(w.Z,{title:f.length>1?f.join("\n"):"",arrow:!0,children:(0,n.jsxs)(u.Z,{variant:"body2",color:"text.secondary",sx:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:[p,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)(u.Z,{variant:"body2",color:"text.secondary",sx:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:r.container})]})]}),(0,n.jsxs)(Z.Z,{sx:{justifyContent:"flex-end",px:2,py:1.5,borderTop:"1px solid",borderColor:"divider"},children:[m&&a&&(0,n.jsx)(C.Z,{"aria-label":"Start server",color:"success",onClick:e=>h(e,a),disabled:c,size:"small",children:(0,n.jsx)(T.Z,{})}),x&&l&&(0,n.jsx)(C.Z,{"aria-label":"Stop server",color:"error",onClick:e=>h(e,l),disabled:c,size:"small",children:(0,n.jsx)(E.Z,{})}),!m&&!x&&(0,n.jsx)(i.Z,{sx:{height:34}})]})]})}function L(e){let{servers:t,statusMap:r={},onServerClick:o,onStart:l,onStop:c,onCreate:d,loadingServers:h=[]}=e,[m,S]=(0,s.useState)(""),[b,Z]=(0,s.useState)("all"),C=(0,s.useMemo)(()=>t.filter(e=>{if(m&&!e.name.toLowerCase().includes(m.toLowerCase()))return!1;let t=r[e.name],n=(null==t?void 0:t.status)||e.status;return("running"!==b||"running"===n)&&("stopped"!==b||"stopped"===n||"exited"===n||"not_created"===n)}),[t,r,m,b]);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)(u.Z,{variant:"h6",color:"text.secondary",children:"No servers found"}),d&&(0,n.jsx)(a.Z,{variant:"contained",startIcon:(0,n.jsx)(x.Z,{}),onClick:d,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)(j.Z,{value:b,exclusive:!0,onChange:(e,t)=>{null!==t&&Z(t)},size:"small",sx:{flexShrink:0},children:[(0,n.jsx)(g.Z,{value:"all",children:"All"}),(0,n.jsx)(g.Z,{value:"running",children:"Running"}),(0,n.jsx)(g.Z,{value:"stopped",children:"Stopped"})]}),(0,n.jsx)(f.Z,{size:"small",placeholder:"Search servers...",value:m,onChange:e=>S(e.target.value),InputProps:{startAdornment:(0,n.jsx)(v.Z,{position:"start",children:(0,n.jsx)(y.Z,{})})},sx:{flexGrow:{xs:1,sm:0},minWidth:{sm:300}}})]}),(0,n.jsxs)(u.Z,{variant:"body2",color:"text.secondary",sx:{mb:2},children:[C.length," ",1===C.length?"server":"servers"]}),0===C.length?(0,n.jsx)(i.Z,{sx:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",minHeight:"200px",gap:2},children:(0,n.jsx)(u.Z,{variant:"h6",color:"text.secondary",children:"No servers found"})}):(0,n.jsx)(p.ZP,{container:!0,spacing:2,children:C.map(e=>(0,n.jsx)(p.ZP,{item:!0,xs:12,sm:6,md:4,children:(0,n.jsx)(F,{server:e,statusOverride:r[e.name],onClick:o,onStart:l,onStop:c,loading:h.includes(e.name)})},e.name))})]})}var W=r(99770),A=r(62508),N=r(5682),z=r(76678),D=r(7178),_=r(40064),G=r(45547),V=r(4405),q=r(73383),U=r(82285),H=r(13609),J=r(46207),$=r(43436),B=r(87716);let Y=["VANILLA","PAPER","FABRIC","FORGE","NEOFORGE"],K=["","forge","fabric","neoforge","quilt"],Q={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:d,loading:h=!1,status:x="idle",progress:m=0,message:p=""}=e,[v,y]=(0,s.useState)("standard"),[S,b]=(0,s.useState)(Q),[Z,C]=(0,s.useState)({}),[k,w]=(0,s.useState)(!1),T=(0,s.useRef)(null),E=(0,s.useRef)(null),R=X.findIndex(e=>e.key===x),I="idle"!==x&&"completed"!==x&&"error"!==x;(0,s.useEffect)(()=>{r||(y("standard"),b(Q),C({}),w(!1))},[r]);let P=e=>e?/^[a-z0-9-]+$/.test(e)?null:"Only lowercase letters, numbers, and hyphens are allowed":"Server name is required",M=e=>e?null:"Modpack slug is required",O=e=>t=>{let r=t.target.value;b(t=>({...t,[e]:r})),"memory"===e&&w(!0),Z[e]&&C(t=>({...t,[e]:""}))};return(0,n.jsx)(W.Z,{open:r,onClose:I?void 0:o,maxWidth:"sm",fullWidth:!0,children:(0,n.jsxs)("form",{onSubmit:e=>{e.preventDefault(),C({});let t=P(S.name);if(t){C({name:t});return}if("modpack"===v){let e=M(S.modpack||"");if(e){C({modpack:e});return}}let r={name:S.name,memory:S.memory,autoStart:S.autoStart,sudoPassword:S.sudoPassword};"standard"===v?(r.type=S.type,r.version=S.version):(r.type="MODRINTH",r.modpack=S.modpack,S.modpackVersion&&(r.modpackVersion=S.modpackVersion),S.modLoader&&(r.modLoader=S.modLoader)),d(r)},children:[(0,n.jsx)(A.Z,{children:"completed"===x?(0,n.jsxs)(i.Z,{sx:{display:"flex",alignItems:"center",gap:1},children:[(0,n.jsx)(J.Z,{color:"success"}),"Server Created Successfully"]}):"error"===x?(0,n.jsxs)(i.Z,{sx:{display:"flex",alignItems:"center",gap:1},children:[(0,n.jsx)($.Z,{color:"error"}),"Creation Failed"]}):"Create New Server"}),(0,n.jsx)(N.Z,{children:I||"completed"===x||"error"===x?(0,n.jsxs)(i.Z,{sx:{py:2},children:[(0,n.jsx)(q.Z,{activeStep:R,alternativeLabel:!0,sx:{mb:3},children:X.map(e=>(0,n.jsx)(U.Z,{children:(0,n.jsx)(H.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)(u.Z,{variant:"body2",color:"text.secondary",children:p}),(0,n.jsxs)(u.Z,{variant:"body2",color:"text.secondary",children:[m,"%"]})]}),(0,n.jsx)(V.Z,{variant:"determinate",value:m})]}),"completed"===x&&(0,n.jsx)(u.Z,{color:"success.main",sx:{textAlign:"center"},children:p}),"error"===x&&(0,n.jsx)(u.Z,{color:"error.main",sx:{textAlign:"center"},children:p})]}):(0,n.jsxs)(i.Z,{sx:{display:"flex",flexDirection:"column",gap:2,pt:1},children:[(0,n.jsx)(i.Z,{ref:E,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:S.name,onChange:O("name"),error:!!Z.name,helperText:Z.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)(u.Z,{variant:"subtitle2",color:"text.secondary",children:"Server Type"}),(0,n.jsxs)(j.Z,{value:v,exclusive:!0,onChange:(e,t)=>{null!==t&&(y(t),E.current&&(E.current.textContent="".concat("standard"===t?"Standard Server":"Modpack"," category selected")),k||b(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)(g.Z,{value:"standard","aria-label":"Standard Server",children:"Standard Server"}),(0,n.jsx)(g.Z,{value:"modpack","aria-label":"Modpack",children:"Modpack"})]}),(0,n.jsx)(B.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:S.type,onChange:O("type"),fullWidth:!0,disabled:I,children:Y.map(e=>(0,n.jsx)(D.Z,{value:e,children:e},e))}),(0,n.jsx)(f.Z,{label:"Minecraft Version",value:S.version,onChange:O("version"),helperText:"e.g., 1.21.1, 1.20.4, latest",fullWidth:!0,disabled:I})]})}),(0,n.jsx)(B.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:S.modpack||"",onChange:O("modpack"),error:!!Z.modpack,helperText:Z.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:S.modLoader||"",onChange:O("modLoader"),helperText:"Leave empty to auto-detect from modpack",fullWidth:!0,disabled:I,children:[(0,n.jsx)(D.Z,{value:"",children:"Auto-detect"}),K.filter(e=>e).map(e=>(0,n.jsx)(D.Z,{value:e,children:e},e))]}),(0,n.jsx)(f.Z,{label:"Modpack Version",value:S.modpackVersion||"",onChange:O("modpackVersion"),helperText:"Leave empty for latest",fullWidth:!0,disabled:I})]})})]}),(0,n.jsx)(f.Z,{label:"Memory",value:S.memory,onChange:O("memory"),helperText:"e.g., 4G, 8G, 16G",fullWidth:!0,disabled:I}),(0,n.jsx)(f.Z,{label:"Sudo Password",type:"password",value:S.sudoPassword||"",onChange:O("sudoPassword"),helperText:"Required for mDNS hostname registration (avahi)",fullWidth:!0,disabled:I}),(0,n.jsx)(_.Z,{control:(0,n.jsx)(G.Z,{checked:S.autoStart||!1,onChange:(t="autoStart",e=>{b(r=>({...r,[t]:e.target.checked}))}),disabled:I}),label:"Auto-start after creation"})]})}),(0,n.jsx)(z.Z,{sx:{px:3,pb:2},children:"completed"===x||"error"===x?(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)(),[p,f]=(0,s.useState)(!1),[v,g]=(0,s.useState)([]),{data:j,isLoading:y,error:S}=(0,et.x$)(),{statusMap:b}=(0,er.d)(),Z=(0,et.jM)(),C=(0,et.Aw)(),k=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,d]=(0,s.useState)(""),[u,h]=(0,s.useState)(null),x=(0,s.useRef)(null),m=(0,s.useRef)(""),p=(0,s.useCallback)(()=>{i("idle"),l(0),d(""),h(null),x.current&&(x.current.close(),x.current=null)},[]),f=(0,s.useCallback)((e,t,r)=>{i(e),d(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),m.current=e.name,x.current&&x.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),d("Server creation failed"),null==r||r(e)}}},[o,f,t,r]);return(0,s.useEffect)(()=>()=>{x.current&&(x.current.close(),x.current=null)},[]),{status:o,progress:a,message:c,error:u,isCreating:"idle"!==o&&"completed"!==o&&"error"!==o,createServer:v,reset:p}}({onSuccess:()=>{f(!1)},onError:e=>{console.error("Failed to create server:",e)}}),w=async e=>{g(t=>[...t,e]);try{await Z.mutateAsync(e)}catch(e){console.error("Failed to start server:",e)}finally{g(t=>t.filter(t=>t!==e))}},T=async e=>{g(t=>[...t,e]);try{await C.mutateAsync(e)}catch(e){console.error("Failed to stop server:",e)}finally{g(t=>t.filter(t=>t!==e))}};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)(d.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)(m.Z,{sx:{fontSize:32}})}),(0,n.jsxs)(i.Z,{children:[(0,n.jsx)(u.Z,{variant:"h4",component:"h1",fontWeight:"bold",children:"Servers"}),(0,n.jsx)(u.Z,{variant:"body1",color:"text.secondary",children:"Manage your Minecraft servers"})]})]}),(0,n.jsx)(a.Z,{variant:"contained",startIcon:(0,n.jsx)(x.Z,{}),onClick:()=>f(!0),size:"large",children:"Create Server"})]}),S&&(0,n.jsxs)(l.Z,{severity:"error",sx:{mb:3},children:["Failed to load servers: ",S.message]}),k.error&&(0,n.jsxs)(l.Z,{severity:"error",sx:{mb:3},children:["Failed to create server: ",k.error]}),Z.isError&&(0,n.jsxs)(l.Z,{severity:"error",sx:{mb:3},children:["Failed to start server: ",null===(e=Z.error)||void 0===e?void 0:e.message]}),C.isError&&(0,n.jsxs)(l.Z,{severity:"error",sx:{mb:3},children:["Failed to stop server: ",null===(t=C.error)||void 0===t?void 0:t.message]}),y?(0,n.jsx)(i.Z,{sx:{display:"flex",justifyContent:"center",py:8},children:(0,n.jsx)(c.Z,{})}):(0,n.jsx)(L,{servers:(null==j?void 0:j.servers)||[],statusMap:b,onServerClick:e=>{r.push("/servers/".concat(encodeURIComponent(e)))},onStart:w,onStop:T,onCreate:()=>f(!0),loadingServers:v}),(0,n.jsx)(ee,{open:p,onClose:()=>{f(!1),k.reset()},onSubmit:e=>{k.createServer(e)},loading:k.isCreating,status:k.status,progress:k.progress,message:k.message})]})}},3454:function(e,t,r){"use strict";r.d(t,{LoadingProvider:function(){return l},startLoading:function(){return c},stopLoading:function(){return d}});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 d(){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)},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])}},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,[d,u]=(0,n.useState)(null),[h,x]=(0,n.useState)("disconnected"),[m,p]=(0,n.useState)(null),[f,v]=(0,n.useState)(0),g=(0,n.useRef)(null),j=(0,n.useCallback)(e=>{u(e),null==r||r(e)},[r]),y=(0,n.useCallback)(e=>{x(e),"connected"===e&&v(0)},[]),S=(0,n.useCallback)(e=>{p(e),"number"==typeof e.retryCount&&v(e.retryCount),null==o||o(e)},[o]),b=(0,n.useCallback)(()=>{g.current&&(g.current.reconnect(),v(g.current.getRetryCount()))},[]),Z=(0,n.useCallback)(()=>{g.current&&g.current.disconnect()},[]);return(0,n.useEffect)(()=>{if(!l){g.current&&(g.current.disconnect(),g.current=null);return}return g.current||(g.current=new s),g.current.connect({url:t,onMessage:j,onStateChange:y,onError:S,reconnectInterval:i,maxReconnectAttempts:a,withCredentials:c}),()=>{g.current&&(g.current.disconnect(),g.current=null)}},[t,l,i,a,c,j,y,S]),{data:d,isConnected:"connected"===h,state:h,error:m,retryCount:f,reconnect:b,disconnect:Z}}},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:d,retryCount:u}=(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:d,retryCount:u}}}},function(e){e.O(0,[6812,9760,6758,680,1668,7436,1071,540,4416,521,5511,7359,880,1658,6909,6727,1854,2666,3669,2757,1744],function(){return e(e.s=49726)}),_N_E=e.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[4978],{70861:function(e,n,t){Promise.resolve().then(t.bind(t,32539))},76544:function(e,n,t){"use strict";var r=t(8091);n.Z=void 0;var i=r(t(66758)),c=t(94655);n.Z=(0,i.default)([(0,c.jsx)("path",{d:"m7.3 14.7 1.2-1.2c-1-1-1.5-2.3-1.5-3.5 0-1.3.5-2.6 1.5-3.5L7.3 5.3c-1.3 1.3-2 3-2 4.7s.7 3.4 2 4.7M19.1 2.9l-1.2 1.2c1.6 1.6 2.4 3.8 2.4 5.9 0 2.1-.8 4.3-2.4 5.9l1.2 1.2c2-2 2.9-4.5 2.9-7.1 0-2.6-1-5.1-2.9-7.1"},"0"),(0,c.jsx)("path",{d:"M6.1 4.1 4.9 2.9C3 4.9 2 7.4 2 10c0 2.6 1 5.1 2.9 7.1l1.2-1.2c-1.6-1.6-2.4-3.8-2.4-5.9 0-2.1.8-4.3 2.4-5.9m10.6 10.6c1.3-1.3 2-3 2-4.7-.1-1.7-.7-3.4-2-4.7l-1.2 1.2c1 1 1.5 2.3 1.5 3.5 0 1.3-.5 2.6-1.5 3.5zM14.5 10c0-1.38-1.12-2.5-2.5-2.5S9.5 8.62 9.5 10c0 .76.34 1.42.87 1.88L7 22h2l.67-2h4.67l.66 2h2l-3.37-10.12c.53-.46.87-1.12.87-1.88m-4.17 8L12 13l1.67 5z"},"1")],"CellTower")},23695:function(e,n,t){"use strict";var r=t(8091);n.Z=void 0;var i=r(t(66758)),c=t(94655);n.Z=(0,i.default)((0,c.jsx)("path",{d:"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2m1 15h-2v-6h2zm0-8h-2V7h2z"}),"Info")},21605:function(e,n,t){"use strict";var r=t(8091);n.Z=void 0;var i=r(t(66758)),c=t(94655);n.Z=(0,i.default)((0,c.jsx)("path",{d:"M15.9 5c-.17 0-.32.09-.41.23l-.07.15-5.18 11.65c-.16.29-.26.61-.26.96 0 1.11.9 2.01 2.01 2.01.96 0 1.77-.68 1.96-1.59l.01-.03L16.4 5.5c0-.28-.22-.5-.5-.5M1 9l2 2c2.88-2.88 6.79-4.08 10.53-3.62l1.19-2.68C9.89 3.84 4.74 5.27 1 9m20 2 2-2c-1.64-1.64-3.55-2.82-5.59-3.57l-.53 2.82c1.5.62 2.9 1.53 4.12 2.75m-4 4 2-2c-.8-.8-1.7-1.42-2.66-1.89l-.55 2.92c.42.27.83.59 1.21.97M5 13l2 2c1.13-1.13 2.56-1.79 4.03-2l1.28-2.88c-2.63-.08-5.3.87-7.31 2.88"}),"NetworkCheck")},29983:function(e,n,t){"use strict";var r=t(8091);n.Z=void 0;var i=r(t(66758)),c=t(94655);n.Z=(0,i.default)((0,c.jsx)("path",{d:"m20.2 5.9.8-.8C19.6 3.7 17.8 3 16 3s-3.6.7-5 2.1l.8.8C13 4.8 14.5 4.2 16 4.2s3 .6 4.2 1.7m-.9.8c-.9-.9-2.1-1.4-3.3-1.4s-2.4.5-3.3 1.4l.8.8c.7-.7 1.6-1 2.5-1 .9 0 1.8.3 2.5 1zM19 13h-2V9h-2v4H5c-1.1 0-2 .9-2 2v4c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2v-4c0-1.1-.9-2-2-2M8 18H6v-2h2zm3.5 0h-2v-2h2zm3.5 0h-2v-2h2z"}),"Router")},87739:function(e,n,t){"use strict";var r=t(8091);n.Z=void 0;var i=r(t(66758)),c=t(94655);n.Z=(0,i.default)((0,c.jsx)("path",{d:"M19.14 12.94c.04-.3.06-.61.06-.94 0-.32-.02-.64-.07-.94l2.03-1.58c.18-.14.23-.41.12-.61l-1.92-3.32c-.12-.22-.37-.29-.59-.22l-2.39.96c-.5-.38-1.03-.7-1.62-.94l-.36-2.54c-.04-.24-.24-.41-.48-.41h-3.84c-.24 0-.43.17-.47.41l-.36 2.54c-.59.24-1.13.57-1.62.94l-2.39-.96c-.22-.08-.47 0-.59.22L2.74 8.87c-.12.21-.08.47.12.61l2.03 1.58c-.05.3-.09.63-.09.94s.02.64.07.94l-2.03 1.58c-.18.14-.23.41-.12.61l1.92 3.32c.12.22.37.29.59.22l2.39-.96c.5.38 1.03.7 1.62.94l.36 2.54c.05.24.24.41.48.41h3.84c.24 0 .44-.17.47-.41l.36-2.54c.59-.24 1.13-.56 1.62-.94l2.39.96c.22.08.47 0 .59-.22l1.92-3.32c.12-.22.07-.47-.12-.61zM12 15.6c-1.98 0-3.6-1.62-3.6-3.6s1.62-3.6 3.6-3.6 3.6 1.62 3.6 3.6-1.62 3.6-3.6 3.6"}),"Settings")},42730:function(e,n,t){"use strict";var r=t(8091);n.Z=void 0;var i=r(t(66758)),c=t(94655);n.Z=(0,i.default)((0,c.jsx)("path",{d:"M12 7c2.76 0 5 2.24 5 5 0 .65-.13 1.26-.36 1.83l2.92 2.92c1.51-1.26 2.7-2.89 3.43-4.75-1.73-4.39-6-7.5-11-7.5-1.4 0-2.74.25-3.98.7l2.16 2.16C10.74 7.13 11.35 7 12 7M2 4.27l2.28 2.28.46.46C3.08 8.3 1.78 10.02 1 12c1.73 4.39 6 7.5 11 7.5 1.55 0 3.03-.3 4.38-.84l.42.42L19.73 22 21 20.73 3.27 3zM7.53 9.8l1.55 1.55c-.05.21-.08.43-.08.65 0 1.66 1.34 3 3 3 .22 0 .44-.03.65-.08l1.55 1.55c-.67.33-1.41.53-2.2.53-2.76 0-5-2.24-5-5 0-.79.2-1.53.53-2.2m4.31-.78 3.15 3.15.02-.16c0-1.66-1.34-3-3-3z"}),"VisibilityOff")},66758:function(e,n,t){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),Object.defineProperty(n,"default",{enumerable:!0,get:function(){return r.createSvgIcon}});var r=t(26505)},52082:function(e,n,t){"use strict";t.d(n,{Z:function(){return z}});var r,i=t(32324),c=t(81500),o=t(35106),s=t(70316),l=t(65951),a=t(38762),u=t(31317),d=t(14406),f=t(85016),v=t(34519),h=t(11379),p=t(9049);function Z(e){return(0,p.ZP)("MuiInputAdornment",e)}let m=(0,h.Z)("MuiInputAdornment",["root","filled","standard","outlined","positionStart","positionEnd","disablePointerEvents","hiddenLabel","sizeSmall"]);var x=t(28057),b=t(94655);let j=["children","className","component","disablePointerEvents","disableTypography","position","variant"],g=e=>{let{classes:n,disablePointerEvents:t,hiddenLabel:r,position:i,size:c,variant:o}=e,s={root:["root",t&&"disablePointerEvents",i&&"position".concat((0,a.Z)(i)),o,r&&"hiddenLabel",c&&"size".concat((0,a.Z)(c))]};return(0,l.Z)(s,Z,n)},M=(0,v.ZP)("div",{name:"MuiInputAdornment",slot:"Root",overridesResolver:(e,n)=>{let{ownerState:t}=e;return[n.root,n["position".concat((0,a.Z)(t.position))],!0===t.disablePointerEvents&&n.disablePointerEvents,n[t.variant]]}})(e=>{let{theme:n,ownerState:t}=e;return(0,c.Z)({display:"flex",height:"0.01em",maxHeight:"2em",alignItems:"center",whiteSpace:"nowrap",color:(n.vars||n).palette.action.active},"filled"===t.variant&&{["&.".concat(m.positionStart,"&:not(.").concat(m.hiddenLabel,")")]:{marginTop:16}},"start"===t.position&&{marginRight:8},"end"===t.position&&{marginLeft:8},!0===t.disablePointerEvents&&{pointerEvents:"none"})});var z=o.forwardRef(function(e,n){let t=(0,x.i)({props:e,name:"MuiInputAdornment"}),{children:l,className:a,component:v="div",disablePointerEvents:h=!1,disableTypography:p=!1,position:Z,variant:m}=t,z=(0,i.Z)(t,j),P=(0,f.Z)()||{},E=m;m&&P.variant,P&&!E&&(E=P.variant);let y=(0,c.Z)({},t,{hiddenLabel:P.hiddenLabel,size:P.size,disablePointerEvents:h,position:Z,variant:E}),C=g(y);return(0,b.jsx)(d.Z.Provider,{value:null,children:(0,b.jsx)(M,(0,c.Z)({as:v,ownerState:y,className:(0,s.Z)(C.root,a),ref:n},z,{children:"string"!=typeof l||p?(0,b.jsxs)(o.Fragment,{children:["start"===Z?r||(r=(0,b.jsx)("span",{className:"notranslate",children:"​"})):null,l]}):(0,b.jsx)(u.Z,{color:"text.secondary",children:l})}))})})},27350:function(e,n,t){"use strict";var r=t(34834);n.Z=r.Z},26505:function(e,n,t){"use strict";t.r(n),t.d(n,{capitalize:function(){return i.Z},createChainedFunction:function(){return c.Z},createSvgIcon:function(){return o.Z},debounce:function(){return s.Z},deprecatedPropType:function(){return l},isMuiElement:function(){return a.Z},ownerDocument:function(){return u.Z},ownerWindow:function(){return d.Z},requirePropFactory:function(){return f},setRef:function(){return v},unstable_ClassNameGenerator:function(){return g},unstable_useEnhancedEffect:function(){return h.Z},unstable_useId:function(){return p.Z},unsupportedProp:function(){return Z},useControlled:function(){return m.Z},useEventCallback:function(){return x.Z},useForkRef:function(){return b.Z},useIsFocusVisible:function(){return j.Z}});var r=t(74055),i=t(38762),c=t(27350),o=t(61626),s=t(19521),l=function(e,n){return()=>null},a=t(9290),u=t(34713),d=t(99466);t(81500);var f=function(e,n){return()=>null},v=t(25880).Z,h=t(65425),p=t(88207),Z=function(e,n,t,r,i){return null},m=t(18280),x=t(10620),b=t(38481),j=t(22125);let g={configure:e=>{r.Z.configure(e)}}},88207:function(e,n,t){"use strict";var r=t(40552);n.Z=r.Z},32539:function(e,n,t){"use strict";t.r(n),t.d(n,{default:function(){return f}});var r=t(94655),i=t(35106),c=t(7281),o=t(84840),s=t(31317),l=t(37530),a=t(81071),u=t(87739),d=t(11189);function f(){let[e,n]=(0,i.useState)({open:!1,message:"",severity:"success"}),t=e=>{n({open:!0,message:e,severity:"success"})},f=e=>{n({open:!0,message:e,severity:"error"})},v=()=>{n(e=>({...e,open:!1}))};return(0,r.jsxs)(c.Z,{children:[(0,r.jsxs)(c.Z,{sx:{display:"flex",alignItems:"center",gap:1.5,mb:4},children:[(0,r.jsx)(u.Z,{sx:{fontSize:32},color:"primary"}),(0,r.jsx)(s.Z,{variant:"h4",component:"h1",fontWeight:"bold",children:"Settings"})]}),(0,r.jsxs)(o.ZP,{container:!0,spacing:3,children:[(0,r.jsx)(o.ZP,{item:!0,xs:12,md:6,children:(0,r.jsx)(d.zd,{onSuccess:t,onError:f})}),(0,r.jsx)(o.ZP,{item:!0,xs:12,md:6,children:(0,r.jsx)(d.eE,{})}),(0,r.jsx)(o.ZP,{item:!0,xs:12,children:(0,r.jsx)(d.ms,{onSuccess:t,onError:f})})]}),(0,r.jsx)(l.Z,{open:e.open,autoHideDuration:6e3,onClose:v,anchorOrigin:{vertical:"bottom",horizontal:"right"},children:(0,r.jsx)(a.Z,{onClose:v,severity:e.severity,variant:"filled",sx:{width:"100%"},children:e.message})})]})}}},function(e){e.O(0,[6812,9760,6758,680,1668,7436,1071,521,5511,2542,9654,5381,9154,1189,3669,2757,1744],function(){return e(e.s=70861)}),_N_E=e.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[7701],{6199:function(e,n,s){Promise.resolve().then(s.bind(s,36405))},33104:function(e,n,s){"use strict";var t=s(8091);n.Z=void 0;var r=t(s(66758)),l=s(94655);n.Z=(0,r.default)([(0,l.jsx)("path",{d:"M11.99 2C6.47 2 2 6.48 2 12s4.47 10 9.99 10C17.52 22 22 17.52 22 12S17.52 2 11.99 2M12 20c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8"},"0"),(0,l.jsx)("path",{d:"M12.5 7H11v6l5.25 3.15.75-1.23-4.5-2.67z"},"1")],"AccessTime")},32366:function(e,n,s){"use strict";var t=s(8091);n.Z=void 0;var r=t(s(66758)),l=s(94655);n.Z=(0,r.default)((0,l.jsx)("path",{d:"M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6z"}),"Add")},21111:function(e,n,s){"use strict";var t=s(8091);n.Z=void 0;var r=t(s(66758)),l=s(94655);n.Z=(0,r.default)((0,l.jsx)("path",{d:"M6 19c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2V7H6zM19 4h-3.5l-1-1h-5l-1 1H5v2h14z"}),"Delete")},96292:function(e,n,s){"use strict";var t=s(8091);n.Z=void 0;var r=t(s(66758)),l=s(94655);n.Z=(0,r.default)((0,l.jsx)("path",{d:"M3.9 12c0-1.71 1.39-3.1 3.1-3.1h4V7H7c-2.76 0-5 2.24-5 5s2.24 5 5 5h4v-1.9H7c-1.71 0-3.1-1.39-3.1-3.1M8 13h8v-2H8zm9-6h-4v1.9h4c1.71 0 3.1 1.39 3.1 3.1s-1.39 3.1-3.1 3.1h-4V17h4c2.76 0 5-2.24 5-5s-2.24-5-5-5"}),"Link")},97812:function(e,n,s){"use strict";var t=s(8091);n.Z=void 0;var r=t(s(66758)),l=s(94655);n.Z=(0,r.default)((0,l.jsx)("path",{d:"M17 7h-4v1.9h4c1.71 0 3.1 1.39 3.1 3.1 0 1.43-.98 2.63-2.31 2.98l1.46 1.46C20.88 15.61 22 13.95 22 12c0-2.76-2.24-5-5-5m-1 4h-2.19l2 2H16zM2 4.27l3.11 3.11C3.29 8.12 2 9.91 2 12c0 2.76 2.24 5 5 5h4v-1.9H7c-1.71 0-3.1-1.39-3.1-3.1 0-1.59 1.21-2.9 2.76-3.07L8.73 11H8v2h2.73L13 15.27V17h1.73l4.01 4L20 19.74 3.27 3z"}),"LinkOff")},84974:function(e,n,s){"use strict";var t=s(8091);n.Z=void 0;var r=t(s(66758)),l=s(94655);n.Z=(0,r.default)((0,l.jsx)("path",{d:"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2m-1 17.93c-3.95-.49-7-3.85-7-7.93 0-.62.08-1.21.21-1.79L9 15v1c0 1.1.9 2 2 2zm6.9-2.54c-.26-.81-1-1.39-1.9-1.39h-1v-3c0-.55-.45-1-1-1H8v-2h2c.55 0 1-.45 1-1V7h2c1.1 0 2-.9 2-2v-.41c2.93 1.19 5 4.06 5 7.41 0 2.08-.8 3.97-2.1 5.39"}),"Public")},78067:function(e,n,s){"use strict";var t=s(8091);n.Z=void 0;var r=t(s(66758)),l=s(94655);n.Z=(0,r.default)((0,l.jsx)("path",{d:"M2 20h20v-4H2zm2-3h2v2H4zM2 4v4h20V4zm4 3H4V5h2zm-4 7h20v-4H2zm2-3h2v2H4z"}),"Storage")},25935:function(e,n,s){"use strict";s.d(n,{Z:function(){return p}});var t=s(32324),r=s(81500),l=s(35106),i=s(70316),a=s(65951),o=s(34519),d=s(28057),c=s(11379),x=s(9049);function u(e){return(0,x.ZP)("MuiCardActions",e)}(0,c.Z)("MuiCardActions",["root","spacing"]);var h=s(94655);let m=["disableSpacing","className"],v=e=>{let{classes:n,disableSpacing:s}=e;return(0,a.Z)({root:["root",!s&&"spacing"]},u,n)},Z=(0,o.ZP)("div",{name:"MuiCardActions",slot:"Root",overridesResolver:(e,n)=>{let{ownerState:s}=e;return[n.root,!s.disableSpacing&&n.spacing]}})(e=>{let{ownerState:n}=e;return(0,r.Z)({display:"flex",alignItems:"center",padding:8},!n.disableSpacing&&{"& > :not(style) ~ :not(style)":{marginLeft:8}})});var p=l.forwardRef(function(e,n){let s=(0,d.i)({props:e,name:"MuiCardActions"}),{disableSpacing:l=!1,className:a}=s,o=(0,t.Z)(s,m),c=(0,r.Z)({},s,{disableSpacing:l}),x=v(c);return(0,h.jsx)(Z,(0,r.Z)({className:(0,i.Z)(x.root,a),ownerState:c,ref:n},o))})},52082:function(e,n,s){"use strict";s.d(n,{Z:function(){return w}});var t,r=s(32324),l=s(81500),i=s(35106),a=s(70316),o=s(65951),d=s(38762),c=s(31317),x=s(14406),u=s(85016),h=s(34519),m=s(11379),v=s(9049);function Z(e){return(0,v.ZP)("MuiInputAdornment",e)}let p=(0,m.Z)("MuiInputAdornment",["root","filled","standard","outlined","positionStart","positionEnd","disablePointerEvents","hiddenLabel","sizeSmall"]);var f=s(28057),j=s(94655);let g=["children","className","component","disablePointerEvents","disableTypography","position","variant"],b=e=>{let{classes:n,disablePointerEvents:s,hiddenLabel:t,position:r,size:l,variant:i}=e,a={root:["root",s&&"disablePointerEvents",r&&"position".concat((0,d.Z)(r)),i,t&&"hiddenLabel",l&&"size".concat((0,d.Z)(l))]};return(0,o.Z)(a,Z,n)},y=(0,h.ZP)("div",{name:"MuiInputAdornment",slot:"Root",overridesResolver:(e,n)=>{let{ownerState:s}=e;return[n.root,n["position".concat((0,d.Z)(s.position))],!0===s.disablePointerEvents&&n.disablePointerEvents,n[s.variant]]}})(e=>{let{theme:n,ownerState:s}=e;return(0,l.Z)({display:"flex",height:"0.01em",maxHeight:"2em",alignItems:"center",whiteSpace:"nowrap",color:(n.vars||n).palette.action.active},"filled"===s.variant&&{["&.".concat(p.positionStart,"&:not(.").concat(p.hiddenLabel,")")]:{marginTop:16}},"start"===s.position&&{marginRight:8},"end"===s.position&&{marginLeft:8},!0===s.disablePointerEvents&&{pointerEvents:"none"})});var w=i.forwardRef(function(e,n){let s=(0,f.i)({props:e,name:"MuiInputAdornment"}),{children:o,className:d,component:h="div",disablePointerEvents:m=!1,disableTypography:v=!1,position:Z,variant:p}=s,w=(0,r.Z)(s,g),C=(0,u.Z)()||{},S=p;p&&C.variant,C&&!S&&(S=C.variant);let z=(0,l.Z)({},s,{hiddenLabel:C.hiddenLabel,size:C.size,disablePointerEvents:m,position:Z,variant:S}),k=b(z);return(0,j.jsx)(x.Z.Provider,{value:null,children:(0,j.jsx)(y,(0,l.Z)({as:h,ownerState:z,className:(0,a.Z)(k.root,d),ref:n},w,{children:"string"!=typeof o||v?(0,j.jsxs)(i.Fragment,{children:["start"===Z?t||(t=(0,j.jsx)("span",{className:"notranslate",children:"​"})):null,o]}):(0,j.jsx)(c.Z,{color:"text.secondary",children:o})}))})})},64769:function(e,n,s){"use strict";s.d(n,{L:function(){return l}});var t=s(11379),r=s(9049);function l(e){return(0,r.ZP)("MuiListItemText",e)}let i=(0,t.Z)("MuiListItemText",["root","multiline","dense","inset","primary","secondary"]);n.Z=i},36405:function(e,n,s){"use strict";s.r(n),s.d(n,{default:function(){return O}});var t=s(94655),r=s(35106),l=s(7281),i=s(30417),a=s(81071),o=s(93017),d=s(69899),c=s(31317),x=s(99770),u=s(62508),h=s(5682),m=s(76678),v=s(97436),Z=s(76492),p=s(32366),f=s(84974),j=s(84840),g=s(52082),b=s(89923),y=s(10297),w=s(42431),C=s(628),S=s(41565),z=s(25935),k=s(79983),L=s(25333),M=s(95511),A=s(96292),I=s(97812),W=s(21111),P=s(78067),H=s(33104);function D(e){let{world:n,onAssign:s,onRelease:r,onDelete:i,loading:a=!1}=e,o=(e,s)=>{e.stopPropagation(),s(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)(S.Z,{sx:{flex:1,pb:1},children:[(0,t.jsxs)(l.Z,{sx:{display:"flex",justifyContent:"space-between",alignItems:"center",mb:2},children:[(0,t.jsx)(c.Z,{variant:"h6",component:"h3",sx:{fontWeight:600,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",flex:1,mr:1},children:n.name}),(0,t.jsx)(L.Z,{label:n.isLocked?"Locked":"Available",size:"small",color:n.isLocked?"warning":"success",sx:{fontWeight:500,minWidth:80}})]}),(0,t.jsxs)(l.Z,{sx:{display:"flex",alignItems:"center",gap:1,mb:1.5},children:[(0,t.jsx)(P.Z,{sx:{fontSize:16,color:"text.secondary"}}),(0,t.jsx)(c.Z,{variant:"body2",color:"text.secondary",children:n.size||"Unknown size"})]}),n.isLocked&&n.lockedBy&&(0,t.jsxs)(l.Z,{sx:{display:"flex",alignItems:"center",gap:1,mb:1.5},children:[(0,t.jsx)(A.Z,{sx:{fontSize:16,color:"text.secondary"}}),(0,t.jsx)(M.Z,{title:"Assigned to ".concat(n.lockedBy),arrow:!0,children:(0,t.jsx)(c.Z,{variant:"body2",color:"text.secondary",sx:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:n.lockedBy})})]}),(0,t.jsxs)(l.Z,{sx:{display:"flex",alignItems:"center",gap:1},children:[(0,t.jsx)(H.Z,{sx:{fontSize:16,color:"text.secondary"}}),(0,t.jsx)(c.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)(z.Z,{sx:{justifyContent:"flex-end",px:2,py:1.5,borderTop:"1px solid",borderColor:"divider"},children:[!n.isLocked&&s&&(0,t.jsx)(M.Z,{title:"Assign to server",arrow:!0,children:(0,t.jsx)(k.Z,{"aria-label":"Assign world",color:"primary",onClick:e=>o(e,s),disabled:a,size:"small",children:(0,t.jsx)(A.Z,{})})}),n.isLocked&&r&&(0,t.jsx)(M.Z,{title:"Release from server",arrow:!0,children:(0,t.jsx)(k.Z,{"aria-label":"Release world",color:"warning",onClick:e=>o(e,r),disabled:a,size:"small",children:(0,t.jsx)(I.Z,{})})}),i&&(0,t.jsx)(M.Z,{title:"Delete world",arrow:!0,children:(0,t.jsx)(k.Z,{"aria-label":"Delete world",color:"error",onClick:e=>o(e,i),disabled:a,size:"small",children:(0,t.jsx)(W.Z,{})})})]})]})}function E(e){let{worlds:n,onAssign:s,onRelease:a,onDelete:o,onCreate:d,loadingWorlds:x=[]}=e,[u,h]=(0,r.useState)(""),[m,Z]=(0,r.useState)("all"),f=(0,r.useMemo)(()=>n.filter(e=>(!u||!!e.name.toLowerCase().includes(u.toLowerCase()))&&("available"!==m||!e.isLocked)&&("locked"!==m||!!e.isLocked)),[n,u,m]);return 0===n.length?(0,t.jsxs)(l.Z,{sx:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",minHeight:"400px",gap:2},children:[(0,t.jsx)(c.Z,{variant:"h6",color:"text.secondary",children:"No worlds found"}),d&&(0,t.jsx)(i.Z,{variant:"contained",startIcon:(0,t.jsx)(p.Z,{}),onClick:d,children:"Create World"})]}):(0,t.jsxs)(l.Z,{children:[(0,t.jsxs)(l.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)(y.Z,{value:m,exclusive:!0,onChange:(e,n)=>{null!==n&&Z(n)},size:"small",sx:{flexShrink:0},children:[(0,t.jsx)(b.Z,{value:"all",children:"All"}),(0,t.jsx)(b.Z,{value:"available",children:"Available"}),(0,t.jsx)(b.Z,{value:"locked",children:"Locked"})]}),(0,t.jsx)(v.Z,{size:"small",placeholder:"Search worlds...",value:u,onChange:e=>h(e.target.value),InputProps:{startAdornment:(0,t.jsx)(g.Z,{position:"start",children:(0,t.jsx)(w.Z,{})})},sx:{flexGrow:{xs:1,sm:0},minWidth:{sm:300}}})]}),(0,t.jsxs)(c.Z,{variant:"body2",color:"text.secondary",sx:{mb:2},children:[f.length," ",1===f.length?"world":"worlds"]}),0===f.length?(0,t.jsx)(l.Z,{sx:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",minHeight:"200px",gap:2},children:(0,t.jsx)(c.Z,{variant:"h6",color:"text.secondary",children:"No worlds found"})}):(0,t.jsx)(j.ZP,{container:!0,spacing:2,children:f.map(e=>(0,t.jsx)(j.ZP,{item:!0,xs:12,sm:6,md:4,children:(0,t.jsx)(D,{world:e,onAssign:s,onRelease:a,onDelete:o,loading:x.includes(e.name)})},e.name))})]})}let F={name:"",seed:""};function N(e){let{open:n,onClose:s,onSubmit:a,loading:d=!1}=e,[c,Z]=(0,r.useState)(F),[p,f]=(0,r.useState)({});(0,r.useEffect)(()=>{n||(Z(F),f({}))},[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 s=n.target.value;Z(n=>({...n,[e]:s})),p[e]&&f(n=>({...n,[e]:""}))};return(0,t.jsx)(x.Z,{open:n,onClose:d?void 0:s,maxWidth:"sm",fullWidth:!0,children:(0,t.jsxs)("form",{onSubmit:e=>{e.preventDefault(),f({});let n=j(c.name);if(n){f({name:n});return}a({name:c.name,...c.seed?{seed:c.seed}:{}})},children:[(0,t.jsx)(u.Z,{children:"Create New World"}),(0,t.jsx)(h.Z,{children:(0,t.jsxs)(l.Z,{sx:{display:"flex",flexDirection:"column",gap:2,pt:1},children:[(0,t.jsx)(v.Z,{label:"World Name",value:c.name,onChange:g("name"),error:!!p.name,helperText:p.name||"Only lowercase letters, numbers, and hyphens",fullWidth:!0,autoFocus:!0,disabled:d}),(0,t.jsx)(v.Z,{label:"Seed (optional)",value:c.seed||"",onChange:g("seed"),helperText:"Leave empty for a random seed",fullWidth:!0,disabled:d})]})}),(0,t.jsxs)(m.Z,{sx:{px:3,pb:2},children:[(0,t.jsx)(i.Z,{onClick:s,disabled:d,children:"Cancel"}),(0,t.jsx)(i.Z,{type:"submit",variant:"contained",disabled:d,startIcon:d?(0,t.jsx)(o.Z,{size:16}):null,children:d?"Creating...":"Create"})]})]})})}var R=s(7178),T=s(92666);function V(e){let{open:n,worldName:s,onClose:d,onSubmit:Z,loading:p=!1}=e,[f,j]=(0,r.useState)(""),{data:g,isLoading:b}=(0,T.x$)();(0,r.useEffect)(()=>{n||j("")},[n]);let y=(null==g?void 0:g.servers)||[],w=y.filter(e=>"running"!==e.status),C=y.filter(e=>"running"===e.status);return(0,t.jsx)(x.Z,{open:n,onClose:p?void 0:d,maxWidth:"sm",fullWidth:!0,children:(0,t.jsxs)("form",{onSubmit:e=>{e.preventDefault(),f&&Z(s,f)},children:[(0,t.jsxs)(u.Z,{children:["Assign World: ",s]}),(0,t.jsx)(h.Z,{children:(0,t.jsx)(l.Z,{sx:{display:"flex",flexDirection:"column",gap:2,pt:1},children:b?(0,t.jsx)(l.Z,{sx:{display:"flex",justifyContent:"center",py:4},children:(0,t.jsx)(o.Z,{})}):0===y.length?(0,t.jsx)(c.Z,{color:"text.secondary",children:"No servers available. Create a server first."}):(0,t.jsxs)(t.Fragment,{children:[0===w.length&&C.length>0&&(0,t.jsx)(a.Z,{severity:"warning",children:"All servers are currently running. It is recommended to assign worlds to stopped servers."}),(0,t.jsxs)(v.Z,{label:"Select Server",select:!0,value:f,onChange:e=>j(e.target.value),fullWidth:!0,disabled:p,helperText:"Select a server to assign this world to",children:[w.length>0&&(0,t.jsx)(R.Z,{disabled:!0,children:(0,t.jsx)(c.Z,{variant:"caption",color:"text.secondary",children:"Available Servers"})}),w.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)(c.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)(i.Z,{onClick:d,disabled:p,children:"Cancel"}),(0,t.jsx)(i.Z,{type:"submit",variant:"contained",disabled:p||!f||b,startIcon:p?(0,t.jsx)(o.Z,{size:16}):null,children:p?"Assigning...":"Assign"})]})]})})}function O(){var e,n,s,j;let[g,b]=(0,r.useState)(!1),[y,w]=(0,r.useState)(null),[C,S]=(0,r.useState)(null),[z,k]=(0,r.useState)(""),[L,M]=(0,r.useState)([]),{data:A,isLoading:I,error:W}=(0,T.Sr)(),P=(0,T.hy)(),H=(0,T.nq)(),D=(0,T.g2)(),F=(0,T.Fv)(),R=async e=>{M(n=>[...n,e]);try{await D.mutateAsync({worldName:e})}catch(e){console.error("Failed to release world:",e)}finally{M(n=>n.filter(n=>n!==e))}};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)(d.Z,{elevation:0,sx:{mb:4,p:3,background:e=>"linear-gradient(135deg, ".concat((0,Z.Fq)(e.palette.success.main,.1)," 0%, ").concat((0,Z.Fq)(e.palette.primary.main,.1)," 100%)"),borderRadius:2,border:e=>"1px solid ".concat((0,Z.Fq)(e.palette.success.main,.2)),display:"flex",justifyContent:"space-between",alignItems:"center"},children:[(0,t.jsxs)(l.Z,{sx:{display:"flex",alignItems:"center",gap:2},children:[(0,t.jsx)(l.Z,{sx:{display:"flex",alignItems:"center",justifyContent:"center",width:56,height:56,borderRadius:2,bgcolor:"success.main",color:"success.contrastText"},children:(0,t.jsx)(f.Z,{sx:{fontSize:32}})}),(0,t.jsxs)(l.Z,{children:[(0,t.jsx)(c.Z,{variant:"h4",component:"h1",fontWeight:"bold",children:"Worlds"}),(0,t.jsx)(c.Z,{variant:"body1",color:"text.secondary",children:"Manage your Minecraft worlds"})]})]}),(0,t.jsx)(i.Z,{variant:"contained",startIcon:(0,t.jsx)(p.Z,{}),onClick:()=>b(!0),size:"large",children:"Create World"})]}),W&&(0,t.jsxs)(a.Z,{severity:"error",sx:{mb:3},children:["Failed to load worlds: ",W.message]}),P.isError&&(0,t.jsxs)(a.Z,{severity:"error",sx:{mb:3},children:["Failed to create world: ",null===(e=P.error)||void 0===e?void 0:e.message]}),H.isError&&(0,t.jsxs)(a.Z,{severity:"error",sx:{mb:3},children:["Failed to assign world: ",null===(n=H.error)||void 0===n?void 0:n.message]}),D.isError&&(0,t.jsxs)(a.Z,{severity:"error",sx:{mb:3},children:["Failed to release world: ",null===(s=D.error)||void 0===s?void 0:s.message]}),F.isError&&(0,t.jsxs)(a.Z,{severity:"error",sx:{mb:3},children:["Failed to delete world: ",null===(j=F.error)||void 0===j?void 0:j.message]}),I?(0,t.jsx)(l.Z,{sx:{display:"flex",justifyContent:"center",py:8},children:(0,t.jsx)(o.Z,{})}):(0,t.jsx)(E,{worlds:(null==A?void 0:A.worlds)||[],onAssign:e=>w(e),onRelease:R,onDelete:e=>{S(e),k("")},onCreate:()=>b(!0),loadingWorlds:L}),(0,t.jsx)(N,{open:g,onClose:()=>{b(!1),P.reset()},onSubmit:e=>{P.mutate(e,{onSuccess:()=>{b(!1)}})},loading:P.isPending}),(0,t.jsx)(V,{open:!!y,worldName:y||"",onClose:()=>w(null),onSubmit:(e,n)=>{M(n=>[...n,e]),H.mutate({worldName:e,serverName:n},{onSuccess:()=>{w(null)},onSettled:()=>{M(n=>n.filter(n=>n!==e))}})},loading:H.isPending}),(0,t.jsxs)(x.Z,{open:!!C,onClose:()=>{S(null),k("")},maxWidth:"sm",fullWidth:!0,children:[(0,t.jsx)(u.Z,{children:"Delete World"}),(0,t.jsxs)(h.Z,{children:[(0,t.jsxs)(c.Z,{sx:{mb:2},children:["This action cannot be undone. Type ",(0,t.jsx)("strong",{children:C})," to confirm deletion."]}),(0,t.jsx)(v.Z,{label:"World name",value:z,onChange:e=>k(e.target.value),fullWidth:!0,autoFocus:!0})]}),(0,t.jsxs)(m.Z,{sx:{px:3,pb:2},children:[(0,t.jsx)(i.Z,{onClick:()=>{S(null),k("")},children:"Cancel"}),(0,t.jsx)(i.Z,{variant:"contained",color:"error",onClick:()=>{C&&z===C&&(M(e=>[...e,C]),F.mutate({name:C,force:!0},{onSuccess:()=>{S(null),k("")},onSettled:()=>{M(e=>e.filter(e=>e!==C))}}))},disabled:z!==C||F.isPending,startIcon:F.isPending?(0,t.jsx)(o.Z,{size:16}):null,children:F.isPending?"Deleting...":"Delete"})]})]})]})}}},function(e){e.O(0,[6812,9760,6758,680,1668,7436,1071,540,4416,521,5511,7359,880,6909,2666,3669,2757,1744],function(){return e(e.s=6199)}),_N_E=e.O()}]);
@@ -1 +1 @@
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 g}});var n=t(81500),s=t(32324),i=t(35106),a=t(70316),l=t(65951),o=t(34519),d=t(28057),u=t(69899),c=t(11379),x=t(9049);function h(e){return(0,x.ZP)("MuiCard",e)}(0,c.Z)("MuiCard",["root"]);var m=t(94655);let p=["className","raised"],f=e=>{let{classes:r}=e;return(0,l.Z)({root:["root"]},h,r)},Z=(0,o.ZP)(u.Z,{name:"MuiCard",slot:"Root",overridesResolver:(e,r)=>r.root})(()=>({overflow:"hidden"}));var g=i.forwardRef(function(e,r){let t=(0,d.i)({props:e,name:"MuiCard"}),{className:i,raised:l=!1}=t,o=(0,s.Z)(t,p),u=(0,n.Z)({},t,{raised:l}),c=f(u);return(0,m.jsx)(Z,(0,n.Z)({className:(0,a.Z)(c.root,i),elevation:l?8:void 0,ref:r,ownerState:u},o))})},41565:function(e,r,t){"use strict";t.d(r,{Z:function(){return Z}});var n=t(81500),s=t(32324),i=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 h=t(94655);let m=["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 Z=i.forwardRef(function(e,r){let t=(0,d.i)({props:e,name:"MuiCardContent"}),{className:i,component:l="div"}=t,o=(0,s.Z)(t,m),u=(0,n.Z)({},t,{component:l}),c=p(u);return(0,h.jsx)(f,(0,n.Z)({as:l,className:(0,a.Z)(c.root,i),ownerState:u,ref:r},o))})},10672:function(e,r,t){"use strict";t.r(r),t.d(r,{default:function(){return h}});var n=t(94655),s=t(74228),i=t(67337),a=t(7281),l=t(628),o=t(41565),d=t(31317),u=t(41261),c=t(85480),x=t(46725);function h(){let e=(0,s.useRouter)();return(0,n.jsx)(i.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:x.default,href:"/signup",underline:"hover",children:"Sign up"})]})})]})})})})}},85480:function(e,r,t){"use strict";t.d(r,{U0:function(){return m},WS:function(){return p},Ie:function(){return q}});var n=t(94655),s=t(35106),i=t(7281),a=t(81071),l=t(97436),o=t(52082),d=t(79983),u=t(30417),c=t(36848),x=t(554),h=t(6986);function m(e){let{onSuccess:r}=e,[t,m]=(0,s.useState)(""),[p,f]=(0,s.useState)(""),[Z,g]=(0,s.useState)(!1),[j,v]=(0,s.useState)({}),[y,b]=(0,s.useState)(null),[C,w]=(0,s.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"),v(e),0===Object.keys(e).length},P=async e=>{if(e.preventDefault(),b(null),S()){w(!0);try{let e=await h.cg.email({email:t,password:p});if(e.error){b(e.error.message||"Invalid credentials"),w(!1);return}r&&r()}catch(e){b("An unexpected error occurred. Please try again."),w(!1)}}};return(0,n.jsxs)(i.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=>m(e.target.value),error:!!j.email,helperText:j.email,disabled:C,fullWidth:!0,required:!0}),(0,n.jsx)(l.Z,{label:"Password",type:Z?"text":"password",value:p,onChange:e=>f(e.target.value),error:!!j.password,helperText:j.password,disabled:C,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:()=>{g(!Z)},edge:"end",children:Z?(0,n.jsx)(c.Z,{}):(0,n.jsx)(x.Z,{})})})}}),(0,n.jsx)(u.Z,{type:"submit",variant:"contained",color:"primary",disabled:C,fullWidth:!0,size:"large",children:C?"Signing in...":"Sign In"})]})}function p(e){let{onSuccess:r}=e,[t,m]=(0,s.useState)(""),[p,f]=(0,s.useState)(""),[Z,g]=(0,s.useState)(""),[j,v]=(0,s.useState)(""),[y,b]=(0,s.useState)(!1),[C,w]=(0,s.useState)(!1),[S,P]=(0,s.useState)({}),[k,W]=(0,s.useState)(null),[q,I]=(0,s.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",Z?Z.length<8&&(e.password="Password must be at least 8 characters"):e.password="Password is required",j?Z!==j&&(e.confirmPassword="Passwords do not match"):e.confirmPassword="Please confirm your password",P(e),0===Object.keys(e).length},U=async e=>{if(e.preventDefault(),W(null),R()){I(!0);try{let e=await h.y1.email({email:p,password:Z,name:t});if(e.error){W(e.error.message||"Registration failed"),I(!1);return}r&&r()}catch(e){W("An unexpected error occurred. Please try again."),I(!1)}}};return(0,n.jsxs)(i.Z,{component:"form",onSubmit:U,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=>m(e.target.value),error:!!S.name,helperText:S.name,disabled:q,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:q,fullWidth:!0,required:!0}),(0,n.jsx)(l.Z,{label:"Password",type:y?"text":"password",value:Z,onChange:e=>g(e.target.value),error:!!S.password,helperText:S.password,disabled:q,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:C?"text":"password",value:j,onChange:e=>v(e.target.value),error:!!S.confirmPassword,helperText:S.confirmPassword,disabled:q,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:()=>{w(!C)},edge:"end",children:C?(0,n.jsx)(c.Z,{}):(0,n.jsx)(x.Z,{})})})}}),(0,n.jsx)(u.Z,{type:"submit",variant:"contained",color:"primary",disabled:q,fullWidth:!0,size:"large",children:q?"Creating account...":"Sign Up"})]})}var f=t(74228),Z=t(93017),g=t(86702),j=t(35694),v=t(31317),y=t(25333),b=t(69123),C=t(7178),w=t(17820),S=t(73424),P=t(25169),k=t(41094),W=t(78319);function q(){let e=(0,f.useRouter)(),{data:r,isPending:t}=(0,h.kP)(),[a,l]=(0,s.useState)(null),o=()=>{l(null)},c=async()=>{o(),await (0,h.w7)(),e.push("/login")};if(t)return(0,n.jsx)(i.Z,{sx:{display:"flex",alignItems:"center",justifyContent:"center"},children:(0,n.jsx)(Z.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,m=((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)(g.Z,{sx:{bgcolor:"primary.main"},children:m})}),(0,n.jsxs)(j.Z,{anchorEl:a,open:!!a,onClose:o,anchorOrigin:{vertical:"bottom",horizontal:"right"},transformOrigin:{vertical:"top",horizontal:"right"},sx:{mt:1},children:[(0,n.jsxs)(i.Z,{sx:{px:2,py:1.5,minWidth:200},children:[(0,n.jsx)(v.Z,{variant:"subtitle1",fontWeight:"600",children:x.name||"User"}),(0,n.jsx)(v.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,{}),"admin"===x.role&&(0,n.jsxs)(C.Z,{onClick:()=>{o(),e.push("/admin/users")},children:[(0,n.jsx)(w.Z,{children:(0,n.jsx)(P.Z,{fontSize:"small"})}),(0,n.jsx)(S.Z,{children:"Users"})]}),(0,n.jsxs)(C.Z,{onClick:()=>{o(),e.push("/settings")},children:[(0,n.jsx)(w.Z,{children:(0,n.jsx)(k.Z,{fontSize:"small"})}),(0,n.jsx)(S.Z,{children:"Settings"})]}),(0,n.jsxs)(C.Z,{onClick:c,children:[(0,n.jsx)(w.Z,{children:(0,n.jsx)(W.Z,{fontSize:"small"})}),(0,n.jsx)(S.Z,{children:"Logout"})]})]})]})}},6986:function(e,r,t){"use strict";t.d(r,{Cp:function(){return x},Nq:function(){return c},cg:function(){return l},kP:function(){return u},w7:function(){return o},y1:function(){return d},zB:function(){return h}});var n=t(77054),s=t(61648),i=t(35016);let a=(0,n.X)({baseURL:i.env.NEXT_PUBLIC_BETTER_AUTH_URL||"",plugins:[(0,s.zB)()]}),{signIn:l,signOut:o,signUp:d,useSession:u,updateUser:c,changePassword:x}=a,h=a.admin}},function(e){e.O(0,[6812,9760,6758,680,1668,7436,1071,2542,55,6857,1544,563,3669,2757,1744],function(){return e(e.s=40527)}),_N_E=e.O()}]);
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 g}});var n=t(81500),s=t(32324),i=t(35106),a=t(70316),l=t(65951),o=t(34519),d=t(28057),u=t(69899),c=t(11379),x=t(9049);function h(e){return(0,x.ZP)("MuiCard",e)}(0,c.Z)("MuiCard",["root"]);var m=t(94655);let p=["className","raised"],f=e=>{let{classes:r}=e;return(0,l.Z)({root:["root"]},h,r)},Z=(0,o.ZP)(u.Z,{name:"MuiCard",slot:"Root",overridesResolver:(e,r)=>r.root})(()=>({overflow:"hidden"}));var g=i.forwardRef(function(e,r){let t=(0,d.i)({props:e,name:"MuiCard"}),{className:i,raised:l=!1}=t,o=(0,s.Z)(t,p),u=(0,n.Z)({},t,{raised:l}),c=f(u);return(0,m.jsx)(Z,(0,n.Z)({className:(0,a.Z)(c.root,i),elevation:l?8:void 0,ref:r,ownerState:u},o))})},41565:function(e,r,t){"use strict";t.d(r,{Z:function(){return Z}});var n=t(81500),s=t(32324),i=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 h=t(94655);let m=["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 Z=i.forwardRef(function(e,r){let t=(0,d.i)({props:e,name:"MuiCardContent"}),{className:i,component:l="div"}=t,o=(0,s.Z)(t,m),u=(0,n.Z)({},t,{component:l}),c=p(u);return(0,h.jsx)(f,(0,n.Z)({as:l,className:(0,a.Z)(c.root,i),ownerState:u,ref:r},o))})},10672:function(e,r,t){"use strict";t.r(r),t.d(r,{default:function(){return h}});var n=t(94655),s=t(74228),i=t(67337),a=t(7281),l=t(628),o=t(41565),d=t(31317),u=t(41261),c=t(85480),x=t(46725);function h(){let e=(0,s.useRouter)();return(0,n.jsx)(i.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:x.default,href:"/signup",underline:"hover",children:"Sign up"})]})})]})})})})}},85480:function(e,r,t){"use strict";t.d(r,{U0:function(){return m},WS:function(){return p},Ie:function(){return q}});var n=t(94655),s=t(35106),i=t(7281),a=t(81071),l=t(97436),o=t(52082),d=t(79983),u=t(30417),c=t(36848),x=t(554),h=t(6986);function m(e){let{onSuccess:r}=e,[t,m]=(0,s.useState)(""),[p,f]=(0,s.useState)(""),[Z,g]=(0,s.useState)(!1),[j,v]=(0,s.useState)({}),[y,b]=(0,s.useState)(null),[C,w]=(0,s.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"),v(e),0===Object.keys(e).length},P=async e=>{if(e.preventDefault(),b(null),S()){w(!0);try{let e=await h.cg.email({email:t,password:p});if(e.error){b(e.error.message||"Invalid credentials"),w(!1);return}r&&r()}catch(e){b("An unexpected error occurred. Please try again."),w(!1)}}};return(0,n.jsxs)(i.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=>m(e.target.value),error:!!j.email,helperText:j.email,disabled:C,fullWidth:!0,required:!0}),(0,n.jsx)(l.Z,{label:"Password",type:Z?"text":"password",value:p,onChange:e=>f(e.target.value),error:!!j.password,helperText:j.password,disabled:C,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:()=>{g(!Z)},edge:"end",children:Z?(0,n.jsx)(c.Z,{}):(0,n.jsx)(x.Z,{})})})}}),(0,n.jsx)(u.Z,{type:"submit",variant:"contained",color:"primary",disabled:C,fullWidth:!0,size:"large",children:C?"Signing in...":"Sign In"})]})}function p(e){let{onSuccess:r}=e,[t,m]=(0,s.useState)(""),[p,f]=(0,s.useState)(""),[Z,g]=(0,s.useState)(""),[j,v]=(0,s.useState)(""),[y,b]=(0,s.useState)(!1),[C,w]=(0,s.useState)(!1),[S,P]=(0,s.useState)({}),[k,W]=(0,s.useState)(null),[q,I]=(0,s.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",Z?Z.length<8&&(e.password="Password must be at least 8 characters"):e.password="Password is required",j?Z!==j&&(e.confirmPassword="Passwords do not match"):e.confirmPassword="Please confirm your password",P(e),0===Object.keys(e).length},U=async e=>{if(e.preventDefault(),W(null),R()){I(!0);try{let e=await h.y1.email({email:p,password:Z,name:t});if(e.error){W(e.error.message||"Registration failed"),I(!1);return}r&&r()}catch(e){W("An unexpected error occurred. Please try again."),I(!1)}}};return(0,n.jsxs)(i.Z,{component:"form",onSubmit:U,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=>m(e.target.value),error:!!S.name,helperText:S.name,disabled:q,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:q,fullWidth:!0,required:!0}),(0,n.jsx)(l.Z,{label:"Password",type:y?"text":"password",value:Z,onChange:e=>g(e.target.value),error:!!S.password,helperText:S.password,disabled:q,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:C?"text":"password",value:j,onChange:e=>v(e.target.value),error:!!S.confirmPassword,helperText:S.confirmPassword,disabled:q,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:()=>{w(!C)},edge:"end",children:C?(0,n.jsx)(c.Z,{}):(0,n.jsx)(x.Z,{})})})}}),(0,n.jsx)(u.Z,{type:"submit",variant:"contained",color:"primary",disabled:q,fullWidth:!0,size:"large",children:q?"Creating account...":"Sign Up"})]})}var f=t(74228),Z=t(93017),g=t(86702),j=t(35694),v=t(31317),y=t(25333),b=t(69123),C=t(7178),w=t(17820),S=t(73424),P=t(25169),k=t(41094),W=t(78319);function q(){let e=(0,f.useRouter)(),{data:r,isPending:t}=(0,h.kP)(),[a,l]=(0,s.useState)(null),o=()=>{l(null)},c=async()=>{o(),await (0,h.w7)(),e.push("/login")};if(t)return(0,n.jsx)(i.Z,{sx:{display:"flex",alignItems:"center",justifyContent:"center"},children:(0,n.jsx)(Z.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,m=((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)(g.Z,{sx:{bgcolor:"primary.main"},children:m})}),(0,n.jsxs)(j.Z,{anchorEl:a,open:!!a,onClose:o,anchorOrigin:{vertical:"bottom",horizontal:"right"},transformOrigin:{vertical:"top",horizontal:"right"},sx:{mt:1},children:[(0,n.jsxs)(i.Z,{sx:{px:2,py:1.5,minWidth:200},children:[(0,n.jsx)(v.Z,{variant:"subtitle1",fontWeight:"600",children:x.name||"User"}),(0,n.jsx)(v.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,{}),"admin"===x.role&&(0,n.jsxs)(C.Z,{onClick:()=>{o(),e.push("/admin/users")},children:[(0,n.jsx)(w.Z,{children:(0,n.jsx)(P.Z,{fontSize:"small"})}),(0,n.jsx)(S.Z,{children:"Users"})]}),(0,n.jsxs)(C.Z,{onClick:()=>{o(),e.push("/settings")},children:[(0,n.jsx)(w.Z,{children:(0,n.jsx)(k.Z,{fontSize:"small"})}),(0,n.jsx)(S.Z,{children:"Settings"})]}),(0,n.jsxs)(C.Z,{onClick:c,children:[(0,n.jsx)(w.Z,{children:(0,n.jsx)(W.Z,{fontSize:"small"})}),(0,n.jsx)(S.Z,{children:"Logout"})]})]})]})}},6986:function(e,r,t){"use strict";t.d(r,{Cp:function(){return x},Nq:function(){return c},cg:function(){return l},kP:function(){return u},w7:function(){return o},y1:function(){return d},zB:function(){return h}});var n=t(77054),s=t(61648),i=t(35016);let a=(0,n.X)({baseURL:i.env.NEXT_PUBLIC_BETTER_AUTH_URL||"",plugins:[(0,s.zB)()]}),{signIn:l,signOut:o,signUp:d,useSession:u,updateUser:c,changePassword:x}=a,h=a.admin}},function(e){e.O(0,[6812,9760,6758,680,1668,7436,1071,2542,55,7727,9949,3669,2757,1744],function(){return e(e.s=40527)}),_N_E=e.O()}]);