most-box 0.1.4 → 0.1.5

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 (186) hide show
  1. package/README.md +7 -4
  2. package/electron/main.js +31 -10
  3. package/out/404/index.html +2 -2
  4. package/out/404.html +2 -2
  5. package/out/__next.__PAGE__.txt +6 -6
  6. package/out/__next._full.txt +15 -15
  7. package/out/__next._head.txt +3 -3
  8. package/out/__next._index.txt +7 -7
  9. package/out/__next._tree.txt +4 -4
  10. package/out/_next/static/chunks/{0hpev4am9jpmu.css → 0.4ov9319fecg.css} +1 -1
  11. package/out/_next/static/chunks/0._8s6pbfw.xk.js +1 -0
  12. package/out/_next/static/chunks/02jvyg27pp0mz.js +1 -0
  13. package/out/_next/static/chunks/{0pt.5cg1t09qs.js → 08qqf0rsi3oot.js} +1 -1
  14. package/out/_next/static/chunks/{0adx~d-j05c9d.css → 09h7l4i38xc7q.css} +1 -1
  15. package/out/_next/static/chunks/09hqx79-jkvm_.css +1 -0
  16. package/out/_next/static/chunks/09vcm1ku9k7o8.js +1 -0
  17. package/out/_next/static/chunks/0c6e_d2jq179x.js +1 -0
  18. package/out/_next/static/chunks/0ccalho416.d7.js +1 -0
  19. package/out/_next/static/chunks/0exj_tg.ew-t3.js +1 -0
  20. package/out/_next/static/chunks/0f-wz5d~tv-r4.js +1 -0
  21. package/out/_next/static/chunks/0f0jhsujtf-61.js +1 -0
  22. package/out/_next/static/chunks/0ig8a4sazk3~2.css +1 -0
  23. package/out/_next/static/chunks/0iq1h7g4dudg8.js +1 -0
  24. package/out/_next/static/chunks/0knnzo9aih48r.js +1 -0
  25. package/out/_next/static/chunks/0nzyk~sg_tn._.js +1 -0
  26. package/out/_next/static/chunks/0w~2fjq86t7c7.css +1 -0
  27. package/out/_next/static/chunks/0xrqerhosrp9~.js +1 -0
  28. package/out/_next/static/chunks/14-fm9r_mom81.js +1 -0
  29. package/out/_next/static/chunks/14jhy~xia8lh8.js +1 -0
  30. package/out/_next/static/chunks/{turbopack-0xta0kqwzkf28.js → turbopack-05qngmxam3ar~.js} +1 -1
  31. package/out/_not-found/__next._full.txt +12 -12
  32. package/out/_not-found/__next._head.txt +3 -3
  33. package/out/_not-found/__next._index.txt +7 -7
  34. package/out/_not-found/__next._not-found.__PAGE__.txt +4 -4
  35. package/out/_not-found/__next._not-found.txt +3 -3
  36. package/out/_not-found/__next._tree.txt +2 -2
  37. package/out/_not-found/index.html +2 -2
  38. package/out/_not-found/index.txt +12 -12
  39. package/out/admin/__next._full.txt +14 -14
  40. package/out/admin/__next._head.txt +3 -3
  41. package/out/admin/__next._index.txt +7 -7
  42. package/out/admin/__next._tree.txt +3 -3
  43. package/out/admin/__next.admin.__PAGE__.txt +4 -4
  44. package/out/admin/__next.admin.txt +4 -4
  45. package/out/admin/index.html +2 -2
  46. package/out/admin/index.txt +14 -14
  47. package/out/app/__next._full.txt +13 -13
  48. package/out/app/__next._head.txt +3 -3
  49. package/out/app/__next._index.txt +7 -7
  50. package/out/app/__next._tree.txt +2 -2
  51. package/out/app/__next.app.__PAGE__.txt +4 -4
  52. package/out/app/__next.app.txt +3 -3
  53. package/out/app/index.html +2 -2
  54. package/out/app/index.txt +13 -13
  55. package/out/chat/__next._full.txt +14 -14
  56. package/out/chat/__next._head.txt +3 -3
  57. package/out/chat/__next._index.txt +7 -7
  58. package/out/chat/__next._tree.txt +3 -3
  59. package/out/chat/__next.chat.__PAGE__.txt +4 -4
  60. package/out/chat/__next.chat.txt +4 -4
  61. package/out/chat/index.html +2 -2
  62. package/out/chat/index.txt +14 -14
  63. package/out/chat/join/__next._full.txt +14 -14
  64. package/out/chat/join/__next._head.txt +3 -3
  65. package/out/chat/join/__next._index.txt +7 -7
  66. package/out/chat/join/__next._tree.txt +3 -3
  67. package/out/chat/join/__next.chat.join.__PAGE__.txt +4 -4
  68. package/out/chat/join/__next.chat.join.txt +3 -3
  69. package/out/chat/join/__next.chat.txt +4 -4
  70. package/out/chat/join/index.html +2 -2
  71. package/out/chat/join/index.txt +14 -14
  72. package/out/download/__next._full.txt +33 -35
  73. package/out/download/__next._head.txt +3 -3
  74. package/out/download/__next._index.txt +7 -7
  75. package/out/download/__next._tree.txt +3 -3
  76. package/out/download/__next.download.__PAGE__.txt +6 -6
  77. package/out/download/__next.download.txt +3 -3
  78. package/out/download/index.html +2 -2
  79. package/out/download/index.txt +33 -35
  80. package/out/favicon.ico +0 -0
  81. package/out/game/__next._full.txt +11 -11
  82. package/out/game/__next._head.txt +3 -3
  83. package/out/game/__next._index.txt +7 -7
  84. package/out/game/__next._tree.txt +2 -2
  85. package/out/game/__next.game.__PAGE__.txt +2 -2
  86. package/out/game/__next.game.txt +3 -3
  87. package/out/game/gandengyan/__next._full.txt +13 -13
  88. package/out/game/gandengyan/__next._head.txt +3 -3
  89. package/out/game/gandengyan/__next._index.txt +7 -7
  90. package/out/game/gandengyan/__next._tree.txt +2 -2
  91. package/out/game/gandengyan/__next.game.gandengyan.__PAGE__.txt +4 -4
  92. package/out/game/gandengyan/__next.game.gandengyan.txt +3 -3
  93. package/out/game/gandengyan/__next.game.txt +3 -3
  94. package/out/game/gandengyan/index.html +2 -2
  95. package/out/game/gandengyan/index.txt +13 -13
  96. package/out/game/index.html +1 -1
  97. package/out/game/index.txt +11 -11
  98. package/out/game/zhajinhua/__next._full.txt +13 -13
  99. package/out/game/zhajinhua/__next._head.txt +3 -3
  100. package/out/game/zhajinhua/__next._index.txt +7 -7
  101. package/out/game/zhajinhua/__next._tree.txt +2 -2
  102. package/out/game/zhajinhua/__next.game.txt +3 -3
  103. package/out/game/zhajinhua/__next.game.zhajinhua.__PAGE__.txt +4 -4
  104. package/out/game/zhajinhua/__next.game.zhajinhua.txt +3 -3
  105. package/out/game/zhajinhua/index.html +2 -2
  106. package/out/game/zhajinhua/index.txt +13 -13
  107. package/out/index.html +2 -2
  108. package/out/index.txt +15 -15
  109. package/out/logo-512.png +0 -0
  110. package/out/logo.ico +0 -0
  111. package/out/logo.svg +12 -0
  112. package/out/note/__next._full.txt +13 -13
  113. package/out/note/__next._head.txt +3 -3
  114. package/out/note/__next._index.txt +7 -7
  115. package/out/note/__next._tree.txt +2 -2
  116. package/out/note/__next.note.__PAGE__.txt +4 -4
  117. package/out/note/__next.note.txt +3 -3
  118. package/out/note/index.html +2 -2
  119. package/out/note/index.txt +13 -13
  120. package/out/ping/__next._full.txt +14 -14
  121. package/out/ping/__next._head.txt +3 -3
  122. package/out/ping/__next._index.txt +7 -7
  123. package/out/ping/__next._tree.txt +3 -3
  124. package/out/ping/__next.ping.__PAGE__.txt +5 -5
  125. package/out/ping/__next.ping.txt +3 -3
  126. package/out/ping/index.html +2 -2
  127. package/out/ping/index.txt +14 -14
  128. package/out/web3/__next._full.txt +13 -13
  129. package/out/web3/__next._head.txt +3 -3
  130. package/out/web3/__next._index.txt +7 -7
  131. package/out/web3/__next._tree.txt +2 -2
  132. package/out/web3/__next.web3.__PAGE__.txt +4 -4
  133. package/out/web3/__next.web3.txt +3 -3
  134. package/out/web3/ed25519/__next._full.txt +11 -11
  135. package/out/web3/ed25519/__next._head.txt +3 -3
  136. package/out/web3/ed25519/__next._index.txt +7 -7
  137. package/out/web3/ed25519/__next._tree.txt +2 -2
  138. package/out/web3/ed25519/__next.web3.ed25519.__PAGE__.txt +2 -2
  139. package/out/web3/ed25519/__next.web3.ed25519.txt +3 -3
  140. package/out/web3/ed25519/__next.web3.txt +3 -3
  141. package/out/web3/ed25519/index.html +1 -1
  142. package/out/web3/ed25519/index.txt +11 -11
  143. package/out/web3/index.html +2 -2
  144. package/out/web3/index.txt +13 -13
  145. package/out/web3/tools/__next._full.txt +11 -11
  146. package/out/web3/tools/__next._head.txt +3 -3
  147. package/out/web3/tools/__next._index.txt +7 -7
  148. package/out/web3/tools/__next._tree.txt +2 -2
  149. package/out/web3/tools/__next.web3.tools.__PAGE__.txt +2 -2
  150. package/out/web3/tools/__next.web3.tools.txt +3 -3
  151. package/out/web3/tools/__next.web3.txt +3 -3
  152. package/out/web3/tools/index.html +1 -1
  153. package/out/web3/tools/index.txt +11 -11
  154. package/package.json +5 -5
  155. package/public/favicon.ico +0 -0
  156. package/public/logo-512.png +0 -0
  157. package/public/logo.ico +0 -0
  158. package/public/logo.svg +12 -0
  159. package/server/src/games/gandengyan.js +9 -5
  160. package/server/src/http/app.js +15 -13
  161. package/server/src/http/uploads.js +1 -0
  162. package/server/src/index.js +266 -89
  163. package/server/src/utils/avatar.js +3 -2
  164. package/out/_next/static/chunks/03gsbg0fr00ey.js +0 -1
  165. package/out/_next/static/chunks/0ao1lbi4b.sfa.js +0 -1
  166. package/out/_next/static/chunks/0fo9-h4knidcz.js +0 -1
  167. package/out/_next/static/chunks/0g_a~e050bgzg.css +0 -1
  168. package/out/_next/static/chunks/0i9sfdypwuw8~.js +0 -1
  169. package/out/_next/static/chunks/0olqjomda37-e.js +0 -1
  170. package/out/_next/static/chunks/0puk.7e.tr2zy.js +0 -1
  171. package/out/_next/static/chunks/0qgx9t4jx16ua.css +0 -1
  172. package/out/_next/static/chunks/0s1k6rlwy02c2.js +0 -1
  173. package/out/_next/static/chunks/0sgltmtk_9s8p.css +0 -1
  174. package/out/_next/static/chunks/0snehvtvu1n4q.js +0 -1
  175. package/out/_next/static/chunks/0s~g.l~x049o2.js +0 -1
  176. package/out/_next/static/chunks/0u38kke9vhobe.js +0 -1
  177. package/out/_next/static/chunks/0vd4_a5x-wpdh.js +0 -1
  178. package/out/_next/static/chunks/10f-t2n4y1zx8.js +0 -1
  179. package/out/_next/static/chunks/13jdyag9a-~kk.js +0 -1
  180. package/out/_next/static/chunks/153-sz7s.qml2.js +0 -1
  181. package/out/_next/static/chunks/17cwkb2yn_akx.js +0 -1
  182. /package/out/_next/static/{sSvbBrwXZY-4lBmcHshga → 2smv1H9Y4Z2Ri-SL-UFgR}/_buildManifest.js +0 -0
  183. /package/out/_next/static/{sSvbBrwXZY-4lBmcHshga → 2smv1H9Y4Z2Ri-SL-UFgR}/_clientMiddlewareManifest.js +0 -0
  184. /package/out/_next/static/{sSvbBrwXZY-4lBmcHshga → 2smv1H9Y4Z2Ri-SL-UFgR}/_ssgManifest.js +0 -0
  185. /package/out/{pwa-512x512.png → avatar.png} +0 -0
  186. /package/public/{pwa-512x512.png → avatar.png} +0 -0
@@ -1 +0,0 @@
1
- (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,96699,e=>{"use strict";let t=(0,e.i(56420).default)("moon",[["path",{d:"M20.985 12.486a9 9 0 1 1-9.473-9.472c.405-.022.617.46.402.803a6 6 0 0 0 8.268 8.268c.344-.215.825-.004.803.401",key:"kfwtm"}]]);e.s(["Moon",0,t],96699)},35965,e=>{"use strict";let t=(0,e.i(56420).default)("sun",[["circle",{cx:"12",cy:"12",r:"4",key:"4exip2"}],["path",{d:"M12 2v2",key:"tus03m"}],["path",{d:"M12 20v2",key:"1lh1kg"}],["path",{d:"m4.93 4.93 1.41 1.41",key:"149t6j"}],["path",{d:"m17.66 17.66 1.41 1.41",key:"ptbguv"}],["path",{d:"M2 12h2",key:"1t8f8n"}],["path",{d:"M20 12h2",key:"1q8mjw"}],["path",{d:"m6.34 17.66-1.41 1.41",key:"1m8zz5"}],["path",{d:"m19.07 4.93-1.41 1.41",key:"1shlcs"}]]);e.s(["Sun",0,t],35965)},89664,e=>{"use strict";let t=(0,e.i(56420).default)("check",[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]]);e.s(["Check",0,t],89664)},10566,e=>{"use strict";let t=(0,e.i(56420).default)("notebook-pen",[["path",{d:"M13.4 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-7.4",key:"re6nr2"}],["path",{d:"M2 6h4",key:"aawbzj"}],["path",{d:"M2 10h4",key:"l0bgd4"}],["path",{d:"M2 14h4",key:"1gsvsf"}],["path",{d:"M2 18h4",key:"1bu2t1"}],["path",{d:"M21.378 5.626a1 1 0 1 0-3.004-3.004l-5.01 5.012a2 2 0 0 0-.506.854l-.837 2.87a.5.5 0 0 0 .62.62l2.87-.837a2 2 0 0 0 .854-.506z",key:"pqwjuv"}]]);e.s(["NotebookPen",0,t],10566)},50285,e=>{"use strict";let t=(0,e.i(56420).default)("hard-drive",[["path",{d:"M10 16h.01",key:"1bzywj"}],["path",{d:"M2.212 11.577a2 2 0 0 0-.212.896V18a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-5.527a2 2 0 0 0-.212-.896L18.55 5.11A2 2 0 0 0 16.76 4H7.24a2 2 0 0 0-1.79 1.11z",key:"18tbho"}],["path",{d:"M21.946 12.013H2.054",key:"zqlbp7"}],["path",{d:"M6 16h.01",key:"1pmjb7"}]]);e.s(["HardDrive",0,t],50285)},70904,e=>{"use strict";let t=(0,e.i(56420).default)("wallet",[["path",{d:"M19 7V4a1 1 0 0 0-1-1H5a2 2 0 0 0 0 4h15a1 1 0 0 1 1 1v4h-3a2 2 0 0 0 0 4h3a1 1 0 0 0 1-1v-2a1 1 0 0 0-1-1",key:"18etb6"}],["path",{d:"M3 5v14a2 2 0 0 0 2 2h15a1 1 0 0 0 1-1v-4",key:"xoc0q4"}]]);e.s(["Wallet",0,t],70904)},82022,e=>{"use strict";let t=(0,e.i(56420).default)("external-link",[["path",{d:"M15 3h6v6",key:"1q9fwt"}],["path",{d:"M10 14 21 3",key:"gplh6r"}],["path",{d:"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6",key:"a6xqqp"}]]);e.s(["ExternalLink",0,t],82022)},68590,e=>{"use strict";let t=(0,e.i(56420).default)("message-square",[["path",{d:"M22 17a2 2 0 0 1-2 2H6.828a2 2 0 0 0-1.414.586l-2.202 2.202A.71.71 0 0 1 2 21.286V5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2z",key:"18887p"}]]);e.s(["MessageSquare",0,t],68590)},40983,e=>{"use strict";var t=e.i(18050),a=e.i(71645),s=e.i(22016),l=e.i(96699),i=e.i(35965);function r({size:e=24}){return(0,t.jsxs)("svg",{width:e,height:e,viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[(0,t.jsx)("rect",{x:"2",y:"2",width:"8",height:"8",rx:"2",fill:"var(--accent)",opacity:"0.4"}),(0,t.jsx)("rect",{x:"14",y:"2",width:"8",height:"8",rx:"2",fill:"var(--accent)",opacity:"0.7"}),(0,t.jsx)("rect",{x:"2",y:"14",width:"8",height:"8",rx:"2",fill:"var(--accent)",opacity:"0.7"}),(0,t.jsx)("rect",{x:"14",y:"14",width:"8",height:"8",rx:"2",fill:"var(--accent)"})]})}function n(){let[e,n]=(0,a.useState)(!1);return(0,a.useEffect)(()=>{let e=localStorage.getItem("theme"),t=window.matchMedia("(prefers-color-scheme: dark)").matches;("dark"===e||!e&&t)&&n(!0)},[]),(0,a.useEffect)(()=>{document.documentElement.setAttribute("data-theme",e?"dark":"light"),localStorage.setItem("theme",e?"dark":"light")},[e]),(0,t.jsx)(t.Fragment,{children:(0,t.jsx)("nav",{className:"mkt-nav",children:(0,t.jsxs)("div",{className:"mkt-nav-inner",children:[(0,t.jsxs)(s.default,{href:"/",className:"mkt-nav-logo",children:[(0,t.jsx)(r,{}),"MOST PEOPLE"]}),(0,t.jsxs)("div",{className:"mkt-nav-cta",children:[(0,t.jsx)("button",{className:"mkt-theme-toggle",onClick:()=>n(!e),"aria-label":"切换主题",children:e?(0,t.jsx)(i.Sun,{size:16}):(0,t.jsx)(l.Moon,{size:16})}),(0,t.jsx)(s.default,{href:"/app/",className:"btn btn-primary",children:"开始使用"})]})]})})})}let c=[{href:"/",label:"关于"},{href:"/ping/",label:"网络"},{href:"https://github.com/most-people/most",label:"GitHub",external:!0}];function d(){return(0,t.jsx)("footer",{className:"mkt-footer",children:(0,t.jsx)("div",{className:"mkt-container",children:(0,t.jsxs)("div",{className:"mkt-footer-inner",children:[(0,t.jsx)("div",{className:"mkt-footer-links",children:c.map(e=>(0,t.jsx)(s.default,{href:e.href,...e.external?{target:"_blank",rel:"noopener noreferrer"}:{},children:e.label},e.href))}),(0,t.jsxs)("span",{className:"mkt-footer-copy",children:["© ",new Date().getFullYear()," MOST PEOPLE · MIT License"]})]})})})}e.s(["MarketingLayout",0,function({children:e}){return(0,t.jsxs)("div",{className:"mkt-layout",children:[(0,t.jsx)(n,{}),(0,t.jsx)("main",{className:"mkt-layout-main",children:e}),(0,t.jsx)(d,{})]})}],40983)},31713,e=>{"use strict";var t=e.i(18050),a=e.i(71645),s=e.i(22016),l=e.i(56420);let i=(0,l.default)("folder-open",[["path",{d:"m6 14 1.5-2.9A2 2 0 0 1 9.24 10H20a2 2 0 0 1 1.94 2.5l-1.54 6a2 2 0 0 1-1.95 1.5H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H18a2 2 0 0 1 2 2v2",key:"usdka0"}]]);var r=e.i(68590),n=e.i(10566),c=e.i(70904);let d=(0,l.default)("arrow-right",[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"m12 5 7 7-7 7",key:"xquz4c"}]]),o=(0,l.default)("arrow-up-right",[["path",{d:"M7 7h10v10",key:"1tivn9"}],["path",{d:"M7 17 17 7",key:"1vkiza"}]]);var h=e.i(89664),m=e.i(82022),p=e.i(62368),u=e.i(41220),x=e.i(50285);let k=(0,l.default)("gamepad-2",[["line",{x1:"6",x2:"10",y1:"11",y2:"11",key:"1gktln"}],["line",{x1:"8",x2:"8",y1:"9",y2:"13",key:"qnk9ow"}],["line",{x1:"15",x2:"15.01",y1:"12",y2:"12",key:"krot7o"}],["line",{x1:"18",x2:"18.01",y1:"10",y2:"10",key:"1lcuu1"}],["path",{d:"M17.32 5H6.68a4 4 0 0 0-3.978 3.59c-.006.052-.01.101-.017.152C2.604 9.416 2 14.456 2 16a3 3 0 0 0 3 3c1 0 1.5-.5 2-1l1.414-1.414A2 2 0 0 1 9.828 16h4.344a2 2 0 0 1 1.414.586L17 18c.5.5 1 1 2 1a3 3 0 0 0 3-3c0-1.545-.604-6.584-.685-7.258-.007-.05-.011-.1-.017-.151A4 4 0 0 0 17.32 5z",key:"mfqc10"}]]);var j=e.i(3593);let f=[{id:"app",title:"MostBox",subtitle:"P2P 文件分享",icon:(0,t.jsx)(i,{size:28}),path:"/app/",requiresBackend:!0,hero:"P2P 文件分享,无需注册",desc:"基于 Hyperswarm 的去中心化文件传输,让文件分享回归点对点。MostBox 不是云盘;链接来自 CID,可用性来自当前在线种子。",features:["无需注册,打开浏览器即用","Hyperswarm P2P 直连传输","GB 级大文件流式处理","相同文件 = 相同 CID,链接可反复校验","下载完成后默认继续做种","相比微信、QQ 或网盘,不依赖中心化账号和云端托管","Web 端负责展示,完整发布、下载和持续做种依赖桌面客户端","MIT 开源,自托管,数据完全自主掌控"],steps:[{num:"1",title:"下载桌面客户端",desc:"支持 Windows、macOS 和 Linux,桌面端提供完整的 P2P 能力。",link:"/download",linkText:"前往下载页"},{num:"2",title:"安装并运行",desc:"安装后打开应用,即可使用。"},{num:"3",title:"开始分享",desc:"发布文件生成 most:// 链接,朋友下载校验通过后也会成为新的种子。"}]},{id:"chat",title:"P2P 聊天",subtitle:"频道加密通讯",icon:(0,t.jsx)(r.MessageSquare,{size:28}),path:"/chat/",requiresBackend:!0,hero:"去中心化频道聊天",desc:"基于 Hypercore 的 P2P 加密即时通讯。创建频道,邀请朋友,端到端加密,无需服务器中转。",features:["P2P 加密频道消息","本地登录身份保护消息署名","消息通过 Hyperswarm 网络同步","离线消息自动同步","无需中心化账号注册"],steps:[{num:"1",title:"下载桌面客户端",desc:"支持 Windows、macOS 和 Linux。",link:"/download",linkText:"前往下载页"},{num:"2",title:"创建频道",desc:"输入任意频道名即可加入或创建。"},{num:"3",title:"开始聊天",desc:"发送消息,P2P 网络自动同步给所有在线节点。"}]},{id:"note",title:"笔记",subtitle:"加密云备份",icon:(0,t.jsx)(n.NotebookPen,{size:28}),path:"/note/",requiresBackend:!1,hero:"Web3 加密笔记",desc:"使用本地 Web3 密钥加密 Markdown 笔记,可在浏览器本地保存并按需同步到云端备份。",features:["Markdown 块编辑器","公开 / 私密笔记切换","文件夹、搜索和移动","Web3 登录态加密","云端备份与恢复","独立于 P2P 文件分享"],steps:[{num:"1",title:"生成 Web3 账号",desc:"用用户名和密码派生本地密钥。"},{num:"2",title:"创建笔记",desc:"写 Markdown,按需切换为私密内容。"},{num:"3",title:"备份恢复",desc:"登录后可把加密笔记同步到云端。"}]},{id:"game",title:"游戏",subtitle:"P2P 牌桌",icon:(0,t.jsx)(k,{size:28}),path:"/game/gandengyan/",requiresBackend:!0,hero:"常驻节点里的 P2P 牌桌",desc:"默认进入干瞪眼,侧边栏可切换炸金花,统一复用 MostBox 频道消息和 WebSocket 订阅能力。",features:["使用 MostBox 本地账号进入房间","统一房间码和 P2P 频道同步","不新增独立服务端口","房间链接可分享给朋友","只保留 MVP 所需牌桌闭环"],steps:[{num:"1",title:"进入牌桌",desc:"默认打开干瞪眼,也可从侧边栏切换炸金花。"},{num:"2",title:"创建房间",desc:"生成房间码,复制链接发给朋友加入。"},{num:"3",title:"开始牌局",desc:"房主在线开局并推进牌桌状态。"}]},{id:"web3",title:"Web3",subtitle:"账户工具箱",icon:(0,t.jsx)(c.Wallet,{size:28}),path:"/web3/",requiresBackend:!1,hero:"确定性密钥派生工具箱",desc:"纯前端运行的 Web3 账户工具。输入用户名和密码,即可生成 Ed25519 / x25519 密钥对、助记词、以太坊地址,支持 PEM 导出和地址派生。",features:["纯前端运行,无需后端","Ed25519 / x25519 密钥对生成","BIP-39 助记词派生","以太坊地址与私钥导出","PEM 格式密钥导出","二维码展示地址与助记词"],steps:[{num:"1",title:"输入用户名",desc:"用户名 + 密码(可选)作为种子。"},{num:"2",title:"查看密钥",desc:"即时生成 Ed25519、x25519 公钥与 IPNS ID。"},{num:"3",title:"导出使用",desc:"复制地址、导出 PEM、派生子地址。"}]}];function y(){let e=(0,j.useAppStore)(e=>e.hasBackend),l=(0,j.useAppStore)(e=>e.openConnectModal),[i,r]=(0,a.useState)("app"),n=f.find(e=>e.id===i)||f[0];return(0,t.jsxs)("div",{className:"portal-page",children:[(0,t.jsx)("section",{className:"portal-hero",children:(0,t.jsxs)("div",{className:"mkt-container",children:[(0,t.jsx)("h1",{className:"portal-hero-title",children:"MOST PEOPLE"}),(0,t.jsx)("p",{className:"portal-hero-subtitle",children:"去中心化 P2P 工具箱"})]})}),(0,t.jsx)("section",{className:"portal-cards-section",children:(0,t.jsxs)("div",{className:"mkt-container",children:[(0,t.jsx)("div",{className:"portal-cards",children:f.map(a=>{let l=i===a.id,n=a.requiresBackend,c=n?!0===e?"connected":!1===e?"disconnected":"checking":"none";return(0,t.jsxs)("button",{className:`portal-card ${l?"active":""}`,onClick:()=>r(a.id),children:[(0,t.jsx)(s.default,{href:a.path,className:"btn btn-icon portal-card-open-btn",onClick:e=>e.stopPropagation(),title:`打开${a.title}`,children:(0,t.jsx)(o,{size:16})}),(0,t.jsx)("div",{className:"portal-card-icon",children:a.icon}),(0,t.jsx)("div",{className:"portal-card-title",children:a.title}),(0,t.jsx)("div",{className:"portal-card-subtitle",children:a.subtitle}),n?(0,t.jsxs)("div",{className:`portal-card-status ${c}`,children:["checking"===c&&(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("span",{className:"status-dot checking"}),"检测中"]}),"connected"===c&&(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("span",{className:"status-dot connected"}),"已连接"]}),"disconnected"===c&&(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("span",{className:"status-dot disconnected"}),"需连接"]})]}):(0,t.jsxs)("div",{className:"portal-card-status ready",children:[(0,t.jsx)("span",{className:"status-dot ready"}),"已就绪"]})]},a.id)})}),(0,t.jsxs)("div",{className:"portal-node-actions","aria-label":"节点入口",children:[(0,t.jsxs)("button",{onClick:l,className:"btn btn-secondary",children:[(0,t.jsx)(u.Server,{size:16}),"连接节点"]}),(0,t.jsxs)(s.default,{href:"/admin",className:"btn btn-secondary",children:[(0,t.jsx)(x.HardDrive,{size:16}),"节点管理"]})]})]})}),(0,t.jsx)("section",{className:"portal-marketing",children:(0,t.jsx)("div",{className:"mkt-container",children:(0,t.jsx)("div",{className:"portal-marketing-inner",children:(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)("div",{className:"portal-marketing-header",children:[(0,t.jsx)("h2",{children:n.hero}),(0,t.jsx)("p",{children:n.desc})]}),(0,t.jsx)("div",{className:"portal-marketing-features",children:n.features.map((e,a)=>(0,t.jsxs)("div",{className:"portal-feature-item",children:[(0,t.jsx)("span",{className:"portal-feature-icon",children:(0,t.jsx)(h.Check,{size:14,strokeWidth:3})}),(0,t.jsx)("span",{children:e})]},a))}),(0,t.jsx)("div",{className:"portal-marketing-steps",children:n.steps.map(e=>(0,t.jsxs)("div",{className:"portal-step",children:[(0,t.jsx)("span",{className:"portal-step-num",children:e.num}),(0,t.jsxs)("div",{className:"portal-step-content",children:[(0,t.jsx)("strong",{children:e.title}),(0,t.jsx)("p",{children:e.desc}),e.code&&(0,t.jsx)("code",{className:"portal-step-code",children:e.code}),e.link&&(0,t.jsx)("p",{className:"portal-step-link",children:(0,t.jsxs)("a",{href:e.link,target:"_blank",rel:"noopener noreferrer",children:[e.linkText," ",(0,t.jsx)(m.ExternalLink,{size:12})]})})]})]},e.num))}),(0,t.jsxs)("div",{className:"portal-actions",children:[(0,t.jsxs)(s.default,{href:n.path,className:"btn btn-primary",children:["进入 ",n.title,(0,t.jsx)(d,{size:16})]}),n.requiresBackend&&!1===e&&(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)("button",{onClick:l,className:"btn btn-secondary",children:[(0,t.jsx)(u.Server,{size:16}),"连接节点"]}),(0,t.jsxs)(s.default,{href:"/download",className:"btn btn-secondary",children:[(0,t.jsx)(p.Download,{size:16}),"下载桌面客户端"]})]})]})]})})})})]})}var v=e.i(40983);e.s(["default",0,function(){return(0,t.jsx)(v.MarketingLayout,{children:(0,t.jsx)(y,{})})}],31713)}]);
@@ -1 +0,0 @@
1
- (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,35965,e=>{"use strict";let s=(0,e.i(56420).default)("sun",[["circle",{cx:"12",cy:"12",r:"4",key:"4exip2"}],["path",{d:"M12 2v2",key:"tus03m"}],["path",{d:"M12 20v2",key:"1lh1kg"}],["path",{d:"m4.93 4.93 1.41 1.41",key:"149t6j"}],["path",{d:"m17.66 17.66 1.41 1.41",key:"ptbguv"}],["path",{d:"M2 12h2",key:"1t8f8n"}],["path",{d:"M20 12h2",key:"1q8mjw"}],["path",{d:"m6.34 17.66-1.41 1.41",key:"1m8zz5"}],["path",{d:"m19.07 4.93-1.41 1.41",key:"1shlcs"}]]);e.s(["Sun",0,s],35965)},96699,e=>{"use strict";let s=(0,e.i(56420).default)("moon",[["path",{d:"M20.985 12.486a9 9 0 1 1-9.473-9.472c.405-.022.617.46.402.803a6 6 0 0 0 8.268 8.268c.344-.215.825-.004.803.401",key:"kfwtm"}]]);e.s(["Moon",0,s],96699)},11241,e=>{"use strict";let s=(0,e.i(56420).default)("arrow-left",[["path",{d:"m12 19-7-7 7-7",key:"1l729n"}],["path",{d:"M19 12H5",key:"x3x0zl"}]]);e.s(["ArrowLeft",0,s],11241)},59665,e=>{"use strict";var s=e.i(18050),t=e.i(71645),i=e.i(67228);let a=(0,e.i(56420).default)("menu",[["path",{d:"M4 5h16",key:"1tepv9"}],["path",{d:"M4 12h16",key:"1lakjw"}],["path",{d:"M4 19h16",key:"1djgab"}]]);e.i(22183);var r=e.i(5142);let l=(0,t.createContext)(null);e.s(["default",0,function({sidebar:e,headerTitle:c,headerRight:n,children:d}){let[h,o]=(0,r.useDisclosure)(!1),[u,p]=(0,t.useState)(!1),x=(0,i.useMediaQuery)("(max-width: 768px)"),j=()=>{x?o.open():p(!1)};return(0,s.jsx)(l.Provider,{value:{closeSidebar:o.close,openSidebar:j,isSidebarVisible:x?h:!u},children:(0,s.jsxs)("div",{className:"app-layout",children:[(0,s.jsx)("div",{className:`sidebar-overlay ${h?"visible":""}`,onClick:()=>o.close()}),(0,s.jsx)("div",{className:`sidebar ${h?"open":""} ${u?"collapsed":""}`,children:e({closeSidebar:o.close,openSidebar:j})}),(0,s.jsxs)("div",{className:"main-content",children:[(0,s.jsxs)("header",{className:"app-header",children:[(0,s.jsxs)("div",{className:"header-left",children:[(0,s.jsx)("button",{onClick:()=>{x?o.toggle():p(!u)},className:"btn btn-icon sidebar-toggle-btn","aria-label":x?"打开菜单":u?"展开侧边栏":"收起侧边栏",children:(0,s.jsx)(a,{size:16})}),c]}),(0,s.jsx)("div",{className:"header-right",children:n})]}),d]})]})})},"useAppShell",0,function(){let e=(0,t.useContext)(l);if(!e)throw Error("useAppShell must be used within AppShell");return e}],59665)},89664,e=>{"use strict";let s=(0,e.i(56420).default)("check",[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]]);e.s(["Check",0,s],89664)},18566,(e,s,t)=>{s.exports=e.r(76562)},58925,e=>{"use strict";let s=(0,e.i(56420).default)("key-round",[["path",{d:"M2.586 17.414A2 2 0 0 0 2 18.828V21a1 1 0 0 0 1 1h3a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h1a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h.172a2 2 0 0 0 1.414-.586l.814-.814a6.5 6.5 0 1 0-4-4z",key:"1s6t7t"}],["circle",{cx:"16.5",cy:"7.5",r:".5",fill:"currentColor",key:"w0ekpg"}]]);e.s(["KeyRound",0,s],58925)},90165,e=>{"use strict";var s=e.i(18050),t=e.i(71645),i=e.i(18566),a=e.i(58925),r=e.i(89664);let l=(0,e.i(56420).default)("circle-alert",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["line",{x1:"12",x2:"12",y1:"8",y2:"12",key:"1pkeuh"}],["line",{x1:"12",x2:"12.01",y1:"16",y2:"16",key:"4dfq90"}]]);var c=e.i(35965),n=e.i(96699),d=e.i(11241),h=e.i(59665),o=e.i(3593);function u(){let e=(0,i.useSearchParams)(),u=(0,o.useAppStore)(e=>e.isDarkMode),p=(0,o.useAppStore)(e=>e.setIsDarkMode),[x,j]=(0,t.useState)(""),[y,k]=(0,t.useState)(""),[m,f]=(0,t.useState)(!0);return(0,t.useEffect)(()=>{let s=e.get("token"),t=e.get("pub");if(!s){k("缺少 token 参数"),f(!1);return}if(!t){k("缺少 pub 参数"),f(!1);return}!async function(){try{let e=await fetch("https://api.most.box/api/chat.join.decrypt",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({token:s,pub:t})}),i=await e.json();e.ok?j(JSON.stringify(i,null,2)):k(i.error||"解密失败")}catch(e){k(`请求出错: ${e instanceof Error?e.message:String(e)}`)}f(!1)}()},[e]),(0,s.jsx)(h.default,{sidebar:()=>(0,s.jsxs)("div",{className:"sidebar-header sidebar-header-link",onClick:()=>window.location.href="/chat",children:[(0,s.jsx)(d.ArrowLeft,{size:18}),(0,s.jsx)("h1",{children:"MOST PEOPLE"})]}),headerTitle:(0,s.jsx)("h2",{className:"header-title",children:"加入频道"}),headerRight:(0,s.jsx)("button",{className:"btn btn-icon",onClick:()=>p(!u),title:"切换主题",children:u?(0,s.jsx)(c.Sun,{size:16}):(0,s.jsx)(n.Moon,{size:16})}),children:(0,s.jsx)("div",{className:"chat-join-container",children:m?(0,s.jsxs)("div",{className:"chat-join-loading",children:[(0,s.jsx)(a.KeyRound,{size:32}),(0,s.jsx)("p",{children:"正在解密..."})]}):y?(0,s.jsxs)("div",{className:"chat-join-error",children:[(0,s.jsx)(l,{size:32}),(0,s.jsx)("p",{children:y})]}):(0,s.jsxs)("div",{className:"chat-join-success",children:[(0,s.jsx)(r.Check,{size:32}),(0,s.jsx)("p",{children:"解密成功"}),(0,s.jsx)("pre",{className:"chat-join-result",children:x})]})})})}e.s(["default",0,function(){return(0,s.jsx)(t.Suspense,{children:(0,s.jsx)(u,{})})}],90165)}]);
@@ -1 +0,0 @@
1
- (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,66627,e=>{"use strict";let a=(0,e.i(56420).default)("wifi",[["path",{d:"M12 20h.01",key:"zekei9"}],["path",{d:"M2 8.82a15 15 0 0 1 20 0",key:"dnpr2z"}],["path",{d:"M5 12.859a10 10 0 0 1 14 0",key:"1x1e6c"}],["path",{d:"M8.5 16.429a5 5 0 0 1 7 0",key:"1bycff"}]]);e.s(["Wifi",0,a],66627)},50285,e=>{"use strict";let a=(0,e.i(56420).default)("hard-drive",[["path",{d:"M10 16h.01",key:"1bzywj"}],["path",{d:"M2.212 11.577a2 2 0 0 0-.212.896V18a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-5.527a2 2 0 0 0-.212-.896L18.55 5.11A2 2 0 0 0 16.76 4H7.24a2 2 0 0 0-1.79 1.11z",key:"18tbho"}],["path",{d:"M21.946 12.013H2.054",key:"zqlbp7"}],["path",{d:"M6 16h.01",key:"1pmjb7"}]]);e.s(["HardDrive",0,a],50285)},22315,(e,a,s)=>{e.e,a.exports=function(){"use strict";var e="millisecond",a="second",s="minute",t="hour",i="week",n="month",r="quarter",d="year",l="date",c="Invalid Date",o=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,h=/\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,u=function(e,a,s){var t=String(e);return!t||t.length>=a?e:""+Array(a+1-t.length).join(s)+e},m="en",p={};p[m]={name:"en",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),ordinal:function(e){var a=["th","st","nd","rd"],s=e%100;return"["+e+(a[(s-20)%10]||a[s]||a[0])+"]"}};var f="$isDayjsObject",x=function(e){return e instanceof g||!(!e||!e[f])},j=function e(a,s,t){var i;if(!a)return m;if("string"==typeof a){var n=a.toLowerCase();p[n]&&(i=n),s&&(p[n]=s,i=n);var r=a.split("-");if(!i&&r.length>1)return e(r[0])}else{var d=a.name;p[d]=a,i=d}return!t&&i&&(m=i),i||!t&&m},v=function(e,a){if(x(e))return e.clone();var s="object"==typeof a?a:{};return s.date=e,s.args=arguments,new g(s)},y={s:u,z:function(e){var a=-e.utcOffset(),s=Math.abs(a);return(a<=0?"+":"-")+u(Math.floor(s/60),2,"0")+":"+u(s%60,2,"0")},m:function e(a,s){if(a.date()<s.date())return-e(s,a);var t=12*(s.year()-a.year())+(s.month()-a.month()),i=a.clone().add(t,n),r=s-i<0,d=a.clone().add(t+(r?-1:1),n);return+(-(t+(s-i)/(r?i-d:d-i))||0)},a:function(e){return e<0?Math.ceil(e)||0:Math.floor(e)},p:function(c){return({M:n,y:d,w:i,d:"day",D:l,h:t,m:s,s:a,ms:e,Q:r})[c]||String(c||"").toLowerCase().replace(/s$/,"")},u:function(e){return void 0===e}};y.l=j,y.i=x,y.w=function(e,a){return v(e,{locale:a.$L,utc:a.$u,x:a.$x,$offset:a.$offset})};var g=function(){function u(e){this.$L=j(e.locale,null,!0),this.parse(e),this.$x=this.$x||e.x||{},this[f]=!0}var m=u.prototype;return m.parse=function(e){this.$d=function(e){var a=e.date,s=e.utc;if(null===a)return new Date(NaN);if(y.u(a))return new Date;if(a instanceof Date)return new Date(a);if("string"==typeof a&&!/Z$/i.test(a)){var t=a.match(o);if(t){var i=t[2]-1||0,n=(t[7]||"0").substring(0,3);return s?new Date(Date.UTC(t[1],i,t[3]||1,t[4]||0,t[5]||0,t[6]||0,n)):new Date(t[1],i,t[3]||1,t[4]||0,t[5]||0,t[6]||0,n)}}return new Date(a)}(e),this.init()},m.init=function(){var e=this.$d;this.$y=e.getFullYear(),this.$M=e.getMonth(),this.$D=e.getDate(),this.$W=e.getDay(),this.$H=e.getHours(),this.$m=e.getMinutes(),this.$s=e.getSeconds(),this.$ms=e.getMilliseconds()},m.$utils=function(){return y},m.isValid=function(){return this.$d.toString()!==c},m.isSame=function(e,a){var s=v(e);return this.startOf(a)<=s&&s<=this.endOf(a)},m.isAfter=function(e,a){return v(e)<this.startOf(a)},m.isBefore=function(e,a){return this.endOf(a)<v(e)},m.$g=function(e,a,s){return y.u(e)?this[a]:this.set(s,e)},m.unix=function(){return Math.floor(this.valueOf()/1e3)},m.valueOf=function(){return this.$d.getTime()},m.startOf=function(e,r){var c=this,o=!!y.u(r)||r,h=y.p(e),u=function(e,a){var s=y.w(c.$u?Date.UTC(c.$y,a,e):new Date(c.$y,a,e),c);return o?s:s.endOf("day")},m=function(e,a){return y.w(c.toDate()[e].apply(c.toDate("s"),(o?[0,0,0,0]:[23,59,59,999]).slice(a)),c)},p=this.$W,f=this.$M,x=this.$D,j="set"+(this.$u?"UTC":"");switch(h){case d:return o?u(1,0):u(31,11);case n:return o?u(1,f):u(0,f+1);case i:var v=this.$locale().weekStart||0,g=(p<v?p+7:p)-v;return u(o?x-g:x+(6-g),f);case"day":case l:return m(j+"Hours",0);case t:return m(j+"Minutes",1);case s:return m(j+"Seconds",2);case a:return m(j+"Milliseconds",3);default:return this.clone()}},m.endOf=function(e){return this.startOf(e,!1)},m.$set=function(i,r){var c,o=y.p(i),h="set"+(this.$u?"UTC":""),u=((c={}).day=h+"Date",c[l]=h+"Date",c[n]=h+"Month",c[d]=h+"FullYear",c[t]=h+"Hours",c[s]=h+"Minutes",c[a]=h+"Seconds",c[e]=h+"Milliseconds",c)[o],m="day"===o?this.$D+(r-this.$W):r;if(o===n||o===d){var p=this.clone().set(l,1);p.$d[u](m),p.init(),this.$d=p.set(l,Math.min(this.$D,p.daysInMonth())).$d}else u&&this.$d[u](m);return this.init(),this},m.set=function(e,a){return this.clone().$set(e,a)},m.get=function(e){return this[y.p(e)]()},m.add=function(e,r){var l,c=this;e=Number(e);var o=y.p(r),h=function(a){var s=v(c);return y.w(s.date(s.date()+Math.round(a*e)),c)};if(o===n)return this.set(n,this.$M+e);if(o===d)return this.set(d,this.$y+e);if("day"===o)return h(1);if(o===i)return h(7);var u=((l={})[s]=6e4,l[t]=36e5,l[a]=1e3,l)[o]||1,m=this.$d.getTime()+e*u;return y.w(m,this)},m.subtract=function(e,a){return this.add(-1*e,a)},m.format=function(e){var a=this,s=this.$locale();if(!this.isValid())return s.invalidDate||c;var t=e||"YYYY-MM-DDTHH:mm:ssZ",i=y.z(this),n=this.$H,r=this.$m,d=this.$M,l=s.weekdays,o=s.months,u=s.meridiem,m=function(e,s,i,n){return e&&(e[s]||e(a,t))||i[s].slice(0,n)},p=function(e){return y.s(n%12||12,e,"0")},f=u||function(e,a,s){var t=e<12?"AM":"PM";return s?t.toLowerCase():t};return t.replace(h,function(e,t){return t||function(e){switch(e){case"YY":return String(a.$y).slice(-2);case"YYYY":return y.s(a.$y,4,"0");case"M":return d+1;case"MM":return y.s(d+1,2,"0");case"MMM":return m(s.monthsShort,d,o,3);case"MMMM":return m(o,d);case"D":return a.$D;case"DD":return y.s(a.$D,2,"0");case"d":return String(a.$W);case"dd":return m(s.weekdaysMin,a.$W,l,2);case"ddd":return m(s.weekdaysShort,a.$W,l,3);case"dddd":return l[a.$W];case"H":return String(n);case"HH":return y.s(n,2,"0");case"h":return p(1);case"hh":return p(2);case"a":return f(n,r,!0);case"A":return f(n,r,!1);case"m":return String(r);case"mm":return y.s(r,2,"0");case"s":return String(a.$s);case"ss":return y.s(a.$s,2,"0");case"SSS":return y.s(a.$ms,3,"0");case"Z":return i}return null}(e)||i.replace(":","")})},m.utcOffset=function(){return-(15*Math.round(this.$d.getTimezoneOffset()/15))},m.diff=function(e,l,c){var o,h=this,u=y.p(l),m=v(e),p=(m.utcOffset()-this.utcOffset())*6e4,f=this-m,x=function(){return y.m(h,m)};switch(u){case d:o=x()/12;break;case n:o=x();break;case r:o=x()/3;break;case i:o=(f-p)/6048e5;break;case"day":o=(f-p)/864e5;break;case t:o=f/36e5;break;case s:o=f/6e4;break;case a:o=f/1e3;break;default:o=f}return c?o:y.a(o)},m.daysInMonth=function(){return this.endOf(n).$D},m.$locale=function(){return p[this.$L]},m.locale=function(e,a){if(!e)return this.$L;var s=this.clone(),t=j(e,a,!0);return t&&(s.$L=t),s},m.clone=function(){return y.w(this.$d,this)},m.toDate=function(){return new Date(this.valueOf())},m.toJSON=function(){return this.isValid()?this.toISOString():null},m.toISOString=function(){return this.$d.toISOString()},m.toString=function(){return this.$d.toUTCString()},u}(),M=g.prototype;return v.prototype=M,[["$ms",e],["$s",a],["$m",s],["$H",t],["$W","day"],["$M",n],["$y",d],["$D",l]].forEach(function(e){M[e[1]]=function(a){return this.$g(a,e[0],e[1])}}),v.extend=function(e,a){return e.$i||(e(a,g,v),e.$i=!0),v},v.locale=j,v.isDayjs=x,v.unix=function(e){return v(1e3*e)},v.en=p[m],v.Ls=p,v.p={},v}()},11241,e=>{"use strict";let a=(0,e.i(56420).default)("arrow-left",[["path",{d:"m12 19-7-7 7-7",key:"1l729n"}],["path",{d:"M19 12H5",key:"x3x0zl"}]]);e.s(["ArrowLeft",0,a],11241)},26091,e=>{"use strict";let a=(0,e.i(56420).default)("file-text",[["path",{d:"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z",key:"1oefj6"}],["path",{d:"M14 2v5a1 1 0 0 0 1 1h5",key:"wfsgrz"}],["path",{d:"M10 9H8",key:"b1mrlr"}],["path",{d:"M16 13H8",key:"t4e002"}],["path",{d:"M16 17H8",key:"z1uh3a"}]]);e.s(["FileText",0,a],26091)},73474,e=>{"use strict";let a=(0,e.i(56420).default)("trash-2",[["path",{d:"M10 11v6",key:"nco0om"}],["path",{d:"M14 11v6",key:"outv1u"}],["path",{d:"M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6",key:"miytrc"}],["path",{d:"M3 6h18",key:"d0wm0j"}],["path",{d:"M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2",key:"e791ji"}]]);e.s(["Trash2",0,a],73474)},53138,51757,e=>{"use strict";var a=e.i(56420);let s=(0,a.default)("triangle-alert",[["path",{d:"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3",key:"wmoenq"}],["path",{d:"M12 9v4",key:"juzpu7"}],["path",{d:"M12 17h.01",key:"p32p05"}]]);e.s(["AlertTriangle",0,s],53138);let t=(0,a.default)("circle-check",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m9 12 2 2 4-4",key:"dzmm74"}]]);e.s(["CheckCircle2",0,t],51757)},56522,e=>{"use strict";let a=(0,e.i(56420).default)("save",[["path",{d:"M15.2 3a2 2 0 0 1 1.4.6l3.8 3.8a2 2 0 0 1 .6 1.4V19a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2z",key:"1c8476"}],["path",{d:"M17 21v-7a1 1 0 0 0-1-1H8a1 1 0 0 0-1 1v7",key:"1ydtos"}],["path",{d:"M7 3v4a1 1 0 0 0 1 1h7",key:"t51u73"}]]);e.s(["Save",0,a],56522)},72856,(e,a,s)=>{e.e,a.exports=function(e,a,s){e=e||{};var t=a.prototype,i={future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"};function n(e,a,s,i){return t.fromToBase(e,a,s,i)}s.en.relativeTime=i,t.fromToBase=function(a,t,n,r,d){for(var l,c,o,h=n.$locale().relativeTime||i,u=e.thresholds||[{l:"s",r:44,d:"second"},{l:"m",r:89},{l:"mm",r:44,d:"minute"},{l:"h",r:89},{l:"hh",r:21,d:"hour"},{l:"d",r:35},{l:"dd",r:25,d:"day"},{l:"M",r:45},{l:"MM",r:10,d:"month"},{l:"y",r:17},{l:"yy",d:"year"}],m=u.length,p=0;p<m;p+=1){var f=u[p];f.d&&(l=r?s(a).diff(n,f.d,!0):n.diff(a,f.d,!0));var x=(e.rounding||Math.round)(Math.abs(l));if(o=l>0,x<=f.r||!f.r){x<=1&&p>0&&(f=u[p-1]);var j=h[f.l];d&&(x=d(""+x)),c="string"==typeof j?j.replace("%d",x):j(x,t,f.l,o);break}}if(t)return c;var v=o?h.future:h.past;return"function"==typeof v?v(c):v.replace("%s",c)},t.to=function(e,a){return n(e,a,this,!0)},t.from=function(e,a){return n(e,a,this)};var r=function(e){return e.$u?s.utc():s()};t.toNow=function(e){return this.to(r(this),e)},t.fromNow=function(e){return this.from(r(this),e)}}},56331,(e,a,s)=>{e.e,a.exports=function(e){"use strict";var a={name:"zh-cn",weekdays:"星期日_星期一_星期二_星期三_星期四_星期五_星期六".split("_"),weekdaysShort:"周日_周一_周二_周三_周四_周五_周六".split("_"),weekdaysMin:"日_一_二_三_四_五_六".split("_"),months:"一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),ordinal:function(e,a){return"W"===a?e+"周":e+"日"},weekStart:1,yearStart:4,formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY年M月D日",LLL:"YYYY年M月D日Ah点mm分",LLLL:"YYYY年M月D日ddddAh点mm分",l:"YYYY/M/D",ll:"YYYY年M月D日",lll:"YYYY年M月D日 HH:mm",llll:"YYYY年M月D日dddd HH:mm"},relativeTime:{future:"%s内",past:"%s前",s:"几秒",m:"1 分钟",mm:"%d 分钟",h:"1 小时",hh:"%d 小时",d:"1 天",dd:"%d 天",M:"1 个月",MM:"%d 个月",y:"1 年",yy:"%d 年"},meridiem:function(e,a){var s=100*e+a;return s<600?"凌晨":s<900?"早上":s<1100?"上午":s<1300?"中午":s<1800?"下午":"晚上"}};return(e&&"object"==typeof e&&"default"in e?e:{default:e}).default.locale(a,null,!0),a}(e.r(22315))},23261,e=>{"use strict";var a=e.i(18050),s=e.i(71645),t=e.i(22016),i=e.i(22315),n=e.i(72856);e.i(56331);var r=e.i(56420);let d=(0,r.default)("activity",[["path",{d:"M22 12h-2.48a2 2 0 0 0-1.93 1.46l-2.35 8.36a.25.25 0 0 1-.48 0L9.24 2.18a.25.25 0 0 0-.48 0l-2.35 8.36A2 2 0 0 1 4.49 12H2",key:"169zse"}]]);var l=e.i(53138),c=e.i(36162),o=e.i(11241),h=e.i(51757);let u=(0,r.default)("clipboard",[["rect",{width:"8",height:"4",x:"8",y:"2",rx:"1",ry:"1",key:"tgr4d6"}],["path",{d:"M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2",key:"116196"}]]),m=(0,r.default)("database",[["ellipse",{cx:"12",cy:"5",rx:"9",ry:"3",key:"msslwz"}],["path",{d:"M3 5V19A9 3 0 0 0 21 19V5",key:"1wlel7"}],["path",{d:"M3 12A9 3 0 0 0 21 12",key:"mv7ke4"}]]);var p=e.i(62368),f=e.i(26091),x=e.i(50285),j=e.i(26158),v=e.i(46513);let y=(0,r.default)("refresh-cw",[["path",{d:"M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8",key:"v9h5vc"}],["path",{d:"M21 3v5h-5",key:"1q7to0"}],["path",{d:"M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16",key:"3uifl3"}],["path",{d:"M8 16H3v5",key:"1cv678"}]]);var g=e.i(56522),M=e.i(41220);let b=(0,r.default)("shield-check",[["path",{d:"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z",key:"oel41y"}],["path",{d:"m9 12 2 2 4-4",key:"dzmm74"}]]);var $=e.i(73474),w=e.i(66627),N=e.i(26913),S=e.i(3593);function k(e){return!Number.isFinite(e)||e<=0?"0 B":e<1024?`${e} B`:e<1048576?`${(e/1024).toFixed(1)} KB`:e<0x40000000?`${(e/1048576).toFixed(1)} MB`:`${(e/0x40000000).toFixed(2)} GB`}function _(e){return Number.isFinite(e)?String(Math.round(e/0x40000000*100)/100):"0"}function D(e){let a=Number(e);return!Number.isFinite(a)||a<0?0:Math.round(1024*a*1048576)}function z(e,a=12,s=8){return e?e.length<=a+s+3?e:`${e.slice(0,a)}...${e.slice(-s)}`:"-"}i.default.extend(n.default),i.default.locale("zh-cn");let Y=[{name:"Windows",icon:v.Monitor,ext:".exe"},{name:"macOS",icon:c.Apple,ext:".dmg"},{name:"Linux",icon:j.Laptop,ext:".AppImage"}],B=["P2P 文件分享与下载","加密频道聊天","本地持久化存储","离线消息同步","默认 10GB 大文件传输"],C=[{label:"做种中",tone:"active",desc:"已加入 CID topic,可被其他节点发现并提供完整副本。"},{label:"队列中 / 加入中",tone:"pending",desc:"正在等待或重连 topic,通常会自动进入做种中。"},{label:"已暂停 / 未 join",tone:"muted",desc:"本机仍持有文件,但当前不会对外提供下载。"},{label:"错误",tone:"error",desc:"加入或做种失败,请查看下方节点日志里的 seed 事件。"}],H=[{value:"all",label:"全部"},{value:"join",label:"Join"},{value:"pull",label:"Pull"},{value:"verify",label:"Verify"},{value:"serve",label:"Serve"},{value:"error",label:"Error"}],L={join:["join","joined","topic"],pull:["pull","p2p"],verify:["verify","verified","integrity","download:success"],serve:["seed","seeding","holding","publish:success","topic:joined"],error:["error","failed","fail"]};e.s(["default",0,function(){let e,n,r,c,j=(0,S.useAppStore)(e=>e.hasBackend),v=(0,S.useAppStore)(e=>e.addToast),[A,T]=(0,s.useState)(null),[O,I]=(0,s.useState)([]),[F,P]=(0,s.useState)(""),[W,V]=(0,s.useState)(!1),[G,U]=(0,s.useState)(!1),[E,J]=(0,s.useState)(!1),[R,q]=(0,s.useState)("all"),[Z,K]=(0,s.useState)([]),[Q,X]=(0,s.useState)(""),[ee,ea]=(0,s.useState)({dataPath:"",capacityGiB:"100",maxFileSizeGiB:"10",remoteInvites:""}),es=!0===j;function et(){return!!es||(v(null===j?"正在检测后端连接,请稍后再试":"未连接后端","warning"),!1)}let ei=(0,s.useMemo)(()=>!A||A.capacity.configuredBytes<=0?0:Math.min(100,Math.round(A.capacity.usedBytes/A.capacity.configuredBytes*100)),[A]),en=(0,s.useMemo)(()=>(A?.holdings||[]).slice(0,100),[A]),er=Math.max(0,(A?.holdings.length||0)-100),ed=(0,N.getBackendUrlExport)(),el=!!ed&&!ed.includes("localhost")&&!ed.includes("127.0.0.1"),ec=async()=>{if(!es)return!1;try{let e=await N.api.get("/api/node/status").json(),a=await N.api.get("/api/node/config").json();return T(e),ea({dataPath:a.dataPath||e.dataPath||"",capacityGiB:_(a.capacityBytes),maxFileSizeGiB:_(a.maxFileSizeBytes),remoteInvites:(a.remoteInvites||[]).join("\n")}),P(""),!0}catch(a){let e=await (0,N.getApiErrorMessage)(a,"无法读取节点状态");return P(e),v(e,"error"),!1}},eo=async()=>{et()&&await ec()&&v("节点状态已刷新","success")},eh=async(e=R)=>{if(es)try{let a=new URLSearchParams({limit:"80",filter:e}),s=await N.api.get(`/api/node/logs?${a.toString()}`).json();I(s.logs||[])}catch{}},eu=async()=>{if(es)try{let e=await N.api.get("/api/admin/users").json();K(e.users||[])}catch{}},em=async()=>{if(et()){V(!0);try{var e;await N.api.post("/api/node/config",{json:{dataPath:ee.dataPath,capacityBytes:D(ee.capacityGiB),maxFileSizeBytes:D(ee.maxFileSizeGiB),remoteInvites:(e=ee.remoteInvites,Array.from(new Set(String(e||"").split(/[\n,]/).map(e=>e.trim()).filter(Boolean))))}}).json();let a=ee.dataPath!==(A?.dataPath||"");v(a?"节点配置已保存。修改了数据目录,需要重启 daemon 生效。":"节点配置已保存","success"),await ec(),await eh()}catch(a){let e=await (0,N.getApiErrorMessage)(a,"保存配置失败");v(e,"error"),P(e)}finally{V(!1)}}},ep=async()=>{A?.nodeId&&(await navigator.clipboard.writeText(A.nodeId),v("节点 ID 已复制","success"))},ef=async()=>{if(et()){U(!0);try{await N.api.delete("/api/node/logs").json(),I([]),v("节点日志已清空","success")}catch(a){let e=await (0,N.getApiErrorMessage)(a,"清空日志失败");v(e,"error"),P(e)}finally{U(!1)}}},ex=async()=>{if(et()){J(!0);try{let e=await N.api.get("/api/node/diagnostics").json(),a=new Blob([JSON.stringify(e,null,2)],{type:"application/json"}),s=URL.createObjectURL(a),t=document.createElement("a"),i=new Date().toISOString().replace(/[:.]/g,"-");t.href=s,t.download=`mostbox-diagnostics-${i}.json`,document.body.appendChild(t),t.click(),t.remove(),URL.revokeObjectURL(s),v("诊断已导出","success")}catch(a){let e=await (0,N.getApiErrorMessage)(a,"导出诊断失败");v(e,"error"),P(e)}finally{J(!1)}}},ej=async e=>{if(et()&&window.confirm(`确定清除用户 ${e.slice(0,6)}...${e.slice(-4)} 的文件记录和回收站吗?无人引用的副本也会被清理。`)){X(e);try{await N.api.delete(`/api/admin/users/${e}/data`).json(),v("用户数据已清除","success"),await eu(),await ec()}catch(a){let e=await (0,N.getApiErrorMessage)(a,"清除用户数据失败");v(e,"error"),P(e)}finally{X("")}}};return(0,s.useEffect)(()=>{if(!es||el)return;ec(),eh(),eu();let e=null,a=!1;return(async()=>{if(e=new WebSocket(await (0,N.getAuthenticatedWebSocketUrl)("/ws")),a)return e.close();e.onmessage=e=>{try{let a=JSON.parse(e.data);"node:status"===a.event&&T(a.data),"node:log"===a.event&&function(e,a){let s=String(a||"all").trim().toLowerCase();if(!s||"all"===s)return!0;let t=function(e){let a="";try{a=JSON.stringify(e.data||{})}catch{}return[e.level,e.event,e.message,a].map(e=>String(e||"").toLowerCase()).join(" ")}(e);return"error"===s?"error"===e.level||L.error.some(e=>t.includes(e)):(L[s]||[s]).some(e=>t.includes(e))}(a.data,R)&&I(e=>[a.data,...e].slice(0,80)),"node:logs:cleared"===a.event&&I([]),("publish:success"===a.event||"download:success"===a.event||"network:status"===a.event)&&ec()}catch{}}})(),()=>{a=!0,e?.close()}},[es,el,R]),(0,a.jsxs)("main",{className:"admin-page",children:[(0,a.jsxs)("header",{className:"admin-topbar",children:[(0,a.jsxs)("div",{className:"admin-title-group",children:[(0,a.jsx)(t.default,{href:"/",className:"btn btn-icon","aria-label":"返回首页",children:(0,a.jsx)(o.ArrowLeft,{size:16})}),(0,a.jsx)("div",{children:(0,a.jsx)("h1",{children:"节点管理"})})]}),(0,a.jsxs)("div",{className:"admin-topbar-actions",children:[(0,a.jsxs)("span",{className:`admin-status-pill ${A?.status==="online"?"online":""}`,children:[(0,a.jsx)(d,{size:14}),A?.status==="online"?"在线":"等待"]}),(0,a.jsxs)("button",{className:"btn btn-secondary",onClick:eo,children:[(0,a.jsx)(y,{size:16}),"刷新"]})]})]}),!1===j&&(0,a.jsxs)("section",{className:"admin-panel admin-error",children:[(0,a.jsx)(M.Server,{size:20}),(0,a.jsx)("span",{children:"未连接本地 daemon"})]}),el&&(0,a.jsxs)("section",{className:"admin-panel admin-error",children:[(0,a.jsx)(l.AlertTriangle,{size:18}),(0,a.jsxs)("div",{children:[(0,a.jsx)("h2",{children:"远程节点管理不可用"}),(0,a.jsx)("p",{children:"当前连接的是别人部署的远程节点,普通邀请码不能查看或修改节点管理数据。"})]})]}),!el&&F&&(0,a.jsxs)("section",{className:"admin-panel admin-error",children:[(0,a.jsx)(f.FileText,{size:20}),(0,a.jsx)("span",{children:F})]}),!el&&(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)("section",{className:"admin-product-grid","aria-label":"MostBox 信息",children:[(0,a.jsxs)("div",{className:"admin-product-panel admin-product-main",children:[(0,a.jsx)("div",{className:"admin-product-mark",children:"MB"}),(0,a.jsxs)("div",{children:[(0,a.jsx)("h2",{children:"MostBox"}),(0,a.jsxs)("p",{className:"admin-product-version",children:["版本 ",A?.version||"0.1.0"]}),(0,a.jsx)("p",{className:"admin-product-stack",children:"Hyperswarm · Hyperdrive · IPFS"})]})]}),(0,a.jsxs)("div",{className:"admin-product-panel admin-download-panel",children:[(0,a.jsxs)("div",{className:"admin-panel-header compact",children:[(0,a.jsx)("div",{children:(0,a.jsx)("h2",{children:"下载桌面客户端"})}),(0,a.jsx)(p.Download,{size:18})]}),(0,a.jsx)("p",{className:"admin-product-desc",children:"Web 端仅用于界面展示。下载桌面客户端获得完整的 P2P 文件分享和加密聊天体验。"}),(0,a.jsx)("div",{className:"admin-platform-list",children:Y.map(e=>{let s=e.icon;return(0,a.jsxs)(t.default,{href:"/download",className:"admin-platform-link",children:[(0,a.jsx)(s,{size:16}),(0,a.jsx)("span",{children:e.name}),(0,a.jsx)("span",{children:e.ext})]},e.name)})})]}),(0,a.jsxs)("div",{className:"admin-product-panel admin-feature-panel",children:[(0,a.jsxs)("div",{className:"admin-panel-header compact",children:[(0,a.jsx)("div",{children:(0,a.jsx)("h2",{children:"完整功能"})}),(0,a.jsx)(h.CheckCircle2,{size:18})]}),(0,a.jsx)("ul",{className:"admin-feature-list",children:B.map(e=>(0,a.jsxs)("li",{children:[(0,a.jsx)(h.CheckCircle2,{size:14}),(0,a.jsx)("span",{children:e})]},e))})]})]}),(0,a.jsxs)("section",{className:"admin-overview",children:[(0,a.jsxs)("div",{className:"admin-metric",children:[(0,a.jsx)("div",{className:"admin-metric-icon",children:(0,a.jsx)(b,{size:18})}),(0,a.jsxs)("div",{children:[(0,a.jsx)("span",{children:"节点 ID"}),(0,a.jsx)("strong",{children:z(A?.nodeId||"")})]}),(0,a.jsx)("button",{className:"btn btn-icon admin-metric-action",onClick:ep,"aria-label":"复制节点 ID",children:(0,a.jsx)(u,{size:15})})]}),(0,a.jsxs)("div",{className:"admin-metric",children:[(0,a.jsx)("div",{className:"admin-metric-icon",children:(0,a.jsx)(w.Wifi,{size:18})}),(0,a.jsxs)("div",{children:[(0,a.jsx)("span",{children:"连接"}),(0,a.jsx)("strong",{children:A?`${A.network.peers} peers`:"-"})]})]}),(0,a.jsxs)("div",{className:"admin-metric",children:[(0,a.jsx)("div",{className:"admin-metric-icon",children:(0,a.jsx)(x.HardDrive,{size:18})}),(0,a.jsxs)("div",{children:[(0,a.jsx)("span",{children:"容量"}),(0,a.jsxs)("strong",{children:[ei,"%"]})]})]}),(0,a.jsxs)("div",{className:"admin-metric",children:[(0,a.jsx)("div",{className:"admin-metric-icon",children:(0,a.jsx)(M.Server,{size:18})}),(0,a.jsxs)("div",{children:[(0,a.jsx)("span",{children:"运行"}),(0,a.jsx)("strong",{children:A?(n=Math.floor((e=Math.max(0,Number(A.uptimeSeconds)||0))/86400),r=Math.floor(e%86400/3600),c=Math.floor(e%3600/60),n>0?`${n} 天 ${r} 小时`:r>0?`${r} 小时 ${c} 分钟`:`${c} 分钟`):"-"})]})]})]}),(0,a.jsxs)("section",{className:"admin-grid",children:[(0,a.jsxs)("div",{className:"admin-panel admin-span-2",children:[(0,a.jsxs)("div",{className:"admin-panel-header",children:[(0,a.jsx)("div",{children:(0,a.jsx)("h2",{children:"节点状态"})}),(0,a.jsx)(h.CheckCircle2,{size:18})]}),(0,a.jsxs)("div",{className:"admin-status-grid",children:[(0,a.jsxs)("div",{children:[(0,a.jsx)("span",{children:"版本"}),(0,a.jsx)("strong",{children:A?.version||"-"})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)("span",{children:"监听"}),(0,a.jsx)("strong",{children:A?`${A.host}:${A.port}`:"-"})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)("span",{children:"数据目录"}),(0,a.jsx)("strong",{children:A?.dataPath||"-"})]})]}),(0,a.jsx)("div",{className:"admin-address-list",children:(A?.listen.addresses||[]).map(e=>(0,a.jsxs)("span",{children:[e.label,": ",e.ip,":",A?.port]},`${e.type}-${e.ip}`))})]}),(0,a.jsxs)("div",{className:"admin-panel admin-span-2",children:[(0,a.jsxs)("div",{className:"admin-panel-header",children:[(0,a.jsx)("div",{children:(0,a.jsx)("h2",{children:"用户数据"})}),(0,a.jsx)(m,{size:18})]}),(0,a.jsxs)("div",{className:"admin-table",children:[(0,a.jsxs)("div",{className:"admin-table-row admin-table-head",children:[(0,a.jsx)("span",{children:"用户"}),(0,a.jsx)("span",{children:"文件"}),(0,a.jsx)("span",{children:"回收站"}),(0,a.jsx)("span",{children:"操作"})]}),Z.map(e=>(0,a.jsxs)("div",{className:"admin-table-row",children:[(0,a.jsx)("span",{title:e.address,children:z(e.address)}),(0,a.jsx)("span",{children:e.fileCount}),(0,a.jsx)("span",{children:e.trashCount}),(0,a.jsx)("span",{children:(0,a.jsxs)("button",{className:"btn btn-ghost",onClick:()=>ej(e.address),disabled:Q===e.address,children:[(0,a.jsx)($.Trash2,{size:16}),"清除"]})})]},e.address)),0===Z.length&&(0,a.jsx)("div",{className:"admin-empty-row",children:"暂无用户数据"})]})]}),(0,a.jsxs)("div",{className:"admin-panel admin-span-2",children:[(0,a.jsxs)("div",{className:"admin-panel-header",children:[(0,a.jsx)("div",{children:(0,a.jsx)("h2",{children:"节点设置"})}),(0,a.jsx)(m,{size:18})]}),(0,a.jsxs)("div",{className:"admin-settings-fields",children:[(0,a.jsxs)("label",{className:"admin-field admin-field-wide",children:[(0,a.jsx)("span",{children:"数据目录"}),(0,a.jsx)("input",{className:"input",value:ee.dataPath,onChange:e=>ea(a=>({...a,dataPath:e.target.value}))})]}),(0,a.jsxs)("label",{className:"admin-field",children:[(0,a.jsx)("span",{children:"容量上限 GiB"}),(0,a.jsx)("input",{className:"input",type:"number",min:"0",step:"1",value:ee.capacityGiB,onChange:e=>ea(a=>({...a,capacityGiB:e.target.value}))})]}),(0,a.jsxs)("label",{className:"admin-field",children:[(0,a.jsx)("span",{children:"单文件最大 GiB"}),(0,a.jsx)("input",{className:"input",type:"number",min:"0",step:"1",value:ee.maxFileSizeGiB,onChange:e=>ea(a=>({...a,maxFileSizeGiB:e.target.value}))})]}),(0,a.jsxs)("label",{className:"admin-field admin-field-wide",children:[(0,a.jsx)("span",{children:"远程访问邀请码"}),(0,a.jsx)("textarea",{className:"input admin-textarea",value:ee.remoteInvites,placeholder:"每行一个,或用英文逗号分隔",onChange:e=>ea(a=>({...a,remoteInvites:e.target.value}))})]})]}),(0,a.jsx)("p",{className:"admin-field-hint",children:"数据目录变更保存后需要重启 daemon。修改邀请码后新请求立即生效。 发布和下载成功后会固定做种;MostBox 不设同时做种数或传输限速。"}),(0,a.jsxs)("button",{className:"btn btn-primary btn-full",onClick:em,disabled:W,children:[(0,a.jsx)(g.Save,{size:16}),"保存配置"]})]}),(0,a.jsxs)("div",{className:"admin-panel admin-span-2",children:[(0,a.jsxs)("div",{className:"admin-panel-header",children:[(0,a.jsx)("div",{children:(0,a.jsx)("h2",{children:"持有副本"})}),(0,a.jsx)(x.HardDrive,{size:18})]}),(0,a.jsxs)("div",{className:"admin-capacity-row",children:[(0,a.jsx)("progress",{value:ei,max:"100"}),(0,a.jsxs)("span",{children:[k(A?.capacity.usedBytes||0)," /"," ",k(A?.capacity.configuredBytes||0)]})]}),(0,a.jsx)("div",{className:"admin-seed-help","aria-label":"做种状态说明",children:C.map(e=>(0,a.jsxs)("div",{className:"admin-seed-help-item",children:[(0,a.jsx)("span",{className:`admin-seed-dot ${e.tone}`}),(0,a.jsxs)("div",{children:[(0,a.jsx)("strong",{children:e.label}),(0,a.jsx)("span",{children:e.desc})]})]},e.label))}),er>0&&(0,a.jsxs)("p",{className:"admin-table-note",children:["当前仅展示前 100 个副本,另有 ",er," ","个仍在后台做种。"]}),(0,a.jsxs)("div",{className:"admin-table",children:[(0,a.jsxs)("div",{className:"admin-table-row admin-table-head",children:[(0,a.jsx)("span",{children:"文件"}),(0,a.jsx)("span",{children:"CID"}),(0,a.jsx)("span",{children:"大小"}),(0,a.jsx)("span",{children:"Peer"}),(0,a.jsx)("span",{children:"最近服务"}),(0,a.jsx)("span",{children:"状态"})]}),en.map(e=>(0,a.jsxs)("div",{className:"admin-table-row",children:[(0,a.jsx)("span",{children:e.fileName||"-"}),(0,a.jsx)("span",{title:e.cid,children:z(e.cid)}),(0,a.jsx)("span",{children:k(e.size)}),(0,a.jsx)("span",{children:e.peerCount??0}),(0,a.jsx)("span",{title:e.lastServedAt||"",children:function(e){if(!e)return"从未";let a=(0,i.default)(e);return a.isValid()?a.isAfter((0,i.default)())?"刚刚":a.fromNow():"从未"}(e.lastServedAt)}),(0,a.jsx)("span",{className:`admin-seed-pill ${"error"===e.seedStatus?"error":"active"===e.seedStatus||e.joined?"active":""}`,children:function(e){switch(e.seedStatus){case"queued":return"队列中";case"joining":return"加入中";case"active":return"做种中";case"paused":return"已暂停";case"error":return e.seedError?`错误:${e.seedError}`:"错误";default:return e.joined?"做种中":"未 join"}}(e)})]},e.cid)),(!A||0===A.holdings.length)&&(0,a.jsx)("div",{className:"admin-empty-row",children:"暂无持有副本"})]})]}),(0,a.jsxs)("div",{className:"admin-panel admin-span-2",children:[(0,a.jsxs)("div",{className:"admin-panel-header",children:[(0,a.jsx)("div",{children:(0,a.jsx)("h2",{children:"节点日志"})}),(0,a.jsxs)("div",{className:"admin-panel-actions",children:[(0,a.jsxs)("button",{className:"btn btn-secondary",onClick:ex,disabled:E,children:[(0,a.jsx)(p.Download,{size:16}),"导出诊断"]}),(0,a.jsxs)("button",{className:"btn btn-ghost",onClick:ef,disabled:G||0===O.length,children:[(0,a.jsx)($.Trash2,{size:16}),"清空日志"]}),(0,a.jsx)(f.FileText,{size:18})]})]}),(0,a.jsx)("div",{className:"admin-log-filter","aria-label":"日志筛选",children:H.map(e=>(0,a.jsx)("button",{type:"button",className:R===e.value?"active":"",onClick:()=>{q(e.value),eh(e.value)},children:e.label},e.value))}),(0,a.jsxs)("div",{className:"admin-log-list",children:[O.map(e=>(0,a.jsxs)("div",{className:"admin-log-row",children:[(0,a.jsx)("time",{children:new Date(e.ts).toLocaleTimeString("zh-CN")}),(0,a.jsx)("span",{className:`admin-log-level ${e.level}`,children:e.level}),(0,a.jsx)("strong",{children:e.event}),(0,a.jsx)("span",{children:e.message})]},e.id)),0===O.length&&(0,a.jsx)("div",{className:"admin-empty-row",children:"暂无日志"})]})]})]})]})]})}],23261)}]);
File without changes
File without changes