sa2kit 3.0.0 → 3.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 (980) hide show
  1. package/README.md +5 -5
  2. package/dist/AliyunOSSProvider-7IOT5U6M.js +15 -0
  3. package/dist/AliyunOSSProvider-7IOT5U6M.js.map +1 -0
  4. package/dist/AliyunOSSProvider-ZXZM7OQA.mjs +6 -0
  5. package/dist/AliyunOSSProvider-ZXZM7OQA.mjs.map +1 -0
  6. package/dist/LocalStorageProvider-KJKRCKBS.js +15 -0
  7. package/dist/LocalStorageProvider-KJKRCKBS.js.map +1 -0
  8. package/dist/LocalStorageProvider-O22465NY.mjs +6 -0
  9. package/dist/LocalStorageProvider-O22465NY.mjs.map +1 -0
  10. package/dist/chunk-2234T4A6.js +303 -0
  11. package/dist/chunk-2234T4A6.js.map +1 -0
  12. package/dist/chunk-36KGNXKW.js +16 -0
  13. package/dist/chunk-36KGNXKW.js.map +1 -0
  14. package/dist/chunk-375C7WL7.js +2695 -0
  15. package/dist/chunk-375C7WL7.js.map +1 -0
  16. package/dist/chunk-3J24Z4MB.js +991 -0
  17. package/dist/chunk-3J24Z4MB.js.map +1 -0
  18. package/dist/chunk-3QCATFQV.js +43 -0
  19. package/dist/chunk-3QCATFQV.js.map +1 -0
  20. package/dist/chunk-3R6JHA6D.js +120 -0
  21. package/dist/chunk-3R6JHA6D.js.map +1 -0
  22. package/dist/chunk-4OXKHV7J.js +43 -0
  23. package/dist/chunk-4OXKHV7J.js.map +1 -0
  24. package/dist/chunk-4PJM4752.js +4 -0
  25. package/dist/chunk-4PJM4752.js.map +1 -0
  26. package/dist/chunk-65JRVC3F.mjs +54 -0
  27. package/dist/chunk-65JRVC3F.mjs.map +1 -0
  28. package/dist/chunk-6HL54I2B.js +336 -0
  29. package/dist/chunk-6HL54I2B.js.map +1 -0
  30. package/dist/chunk-6V2MIQPF.mjs +77 -0
  31. package/dist/chunk-6V2MIQPF.mjs.map +1 -0
  32. package/dist/chunk-6YLCRWKM.mjs +8 -0
  33. package/dist/chunk-6YLCRWKM.mjs.map +1 -0
  34. package/dist/chunk-7CRU2Y5X.mjs +152 -0
  35. package/dist/chunk-7CRU2Y5X.mjs.map +1 -0
  36. package/dist/chunk-7PMT4L4I.js +324 -0
  37. package/dist/chunk-7PMT4L4I.js.map +1 -0
  38. package/dist/chunk-7VVZHFEM.js +88 -0
  39. package/dist/chunk-7VVZHFEM.js.map +1 -0
  40. package/dist/chunk-AWHGIKTQ.js +56 -0
  41. package/dist/chunk-AWHGIKTQ.js.map +1 -0
  42. package/dist/chunk-B3GYF6TY.js +37 -0
  43. package/dist/chunk-B3GYF6TY.js.map +1 -0
  44. package/dist/chunk-BDBJFOXM.mjs +14 -0
  45. package/dist/chunk-BDBJFOXM.mjs.map +1 -0
  46. package/dist/chunk-BTW3SWQN.mjs +25 -0
  47. package/dist/chunk-BTW3SWQN.mjs.map +1 -0
  48. package/dist/chunk-CHYSSZ4E.mjs +734 -0
  49. package/dist/chunk-CHYSSZ4E.mjs.map +1 -0
  50. package/dist/chunk-DO6QYAZV.mjs +298 -0
  51. package/dist/chunk-DO6QYAZV.mjs.map +1 -0
  52. package/dist/chunk-DTR53LQO.mjs +781 -0
  53. package/dist/chunk-DTR53LQO.mjs.map +1 -0
  54. package/dist/chunk-EI2S4XDG.mjs +89 -0
  55. package/dist/chunk-EI2S4XDG.mjs.map +1 -0
  56. package/dist/chunk-EOZHUI46.js +93 -0
  57. package/dist/chunk-EOZHUI46.js.map +1 -0
  58. package/dist/chunk-F2BZIU67.js +184 -0
  59. package/dist/chunk-F2BZIU67.js.map +1 -0
  60. package/dist/chunk-F2TEJSCP.js +756 -0
  61. package/dist/chunk-F2TEJSCP.js.map +1 -0
  62. package/dist/chunk-FCLS5R24.js +148 -0
  63. package/dist/chunk-FCLS5R24.js.map +1 -0
  64. package/dist/chunk-FUA6ZGMI.mjs +376 -0
  65. package/dist/chunk-FUA6ZGMI.mjs.map +1 -0
  66. package/dist/chunk-FY2X3LYR.mjs +3 -0
  67. package/dist/chunk-FY2X3LYR.mjs.map +1 -0
  68. package/dist/chunk-GS4SAW25.mjs +116 -0
  69. package/dist/chunk-GS4SAW25.mjs.map +1 -0
  70. package/dist/chunk-H56ICWUO.js +321 -0
  71. package/dist/chunk-H56ICWUO.js.map +1 -0
  72. package/dist/chunk-HG34SGMN.mjs +546 -0
  73. package/dist/chunk-HG34SGMN.mjs.map +1 -0
  74. package/dist/chunk-HL4H2HF6.js +279 -0
  75. package/dist/chunk-HL4H2HF6.js.map +1 -0
  76. package/dist/chunk-IJIQUMAK.mjs +272 -0
  77. package/dist/chunk-IJIQUMAK.mjs.map +1 -0
  78. package/dist/chunk-KEZFTDZT.mjs +559 -0
  79. package/dist/chunk-KEZFTDZT.mjs.map +1 -0
  80. package/dist/chunk-KHOVC2KL.js +144 -0
  81. package/dist/chunk-KHOVC2KL.js.map +1 -0
  82. package/dist/chunk-KRBSTLKC.js +6154 -0
  83. package/dist/chunk-KRBSTLKC.js.map +1 -0
  84. package/dist/chunk-KVYHCGRY.js +2011 -0
  85. package/dist/chunk-KVYHCGRY.js.map +1 -0
  86. package/dist/chunk-LZ5YTMMP.mjs +41 -0
  87. package/dist/chunk-LZ5YTMMP.mjs.map +1 -0
  88. package/dist/chunk-MJ6XJGAL.js +1551 -0
  89. package/dist/chunk-MJ6XJGAL.js.map +1 -0
  90. package/dist/chunk-MKLXCV4Z.mjs +1510 -0
  91. package/dist/chunk-MKLXCV4Z.mjs.map +1 -0
  92. package/dist/chunk-MMDSZIXD.mjs +286 -0
  93. package/dist/chunk-MMDSZIXD.mjs.map +1 -0
  94. package/dist/chunk-N2O3OX5Y.mjs +243 -0
  95. package/dist/chunk-N2O3OX5Y.mjs.map +1 -0
  96. package/dist/chunk-O6NNSPWD.mjs +35 -0
  97. package/dist/chunk-O6NNSPWD.mjs.map +1 -0
  98. package/dist/chunk-OIRZXSYM.js +80 -0
  99. package/dist/chunk-OIRZXSYM.js.map +1 -0
  100. package/dist/chunk-P7JQRNBJ.mjs +76 -0
  101. package/dist/chunk-P7JQRNBJ.mjs.map +1 -0
  102. package/dist/chunk-PA4ELVGI.js +20 -0
  103. package/dist/chunk-PA4ELVGI.js.map +1 -0
  104. package/dist/chunk-PLIG5257.mjs +2613 -0
  105. package/dist/chunk-PLIG5257.mjs.map +1 -0
  106. package/dist/chunk-QIF4MG5V.mjs +283 -0
  107. package/dist/chunk-QIF4MG5V.mjs.map +1 -0
  108. package/dist/chunk-RHECN4E2.mjs +6077 -0
  109. package/dist/chunk-RHECN4E2.mjs.map +1 -0
  110. package/dist/chunk-RHHTZTIN.mjs +314 -0
  111. package/dist/chunk-RHHTZTIN.mjs.map +1 -0
  112. package/dist/chunk-RRQ2X26Z.js +106 -0
  113. package/dist/chunk-RRQ2X26Z.js.map +1 -0
  114. package/dist/chunk-RST2T54Y.js +836 -0
  115. package/dist/chunk-RST2T54Y.js.map +1 -0
  116. package/dist/chunk-RVNQI6BI.js +249 -0
  117. package/dist/chunk-RVNQI6BI.js.map +1 -0
  118. package/dist/chunk-S3K4LTRI.mjs +226 -0
  119. package/dist/chunk-S3K4LTRI.mjs.map +1 -0
  120. package/dist/chunk-SWZ5XNF6.js +158 -0
  121. package/dist/chunk-SWZ5XNF6.js.map +1 -0
  122. package/dist/chunk-TNJ6LYX7.mjs +18 -0
  123. package/dist/chunk-TNJ6LYX7.mjs.map +1 -0
  124. package/dist/chunk-U7HNBCBS.js +207 -0
  125. package/dist/chunk-U7HNBCBS.js.map +1 -0
  126. package/dist/chunk-UJS3YSD3.mjs +37 -0
  127. package/dist/chunk-UJS3YSD3.mjs.map +1 -0
  128. package/dist/chunk-UJUWDF7M.mjs +336 -0
  129. package/dist/chunk-UJUWDF7M.mjs.map +1 -0
  130. package/dist/chunk-UR5NENGE.js +78 -0
  131. package/dist/chunk-UR5NENGE.js.map +1 -0
  132. package/dist/chunk-V7HGBDCB.mjs +135 -0
  133. package/dist/chunk-V7HGBDCB.mjs.map +1 -0
  134. package/dist/chunk-V7RLIZMN.js +90 -0
  135. package/dist/chunk-V7RLIZMN.js.map +1 -0
  136. package/dist/chunk-VCKXK6V5.js +345 -0
  137. package/dist/chunk-VCKXK6V5.js.map +1 -0
  138. package/dist/chunk-VIEXDTNF.mjs +100 -0
  139. package/dist/chunk-VIEXDTNF.mjs.map +1 -0
  140. package/dist/chunk-VN2DULIA.js +579 -0
  141. package/dist/chunk-VN2DULIA.js.map +1 -0
  142. package/dist/chunk-VNWMRUY6.js +168 -0
  143. package/dist/chunk-VNWMRUY6.js.map +1 -0
  144. package/dist/chunk-VYK4M2D6.mjs +177 -0
  145. package/dist/chunk-VYK4M2D6.mjs.map +1 -0
  146. package/dist/chunk-WB4H6ZUW.mjs +86 -0
  147. package/dist/chunk-WB4H6ZUW.mjs.map +1 -0
  148. package/dist/chunk-WM3AEJ2E.mjs +981 -0
  149. package/dist/chunk-WM3AEJ2E.mjs.map +1 -0
  150. package/dist/chunk-X5GINUGI.mjs +162 -0
  151. package/dist/chunk-X5GINUGI.mjs.map +1 -0
  152. package/dist/chunk-XB7GUEHZ.mjs +82 -0
  153. package/dist/chunk-XB7GUEHZ.mjs.map +1 -0
  154. package/dist/chunk-XE5RGZ3B.js +242 -0
  155. package/dist/chunk-XE5RGZ3B.js.map +1 -0
  156. package/dist/chunk-XNTIMVSL.mjs +193 -0
  157. package/dist/chunk-XNTIMVSL.mjs.map +1 -0
  158. package/dist/chunk-Y7WHUKJF.js +387 -0
  159. package/dist/chunk-Y7WHUKJF.js.map +1 -0
  160. package/dist/chunk-YIRPPMCN.mjs +1916 -0
  161. package/dist/chunk-YIRPPMCN.mjs.map +1 -0
  162. package/dist/chunk-YTGUIRRH.js +10 -0
  163. package/dist/chunk-YTGUIRRH.js.map +1 -0
  164. package/dist/chunk-Z2SNB5LJ.js +28 -0
  165. package/dist/chunk-Z2SNB5LJ.js.map +1 -0
  166. package/dist/chunk-ZOP7YIVX.js +552 -0
  167. package/dist/chunk-ZOP7YIVX.js.map +1 -0
  168. package/dist/chunk-ZUZLWHH5.mjs +146 -0
  169. package/dist/chunk-ZUZLWHH5.mjs.map +1 -0
  170. package/dist/common/ai/llm/core/index.d.mts +70 -0
  171. package/dist/common/ai/llm/core/index.d.ts +70 -0
  172. package/dist/common/ai/llm/core/index.js +54 -0
  173. package/dist/common/ai/llm/core/index.mjs +5 -0
  174. package/dist/common/ai/llm/electron/index.d.mts +6 -0
  175. package/dist/common/ai/llm/electron/index.d.ts +6 -0
  176. package/dist/common/ai/llm/electron/index.js +67 -0
  177. package/dist/common/ai/llm/electron/index.mjs +10 -0
  178. package/dist/common/ai/llm/index.d.mts +3 -0
  179. package/dist/common/ai/llm/index.d.ts +3 -0
  180. package/dist/common/ai/llm/index.js +54 -0
  181. package/dist/common/ai/llm/index.mjs +5 -0
  182. package/dist/common/ai/llm/miniapp/index.d.mts +6 -0
  183. package/dist/common/ai/llm/miniapp/index.d.ts +6 -0
  184. package/dist/common/ai/llm/miniapp/index.js +59 -0
  185. package/dist/common/ai/llm/miniapp/index.mjs +6 -0
  186. package/dist/common/ai/llm/rn/index.d.mts +6 -0
  187. package/dist/common/ai/llm/rn/index.d.ts +6 -0
  188. package/dist/common/ai/llm/rn/index.js +59 -0
  189. package/dist/common/ai/llm/rn/index.mjs +6 -0
  190. package/dist/common/ai/llm/ui/electron/index.d.mts +5 -0
  191. package/dist/common/ai/llm/ui/electron/index.d.ts +5 -0
  192. package/dist/common/ai/llm/ui/electron/index.js +22 -0
  193. package/dist/common/ai/llm/ui/electron/index.mjs +9 -0
  194. package/dist/common/ai/llm/ui/miniapp/index.d.mts +9 -0
  195. package/dist/common/ai/llm/ui/miniapp/index.d.ts +9 -0
  196. package/dist/common/ai/llm/ui/miniapp/index.js +14 -0
  197. package/dist/common/ai/llm/ui/miniapp/index.mjs +5 -0
  198. package/dist/common/ai/llm/ui/rn/index.d.mts +9 -0
  199. package/dist/common/ai/llm/ui/rn/index.d.ts +9 -0
  200. package/dist/common/ai/llm/ui/rn/index.js +14 -0
  201. package/dist/common/ai/llm/ui/rn/index.mjs +5 -0
  202. package/dist/common/ai/llm/ui/web/index.d.mts +15 -0
  203. package/dist/common/ai/llm/ui/web/index.d.ts +15 -0
  204. package/dist/common/ai/llm/ui/web/index.js +21 -0
  205. package/dist/common/ai/llm/ui/web/index.mjs +8 -0
  206. package/dist/common/ai/llm/web/index.d.mts +6 -0
  207. package/dist/common/ai/llm/web/index.d.ts +6 -0
  208. package/dist/common/ai/llm/web/index.js +66 -0
  209. package/dist/common/ai/llm/web/index.mjs +9 -0
  210. package/dist/common/analytics/index.d.mts +2 -0
  211. package/dist/common/analytics/index.d.ts +2 -0
  212. package/dist/common/analytics/index.js +314 -0
  213. package/dist/common/analytics/index.mjs +5 -0
  214. package/dist/common/analytics/server/index.js +529 -0
  215. package/dist/common/analytics/server/index.js.map +1 -0
  216. package/dist/common/analytics/server/index.mjs +525 -0
  217. package/dist/common/analytics/server/index.mjs.map +1 -0
  218. package/dist/common/api/index.d.mts +3 -0
  219. package/dist/common/api/index.d.ts +3 -0
  220. package/dist/common/api/index.js +21 -0
  221. package/dist/common/api/index.mjs +4 -0
  222. package/dist/common/auth/client/index.d.mts +1 -31
  223. package/dist/common/auth/client/index.d.ts +1 -31
  224. package/dist/common/auth/client/index.js +2 -15
  225. package/dist/common/auth/client/index.mjs +1 -2
  226. package/dist/common/auth/components/index.d.mts +5 -239
  227. package/dist/common/auth/components/index.d.ts +5 -239
  228. package/dist/common/auth/components/index.js +878 -49
  229. package/dist/common/auth/components/index.js.map +1 -1
  230. package/dist/common/auth/components/index.mjs +871 -5
  231. package/dist/common/auth/components/index.mjs.map +1 -1
  232. package/dist/common/auth/hooks/index.d.mts +2 -29
  233. package/dist/common/auth/hooks/index.d.ts +2 -29
  234. package/dist/common/auth/hooks/index.js +2 -11
  235. package/dist/common/auth/hooks/index.mjs +1 -2
  236. package/dist/common/auth/index.d.mts +5 -9
  237. package/dist/common/auth/index.d.ts +5 -9
  238. package/dist/common/auth/index.js +5 -26
  239. package/dist/common/auth/index.mjs +3 -4
  240. package/dist/common/auth/rn/index.d.mts +1 -17
  241. package/dist/common/auth/rn/index.d.ts +1 -17
  242. package/dist/common/auth/rn/index.js +2 -34
  243. package/dist/common/auth/rn/index.js.map +1 -1
  244. package/dist/common/auth/rn/index.mjs +2 -31
  245. package/dist/common/auth/rn/index.mjs.map +1 -1
  246. package/dist/common/auth/server/index.d.mts +81 -2
  247. package/dist/common/auth/server/index.d.ts +81 -2
  248. package/dist/common/auth/server/index.js +128 -37
  249. package/dist/common/auth/server/index.js.map +1 -1
  250. package/dist/common/auth/server/index.mjs +124 -1
  251. package/dist/common/auth/server/index.mjs.map +1 -1
  252. package/dist/common/auth/services/index.js +12 -9
  253. package/dist/common/auth/services/index.js.map +1 -1
  254. package/dist/common/auth/services/index.mjs +10 -1
  255. package/dist/common/auth/services/index.mjs.map +1 -1
  256. package/dist/common/components/index.d.mts +4 -0
  257. package/dist/common/components/index.d.ts +4 -0
  258. package/dist/common/components/index.js +414 -0
  259. package/dist/common/components/index.mjs +9 -0
  260. package/dist/common/config/index.d.mts +1 -0
  261. package/dist/common/config/index.d.ts +1 -0
  262. package/dist/common/config/index.js +21 -0
  263. package/dist/common/config/index.mjs +4 -0
  264. package/dist/common/config/server/index.js +1177 -0
  265. package/dist/common/config/server/index.js.map +1 -0
  266. package/dist/common/config/server/index.mjs +1138 -0
  267. package/dist/common/config/server/index.mjs.map +1 -0
  268. package/dist/common/export/index.d.mts +2 -2
  269. package/dist/common/export/index.d.ts +2 -2
  270. package/dist/common/export/index.js +67 -67
  271. package/dist/common/export/index.mjs +3 -3
  272. package/dist/common/export/server/index.d.mts +2 -2
  273. package/dist/common/export/server/index.d.ts +2 -2
  274. package/dist/common/export/server/index.js +76 -48
  275. package/dist/common/export/server/index.mjs +3 -3
  276. package/dist/common/file/index.d.mts +2 -2
  277. package/dist/common/file/index.d.ts +2 -2
  278. package/dist/common/file/index.js +27 -27
  279. package/dist/common/file/index.mjs +5 -5
  280. package/dist/common/file/server/index.d.mts +2 -2
  281. package/dist/common/file/server/index.d.ts +2 -2
  282. package/dist/common/file/server/index.js +58 -50
  283. package/dist/common/file/server/index.mjs +8 -8
  284. package/dist/common/i18n/index.d.mts +2 -0
  285. package/dist/common/i18n/index.d.ts +2 -0
  286. package/dist/common/i18n/index.js +73 -0
  287. package/dist/common/i18n/index.mjs +4 -0
  288. package/dist/common/imageCrop/index.d.mts +2 -0
  289. package/dist/common/imageCrop/index.d.ts +2 -0
  290. package/dist/common/imageCrop/index.js +61 -0
  291. package/dist/common/imageCrop/index.mjs +4 -0
  292. package/dist/common/index.d.mts +17 -20
  293. package/dist/common/index.d.ts +17 -20
  294. package/dist/common/index.js +76 -70
  295. package/dist/common/index.mjs +27 -29
  296. package/dist/common/logger/index.d.mts +1 -1
  297. package/dist/common/logger/index.d.ts +1 -1
  298. package/dist/common/logger/index.js +6 -7
  299. package/dist/common/logger/index.mjs +1 -2
  300. package/dist/common/ossFile/index.d.mts +61 -0
  301. package/dist/common/ossFile/index.d.ts +61 -0
  302. package/dist/common/ossFile/index.js +96 -0
  303. package/dist/common/ossFile/index.mjs +7 -0
  304. package/dist/common/ossFile/server/index.d.mts +94 -0
  305. package/dist/common/ossFile/server/index.d.ts +94 -0
  306. package/dist/common/ossFile/server/index.js +221 -0
  307. package/dist/common/ossFile/server/index.mjs +12 -0
  308. package/dist/common/platform/index.js +8 -8
  309. package/dist/common/platform/index.mjs +4 -4
  310. package/dist/common/request/index.d.mts +1 -1
  311. package/dist/common/request/index.d.ts +1 -1
  312. package/dist/common/request/index.js +5 -7
  313. package/dist/common/request/index.mjs +2 -4
  314. package/dist/common/storage/index.d.mts +1 -1
  315. package/dist/common/storage/index.d.ts +1 -1
  316. package/dist/common/storage/index.js +17 -17
  317. package/dist/common/storage/index.mjs +5 -5
  318. package/dist/common/universalExport/index.d.mts +232 -0
  319. package/dist/common/universalExport/index.d.ts +232 -0
  320. package/dist/common/universalExport/index.js +178 -0
  321. package/dist/common/universalExport/index.mjs +5 -0
  322. package/dist/common/universalExport/server/index.d.mts +1189 -0
  323. package/dist/common/universalExport/server/index.d.ts +1189 -0
  324. package/dist/common/universalExport/server/index.js +151 -0
  325. package/dist/common/universalExport/server/index.mjs +6 -0
  326. package/dist/common/universalFile/index.d.mts +409 -0
  327. package/dist/common/universalFile/index.d.ts +409 -0
  328. package/dist/common/universalFile/index.js +1742 -0
  329. package/dist/common/universalFile/index.js.map +1 -0
  330. package/dist/common/universalFile/index.mjs +1497 -0
  331. package/dist/common/universalFile/index.mjs.map +1 -0
  332. package/dist/common/universalFile/server/index.d.mts +1064 -0
  333. package/dist/common/universalFile/server/index.d.ts +1064 -0
  334. package/dist/common/universalFile/server/index.js +311 -0
  335. package/dist/common/universalFile/server/index.mjs +10 -0
  336. package/dist/common/utils/index.d.mts +1 -1
  337. package/dist/common/utils/index.d.ts +1 -1
  338. package/dist/common/utils/index.js +11 -12
  339. package/dist/common/utils/index.mjs +2 -3
  340. package/dist/index-BRLygK4h.d.ts +67 -0
  341. package/dist/index-BWNK5mH2.d.ts +76 -0
  342. package/dist/index-Bd7cKF1j.d.mts +50 -0
  343. package/dist/index-BiCK6gg6.d.mts +210 -0
  344. package/dist/index-BiCK6gg6.d.ts +210 -0
  345. package/dist/index-C-P2yBTH.d.mts +76 -0
  346. package/dist/index-CT4K2z-O.d.ts +81 -0
  347. package/dist/index-D6RJTGce.d.mts +81 -0
  348. package/dist/index-DA7L9JlE.d.mts +159 -0
  349. package/dist/index-DRQxtCDw.d.ts +50 -0
  350. package/dist/index-DXVph21C.d.mts +201 -0
  351. package/dist/index-DXVph21C.d.ts +201 -0
  352. package/dist/index-DzyK789B.d.mts +67 -0
  353. package/dist/index-FVJZCEtm.d.mts +145 -0
  354. package/dist/index-FVJZCEtm.d.ts +145 -0
  355. package/dist/index-nD9vPCZT.d.ts +159 -0
  356. package/dist/index-nOmIv2BG.d.mts +559 -0
  357. package/dist/index-nOmIv2BG.d.ts +559 -0
  358. package/dist/path-Bzc7hj1N.d.ts +45 -0
  359. package/dist/path-DN_65vhO.d.mts +45 -0
  360. package/dist/utils-Dm3O1rAa.d.mts +366 -0
  361. package/dist/utils-Dm3O1rAa.d.ts +366 -0
  362. package/package.json +293 -348
  363. package/dist/AliyunOSSProvider-4GRL2FJB.js +0 -15
  364. package/dist/AliyunOSSProvider-4GRL2FJB.js.map +0 -1
  365. package/dist/AliyunOSSProvider-QNVFIZ7Q.mjs +0 -6
  366. package/dist/AliyunOSSProvider-QNVFIZ7Q.mjs.map +0 -1
  367. package/dist/CollisionBalls-BpHufX3H.d.mts +0 -41
  368. package/dist/CollisionBalls-BpHufX3H.d.ts +0 -41
  369. package/dist/ConfigService-BxK06xP6.d.mts +0 -262
  370. package/dist/ConfigService-BxK06xP6.d.ts +0 -262
  371. package/dist/LocalStorageProvider-J5RHV37G.mjs +0 -6
  372. package/dist/LocalStorageProvider-J5RHV37G.mjs.map +0 -1
  373. package/dist/LocalStorageProvider-PFA2DMIJ.js +0 -15
  374. package/dist/LocalStorageProvider-PFA2DMIJ.js.map +0 -1
  375. package/dist/UniversalFileService-CC4d3wkc.d.ts +0 -139
  376. package/dist/UniversalFileService-CzAE_G4V.d.mts +0 -139
  377. package/dist/ai/llm/core/index.d.mts +0 -70
  378. package/dist/ai/llm/core/index.d.ts +0 -70
  379. package/dist/ai/llm/core/index.js +0 -54
  380. package/dist/ai/llm/core/index.mjs +0 -5
  381. package/dist/ai/llm/electron/index.d.mts +0 -6
  382. package/dist/ai/llm/electron/index.d.ts +0 -6
  383. package/dist/ai/llm/electron/index.js +0 -66
  384. package/dist/ai/llm/electron/index.mjs +0 -9
  385. package/dist/ai/llm/index.d.mts +0 -3
  386. package/dist/ai/llm/index.d.ts +0 -3
  387. package/dist/ai/llm/index.js +0 -54
  388. package/dist/ai/llm/index.mjs +0 -5
  389. package/dist/ai/llm/miniapp/index.d.mts +0 -6
  390. package/dist/ai/llm/miniapp/index.d.ts +0 -6
  391. package/dist/ai/llm/miniapp/index.js +0 -59
  392. package/dist/ai/llm/miniapp/index.mjs +0 -6
  393. package/dist/ai/llm/rn/index.d.mts +0 -6
  394. package/dist/ai/llm/rn/index.d.ts +0 -6
  395. package/dist/ai/llm/rn/index.js +0 -59
  396. package/dist/ai/llm/rn/index.mjs +0 -6
  397. package/dist/ai/llm/ui/electron/index.d.mts +0 -5
  398. package/dist/ai/llm/ui/electron/index.d.ts +0 -5
  399. package/dist/ai/llm/ui/electron/index.js +0 -21
  400. package/dist/ai/llm/ui/electron/index.mjs +0 -8
  401. package/dist/ai/llm/ui/miniapp/index.d.mts +0 -9
  402. package/dist/ai/llm/ui/miniapp/index.d.ts +0 -9
  403. package/dist/ai/llm/ui/miniapp/index.js +0 -14
  404. package/dist/ai/llm/ui/miniapp/index.mjs +0 -5
  405. package/dist/ai/llm/ui/rn/index.d.mts +0 -9
  406. package/dist/ai/llm/ui/rn/index.d.ts +0 -9
  407. package/dist/ai/llm/ui/rn/index.js +0 -14
  408. package/dist/ai/llm/ui/rn/index.mjs +0 -5
  409. package/dist/ai/llm/ui/web/index.d.mts +0 -15
  410. package/dist/ai/llm/ui/web/index.d.ts +0 -15
  411. package/dist/ai/llm/ui/web/index.js +0 -20
  412. package/dist/ai/llm/ui/web/index.mjs +0 -7
  413. package/dist/ai/llm/web/index.d.mts +0 -6
  414. package/dist/ai/llm/web/index.d.ts +0 -6
  415. package/dist/ai/llm/web/index.js +0 -65
  416. package/dist/ai/llm/web/index.mjs +0 -8
  417. package/dist/analytics/index.d.mts +0 -2
  418. package/dist/analytics/index.d.ts +0 -2
  419. package/dist/analytics/index.js +0 -314
  420. package/dist/analytics/index.mjs +0 -5
  421. package/dist/analytics/server/index.js +0 -529
  422. package/dist/analytics/server/index.js.map +0 -1
  423. package/dist/analytics/server/index.mjs +0 -525
  424. package/dist/analytics/server/index.mjs.map +0 -1
  425. package/dist/api/index.d.mts +0 -3
  426. package/dist/api/index.d.ts +0 -3
  427. package/dist/api/index.js +0 -21
  428. package/dist/api/index.mjs +0 -4
  429. package/dist/audioDetection/index.d.mts +0 -449
  430. package/dist/audioDetection/index.d.ts +0 -449
  431. package/dist/audioDetection/index.js +0 -1244
  432. package/dist/audioDetection/index.js.map +0 -1
  433. package/dist/audioDetection/index.mjs +0 -1227
  434. package/dist/audioDetection/index.mjs.map +0 -1
  435. package/dist/auth/client/index.d.mts +0 -13
  436. package/dist/auth/client/index.d.ts +0 -13
  437. package/dist/auth/client/index.js +0 -26
  438. package/dist/auth/client/index.mjs +0 -5
  439. package/dist/auth/components/index.d.mts +0 -10
  440. package/dist/auth/components/index.d.ts +0 -10
  441. package/dist/auth/components/index.js +0 -70
  442. package/dist/auth/components/index.mjs +0 -9
  443. package/dist/auth/hooks/index.d.mts +0 -13
  444. package/dist/auth/hooks/index.d.ts +0 -13
  445. package/dist/auth/hooks/index.js +0 -28
  446. package/dist/auth/hooks/index.mjs +0 -7
  447. package/dist/auth/index.d.mts +0 -21
  448. package/dist/auth/index.d.ts +0 -21
  449. package/dist/auth/index.js +0 -112
  450. package/dist/auth/index.mjs +0 -11
  451. package/dist/auth/rn/index.d.mts +0 -3133
  452. package/dist/auth/rn/index.d.ts +0 -3133
  453. package/dist/auth/rn/index.js +0 -684
  454. package/dist/auth/rn/index.js.map +0 -1
  455. package/dist/auth/rn/index.mjs +0 -663
  456. package/dist/auth/rn/index.mjs.map +0 -1
  457. package/dist/auth/schema/index.d.mts +0 -4
  458. package/dist/auth/schema/index.d.ts +0 -4
  459. package/dist/auth/schema/index.js +0 -49
  460. package/dist/auth/schema/index.mjs +0 -4
  461. package/dist/auth/services/index.d.mts +0 -1
  462. package/dist/auth/services/index.d.ts +0 -1
  463. package/dist/auth/services/index.js +0 -17
  464. package/dist/auth/services/index.mjs +0 -4
  465. package/dist/base-api-client-BpmcQt4Q.d.ts +0 -103
  466. package/dist/base-api-client-CFIhZK4C.d.mts +0 -277
  467. package/dist/base-api-client-CFIhZK4C.d.ts +0 -277
  468. package/dist/base-api-client-DXLsq2yz.d.mts +0 -103
  469. package/dist/boothVaultService-Cn4WPhjg.d.mts +0 -83
  470. package/dist/boothVaultService-Cn4WPhjg.d.ts +0 -83
  471. package/dist/business/index.d.mts +0 -2
  472. package/dist/business/index.d.ts +0 -2
  473. package/dist/business/index.js +0 -581
  474. package/dist/business/index.js.map +0 -1
  475. package/dist/business/index.mjs +0 -575
  476. package/dist/business/index.mjs.map +0 -1
  477. package/dist/calendar/index.d.mts +0 -1325
  478. package/dist/calendar/index.d.ts +0 -1325
  479. package/dist/calendar/index.js +0 -5964
  480. package/dist/calendar/index.js.map +0 -1
  481. package/dist/calendar/index.mjs +0 -5878
  482. package/dist/calendar/index.mjs.map +0 -1
  483. package/dist/calendar/routes/index.d.mts +0 -191
  484. package/dist/calendar/routes/index.d.ts +0 -191
  485. package/dist/calendar/routes/index.js +0 -844
  486. package/dist/calendar/routes/index.js.map +0 -1
  487. package/dist/calendar/routes/index.mjs +0 -826
  488. package/dist/calendar/routes/index.mjs.map +0 -1
  489. package/dist/chunk-25OFOKNF.js +0 -171
  490. package/dist/chunk-25OFOKNF.js.map +0 -1
  491. package/dist/chunk-2Y7BKFKZ.js +0 -37
  492. package/dist/chunk-2Y7BKFKZ.js.map +0 -1
  493. package/dist/chunk-3DXPQ4YV.mjs +0 -165
  494. package/dist/chunk-3DXPQ4YV.mjs.map +0 -1
  495. package/dist/chunk-3FRAIS4T.mjs +0 -35
  496. package/dist/chunk-3FRAIS4T.mjs.map +0 -1
  497. package/dist/chunk-3NHAT7D4.mjs +0 -361
  498. package/dist/chunk-3NHAT7D4.mjs.map +0 -1
  499. package/dist/chunk-3Z43XGA4.mjs +0 -54
  500. package/dist/chunk-3Z43XGA4.mjs.map +0 -1
  501. package/dist/chunk-4FDUURSD.js +0 -22
  502. package/dist/chunk-4FDUURSD.js.map +0 -1
  503. package/dist/chunk-4WBCWJSN.js +0 -836
  504. package/dist/chunk-4WBCWJSN.js.map +0 -1
  505. package/dist/chunk-5GBDDXYL.mjs +0 -23
  506. package/dist/chunk-5GBDDXYL.mjs.map +0 -1
  507. package/dist/chunk-5USIS3UM.js +0 -4
  508. package/dist/chunk-5USIS3UM.js.map +0 -1
  509. package/dist/chunk-7E3J7VAD.mjs +0 -3
  510. package/dist/chunk-7E3J7VAD.mjs.map +0 -1
  511. package/dist/chunk-ACUFEDVQ.js +0 -345
  512. package/dist/chunk-ACUFEDVQ.js.map +0 -1
  513. package/dist/chunk-AQPU2AXH.js +0 -756
  514. package/dist/chunk-AQPU2AXH.js.map +0 -1
  515. package/dist/chunk-ATUCZXJY.js +0 -80
  516. package/dist/chunk-ATUCZXJY.js.map +0 -1
  517. package/dist/chunk-B3CZ3HXJ.mjs +0 -126
  518. package/dist/chunk-B3CZ3HXJ.mjs.map +0 -1
  519. package/dist/chunk-BCE6RUZV.js +0 -2695
  520. package/dist/chunk-BCE6RUZV.js.map +0 -1
  521. package/dist/chunk-BIHYZA67.mjs +0 -2613
  522. package/dist/chunk-BIHYZA67.mjs.map +0 -1
  523. package/dist/chunk-C6KV7VTZ.mjs +0 -152
  524. package/dist/chunk-C6KV7VTZ.mjs.map +0 -1
  525. package/dist/chunk-CAYOQDBR.js +0 -78
  526. package/dist/chunk-CAYOQDBR.js.map +0 -1
  527. package/dist/chunk-CIVO4R6N.mjs +0 -37
  528. package/dist/chunk-CIVO4R6N.mjs.map +0 -1
  529. package/dist/chunk-CX2GHCAI.mjs +0 -217
  530. package/dist/chunk-CX2GHCAI.mjs.map +0 -1
  531. package/dist/chunk-DIF5VRL3.mjs +0 -73
  532. package/dist/chunk-DIF5VRL3.mjs.map +0 -1
  533. package/dist/chunk-FCEBAWN6.js +0 -18
  534. package/dist/chunk-FCEBAWN6.js.map +0 -1
  535. package/dist/chunk-FHIE5MTC.mjs +0 -541
  536. package/dist/chunk-FHIE5MTC.mjs.map +0 -1
  537. package/dist/chunk-FHLTPXAR.js +0 -56
  538. package/dist/chunk-FHLTPXAR.js.map +0 -1
  539. package/dist/chunk-FIUBFREP.mjs +0 -298
  540. package/dist/chunk-FIUBFREP.mjs.map +0 -1
  541. package/dist/chunk-FOQEQWX5.js +0 -4
  542. package/dist/chunk-FOQEQWX5.js.map +0 -1
  543. package/dist/chunk-FXQOXLDE.js +0 -120
  544. package/dist/chunk-FXQOXLDE.js.map +0 -1
  545. package/dist/chunk-G4NFB2QA.mjs +0 -212
  546. package/dist/chunk-G4NFB2QA.mjs.map +0 -1
  547. package/dist/chunk-G5HJGXGC.mjs +0 -39
  548. package/dist/chunk-G5HJGXGC.mjs.map +0 -1
  549. package/dist/chunk-G6HXNQ2U.mjs +0 -336
  550. package/dist/chunk-G6HXNQ2U.mjs.map +0 -1
  551. package/dist/chunk-G6NSKJMH.js +0 -106
  552. package/dist/chunk-G6NSKJMH.js.map +0 -1
  553. package/dist/chunk-G7UBMCUT.mjs +0 -41
  554. package/dist/chunk-G7UBMCUT.mjs.map +0 -1
  555. package/dist/chunk-GQZHGSRR.js +0 -44
  556. package/dist/chunk-GQZHGSRR.js.map +0 -1
  557. package/dist/chunk-GS7XLKET.js +0 -41
  558. package/dist/chunk-GS7XLKET.js.map +0 -1
  559. package/dist/chunk-GWNBVGDT.mjs +0 -1232
  560. package/dist/chunk-GWNBVGDT.mjs.map +0 -1
  561. package/dist/chunk-HDMIOOZY.mjs +0 -546
  562. package/dist/chunk-HDMIOOZY.mjs.map +0 -1
  563. package/dist/chunk-HJ6MH7J7.js +0 -552
  564. package/dist/chunk-HJ6MH7J7.js.map +0 -1
  565. package/dist/chunk-HJZHQW5R.mjs +0 -146
  566. package/dist/chunk-HJZHQW5R.mjs.map +0 -1
  567. package/dist/chunk-I5ZPEDNR.mjs +0 -734
  568. package/dist/chunk-I5ZPEDNR.mjs.map +0 -1
  569. package/dist/chunk-IBWDBBX5.mjs +0 -16
  570. package/dist/chunk-IBWDBBX5.mjs.map +0 -1
  571. package/dist/chunk-J77KR2EV.mjs +0 -193
  572. package/dist/chunk-J77KR2EV.mjs.map +0 -1
  573. package/dist/chunk-KH6RQ4J5.js +0 -28
  574. package/dist/chunk-KH6RQ4J5.js.map +0 -1
  575. package/dist/chunk-KQ643L7Z.js +0 -144
  576. package/dist/chunk-KQ643L7Z.js.map +0 -1
  577. package/dist/chunk-LFB5EIIM.mjs +0 -31
  578. package/dist/chunk-LFB5EIIM.mjs.map +0 -1
  579. package/dist/chunk-LHJKLUM7.mjs +0 -18
  580. package/dist/chunk-LHJKLUM7.mjs.map +0 -1
  581. package/dist/chunk-MBANGIG3.mjs +0 -781
  582. package/dist/chunk-MBANGIG3.mjs.map +0 -1
  583. package/dist/chunk-MWSAH7ZG.mjs +0 -42
  584. package/dist/chunk-MWSAH7ZG.mjs.map +0 -1
  585. package/dist/chunk-MZOGYD4N.mjs +0 -186
  586. package/dist/chunk-MZOGYD4N.mjs.map +0 -1
  587. package/dist/chunk-NCRP2YHY.mjs +0 -1598
  588. package/dist/chunk-NCRP2YHY.mjs.map +0 -1
  589. package/dist/chunk-NDGHXVGS.js +0 -25
  590. package/dist/chunk-NDGHXVGS.js.map +0 -1
  591. package/dist/chunk-NDPO5OMC.js +0 -563
  592. package/dist/chunk-NDPO5OMC.js.map +0 -1
  593. package/dist/chunk-PBI7FKMB.js +0 -43
  594. package/dist/chunk-PBI7FKMB.js.map +0 -1
  595. package/dist/chunk-Q5EDCKQA.js +0 -336
  596. package/dist/chunk-Q5EDCKQA.js.map +0 -1
  597. package/dist/chunk-Q5VFBPMG.mjs +0 -76
  598. package/dist/chunk-Q5VFBPMG.mjs.map +0 -1
  599. package/dist/chunk-QDUBO567.js +0 -1148
  600. package/dist/chunk-QDUBO567.js.map +0 -1
  601. package/dist/chunk-QP5N3ER6.js +0 -18
  602. package/dist/chunk-QP5N3ER6.js.map +0 -1
  603. package/dist/chunk-QXAOXBVB.mjs +0 -135
  604. package/dist/chunk-QXAOXBVB.mjs.map +0 -1
  605. package/dist/chunk-R2DXTE2L.js +0 -249
  606. package/dist/chunk-R2DXTE2L.js.map +0 -1
  607. package/dist/chunk-RJP2BRJD.mjs +0 -6077
  608. package/dist/chunk-RJP2BRJD.mjs.map +0 -1
  609. package/dist/chunk-RTD2WHQQ.mjs +0 -16
  610. package/dist/chunk-RTD2WHQQ.mjs.map +0 -1
  611. package/dist/chunk-RWCD2CAD.mjs +0 -1132
  612. package/dist/chunk-RWCD2CAD.mjs.map +0 -1
  613. package/dist/chunk-S37OK2QG.js +0 -216
  614. package/dist/chunk-S37OK2QG.js.map +0 -1
  615. package/dist/chunk-S3PUP7N4.js +0 -20
  616. package/dist/chunk-S3PUP7N4.js.map +0 -1
  617. package/dist/chunk-S6YSGVWD.js +0 -224
  618. package/dist/chunk-S6YSGVWD.js.map +0 -1
  619. package/dist/chunk-S732H246.js +0 -6154
  620. package/dist/chunk-S732H246.js.map +0 -1
  621. package/dist/chunk-SFDJNKWC.js +0 -22
  622. package/dist/chunk-SFDJNKWC.js.map +0 -1
  623. package/dist/chunk-SKFEJPMJ.mjs +0 -226
  624. package/dist/chunk-SKFEJPMJ.mjs.map +0 -1
  625. package/dist/chunk-SLKOEYFH.js +0 -303
  626. package/dist/chunk-SLKOEYFH.js.map +0 -1
  627. package/dist/chunk-TC5YU6A4.mjs +0 -243
  628. package/dist/chunk-TC5YU6A4.mjs.map +0 -1
  629. package/dist/chunk-TXMX6PZR.js +0 -190
  630. package/dist/chunk-TXMX6PZR.js.map +0 -1
  631. package/dist/chunk-UCOE6SET.js +0 -148
  632. package/dist/chunk-UCOE6SET.js.map +0 -1
  633. package/dist/chunk-UIYKZ73N.js +0 -36
  634. package/dist/chunk-UIYKZ73N.js.map +0 -1
  635. package/dist/chunk-V7EVKD5G.mjs +0 -116
  636. package/dist/chunk-V7EVKD5G.mjs.map +0 -1
  637. package/dist/chunk-VHN7PF5I.js +0 -20
  638. package/dist/chunk-VHN7PF5I.js.map +0 -1
  639. package/dist/chunk-VMTEDX5H.js +0 -1275
  640. package/dist/chunk-VMTEDX5H.js.map +0 -1
  641. package/dist/chunk-VRN76M56.mjs +0 -3
  642. package/dist/chunk-VRN76M56.mjs.map +0 -1
  643. package/dist/chunk-VXFUXZN5.mjs +0 -20
  644. package/dist/chunk-VXFUXZN5.mjs.map +0 -1
  645. package/dist/chunk-WEEXCPSE.mjs +0 -86
  646. package/dist/chunk-WEEXCPSE.mjs.map +0 -1
  647. package/dist/chunk-WW4GE6CZ.js +0 -1647
  648. package/dist/chunk-WW4GE6CZ.js.map +0 -1
  649. package/dist/chunk-WZDTNDYR.js +0 -207
  650. package/dist/chunk-WZDTNDYR.js.map +0 -1
  651. package/dist/chunk-XBZIS3MV.mjs +0 -13
  652. package/dist/chunk-XBZIS3MV.mjs.map +0 -1
  653. package/dist/chunk-XFOZ56FB.mjs +0 -20
  654. package/dist/chunk-XFOZ56FB.mjs.map +0 -1
  655. package/dist/chunk-XJ7ZAGC5.js +0 -88
  656. package/dist/chunk-XJ7ZAGC5.js.map +0 -1
  657. package/dist/chunk-XUS5ACKR.mjs +0 -100
  658. package/dist/chunk-XUS5ACKR.mjs.map +0 -1
  659. package/dist/chunk-YOTQG4NP.mjs +0 -314
  660. package/dist/chunk-YOTQG4NP.mjs.map +0 -1
  661. package/dist/chunk-Z23HAXHL.js +0 -136
  662. package/dist/chunk-Z23HAXHL.js.map +0 -1
  663. package/dist/chunk-ZGVB35L2.mjs +0 -25
  664. package/dist/chunk-ZGVB35L2.mjs.map +0 -1
  665. package/dist/chunk-ZLYPALF3.js +0 -242
  666. package/dist/chunk-ZLYPALF3.js.map +0 -1
  667. package/dist/chunk-ZM2SZJTZ.js +0 -158
  668. package/dist/chunk-ZM2SZJTZ.js.map +0 -1
  669. package/dist/chunk-ZRAW3HXA.js +0 -43
  670. package/dist/chunk-ZRAW3HXA.js.map +0 -1
  671. package/dist/chunk-ZWQJSZEY.js +0 -371
  672. package/dist/chunk-ZWQJSZEY.js.map +0 -1
  673. package/dist/components/index.d.mts +0 -405
  674. package/dist/components/index.d.ts +0 -405
  675. package/dist/components/index.js +0 -2516
  676. package/dist/components/index.js.map +0 -1
  677. package/dist/components/index.mjs +0 -2396
  678. package/dist/components/index.mjs.map +0 -1
  679. package/dist/config/index.d.mts +0 -1
  680. package/dist/config/index.d.ts +0 -1
  681. package/dist/config/index.js +0 -21
  682. package/dist/config/index.mjs +0 -4
  683. package/dist/config/server/index.js +0 -1177
  684. package/dist/config/server/index.js.map +0 -1
  685. package/dist/config/server/index.mjs +0 -1138
  686. package/dist/config/server/index.mjs.map +0 -1
  687. package/dist/drizzle-schema-BNhqj2AZ.d.mts +0 -1114
  688. package/dist/drizzle-schema-BNhqj2AZ.d.ts +0 -1114
  689. package/dist/festivalCard/index.d.mts +0 -76
  690. package/dist/festivalCard/index.d.ts +0 -76
  691. package/dist/festivalCard/index.js +0 -1492
  692. package/dist/festivalCard/index.js.map +0 -1
  693. package/dist/festivalCard/index.mjs +0 -1475
  694. package/dist/festivalCard/index.mjs.map +0 -1
  695. package/dist/festivalCard/routes/index.d.mts +0 -42
  696. package/dist/festivalCard/routes/index.d.ts +0 -42
  697. package/dist/festivalCard/routes/index.js +0 -361
  698. package/dist/festivalCard/routes/index.js.map +0 -1
  699. package/dist/festivalCard/routes/index.mjs +0 -356
  700. package/dist/festivalCard/routes/index.mjs.map +0 -1
  701. package/dist/festivalCard/server/index.d.mts +0 -120
  702. package/dist/festivalCard/server/index.d.ts +0 -120
  703. package/dist/festivalCard/server/index.js +0 -272
  704. package/dist/festivalCard/server/index.js.map +0 -1
  705. package/dist/festivalCard/server/index.mjs +0 -265
  706. package/dist/festivalCard/server/index.mjs.map +0 -1
  707. package/dist/festivalCardService-B3GsnNpV.d.ts +0 -13
  708. package/dist/festivalCardService-CWhrLNE9.d.mts +0 -13
  709. package/dist/i18n/index.d.mts +0 -2
  710. package/dist/i18n/index.d.ts +0 -2
  711. package/dist/i18n/index.js +0 -73
  712. package/dist/i18n/index.mjs +0 -4
  713. package/dist/imageCrop/index.d.mts +0 -165
  714. package/dist/imageCrop/index.d.ts +0 -165
  715. package/dist/imageCrop/index.js +0 -560
  716. package/dist/imageCrop/index.js.map +0 -1
  717. package/dist/imageCrop/index.mjs +0 -541
  718. package/dist/imageCrop/index.mjs.map +0 -1
  719. package/dist/index-2G9Dxjvt.d.ts +0 -81
  720. package/dist/index-BcjDRcKp.d.mts +0 -40
  721. package/dist/index-Bjem5rWn.d.mts +0 -17
  722. package/dist/index-BlpXrrTy.d.ts +0 -40
  723. package/dist/index-C5U-2hJq.d.ts +0 -23
  724. package/dist/index-CYuUB8aF.d.mts +0 -67
  725. package/dist/index-CifSBBP2.d.ts +0 -17
  726. package/dist/index-D0K4ehme.d.mts +0 -20
  727. package/dist/index-DLnfKN-a.d.mts +0 -23
  728. package/dist/index-DSel44Ke.d.mts +0 -93
  729. package/dist/index-DSel44Ke.d.ts +0 -93
  730. package/dist/index-DZ5iJtNO.d.mts +0 -102
  731. package/dist/index-DZ5iJtNO.d.ts +0 -102
  732. package/dist/index-Da7qdkgW.d.ts +0 -20
  733. package/dist/index-DrPcMJPc.d.mts +0 -250
  734. package/dist/index-DrPcMJPc.d.ts +0 -250
  735. package/dist/index-WrR57hKT.d.ts +0 -67
  736. package/dist/index-oLUvfqT8.d.ts +0 -20
  737. package/dist/index-pe38RDgC.d.mts +0 -20
  738. package/dist/index-qcOvRVuN.d.mts +0 -81
  739. package/dist/index.d.mts +0 -11590
  740. package/dist/index.d.ts +0 -11590
  741. package/dist/index.js +0 -17679
  742. package/dist/index.js.map +0 -1
  743. package/dist/index.mjs +0 -17403
  744. package/dist/index.mjs.map +0 -1
  745. package/dist/logger/index.d.mts +0 -125
  746. package/dist/logger/index.d.ts +0 -125
  747. package/dist/logger/index.js +0 -29
  748. package/dist/logger/index.mjs +0 -4
  749. package/dist/mikuContest/ui/web/index.d.mts +0 -2
  750. package/dist/mikuContest/ui/web/index.d.ts +0 -2
  751. package/dist/mikuContest/ui/web/index.js +0 -353
  752. package/dist/mikuContest/ui/web/index.js.map +0 -1
  753. package/dist/mikuContest/ui/web/index.mjs +0 -343
  754. package/dist/mikuContest/ui/web/index.mjs.map +0 -1
  755. package/dist/mikuFireworks3D/index.d.mts +0 -268
  756. package/dist/mikuFireworks3D/index.d.ts +0 -268
  757. package/dist/mikuFireworks3D/index.js +0 -1267
  758. package/dist/mikuFireworks3D/index.js.map +0 -1
  759. package/dist/mikuFireworks3D/index.mjs +0 -1228
  760. package/dist/mikuFireworks3D/index.mjs.map +0 -1
  761. package/dist/mikuFusionGame/index.d.mts +0 -117
  762. package/dist/mikuFusionGame/index.d.ts +0 -117
  763. package/dist/mikuFusionGame/index.js +0 -1208
  764. package/dist/mikuFusionGame/index.js.map +0 -1
  765. package/dist/mikuFusionGame/index.mjs +0 -1195
  766. package/dist/mikuFusionGame/index.mjs.map +0 -1
  767. package/dist/mmd/admin/index.d.mts +0 -487
  768. package/dist/mmd/admin/index.d.ts +0 -487
  769. package/dist/mmd/admin/index.js +0 -1058
  770. package/dist/mmd/admin/index.js.map +0 -1
  771. package/dist/mmd/admin/index.mjs +0 -1027
  772. package/dist/mmd/admin/index.mjs.map +0 -1
  773. package/dist/mmd/index.d.mts +0 -2467
  774. package/dist/mmd/index.d.ts +0 -2467
  775. package/dist/mmd/index.js +0 -10119
  776. package/dist/mmd/index.js.map +0 -1
  777. package/dist/mmd/index.mjs +0 -10028
  778. package/dist/mmd/index.mjs.map +0 -1
  779. package/dist/mmd/server/index.d.mts +0 -139
  780. package/dist/mmd/server/index.d.ts +0 -139
  781. package/dist/mmd/server/index.js +0 -424
  782. package/dist/mmd/server/index.js.map +0 -1
  783. package/dist/mmd/server/index.mjs +0 -404
  784. package/dist/mmd/server/index.mjs.map +0 -1
  785. package/dist/music/index.d.mts +0 -74
  786. package/dist/music/index.d.ts +0 -74
  787. package/dist/music/index.js +0 -830
  788. package/dist/music/index.js.map +0 -1
  789. package/dist/music/index.mjs +0 -809
  790. package/dist/music/index.mjs.map +0 -1
  791. package/dist/music/server/index.d.mts +0 -1
  792. package/dist/music/server/index.d.ts +0 -1
  793. package/dist/music/server/index.js +0 -194
  794. package/dist/music/server/index.js.map +0 -1
  795. package/dist/music/server/index.mjs +0 -182
  796. package/dist/music/server/index.mjs.map +0 -1
  797. package/dist/navigation/index.d.mts +0 -93
  798. package/dist/navigation/index.d.ts +0 -93
  799. package/dist/navigation/index.js +0 -453
  800. package/dist/navigation/index.js.map +0 -1
  801. package/dist/navigation/index.mjs +0 -443
  802. package/dist/navigation/index.mjs.map +0 -1
  803. package/dist/ossFile/index.d.mts +0 -61
  804. package/dist/ossFile/index.d.ts +0 -61
  805. package/dist/ossFile/index.js +0 -96
  806. package/dist/ossFile/index.js.map +0 -1
  807. package/dist/ossFile/index.mjs +0 -7
  808. package/dist/ossFile/index.mjs.map +0 -1
  809. package/dist/ossFile/server/index.d.mts +0 -94
  810. package/dist/ossFile/server/index.d.ts +0 -94
  811. package/dist/ossFile/server/index.js +0 -213
  812. package/dist/ossFile/server/index.js.map +0 -1
  813. package/dist/ossFile/server/index.mjs +0 -12
  814. package/dist/ossFile/server/index.mjs.map +0 -1
  815. package/dist/path-DkaHQSyW.d.mts +0 -41
  816. package/dist/path-qjVnH8qU.d.ts +0 -41
  817. package/dist/portfolio/index.d.mts +0 -66
  818. package/dist/portfolio/index.d.ts +0 -66
  819. package/dist/portfolio/index.js +0 -736
  820. package/dist/portfolio/index.js.map +0 -1
  821. package/dist/portfolio/index.mjs +0 -724
  822. package/dist/portfolio/index.mjs.map +0 -1
  823. package/dist/qqbot/server/index.d.mts +0 -216
  824. package/dist/qqbot/server/index.d.ts +0 -216
  825. package/dist/qqbot/server/index.js +0 -394
  826. package/dist/qqbot/server/index.js.map +0 -1
  827. package/dist/qqbot/server/index.mjs +0 -385
  828. package/dist/qqbot/server/index.mjs.map +0 -1
  829. package/dist/qqbot/ui/web/index.d.mts +0 -10
  830. package/dist/qqbot/ui/web/index.d.ts +0 -10
  831. package/dist/qqbot/ui/web/index.js +0 -105
  832. package/dist/qqbot/ui/web/index.js.map +0 -1
  833. package/dist/qqbot/ui/web/index.mjs +0 -99
  834. package/dist/qqbot/ui/web/index.mjs.map +0 -1
  835. package/dist/request/index.d.mts +0 -59
  836. package/dist/request/index.d.ts +0 -59
  837. package/dist/request/index.js +0 -23
  838. package/dist/request/index.js.map +0 -1
  839. package/dist/request/index.mjs +0 -6
  840. package/dist/request/index.mjs.map +0 -1
  841. package/dist/screenReceiver/index.d.mts +0 -86
  842. package/dist/screenReceiver/index.d.ts +0 -86
  843. package/dist/screenReceiver/index.js +0 -281
  844. package/dist/screenReceiver/index.js.map +0 -1
  845. package/dist/screenReceiver/index.mjs +0 -273
  846. package/dist/screenReceiver/index.mjs.map +0 -1
  847. package/dist/session-BCXvGCnm.d.mts +0 -81
  848. package/dist/session-BCXvGCnm.d.ts +0 -81
  849. package/dist/storage/index.d.mts +0 -136
  850. package/dist/storage/index.d.ts +0 -136
  851. package/dist/storage/index.js +0 -48
  852. package/dist/storage/index.js.map +0 -1
  853. package/dist/storage/index.mjs +0 -7
  854. package/dist/storage/index.mjs.map +0 -1
  855. package/dist/testYourself/admin/index.d.mts +0 -58
  856. package/dist/testYourself/admin/index.d.ts +0 -58
  857. package/dist/testYourself/admin/index.js +0 -1009
  858. package/dist/testYourself/admin/index.js.map +0 -1
  859. package/dist/testYourself/admin/index.mjs +0 -1002
  860. package/dist/testYourself/admin/index.mjs.map +0 -1
  861. package/dist/testYourself/index.d.mts +0 -53
  862. package/dist/testYourself/index.d.ts +0 -53
  863. package/dist/testYourself/index.js +0 -2551
  864. package/dist/testYourself/index.js.map +0 -1
  865. package/dist/testYourself/index.mjs +0 -2531
  866. package/dist/testYourself/index.mjs.map +0 -1
  867. package/dist/testYourself/server/index.d.mts +0 -1029
  868. package/dist/testYourself/server/index.d.ts +0 -1029
  869. package/dist/testYourself/server/index.js +0 -825
  870. package/dist/testYourself/server/index.js.map +0 -1
  871. package/dist/testYourself/server/index.mjs +0 -816
  872. package/dist/testYourself/server/index.mjs.map +0 -1
  873. package/dist/types-3ujSNAXb.d.mts +0 -286
  874. package/dist/types-3ujSNAXb.d.ts +0 -286
  875. package/dist/types-B6B210gX.d.mts +0 -270
  876. package/dist/types-B6B210gX.d.ts +0 -270
  877. package/dist/types-Bdnte5EN.d.mts +0 -292
  878. package/dist/types-C_W_CoUD.d.ts +0 -99
  879. package/dist/types-Cs0CLvrH.d.mts +0 -70
  880. package/dist/types-Cs0CLvrH.d.ts +0 -70
  881. package/dist/types-DCRvasyH.d.mts +0 -99
  882. package/dist/types-HorDyIRv.d.mts +0 -303
  883. package/dist/types-HorDyIRv.d.ts +0 -303
  884. package/dist/types-_rFX1atk.d.ts +0 -292
  885. package/dist/types.legacy-J-j-_ig_.d.mts +0 -25
  886. package/dist/types.legacy-J-j-_ig_.d.ts +0 -25
  887. package/dist/universalExport/index.d.mts +0 -312
  888. package/dist/universalExport/index.d.ts +0 -312
  889. package/dist/universalExport/index.js +0 -178
  890. package/dist/universalExport/index.js.map +0 -1
  891. package/dist/universalExport/index.mjs +0 -5
  892. package/dist/universalExport/index.mjs.map +0 -1
  893. package/dist/universalExport/server/index.d.mts +0 -1270
  894. package/dist/universalExport/server/index.d.ts +0 -1270
  895. package/dist/universalExport/server/index.js +0 -123
  896. package/dist/universalExport/server/index.js.map +0 -1
  897. package/dist/universalExport/server/index.mjs +0 -6
  898. package/dist/universalExport/server/index.mjs.map +0 -1
  899. package/dist/universalFile/index.d.mts +0 -409
  900. package/dist/universalFile/index.d.ts +0 -409
  901. package/dist/universalFile/index.js +0 -1742
  902. package/dist/universalFile/index.js.map +0 -1
  903. package/dist/universalFile/index.mjs +0 -1497
  904. package/dist/universalFile/index.mjs.map +0 -1
  905. package/dist/universalFile/server/index.d.mts +0 -1064
  906. package/dist/universalFile/server/index.d.ts +0 -1064
  907. package/dist/universalFile/server/index.js +0 -311
  908. package/dist/universalFile/server/index.js.map +0 -1
  909. package/dist/universalFile/server/index.mjs +0 -10
  910. package/dist/universalFile/server/index.mjs.map +0 -1
  911. package/dist/utils/index.d.mts +0 -192
  912. package/dist/utils/index.d.ts +0 -192
  913. package/dist/utils/index.js +0 -46
  914. package/dist/utils/index.js.map +0 -1
  915. package/dist/utils/index.mjs +0 -5
  916. package/dist/utils/index.mjs.map +0 -1
  917. package/dist/vocaloidBooth/index.d.mts +0 -64
  918. package/dist/vocaloidBooth/index.d.ts +0 -64
  919. package/dist/vocaloidBooth/index.js +0 -376
  920. package/dist/vocaloidBooth/index.js.map +0 -1
  921. package/dist/vocaloidBooth/index.mjs +0 -362
  922. package/dist/vocaloidBooth/index.mjs.map +0 -1
  923. package/dist/vocaloidBooth/server/index.d.mts +0 -111
  924. package/dist/vocaloidBooth/server/index.d.ts +0 -111
  925. package/dist/vocaloidBooth/server/index.js +0 -247
  926. package/dist/vocaloidBooth/server/index.js.map +0 -1
  927. package/dist/vocaloidBooth/server/index.mjs +0 -237
  928. package/dist/vocaloidBooth/server/index.mjs.map +0 -1
  929. package/dist/vocaloidBooth/web/index.d.mts +0 -3
  930. package/dist/vocaloidBooth/web/index.d.ts +0 -3
  931. package/dist/vocaloidBooth/web/index.js +0 -376
  932. package/dist/vocaloidBooth/web/index.js.map +0 -1
  933. package/dist/vocaloidBooth/web/index.mjs +0 -362
  934. package/dist/vocaloidBooth/web/index.mjs.map +0 -1
  935. /package/dist/{ai → common/ai}/llm/core/index.js.map +0 -0
  936. /package/dist/{ai → common/ai}/llm/core/index.mjs.map +0 -0
  937. /package/dist/{ai → common/ai}/llm/electron/index.js.map +0 -0
  938. /package/dist/{ai → common/ai}/llm/electron/index.mjs.map +0 -0
  939. /package/dist/{ai → common/ai}/llm/index.js.map +0 -0
  940. /package/dist/{ai → common/ai}/llm/index.mjs.map +0 -0
  941. /package/dist/{ai → common/ai}/llm/miniapp/index.js.map +0 -0
  942. /package/dist/{ai → common/ai}/llm/miniapp/index.mjs.map +0 -0
  943. /package/dist/{ai → common/ai}/llm/rn/index.js.map +0 -0
  944. /package/dist/{ai → common/ai}/llm/rn/index.mjs.map +0 -0
  945. /package/dist/{ai → common/ai}/llm/ui/electron/index.js.map +0 -0
  946. /package/dist/{ai → common/ai}/llm/ui/electron/index.mjs.map +0 -0
  947. /package/dist/{ai → common/ai}/llm/ui/miniapp/index.js.map +0 -0
  948. /package/dist/{ai → common/ai}/llm/ui/miniapp/index.mjs.map +0 -0
  949. /package/dist/{ai → common/ai}/llm/ui/rn/index.js.map +0 -0
  950. /package/dist/{ai → common/ai}/llm/ui/rn/index.mjs.map +0 -0
  951. /package/dist/{ai → common/ai}/llm/ui/web/index.js.map +0 -0
  952. /package/dist/{ai → common/ai}/llm/ui/web/index.mjs.map +0 -0
  953. /package/dist/{ai → common/ai}/llm/web/index.js.map +0 -0
  954. /package/dist/{ai → common/ai}/llm/web/index.mjs.map +0 -0
  955. /package/dist/{analytics → common/analytics}/index.js.map +0 -0
  956. /package/dist/{analytics → common/analytics}/index.mjs.map +0 -0
  957. /package/dist/{analytics → common/analytics}/server/index.d.mts +0 -0
  958. /package/dist/{analytics → common/analytics}/server/index.d.ts +0 -0
  959. /package/dist/{api → common/api}/index.js.map +0 -0
  960. /package/dist/{api → common/api}/index.mjs.map +0 -0
  961. /package/dist/{auth/client → common/components}/index.js.map +0 -0
  962. /package/dist/{auth/client → common/components}/index.mjs.map +0 -0
  963. /package/dist/{auth/components → common/config}/index.js.map +0 -0
  964. /package/dist/{auth/components → common/config}/index.mjs.map +0 -0
  965. /package/dist/{config → common/config}/server/index.d.mts +0 -0
  966. /package/dist/{config → common/config}/server/index.d.ts +0 -0
  967. /package/dist/{auth/hooks → common/i18n}/index.js.map +0 -0
  968. /package/dist/{auth/hooks → common/i18n}/index.mjs.map +0 -0
  969. /package/dist/{auth → common/imageCrop}/index.js.map +0 -0
  970. /package/dist/{auth → common/imageCrop}/index.mjs.map +0 -0
  971. /package/dist/{auth/schema → common/ossFile}/index.js.map +0 -0
  972. /package/dist/{auth/schema → common/ossFile}/index.mjs.map +0 -0
  973. /package/dist/{auth/services → common/ossFile/server}/index.js.map +0 -0
  974. /package/dist/{auth/services → common/ossFile/server}/index.mjs.map +0 -0
  975. /package/dist/{config → common/universalExport}/index.js.map +0 -0
  976. /package/dist/{config → common/universalExport}/index.mjs.map +0 -0
  977. /package/dist/{i18n → common/universalExport/server}/index.js.map +0 -0
  978. /package/dist/{i18n → common/universalExport/server}/index.mjs.map +0 -0
  979. /package/dist/{logger → common/universalFile/server}/index.js.map +0 -0
  980. /package/dist/{logger → common/universalFile/server}/index.mjs.map +0 -0
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/common/auth/components/headless/SignInForm.tsx","../src/common/auth/components/headless/RegisterForm.tsx","../src/common/auth/components/headless/VerifyOtpForm.tsx","../src/common/auth/components/styled/modal-shared.tsx","../src/common/auth/components/styled/ForgotPasswordModal.tsx","../src/common/auth/components/styled/LoginModal.tsx","../src/common/auth/components/styled/RegisterModal.tsx","../src/common/auth/components/styled/AuthGuard.tsx","../src/common/auth/components/styled/UserMenu.tsx","../src/common/auth/components/LoginForm.tsx","../src/common/auth/components/RegisterForm.tsx","../src/common/auth/components/AdminLoginPage.tsx"],"names":["useAuthActions","useState","validatePhoneNumber","validateEmail","validatePassword","React","useEffect","createPortal","useAuthContext","X","Phone","Lock","EyeOff","Eye","Mail","User","LogOut","LogIn","useAuth","clsx"],"mappings":"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","file":"chunk-QDUBO567.js","sourcesContent":["'use client';\n\nimport React, { useState } from 'react';\nimport { useAuthActions } from '../../hooks/useAuthActions';\nimport type { HeadlessSignInFormProps, SignInFormState } from '../types';\nimport { validateEmail, validatePassword, validatePhoneNumber } from '../utils';\n\nexport function SignInForm({\n authClient,\n initialMode = 'email-password',\n onSuccess,\n onError,\n children,\n}: HeadlessSignInFormProps) {\n const actions = useAuthActions(authClient);\n const [mode, setMode] = useState(initialMode);\n const [step, setStep] = useState<'credentials' | 'otp'>('credentials');\n const [email, setEmail] = useState('');\n const [phone, setPhone] = useState('');\n const [password, setPassword] = useState('');\n const [otp, setOtp] = useState('');\n const [loading, setLoading] = useState(false);\n const [error, setError] = useState<string | null>(null);\n\n const fail = (message: string) => {\n setError(message);\n onError?.(message);\n };\n\n const sendOtp = async () => {\n setLoading(true);\n setError(null);\n try {\n if (mode === 'phone-otp') {\n if (!validatePhoneNumber(phone)) {\n fail('请输入正确的手机号');\n return;\n }\n const result = await actions.sendPhoneOtp(phone.trim());\n if (!result.success) {\n fail(result.error);\n return;\n }\n setStep('otp');\n } else if (mode === 'email-otp') {\n if (!validateEmail(email)) {\n fail('请输入正确的邮箱');\n return;\n }\n const result = await actions.sendEmailOtp(email.trim(), 'sign-in');\n if (!result.success) {\n fail(result.error);\n return;\n }\n setStep('otp');\n }\n } finally {\n setLoading(false);\n }\n };\n\n const handleSubmit = async (e?: React.FormEvent) => {\n e?.preventDefault();\n setLoading(true);\n setError(null);\n\n try {\n if (mode === 'email-password') {\n if (!validateEmail(email)) return fail('请输入正确的邮箱');\n const pwd = validatePassword(password);\n if (!pwd.valid) return fail(pwd.message ?? '密码无效');\n const result = await actions.signInWithEmail(email.trim(), password);\n if (!result.success) return fail(result.error);\n onSuccess?.();\n return;\n }\n\n if (mode === 'phone-password') {\n if (!validatePhoneNumber(phone)) return fail('请输入正确的手机号');\n const pwd = validatePassword(password);\n if (!pwd.valid) return fail(pwd.message ?? '密码无效');\n const result = await actions.signInWithPhonePassword(phone.trim(), password);\n if (!result.success) return fail(result.error);\n onSuccess?.();\n return;\n }\n\n if (mode === 'phone-otp') {\n if (step === 'credentials') {\n await sendOtp();\n return;\n }\n if (!/^\\d{4,8}$/.test(otp)) return fail('请输入验证码');\n const result = await actions.verifyPhoneOtp(phone.trim(), otp);\n if (!result.success) return fail(result.error);\n onSuccess?.();\n return;\n }\n\n if (mode === 'email-otp') {\n if (step === 'credentials') {\n await sendOtp();\n return;\n }\n if (!/^\\d{4,8}$/.test(otp)) return fail('请输入验证码');\n const result = await actions.signInWithEmailOtp(email.trim(), otp);\n if (!result.success) return fail(result.error);\n onSuccess?.();\n }\n } finally {\n setLoading(false);\n }\n };\n\n const state: SignInFormState = {\n mode,\n step,\n email,\n phone,\n password,\n otp,\n loading,\n error,\n setMode: (next) => {\n setMode(next);\n setStep('credentials');\n setError(null);\n },\n setEmail,\n setPhone,\n setPassword,\n setOtp,\n sendOtp,\n handleSubmit,\n };\n\n return <>{children(state)}</>;\n}\n","'use client';\n\nimport React, { useState } from 'react';\nimport { useAuthActions } from '../../hooks/useAuthActions';\nimport type { HeadlessRegisterFormProps, RegisterFormHeadlessState } from '../types';\nimport { validateEmail, validatePassword, validatePhoneNumber } from '../utils';\n\nexport function RegisterFormHeadless({\n authClient,\n initialChannel = 'email',\n onSuccess,\n onError,\n children,\n}: HeadlessRegisterFormProps) {\n const actions = useAuthActions(authClient);\n const [channel, setChannel] = useState<'email' | 'phone'>(initialChannel);\n const [step, setStep] = useState<'credentials' | 'otp'>('credentials');\n const [email, setEmail] = useState('');\n const [phone, setPhone] = useState('');\n const [password, setPassword] = useState('');\n const [confirmPassword, setConfirmPassword] = useState('');\n const [name, setName] = useState('');\n const [otp, setOtp] = useState('');\n const [loading, setLoading] = useState(false);\n const [error, setError] = useState<string | null>(null);\n\n const fail = (message: string) => {\n setError(message);\n onError?.(message);\n };\n\n const sendOtp = async () => {\n setLoading(true);\n setError(null);\n try {\n if (!validatePhoneNumber(phone)) {\n fail('请输入正确的手机号');\n return;\n }\n const result = await actions.sendPhoneOtp(phone.trim());\n if (!result.success) {\n fail(result.error);\n return;\n }\n setStep('otp');\n } finally {\n setLoading(false);\n }\n };\n\n const handleSubmit = async (e?: React.FormEvent) => {\n e?.preventDefault();\n setLoading(true);\n setError(null);\n\n try {\n if (channel === 'email') {\n if (!validateEmail(email)) return fail('请输入正确的邮箱');\n const pwd = validatePassword(password);\n if (!pwd.valid) return fail(pwd.message ?? '密码无效');\n if (password !== confirmPassword) return fail('两次密码不一致');\n if (!name.trim()) return fail('请填写昵称');\n const result = await actions.signUpWithEmail(email.trim(), password, name.trim());\n if (!result.success) return fail(result.error);\n onSuccess?.();\n return;\n }\n\n if (step === 'credentials') {\n const pwd = validatePassword(password);\n if (!pwd.valid) return fail(pwd.message ?? '密码无效');\n if (password !== confirmPassword) return fail('两次密码不一致');\n await sendOtp();\n return;\n }\n\n if (!/^\\d{4,8}$/.test(otp)) return fail('请输入验证码');\n const verify = await actions.verifyPhoneOtp(phone.trim(), otp);\n if (!verify.success) return fail(verify.error);\n onSuccess?.();\n } finally {\n setLoading(false);\n }\n };\n\n const state: RegisterFormHeadlessState = {\n channel,\n step,\n email,\n phone,\n password,\n confirmPassword,\n name,\n otp,\n loading,\n error,\n setChannel: (next) => {\n setChannel(next);\n setStep('credentials');\n setError(null);\n },\n setEmail,\n setPhone,\n setPassword,\n setConfirmPassword,\n setName,\n setOtp,\n sendOtp,\n handleSubmit,\n };\n\n return <>{children(state)}</>;\n}\n","'use client';\n\nimport React, { useState } from 'react';\nimport { useAuthActions } from '../../hooks/useAuthActions';\nimport type { HeadlessVerifyOtpFormProps, VerifyOtpFormState } from '../types';\nimport { validateEmail, validatePhoneNumber } from '../utils';\n\nexport function VerifyOtpForm({\n authClient,\n channel,\n target,\n onSuccess,\n onError,\n children,\n}: HeadlessVerifyOtpFormProps) {\n const actions = useAuthActions(authClient);\n const [otp, setOtp] = useState('');\n const [loading, setLoading] = useState(false);\n const [error, setError] = useState<string | null>(null);\n\n const fail = (message: string) => {\n setError(message);\n onError?.(message);\n };\n\n const resendOtp = async () => {\n setLoading(true);\n setError(null);\n try {\n if (channel === 'phone') {\n if (!validatePhoneNumber(target)) return fail('手机号无效');\n const result = await actions.sendPhoneOtp(target.trim());\n if (!result.success) fail(result.error);\n } else {\n if (!validateEmail(target)) return fail('邮箱无效');\n const result = await actions.sendEmailOtp(target.trim(), 'sign-in');\n if (!result.success) fail(result.error);\n }\n } finally {\n setLoading(false);\n }\n };\n\n const handleSubmit = async (e?: React.FormEvent) => {\n e?.preventDefault();\n setLoading(true);\n setError(null);\n try {\n if (!/^\\d{4,8}$/.test(otp)) return fail('请输入验证码');\n if (channel === 'phone') {\n const result = await actions.verifyPhoneOtp(target.trim(), otp);\n if (!result.success) return fail(result.error);\n } else {\n const result = await actions.signInWithEmailOtp(target.trim(), otp);\n if (!result.success) return fail(result.error);\n }\n onSuccess?.();\n } finally {\n setLoading(false);\n }\n };\n\n const state: VerifyOtpFormState = {\n channel,\n target,\n otp,\n loading,\n error,\n setOtp,\n resendOtp,\n handleSubmit,\n };\n\n return <>{children(state)}</>;\n}\n","'use client';\n\nimport React, { useEffect, useState } from 'react';\nimport { createPortal } from 'react-dom';\n\nconst overlayClass =\n 'fixed top-0 left-0 right-0 bottom-0 w-screen h-screen bg-black/50 backdrop-blur-sm flex items-center justify-center z-[9999] p-4';\nconst panelClass =\n 'bg-white rounded-2xl shadow-xl w-full max-w-[420px] max-h-[90vh] overflow-y-auto relative';\nconst closeBtnClass =\n 'absolute top-5 right-5 bg-transparent border-none text-gray-500 cursor-pointer p-2 rounded-lg transition-all hover:bg-gray-100 hover:text-gray-700 focus:outline-none focus:ring-2 focus:ring-blue-500 focus:ring-offset-2 min-w-9 min-h-9 flex items-center justify-center';\nconst inputClass =\n 'w-full py-3 px-4 pl-12 border-2 border-gray-200 rounded-lg text-base transition-all box-border min-h-12 bg-white focus:outline-none focus:border-blue-500 focus:ring-2 focus:ring-blue-500/10 placeholder:text-gray-400 disabled:bg-gray-50 disabled:text-gray-500 disabled:cursor-not-allowed';\nconst submitClass =\n 'w-full bg-blue-500 text-white border-none py-3.5 px-6 rounded-lg text-base font-medium cursor-pointer transition-all mt-2 min-h-[52px] hover:bg-blue-600 hover:-translate-y-0.5 hover:shadow-lg hover:shadow-blue-500/30 active:translate-y-0 disabled:bg-gray-400 disabled:cursor-not-allowed disabled:transform-none disabled:shadow-none focus:outline-none focus:ring-2 focus:ring-blue-700 focus:ring-offset-2';\nconst errorClass =\n 'text-red-500 text-sm my-4 p-3 bg-red-50 border border-red-200 rounded-lg leading-relaxed';\nconst linkBtnClass =\n 'bg-transparent border-none text-blue-500 cursor-pointer text-sm font-medium underline px-1 py-0.5 rounded transition-all hover:text-blue-600 hover:bg-blue-50 hover:no-underline focus:outline-none focus:ring-2 focus:ring-blue-500 focus:ring-offset-2';\n\nexport function useClientMounted() {\n const [mounted, setMounted] = useState(false);\n useEffect(() => setMounted(true), []);\n return mounted;\n}\n\nexport function AuthModalPortal({ children }: { children: React.ReactNode }) {\n const mounted = useClientMounted();\n if (!mounted) return null;\n return createPortal(children, document.body);\n}\n\nexport const authModalStyles = {\n overlayClass,\n panelClass,\n closeBtnClass,\n inputClass,\n submitClass,\n errorClass,\n linkBtnClass,\n};\n","'use client';\n\nimport React, { useState } from 'react';\nimport { X, Phone, Lock, Eye, EyeOff } from 'lucide-react';\nimport { useAuthContext } from '../../context/AuthProvider';\nimport type { ForgotPasswordModalProps } from '../types';\nimport { validatePassword, validatePhoneNumber } from '../utils';\nimport { AuthModalPortal, authModalStyles } from './modal-shared';\n\nexport function ForgotPasswordModal({ isOpen, onClose, onSuccess }: ForgotPasswordModalProps) {\n const { requestPhonePasswordReset, resetPhonePassword } = useAuthContext();\n const [phone, setPhone] = useState('');\n const [otp, setOtp] = useState('');\n const [newPassword, setNewPassword] = useState('');\n const [confirmPassword, setConfirmPassword] = useState('');\n const [showPassword, setShowPassword] = useState(false);\n const [showConfirmPassword, setShowConfirmPassword] = useState(false);\n const [error, setError] = useState('');\n const [loading, setLoading] = useState(false);\n const [countdown, setCountdown] = useState(0);\n\n const startCountdown = () => {\n setCountdown(60);\n const timer = setInterval(() => {\n setCountdown((prev) => {\n if (prev <= 1) {\n clearInterval(timer);\n return 0;\n }\n return prev - 1;\n });\n }, 1000);\n };\n\n const handleSendCode = async () => {\n setError('');\n if (!validatePhoneNumber(phone)) {\n setError('请输入正确的手机号');\n return;\n }\n setLoading(true);\n try {\n const result = await requestPhonePasswordReset(phone.trim());\n if (!result.success) {\n setError(result.error);\n return;\n }\n startCountdown();\n } finally {\n setLoading(false);\n }\n };\n\n const handleSubmit = async (e: React.FormEvent) => {\n e.preventDefault();\n setError('');\n if (!validatePhoneNumber(phone)) return setError('请输入正确的手机号');\n const pwd = validatePassword(newPassword);\n if (!pwd.valid) return setError(pwd.message ?? '密码无效');\n if (newPassword !== confirmPassword) return setError('两次密码不一致');\n if (!/^\\d{4,8}$/.test(otp)) return setError('请输入验证码');\n\n setLoading(true);\n try {\n const result = await resetPhonePassword(phone.trim(), otp, newPassword);\n if (!result.success) {\n setError(result.error);\n return;\n }\n onSuccess?.();\n } finally {\n setLoading(false);\n }\n };\n\n if (!isOpen) return null;\n\n return (\n <AuthModalPortal>\n <div className={authModalStyles.overlayClass} style={{ margin: 0 }} onClick={(e) => e.target === e.currentTarget && onClose()}>\n <div className={authModalStyles.panelClass} onClick={(e) => e.stopPropagation()}>\n <button type=\"button\" className={authModalStyles.closeBtnClass} onClick={onClose}>\n <X size={20} />\n </button>\n\n <div className=\"px-6 pt-6 pb-4 text-center border-b border-gray-100\">\n <h2 className=\"text-2xl font-semibold text-gray-800 mb-2\">重置密码</h2>\n <p className=\"text-gray-500 text-sm\">请输入手机号和验证码重置密码</p>\n </div>\n\n <form onSubmit={handleSubmit} className=\"p-6\">\n <div className=\"mb-5\">\n <label htmlFor=\"reset-phone\" className=\"block mb-1.5 text-sm font-medium text-gray-700\">\n 手机号\n </label>\n <div className=\"relative flex items-center\">\n <Phone size={18} className=\"absolute left-4 text-gray-400 z-[1] pointer-events-none\" />\n <input\n id=\"reset-phone\"\n type=\"tel\"\n value={phone}\n onChange={(e) => setPhone(e.target.value)}\n placeholder=\"请输入手机号\"\n className={authModalStyles.inputClass}\n disabled={loading}\n />\n </div>\n </div>\n\n <div className=\"mb-5\">\n <label htmlFor=\"reset-otp\" className=\"block mb-1.5 text-sm font-medium text-gray-700\">\n 验证码\n </label>\n <div className=\"relative flex items-center\">\n <input\n id=\"reset-otp\"\n type=\"text\"\n inputMode=\"numeric\"\n value={otp}\n onChange={(e) => setOtp(e.target.value)}\n placeholder=\"请输入验证码\"\n className=\"w-full py-3 px-4 pr-28 border-2 border-gray-200 rounded-lg text-base transition-all box-border min-h-12 bg-white focus:outline-none focus:border-blue-500 focus:ring-2 focus:ring-blue-500/10\"\n disabled={loading}\n maxLength={8}\n />\n <button\n type=\"button\"\n className=\"absolute right-2 top-1/2 -translate-y-1/2 bg-transparent border-none text-blue-500 text-sm font-medium cursor-pointer px-2 py-1 rounded transition-all whitespace-nowrap hover:bg-blue-50 disabled:text-gray-400 disabled:cursor-not-allowed\"\n onClick={handleSendCode}\n disabled={loading || countdown > 0}\n >\n {countdown > 0 ? `${countdown}秒后重试` : '发送验证码'}\n </button>\n </div>\n </div>\n\n <div className=\"mb-5\">\n <label htmlFor=\"reset-password\" className=\"block mb-1.5 text-sm font-medium text-gray-700\">\n 新密码\n </label>\n <div className=\"relative flex items-center\">\n <Lock size={18} className=\"absolute left-4 text-gray-400 z-[1] pointer-events-none\" />\n <input\n id=\"reset-password\"\n type={showPassword ? 'text' : 'password'}\n value={newPassword}\n onChange={(e) => setNewPassword(e.target.value)}\n placeholder=\"请输入新密码\"\n className={`${authModalStyles.inputClass} pr-12`}\n disabled={loading}\n />\n <button\n type=\"button\"\n className=\"absolute right-4 bg-transparent border-none text-gray-400 cursor-pointer p-1 rounded transition-all flex items-center justify-center min-w-6 min-h-6 hover:text-gray-600 hover:bg-gray-100\"\n onClick={() => setShowPassword((v) => !v)}\n disabled={loading}\n >\n {showPassword ? <EyeOff size={18} /> : <Eye size={18} />}\n </button>\n </div>\n </div>\n\n <div className=\"mb-5\">\n <label htmlFor=\"reset-confirm-password\" className=\"block mb-1.5 text-sm font-medium text-gray-700\">\n 确认密码\n </label>\n <div className=\"relative flex items-center\">\n <Lock size={18} className=\"absolute left-4 text-gray-400 z-[1] pointer-events-none\" />\n <input\n id=\"reset-confirm-password\"\n type={showConfirmPassword ? 'text' : 'password'}\n value={confirmPassword}\n onChange={(e) => setConfirmPassword(e.target.value)}\n placeholder=\"请再次输入新密码\"\n className={`${authModalStyles.inputClass} pr-12`}\n disabled={loading}\n />\n <button\n type=\"button\"\n className=\"absolute right-4 bg-transparent border-none text-gray-400 cursor-pointer p-1 rounded transition-all flex items-center justify-center min-w-6 min-h-6 hover:text-gray-600 hover:bg-gray-100\"\n onClick={() => setShowConfirmPassword((v) => !v)}\n disabled={loading}\n >\n {showConfirmPassword ? <EyeOff size={18} /> : <Eye size={18} />}\n </button>\n </div>\n </div>\n\n {error && <div className={authModalStyles.errorClass}>{error}</div>}\n\n <button type=\"submit\" className={authModalStyles.submitClass} disabled={loading}>\n {loading ? '提交中...' : '重置密码'}\n </button>\n </form>\n </div>\n </div>\n </AuthModalPortal>\n );\n}\n","'use client';\n\nimport React, { useState } from 'react';\nimport { X, User, Lock, Eye, EyeOff, Mail, Phone } from 'lucide-react';\nimport { useAuthContext } from '../../context/AuthProvider';\nimport { SignInForm } from '../headless/SignInForm';\nimport type { LoginModalProps, SignInMode } from '../types';\nimport { AuthModalPortal, authModalStyles } from './modal-shared';\nimport { ForgotPasswordModal } from './ForgotPasswordModal';\n\nconst MODE_LABELS: Record<SignInMode, string> = {\n 'phone-password': '手机密码',\n 'email-password': '邮箱密码',\n 'phone-otp': '手机验证码',\n 'email-otp': '邮箱验证码',\n};\n\nexport function LoginModal({\n isOpen,\n onClose,\n onSuccess,\n onSwitchToRegister,\n defaultMode = 'phone-password',\n}: LoginModalProps) {\n const { authClient, refreshSession } = useAuthContext();\n const [showPassword, setShowPassword] = useState(false);\n const [showForgotPassword, setShowForgotPassword] = useState(false);\n\n const handleSuccess = async () => {\n await refreshSession();\n onSuccess?.();\n };\n\n if (!isOpen) return null;\n\n return (\n <AuthModalPortal>\n <div className={authModalStyles.overlayClass} style={{ margin: 0 }} onClick={(e) => e.target === e.currentTarget && onClose()}>\n <SignInForm authClient={authClient} initialMode={defaultMode} onSuccess={handleSuccess}>\n {(state) => (\n <div className={authModalStyles.panelClass} onClick={(e) => e.stopPropagation()}>\n <button type=\"button\" className={authModalStyles.closeBtnClass} onClick={onClose}>\n <X size={20} />\n </button>\n\n <div className=\"px-6 pt-6 pb-4 text-center border-b border-gray-100\">\n <h2 className=\"text-2xl font-semibold text-gray-800 mb-2\">用户登录</h2>\n <p className=\"text-gray-500 text-sm\">选择登录方式并填写信息</p>\n </div>\n\n <div className=\"px-6 pt-4 flex flex-wrap gap-2\">\n {(Object.keys(MODE_LABELS) as SignInMode[]).map((mode) => (\n <button\n key={mode}\n type=\"button\"\n onClick={() => state.setMode(mode)}\n className={`px-3 py-1.5 text-xs rounded-full border transition-all ${\n state.mode === mode\n ? 'bg-blue-500 text-white border-blue-500'\n : 'bg-white text-gray-600 border-gray-200 hover:border-blue-300'\n }`}\n >\n {MODE_LABELS[mode]}\n </button>\n ))}\n </div>\n\n <form onSubmit={state.handleSubmit} className=\"p-6\">\n {(state.mode === 'email-password' || state.mode === 'email-otp') && state.step === 'credentials' && (\n <div className=\"mb-5\">\n <label htmlFor=\"login-email\" className=\"block mb-1.5 text-sm font-medium text-gray-700\">\n 邮箱\n </label>\n <div className=\"relative flex items-center\">\n <Mail size={18} className=\"absolute left-4 text-gray-400 z-[1] pointer-events-none\" />\n <input\n id=\"login-email\"\n type=\"email\"\n autoComplete=\"email\"\n value={state.email}\n onChange={(e) => state.setEmail(e.target.value)}\n placeholder=\"请输入邮箱\"\n className={authModalStyles.inputClass}\n disabled={state.loading}\n />\n </div>\n </div>\n )}\n\n {(state.mode === 'phone-password' || state.mode === 'phone-otp') && state.step === 'credentials' && (\n <div className=\"mb-5\">\n <label htmlFor=\"login-phone\" className=\"block mb-1.5 text-sm font-medium text-gray-700\">\n 手机号\n </label>\n <div className=\"relative flex items-center\">\n <Phone size={18} className=\"absolute left-4 text-gray-400 z-[1] pointer-events-none\" />\n <input\n id=\"login-phone\"\n type=\"tel\"\n autoComplete=\"tel\"\n value={state.phone}\n onChange={(e) => state.setPhone(e.target.value)}\n placeholder=\"请输入手机号\"\n className={authModalStyles.inputClass}\n disabled={state.loading}\n />\n </div>\n </div>\n )}\n\n {(state.mode === 'email-password' || state.mode === 'phone-password') && (\n <div className=\"mb-5\">\n <label htmlFor=\"login-password\" className=\"block mb-1.5 text-sm font-medium text-gray-700\">\n 密码\n </label>\n <div className=\"relative flex items-center\">\n <Lock size={18} className=\"absolute left-4 text-gray-400 z-[1] pointer-events-none\" />\n <input\n id=\"login-password\"\n type={showPassword ? 'text' : 'password'}\n autoComplete=\"current-password\"\n value={state.password}\n onChange={(e) => state.setPassword(e.target.value)}\n placeholder=\"请输入密码\"\n className={`${authModalStyles.inputClass} pr-12`}\n disabled={state.loading}\n />\n <button\n type=\"button\"\n className=\"absolute right-4 bg-transparent border-none text-gray-400 cursor-pointer p-1 rounded transition-all flex items-center justify-center min-w-6 min-h-6 hover:text-gray-600 hover:bg-gray-100\"\n onClick={() => setShowPassword((v) => !v)}\n disabled={state.loading}\n >\n {showPassword ? <EyeOff size={18} /> : <Eye size={18} />}\n </button>\n </div>\n </div>\n )}\n\n {(state.mode === 'phone-otp' || state.mode === 'email-otp') && state.step === 'otp' && (\n <div className=\"mb-5\">\n <label htmlFor=\"login-otp\" className=\"block mb-1.5 text-sm font-medium text-gray-700\">\n 验证码\n </label>\n <div className=\"relative flex items-center\">\n <User size={18} className=\"absolute left-4 text-gray-400 z-[1] pointer-events-none\" />\n <input\n id=\"login-otp\"\n type=\"text\"\n inputMode=\"numeric\"\n value={state.otp}\n onChange={(e) => state.setOtp(e.target.value)}\n placeholder=\"请输入验证码\"\n className={authModalStyles.inputClass}\n disabled={state.loading}\n maxLength={8}\n />\n </div>\n </div>\n )}\n\n {(state.mode === 'phone-password' || state.mode === 'phone-otp') && state.step === 'credentials' && (\n <div className=\"text-right -mt-2 mb-4\">\n <button type=\"button\" onClick={() => setShowForgotPassword(true)} className={authModalStyles.linkBtnClass}>\n 忘记密码?\n </button>\n </div>\n )}\n\n {state.error && <div className={authModalStyles.errorClass}>{state.error}</div>}\n\n <button type=\"submit\" className={authModalStyles.submitClass} disabled={state.loading}>\n {state.loading\n ? '处理中...'\n : state.step === 'otp'\n ? '验证并登录'\n : state.mode === 'phone-otp' || state.mode === 'email-otp'\n ? '发送验证码'\n : '登录'}\n </button>\n\n {onSwitchToRegister && (\n <div className=\"text-center mt-5 pt-4 border-t border-gray-100\">\n <span className=\"text-gray-500 text-sm mr-1\">还没有账号?</span>\n <button type=\"button\" onClick={onSwitchToRegister} className={authModalStyles.linkBtnClass}>\n 立即注册\n </button>\n </div>\n )}\n </form>\n </div>\n )}\n </SignInForm>\n </div>\n\n <ForgotPasswordModal\n isOpen={showForgotPassword}\n onClose={() => setShowForgotPassword(false)}\n onSuccess={() => {\n setShowForgotPassword(false);\n handleSuccess();\n }}\n />\n </AuthModalPortal>\n );\n}\n","'use client';\n\nimport React, { useState } from 'react';\nimport { X, User, Lock, Phone, Mail, Eye, EyeOff } from 'lucide-react';\nimport { useAuthContext } from '../../context/AuthProvider';\nimport { RegisterFormHeadless } from '../headless/RegisterForm';\nimport type { RegisterModalProps } from '../types';\nimport { AuthModalPortal, authModalStyles } from './modal-shared';\n\nexport function RegisterModal({ isOpen, onClose, onSuccess, onSwitchToLogin }: RegisterModalProps) {\n const { authClient, refreshSession } = useAuthContext();\n const [showPassword, setShowPassword] = useState(false);\n const [showConfirmPassword, setShowConfirmPassword] = useState(false);\n\n const handleSuccess = async () => {\n await refreshSession();\n onSuccess?.();\n };\n\n if (!isOpen) return null;\n\n return (\n <AuthModalPortal>\n <div className={authModalStyles.overlayClass} style={{ margin: 0 }} onClick={(e) => e.target === e.currentTarget && onClose()}>\n <RegisterFormHeadless authClient={authClient} initialChannel=\"phone\" onSuccess={handleSuccess}>\n {(state) => (\n <div className={authModalStyles.panelClass} onClick={(e) => e.stopPropagation()}>\n <button type=\"button\" className={authModalStyles.closeBtnClass} onClick={onClose}>\n <X size={20} />\n </button>\n\n <div className=\"px-6 pt-6 pb-4 text-center border-b border-gray-100\">\n <h2 className=\"text-2xl font-semibold text-gray-800 mb-2\">用户注册</h2>\n <p className=\"text-gray-500 text-sm\">请填写以下信息创建账户</p>\n </div>\n\n <div className=\"px-6 pt-4 flex gap-2\">\n <button\n type=\"button\"\n onClick={() => state.setChannel('phone')}\n className={`px-3 py-1.5 text-xs rounded-full border transition-all ${\n state.channel === 'phone'\n ? 'bg-blue-500 text-white border-blue-500'\n : 'bg-white text-gray-600 border-gray-200 hover:border-blue-300'\n }`}\n >\n 手机号注册\n </button>\n <button\n type=\"button\"\n onClick={() => state.setChannel('email')}\n className={`px-3 py-1.5 text-xs rounded-full border transition-all ${\n state.channel === 'email'\n ? 'bg-blue-500 text-white border-blue-500'\n : 'bg-white text-gray-600 border-gray-200 hover:border-blue-300'\n }`}\n >\n 邮箱注册\n </button>\n </div>\n\n <form onSubmit={state.handleSubmit} className=\"p-6\">\n {state.channel === 'email' && (\n <div className=\"mb-5\">\n <label htmlFor=\"register-email\" className=\"block mb-1.5 text-sm font-medium text-gray-700\">\n 邮箱 *\n </label>\n <div className=\"relative flex items-center\">\n <Mail size={18} className=\"absolute left-4 text-gray-400 z-[1] pointer-events-none\" />\n <input\n id=\"register-email\"\n type=\"email\"\n autoComplete=\"email\"\n value={state.email}\n onChange={(e) => state.setEmail(e.target.value)}\n placeholder=\"请输入邮箱\"\n className={authModalStyles.inputClass}\n disabled={state.loading}\n />\n </div>\n </div>\n )}\n\n {state.channel === 'phone' && state.step === 'credentials' && (\n <div className=\"mb-5\">\n <label htmlFor=\"register-phone\" className=\"block mb-1.5 text-sm font-medium text-gray-700\">\n 手机号 *\n </label>\n <div className=\"relative flex items-center\">\n <Phone size={18} className=\"absolute left-4 text-gray-400 z-[1] pointer-events-none\" />\n <input\n id=\"register-phone\"\n type=\"tel\"\n autoComplete=\"tel\"\n value={state.phone}\n onChange={(e) => state.setPhone(e.target.value)}\n placeholder=\"请输入手机号\"\n className={authModalStyles.inputClass}\n disabled={state.loading}\n />\n </div>\n </div>\n )}\n\n {state.channel === 'email' && (\n <div className=\"mb-5\">\n <label htmlFor=\"register-name\" className=\"block mb-1.5 text-sm font-medium text-gray-700\">\n 昵称 *\n </label>\n <div className=\"relative flex items-center\">\n <User size={18} className=\"absolute left-4 text-gray-400 z-[1] pointer-events-none\" />\n <input\n id=\"register-name\"\n type=\"text\"\n autoComplete=\"name\"\n value={state.name}\n onChange={(e) => state.setName(e.target.value)}\n placeholder=\"请输入昵称\"\n className={authModalStyles.inputClass}\n disabled={state.loading}\n />\n </div>\n </div>\n )}\n\n {state.step === 'credentials' && (\n <>\n <div className=\"mb-5\">\n <label htmlFor=\"register-password\" className=\"block mb-1.5 text-sm font-medium text-gray-700\">\n 密码 *\n </label>\n <div className=\"relative flex items-center\">\n <Lock size={18} className=\"absolute left-4 text-gray-400 z-[1] pointer-events-none\" />\n <input\n id=\"register-password\"\n type={showPassword ? 'text' : 'password'}\n autoComplete=\"new-password\"\n value={state.password}\n onChange={(e) => state.setPassword(e.target.value)}\n placeholder=\"请输入密码(至少6位)\"\n className={`${authModalStyles.inputClass} pr-12`}\n disabled={state.loading}\n />\n <button\n type=\"button\"\n className=\"absolute right-4 bg-transparent border-none text-gray-400 cursor-pointer p-1 rounded transition-all flex items-center justify-center min-w-6 min-h-6 hover:text-gray-600 hover:bg-gray-100\"\n onClick={() => setShowPassword((v) => !v)}\n disabled={state.loading}\n >\n {showPassword ? <EyeOff size={18} /> : <Eye size={18} />}\n </button>\n </div>\n </div>\n\n <div className=\"mb-5\">\n <label htmlFor=\"register-confirm-password\" className=\"block mb-1.5 text-sm font-medium text-gray-700\">\n 确认密码 *\n </label>\n <div className=\"relative flex items-center\">\n <Lock size={18} className=\"absolute left-4 text-gray-400 z-[1] pointer-events-none\" />\n <input\n id=\"register-confirm-password\"\n type={showConfirmPassword ? 'text' : 'password'}\n autoComplete=\"new-password\"\n value={state.confirmPassword}\n onChange={(e) => state.setConfirmPassword(e.target.value)}\n placeholder=\"请再次输入密码\"\n className={`${authModalStyles.inputClass} pr-12`}\n disabled={state.loading}\n />\n <button\n type=\"button\"\n className=\"absolute right-4 bg-transparent border-none text-gray-400 cursor-pointer p-1 rounded transition-all flex items-center justify-center min-w-6 min-h-6 hover:text-gray-600 hover:bg-gray-100\"\n onClick={() => setShowConfirmPassword((v) => !v)}\n disabled={state.loading}\n >\n {showConfirmPassword ? <EyeOff size={18} /> : <Eye size={18} />}\n </button>\n </div>\n </div>\n </>\n )}\n\n {state.channel === 'phone' && state.step === 'otp' && (\n <div className=\"mb-5\">\n <label htmlFor=\"register-otp\" className=\"block mb-1.5 text-sm font-medium text-gray-700\">\n 验证码 *\n </label>\n <input\n id=\"register-otp\"\n type=\"text\"\n inputMode=\"numeric\"\n value={state.otp}\n onChange={(e) => state.setOtp(e.target.value)}\n placeholder=\"请输入验证码\"\n className=\"w-full py-3 px-4 border-2 border-gray-200 rounded-lg text-base transition-all box-border min-h-12 bg-white focus:outline-none focus:border-blue-500 focus:ring-2 focus:ring-blue-500/10\"\n disabled={state.loading}\n maxLength={8}\n />\n </div>\n )}\n\n {state.error && <div className={authModalStyles.errorClass}>{state.error}</div>}\n\n <button type=\"submit\" className={authModalStyles.submitClass} disabled={state.loading}>\n {state.loading\n ? '处理中...'\n : state.channel === 'phone' && state.step === 'credentials'\n ? '发送验证码'\n : state.channel === 'phone' && state.step === 'otp'\n ? '完成注册'\n : '注册'}\n </button>\n\n {onSwitchToLogin && (\n <div className=\"text-center mt-5 pt-4 border-t border-gray-100\">\n <span className=\"text-gray-500 text-sm mr-1\">已有账号?</span>\n <button type=\"button\" onClick={onSwitchToLogin} className={authModalStyles.linkBtnClass}>\n 立即登录\n </button>\n </div>\n )}\n </form>\n </div>\n )}\n </RegisterFormHeadless>\n </div>\n </AuthModalPortal>\n );\n}\n","'use client';\n\nimport React, { useEffect, useState } from 'react';\nimport { useAuthContext } from '../../context/AuthProvider';\nimport type { AuthGuardProps } from '../types';\nimport { LoginModal } from './LoginModal';\n\nexport function AuthGuard({ children, fallback, requireAuth = true }: AuthGuardProps) {\n const { isAuthenticated, loading, refreshSession } = useAuthContext();\n const [showLoginModal, setShowLoginModal] = useState(false);\n\n useEffect(() => {\n if (!loading && requireAuth && !isAuthenticated) {\n setShowLoginModal(true);\n }\n }, [loading, requireAuth, isAuthenticated]);\n\n const handleLoginSuccess = async () => {\n await refreshSession();\n setShowLoginModal(false);\n };\n\n if (loading) {\n return (\n <div className=\"flex items-center justify-center min-h-[200px] text-gray-500 flex-col gap-3\">\n <div className=\"w-8 h-8 border-[3px] border-gray-200 border-t-blue-500 rounded-full animate-spin\" />\n <div>验证登录状态...</div>\n </div>\n );\n }\n\n if (requireAuth && !isAuthenticated) {\n return (\n <>\n {fallback ?? (\n <div className=\"flex items-center justify-center min-h-[200px] text-gray-500 flex-col gap-4 p-6 text-center\">\n <div className=\"text-5xl opacity-50\">🔒</div>\n <div className=\"text-lg font-medium\">请先登录以访问此页面</div>\n <div className=\"text-sm opacity-70\">登录后即可查看相关内容</div>\n </div>\n )}\n <LoginModal isOpen={showLoginModal} onClose={() => setShowLoginModal(false)} onSuccess={handleLoginSuccess} />\n </>\n );\n }\n\n return <>{children}</>;\n}\n","'use client';\n\nimport React, { useEffect, useState } from 'react';\nimport { LogOut, LogIn, User } from 'lucide-react';\nimport { useAuthContext } from '../../context/AuthProvider';\nimport type { UserMenuProps } from '../types';\nimport { LoginModal } from './LoginModal';\nimport { RegisterModal } from './RegisterModal';\n\nexport function UserMenu({ customMenuItems = [], className }: UserMenuProps) {\n const { user, isAuthenticated, signOut, refreshSession } = useAuthContext();\n const [isOpen, setIsOpen] = useState(false);\n const [showLoginModal, setShowLoginModal] = useState(false);\n const [showRegisterModal, setShowRegisterModal] = useState(false);\n\n useEffect(() => {\n const handleGlobalClick = () => setIsOpen(false);\n if (isOpen) document.addEventListener('click', handleGlobalClick);\n return () => document.removeEventListener('click', handleGlobalClick);\n }, [isOpen]);\n\n const visibleCustomMenuItems = customMenuItems.filter((item) => {\n if (item.requireAuth === true) return isAuthenticated;\n if (item.requireAuth === false) return !isAuthenticated;\n return true;\n });\n\n const handleAuthSuccess = async () => {\n await refreshSession();\n setShowLoginModal(false);\n setShowRegisterModal(false);\n };\n\n const displayName = user?.name || user?.phoneNumber || user?.email || '用户';\n\n return (\n <div className={`relative inline-block ${className ?? ''}`}>\n <button\n type=\"button\"\n className=\"flex items-center gap-2 px-3 py-2 bg-slate-50 text-slate-500 border border-slate-200 rounded-lg cursor-pointer transition-all min-w-11 min-h-11 text-sm font-medium hover:bg-slate-200 hover:text-slate-800 focus:outline-none focus:ring-2 focus:ring-blue-500/10\"\n onClick={() => setIsOpen((v) => !v)}\n >\n <User size={24} />\n {isAuthenticated && user && (\n <span className=\"max-w-[120px] overflow-hidden text-ellipsis whitespace-nowrap\">{displayName}</span>\n )}\n </button>\n\n {isOpen && (\n <div\n className=\"absolute top-[calc(100%+0.5rem)] right-0 z-[1000] min-w-[200px] bg-white border border-slate-200 rounded-xl shadow-lg max-h-[90vh] overflow-y-auto p-2\"\n onClick={(e) => e.stopPropagation()}\n >\n {isAuthenticated && user ? (\n <>\n <div className=\"p-3 mb-2 bg-slate-50 rounded-lg\">\n <div className=\"text-sm font-semibold text-slate-800 mb-1 overflow-hidden text-ellipsis whitespace-nowrap\">\n {user.name || '未设置名称'}\n </div>\n <div className=\"text-xs text-slate-500 mb-1 overflow-hidden text-ellipsis whitespace-nowrap\">\n {user.phoneNumber || user.email}\n </div>\n {user.role && (\n <div className=\"text-xs text-blue-500 font-medium\">{user.role === 'admin' ? '管理员' : '普通用户'}</div>\n )}\n </div>\n\n {visibleCustomMenuItems.length > 0 && (\n <>\n <div className=\"h-px bg-slate-200 my-2\" />\n {visibleCustomMenuItems.map((item) => {\n const IconComponent = item.icon;\n return (\n <button\n key={item.id}\n type=\"button\"\n className=\"flex items-center gap-3 w-full p-3 bg-transparent border-none rounded-lg text-gray-700 text-sm font-medium cursor-pointer transition-all text-left min-h-11 hover:bg-slate-100 hover:text-slate-800\"\n onClick={() => {\n item.onClick();\n setIsOpen(false);\n }}\n >\n {IconComponent && <IconComponent size={16} />}\n <span>{item.label}</span>\n </button>\n );\n })}\n </>\n )}\n\n <div className=\"h-px bg-slate-200 my-2\" />\n <button\n type=\"button\"\n className=\"flex items-center gap-3 w-full p-3 bg-transparent border-none rounded-lg text-gray-700 text-sm font-medium cursor-pointer transition-all text-left min-h-11 hover:bg-red-50 hover:text-red-600\"\n onClick={async () => {\n await signOut();\n setIsOpen(false);\n }}\n >\n <LogOut size={16} />\n <span>退出登录</span>\n </button>\n </>\n ) : (\n <>\n <button\n type=\"button\"\n className=\"flex items-center gap-3 w-full p-3 bg-transparent border-none rounded-lg text-gray-700 text-sm font-medium cursor-pointer transition-all text-left min-h-11 hover:bg-slate-100 hover:text-slate-800\"\n onClick={() => {\n setShowLoginModal(true);\n setIsOpen(false);\n }}\n >\n <LogIn size={16} />\n <span>登录</span>\n </button>\n <button\n type=\"button\"\n className=\"flex items-center gap-3 w-full p-3 bg-transparent border-none rounded-lg text-gray-700 text-sm font-medium cursor-pointer transition-all text-left min-h-11 hover:bg-slate-100 hover:text-slate-800\"\n onClick={() => {\n setShowRegisterModal(true);\n setIsOpen(false);\n }}\n >\n <User size={16} />\n <span>注册</span>\n </button>\n\n {visibleCustomMenuItems.length > 0 && (\n <>\n <div className=\"h-px bg-slate-200 my-2\" />\n {visibleCustomMenuItems.map((item) => {\n const IconComponent = item.icon;\n return (\n <button\n key={item.id}\n type=\"button\"\n className=\"flex items-center gap-3 w-full p-3 bg-transparent border-none rounded-lg text-gray-700 text-sm font-medium cursor-pointer transition-all text-left min-h-11 hover:bg-slate-100 hover:text-slate-800\"\n onClick={() => {\n item.onClick();\n setIsOpen(false);\n }}\n >\n {IconComponent && <IconComponent size={16} />}\n <span>{item.label}</span>\n </button>\n );\n })}\n </>\n )}\n </>\n )}\n </div>\n )}\n\n <LoginModal\n isOpen={showLoginModal}\n onClose={() => setShowLoginModal(false)}\n onSuccess={handleAuthSuccess}\n onSwitchToRegister={() => {\n setShowLoginModal(false);\n setShowRegisterModal(true);\n }}\n />\n\n <RegisterModal\n isOpen={showRegisterModal}\n onClose={() => setShowRegisterModal(false)}\n onSuccess={handleAuthSuccess}\n onSwitchToLogin={() => {\n setShowRegisterModal(false);\n setShowLoginModal(true);\n }}\n />\n </div>\n );\n}\n","/**\n * Auth Components - LoginForm (Headless)\n * 无样式的登录表单组件\n */\n\nimport React, { useState } from 'react';\nimport { useAuth } from '../hooks';\nimport type { BaseApiClient } from '../client/base-api-client';\nimport type { HeadlessLoginFormProps, LoginFormState } from './types';\n\n/**\n * Headless 登录表单组件\n *\n * 提供登录逻辑但不包含任何 UI 样式,\n * 使用 render props 模式让用户完全控制 UI\n *\n * @example\n * ```tsx\n * <LoginForm apiClient={apiClient}>\n * {({ email, password, loading, error, handleEmailChange, handlePasswordChange, handleSubmit }) => (\n * <form onSubmit={handleSubmit}>\n * <input\n * value={email}\n * onChange={(e) => handleEmailChange(e.target.value)}\n * />\n * <input\n * type=\"password\"\n * value={password}\n * onChange={(e) => handlePasswordChange(e.target.value)}\n * />\n * {error && <div>{error}</div>}\n * <button disabled={loading}>\n * {loading ? '登录中...' : '登录'}\n * </button>\n * </form>\n * )}\n * </LoginForm>\n * ```\n */\nexport function LoginForm({ apiClient, onSuccess, onError, children }: HeadlessLoginFormProps) {\n const { login, loading, error: authError, clearError } = useAuth(apiClient);\n const [email, setEmail] = useState('');\n const [password, setPassword] = useState('');\n\n const handleSubmit = async (e?: React.FormEvent) => {\n if (e) {\n e.preventDefault();\n }\n\n clearError();\n\n const result = await login(email, password);\n\n if (result.success) {\n onSuccess?.((apiClient as BaseApiClient).getUser());\n } else {\n onError?.(result.error || '登录失败');\n }\n };\n\n const state: LoginFormState = {\n email,\n password,\n loading,\n error: authError,\n handleEmailChange: setEmail,\n handlePasswordChange: setPassword,\n handleSubmit,\n };\n\n return <>{children(state)}</>;\n}\n\n","/**\n * Auth Components - RegisterForm (Headless)\n * 无样式的注册表单组件\n */\n\nimport React, { useState } from 'react';\nimport { useAuth } from '../hooks';\nimport type { BaseApiClient } from '../client/base-api-client';\nimport type { HeadlessRegisterFormPropsLegacy, RegisterFormState } from './types';\n\n/**\n * Headless 注册表单组件\n *\n * 提供注册逻辑但不包含任何 UI 样式,\n * 使用 render props 模式让用户完全控制 UI\n *\n * @example\n * ```tsx\n * <RegisterForm apiClient={apiClient}>\n * {({ email, password, username, loading, error, handleEmailChange, handlePasswordChange, handleUsernameChange, handleSubmit }) => (\n * <form onSubmit={handleSubmit}>\n * <input\n * value={email}\n * onChange={(e) => handleEmailChange(e.target.value)}\n * />\n * <input\n * value={username}\n * onChange={(e) => handleUsernameChange(e.target.value)}\n * />\n * <input\n * type=\"password\"\n * value={password}\n * onChange={(e) => handlePasswordChange(e.target.value)}\n * />\n * {error && <div>{error}</div>}\n * <button disabled={loading}>\n * {loading ? '注册中...' : '注册'}\n * </button>\n * </form>\n * )}\n * </RegisterForm>\n * ```\n */\nexport function RegisterForm({\n apiClient,\n onSuccess,\n onError,\n children,\n}: HeadlessRegisterFormPropsLegacy) {\n const { register, loading, error: authError, clearError } = useAuth(apiClient);\n const [email, setEmail] = useState('');\n const [password, setPassword] = useState('');\n const [username, setUsername] = useState('');\n\n const handleSubmit = async (e?: React.FormEvent) => {\n if (e) {\n e.preventDefault();\n }\n\n clearError();\n\n // 基础验证\n if (!email || !password || !username) {\n const errorMsg = '请填写所有字段';\n onError?.(errorMsg);\n return;\n }\n\n if (password.length < 6) {\n const errorMsg = '密码长度至少为 6 位';\n onError?.(errorMsg);\n return;\n }\n\n const result = await register(email, password, username);\n\n if (result.success) {\n onSuccess?.((apiClient as BaseApiClient).getUser());\n } else {\n onError?.(result.error || '注册失败');\n }\n };\n\n const state: RegisterFormState = {\n email,\n password,\n username,\n loading,\n error: authError,\n handleEmailChange: setEmail,\n handlePasswordChange: setPassword,\n handleUsernameChange: setUsername,\n handleSubmit,\n };\n\n return <>{children(state)}</>;\n}\n\n","/**\n * Admin Login Page Component\n * 完整的管理后台登录页面组件\n *\n * 功能:\n * - 邮箱密码登录\n * - 开发环境测试账户自动填充\n * - Analytics 埋点集成\n * - 角色权限检查\n * - 响应式设计\n */\n\nimport React, { useState, useEffect } from 'react';\nimport { clsx } from 'clsx';\nimport { useAuth } from '../hooks';\nimport type { BaseApiClient } from '../client/base-api-client';\nimport type { User } from '../types';\n\n// ============================================================================\n// Types\n// ============================================================================\n\nexport interface AdminLoginPageProps {\n /**\n * API 客户端实例\n */\n apiClient: BaseApiClient;\n\n /**\n * 登录成功后的回调\n */\n onLoginSuccess?: (user: User) => void;\n\n /**\n * 登录失败的回调\n */\n onLoginError?: (error: string) => void;\n\n /**\n * 权限检查函数(可选)\n * 返回 true 表示有权限,false 表示无权限\n */\n checkPermission?: (user: User) => boolean;\n\n /**\n * 权限不足时的错误消息\n */\n permissionDeniedMessage?: string;\n\n /**\n * 开发环境配置\n */\n devConfig?: {\n /**\n * 是否启用开发模式功能(自动填充等)\n */\n enabled?: boolean;\n\n /**\n * 测试账户邮箱\n */\n testEmail?: string;\n\n /**\n * 测试账户密码\n */\n testPassword?: string;\n\n /**\n * 自动填充延迟(毫秒)\n */\n autoFillDelay?: number;\n };\n\n /**\n * 页面文本配置\n */\n texts?: {\n appName?: string;\n appDescription?: string;\n pageTitle?: string;\n pageSubtitle?: string;\n emailLabel?: string;\n emailPlaceholder?: string;\n passwordLabel?: string;\n passwordPlaceholder?: string;\n loginButton?: string;\n loggingInButton?: string;\n fillTestAccount?: string;\n copyCredentials?: string;\n devModeLabel?: string;\n testAccountInfo?: string;\n testAccountFilled?: string;\n footer?: string;\n };\n\n /**\n * Analytics 集成(可选)\n */\n analytics?: {\n /**\n * 页面访问埋点\n */\n trackPageView?: (data: Record<string, any>) => void;\n\n /**\n * 登录成功埋点\n */\n trackLoginSuccess?: (user: User) => void;\n\n /**\n * 登录失败埋点\n */\n trackLoginFailed?: (error: string, email: string) => void;\n\n /**\n * 权限拒绝埋点\n */\n trackPermissionDenied?: (user: User) => void;\n\n /**\n * 设置用户信息\n */\n setUser?: (user: { userId: string; email: string; role: string }) => void;\n };\n\n /**\n * UI 组件(可选,用于自定义样式)\n */\n components?: {\n Container?: React.ComponentType<{ children: React.ReactNode }>;\n Card?: React.ComponentType<{ children: React.ReactNode }>;\n Input?: React.ComponentType<any>;\n Button?: React.ComponentType<any>;\n Alert?: React.ComponentType<{ children: React.ReactNode }>;\n Badge?: React.ComponentType<{ children: React.ReactNode; variant?: string }>;\n };\n\n /**\n * className 配置(用于 Tailwind CSS)\n */\n classNames?: {\n container?: string;\n card?: string;\n header?: string;\n form?: string;\n input?: string;\n button?: string;\n alert?: string;\n };\n}\n\n// ============================================================================\n// Default Components (Tailwind CSS based) - Modern & Beautiful Design\n// ============================================================================\n\nconst DefaultContainer: React.FC<{ children: React.ReactNode }> = ({ children }) => (\n <div className=\"min-h-screen bg-gradient-to-br from-indigo-100 via-purple-50 to-pink-100 flex items-center justify-center px-4 py-12 relative overflow-hidden\">\n {/* Animated background elements */}\n <div className=\"absolute inset-0 overflow-hidden pointer-events-none\">\n <div\n className=\"absolute -top-40 -right-40 w-80 h-80 bg-purple-300 rounded-full mix-blend-multiply filter blur-xl opacity-70\"\n style={{\n animation: 'blob 7s infinite',\n }}\n ></div>\n <div\n className=\"absolute -bottom-40 -left-40 w-80 h-80 bg-indigo-300 rounded-full mix-blend-multiply filter blur-xl opacity-70\"\n style={{\n animation: 'blob 7s infinite',\n animationDelay: '2s',\n }}\n ></div>\n <div\n className=\"absolute top-1/2 left-1/2 transform -translate-x-1/2 -translate-y-1/2 w-80 h-80 bg-pink-300 rounded-full mix-blend-multiply filter blur-xl opacity-70\"\n style={{\n animation: 'blob 7s infinite',\n animationDelay: '4s',\n }}\n ></div>\n </div>\n <div className=\"relative z-[10]\">\n {children}\n </div>\n <style dangerouslySetInnerHTML={{__html: `\n @keyframes blob {\n 0%, 100% { transform: translate(0, 0) scale(1); }\n 25% { transform: translate(20px, -50px) scale(1.1); }\n 50% { transform: translate(-20px, 20px) scale(0.9); }\n 75% { transform: translate(50px, 50px) scale(1.05); }\n }\n `}} />\n </div>\n);\n\nconst DefaultCard: React.FC<{ children: React.ReactNode }> = ({ children }) => (\n <div className=\"w-full max-w-md bg-white/95 backdrop-blur-xl rounded-2xl shadow-2xl border border-white/20 overflow-hidden\">\n {children}\n </div>\n);\n\nconst DefaultInput: React.FC<any> = (props) => (\n <input\n {...props}\n className=\"w-full px-4 py-3 bg-gray-50 border border-gray-200 rounded-xl focus:outline-none focus:ring-2 focus:ring-purple-500 focus:border-transparent transition-all duration-200 placeholder-gray-400 text-gray-900 hover:border-gray-300\"\n />\n);\n\nconst DefaultButton: React.FC<any> = ({ children, disabled, type, ...props }) => (\n <button\n type={type || 'button'}\n disabled={disabled}\n {...props}\n className={clsx('w-full bg-gradient-to-r from-blue-50 to-indigo-50 border-2 border-dashed border-blue-300 text-blue-700 hover:from-blue-100 hover:to-indigo-100 hover:border-blue-400 px-4 py-2.5 rounded-xl text-sm font-medium transition-all duration-200 transform hover:scale-105 active:scale-95', disabled ? 'opacity-60 cursor-not-allowed hover:scale-100 hover:shadow-none' : 'block', '}')}\n style={{\n backgroundSize: '200% 100%',\n backgroundPosition: disabled ? '0% 0%' : '0% 0%',\n display: 'block',\n }}\n onMouseEnter={(e) => {\n if (!disabled) {\n e.currentTarget.style.backgroundPosition = '100% 0%';\n }\n }}\n onMouseLeave={(e) => {\n if (!disabled) {\n e.currentTarget.style.backgroundPosition = '0% 0%';\n }\n }}\n >\n {children}\n </button>\n);\n\nconst DefaultAlert: React.FC<{ children: React.ReactNode }> = ({ children }) => (\n <div className=\"bg-red-50 border-l-4 border-red-500 text-red-700 px-4 py-3 rounded-lg relative flex items-start space-x-3 shadow-sm\">\n <svg className=\"w-5 h-5 text-red-500 mt-0.5 flex-shrink-0\" fill=\"currentColor\" viewBox=\"0 0 20 20\">\n <path fillRule=\"evenodd\" d=\"M10 18a8 8 0 100-16 8 8 0 000 16zM8.707 7.293a1 1 0 00-1.414 1.414L8.586 10l-1.293 1.293a1 1 0 101.414 1.414L10 11.414l1.293 1.293a1 1 0 001.414-1.414L11.414 10l1.293-1.293a1 1 0 00-1.414-1.414L10 8.586 8.707 7.293z\" clipRule=\"evenodd\"/>\n </svg>\n <div className=\"flex-1 text-sm\">{children}</div>\n </div>\n);\n\nconst DefaultBadge: React.FC<{ children: React.ReactNode; variant?: string; className?: string }> = ({\n children,\n variant,\n className = '',\n}) => (\n <span\n className={clsx('inline-flex items-center px-3 py-1.5 rounded-full text-xs font-semibold shadow-sm', variant === 'dev'\n ? 'bg-gradient-to-r from-orange-400 to-amber-500 text-white border-0'\n : 'bg-gray-100 text-gray-700 border border-gray-200', className)}\n >\n {children}\n </span>\n);\n\n// ============================================================================\n// Main Component\n// ============================================================================\n\nexport function AdminLoginPage(props: AdminLoginPageProps) {\n const {\n apiClient,\n onLoginSuccess,\n onLoginError,\n checkPermission,\n permissionDeniedMessage = '访问被拒绝:需要管理员权限',\n devConfig,\n texts = {},\n analytics,\n components,\n classNames = {},\n } = props;\n\n // Use custom or default components\n const Container = components?.Container || DefaultContainer;\n const Card = components?.Card || DefaultCard;\n const Input = components?.Input || DefaultInput;\n const Button = components?.Button || DefaultButton;\n const Alert = components?.Alert || DefaultAlert;\n const Badge = components?.Badge || DefaultBadge;\n\n // Default texts\n const t = {\n appName: texts.appName || 'LyricNote',\n appDescription: texts.appDescription || '智能歌词管理平台',\n pageTitle: texts.pageTitle || '管理员登录',\n pageSubtitle: texts.pageSubtitle || '请使用管理员账户登录系统',\n emailLabel: texts.emailLabel || '管理员邮箱',\n emailPlaceholder: texts.emailPlaceholder || 'admin@example.com',\n passwordLabel: texts.passwordLabel || '密码',\n passwordPlaceholder: texts.passwordPlaceholder || '请输入密码',\n loginButton: texts.loginButton || '登录管理后台',\n loggingInButton: texts.loggingInButton || '登录中...',\n fillTestAccount: texts.fillTestAccount || '填充测试账户',\n copyCredentials: texts.copyCredentials || '复制',\n devModeLabel: texts.devModeLabel || '开发环境',\n testAccountInfo: texts.testAccountInfo || '测试账户已填充,可直接登录',\n testAccountFilled: texts.testAccountFilled || '已自动填充测试账户信息',\n footer: texts.footer || '仅限管理员访问 • 系统安全保护',\n };\n\n // State\n const [email, setEmail] = useState('');\n const [password, setPassword] = useState('');\n const [showPassword, setShowPassword] = useState(false);\n const [autoFilled, setAutoFilled] = useState(false);\n const [localError, setLocalError] = useState('');\n\n // Check if development mode\n const isDevelopment =\n devConfig?.enabled ??\n (typeof window !== 'undefined' &&\n (process.env.NODE_ENV === 'development' ||\n window.location.hostname === 'localhost' ||\n window.location.hostname === '127.0.0.1'));\n\n // Test account config\n const testEmail = devConfig?.testEmail || 'admin@example.com';\n const testPassword = devConfig?.testPassword || 'admin123';\n const autoFillDelay = devConfig?.autoFillDelay || 2000;\n\n // Use auth hook\n const { user, isLoggedIn, loading, error: authError, login, clearError } = useAuth(apiClient as any);\n\n const error = authError || localError;\n\n // Track page view\n useEffect(() => {\n if (typeof window !== 'undefined' && analytics?.trackPageView) {\n analytics.trackPageView({\n pageName: 'admin_login_page',\n pageUrl: window.location.pathname,\n });\n }\n }, [analytics]);\n\n // Auto-fill test account in development\n useEffect(() => {\n if (isDevelopment && !email && !password) {\n const timer = setTimeout(() => {\n if (!email && !password) {\n setEmail(testEmail);\n setPassword(testPassword);\n setAutoFilled(true);\n }\n }, autoFillDelay);\n\n return () => clearTimeout(timer);\n }\n return; // Explicit return for all code paths\n }, [isDevelopment, email, password, testEmail, testPassword, autoFillDelay]);\n\n // Check permission after login\n useEffect(() => {\n if (user && isLoggedIn) {\n // Check permission if provided\n if (checkPermission && !checkPermission(user)) {\n setLocalError(permissionDeniedMessage);\n analytics?.trackPermissionDenied?.(user);\n return;\n }\n\n // Track login success\n analytics?.trackLoginSuccess?.(user);\n analytics?.setUser?.({\n userId: user.id,\n email: user.email,\n role: user.role,\n });\n\n // Call success callback\n onLoginSuccess?.(user);\n }\n }, [user, isLoggedIn, checkPermission, permissionDeniedMessage, analytics, onLoginSuccess]);\n\n // Handle login submit\n const handleSubmit = async (e: React.FormEvent) => {\n e.preventDefault();\n setLocalError('');\n clearError();\n\n try {\n const result = await login(email, password);\n\n if (!result.success) {\n const errorMsg = result.error || '登录失败';\n setLocalError(errorMsg);\n analytics?.trackLoginFailed?.(errorMsg, email);\n onLoginError?.(errorMsg);\n }\n } catch (err) {\n const errorMsg = '登录失败:网络错误或服务器错误';\n setLocalError(errorMsg);\n analytics?.trackLoginFailed?.(errorMsg, email);\n onLoginError?.(errorMsg);\n }\n };\n\n // Fill test account\n const fillTestAccount = () => {\n setEmail(testEmail);\n setPassword(testPassword);\n setLocalError('');\n setAutoFilled(true);\n };\n\n // Copy test credentials\n const copyTestCredentials = async () => {\n const credentials = '邮箱: ' + (testEmail) + '\\n密码: ' + (testPassword);\n try {\n await navigator.clipboard.writeText(credentials);\n } catch (err) {\n console.warn('复制失败,请手动复制');\n }\n };\n\n return (\n <Container>\n <div className=\"w-full max-w-md\">\n {/* Login Form Card */}\n <Card>\n <div className=\"p-8\">\n {/* Title */}\n <div className=\"pb-8\">\n <h2 className=\"text-2xl font-bold text-center text-gray-800\">{t.pageTitle}</h2>\n </div>\n\n <form onSubmit={handleSubmit} className=\"space-y-5\">\n {/* Error Alert */}\n {error && <Alert>{error}</Alert>}\n\n {/* Email Input */}\n <div className=\"space-y-2\">\n <label htmlFor=\"email\" className=\"text-sm font-semibold text-gray-700 block\">\n {t.emailLabel}\n </label>\n <Input\n id=\"email\"\n type=\"email\"\n value={email}\n onChange={(e: React.ChangeEvent<HTMLInputElement>) => setEmail(e.target.value)}\n placeholder={t.emailPlaceholder}\n required\n disabled={loading}\n />\n </div>\n\n {/* Password Input */}\n <div className=\"space-y-2\">\n <label htmlFor=\"password\" className=\"text-sm font-semibold text-gray-700 block\">\n {t.passwordLabel}\n </label>\n <div className=\"relative\">\n <Input\n id=\"password\"\n type={showPassword ? 'text' : 'password'}\n value={password}\n onChange={(e: React.ChangeEvent<HTMLInputElement>) =>\n setPassword(e.target.value)\n }\n placeholder={t.passwordPlaceholder}\n required\n disabled={loading}\n />\n <button\n type=\"button\"\n onClick={() => setShowPassword(!showPassword)}\n className=\"absolute right-3 top-1/2 transform -translate-y-1/2 text-gray-400 hover:text-gray-600 transition-colors p-1\"\n disabled={loading}\n title={showPassword ? '隐藏密码' : '显示密码'}\n >\n {showPassword ? (\n <svg xmlns=\"http://www.w3.org/2000/svg\" className=\"h-5 w-5\" viewBox=\"0 0 20 20\" fill=\"currentColor\">\n <path fillRule=\"evenodd\" d=\"M3.707 2.293a1 1 0 00-1.414 1.414l14 14a1 1 0 001.414-1.414l-1.473-1.473A10.014 10.014 0 0019.542 10C18.268 5.943 14.478 3 10 3a9.958 9.958 0 00-4.512 1.074l-1.78-1.781zm4.261 4.26l1.514 1.515a2.003 2.003 0 012.45 2.45l1.514 1.514a4 4 0 00-5.478-5.478z\" clipRule=\"evenodd\" />\n <path d=\"M12.454 16.697L9.75 13.992a4 4 0 01-3.742-3.741L2.335 6.578A9.98 9.98 0 00.458 10c1.274 4.057 5.065 7 9.542 7 .847 0 1.669-.105 2.454-.303z\" />\n </svg>\n ) : (\n <svg xmlns=\"http://www.w3.org/2000/svg\" className=\"h-5 w-5\" viewBox=\"0 0 20 20\" fill=\"currentColor\">\n <path d=\"M10 12a2 2 0 100-4 2 2 0 000 4z\" />\n <path fillRule=\"evenodd\" d=\"M.458 10C1.732 5.943 5.522 3 10 3s8.268 2.943 9.542 7c-1.274 4.057-5.064 7-9.542 7S1.732 14.057.458 10zM14 10a4 4 0 11-8 0 4 4 0 018 0z\" clipRule=\"evenodd\" />\n </svg>\n )}\n </button>\n </div>\n </div>\n\n {/* Dev Mode: Test Account Button */}\n {isDevelopment && (\n <div className=\"pt-2\">\n <button\n type=\"button\"\n onClick={fillTestAccount}\n className=\"w-full bg-gradient-to-r from-blue-50 to-indigo-50 border-2 border-dashed border-blue-300 text-blue-700 hover:from-blue-100 hover:to-indigo-100 hover:border-blue-400 px-4 py-2.5 rounded-xl text-sm font-medium transition-all duration-200 transform hover:scale-105 active:scale-95\"\n disabled={loading}\n >\n {t.fillTestAccount}\n </button>\n </div>\n )}\n\n {/* Submit Button */}\n <div className=\"pt-3\">\n <Button type=\"submit\" disabled={loading}>\n {loading ? t.loggingInButton : t.loginButton}\n </Button>\n </div>\n </form>\n </div>\n </Card>\n </div>\n </Container>\n );\n}\n\n"]}
@@ -1,18 +0,0 @@
1
- 'use strict';
2
-
3
- var chunkGQZHGSRR_js = require('./chunk-GQZHGSRR.js');
4
- var chunkGS7XLKET_js = require('./chunk-GS7XLKET.js');
5
- var chunkPBI7FKMB_js = require('./chunk-PBI7FKMB.js');
6
- var chunkNSBPE2FW_js = require('./chunk-NSBPE2FW.js');
7
-
8
- // src/common/request/index.ts
9
- var request_exports = {};
10
- chunkNSBPE2FW_js.__export(request_exports, {
11
- MiniappRequestAdapter: () => chunkGQZHGSRR_js.MiniappRequestAdapter,
12
- ReactNativeRequestAdapter: () => chunkGS7XLKET_js.ReactNativeRequestAdapter,
13
- WebRequestAdapter: () => chunkPBI7FKMB_js.WebRequestAdapter
14
- });
15
-
16
- exports.request_exports = request_exports;
17
- //# sourceMappingURL=chunk-QP5N3ER6.js.map
18
- //# sourceMappingURL=chunk-QP5N3ER6.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/common/request/index.ts"],"names":["__export","MiniappRequestAdapter","ReactNativeRequestAdapter","WebRequestAdapter"],"mappings":";;;;;;;;AAAA,IAAA,eAAA,GAAA;AAAAA,yBAAA,CAAA,eAAA,EAAA;AAAA,EAAA,qBAAA,EAAA,MAAAC,sCAAA;AAAA,EAAA,yBAAA,EAAA,MAAAC,0CAAA;AAAA,EAAA,iBAAA,EAAA,MAAAC;AAAA,CAAA,CAAA","file":"chunk-QP5N3ER6.js","sourcesContent":["/**\n * @package sa2kit/common/request\n */\nexport * from '../../request';\n"]}
@@ -1,135 +0,0 @@
1
- import { __export } from './chunk-MAI35PU6.mjs';
2
- import useSWR, { mutate } from 'swr';
3
- import { useCallback } from 'react';
4
-
5
- // src/config/index.ts
6
- var config_exports = {};
7
- __export(config_exports, {
8
- createUseConfigs: () => createUseConfigs,
9
- invalidateAllConfigs: () => invalidateAllConfigs,
10
- prefetchConfigs: () => prefetchConfigs
11
- });
12
- function createUseConfigs(options) {
13
- const {
14
- apiBaseUrl = "",
15
- getAuthToken,
16
- onUnauthorized,
17
- dedupingInterval = 6e4,
18
- revalidateOnFocus = false
19
- } = options;
20
- const fetcher = async (url) => {
21
- const token = await getAuthToken();
22
- const res = await fetch(apiBaseUrl + url, {
23
- headers: {
24
- Authorization: "Bearer " + token,
25
- "Content-Type": "application/json"
26
- },
27
- credentials: "include"
28
- });
29
- if (!res.ok) {
30
- if (res.status === 401) {
31
- onUnauthorized?.();
32
- throw new Error("Unauthorized");
33
- }
34
- throw new Error("Failed to fetch configs");
35
- }
36
- const data = await res.json();
37
- return data.data;
38
- };
39
- return function useConfigs() {
40
- const {
41
- data,
42
- error,
43
- mutate: mutateConfigs
44
- } = useSWR("/api/admin/config", fetcher, {
45
- // 配置选项
46
- revalidateOnFocus,
47
- revalidateOnReconnect: true,
48
- // 网络重连时重新验证
49
- dedupingInterval,
50
- // 缓存去重时间
51
- errorRetryCount: 3,
52
- // 错误重试3次
53
- errorRetryInterval: 5e3,
54
- // 重试间隔5秒
55
- shouldRetryOnError: true,
56
- // 启用错误重试
57
- // 成功时的回调
58
- onSuccess: (_data) => {
59
- console.log("\u2705 Configs loaded from cache or network");
60
- },
61
- // 错误时的回调
62
- onError: (err) => {
63
- console.error("\u274C Failed to load configs:", err);
64
- }
65
- });
66
- const updateConfigs = useCallback(
67
- async (category, updates) => {
68
- const token = await getAuthToken();
69
- mutateConfigs(
70
- (current) => {
71
- if (!current) return current;
72
- return {
73
- ...current,
74
- [category]: {
75
- ...current[category],
76
- ...Object.entries(updates).reduce((acc, [key, value]) => {
77
- acc[key] = {
78
- ...current[category]?.[key],
79
- value
80
- };
81
- return acc;
82
- }, {})
83
- }
84
- };
85
- },
86
- false
87
- // 不立即重新验证
88
- );
89
- try {
90
- const res = await fetch(apiBaseUrl + "/api/admin/config/" + category, {
91
- method: "POST",
92
- headers: {
93
- Authorization: "Bearer " + token,
94
- "Content-Type": "application/json"
95
- },
96
- credentials: "include",
97
- body: JSON.stringify({ configs: updates })
98
- });
99
- if (!res.ok) throw new Error("Update failed");
100
- mutateConfigs();
101
- return { success: true };
102
- } catch (error2) {
103
- mutateConfigs();
104
- throw error2;
105
- }
106
- },
107
- [mutateConfigs, getAuthToken, apiBaseUrl]
108
- );
109
- const refresh = useCallback(() => {
110
- mutateConfigs();
111
- }, [mutateConfigs]);
112
- return {
113
- configs: data,
114
- isLoading: !error && !data,
115
- isError: !!error,
116
- error,
117
- updateConfigs,
118
- refresh
119
- };
120
- };
121
- }
122
- function prefetchConfigs(apiBaseUrl = "") {
123
- mutate(apiBaseUrl + "/api/admin/config");
124
- }
125
- function invalidateAllConfigs(apiBaseUrl = "") {
126
- mutate(
127
- (key) => typeof key === "string" && key.startsWith(apiBaseUrl + "/api/admin/config"),
128
- void 0,
129
- { revalidate: true }
130
- );
131
- }
132
-
133
- export { config_exports, createUseConfigs, invalidateAllConfigs, prefetchConfigs };
134
- //# sourceMappingURL=chunk-QXAOXBVB.mjs.map
135
- //# sourceMappingURL=chunk-QXAOXBVB.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/config/index.ts","../src/config/hooks/useConfigs.ts"],"names":["error"],"mappings":";;;;;AAAA,IAAA,cAAA,GAAA;AAAA,QAAA,CAAA,cAAA,EAAA;AAAA,EAAA,gBAAA,EAAA,MAAA,gBAAA;AAAA,EAAA,oBAAA,EAAA,MAAA,oBAAA;AAAA,EAAA,eAAA,EAAA,MAAA;AAAA,CAAA,CAAA;ACyBO,SAAS,iBAAiB,OAAA,EAA4B;AAC3D,EAAA,MAAM;AAAA,IACJ,UAAA,GAAa,EAAA;AAAA,IACb,YAAA;AAAA,IACA,cAAA;AAAA,IACA,gBAAA,GAAmB,GAAA;AAAA,IACnB,iBAAA,GAAoB;AAAA,GACtB,GAAI,OAAA;AAGJ,EAAA,MAAM,OAAA,GAAU,OAAO,GAAA,KAAgB;AACrC,IAAA,MAAM,KAAA,GAAQ,MAAM,YAAA,EAAa;AAEjC,IAAA,MAAM,GAAA,GAAM,MAAM,KAAA,CAAO,UAAA,GAAe,GAAA,EAAM;AAAA,MAC5C,OAAA,EAAS;AAAA,QACP,eAAe,SAAA,GAAa,KAAA;AAAA,QAC5B,cAAA,EAAgB;AAAA,OAClB;AAAA,MACA,WAAA,EAAa;AAAA,KACd,CAAA;AAED,IAAA,IAAI,CAAC,IAAI,EAAA,EAAI;AACX,MAAA,IAAI,GAAA,CAAI,WAAW,GAAA,EAAK;AACtB,QAAA,cAAA,IAAiB;AACjB,QAAA,MAAM,IAAI,MAAM,cAAc,CAAA;AAAA,MAChC;AACA,MAAA,MAAM,IAAI,MAAM,yBAAyB,CAAA;AAAA,IAC3C;AAEA,IAAA,MAAM,IAAA,GAAO,MAAM,GAAA,CAAI,IAAA,EAAK;AAC5B,IAAA,OAAO,IAAA,CAAK,IAAA;AAAA,EACd,CAAA;AAGA,EAAA,OAAO,SAAS,UAAA,GAAa;AAC3B,IAAA,MAAM;AAAA,MACJ,IAAA;AAAA,MACA,KAAA;AAAA,MACA,MAAA,EAAQ;AAAA,KACV,GAAI,MAAA,CAAmB,mBAAA,EAAqB,OAAA,EAAS;AAAA;AAAA,MAEnD,iBAAA;AAAA,MACA,qBAAA,EAAuB,IAAA;AAAA;AAAA,MACvB,gBAAA;AAAA;AAAA,MACA,eAAA,EAAiB,CAAA;AAAA;AAAA,MACjB,kBAAA,EAAoB,GAAA;AAAA;AAAA,MACpB,kBAAA,EAAoB,IAAA;AAAA;AAAA;AAAA,MAGpB,SAAA,EAAW,CAAC,KAAA,KAAsB;AAChC,QAAA,OAAA,CAAQ,IAAI,6CAAwC,CAAA;AAAA,MACtD,CAAA;AAAA;AAAA,MAGA,OAAA,EAAS,CAAC,GAAA,KAAe;AACvB,QAAA,OAAA,CAAQ,KAAA,CAAM,kCAA6B,GAAG,CAAA;AAAA,MAChD;AAAA,KACD,CAAA;AAGD,IAAA,MAAM,aAAA,GAAgB,WAAA;AAAA,MACpB,OAAO,UAAkB,OAAA,KAAiC;AACxD,QAAA,MAAM,KAAA,GAAQ,MAAM,YAAA,EAAa;AAGjC,QAAA,aAAA;AAAA,UACE,CAAC,OAAA,KAAoC;AACnC,YAAA,IAAI,CAAC,SAAS,OAAO,OAAA;AACrB,YAAA,OAAO;AAAA,cACL,GAAG,OAAA;AAAA,cACH,CAAC,QAAQ,GAAG;AAAA,gBACV,GAAG,QAAQ,QAAQ,CAAA;AAAA,gBACnB,GAAG,MAAA,CAAO,OAAA,CAAQ,OAAO,CAAA,CAAE,MAAA,CAAO,CAAC,GAAA,EAAK,CAAC,GAAA,EAAK,KAAK,CAAA,KAAM;AACvD,kBAAA,GAAA,CAAI,GAAG,CAAA,GAAI;AAAA,oBACT,GAAG,OAAA,CAAQ,QAAQ,CAAA,GAAI,GAAG,CAAA;AAAA,oBAC1B;AAAA,mBACF;AACA,kBAAA,OAAO,GAAA;AAAA,gBACT,CAAA,EAAG,EAAS;AAAA;AACd,aACF;AAAA,UACF,CAAA;AAAA,UACA;AAAA;AAAA,SACF;AAEA,QAAA,IAAI;AAEF,UAAA,MAAM,GAAA,GAAM,MAAM,KAAA,CAAO,UAAA,GAAc,uBAAwB,QAAA,EAAW;AAAA,YACxE,MAAA,EAAQ,MAAA;AAAA,YACR,OAAA,EAAS;AAAA,cACP,eAAe,SAAA,GAAa,KAAA;AAAA,cAC5B,cAAA,EAAgB;AAAA,aAClB;AAAA,YACA,WAAA,EAAa,SAAA;AAAA,YACb,MAAM,IAAA,CAAK,SAAA,CAAU,EAAE,OAAA,EAAS,SAAS;AAAA,WAC1C,CAAA;AAED,UAAA,IAAI,CAAC,GAAA,CAAI,EAAA,EAAI,MAAM,IAAI,MAAM,eAAe,CAAA;AAG5C,UAAA,aAAA,EAAc;AAEd,UAAA,OAAO,EAAE,SAAS,IAAA,EAAK;AAAA,QACzB,SAASA,MAAAA,EAAO;AAEd,UAAA,aAAA,EAAc;AACd,UAAA,MAAMA,MAAAA;AAAA,QACR;AAAA,MACF,CAAA;AAAA,MACA,CAAC,aAAA,EAAe,YAAA,EAAc,UAAU;AAAA,KAC1C;AAGA,IAAA,MAAM,OAAA,GAAU,YAAY,MAAM;AAChC,MAAA,aAAA,EAAc;AAAA,IAChB,CAAA,EAAG,CAAC,aAAa,CAAC,CAAA;AAElB,IAAA,OAAO;AAAA,MACL,OAAA,EAAS,IAAA;AAAA,MACT,SAAA,EAAW,CAAC,KAAA,IAAS,CAAC,IAAA;AAAA,MACtB,OAAA,EAAS,CAAC,CAAC,KAAA;AAAA,MACX,KAAA;AAAA,MACA,aAAA;AAAA,MACA;AAAA,KACF;AAAA,EACF,CAAA;AACF;AAKO,SAAS,eAAA,CAAgB,aAAqB,EAAA,EAAI;AACvD,EAAA,MAAA,CAAQ,aAAc,mBAAmB,CAAA;AAC3C;AAKO,SAAS,oBAAA,CAAqB,aAAqB,EAAA,EAAI;AAC5D,EAAA,MAAA;AAAA,IACE,CAAC,QAAa,OAAO,GAAA,KAAQ,YAAY,GAAA,CAAI,UAAA,CAAY,aAAc,mBAAmB,CAAA;AAAA,IAC1F,MAAA;AAAA,IACA,EAAE,YAAY,IAAA;AAAK,GACrB;AACF","file":"chunk-QXAOXBVB.mjs","sourcesContent":["/**\n * Config 配置管理模块\n *\n * 提供配置缓存和管理相关的 Hooks\n *\n * 依赖:swr\n */\n\n// 类型定义\nexport type {\n ConfigItem,\n AllConfigs,\n UseConfigsOptions,\n} from './types';\n\n// Hooks\nexport {\n createUseConfigs,\n prefetchConfigs,\n invalidateAllConfigs,\n} from './hooks';\n\n","'use client';\n\n/**\n * 配置缓存优化 Hook\n *\n * 使用 SWR 实现智能缓存和自动重新验证\n * 支持多平台:Web、React Native、小程序\n *\n * 优点:\n * 1. 自动缓存,减少网络请求\n * 2. 自动重新验证(可配置)\n * 3. 乐观更新\n * 4. 错误重试\n * 5. 防抖和去重\n */\n\nimport { default as useSWR, mutate } from 'swr';\nimport { useCallback } from 'react';\nimport type { AllConfigs, UseConfigsOptions, ConfigItem } from '../types';\n\nexport type { AllConfigs, UseConfigsOptions, ConfigItem };\n\n/**\n * 创建 useConfigs Hook\n */\nexport function createUseConfigs(options: UseConfigsOptions) {\n const {\n apiBaseUrl = '',\n getAuthToken,\n onUnauthorized,\n dedupingInterval = 60000,\n revalidateOnFocus = false,\n } = options;\n\n // Fetcher 函数\n const fetcher = async (url: string) => {\n const token = await getAuthToken();\n\n const res = await fetch((apiBaseUrl) + (url), {\n headers: {\n Authorization: 'Bearer ' + (token),\n 'Content-Type': 'application/json',\n },\n credentials: 'include',\n });\n\n if (!res.ok) {\n if (res.status === 401) {\n onUnauthorized?.();\n throw new Error('Unauthorized');\n }\n throw new Error('Failed to fetch configs');\n }\n\n const data = await res.json();\n return data.data as AllConfigs;\n };\n\n // 返回 Hook 函数\n return function useConfigs() {\n const {\n data,\n error,\n mutate: mutateConfigs,\n } = useSWR<AllConfigs>('/api/admin/config', fetcher, {\n // 配置选项\n revalidateOnFocus,\n revalidateOnReconnect: true, // 网络重连时重新验证\n dedupingInterval, // 缓存去重时间\n errorRetryCount: 3, // 错误重试3次\n errorRetryInterval: 5000, // 重试间隔5秒\n shouldRetryOnError: true, // 启用错误重试\n\n // 成功时的回调\n onSuccess: (_data: AllConfigs) => {\n console.log('✅ Configs loaded from cache or network');\n },\n\n // 错误时的回调\n onError: (err: Error) => {\n console.error('❌ Failed to load configs:', err);\n },\n });\n\n // 更新配置(乐观更新)\n const updateConfigs = useCallback(\n async (category: string, updates: Record<string, any>) => {\n const token = await getAuthToken();\n\n // 乐观更新:立即更新本地缓存\n mutateConfigs(\n (current: AllConfigs | undefined) => {\n if (!current) return current;\n return {\n ...current,\n [category]: {\n ...current[category],\n ...Object.entries(updates).reduce((acc, [key, value]) => {\n acc[key] = {\n ...current[category]?.[key],\n value,\n };\n return acc;\n }, {} as any),\n },\n };\n },\n false // 不立即重新验证\n );\n\n try {\n // 发送到服务器\n const res = await fetch((apiBaseUrl) + '/api/admin/config/' + (category), {\n method: 'POST',\n headers: {\n Authorization: 'Bearer ' + (token),\n 'Content-Type': 'application/json',\n },\n credentials: 'include',\n body: JSON.stringify({ configs: updates }),\n });\n\n if (!res.ok) throw new Error('Update failed');\n\n // 更新成功,重新验证缓存\n mutateConfigs();\n\n return { success: true };\n } catch (error) {\n // 更新失败,回滚\n mutateConfigs(); // 从服务器重新获取\n throw error;\n }\n },\n [mutateConfigs, getAuthToken, apiBaseUrl]\n );\n\n // 手动刷新\n const refresh = useCallback(() => {\n mutateConfigs();\n }, [mutateConfigs]);\n\n return {\n configs: data,\n isLoading: !error && !data,\n isError: !!error,\n error,\n updateConfigs,\n refresh,\n };\n };\n}\n\n/**\n * 预加载配置\n */\nexport function prefetchConfigs(apiBaseUrl: string = '') {\n mutate((apiBaseUrl) + '/api/admin/config');\n}\n\n/**\n * 全局缓存失效\n */\nexport function invalidateAllConfigs(apiBaseUrl: string = '') {\n mutate(\n (key: any) => typeof key === 'string' && key.startsWith((apiBaseUrl) + '/api/admin/config'),\n undefined,\n { revalidate: true }\n );\n}\n\n"]}