wrong-notebook 2026.10.22-2 → 2026.10.22-4

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 (587) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/build-manifest.json +8 -8
  3. package/.next/prerender-manifest.json +4 -4
  4. package/.next/server/app/_global-error/page/build-manifest.json +5 -5
  5. package/.next/server/app/_global-error/page.js +2 -2
  6. package/.next/server/app/_global-error/page.js.nft.json +1 -1
  7. package/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  8. package/.next/server/app/_global-error.html +1 -1
  9. package/.next/server/app/_global-error.rsc +8 -8
  10. package/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +7 -7
  11. package/.next/server/app/_global-error.segments/_full.segment.rsc +8 -8
  12. package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  13. package/.next/server/app/_not-found/page/build-manifest.json +5 -5
  14. package/.next/server/app/_not-found/page.js +2 -2
  15. package/.next/server/app/_not-found/page.js.nft.json +1 -1
  16. package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  17. package/.next/server/app/admin/page/build-manifest.json +5 -5
  18. package/.next/server/app/admin/page.js +2 -2
  19. package/.next/server/app/admin/page.js.nft.json +1 -1
  20. package/.next/server/app/admin/page_client-reference-manifest.js +1 -1
  21. package/.next/server/app/admin/user/[id]/page/build-manifest.json +5 -5
  22. package/.next/server/app/admin/user/[id]/page.js +2 -2
  23. package/.next/server/app/admin/user/[id]/page.js.nft.json +1 -1
  24. package/.next/server/app/admin/user/[id]/page_client-reference-manifest.js +1 -1
  25. package/.next/server/app/api/admin/dashboard/route.js +2 -2
  26. package/.next/server/app/api/admin/dashboard/route.js.nft.json +1 -1
  27. package/.next/server/app/api/admin/migrate-tags/route.js +2 -2
  28. package/.next/server/app/api/admin/migrate-tags/route.js.nft.json +1 -1
  29. package/.next/server/app/api/admin/system-reset/route.js +2 -2
  30. package/.next/server/app/api/admin/system-reset/route.js.nft.json +1 -1
  31. package/.next/server/app/api/admin/users/[id]/detail/route.js +2 -2
  32. package/.next/server/app/api/admin/users/[id]/detail/route.js.nft.json +1 -1
  33. package/.next/server/app/api/admin/users/[id]/route.js +2 -2
  34. package/.next/server/app/api/admin/users/[id]/route.js.nft.json +1 -1
  35. package/.next/server/app/api/admin/users/route.js +2 -2
  36. package/.next/server/app/api/admin/users/route.js.nft.json +1 -1
  37. package/.next/server/app/api/ai/models/route.js +2 -2
  38. package/.next/server/app/api/ai/models/route.js.nft.json +1 -1
  39. package/.next/server/app/api/ai/test/route.js +2 -2
  40. package/.next/server/app/api/ai/test/route.js.nft.json +1 -1
  41. package/.next/server/app/api/analytics/route.js +2 -2
  42. package/.next/server/app/api/analytics/route.js.nft.json +1 -1
  43. package/.next/server/app/api/analyze/route.js +2 -2
  44. package/.next/server/app/api/analyze/route.js.nft.json +1 -1
  45. package/.next/server/app/api/auth/[...nextauth]/route.js +2 -2
  46. package/.next/server/app/api/auth/[...nextauth]/route.js.nft.json +1 -1
  47. package/.next/server/app/api/error-items/[id]/delete/route.js +2 -2
  48. package/.next/server/app/api/error-items/[id]/delete/route.js.nft.json +1 -1
  49. package/.next/server/app/api/error-items/[id]/figure/route.js +2 -2
  50. package/.next/server/app/api/error-items/[id]/figure/route.js.nft.json +1 -1
  51. package/.next/server/app/api/error-items/[id]/fix-latex/route.js +2 -2
  52. package/.next/server/app/api/error-items/[id]/fix-latex/route.js.nft.json +1 -1
  53. package/.next/server/app/api/error-items/[id]/geogebra/route.js.nft.json +1 -1
  54. package/.next/server/app/api/error-items/[id]/image/route.js +2 -2
  55. package/.next/server/app/api/error-items/[id]/image/route.js.nft.json +1 -1
  56. package/.next/server/app/api/error-items/[id]/mastery/route.js +2 -2
  57. package/.next/server/app/api/error-items/[id]/mastery/route.js.nft.json +1 -1
  58. package/.next/server/app/api/error-items/[id]/notes/route.js +2 -2
  59. package/.next/server/app/api/error-items/[id]/notes/route.js.nft.json +1 -1
  60. package/.next/server/app/api/error-items/[id]/practice-records/route.js +2 -2
  61. package/.next/server/app/api/error-items/[id]/practice-records/route.js.nft.json +1 -1
  62. package/.next/server/app/api/error-items/[id]/reanswer/route.js +2 -2
  63. package/.next/server/app/api/error-items/[id]/reanswer/route.js.nft.json +1 -1
  64. package/.next/server/app/api/error-items/[id]/retag/route.js +2 -2
  65. package/.next/server/app/api/error-items/[id]/retag/route.js.nft.json +1 -1
  66. package/.next/server/app/api/error-items/[id]/route.js.nft.json +1 -1
  67. package/.next/server/app/api/error-items/[id]/svg-animation/route.js +2 -2
  68. package/.next/server/app/api/error-items/[id]/svg-animation/route.js.nft.json +1 -1
  69. package/.next/server/app/api/error-items/batch-delete/route.js +2 -2
  70. package/.next/server/app/api/error-items/batch-delete/route.js.nft.json +1 -1
  71. package/.next/server/app/api/error-items/clear/route.js +2 -2
  72. package/.next/server/app/api/error-items/clear/route.js.nft.json +1 -1
  73. package/.next/server/app/api/error-items/list/route.js +2 -2
  74. package/.next/server/app/api/error-items/list/route.js.nft.json +1 -1
  75. package/.next/server/app/api/error-items/route.js +2 -2
  76. package/.next/server/app/api/error-items/route.js.nft.json +1 -1
  77. package/.next/server/app/api/error-items/short/[shortId]/route.js +2 -2
  78. package/.next/server/app/api/error-items/short/[shortId]/route.js.nft.json +1 -1
  79. package/.next/server/app/api/error-items/similarity/route.js +2 -2
  80. package/.next/server/app/api/error-items/similarity/route.js.nft.json +1 -1
  81. package/.next/server/app/api/exams/[id]/questions/[questionId]/regenerate/route.js +2 -2
  82. package/.next/server/app/api/exams/[id]/questions/[questionId]/regenerate/route.js.nft.json +1 -1
  83. package/.next/server/app/api/exams/[id]/results/route.js +4 -4
  84. package/.next/server/app/api/exams/[id]/results/route.js.nft.json +1 -1
  85. package/.next/server/app/api/exams/[id]/retry/route.js +2 -2
  86. package/.next/server/app/api/exams/[id]/retry/route.js.nft.json +1 -1
  87. package/.next/server/app/api/exams/[id]/route.js.nft.json +1 -1
  88. package/.next/server/app/api/exams/route.js +2 -2
  89. package/.next/server/app/api/exams/route.js.nft.json +1 -1
  90. package/.next/server/app/api/export/route.js +2 -2
  91. package/.next/server/app/api/export/route.js.nft.json +1 -1
  92. package/.next/server/app/api/geogebra-analyze/route.js +2 -2
  93. package/.next/server/app/api/geogebra-analyze/route.js.nft.json +1 -1
  94. package/.next/server/app/api/health/route.js +2 -2
  95. package/.next/server/app/api/health/route.js.nft.json +1 -1
  96. package/.next/server/app/api/import/route.js +2 -2
  97. package/.next/server/app/api/import/route.js.nft.json +1 -1
  98. package/.next/server/app/api/logs/frontend/route.js +2 -2
  99. package/.next/server/app/api/logs/frontend/route.js.nft.json +1 -1
  100. package/.next/server/app/api/notebooks/[id]/retag/route.js +2 -2
  101. package/.next/server/app/api/notebooks/[id]/retag/route.js.nft.json +1 -1
  102. package/.next/server/app/api/notebooks/[id]/route.js +2 -2
  103. package/.next/server/app/api/notebooks/[id]/route.js.nft.json +1 -1
  104. package/.next/server/app/api/notebooks/route.js +2 -2
  105. package/.next/server/app/api/notebooks/route.js.nft.json +1 -1
  106. package/.next/server/app/api/openclaw/batch-upload/route.js +2 -2
  107. package/.next/server/app/api/openclaw/batch-upload/route.js.nft.json +1 -1
  108. package/.next/server/app/api/practice/generate/route.js +2 -2
  109. package/.next/server/app/api/practice/generate/route.js.nft.json +1 -1
  110. package/.next/server/app/api/practice/record/[id]/route.js +2 -2
  111. package/.next/server/app/api/practice/record/[id]/route.js.nft.json +1 -1
  112. package/.next/server/app/api/practice/record/route.js +2 -2
  113. package/.next/server/app/api/practice/record/route.js.nft.json +1 -1
  114. package/.next/server/app/api/reanswer/route.js +2 -2
  115. package/.next/server/app/api/reanswer/route.js.nft.json +1 -1
  116. package/.next/server/app/api/register/route.js.nft.json +1 -1
  117. package/.next/server/app/api/register/status/route.js +2 -2
  118. package/.next/server/app/api/register/status/route.js.nft.json +1 -1
  119. package/.next/server/app/api/settings/route.js +2 -2
  120. package/.next/server/app/api/settings/route.js.nft.json +1 -1
  121. package/.next/server/app/api/stats/practice/clear/route.js +2 -2
  122. package/.next/server/app/api/stats/practice/clear/route.js.nft.json +1 -1
  123. package/.next/server/app/api/stats/practice/route.js +2 -2
  124. package/.next/server/app/api/stats/practice/route.js.nft.json +1 -1
  125. package/.next/server/app/api/tags/route.js +2 -2
  126. package/.next/server/app/api/tags/route.js.nft.json +1 -1
  127. package/.next/server/app/api/tags/stats/route.js +2 -2
  128. package/.next/server/app/api/tags/stats/route.js.nft.json +1 -1
  129. package/.next/server/app/api/tags/suggestions/route.js +2 -2
  130. package/.next/server/app/api/tags/suggestions/route.js.nft.json +1 -1
  131. package/.next/server/app/api/tasks/route.js +2 -2
  132. package/.next/server/app/api/tasks/route.js.nft.json +1 -1
  133. package/.next/server/app/api/user/route.js +2 -2
  134. package/.next/server/app/api/user/route.js.nft.json +1 -1
  135. package/.next/server/app/api/version/route.js +2 -2
  136. package/.next/server/app/api/version/route.js.nft.json +1 -1
  137. package/.next/server/app/error-items/[id]/page/build-manifest.json +5 -5
  138. package/.next/server/app/error-items/[id]/page.js +2 -2
  139. package/.next/server/app/error-items/[id]/page.js.nft.json +1 -1
  140. package/.next/server/app/error-items/[id]/page_client-reference-manifest.js +1 -1
  141. package/.next/server/app/exams/[id]/page/build-manifest.json +5 -5
  142. package/.next/server/app/exams/[id]/page.js +2 -2
  143. package/.next/server/app/exams/[id]/page.js.nft.json +1 -1
  144. package/.next/server/app/exams/[id]/page_client-reference-manifest.js +1 -1
  145. package/.next/server/app/exams/[id]/print/page/build-manifest.json +5 -5
  146. package/.next/server/app/exams/[id]/print/page.js +2 -2
  147. package/.next/server/app/exams/[id]/print/page.js.nft.json +1 -1
  148. package/.next/server/app/exams/[id]/print/page_client-reference-manifest.js +1 -1
  149. package/.next/server/app/exams/page/build-manifest.json +5 -5
  150. package/.next/server/app/exams/page.js +2 -2
  151. package/.next/server/app/exams/page.js.nft.json +1 -1
  152. package/.next/server/app/exams/page_client-reference-manifest.js +1 -1
  153. package/.next/server/app/favicon.ico/route.js +2 -2
  154. package/.next/server/app/favicon.ico/route.js.nft.json +1 -1
  155. package/.next/server/app/latex-test/page/build-manifest.json +5 -5
  156. package/.next/server/app/latex-test/page.js +2 -2
  157. package/.next/server/app/latex-test/page.js.nft.json +1 -1
  158. package/.next/server/app/latex-test/page_client-reference-manifest.js +1 -1
  159. package/.next/server/app/login/page/build-manifest.json +5 -5
  160. package/.next/server/app/login/page.js +2 -2
  161. package/.next/server/app/login/page.js.nft.json +1 -1
  162. package/.next/server/app/login/page_client-reference-manifest.js +1 -1
  163. package/.next/server/app/manifest.webmanifest/route.js +2 -2
  164. package/.next/server/app/manifest.webmanifest/route.js.nft.json +1 -1
  165. package/.next/server/app/manifest.webmanifest.body +1 -1
  166. package/.next/server/app/notebooks/[id]/add/page/build-manifest.json +5 -5
  167. package/.next/server/app/notebooks/[id]/add/page.js +2 -2
  168. package/.next/server/app/notebooks/[id]/add/page.js.nft.json +1 -1
  169. package/.next/server/app/notebooks/[id]/add/page_client-reference-manifest.js +1 -1
  170. package/.next/server/app/notebooks/[id]/page/build-manifest.json +5 -5
  171. package/.next/server/app/notebooks/[id]/page.js +2 -2
  172. package/.next/server/app/notebooks/[id]/page.js.nft.json +1 -1
  173. package/.next/server/app/notebooks/[id]/page_client-reference-manifest.js +1 -1
  174. package/.next/server/app/notebooks/page/build-manifest.json +5 -5
  175. package/.next/server/app/notebooks/page.js +2 -2
  176. package/.next/server/app/notebooks/page.js.nft.json +1 -1
  177. package/.next/server/app/notebooks/page_client-reference-manifest.js +1 -1
  178. package/.next/server/app/page/build-manifest.json +5 -5
  179. package/.next/server/app/page.js +2 -2
  180. package/.next/server/app/page.js.nft.json +1 -1
  181. package/.next/server/app/page_client-reference-manifest.js +1 -1
  182. package/.next/server/app/practice/page/build-manifest.json +5 -5
  183. package/.next/server/app/practice/page.js +2 -2
  184. package/.next/server/app/practice/page.js.nft.json +1 -1
  185. package/.next/server/app/practice/page_client-reference-manifest.js +1 -1
  186. package/.next/server/app/print-preview/page/build-manifest.json +5 -5
  187. package/.next/server/app/print-preview/page.js +2 -2
  188. package/.next/server/app/print-preview/page.js.nft.json +1 -1
  189. package/.next/server/app/print-preview/page_client-reference-manifest.js +1 -1
  190. package/.next/server/app/register/page/build-manifest.json +5 -5
  191. package/.next/server/app/register/page.js.nft.json +1 -1
  192. package/.next/server/app/register/page_client-reference-manifest.js +1 -1
  193. package/.next/server/app/stats/page/build-manifest.json +5 -5
  194. package/.next/server/app/stats/page.js +2 -2
  195. package/.next/server/app/stats/page.js.nft.json +1 -1
  196. package/.next/server/app/stats/page_client-reference-manifest.js +1 -1
  197. package/.next/server/app/tags/page/build-manifest.json +5 -5
  198. package/.next/server/app/tags/page.js +2 -2
  199. package/.next/server/app/tags/page.js.nft.json +1 -1
  200. package/.next/server/app/tags/page_client-reference-manifest.js +1 -1
  201. package/.next/server/chunks/1jng_app_api_exams_[id]_questions_[questionId]_regenerate_route_actions_1ggead3.js +1 -1
  202. package/.next/server/chunks/1oeh_server_app_api_error-items_[id]_practice-records_route_actions_0z2zuf1.js +1 -1
  203. package/.next/server/chunks/1oeh_server_app_api_error-items_[id]_svg-animation_route_actions_17gckf3.js +1 -1
  204. package/.next/server/chunks/[externals]__04n7qbr._.js +1 -1
  205. package/.next/server/chunks/[externals]__0pot68n._.js +1 -1
  206. package/.next/server/chunks/[externals]__1735khz._.js +1 -1
  207. package/.next/server/chunks/[externals]_assert_1pwe1ri._.js +1 -1
  208. package/.next/server/chunks/[root-of-the-server]__00_hq9v._.js +6 -6
  209. package/.next/server/chunks/[root-of-the-server]__01bzczj._.js +1 -1
  210. package/.next/server/chunks/[root-of-the-server]__02j1w81._.js +1 -1
  211. package/.next/server/chunks/[root-of-the-server]__03nfvnm._.js +1 -1
  212. package/.next/server/chunks/[root-of-the-server]__04tyyvs._.js +1 -1
  213. package/.next/server/chunks/[root-of-the-server]__05s4wut._.js +1 -1
  214. package/.next/server/chunks/[root-of-the-server]__06_nln5._.js +1 -1
  215. package/.next/server/chunks/[root-of-the-server]__06h5afw._.js +1 -1
  216. package/.next/server/chunks/[root-of-the-server]__07jl92a._.js +1 -1
  217. package/.next/server/chunks/[root-of-the-server]__0_t7bbz._.js +1 -1
  218. package/.next/server/chunks/[root-of-the-server]__0akadps._.js +1 -1
  219. package/.next/server/chunks/[root-of-the-server]__0be5c5r._.js +1 -1
  220. package/.next/server/chunks/[root-of-the-server]__0bqawi0._.js +1 -1
  221. package/.next/server/chunks/[root-of-the-server]__0bsw5c9._.js +1 -1
  222. package/.next/server/chunks/[root-of-the-server]__0c59gc3._.js +1 -1
  223. package/.next/server/chunks/[root-of-the-server]__0cmxmwt._.js +1 -1
  224. package/.next/server/chunks/[root-of-the-server]__0d5dpu4._.js +1 -1
  225. package/.next/server/chunks/[root-of-the-server]__0d9ijed._.js +1 -1
  226. package/.next/server/chunks/[root-of-the-server]__0e22a4y._.js +10 -10
  227. package/.next/server/chunks/[root-of-the-server]__0fnyu4s._.js +1 -1
  228. package/.next/server/chunks/[root-of-the-server]__0gp88gz._.js +1 -1
  229. package/.next/server/chunks/[root-of-the-server]__0inxsnu._.js +1 -1
  230. package/.next/server/chunks/[root-of-the-server]__0j5231l._.js +1 -1
  231. package/.next/server/chunks/[root-of-the-server]__0jaawra._.js +1 -1
  232. package/.next/server/chunks/[root-of-the-server]__0k-nf6a._.js +1 -1
  233. package/.next/server/chunks/[root-of-the-server]__0k-p1pj._.js +1 -1
  234. package/.next/server/chunks/[root-of-the-server]__0lrdm1u._.js +1 -1
  235. package/.next/server/chunks/[root-of-the-server]__0lro5a7._.js +1 -1
  236. package/.next/server/chunks/[root-of-the-server]__0m8p-6f._.js +1 -1
  237. package/.next/server/chunks/[root-of-the-server]__0mfjf2y._.js +1 -1
  238. package/.next/server/chunks/[root-of-the-server]__0mqorxb._.js +1 -1
  239. package/.next/server/chunks/[root-of-the-server]__0no6umu._.js +1 -1
  240. package/.next/server/chunks/[root-of-the-server]__0nqbham._.js +1 -1
  241. package/.next/server/chunks/[root-of-the-server]__0o9gtvd._.js +1 -1
  242. package/.next/server/chunks/[root-of-the-server]__0obb4y-._.js +1 -1
  243. package/.next/server/chunks/[root-of-the-server]__0p3u6_q._.js +1 -1
  244. package/.next/server/chunks/[root-of-the-server]__0rk_yxy._.js +3 -3
  245. package/.next/server/chunks/[root-of-the-server]__0rmrkd_._.js +1 -1
  246. package/.next/server/chunks/[root-of-the-server]__0tdibjz._.js +1 -1
  247. package/.next/server/chunks/[root-of-the-server]__0u58zap._.js +1 -1
  248. package/.next/server/chunks/[root-of-the-server]__0vhjihq._.js +1 -1
  249. package/.next/server/chunks/[root-of-the-server]__0vz88er._.js +1 -1
  250. package/.next/server/chunks/[root-of-the-server]__0wf9znr._.js +1 -1
  251. package/.next/server/chunks/[root-of-the-server]__0yc8r2x._.js +1 -1
  252. package/.next/server/chunks/[root-of-the-server]__0zv7jom._.js +1 -1
  253. package/.next/server/chunks/[root-of-the-server]__11_-ncy._.js +1 -1
  254. package/.next/server/chunks/[root-of-the-server]__11_1z7m._.js +1 -1
  255. package/.next/server/chunks/[root-of-the-server]__11n87go._.js +1 -1
  256. package/.next/server/chunks/[root-of-the-server]__11p4ahb._.js +1 -1
  257. package/.next/server/chunks/[root-of-the-server]__122xu-0._.js +9 -9
  258. package/.next/server/chunks/[root-of-the-server]__131taws._.js +1 -1
  259. package/.next/server/chunks/[root-of-the-server]__13ebiit._.js +1 -1
  260. package/.next/server/chunks/[root-of-the-server]__1413v0e._.js +1 -1
  261. package/.next/server/chunks/[root-of-the-server]__14dnbrn._.js +1 -1
  262. package/.next/server/chunks/[root-of-the-server]__14jqm9_._.js +1 -1
  263. package/.next/server/chunks/[root-of-the-server]__152lbaw._.js +1 -1
  264. package/.next/server/chunks/[root-of-the-server]__15tkoe6._.js +1 -1
  265. package/.next/server/chunks/[root-of-the-server]__16begv4._.js +1 -1
  266. package/.next/server/chunks/[root-of-the-server]__17duis5._.js +1 -1
  267. package/.next/server/chunks/[root-of-the-server]__17q3k-v._.js +1 -1
  268. package/.next/server/chunks/[root-of-the-server]__184u6de._.js +1 -1
  269. package/.next/server/chunks/[root-of-the-server]__18atlj8._.js +1 -1
  270. package/.next/server/chunks/[root-of-the-server]__18c7l6u._.js +1 -1
  271. package/.next/server/chunks/[root-of-the-server]__18zrkky._.js +1 -1
  272. package/.next/server/chunks/[root-of-the-server]__19vj8qy._.js +1 -1
  273. package/.next/server/chunks/[root-of-the-server]__1_gkx5x._.js +1 -1
  274. package/.next/server/chunks/[root-of-the-server]__1aaux7e._.js +1 -1
  275. package/.next/server/chunks/[root-of-the-server]__1cceu4b._.js +1 -1
  276. package/.next/server/chunks/[root-of-the-server]__1cn6rlb._.js +1 -1
  277. package/.next/server/chunks/[root-of-the-server]__1csfdxc._.js +1 -1
  278. package/.next/server/chunks/[root-of-the-server]__1ezwxao._.js +1 -1
  279. package/.next/server/chunks/[root-of-the-server]__1g1wi9i._.js +1 -1
  280. package/.next/server/chunks/[root-of-the-server]__1gmc_uw._.js +1 -1
  281. package/.next/server/chunks/[root-of-the-server]__1h09r50._.js +1 -1
  282. package/.next/server/chunks/[root-of-the-server]__1hpwwxw._.js +1 -1
  283. package/.next/server/chunks/[root-of-the-server]__1j6mx-v._.js +1 -1
  284. package/.next/server/chunks/[root-of-the-server]__1jdi-1f._.js +1 -1
  285. package/.next/server/chunks/[root-of-the-server]__1jtd2ar._.js +2 -2
  286. package/.next/server/chunks/[root-of-the-server]__1ju8z29._.js +1 -1
  287. package/.next/server/chunks/[root-of-the-server]__1kpo44g._.js +1 -1
  288. package/.next/server/chunks/[root-of-the-server]__1kqv61m._.js +1 -1
  289. package/.next/server/chunks/[root-of-the-server]__1lct0vi._.js +1 -1
  290. package/.next/server/chunks/[root-of-the-server]__1loecue._.js +1 -1
  291. package/.next/server/chunks/[root-of-the-server]__1m4-ab6._.js +1 -1
  292. package/.next/server/chunks/[root-of-the-server]__1mkpya8._.js +1 -1
  293. package/.next/server/chunks/[root-of-the-server]__1nmtv65._.js +1 -1
  294. package/.next/server/chunks/[root-of-the-server]__1nwf3ua._.js +1 -1
  295. package/.next/server/chunks/[root-of-the-server]__1oup682._.js +1 -1
  296. package/.next/server/chunks/[root-of-the-server]__1p8hw44._.js +1 -1
  297. package/.next/server/chunks/[root-of-the-server]__1pplzr1._.js +1 -1
  298. package/.next/server/chunks/[root-of-the-server]__1rsn804._.js +1 -1
  299. package/.next/server/chunks/[root-of-the-server]__1sdtn83._.js +1 -1
  300. package/.next/server/chunks/[root-of-the-server]__1u-1vx4._.js +1 -1
  301. package/.next/server/chunks/[root-of-the-server]__1v6nwhq._.js +1 -1
  302. package/.next/server/chunks/[root-of-the-server]__1vw740y._.js +9 -9
  303. package/.next/server/chunks/[root-of-the-server]__20465pr._.js +1 -1
  304. package/.next/server/chunks/[root-of-the-server]__207mxv8._.js +1 -1
  305. package/.next/server/chunks/_0-eguqv._.js +1 -1
  306. package/.next/server/chunks/_008zx49._.js +1 -1
  307. package/.next/server/chunks/_011-ll5._.js +1 -1
  308. package/.next/server/chunks/_0389uce._.js +1 -1
  309. package/.next/server/chunks/_0431fxn._.js +1 -1
  310. package/.next/server/chunks/_0_o8yhv._.js +1 -1
  311. package/.next/server/chunks/_0c5hvv3._.js +4 -4
  312. package/.next/server/chunks/_0ekrwj-._.js +6 -6
  313. package/.next/server/chunks/_0frix22._.js +4 -4
  314. package/.next/server/chunks/_0gwg6ba._.js +1 -1
  315. package/.next/server/chunks/_0gxi3zr._.js +1 -1
  316. package/.next/server/chunks/_0lz3t4l._.js +12 -12
  317. package/.next/server/chunks/_0rdo0a4._.js +1 -1
  318. package/.next/server/chunks/_0uxp3uh._.js +1 -1
  319. package/.next/server/chunks/_0x3ltk0._.js +6 -6
  320. package/.next/server/chunks/_12w5k19._.js +1 -1
  321. package/.next/server/chunks/_13ffmxv._.js +1 -1
  322. package/.next/server/chunks/_14tz_k9._.js +1 -1
  323. package/.next/server/chunks/_167vv93._.js +1 -1
  324. package/.next/server/chunks/_16jdov0._.js +1 -1
  325. package/.next/server/chunks/_18amra5._.js +1 -1
  326. package/.next/server/chunks/_1_ns7o3._.js +1 -1
  327. package/.next/server/chunks/_1a1aqmi._.js +1 -1
  328. package/.next/server/chunks/_1a1udq0._.js +1 -1
  329. package/.next/server/chunks/_1b0269x._.js +1 -1
  330. package/.next/server/chunks/_1b7qjlv._.js +1 -1
  331. package/.next/server/chunks/_1be-y66._.js +1 -1
  332. package/.next/server/chunks/_1e1h1f1._.js +1 -1
  333. package/.next/server/chunks/_1ex6ovo._.js +1 -1
  334. package/.next/server/chunks/_1fgb9ve._.js +1 -1
  335. package/.next/server/chunks/_1flar98._.js +1 -1
  336. package/.next/server/chunks/_1m-yyz-._.js +1 -1
  337. package/.next/server/chunks/_1oj6gy_._.js +1 -1
  338. package/.next/server/chunks/_1pvqo-q._.js +1 -1
  339. package/.next/server/chunks/_1z_ujac._.js +1 -1
  340. package/.next/server/chunks/_211va-d._.js +1 -1
  341. package/.next/server/chunks/_next-internal_server_app_api_admin_dashboard_route_actions_1ispso-.js +1 -1
  342. package/.next/server/chunks/_next-internal_server_app_api_admin_users_[id]_detail_route_actions_0oe_wkt.js +1 -1
  343. package/.next/server/chunks/_next-internal_server_app_api_admin_users_route_actions_0q-rtz1.js +1 -1
  344. package/.next/server/chunks/_next-internal_server_app_api_ai_models_route_actions_0w7iwv-.js +1 -1
  345. package/.next/server/chunks/_next-internal_server_app_api_ai_test_route_actions_1p0n1q8.js +1 -1
  346. package/.next/server/chunks/_next-internal_server_app_api_analytics_route_actions_1e0ou17.js +1 -1
  347. package/.next/server/chunks/_next-internal_server_app_api_analyze_route_actions_0lx-23h.js +1 -1
  348. package/.next/server/chunks/_next-internal_server_app_api_auth_[___nextauth]_route_actions_08nexdk.js +1 -1
  349. package/.next/server/chunks/_next-internal_server_app_api_error-items_[id]_figure_route_actions_0adlts0.js +1 -1
  350. package/.next/server/chunks/_next-internal_server_app_api_error-items_[id]_fix-latex_route_actions_0hc7dhx.js +1 -1
  351. package/.next/server/chunks/_next-internal_server_app_api_error-items_[id]_geogebra_route_actions_1-ks4uv.js +1 -1
  352. package/.next/server/chunks/_next-internal_server_app_api_error-items_[id]_image_route_actions_1k9n5yl.js +1 -1
  353. package/.next/server/chunks/_next-internal_server_app_api_error-items_[id]_mastery_route_actions_1l5uan6.js +1 -1
  354. package/.next/server/chunks/_next-internal_server_app_api_error-items_[id]_reanswer_route_actions_1-sw0j2.js +1 -1
  355. package/.next/server/chunks/_next-internal_server_app_api_error-items_[id]_retag_route_actions_0ckki4n.js +1 -1
  356. package/.next/server/chunks/_next-internal_server_app_api_error-items_[id]_route_actions_1kbs4ux.js +1 -1
  357. package/.next/server/chunks/_next-internal_server_app_api_error-items_batch-delete_route_actions_0hiq_1k.js +1 -1
  358. package/.next/server/chunks/_next-internal_server_app_api_error-items_clear_route_actions_14t_6i-.js +1 -1
  359. package/.next/server/chunks/_next-internal_server_app_api_error-items_list_route_actions_032x4ue.js +1 -1
  360. package/.next/server/chunks/_next-internal_server_app_api_error-items_route_actions_1zdvz0p.js +1 -1
  361. package/.next/server/chunks/_next-internal_server_app_api_error-items_similarity_route_actions_1i26if9.js +1 -1
  362. package/.next/server/chunks/_next-internal_server_app_api_exams_[id]_retry_route_actions_1fdi39f.js +1 -1
  363. package/.next/server/chunks/_next-internal_server_app_api_exams_[id]_route_actions_1wuidrq.js +1 -1
  364. package/.next/server/chunks/_next-internal_server_app_api_exams_route_actions_1c_zhtj.js +1 -1
  365. package/.next/server/chunks/_next-internal_server_app_api_export_route_actions_0lpcnjc.js +1 -1
  366. package/.next/server/chunks/_next-internal_server_app_api_geogebra-analyze_route_actions_1xng0_c.js +1 -1
  367. package/.next/server/chunks/_next-internal_server_app_api_health_route_actions_1ryftkb.js +1 -1
  368. package/.next/server/chunks/_next-internal_server_app_api_import_route_actions_20ko04x.js +1 -1
  369. package/.next/server/chunks/_next-internal_server_app_api_logs_frontend_route_actions_0nxepty.js +1 -1
  370. package/.next/server/chunks/_next-internal_server_app_api_notebooks_[id]_retag_route_actions_00su_t8.js +1 -1
  371. package/.next/server/chunks/_next-internal_server_app_api_notebooks_[id]_route_actions_11j3vxg.js +1 -1
  372. package/.next/server/chunks/_next-internal_server_app_api_notebooks_route_actions_02cy45r.js +1 -1
  373. package/.next/server/chunks/_next-internal_server_app_api_openclaw_batch-upload_route_actions_1zz3oen.js +1 -1
  374. package/.next/server/chunks/_next-internal_server_app_api_practice_generate_route_actions_1krr9n_.js +1 -1
  375. package/.next/server/chunks/_next-internal_server_app_api_practice_record_[id]_route_actions_0zreiom.js +1 -1
  376. package/.next/server/chunks/_next-internal_server_app_api_practice_record_route_actions_0py9z__.js +1 -1
  377. package/.next/server/chunks/_next-internal_server_app_api_reanswer_route_actions_04xweh_.js +1 -1
  378. package/.next/server/chunks/_next-internal_server_app_api_register_route_actions_0vlzh_c.js +1 -1
  379. package/.next/server/chunks/_next-internal_server_app_api_register_status_route_actions_0b52_sj.js +1 -1
  380. package/.next/server/chunks/_next-internal_server_app_api_settings_route_actions_1bpm9ac.js +1 -1
  381. package/.next/server/chunks/_next-internal_server_app_api_stats_practice_clear_route_actions_1iz6iz0.js +1 -1
  382. package/.next/server/chunks/_next-internal_server_app_api_stats_practice_route_actions_1tfoxx-.js +1 -1
  383. package/.next/server/chunks/_next-internal_server_app_api_tags_route_actions_1nb9ma2.js +1 -1
  384. package/.next/server/chunks/_next-internal_server_app_api_tags_stats_route_actions_0fmeadc.js +1 -1
  385. package/.next/server/chunks/_next-internal_server_app_api_tags_suggestions_route_actions_1xpolyv.js +1 -1
  386. package/.next/server/chunks/_next-internal_server_app_api_tasks_route_actions_123tq1_.js +1 -1
  387. package/.next/server/chunks/_next-internal_server_app_favicon_ico_route_actions_0g2jjls.js +1 -1
  388. package/.next/server/chunks/_next-internal_server_app_manifest_webmanifest_route_actions_08hcpz0.js +1 -1
  389. package/.next/server/chunks/node_modules_next_1zdbrne._.js +1 -1
  390. package/.next/server/chunks/node_modules_zod_v4_classic_external_1-pw2v2.js +3 -3
  391. package/.next/server/chunks/src_0tzpy5j._.js +1 -1
  392. package/.next/server/chunks/src_lib_ai_prompts_ts_0z36zms._.js +1 -1
  393. package/.next/server/chunks/src_lib_date-time_ts_14chb27._.js +1 -1
  394. package/.next/server/chunks/src_lib_question-deduplication_ts_1p1bik-._.js +1 -1
  395. package/.next/server/chunks/ssr/[externals]_fs_0pplqgc._.js +1 -1
  396. package/.next/server/chunks/ssr/[root-of-the-server]__00gewu3._.js +2 -2
  397. package/.next/server/chunks/ssr/[root-of-the-server]__05f8wbh._.js +1 -1
  398. package/.next/server/chunks/ssr/[root-of-the-server]__0a0nty7._.js +1 -1
  399. package/.next/server/chunks/ssr/[root-of-the-server]__0ax9dog._.js +1 -1
  400. package/.next/server/chunks/ssr/[root-of-the-server]__0b8kewv._.js +1 -1
  401. package/.next/server/chunks/ssr/[root-of-the-server]__0bvtza7._.js +2 -2
  402. package/.next/server/chunks/ssr/[root-of-the-server]__0g_-bym._.js +1 -1
  403. package/.next/server/chunks/ssr/[root-of-the-server]__0gwwr7e._.js +1 -1
  404. package/.next/server/chunks/ssr/[root-of-the-server]__0hzktoi._.js +1 -1
  405. package/.next/server/chunks/ssr/[root-of-the-server]__0icjezr._.js +1 -1
  406. package/.next/server/chunks/ssr/[root-of-the-server]__0koj8h0._.js +1 -1
  407. package/.next/server/chunks/ssr/[root-of-the-server]__0s87xha._.js +1 -1
  408. package/.next/server/chunks/ssr/[root-of-the-server]__0snpjfe._.js +1 -1
  409. package/.next/server/chunks/ssr/[root-of-the-server]__0y_e9do._.js +1 -1
  410. package/.next/server/chunks/ssr/[root-of-the-server]__0ybs_4c._.js +1 -1
  411. package/.next/server/chunks/ssr/[root-of-the-server]__14l7peq._.js +1 -1
  412. package/.next/server/chunks/ssr/[root-of-the-server]__1507q8a._.js +1 -1
  413. package/.next/server/chunks/ssr/[root-of-the-server]__15ppb9j._.js +1 -1
  414. package/.next/server/chunks/ssr/[root-of-the-server]__191jn5n._.js +1 -1
  415. package/.next/server/chunks/ssr/[root-of-the-server]__1f2jx51._.js +2 -2
  416. package/.next/server/chunks/ssr/[root-of-the-server]__1gth76-._.js +1 -1
  417. package/.next/server/chunks/ssr/[root-of-the-server]__1ko_dw5._.js +1 -1
  418. package/.next/server/chunks/ssr/[root-of-the-server]__1l84pks._.js +1 -1
  419. package/.next/server/chunks/ssr/[root-of-the-server]__1m7qw-2._.js +1 -1
  420. package/.next/server/chunks/ssr/[root-of-the-server]__1ma2oml._.js +1 -1
  421. package/.next/server/chunks/ssr/[root-of-the-server]__1o8jotz._.js +1 -1
  422. package/.next/server/chunks/ssr/[root-of-the-server]__1o__w27._.js +1 -1
  423. package/.next/server/chunks/ssr/[root-of-the-server]__1p7f0va._.js +1 -1
  424. package/.next/server/chunks/ssr/[root-of-the-server]__1sg9eoj._.js +1 -1
  425. package/.next/server/chunks/ssr/[root-of-the-server]__1u74hyi._.js +1 -1
  426. package/.next/server/chunks/ssr/[root-of-the-server]__1xsovpr._.js +1 -1
  427. package/.next/server/chunks/ssr/_054yhx9._.js +1 -1
  428. package/.next/server/chunks/ssr/_062gk85._.js +3 -0
  429. package/.next/server/chunks/ssr/_07ls0n_._.js +1 -1
  430. package/.next/server/chunks/ssr/_0i9hwpv._.js +1 -1
  431. package/.next/server/chunks/ssr/_0idg05p._.js +3 -0
  432. package/.next/server/chunks/ssr/_0iqp5hs._.js +1 -1
  433. package/.next/server/chunks/ssr/_0m1-rq-._.js +1 -1
  434. package/.next/server/chunks/ssr/_0mgbe2b._.js +1 -1
  435. package/.next/server/chunks/ssr/_0nv22wt._.js +1 -1
  436. package/.next/server/chunks/ssr/_0rz2_qb._.js +5 -5
  437. package/.next/server/chunks/ssr/_0sbbx9z._.js +2 -2
  438. package/.next/server/chunks/ssr/_0sf1gd9._.js +1 -1
  439. package/.next/server/chunks/ssr/_0uemk57._.js +1 -1
  440. package/.next/server/chunks/ssr/_0zj7dlu._.js +1 -1
  441. package/.next/server/chunks/ssr/_17igtpd._.js +1 -1
  442. package/.next/server/chunks/ssr/_1gu1rou._.js +1 -1
  443. package/.next/server/chunks/ssr/_1jniqsj._.js +1 -1
  444. package/.next/server/chunks/ssr/_1kgnhmo._.js +2 -2
  445. package/.next/server/chunks/ssr/_1lt1lhz._.js +2 -2
  446. package/.next/server/chunks/ssr/_1yeu09q._.js +1 -1
  447. package/.next/server/chunks/ssr/_next-internal_server_app__global-error_page_actions_0zi5s8-.js +1 -1
  448. package/.next/server/chunks/ssr/_next-internal_server_app__not-found_page_actions_0pt47yr.js +1 -1
  449. package/.next/server/chunks/ssr/_next-internal_server_app_admin_page_actions_1mcickz.js +1 -1
  450. package/.next/server/chunks/ssr/_next-internal_server_app_admin_user_[id]_page_actions_0baj8gs.js +1 -1
  451. package/.next/server/chunks/ssr/_next-internal_server_app_error-items_[id]_page_actions_0qla9ak.js +1 -1
  452. package/.next/server/chunks/ssr/_next-internal_server_app_exams_[id]_print_page_actions_0pxdgxq.js +1 -1
  453. package/.next/server/chunks/ssr/_next-internal_server_app_exams_page_actions_0av69f-.js +1 -1
  454. package/.next/server/chunks/ssr/_next-internal_server_app_latex-test_page_actions_19v7ka0.js +1 -1
  455. package/.next/server/chunks/ssr/_next-internal_server_app_login_page_actions_04fnjo0.js +1 -1
  456. package/.next/server/chunks/ssr/_next-internal_server_app_notebooks_[id]_add_page_actions_0275ft2.js +1 -1
  457. package/.next/server/chunks/ssr/_next-internal_server_app_notebooks_[id]_page_actions_1qj0i-7.js +1 -1
  458. package/.next/server/chunks/ssr/_next-internal_server_app_notebooks_page_actions_06x1kdz.js +1 -1
  459. package/.next/server/chunks/ssr/_next-internal_server_app_page_actions_0hhsz1j.js +1 -1
  460. package/.next/server/chunks/ssr/_next-internal_server_app_practice_page_actions_0cy-h5n.js +1 -1
  461. package/.next/server/chunks/ssr/_next-internal_server_app_print-preview_page_actions_1jhaaln.js +1 -1
  462. package/.next/server/chunks/ssr/_next-internal_server_app_register_page_actions_1op-s-x.js +1 -1
  463. package/.next/server/chunks/ssr/_next-internal_server_app_stats_page_actions_1olf1_a.js +1 -1
  464. package/.next/server/chunks/ssr/node_modules_0o2aki7._.js +1 -1
  465. package/.next/server/chunks/ssr/node_modules_1y5ym6h._.js +1 -1
  466. package/.next/server/chunks/ssr/node_modules_next_1lnqo1a._.js +3 -3
  467. package/.next/server/chunks/ssr/node_modules_next_dist_077yo5w._.js +1 -1
  468. package/.next/server/chunks/ssr/node_modules_next_dist_0nkkbfv._.js +2 -2
  469. package/.next/server/chunks/ssr/node_modules_next_dist_1_c-t1n._.js +4 -4
  470. package/.next/server/chunks/ssr/node_modules_next_dist_1v8aef8._.js +1 -1
  471. package/.next/server/chunks/ssr/node_modules_next_dist_client_components_0bew68i._.js +2 -2
  472. package/.next/server/chunks/ssr/node_modules_next_dist_client_components_0wpq8j3._.js +1 -1
  473. package/.next/server/chunks/ssr/node_modules_next_dist_client_components_builtin_forbidden_0symwr9.js +1 -1
  474. package/.next/server/chunks/ssr/node_modules_next_dist_client_components_builtin_global-error_0q-w892.js +1 -1
  475. package/.next/server/chunks/ssr/node_modules_next_dist_client_components_builtin_unauthorized_0l_sp0x.js +1 -1
  476. package/.next/server/chunks/ssr/src_1biegcg._.js +1 -1
  477. package/.next/server/chunks/ssr/src_1gayunq._.js +1 -1
  478. package/.next/server/chunks/ssr/src_1o363ao._.js +1 -1
  479. package/.next/server/chunks/ssr/src_app_admin_page_tsx_0ublbd0._.js +1 -1
  480. package/.next/server/chunks/ssr/src_app_error-items_[id]_page_tsx_04xwwdm._.js +1 -1
  481. package/.next/server/chunks/ssr/src_app_notebooks_[id]_page_tsx_08njm-5._.js +1 -1
  482. package/.next/server/chunks/ssr/src_app_notebooks_page_tsx_1p9src5._.js +1 -1
  483. package/.next/server/chunks/ssr/src_app_page_tsx_1chiuah._.js +1 -1
  484. package/.next/server/chunks/ssr/src_app_practice_page_tsx_10gnx53._.js +1 -1
  485. package/.next/server/chunks/ssr/src_app_tags_page_tsx_1h2vkk4._.js +1 -1
  486. package/.next/server/chunks/ssr/src_components_providers_tsx_09kw-mv._.js +2 -2
  487. package/.next/server/chunks/ssr/src_lib_date-time_ts_0oyqctn._.js +1 -1
  488. package/.next/server/edge/chunks/[root-of-the-server]__1osrt2u._.js +1 -1
  489. package/.next/server/edge/chunks/_1s0wgnu._.js +1 -1
  490. package/.next/server/edge/chunks/node_modules_0g4gi6f._.js +3 -3
  491. package/.next/server/edge/chunks/turbopack-node_modules_next_dist_esm_build_templates_edge-wrapper_1iafar9.js +1 -1
  492. package/.next/server/edge/chunks/turbopack-node_modules_next_dist_esm_build_templates_edge-wrapper_1x1n1fx.js +1 -1
  493. package/.next/server/instrumentation.js +2 -2
  494. package/.next/server/middleware-build-manifest.js +8 -8
  495. package/.next/server/middleware-manifest.json +7 -7
  496. package/.next/server/pages/500.html +1 -1
  497. package/.next/server/server-reference-manifest.js +1 -1
  498. package/.next/server/server-reference-manifest.json +1 -1
  499. package/.next/static/{xZpf28Jr6w9NoYOlVaWKI → 678uJSzOSzePaLyv5hUv0}/_clientMiddlewareManifest.js +2 -2
  500. package/.next/static/chunks/02d-8f2qj7j3j.js +1 -0
  501. package/.next/static/chunks/02t7qqptint2p.js +1 -0
  502. package/.next/static/chunks/090a6irxe0c6j.js +1 -0
  503. package/.next/static/chunks/0bhxyq7e2eqjc.js +5 -0
  504. package/.next/static/chunks/0if-vqkhyn-zc.js +1 -0
  505. package/.next/static/chunks/0jf31atbtr1mv.js +1 -0
  506. package/.next/static/chunks/0te6mr86gdyyi.js +191 -0
  507. package/.next/static/chunks/0vgthy7v615hq.js +1 -0
  508. package/.next/static/chunks/1e5n4cprhwujv.js +1 -0
  509. package/.next/static/chunks/1edfvwc5_eck-.js +31 -0
  510. package/.next/static/chunks/1f0u19gh5_49z.js +1 -0
  511. package/.next/static/chunks/1fdj59ys-pend.js +1 -0
  512. package/.next/static/chunks/1kerqdluzq2l0.js +1 -0
  513. package/.next/static/chunks/1r4lwlvm7m53v.js +1 -0
  514. package/.next/static/chunks/1rz1bokv9edzr.js +1 -0
  515. package/.next/static/chunks/1s-d67d-yroyw.js +1 -0
  516. package/.next/static/chunks/1tw5_upsy-qj_.js +22 -0
  517. package/.next/static/chunks/1w1xvldfmcs67.js +6 -0
  518. package/.next/static/chunks/1zdof8ylzqm8w.js +1 -0
  519. package/.next/static/chunks/2-k1hjh6ff6y4.js +1 -0
  520. package/.next/static/chunks/21qpve5q3mjly.js +1 -0
  521. package/.next/static/chunks/21v32ctwcoxqt.js +1 -0
  522. package/.next/static/chunks/27-t289uq6_ju.js +3 -0
  523. package/.next/static/chunks/293-te2b34thz.js +1 -0
  524. package/.next/static/chunks/2dgleoh5fbs83.js +1 -0
  525. package/.next/static/chunks/2di_nd6djcxwu.js +1 -0
  526. package/.next/static/chunks/2mk03owifu2m1.js +33 -0
  527. package/.next/static/chunks/2qza4p5d9fz_2.js +1 -0
  528. package/.next/static/chunks/2s4c8fcrdnew4.js +1 -0
  529. package/.next/static/chunks/2zdqnkem9n6a9.js +1 -0
  530. package/.next/static/chunks/3-wm04s--suy5.js +1 -0
  531. package/.next/static/chunks/33t46atd3n2zd.js +1 -0
  532. package/.next/static/chunks/37yx4gh09tzwc.js +1 -0
  533. package/.next/static/chunks/3gwb465dhjxo9.js +1 -0
  534. package/.next/static/chunks/3hkgw-uib19xl.js +1 -0
  535. package/.next/static/chunks/{130ch9mnvb6mp.css → 3n-yabfsiog4i.css} +1 -1
  536. package/.next/static/chunks/3umldi5zknsyi.js +1 -0
  537. package/.next/static/chunks/turbopack-1yjxh4vceobdr.js +1 -0
  538. package/LICENSE +22 -0
  539. package/package.json +3 -2
  540. package/prisma/seed.db +0 -0
  541. package/public/icons/apple-touch-icon.png +0 -0
  542. package/public/icons/icon-192.png +0 -0
  543. package/public/icons/icon-512.png +0 -0
  544. package/public/icons/icon-maskable-512.png +0 -0
  545. package/public/offline.html +61 -0
  546. package/public/sw.js +84 -0
  547. package/.next/server/chunks/ssr/_12c20v5._.js +0 -3
  548. package/.next/server/chunks/ssr/_1filpif._.js +0 -3
  549. package/.next/static/chunks/00pn0o7lymln6.js +0 -1
  550. package/.next/static/chunks/02521degnqmf0.js +0 -1
  551. package/.next/static/chunks/0_w084ms_lq25.js +0 -22
  552. package/.next/static/chunks/0dzfsm6h13fyr.js +0 -1
  553. package/.next/static/chunks/0ehjiuuxbbhq9.js +0 -1
  554. package/.next/static/chunks/0iq53qkw5hvrs.js +0 -1
  555. package/.next/static/chunks/0m81l71kojx8j.js +0 -1
  556. package/.next/static/chunks/0nckb2-62ooyq.js +0 -1
  557. package/.next/static/chunks/0snej-v5yglxr.js +0 -1
  558. package/.next/static/chunks/1-7k9gbbjkcml.js +0 -1
  559. package/.next/static/chunks/17wdtw8hml2n6.js +0 -191
  560. package/.next/static/chunks/1cd32rtomdngh.js +0 -1
  561. package/.next/static/chunks/1io3-cth_2-cd.js +0 -1
  562. package/.next/static/chunks/1oiuiyv1cv06v.js +0 -31
  563. package/.next/static/chunks/1t4-pobw0y5cf.js +0 -1
  564. package/.next/static/chunks/1xg811762s1p1.js +0 -1
  565. package/.next/static/chunks/1z_5sj1wqi06v.js +0 -1
  566. package/.next/static/chunks/2a0kgntckcbvf.js +0 -1
  567. package/.next/static/chunks/2dlme2fdlkms6.js +0 -1
  568. package/.next/static/chunks/2f37cahijtel1.js +0 -1
  569. package/.next/static/chunks/2h-exsnhkfnb8.js +0 -1
  570. package/.next/static/chunks/2pmzqbg-qabof.js +0 -1
  571. package/.next/static/chunks/2rmhba08h4qqo.js +0 -33
  572. package/.next/static/chunks/2s07soqug65hc.js +0 -1
  573. package/.next/static/chunks/2vm3br71ud51j.js +0 -1
  574. package/.next/static/chunks/2w2uo9jjxt-re.js +0 -1
  575. package/.next/static/chunks/2yl8a-gxngbuq.js +0 -1
  576. package/.next/static/chunks/32bl-oqw9oso0.js +0 -1
  577. package/.next/static/chunks/35cov9g4cgt-v.js +0 -1
  578. package/.next/static/chunks/3b-g5_r9nto3s.js +0 -6
  579. package/.next/static/chunks/3g1rm2suowncy.js +0 -3
  580. package/.next/static/chunks/3helovsg02qr4.js +0 -1
  581. package/.next/static/chunks/3jta6jrk-jubq.js +0 -1
  582. package/.next/static/chunks/3yhf6xyypekz6.js +0 -1
  583. package/.next/static/chunks/3z9gc_02gl8n9.js +0 -1
  584. package/.next/static/chunks/427wg73nuzpiz.js +0 -5
  585. package/.next/static/chunks/turbopack-1-0r7_puvz3eq.js +0 -1
  586. /package/.next/static/{xZpf28Jr6w9NoYOlVaWKI → 678uJSzOSzePaLyv5hUv0}/_buildManifest.js +0 -0
  587. /package/.next/static/{xZpf28Jr6w9NoYOlVaWKI → 678uJSzOSzePaLyv5hUv0}/_ssgManifest.js +0 -0
@@ -1,191 +0,0 @@
1
- (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,1661,e=>{"use strict";var s=e.i(18050),t=e.i(11110),a=e.i(17255),r=e.i(15519),i=e.i(57688),n=e.i(22016),l=e.i(18566),o=e.i(17923),c=e.i(10980),d=e.i(78583),m=e.i(75254);let u=(0,m.default)("log-out",[["path",{d:"m16 17 5-5-5-5",key:"1bji2h"}],["path",{d:"M21 12H9",key:"dn1m92"}],["path",{d:"M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4",key:"1uf3rs"}]]),p=(0,m.default)("circle-plus",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M8 12h8",key:"1wcyev"}],["path",{d:"M12 8v8",key:"napkw2"}]]),x=(0,m.default)("shield",[["path",{d:"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z",key:"oel41y"}]]),h=(0,m.default)("tags",[["path",{d:"M13.172 2a2 2 0 0 1 1.414.586l6.71 6.71a2.4 2.4 0 0 1 0 3.408l-4.592 4.592a2.4 2.4 0 0 1-3.408 0l-6.71-6.71A2 2 0 0 1 6 9.172V3a1 1 0 0 1 1-1z",key:"16rjxf"}],["path",{d:"M2 7v6.172a2 2 0 0 0 .586 1.414l6.71 6.71a2.4 2.4 0 0 0 3.191.193",key:"178nd4"}],["circle",{cx:"10.5",cy:"6.5",r:".5",fill:"currentColor",key:"12ikhr"}]]);var g=e.i(71645),f=e.i(19455),j=e.i(76639),v=e.i(93479),y=e.i(10204),b=e.i(67489),N=e.i(77572);let w=(0,m.default)("settings",[["path",{d:"M9.671 4.136a2.34 2.34 0 0 1 4.659 0 2.34 2.34 0 0 0 3.319 1.915 2.34 2.34 0 0 1 2.33 4.033 2.34 2.34 0 0 0 0 3.831 2.34 2.34 0 0 1-2.33 4.033 2.34 2.34 0 0 0-3.319 1.915 2.34 2.34 0 0 1-4.659 0 2.34 2.34 0 0 0-3.32-1.915 2.34 2.34 0 0 1-2.33-4.033 2.34 2.34 0 0 0 0-3.831A2.34 2.34 0 0 1 6.35 6.051a2.34 2.34 0 0 0 3.319-1.915",key:"1i5ecw"}],["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}]]);var k=e.i(27612),S=e.i(31278);let C=(0,m.default)("triangle-alert",[["path",{d:"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3",key:"wmoenq"}],["path",{d:"M12 9v4",key:"juzpu7"}],["path",{d:"M12 17h.01",key:"p32p05"}]]);var I=e.i(86536),T=e.i(77705),L=e.i(63639),E=e.i(84614);let z=(0,m.default)("bot",[["path",{d:"M12 8V4H8",key:"hb8ula"}],["rect",{width:"16",height:"12",x:"4",y:"8",rx:"2",key:"enze0r"}],["path",{d:"M2 14h2",key:"vft8re"}],["path",{d:"M20 14h2",key:"4cs60a"}],["path",{d:"M15 13v2",key:"1xurst"}],["path",{d:"M9 13v2",key:"rq6x2g"}]]);var A=e.i(16715),D=e.i(7233);let M=(0,m.default)("zap",[["path",{d:"M4 14a1 1 0 0 1-.78-1.63l9.9-10.2a.5.5 0 0 1 .86.46l-1.92 6.02A1 1 0 0 0 13 10h7a1 1 0 0 1 .78 1.63l-9.9 10.2a.5.5 0 0 1-.86-.46l1.92-6.02A1 1 0 0 0 11 14z",key:"1xq2db"}]]),R=(0,m.default)("circle-check",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m9 12 2 2 4-4",key:"dzmm74"}]]);var P=e.i(73884),_=e.i(40160);let U=(0,m.default)("upload",[["path",{d:"M12 3v12",key:"1x0j5s"}],["path",{d:"m17 8-5-5-5 5",key:"7q97r8"}],["path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4",key:"ih7n3h"}]]);var K=e.i(30691),B=e.i(87486),F=e.i(81140),O=e.i(20783),$=e.i(30030),q=e.i(69340),V=e.i(99682),H=e.i(35804);e.i(74080);var X=Symbol("radix.slottable");function W(e){return g.isValidElement(e)&&"function"==typeof e.type&&"__radixId"in e.type&&e.type.__radixId===X}var Y=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"].reduce((e,t)=>{var a,r;let i,n,l,o=(r=a=`Primitive.${t}`,(i=g.forwardRef((e,s)=>{let{children:t,...a}=e;if(g.isValidElement(t)){var r;let e,i,n=(r=t,(i=(e=Object.getOwnPropertyDescriptor(r.props,"ref")?.get)&&"isReactWarning"in e&&e.isReactWarning)?r.ref:(i=(e=Object.getOwnPropertyDescriptor(r,"ref")?.get)&&"isReactWarning"in e&&e.isReactWarning)?r.props.ref:r.props.ref||r.ref),l=function(e,s){let t={...s};for(let a in s){let r=e[a],i=s[a];/^on[A-Z]/.test(a)?r&&i?t[a]=(...e)=>{let s=i(...e);return r(...e),s}:r&&(t[a]=r):"style"===a?t[a]={...r,...i}:"className"===a&&(t[a]=[r,i].filter(Boolean).join(" "))}return{...e,...t}}(a,t.props);return t.type!==g.Fragment&&(l.ref=s?(0,O.composeRefs)(s,n):n),g.cloneElement(t,l)}return g.Children.count(t)>1?g.Children.only(null):null})).displayName=`${r}.SlotClone`,n=i,(l=g.forwardRef((e,t)=>{let{children:a,...r}=e,i=g.Children.toArray(a),l=i.find(W);if(l){let e=l.props.children,a=i.map(s=>s!==l?s:g.Children.count(e)>1?g.Children.only(null):g.isValidElement(e)?e.props.children:null);return(0,s.jsx)(n,{...r,ref:t,children:g.isValidElement(e)?g.cloneElement(e,void 0,a):null})}return(0,s.jsx)(n,{...r,ref:t,children:a})})).displayName=`${a}.Slot`,l),c=g.forwardRef((e,a)=>{let{asChild:r,...i}=e;return"u">typeof window&&(window[Symbol.for("radix-ui")]=!0),(0,s.jsx)(r?o:t,{...i,ref:a})});return c.displayName=`Primitive.${t}`,{...e,[t]:c}},{}),Z="Switch",[G,J]=(0,$.createContextScope)(Z),[Q,ee]=G(Z),es=g.forwardRef((e,t)=>{let{__scopeSwitch:a,name:r,checked:i,defaultChecked:n,required:l,disabled:o,value:c="on",onCheckedChange:d,form:m,...u}=e,[p,x]=g.useState(null),h=(0,O.useComposedRefs)(t,e=>x(e)),f=g.useRef(!1),j=!p||m||!!p.closest("form"),[v,y]=(0,q.useControllableState)({prop:i,defaultProp:n??!1,onChange:d,caller:Z});return(0,s.jsxs)(Q,{scope:a,checked:v,disabled:o,children:[(0,s.jsx)(Y.button,{type:"button",role:"switch","aria-checked":v,"aria-required":l,"data-state":ei(v),"data-disabled":o?"":void 0,disabled:o,value:c,...u,ref:h,onClick:(0,F.composeEventHandlers)(e.onClick,e=>{y(e=>!e),j&&(f.current=e.isPropagationStopped(),f.current||e.stopPropagation())})}),j&&(0,s.jsx)(er,{control:p,bubbles:!f.current,name:r,value:c,checked:v,required:l,disabled:o,form:m,style:{transform:"translateX(-100%)"}})]})});es.displayName=Z;var et="SwitchThumb",ea=g.forwardRef((e,t)=>{let{__scopeSwitch:a,...r}=e,i=ee(et,a);return(0,s.jsx)(Y.span,{"data-state":ei(i.checked),"data-disabled":i.disabled?"":void 0,...r,ref:t})});ea.displayName=et;var er=g.forwardRef(({__scopeSwitch:e,control:t,checked:a,bubbles:r=!0,...i},n)=>{let l=g.useRef(null),o=(0,O.useComposedRefs)(l,n),c=(0,V.usePrevious)(a),d=(0,H.useSize)(t);return g.useEffect(()=>{let e=l.current;if(!e)return;let s=Object.getOwnPropertyDescriptor(window.HTMLInputElement.prototype,"checked").set;if(c!==a&&s){let t=new Event("click",{bubbles:r});s.call(e,a),e.dispatchEvent(t)}},[c,a,r]),(0,s.jsx)("input",{type:"checkbox","aria-hidden":!0,defaultChecked:a,...i,tabIndex:-1,ref:o,style:{...i.style,...d,position:"absolute",pointerEvents:"none",opacity:0,margin:0}})});function ei(e){return e?"checked":"unchecked"}er.displayName="SwitchBubbleInput";var en=e.i(75157);let el=g.forwardRef(({className:e,...t},a)=>(0,s.jsx)(es,{className:(0,en.cn)("peer inline-flex h-5 w-9 shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent shadow-sm transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=unchecked]:bg-input",e),...t,ref:a,children:(0,s.jsx)(ea,{className:(0,en.cn)("pointer-events-none block h-4 w-4 rounded-full bg-background shadow-lg ring-0 transition-transform data-[state=checked]:translate-x-4 data-[state=unchecked]:translate-x-0")})}));el.displayName=es.displayName;let eo=g.forwardRef(({className:e,...t},a)=>(0,s.jsx)("div",{className:"relative w-full overflow-auto",children:(0,s.jsx)("table",{ref:a,className:(0,en.cn)("w-full caption-bottom text-sm",e),...t})}));eo.displayName="Table";let ec=g.forwardRef(({className:e,...t},a)=>(0,s.jsx)("thead",{ref:a,className:(0,en.cn)("[&_tr]:border-b",e),...t}));ec.displayName="TableHeader";let ed=g.forwardRef(({className:e,...t},a)=>(0,s.jsx)("tbody",{ref:a,className:(0,en.cn)("[&_tr:last-child]:border-0",e),...t}));ed.displayName="TableBody",g.forwardRef(({className:e,...t},a)=>(0,s.jsx)("tfoot",{ref:a,className:(0,en.cn)("border-t bg-muted/50 font-medium [&>tr]:last:border-b-0",e),...t})).displayName="TableFooter";let em=g.forwardRef(({className:e,...t},a)=>(0,s.jsx)("tr",{ref:a,className:(0,en.cn)("border-b transition-colors hover:bg-muted/50 data-[state=selected]:bg-muted",e),...t}));em.displayName="TableRow";let eu=g.forwardRef(({className:e,...t},a)=>(0,s.jsx)("th",{ref:a,className:(0,en.cn)("h-12 px-4 text-left align-middle font-medium text-muted-foreground [&:has([role=checkbox])]:pr-0",e),...t}));eu.displayName="TableHead";let ep=g.forwardRef(({className:e,...t},a)=>(0,s.jsx)("td",{ref:a,className:(0,en.cn)("p-4 align-middle [&:has([role=checkbox])]:pr-0",e),...t}));ep.displayName="TableCell",g.forwardRef(({className:e,...t},a)=>(0,s.jsx)("caption",{ref:a,className:(0,en.cn)("mt-4 text-sm text-muted-foreground",e),...t})).displayName="TableCaption";let ex=(0,m.default)("ban",[["path",{d:"M4.929 4.929 19.07 19.071",key:"196cmz"}],["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}]]);var eh=e.i(69638),eg=e.i(41931),ef=e.i(94114);function ej(){let{timeZone:e}=(0,r.useTimeZone)(),{data:i}=(0,a.useSession)(),{t:n,language:l}=(0,t.useLanguage)(),[o,c]=(0,g.useState)([]),[d,m]=(0,g.useState)(!0),[u,p]=(0,g.useState)(!0),[x,h]=(0,g.useState)(!1);(0,g.useEffect)(()=>{b(),j()},[]);let j=async()=>{try{let e=await eg.apiClient.get("/api/settings");p(!1!==e.allowRegistration)}catch(e){console.error("Failed to fetch config",e)}},v=async e=>{h(!0);try{await eg.apiClient.post("/api/settings",{allowRegistration:e}),p(e)}catch(e){console.error("Failed to update registration setting",e),ef.toast.error(n.common.error)}finally{h(!1)}},b=async()=>{m(!0);try{let e=await eg.apiClient.get("/api/admin/users");c(e)}catch(e){console.error("Failed to fetch users",e)}finally{m(!1)}},N=async e=>{let s=e.isActive?n.admin.confirmDisable:n.admin.confirmEnable;if(await (0,ef.confirmDialog)(s))try{await eg.apiClient.patch(`/api/admin/users/${e.id}`,{isActive:!e.isActive}),b()}catch(e){console.error("Failed to update user status",e),ef.toast.error(n.common.error)}},w=async e=>{if(await (0,ef.confirmDialog)(n.admin.confirmDelete,{destructive:!0}))try{await eg.apiClient.delete(`/api/admin/users/${e.id}`),b()}catch(s){console.error("Failed to delete user",s);let e=s.data?.message||n.common.error;ef.toast.error(e)}};return d?(0,s.jsx)("div",{className:"flex justify-center py-8",children:(0,s.jsx)(S.Loader2,{className:"h-8 w-8 animate-spin text-muted-foreground"})}):(0,s.jsxs)("div",{className:"space-y-4",children:[(0,s.jsxs)("div",{className:"flex items-center justify-between p-4 border rounded-lg bg-muted/30",children:[(0,s.jsxs)("div",{className:"space-y-0.5",children:[(0,s.jsx)(y.Label,{className:"text-base",children:n.admin?.allowRegistration||"Allow New Registrations"}),(0,s.jsx)("p",{className:"text-sm text-muted-foreground",children:n.admin?.allowRegistrationDesc||"When disabled, new users cannot register"})]}),(0,s.jsxs)("div",{className:"flex items-center gap-2",children:[x&&(0,s.jsx)(S.Loader2,{className:"h-4 w-4 animate-spin"}),(0,s.jsx)(el,{checked:u,onCheckedChange:v,disabled:x})]})]}),(0,s.jsx)("div",{className:"sm:hidden space-y-3",children:o.map(t=>(0,s.jsxs)("div",{className:"border rounded-lg p-4 bg-card space-y-3",children:[(0,s.jsxs)("div",{className:"flex justify-between items-start",children:[(0,s.jsxs)("div",{children:[(0,s.jsx)("div",{className:"font-medium",children:t.name||"N/A"}),(0,s.jsx)("div",{className:"text-sm text-muted-foreground",children:t.email})]}),(0,s.jsx)(B.Badge,{variant:"admin"===t.role?"default":"secondary",children:"admin"===t.role?n.admin.admin:n.admin.user})]}),(0,s.jsxs)("div",{className:"flex justify-between text-sm",children:[(0,s.jsxs)("div",{className:"text-muted-foreground",children:[n.admin.errors,": ",t._count.errorItems," | ",n.admin.practiceCount,": ",t._count.practiceRecords]}),(0,s.jsx)(B.Badge,{variant:t.isActive?"default":"destructive",className:"text-xs",children:t.isActive?n.admin.active:n.admin.disabled})]}),(0,s.jsxs)("div",{className:"flex justify-between items-center pt-2 border-t",children:[(0,s.jsx)("div",{className:"text-xs text-muted-foreground",children:(0,K.formatDateTime)(t.createdAt,"yyyy-MM-dd",e)}),(0,s.jsxs)("div",{className:"flex gap-2",children:[(0,s.jsx)(f.Button,{variant:"ghost",size:"sm",onClick:()=>N(t),disabled:t.id===(i?.user).id,children:t.isActive?(0,s.jsx)(ex,{className:"h-4 w-4 text-orange-500"}):(0,s.jsx)(eh.CheckCircle,{className:"h-4 w-4 text-green-500"})}),(0,s.jsx)(f.Button,{variant:"ghost",size:"sm",onClick:()=>w(t),disabled:t.id===(i?.user).id,children:(0,s.jsx)(k.Trash2,{className:"h-4 w-4 text-destructive"})})]})]})]},t.id))}),(0,s.jsx)("div",{className:"hidden sm:block border rounded-lg overflow-hidden",children:(0,s.jsxs)(eo,{children:[(0,s.jsx)(ec,{children:(0,s.jsxs)(em,{children:[(0,s.jsx)(eu,{children:n.admin.nameEmail}),(0,s.jsx)(eu,{children:n.admin.role}),(0,s.jsx)(eu,{children:n.admin.stats}),(0,s.jsx)(eu,{children:n.admin.createdAt}),(0,s.jsx)(eu,{children:n.admin.status}),(0,s.jsx)(eu,{className:"text-right",children:n.admin.actions})]})}),(0,s.jsx)(ed,{children:o.map(t=>(0,s.jsxs)(em,{children:[(0,s.jsxs)(ep,{children:[(0,s.jsx)("div",{className:"font-medium",children:t.name||"N/A"}),(0,s.jsx)("div",{className:"text-sm text-muted-foreground",children:t.email})]}),(0,s.jsx)(ep,{children:(0,s.jsx)(B.Badge,{variant:"admin"===t.role?"default":"secondary",children:"admin"===t.role?n.admin.admin:n.admin.user})}),(0,s.jsxs)(ep,{children:[(0,s.jsxs)("div",{className:"text-sm",children:[n.admin.errors,": ",t._count.errorItems]}),(0,s.jsxs)("div",{className:"text-sm",children:[n.admin.practiceCount,": ",t._count.practiceRecords]})]}),(0,s.jsx)(ep,{children:(0,K.formatDateTime)(t.createdAt,"yyyy-MM-dd",e)}),(0,s.jsx)(ep,{children:(0,s.jsx)(B.Badge,{variant:t.isActive?"default":"destructive",children:t.isActive?n.admin.active:n.admin.disabled})}),(0,s.jsxs)(ep,{className:"text-right space-x-2",children:[(0,s.jsx)(f.Button,{variant:"ghost",size:"sm",onClick:()=>N(t),disabled:t.id===(i?.user).id,title:t.isActive?n.admin.disable:n.admin.enable,children:t.isActive?(0,s.jsx)(ex,{className:"h-4 w-4 text-orange-500"}):(0,s.jsx)(eh.CheckCircle,{className:"h-4 w-4 text-green-500"})}),(0,s.jsx)(f.Button,{variant:"ghost",size:"sm",onClick:()=>w(t),disabled:t.id===(i?.user).id,title:n.admin.delete,children:(0,s.jsx)(k.Trash2,{className:"h-4 w-4 text-destructive"})})]})]},t.id))})]})})]})}var ev=e.i(1276);let ey={minimax:{name:"MiniMax",baseUrl:"https://api.minimax.cn/v1",model:"MiniMax-M3.1-Flash",envPrefix:"MINIMAX",consoleUrl:"https://platform.minimax.cn"},glm:{name:"智谱 GLM",baseUrl:"https://open.bigmodel.cn/api/paas/v4",model:"glm-5.3-flash",envPrefix:"GLM",consoleUrl:"https://open.bigmodel.cn"},deepseek:{name:"DeepSeek",baseUrl:"https://api.deepseek.com",model:"deepseek-flash",envPrefix:"DEEPSEEK",consoleUrl:"https://platform.deepseek.com"},kimi:{name:"Kimi",baseUrl:"https://api.moonshot.cn/v1",model:"kimi-k3",envPrefix:"KIMI",consoleUrl:"https://platform.kimi.com"}},eb=Object.keys(ey);function eN(e){return"string"==typeof e&&Object.prototype.hasOwnProperty.call(ey,e)}function ew({provider:e,apiKey:a,baseUrl:r,currentModel:i,onModelChange:n}){let{t:l}=(0,t.useLanguage)(),[o,c]=(0,g.useState)([]),[d,m]=(0,g.useState)(!1),[u,p]=(0,g.useState)(null),[x,h]=(0,g.useState)(i||""),[j,N]=(0,g.useState)(!1);(0,g.useEffect)(()=>{h(i||"")},[i]);let w=async()=>{if(!a)return void p(l.modelSelector?.enterApiKeyFirst||"Please enter API Key first");m(!0),p(null);try{let s=await eg.apiClient.post("/api/ai/models",{provider:e,apiKey:a,...r&&{baseUrl:r}});if("error"in s&&"string"==typeof s.error){p(s.error),N(!0),c([]);return}c(s.models),0===s.models.length&&(p(l.modelSelector?.noVisionModel||"No vision model found, please enter manually"),N(!0))}catch(e){console.error("Failed to fetch models:",e),p((e?.message||l.modelSelector?.fetchFailed||"Failed to fetch models")+(l.modelSelector?.enterManually||", please enter manually")),N(!0)}finally{m(!1)}};return(0,s.jsxs)("div",{className:"space-y-2",children:[(0,s.jsxs)("div",{className:"flex items-center gap-2",children:[(0,s.jsx)(y.Label,{className:"flex-1",children:l.modelSelector?.modelName||"Model Name"}),(0,s.jsx)(f.Button,{type:"button",variant:"outline",size:"sm",onClick:w,disabled:d||!a,children:d?(0,s.jsx)(S.Loader2,{className:"h-3 w-3 animate-spin"}):(0,s.jsx)(A.RefreshCw,{className:"h-3 w-3"})})]}),u&&(0,s.jsx)("p",{className:"text-xs text-yellow-600",children:u}),j||0===o.length?(0,s.jsxs)("div",{className:"space-y-2",children:[(0,s.jsx)(v.Input,{value:x,onChange:e=>{var s;h(s=e.target.value),n(s)},placeholder:eN(e)?ey[e].model:"openai"===e?"gpt-6.1-sol":"gemini-1.5-flash"}),o.length>0&&(0,s.jsx)(f.Button,{type:"button",variant:"link",size:"sm",className:"h-auto p-0 text-xs",onClick:()=>N(!1),children:l.modelSelector?.selectFromList||"Select from List"})]}):(0,s.jsx)("div",{className:"space-y-2",children:(0,s.jsxs)(b.Select,{value:i,onValueChange:e=>{"_custom"===e?N(!0):(N(!1),h(e),n(e))},children:[(0,s.jsx)(b.SelectTrigger,{children:(0,s.jsx)(b.SelectValue,{placeholder:l.modelSelector?.selectModel||"Select Model"})}),(0,s.jsxs)(b.SelectContent,{children:[o.map(e=>(0,s.jsxs)(b.SelectItem,{value:e.id,children:[e.name,e.owned_by&&` (${e.owned_by})`]},e.id)),(0,s.jsx)(b.SelectItem,{value:"_custom",children:l.modelSelector?.customInput||"Custom Input..."})]})]})})]})}var ek=e.i(24687);let eS=`请参考《高思学校竞赛数学导引》(每讲分兴趣篇、拓展篇、超越篇,题目左侧标 1~5 颗星)的星级标准,结合题目所在年级评定难度:
2
- - 1 星:课本基础题,直接套用概念、公式或简单计算即可(相当于兴趣篇前几题)。
3
- - 2 星:校内拔高题,需要两三步推理或简单综合(相当于兴趣篇后几题)。
4
- - 3 星:常规奥数题,小升初、杯赛常见难度,需要掌握该专题的典型方法(相当于拓展篇)。
5
- - 4 星:较难奥数题,需要构造、分类讨论、转化或多种方法综合(相当于拓展篇末题、超越篇前几题)。
6
- - 5 星:竞赛压轴题,集训队水平,思路巧妙、步骤长(相当于超越篇难题)。
7
- 非数学学科按同样的 1~5 级划分:1 星为基础识记,3 星为综合应用,5 星为竞赛或压轴难度。`,eC=`- 输出一个完整的 <svg> 元素,包含 xmlns="http://www.w3.org/2000/svg" 和 viewBox(建议宽 400~600),不要用 Markdown 代码块包裹。
8
- - 白色背景、黑色线条(stroke="#000",线宽 1.5~2),需要区分的区域可用浅灰填充;不要使用彩色装饰。
9
- - 按原图比例和相对位置绘制,保留所有标注:顶点字母、数字、长度、角度、单位、箭头和虚线等,文字用 <text>(font-size 14~18)。
10
- - 只使用基本图形元素:line、polyline、polygon、rect、circle、ellipse、path、text、g、defs、marker。
11
- - 严禁使用 <image>、<script>、<foreignObject>、外部链接、外部字体或事件属性。`,eI=String.raw`- 行内公式用 $...$,独立公式用 $$...$$;不要用 \(...\) 或 \[...\],每个 $ 必须成对出现。
12
- - 所有 LaTeX 命令(如 \frac、\sqrt、\times、\angle)都必须写在 $...$ 内,公式外不能出现反斜杠命令。
13
- - 只使用 KaTeX 支持的命令和环境:方程组用 \begin{cases}...\end{cases},多行推导用 \begin{aligned}...\end{aligned}(放在 $$...$$ 中),不要用 align、eqnarray、\newcommand、\usepackage、\label、\tag 等。
14
- - 大括号 {} 必须成对,\left 与 \right 必须成对,\begin{...} 与 \end{...} 必须对应。
15
- - 公式中的中文写在 \text{...} 里,或放到公式外;百分号写成 \%,美元符号写成 \$。
16
- - 反斜杠只写一个(\frac),不要写成 \\frac;换行符 \\ 只能用在 cases、aligned 等环境里。`,eT=`【角色与核心任务 (ROLE AND CORE TASK)】
17
- 你是一位世界顶尖的、经验丰富的、专业的跨学科考试分析专家(Interdisciplinary Exam Analysis Expert)。你的核心任务是极致准确地分析用户提供的考试题目图片,全面理解所有文本、图表和隐含约束,并提供一个完整、高度结构化且专业的解决方案。
18
-
19
- {{language_instruction}}
20
-
21
- 【核心输出要求 (OUTPUT REQUIREMENTS)】
22
- 你的响应输出**必须严格遵循以下自定义标签格式**。**严禁**使用 JSON 或 Markdown 代码块。**严禁**对 LaTeX 公式中的反斜杠进行二次转义(如 "\\frac" 是错误的,必须是 "\frac")。
23
-
24
- 请严格按照以下结构输出内容:
25
-
26
- <subject>
27
- 在此处填写学科,必须是以下之一:"数学", "物理", "化学", "生物", "英语", "语文", "历史", "地理", "政治", "其他"。
28
- </subject>
29
-
30
- <knowledge_points>
31
- 在此处填写知识点,使用逗号分隔,例如:知识点1, 知识点2, 知识点3
32
- </knowledge_points>
33
-
34
- <requires_image>
35
- 判断这道题是否需要依赖图片才能正确解答。如果题目包含几何图形、函数图像、实验装置图、电路图等必须看图才能理解的内容,填写 true;如果只需要文字描述即可理解(如英语题、纯文字数学题),填写 false。
36
- </requires_image>
37
-
38
- <has_figure>
39
- 判断题目本身是否带有配图(几何图形、函数图像、示意图、统计图、实验装置图、电路图等;不含学生的作答痕迹和纯文字表格)。有配图填 true,否则填 false。
40
- </has_figure>
41
-
42
- <figure_svg>
43
- 如果 has_figure 为 true,用 SVG 重新绘制题目配图:
44
- ${eC}
45
- 如果 has_figure 为 false,请留空。
46
- </figure_svg>
47
-
48
- <wrong_answer_text>
49
- 如果图片中包含学生已经写出的错误解答、错误步骤、草稿或错误答案,请尽量按原样摘录;如果没有看到学生错误解答,请留空。
50
- </wrong_answer_text>
51
-
52
- <mistake_status>
53
- 填写以下值之一:wrong_attempt(图片中有错误解答或错误步骤)、not_attempted(没有错误解答,像是完全不会做或未作答)、unknown(无法判断)。
54
- </mistake_status>
55
-
56
- <difficulty_stars>
57
- 只填写 1 到 5 之间的一个整数,表示题目难度星级。
58
- ${eS}
59
- </difficulty_stars>
60
-
61
- <mistake_analysis>
62
- 如果图片中包含错误解答,请分析错误可能发生在哪一步、为什么错、导致了什么后果;如果没有错误解答,请留空。
63
- </mistake_analysis>
64
-
65
- <question_text>
66
- 在此处填写题目的完整文本。使用 Markdown 格式。所有数学公式使用 LaTeX 符号(行内 $...$,块级 $$...$$)。
67
-
68
- 【题干转录规则】
69
- 1. **逐字照录**:按图片原文转录题干(含题号、分值和标点),不要改写、概括、增删字词或调整语序;看不清的字用 [?] 标注。
70
- 2. **填空统一**:所有填空处统一写作 ____(4 个下划线),不论原图横线长短。
71
- 3. **图形描述**:如果题目依赖图形,在题干原文之后空一行,单独写**一段**以「图示:」开头的图形描述;只能使用「图示:」这一种写法(不要写「图示信息」「图示说明」等),描述中不要重复题干已有的文字。题目不依赖图形时不要写图示段落。
72
-
73
- 【表格处理规则】
74
- 如果图片中包含表格,必须完整转录表格内容,遵循以下原则:
75
-
76
- 1. **标准表格**:使用 Markdown 表格语法
77
- | 列标题1 | 列标题2 | 列标题3 |
78
- |---------|---------|---------|
79
- | 数据1 | 数据2 | 数据3 |
80
-
81
- 2. **复杂表格**(合并单元格/多级表头/不规则布局):
82
- - 优先尝试用 Markdown 表格近似表示
83
- - 如果 Markdown 无法准确表达,在表格前用文字说明结构,然后用简化的 Markdown 表格 + 注释
84
- - 示例:
85
- > 注:第1行为主标题,横跨3列;第2-3行为数据行
86
-
87
- | 项目 | 数值A | 数值B |
88
- |------|-------|-------|
89
- | 测试1 | 10 | 20 |
90
- | 测试2 | 15 | 25 |
91
-
92
- 3. **表格完整性要求**:
93
- - 必须转录所有单元格内容(包括空单元格用 - 或空格表示)
94
- - 保留表格标题、单位、注释
95
- - 保留数据的对齐关系和分组信息
96
- - 表格中的数学公式使用 LaTeX 语法
97
-
98
- 4. **表格上下文**:
99
- - 如果表格有标题或编号(如"表1"),保留在表格前
100
- - 如果表格后有注释或说明,保留在表格后
101
- - 保持表格在题目中的位置关系
102
-
103
- 5. **特殊情况处理**:
104
- - 图表混合:如果表格旁边有图形,用文字说明位置关系
105
- - 手写表格:尽力识别手写内容,不确定的用 [?] 标注
106
- - 模糊表格:如果表格不清晰,在表格前注明"(表格内容可能不完整)"
107
- </question_text>
108
-
109
- <answer_text>
110
- 在此处填写正确答案。使用 Markdown 和 LaTeX 符号。如果答案包含表格,遵循上述【表格处理规则】。
111
- </answer_text>
112
-
113
- <analysis>
114
- 在此处填写详细的步骤解析。
115
- * 必须使用简体中文。
116
- * **直接使用标准的 LaTeX 符号**(如 $\frac{1}{2}$),**不要**进行 JSON 转义(不要写成 \\frac)。
117
- * 如果解析过程需要表格(如列表对比、分步计算表),遵循上述【表格处理规则】。
118
- </analysis>
119
-
120
- 【知识点标签列表(KNOWLEDGE POINT LIST)】
121
- {{knowledge_points_list}}
122
-
123
- 【标签使用规则 (TAG RULES)】
124
- - 标签必须与题目实际考查的知识点精准匹配。
125
- - 每题最多 5 个标签。
126
-
127
- 【!!! 关键格式与内容约束 (CRITICAL RULES) !!!】
128
- 1. **格式严格**:必须严格包含上述 12 个 XML 标签,除此之外不要输出任何其他“开场白”或“结束语”。
129
- 2. **纯文本**:内容作为纯文本处理,**不要转义反斜杠**。
130
- 3. **内容完整**:如果包含子问题,请在 question_text 中完整列出。
131
- 4. **禁止图片**:严禁包含任何图片链接或 markdown 图片语法。
132
- 5. **LaTeX 规范**:
133
- ${eI}
134
-
135
- {{grade_instruction}}
136
- {{provider_hints}}`,eL=`你是一位资深的K12教育题目生成专家,具备跨学科的题目创作能力。你的核心任务是**根据以下原题和知识点,举一反三生成高质量教学题目**,帮助学生巩固知识并拓展解题思路。
137
- ### 角色定义
138
- 1. **学科全能专家**
139
- - 精通K12阶段所有学科(数学/语文/英语/物理/化学/生物/历史/地理/政治)
140
- - 熟悉各年级课程标准与知识点分布
141
- - 能准确识别题目考察的核心能力点(计算/推理/分析/应用/创新)
142
- 2. **题目变异大师**
143
- - 掌握12种变式技法:条件替换/情境迁移/问题转化/数据重构/图形变形/角色反转/跨学科融合/难度阶梯/开放拓展/陷阱设计/逆向思维/生活应用
144
- - 确保变式题目保持原题核心考点,改变题目表现形式
145
- 3. **学情分析师**
146
- - 预判学生易错点(认知盲区/概念混淆/计算失误/审题偏差)
147
- - 在变式题目中针对性强化易错点训练
148
- ### 执行流程
149
- 1. **接收任务**
150
- 原题: "{{original_question}}"
151
- {{language_instruction}}
152
- DIFFICULTY LEVEL: {{difficulty_level}}
153
- {{difficulty_instruction}}
154
- Knowledge Points: {{knowledge_points}}
155
- 2. **解构分析**
156
- - 提取核心考点与能力要求
157
- - 分析题目陷阱与解题路径
158
- 3. **质量管控**
159
- - 确保每道题:
160
- ✓ 覆盖相同核心知识点
161
- ✓ 保持解题逻辑一致性
162
- ✓ 答案唯一且可验证
163
- ✓ 无知识性错误
164
- ### 输出规范
165
- 你的响应输出**必须严格遵循以下自定义标签格式**。**严禁**使用 JSON 或 Markdown 代码块。**严禁**返回 \`\`\`json ... \`\`\`。
166
-
167
- 请严格按照以下结构输出内容(不要包含任何其他文字):
168
-
169
- <question_text>
170
- 在此处填写新生成的填空题或解答题。不要包含题号、分值或选择题选项。
171
- </question_text>
172
-
173
- <answer_text>
174
- 在此处填写新题目的正确答案。
175
- </answer_text>
176
-
177
- <analysis>
178
- 在此处填写新题目的详细解析。
179
- * 必须使用简体中文。
180
- * **直接使用标准的 LaTeX 符号**(如 $\frac{1}{2}$),**不要**进行 JSON 转义。
181
- </analysis>
182
-
183
- {{figure_instruction}}
184
-
185
- ###关键格式与内容约束 (CRITICAL RULES) !!!
186
- 1. **纯文本**:内容作为纯文本处理,**不要转义反斜杠**。
187
- 2. **LaTeX 规范**:
188
- ${eI}
189
-
190
- {{grade_instruction}}
191
- {{provider_hints}}`;var eE=e.i(67240);let ez=(0,m.default)("info",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M12 16v-4",key:"1dtifu"}],["path",{d:"M12 8h.01",key:"e9boi3"}]]);function eA({name:e,description:t}){return(0,s.jsxs)("div",{className:"flex flex-col sm:flex-row sm:items-start gap-1 sm:gap-2 text-xs py-1",children:[(0,s.jsx)("code",{className:"bg-muted px-1.5 py-0.5 rounded font-mono text-primary shrink-0 w-fit",children:`{{${e}}}`}),(0,s.jsx)("span",{className:"text-muted-foreground",children:t})]})}function eD({config:e,onUpdate:a}){let{language:r,t:i}=(0,t.useLanguage)(),[n,l]=(0,g.useState)(""),[o,c]=(0,g.useState)("");(0,g.useEffect)(()=>{l(e.prompts?.analyze||eT),c(e.prompts?.similar||eL)},[e.prompts]);let d=async e=>{if(!await (0,ef.confirmDialog)(i.settings?.prompts?.resetConfirm||"Are you sure you want to reset to default?",{destructive:!0}))return;let s="analyze"===e?eT:eL;"analyze"===e?(l(s),a("analyze",s)):(c(s),a("similar",s))},m=(e,s)=>{"analyze"===e?(l(s),a("analyze",s)):(c(s),a("similar",s))},u=()=>(0,s.jsxs)("div",{className:"bg-amber-50 border border-amber-200 rounded-md p-3 flex items-start gap-3 text-amber-900 text-sm mb-4",children:[(0,s.jsx)(C,{className:"h-5 w-5 shrink-0 text-amber-600"}),(0,s.jsxs)("div",{className:"space-y-1",children:[(0,s.jsx)("p",{className:"font-medium",children:i.settings?.prompts?.caution||"Modify with Caution"}),(0,s.jsx)("p",{className:"text-amber-800/90 text-xs",children:i.settings?.prompts?.warning||"Variables in {{brackets}} are used to inject dynamic content. Please preserve these variables, otherwise the AI providing may fail to get question context or return invalid formats."})]})]});return(0,s.jsx)("div",{className:"space-y-4 border rounded-lg p-4 bg-muted/30",children:(0,s.jsxs)(N.Tabs,{defaultValue:"analyze",className:"w-full",children:[(0,s.jsxs)(N.TabsList,{className:"grid w-full grid-cols-2",children:[(0,s.jsx)(N.TabsTrigger,{value:"analyze",children:i.settings?.prompts?.analysisTab||"Analysis Prompt"}),(0,s.jsx)(N.TabsTrigger,{value:"similar",children:i.settings?.prompts?.similarTab||"Similar Question Prompt"})]}),(0,s.jsx)(N.TabsContent,{value:"analyze",className:"space-y-4 py-4",children:(0,s.jsxs)("div",{className:"space-y-4",children:[(0,s.jsxs)("div",{className:"flex justify-between items-center",children:[(0,s.jsx)(y.Label,{className:"text-base font-semibold",children:i.settings?.prompts?.customAnalysis||"Custom Analysis Template"}),(0,s.jsxs)(f.Button,{variant:"outline",size:"sm",onClick:()=>d("analyze"),children:[(0,s.jsx)(eE.RotateCcw,{className:"w-4 h-4 mr-2"}),i.settings?.prompts?.reset||"Reset Default"]})]}),(0,s.jsx)(u,{}),(0,s.jsxs)("div",{className:"space-y-2 border rounded-md p-3 bg-background",children:[(0,s.jsxs)("h4",{className:"text-xs font-medium flex items-center gap-1.5 mb-2",children:[(0,s.jsx)(ez,{className:"h-3.5 w-3.5"}),i.settings?.prompts?.variables||"Available Variables"]}),(0,s.jsxs)("div",{className:"space-y-1.5",children:[(0,s.jsx)(eA,{name:"language_instruction",description:i.settings?.prompts?.vars?.languageInstruction||"Injects instructions based on target language (e.g., keep English questions in English but analysis in Chinese)."}),(0,s.jsx)(eA,{name:"knowledge_points_list",description:i.settings?.prompts?.vars?.knowledgePointsList||"Injects the standard list of knowledge point tags for the specific subject."}),(0,s.jsx)(eA,{name:"provider_hints",description:i.settings?.prompts?.vars?.providerHints||"System-injected hints (e.g., enforcing JSON format)."})]})]}),(0,s.jsx)(ek.Textarea,{value:n,onChange:e=>m("analyze",e.target.value),className:"font-mono text-xs min-h-[400px]",placeholder:eT})]})}),(0,s.jsx)(N.TabsContent,{value:"similar",className:"space-y-4 py-4",children:(0,s.jsxs)("div",{className:"space-y-4",children:[(0,s.jsxs)("div",{className:"flex justify-between items-center",children:[(0,s.jsx)(y.Label,{className:"text-base font-semibold",children:i.settings?.prompts?.customSimilar||"Custom Similar Question Template"}),(0,s.jsxs)(f.Button,{variant:"outline",size:"sm",onClick:()=>d("similar"),children:[(0,s.jsx)(eE.RotateCcw,{className:"w-4 h-4 mr-2"}),i.settings?.prompts?.reset||"Reset Default"]})]}),(0,s.jsx)(u,{}),(0,s.jsxs)("div",{className:"space-y-2 border rounded-md p-3 bg-background",children:[(0,s.jsxs)("h4",{className:"text-xs font-medium flex items-center gap-1.5 mb-2",children:[(0,s.jsx)(ez,{className:"h-3.5 w-3.5"}),i.settings?.prompts?.variables||"Available Variables"]}),(0,s.jsxs)("div",{className:"space-y-1.5",children:[(0,s.jsx)(eA,{name:"difficulty_level",description:i.settings?.prompts?.vars?.difficultyLevel||"Target difficulty level."}),(0,s.jsx)(eA,{name:"difficulty_instruction",description:i.settings?.prompts?.vars?.difficultyInstruction||"Specific writing instructions for the target difficulty."}),(0,s.jsx)(eA,{name:"original_question",description:i.settings?.prompts?.vars?.originalQuestion||"The full text of the original question."}),(0,s.jsx)(eA,{name:"knowledge_points",description:i.settings?.prompts?.vars?.knowledgePoints||"List of knowledge points to test."}),(0,s.jsx)(eA,{name:"language_instruction",description:i.settings?.prompts?.vars?.languageInstructionShort||"Language formatting instructions."})]})]}),(0,s.jsx)(ek.Textarea,{value:o,onChange:e=>m("similar",e.target.value),className:"font-mono text-xs min-h-[400px]",placeholder:eL})]})})]})})}function eM({field:e,label:a,description:r}){let{t:i}=(0,t.useLanguage)(),[n,l]=(0,g.useState)(!1),[o,c]=(0,g.useState)(!1),[d,m]=(0,g.useState)(!1),[u,p]=(0,g.useState)(null),x=`preference-${e}`;(0,g.useEffect)(()=>{eg.apiClient.get("/api/user").then(s=>l(!!s[e])).catch(()=>void 0).finally(()=>c(!0))},[e]);let h=async s=>{l(s),m(!0);try{await eg.apiClient.patch("/api/user",{[e]:s}),p(i.importFlow.preferenceSaved)}catch(t){l(!s),p(i.importFlow.preferenceSaveFailed),ev.frontendLogger.error("[Settings]","Failed to save user preference",{field:e,error:t instanceof Error?t.message:String(t)})}finally{m(!1)}};return(0,s.jsxs)("div",{className:"space-y-2 pt-4 border-t",children:[(0,s.jsxs)("div",{className:"flex items-center justify-between gap-4",children:[(0,s.jsx)(y.Label,{htmlFor:x,children:a}),(0,s.jsx)(el,{id:x,checked:n,onCheckedChange:h,disabled:!o||d})]}),(0,s.jsx)("p",{className:"text-xs text-muted-foreground",children:r}),u&&(0,s.jsx)("p",{className:"text-xs text-muted-foreground",children:u})]})}function eR(){let{t:e}=(0,t.useLanguage)();return(0,s.jsx)(eM,{field:"confirmBeforeImport",label:e.importFlow.confirmBeforeImport,description:e.importFlow.confirmBeforeImportDesc})}function eP(){let{t:e}=(0,t.useLanguage)();return(0,s.jsx)(eM,{field:"enableGeogebra",label:e.importFlow.enableGeogebra,description:e.importFlow.enableGeogebraDesc})}function e_(){let{t:e}=(0,t.useLanguage)();return(0,s.jsx)(eM,{field:"enableSvgAnimation",label:e.importFlow.enableSvgAnimation,description:e.importFlow.enableSvgAnimationDesc})}function eU({value:e,onChange:a}){let{t:r}=(0,t.useLanguage)(),[i,n]=(0,g.useState)(!1),l=(s,t)=>a({...e,[s]:t});return(0,s.jsxs)("div",{className:"space-y-3 animate-in fade-in slide-in-from-top-2",children:[(0,s.jsxs)("div",{className:"space-y-2",children:[(0,s.jsx)(y.Label,{children:"API Key"}),(0,s.jsxs)("div",{className:"relative",children:[(0,s.jsx)(v.Input,{type:i?"text":"password",value:e?.apiKey||"",onChange:e=>l("apiKey",e.target.value),placeholder:"sk-ant-...",className:"pr-10"}),(0,s.jsx)(f.Button,{type:"button",variant:"ghost",size:"icon",className:"absolute right-0 top-0 h-full px-3 py-2 hover:bg-transparent",onClick:()=>n(!i),"aria-label":i?"Hide API Key":"Show API Key",children:i?(0,s.jsx)(T.EyeOff,{className:"h-4 w-4 text-muted-foreground"}):(0,s.jsx)(I.Eye,{className:"h-4 w-4 text-muted-foreground"})})]})]}),(0,s.jsxs)("div",{className:"space-y-2",children:[(0,s.jsx)(y.Label,{children:"Base URL (Optional)"}),(0,s.jsx)(v.Input,{value:e?.baseUrl||"",onChange:e=>l("baseUrl",e.target.value),placeholder:"https://api.anthropic.com"}),(0,s.jsx)("p",{className:"text-xs text-muted-foreground",children:r.settings?.ai?.anthropicBaseUrlHint})]}),(0,s.jsx)(ew,{provider:"anthropic",apiKey:e?.apiKey,baseUrl:e?.baseUrl,currentModel:e?.model,onModelChange:e=>l("model",e)})]})}function eK({provider:e,value:a,onChange:r}){let{t:i}=(0,t.useLanguage)(),[n,l]=(0,g.useState)(!1),o=ey[e],c=(e,s)=>r({...a,[e]:s});return(0,s.jsxs)("div",{className:"space-y-3 animate-in fade-in slide-in-from-top-2",children:[(0,s.jsxs)("div",{className:"space-y-2",children:[(0,s.jsx)(y.Label,{children:"API Key"}),(0,s.jsxs)("div",{className:"relative",children:[(0,s.jsx)(v.Input,{type:n?"text":"password",value:a?.apiKey||"",onChange:e=>c("apiKey",e.target.value),placeholder:"sk-...",className:"pr-10"}),(0,s.jsx)(f.Button,{type:"button",variant:"ghost",size:"icon",className:"absolute right-0 top-0 h-full px-3 py-2 hover:bg-transparent",onClick:()=>l(!n),"aria-label":n?"Hide API Key":"Show API Key",children:n?(0,s.jsx)(T.EyeOff,{className:"h-4 w-4 text-muted-foreground"}):(0,s.jsx)(I.Eye,{className:"h-4 w-4 text-muted-foreground"})})]}),(0,s.jsxs)("p",{className:"text-xs text-muted-foreground",children:[i.settings?.ai?.vendorApiKeyHint||"Get an API key from the console:"," ",(0,s.jsx)("a",{href:o.consoleUrl,target:"_blank",rel:"noopener noreferrer",className:"underline break-all",children:o.consoleUrl})]})]}),(0,s.jsxs)("div",{className:"space-y-2",children:[(0,s.jsx)(y.Label,{children:"Base URL (Optional)"}),(0,s.jsx)(v.Input,{value:a?.baseUrl||"",onChange:e=>c("baseUrl",e.target.value),placeholder:o.baseUrl}),(0,s.jsx)("p",{className:"text-xs text-muted-foreground",children:i.settings?.ai?.vendorBaseUrlHint})]}),(0,s.jsx)(ew,{provider:e,apiKey:a?.apiKey,baseUrl:a?.baseUrl,currentModel:a?.model||o.model,onModelChange:e=>c("model",e)})]})}var eB=e.i(7364);function eF({value:e,onChange:a,disabled:r}){let{t:i}=(0,t.useLanguage)();return(0,s.jsxs)("div",{className:"space-y-2 pt-4 border-t",children:[(0,s.jsx)(y.Label,{htmlFor:"app-time-zone",children:i.settings.general.timeZoneLabel}),(0,s.jsx)(v.Input,{id:"app-time-zone",value:e,onChange:e=>a(e.target.value),disabled:r,list:"app-time-zones",placeholder:"Asia/Shanghai"}),(0,s.jsx)("datalist",{id:"app-time-zones",children:["Asia/Shanghai","Asia/Hong_Kong","Asia/Tokyo","Asia/Singapore","Europe/London","America/New_York","America/Los_Angeles","UTC"].map(e=>(0,s.jsx)("option",{value:e},e))}),(0,s.jsx)("p",{className:"text-xs text-muted-foreground",children:i.settings.general.timeZoneDesc})]})}let eO=(0,m.default)("message-square-text",[["path",{d:"M22 17a2 2 0 0 1-2 2H6.828a2 2 0 0 0-1.414.586l-2.202 2.202A.71.71 0 0 1 2 21.286V5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2z",key:"18887p"}],["path",{d:"M7 11h10",key:"1twpyw"}],["path",{d:"M7 15h6",key:"d9of3u"}],["path",{d:"M7 7h8",key:"af5zfr"}]]),e$=(0,m.default)("external-link",[["path",{d:"M15 3h6v6",key:"1q9fwt"}],["path",{d:"M10 14 21 3",key:"gplh6r"}],["path",{d:"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6",key:"a6xqqp"}]]),eq=(0,m.default)("github",[["path",{d:"M15 22v-4a4.8 4.8 0 0 0-1-3.5c3 0 6-2 6-5.5.08-1.25-.27-2.48-1-3.5.28-1.15.28-2.35 0-3.5 0 0-1 0-3 1.5-2.64-.5-5.36-.5-8 0C6 2 5 2 5 2c-.3 1.15-.3 2.35 0 3.5A5.403 5.403 0 0 0 4 9c0 3.5 3 5.5 6 5.5-.39.49-.68 1.05-.85 1.65-.17.6-.22 1.23-.15 1.85v4",key:"tonef"}],["path",{d:"M9 18c-4.51 2-5-2-7-2",key:"9comsn"}]]),eV=(0,m.default)("scroll-text",[["path",{d:"M15 12h-5",key:"r7krc0"}],["path",{d:"M15 8h-5",key:"1khuty"}],["path",{d:"M19 17V5a2 2 0 0 0-2-2H4",key:"zz82l3"}],["path",{d:"M8 21h12a2 2 0 0 0 2-2v-1a1 1 0 0 0-1-1H11a1 1 0 0 0-1 1v1a2 2 0 1 1-4 0V5a2 2 0 1 0-4 0v2a1 1 0 0 0 1 1h3",key:"1ph1d7"}]]);function eH(){let{timeZone:e,setTimeZone:i}=(0,r.useTimeZone)(),{data:n}=(0,a.useSession)(),c=n?.user?.role==="admin",{t:d,language:m,setLanguage:u}=(0,t.useLanguage)(),[p,h]=(0,g.useState)(!1),B=(0,g.useRef)(null),[F,O]=(0,g.useState)(!1),[$,q]=(0,g.useState)(!1),[V,H]=(0,g.useState)(!1),[X,W]=(0,g.useState)(!1),[Y,Z]=(0,g.useState)(!1),[G,J]=(0,g.useState)(!1),[Q,ee]=(0,g.useState)(""),[es,et]=(0,g.useState)(!1),[ea,er]=(0,g.useState)({aiProvider:"minimax"}),[ei,en]=(0,g.useState)(void 0),[el,eo]=(0,g.useState)(!1),[ec,ed]=(0,g.useState)(null),[em,eu]=(0,g.useState)({name:"",email:"",educationStage:"",enrollmentYear:"",password:""}),[ep,ex]=(0,g.useState)(""),[eh,ek]=(0,g.useState)(!1),[eS,eC]=(0,g.useState)(!1),[eI,eT]=(0,g.useState)(!1),[eL,eE]=(0,g.useState)(!1),[eA,eM]=(0,g.useState)(!1),[eH,eX]=(0,g.useState)(!1),[eW,eY]=(0,g.useState)(null),[eZ,eG]=(0,g.useState)(""),eJ=(0,l.useRouter)();(0,g.useEffect)(()=>{p&&(eQ(),e0()),fetch("/api/version").then(e=>e.json()).then(e=>ee(e.version)).catch(()=>{})},[p]);let eQ=async()=>{J(!0);try{let e=await eg.apiClient.get("/api/settings");er(e)}catch(e){ev.frontendLogger.error("[SettingsDialog]","Failed to fetch settings",{error:e instanceof Error?e.message:String(e)})}finally{J(!1)}},e0=async()=>{ek(!0);try{let e=await eg.apiClient.get("/api/user");eu({name:e.name||"",email:e.email||"",educationStage:e.educationStage||"",enrollmentYear:e.enrollmentYear||"",password:""})}catch(e){ev.frontendLogger.error("[SettingsDialog]","Failed to fetch profile",{error:e instanceof Error?e.message:String(e)})}finally{ek(!1)}},e1=async()=>{if(!(0,K.isValidTimeZone)(ea.timeZone??K.DEFAULT_TIME_ZONE))return void ef.toast.error(d.settings.general.invalidTimeZone);let e=(()=>{if("openai"!==ea.aiProvider)return null;for(let e of ea.openai?.instances||[]){if(!e.name?.trim())return d.settings?.ai?.validationNameRequired||"实例名称不能为空";if(!e.apiKey?.trim())return d.settings?.ai?.validationApiKeyRequired||"API Key 不能为空";if(!e.baseUrl?.trim())return d.settings?.ai?.validationBaseUrlRequired||"Base URL 不能为空";if(!e.model?.trim())return d.settings?.ai?.validationModelRequired||"模型名称不能为空"}return null})();if(e)return void ef.toast.error(e);let s="azure"!==ea.aiProvider?null:ea.azure?.endpoint?.trim()?ea.azure?.deploymentName?.trim()?ea.azure?.apiKey?.trim()?null:d.settings?.ai?.validationApiKeyRequired||"API Key is required":d.settings?.ai?.validationAzureDeploymentRequired||"Deployment Name is required":d.settings?.ai?.validationAzureEndpointRequired||"Azure Endpoint is required";if(s)return void ef.toast.error(s);Z(!0);try{let e=await eg.apiClient.post("/api/settings",ea);er(e),i(e.timeZone||K.DEFAULT_TIME_ZONE),ef.toast.success(d.settings?.messages?.saved||"Settings saved"),B.current?.scrollTo({top:0,behavior:"smooth"})}catch(e){ev.frontendLogger.error("[SettingsDialog]","Failed to save settings",{error:e instanceof Error?e.message:String(e)}),ef.toast.error(d.settings?.messages?.saveFailed||"Failed to save")}finally{Z(!1)}},e2=async()=>{eC(!0);try{if(em.password&&em.password!==ep){ef.toast.error(d.settings?.messages?.passwordMismatch||"Passwords do not match"),eC(!1);return}let e={name:em.name,email:em.email,educationStage:em.educationStage};em.enrollmentYear&&(e.enrollmentYear=parseInt(em.enrollmentYear.toString())),em.password&&(e.password=em.password),await eg.apiClient.patch("/api/user",e),ef.toast.success(d.settings?.messages?.profileUpdated||"Profile updated"),eu(e=>({...e,password:""})),ex(""),eT(!1),eE(!1),window.location.reload()}catch(s){ev.frontendLogger.error("[SettingsDialog]","Failed to update profile",{error:s?.data?.message||s?.message||String(s)});let e=s.data?.message||d.settings?.messages?.updateFailed||"Update failed";ef.toast.error(e)}finally{eC(!1)}},e4=async()=>{if(await (0,ef.confirmDialog)(d.settings?.clearDataConfirm||"Are you sure?",{destructive:!0})){O(!0);try{await eg.apiClient.delete("/api/stats/practice/clear"),ef.toast.success(d.settings?.clearSuccess||"Success"),h(!1),window.location.reload()}catch(e){ev.frontendLogger.error("[SettingsDialog]","Failed to clear practice data",{error:e instanceof Error?e.message:String(e)}),ef.toast.error(d.settings?.clearError||"Failed")}finally{O(!1)}}},e3=async()=>{if(await (0,ef.confirmDialog)(d.settings?.clearErrorDataConfirm||"Are you sure?",{destructive:!0})){q(!0);try{await eg.apiClient.delete("/api/error-items/clear"),ef.toast.success(d.settings?.clearSuccess||"Success"),h(!1),window.location.reload()}catch(e){ev.frontendLogger.error("[SettingsDialog]","Failed to clear error data",{error:e instanceof Error?e.message:String(e)}),ef.toast.error(d.settings?.clearError||"Failed")}finally{q(!1)}}},e5=async()=>{if(!await (0,ef.confirmDialog)(d.settings?.systemResetConfirm||"WARNING: Deleting ALL data. Undoing is impossible. Are you sure?",{destructive:!0}))return;let e=prompt(d.settings?.systemResetPrompt||"Type 'RESET' to confirm system initialization:","");if("RESET"!==e){null!==e&&ef.toast.error(d.common?.error||"Confirmation failed");return}H(!0);try{await eg.apiClient.post("/api/admin/system-reset",{}),ef.toast.success(d.settings?.clearSuccess||"Success - System Reset Complete"),h(!1),window.location.reload()}catch(e){ev.frontendLogger.error("[SettingsDialog]","System reset failed",{error:e instanceof Error?e.message:String(e)}),ef.toast.error(d.settings?.clearError||"Failed to reset system")}finally{H(!1)}},e6=async()=>{eM(!0);try{let e=await fetch("/api/export");if(!e.ok)throw Error("Export failed");let s=await e.blob(),t=window.URL.createObjectURL(s),a=document.createElement("a");a.href=t;let r=e.headers.get("Content-Disposition"),i=r?.match(/filename="(.+)"/);a.download=i?i[1]:"wrong-notebook-export.json",document.body.appendChild(a),a.click(),document.body.removeChild(a),window.URL.revokeObjectURL(t),ef.toast.success(d.settings?.exportSuccess||"Export successful")}catch(e){ev.frontendLogger.error("[SettingsDialog]","Export failed",{error:e instanceof Error?e.message:String(e)}),ef.toast.error(d.settings?.exportFailed||"Export failed")}finally{eM(!1)}},e8=async()=>{if(await (0,ef.confirmDialog)(d.settings?.exportAllConfirm||"Export all users' data? This may take a while.")){eM(!0);try{let e=await fetch("/api/export?all=true");if(!e.ok){let s=await e.json();throw Error(s.message||"Export failed")}let s=await e.blob(),t=window.URL.createObjectURL(s),a=document.createElement("a");a.href=t;let r=e.headers.get("Content-Disposition"),i=r?.match(/filename="(.+)"/);a.download=i?i[1]:"wrong-notebook-export-all.json",document.body.appendChild(a),a.click(),document.body.removeChild(a),window.URL.revokeObjectURL(t),ef.toast.success(d.settings?.exportSuccess||"Export successful")}catch(e){ev.frontendLogger.error("[SettingsDialog]","Export all failed",{error:e instanceof Error?e.message:String(e)}),ef.toast.error(d.settings?.exportFailed||"Export failed")}finally{eM(!1)}}},e7=async()=>{if(eW&&await (0,ef.confirmDialog)(d.settings?.importConfirm||"Are you sure you want to import?")){eX(!0);try{let e=await eW.text(),s=JSON.parse(e),t=(await eg.apiClient.post("/api/import",s)).stats;ef.toast.success((d.settings?.importResultDesc||"Imported {subjects} notebooks, {tags} tags, {items} error items, {schedules} review schedules, {records} practice records.").replace("{subjects}",String(t.subjectsCreated)).replace("{tags}",String(t.tagsCreated)).replace("{items}",String(t.errorItemsCreated)).replace("{schedules}",String(t.reviewSchedulesCreated)).replace("{records}",String(t.practiceRecordsCreated)).replace("{duplicates}",String(t.duplicateErrorItems??0))),eY(null),eG(""),window.location.reload()}catch(e){ev.frontendLogger.error("[SettingsDialog]","Import failed",{error:e instanceof Error?e.message:String(e)}),ef.toast.error(d.settings?.importFailed||"Import failed")}finally{eX(!1)}}},e9=async()=>{if(eW&&await (0,ef.confirmDialog)(d.settings?.importAllConfirm||"Import all users' data? This will restore data for all users from the export file.")){eX(!0);try{let e=await eW.text(),s=JSON.parse(e),t=await fetch("/api/import?all=true",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(s)}),a=await t.json();if(a.success){let e=a.stats;ef.toast.success((d.settings?.importResultDesc||"Imported {subjects} notebooks, {tags} tags, {items} error items, {schedules} review schedules, {records} practice records.").replace("{subjects}",String(e.subjectsCreated)).replace("{tags}",String(e.tagsCreated)).replace("{items}",String(e.errorItemsCreated)).replace("{schedules}",String(e.reviewSchedulesCreated)).replace("{records}",String(e.practiceRecordsCreated)).replace("{duplicates}",String(e.duplicateErrorItems??0))),eY(null),eG(""),window.location.reload()}else throw Error(a.message||"Import failed")}catch(e){ev.frontendLogger.error("[SettingsDialog]","Import all failed",{error:e instanceof Error?e.message:String(e)}),ef.toast.error(d.settings?.importFailed||"Import failed")}finally{eX(!1)}}},se=async()=>{if(await (0,ef.confirmDialog)(d.settings?.migrateTagsConfirm||"This will reset system tags. Confirm?",{destructive:!0})){W(!0);try{let e=await eg.apiClient.post("/api/admin/migrate-tags",{});ef.toast.success(`${d.settings?.clearSuccess||"Success"}: ${e.count||0} tags migrated.`)}catch(e){ev.frontendLogger.error("[SettingsDialog]","Tag migration failed",{error:e instanceof Error?e.message:String(e)}),ef.toast.error(d.settings?.clearError||"Failed to migrate tags")}finally{W(!1)}}},ss=(e,s,t)=>{"gemini"===e&&er(e=>({...e,gemini:{...e.gemini,[s]:t}}))},st=()=>{let e=ea.openai?.instances||[],s=ei||ea.openai?.activeInstanceId;return e.find(e=>e.id===s)},sa=(e,s)=>{let t=ea.openai?.instances||[],a=ei||ea.openai?.activeInstanceId,r=t.map(t=>t.id===a?{...t,[e]:s}:t);er(e=>({...e,openai:{...e.openai,instances:r}}))};(0,g.useEffect)(()=>{ea.openai?.activeInstanceId&&!ei&&en(ea.openai.activeInstanceId)},[ea.openai?.activeInstanceId,ei]);let sr=async()=>{eo(!0),ed(null);try{let e;if("openai"===ea.aiProvider){let s=st();if(!s?.apiKey){ed({success:!1,textSupport:!1,visionSupport:!1,textError:d.settings?.ai?.validationApiKeyRequired||"API Key is required"}),eo(!1);return}e={provider:"openai",apiKey:s.apiKey,baseUrl:s.baseUrl,model:s.model,language:m}}else if("gemini"===ea.aiProvider){if(!ea.gemini?.apiKey){ed({success:!1,textSupport:!1,visionSupport:!1,textError:d.settings?.ai?.validationApiKeyRequired||"API Key is required"}),eo(!1);return}e={provider:"gemini",apiKey:ea.gemini.apiKey,baseUrl:ea.gemini.baseUrl,model:ea.gemini.model,language:m}}else if("anthropic"===ea.aiProvider){if(!ea.anthropic?.apiKey){ed({success:!1,textSupport:!1,visionSupport:!1,textError:d.settings?.ai?.validationApiKeyRequired||"API Key is required"}),eo(!1);return}e={provider:"anthropic",apiKey:ea.anthropic.apiKey,baseUrl:ea.anthropic.baseUrl,model:ea.anthropic.model,language:m}}else if(eN(ea.aiProvider)){let s=ea[ea.aiProvider];if(!s?.apiKey){ed({success:!1,textSupport:!1,visionSupport:!1,textError:d.settings?.ai?.validationApiKeyRequired||"API Key is required"}),eo(!1);return}e={provider:ea.aiProvider,apiKey:s.apiKey,baseUrl:s.baseUrl,model:s.model,language:m}}else{if("azure"!==ea.aiProvider)return void eo(!1);if(!ea.azure?.apiKey||!ea.azure?.endpoint||!ea.azure?.deploymentName){ed({success:!1,textSupport:!1,visionSupport:!1,textError:d.settings?.ai?.validationAzureEndpointRequired||"Azure config is incomplete"}),eo(!1);return}e={provider:"azure",apiKey:ea.azure.apiKey,endpoint:ea.azure.endpoint,deploymentName:ea.azure.deploymentName,apiVersion:ea.azure.apiVersion,model:ea.azure.model,language:m}}let s=await eg.apiClient.post("/api/ai/test",e);ed(s)}catch(e){ev.frontendLogger.error("[SettingsDialog]","AI connection test failed",{error:e instanceof Error?e.message:String(e)}),ed({success:!1,textSupport:!1,visionSupport:!1,textError:e instanceof Error?e.message:String(e)})}finally{eo(!1)}};return(0,s.jsxs)(j.Dialog,{open:p,onOpenChange:h,children:[(0,s.jsx)(j.DialogTrigger,{asChild:!0,children:(0,s.jsxs)(f.Button,{variant:"ghost",size:"icon",className:"rounded-full",children:[(0,s.jsx)(w,{className:"h-5 w-5"}),(0,s.jsx)("span",{className:"sr-only",children:d.settings?.title||"Settings"})]})}),(0,s.jsxs)(j.DialogContent,{ref:B,className:"w-[calc(100vw-2rem)] sm:max-w-[900px] max-h-[85vh] overflow-y-auto",children:[(0,s.jsxs)(j.DialogHeader,{children:[(0,s.jsx)(j.DialogTitle,{children:d.settings?.title||"Settings"}),(0,s.jsx)(j.DialogDescription,{children:d.settings?.desc||"Manage your preferences and data."})]}),(0,s.jsxs)(N.Tabs,{defaultValue:"general",className:"w-full",children:[(0,s.jsxs)(N.TabsList,{className:`grid w-full grid-cols-4 ${n?.user?.role==="admin"?"sm:grid-cols-7":"sm:grid-cols-4"} gap-1 h-auto`,children:[(0,s.jsxs)(N.TabsTrigger,{value:"general",className:"px-2 sm:px-3",children:[(0,s.jsx)(L.Languages,{className:"h-4 w-4 sm:mr-2"}),(0,s.jsx)("span",{className:"hidden sm:inline",children:d.settings?.tabs?.general||"General"})]}),(0,s.jsxs)(N.TabsTrigger,{value:"account",className:"px-2 sm:px-3",children:[(0,s.jsx)(E.User,{className:"h-4 w-4 sm:mr-2"}),(0,s.jsx)("span",{className:"hidden sm:inline",children:d.settings?.tabs?.account||"Account"})]}),n?.user?.role==="admin"&&(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)(N.TabsTrigger,{value:"ai",className:"px-2 sm:px-3",children:[(0,s.jsx)(z,{className:"h-4 w-4 sm:mr-2"}),(0,s.jsx)("span",{className:"hidden sm:inline",children:d.settings?.tabs?.ai||"AI Provider"})]}),(0,s.jsxs)(N.TabsTrigger,{value:"prompts",className:"px-2 sm:px-3",children:[(0,s.jsx)(eO,{className:"h-4 w-4 sm:mr-2"}),(0,s.jsx)("span",{className:"hidden sm:inline",children:d.settings?.tabs?.prompts||"Prompts"})]}),(0,s.jsxs)(N.TabsTrigger,{value:"admin",className:"px-2 sm:px-3",children:[(0,s.jsx)(x,{className:"h-4 w-4 sm:mr-2"}),(0,s.jsx)("span",{className:"hidden sm:inline",children:d.settings?.tabs?.admin||"User Management"})]})]}),(0,s.jsxs)(N.TabsTrigger,{value:"danger",className:"px-2 sm:px-3",children:[(0,s.jsx)(C,{className:"h-4 w-4 sm:mr-2"}),(0,s.jsx)("span",{className:"hidden sm:inline",children:d.settings?.tabs?.danger||"Danger"})]}),(0,s.jsxs)(N.TabsTrigger,{value:"about",className:"px-2 sm:px-3",children:[(0,s.jsx)(ez,{className:"h-4 w-4 sm:mr-2"}),(0,s.jsx)("span",{className:"hidden sm:inline",children:d.settings?.tabs?.about||"About"})]})]}),(0,s.jsxs)(N.TabsContent,{value:"general",className:"space-y-4 py-4",children:[(0,s.jsxs)("div",{className:"space-y-4 border rounded-lg p-4 bg-muted/30",children:[(0,s.jsxs)("div",{className:"space-y-2",children:[(0,s.jsx)(y.Label,{children:d.settings?.language||"Language"}),(0,s.jsxs)(b.Select,{value:m,onValueChange:e=>u(e),children:[(0,s.jsx)(b.SelectTrigger,{children:(0,s.jsx)(b.SelectValue,{})}),(0,s.jsxs)(b.SelectContent,{children:[(0,s.jsx)(b.SelectItem,{value:"zh",children:"中文 (Chinese)"}),(0,s.jsx)(b.SelectItem,{value:"en",children:"English"})]})]})]}),(0,s.jsx)(eF,{value:ea.timeZone??e,onChange:e=>er(s=>({...s,timeZone:e})),disabled:!c||G||Y}),c&&(0,s.jsxs)("div",{className:"space-y-2 pt-4 border-t",children:[(0,s.jsx)(y.Label,{children:d.settings?.general?.timeoutLabel||"AI Analysis Timeout (Seconds)"}),(0,s.jsx)(v.Input,{type:"number",value:ea.timeouts?.analyze?ea.timeouts.analyze/1e3:"",onChange:e=>{let s=""===e.target.value?0:parseInt(e.target.value);er(e=>({...e,timeouts:{...e.timeouts,analyze:isNaN(s)?0:1e3*s}}))},onBlur:()=>{let e=(ea.timeouts?.analyze||0)/1e3,s=e;s<120&&(s=120),s>600&&(s=600),s!==e&&er(e=>({...e,timeouts:{...e.timeouts,analyze:1e3*s}}))},min:120,max:600}),(0,s.jsx)("p",{className:"text-xs text-muted-foreground",children:d.settings?.general?.timeoutDesc||"Increase this value if you experience frequent timeouts during AI analysis."})]}),(0,s.jsx)(eR,{}),(0,s.jsx)(e_,{}),(0,s.jsx)(eP,{}),(0,s.jsx)(eB.DuplicateThresholdSetting,{})]}),c&&(0,s.jsxs)(f.Button,{onClick:e1,disabled:Y,className:"w-full",children:[Y&&(0,s.jsx)(S.Loader2,{className:"mr-2 h-4 w-4 animate-spin"}),d.settings?.save||"Save Settings"]})]}),(0,s.jsx)(N.TabsContent,{value:"account",className:"space-y-4 py-4",children:eh?(0,s.jsx)("div",{className:"flex justify-center py-8",children:(0,s.jsx)(S.Loader2,{className:"h-8 w-8 animate-spin text-muted-foreground"})}):(0,s.jsxs)("div",{className:"space-y-4 border rounded-lg p-4 bg-muted/30",children:[(0,s.jsxs)("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-4",children:[(0,s.jsxs)("div",{className:"space-y-2",children:[(0,s.jsx)(y.Label,{children:d.auth?.name||"Name"}),(0,s.jsx)(v.Input,{value:em.name||"",onChange:e=>eu({...em,name:e.target.value})})]}),(0,s.jsxs)("div",{className:"space-y-2",children:[(0,s.jsx)(y.Label,{children:d.auth?.email||"Email"}),(0,s.jsx)(v.Input,{value:em.email||"",onChange:e=>eu({...em,email:e.target.value}),type:"email"})]})]}),(0,s.jsxs)("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-4",children:[(0,s.jsxs)("div",{className:"space-y-2",children:[(0,s.jsx)(y.Label,{children:d.auth?.educationStage||"Education Stage"}),(0,s.jsxs)(b.Select,{value:em.educationStage||"",onValueChange:e=>eu({...em,educationStage:e}),children:[(0,s.jsx)(b.SelectTrigger,{children:(0,s.jsx)(b.SelectValue,{placeholder:d.auth?.selectStage||"Select Stage"})}),(0,s.jsxs)(b.SelectContent,{children:[(0,s.jsx)(b.SelectItem,{value:"primary",children:d.auth?.primary||"Primary School"}),(0,s.jsx)(b.SelectItem,{value:"junior_high",children:d.auth?.juniorHigh||"Junior High"}),(0,s.jsx)(b.SelectItem,{value:"senior_high",children:d.auth?.seniorHigh||"Senior High"}),(0,s.jsx)(b.SelectItem,{value:"university",children:d.auth?.university||"University"})]})]})]}),(0,s.jsxs)("div",{className:"space-y-2",children:[(0,s.jsx)(y.Label,{children:d.auth?.enrollmentYear||"Enrollment Year"}),(0,s.jsx)(v.Input,{type:"number",value:em.enrollmentYear||"",onChange:e=>eu({...em,enrollmentYear:e.target.value}),placeholder:"YYYY"})]})]}),(0,s.jsxs)("div",{className:"space-y-3 pt-2 border-t",children:[(0,s.jsxs)("div",{className:"space-y-2",children:[(0,s.jsx)(y.Label,{children:d.settings?.account?.changePassword||"Change Password (Leave empty to keep)"}),(0,s.jsxs)("div",{className:"relative",children:[(0,s.jsx)(v.Input,{type:eI?"text":"password",value:em.password,onChange:e=>eu({...em,password:e.target.value}),placeholder:"******",minLength:6,className:"pr-10"}),(0,s.jsx)(f.Button,{type:"button",variant:"ghost",size:"icon",className:"absolute right-0 top-0 h-full px-3 py-2 hover:bg-transparent",onClick:()=>eT(!eI),tabIndex:-1,children:eI?(0,s.jsx)(T.EyeOff,{className:"h-4 w-4 text-muted-foreground"}):(0,s.jsx)(I.Eye,{className:"h-4 w-4 text-muted-foreground"})})]})]}),em.password&&(0,s.jsxs)("div",{className:"space-y-2",children:[(0,s.jsx)(y.Label,{children:d.auth?.confirmPassword||"Confirm Password"}),(0,s.jsxs)("div",{className:"relative",children:[(0,s.jsx)(v.Input,{type:eL?"text":"password",value:ep,onChange:e=>ex(e.target.value),placeholder:"******",minLength:6,className:"pr-10"}),(0,s.jsx)(f.Button,{type:"button",variant:"ghost",size:"icon",className:"absolute right-0 top-0 h-full px-3 py-2 hover:bg-transparent",onClick:()=>eE(!eL),tabIndex:-1,children:eL?(0,s.jsx)(T.EyeOff,{className:"h-4 w-4 text-muted-foreground"}):(0,s.jsx)(I.Eye,{className:"h-4 w-4 text-muted-foreground"})})]})]})]}),(0,s.jsxs)(f.Button,{onClick:e2,disabled:eS,className:"w-full",children:[eS&&(0,s.jsx)(S.Loader2,{className:"mr-2 h-4 w-4 animate-spin"}),d.settings?.account?.update||"Update Profile"]})]})}),(0,s.jsx)(N.TabsContent,{value:"ai",className:"space-y-4 py-4",children:G?(0,s.jsx)("div",{className:"flex justify-center py-4",children:(0,s.jsx)(S.Loader2,{className:"h-6 w-6 animate-spin text-muted-foreground"})}):(0,s.jsxs)("div",{className:"space-y-4 border rounded-lg p-4 bg-muted/30",children:[(0,s.jsxs)("div",{className:"space-y-2",children:[(0,s.jsx)(y.Label,{children:d.settings?.tabs?.ai||"AI Provider"}),(0,s.jsxs)(b.Select,{value:ea.aiProvider,onValueChange:e=>er(s=>({...s,aiProvider:e})),children:[(0,s.jsx)(b.SelectTrigger,{children:(0,s.jsx)(b.SelectValue,{})}),(0,s.jsxs)(b.SelectContent,{children:[eb.map(e=>(0,s.jsx)(b.SelectItem,{value:e,children:ey[e].name},e)),(0,s.jsx)(b.SelectItem,{value:"anthropic",children:"Anthropic / Compatible"}),(0,s.jsx)(b.SelectItem,{value:"azure",children:"Azure OpenAI"}),(0,s.jsx)(b.SelectItem,{value:"openai",children:"OpenAI / Compatible"}),(0,s.jsx)(b.SelectItem,{value:"gemini",children:"Google Gemini"})]})]})]}),"openai"===ea.aiProvider&&(0,s.jsxs)("div",{className:"space-y-3 animate-in fade-in slide-in-from-top-2",children:[(0,s.jsxs)("div",{className:"space-y-2",children:[(0,s.jsxs)("div",{className:"flex items-center justify-between",children:[(0,s.jsx)(y.Label,{children:d.settings?.ai?.instances||"Instance"}),(0,s.jsxs)(f.Button,{type:"button",variant:"outline",size:"sm",onClick:()=>{let e=ea.openai?.instances||[];if(e.length>=10)return;let s={id:"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,e=>{let s=16*Math.random()|0;return("x"===e?s:3&s|8).toString(16)}),name:`Instance ${e.length+1}`,apiKey:"",baseUrl:"https://api.openai.com/v1",model:"gpt-6.1-sol"};er(e=>({...e,openai:{instances:[...e.openai?.instances||[],s],activeInstanceId:s.id}})),en(s.id)},disabled:(ea.openai?.instances?.length||0)>=10,className:"h-7 px-2 text-xs",children:[(0,s.jsx)(D.Plus,{className:"h-3 w-3 mr-1"}),d.settings?.ai?.addInstance||"Add"]})]}),(ea.openai?.instances?.length||0)>0?(0,s.jsxs)("div",{className:"flex gap-2",children:[(0,s.jsxs)(b.Select,{value:ei||ea.openai?.activeInstanceId||"",onValueChange:e=>{en(e),er(s=>({...s,openai:{...s.openai,activeInstanceId:e}}))},children:[(0,s.jsx)(b.SelectTrigger,{className:"flex-1",children:(0,s.jsx)(b.SelectValue,{placeholder:d.settings?.ai?.selectInstance||"Select Instance"})}),(0,s.jsx)(b.SelectContent,{children:(ea.openai?.instances||[]).map(e=>(0,s.jsx)(b.SelectItem,{value:e.id,children:e.name},e.id))})]}),(ea.openai?.instances?.length||0)>1&&(0,s.jsx)(f.Button,{type:"button",variant:"outline",size:"icon",onClick:async()=>{let e,s,t=ei||ea.openai?.activeInstanceId;t&&await (0,ef.confirmDialog)(d.settings?.ai?.confirmDelete||"Delete this instance?",{destructive:!0})&&(s=(e=(ea.openai?.instances||[]).filter(e=>e.id!==t)).length>0?e[0].id:void 0,er(t=>({...t,openai:{instances:e,activeInstanceId:s}})),en(s))},className:"h-10 w-10 text-destructive hover:text-destructive",children:(0,s.jsx)(k.Trash2,{className:"h-4 w-4"})})]}):(0,s.jsx)("p",{className:"text-sm text-muted-foreground",children:d.settings?.ai?.noInstances||"No instances configured. Click 'Add' to create one."}),(ea.openai?.instances?.length||0)>=10&&(0,s.jsx)("p",{className:"text-xs text-amber-600",children:d.settings?.ai?.maxInstancesReached||"Maximum instances reached (10)"})]}),st()&&(0,s.jsxs)("div",{className:"space-y-3 p-3 border rounded-md bg-background",children:[(0,s.jsxs)("div",{className:"space-y-2",children:[(0,s.jsxs)(y.Label,{children:[d.settings?.ai?.instanceName||"Instance Name"," ",(0,s.jsx)("span",{className:"text-destructive",children:"*"})]}),(0,s.jsx)(v.Input,{value:st()?.name||"",onChange:e=>sa("name",e.target.value),placeholder:"e.g. 智谱 GLM-4V",className:st()?.name?.trim()?"":"border-destructive"})]}),(0,s.jsxs)("div",{className:"space-y-2",children:[(0,s.jsxs)(y.Label,{children:["API Key ",(0,s.jsx)("span",{className:"text-destructive",children:"*"})]}),(0,s.jsxs)("div",{className:"relative",children:[(0,s.jsx)(v.Input,{type:es?"text":"password",value:st()?.apiKey||"",onChange:e=>sa("apiKey",e.target.value),placeholder:"sk-...",className:`pr-10 ${!st()?.apiKey?.trim()?"border-destructive":""}`}),(0,s.jsx)(f.Button,{type:"button",variant:"ghost",size:"icon",className:"absolute right-0 top-0 h-full px-3 py-2 hover:bg-transparent",onClick:()=>et(!es),children:es?(0,s.jsx)(T.EyeOff,{className:"h-4 w-4 text-muted-foreground"}):(0,s.jsx)(I.Eye,{className:"h-4 w-4 text-muted-foreground"})})]})]}),(0,s.jsxs)("div",{className:"space-y-2 pt-4 border-t",children:[(0,s.jsxs)(y.Label,{children:["Base URL ",(0,s.jsx)("span",{className:"text-destructive",children:"*"})]}),(0,s.jsx)(v.Input,{value:st()?.baseUrl||"",onChange:e=>sa("baseUrl",e.target.value),placeholder:"https://api.openai.com/v1",className:st()?.baseUrl?.trim()?"":"border-destructive"})]}),(0,s.jsx)(ew,{provider:"openai",apiKey:st()?.apiKey,baseUrl:st()?.baseUrl,currentModel:st()?.model,onModelChange:e=>sa("model",e)})]})]}),"gemini"===ea.aiProvider&&(0,s.jsxs)("div",{className:"space-y-3 animate-in fade-in slide-in-from-top-2",children:[(0,s.jsxs)("div",{className:"space-y-2",children:[(0,s.jsx)(y.Label,{children:"API Key"}),(0,s.jsxs)("div",{className:"relative",children:[(0,s.jsx)(v.Input,{type:es?"text":"password",value:ea.gemini?.apiKey||"",onChange:e=>ss("gemini","apiKey",e.target.value),placeholder:"AIza...",className:"pr-10"}),(0,s.jsx)(f.Button,{type:"button",variant:"ghost",size:"icon",className:"absolute right-0 top-0 h-full px-3 py-2 hover:bg-transparent",onClick:()=>et(!es),children:es?(0,s.jsx)(T.EyeOff,{className:"h-4 w-4 text-muted-foreground"}):(0,s.jsx)(I.Eye,{className:"h-4 w-4 text-muted-foreground"})})]})]}),(0,s.jsxs)("div",{className:"space-y-2",children:[(0,s.jsx)(y.Label,{children:"Base URL (Optional)"}),(0,s.jsx)(v.Input,{value:ea.gemini?.baseUrl||"",onChange:e=>ss("gemini","baseUrl",e.target.value),placeholder:"https://generativelanguage.googleapis.com"})]}),(0,s.jsx)(ew,{provider:"gemini",apiKey:ea.gemini?.apiKey,baseUrl:ea.gemini?.baseUrl,currentModel:ea.gemini?.model,onModelChange:e=>ss("gemini","model",e)})]}),"anthropic"===ea.aiProvider&&(0,s.jsx)(eU,{value:ea.anthropic,onChange:e=>er(s=>({...s,anthropic:e}))}),eN(ea.aiProvider)&&(0,s.jsx)(eK,{provider:ea.aiProvider,value:ea[ea.aiProvider],onChange:e=>er(s=>({...s,[s.aiProvider]:e}))},ea.aiProvider),"azure"===ea.aiProvider&&(0,s.jsxs)("div",{className:"space-y-3 animate-in fade-in slide-in-from-top-2",children:[(0,s.jsxs)("div",{className:"space-y-2",children:[(0,s.jsxs)(y.Label,{children:[d.settings?.ai?.azureEndpoint||"Azure Endpoint"," ",(0,s.jsx)("span",{className:"text-destructive",children:"*"})]}),(0,s.jsx)(v.Input,{value:ea.azure?.endpoint||"",onChange:e=>er(s=>({...s,azure:{...s.azure,endpoint:e.target.value}})),placeholder:d.settings?.ai?.azureEndpointPlaceholder||"https://your-resource.openai.azure.com",className:ea.azure?.endpoint?.trim()?"":"border-destructive"})]}),(0,s.jsxs)("div",{className:"space-y-2",children:[(0,s.jsxs)(y.Label,{children:[d.settings?.ai?.azureDeployment||"Deployment Name"," ",(0,s.jsx)("span",{className:"text-destructive",children:"*"})]}),(0,s.jsx)(v.Input,{value:ea.azure?.deploymentName||"",onChange:e=>er(s=>({...s,azure:{...s.azure,deploymentName:e.target.value}})),placeholder:d.settings?.ai?.azureDeploymentPlaceholder||"gpt-4o-deployment",className:ea.azure?.deploymentName?.trim()?"":"border-destructive"})]}),(0,s.jsxs)("div",{className:"space-y-2",children:[(0,s.jsxs)(y.Label,{children:["API Key ",(0,s.jsx)("span",{className:"text-destructive",children:"*"})]}),(0,s.jsxs)("div",{className:"relative",children:[(0,s.jsx)(v.Input,{type:es?"text":"password",value:ea.azure?.apiKey||"",onChange:e=>er(s=>({...s,azure:{...s.azure,apiKey:e.target.value}})),placeholder:"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",className:`pr-10 ${!ea.azure?.apiKey?.trim()?"border-destructive":""}`}),(0,s.jsx)(f.Button,{type:"button",variant:"ghost",size:"icon",className:"absolute right-0 top-0 h-full px-3 py-2 hover:bg-transparent",onClick:()=>et(!es),children:es?(0,s.jsx)(T.EyeOff,{className:"h-4 w-4 text-muted-foreground"}):(0,s.jsx)(I.Eye,{className:"h-4 w-4 text-muted-foreground"})})]})]}),(0,s.jsxs)("div",{className:"space-y-2",children:[(0,s.jsx)(y.Label,{children:d.settings?.ai?.azureApiVersion||"API Version"}),(0,s.jsx)(v.Input,{value:ea.azure?.apiVersion||"",onChange:e=>er(s=>({...s,azure:{...s.azure,apiVersion:e.target.value}})),placeholder:d.settings?.ai?.azureApiVersionPlaceholder||"2024-02-15-preview"})]}),(0,s.jsxs)("div",{className:"space-y-2",children:[(0,s.jsx)(y.Label,{children:d.settings?.ai?.azureModel||"Model Display Name"}),(0,s.jsx)(v.Input,{value:ea.azure?.model||"",onChange:e=>er(s=>({...s,azure:{...s.azure,model:e.target.value}})),placeholder:"gpt-4o"})]})]}),(0,s.jsxs)("div",{className:"space-y-3 pt-3 border-t",children:[(0,s.jsxs)("div",{className:"flex gap-2",children:[(0,s.jsxs)(f.Button,{type:"button",variant:"outline",onClick:sr,disabled:el||Y,className:"flex-1",children:[el?(0,s.jsx)(S.Loader2,{className:"mr-2 h-4 w-4 animate-spin"}):(0,s.jsx)(M,{className:"mr-2 h-4 w-4"}),el?d.settings?.ai?.testing||"测试中...":d.settings?.ai?.testConnection||"测试连接"]}),(0,s.jsxs)(f.Button,{onClick:e1,disabled:Y||el,className:"flex-1",children:[Y&&(0,s.jsx)(S.Loader2,{className:"mr-2 h-4 w-4 animate-spin"}),d.settings?.ai?.save||"Save AI Settings"]})]}),ec&&(0,s.jsxs)("div",{className:`p-3 rounded-md text-sm ${ec.success?"bg-green-50 border border-green-200":"bg-red-50 border border-red-200"}`,children:[(0,s.jsx)("div",{className:"flex items-center gap-2 font-medium mb-2",children:ec.success?(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(R,{className:"h-4 w-4 text-green-600"}),(0,s.jsx)("span",{className:"text-green-700",children:d.settings?.ai?.testSuccess||"连接成功"}),ec.modelInfo&&(0,s.jsxs)("span",{className:"text-green-600 text-xs",children:["(",ec.modelInfo,")"]})]}):(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(P.XCircle,{className:"h-4 w-4 text-red-600"}),(0,s.jsx)("span",{className:"text-red-700",children:d.settings?.ai?.testFailed||"连接失败"})]})}),ec.success&&(0,s.jsxs)("div",{className:"space-y-1 text-xs",children:[(0,s.jsxs)("div",{className:"flex items-center gap-2",children:[(0,s.jsxs)("span",{className:"text-muted-foreground",children:[d.settings?.ai?.textSupport||"文本生成",":"]}),(0,s.jsxs)("span",{className:"text-green-600",children:["✓ ",d.settings?.ai?.supported||"支持"]})]}),(0,s.jsxs)("div",{className:"flex items-center gap-2",children:[(0,s.jsxs)("span",{className:"text-muted-foreground",children:[d.settings?.ai?.visionSupport||"图像识别/多模态",":"]}),ec.visionSupport?(0,s.jsxs)("span",{className:"text-green-600",children:["✓ ",d.settings?.ai?.supported||"支持"]}):(0,s.jsxs)("span",{className:"text-amber-600",children:["✗ ",ec.visionError?d.settings?.ai?.errors?.[ec.visionError]||ec.visionError.replace("UNKNOWN:",""):d.settings?.ai?.notSupported||"不支持"]})]}),(0,s.jsx)("p",{className:"text-muted-foreground/60 text-[10px] pl-1",children:"* 由于网络问题,可能测试结果不准确"})]}),!ec.success&&ec.textError&&(0,s.jsx)("p",{className:"text-red-600 text-xs mt-1",children:d.settings?.ai?.errors?.[ec.textError]||ec.textError.replace("UNKNOWN:","")})]})]})]})}),(0,s.jsxs)(N.TabsContent,{value:"prompts",className:"space-y-4 py-4",children:[(0,s.jsx)(eD,{config:ea,onUpdate:(e,s)=>{er(t=>({...t,prompts:{...t.prompts,[e]:s}}))}}),(0,s.jsxs)(f.Button,{onClick:e1,disabled:Y,className:"w-full",children:[Y&&(0,s.jsx)(S.Loader2,{className:"mr-2 h-4 w-4 animate-spin"}),d.settings?.prompts?.save||"Save Prompt Settings"]})]}),n?.user?.role==="admin"&&(0,s.jsxs)(N.TabsContent,{value:"admin",className:"space-y-4 py-4",children:[(0,s.jsxs)(f.Button,{variant:"outline",className:"w-full justify-start gap-2",onClick:()=>{h(!1),eJ.push("/admin")},children:[(0,s.jsx)(o.BarChart3,{className:"h-4 w-4"}),d.admin?.dashboard?.title||"Admin Dashboard"]}),(0,s.jsx)("div",{className:"border-t pt-4",children:(0,s.jsx)(ej,{})})]}),(0,s.jsx)(N.TabsContent,{value:"danger",className:"space-y-4 py-4",children:(0,s.jsxs)("div",{className:"space-y-3",children:[(0,s.jsxs)("div",{className:"p-4 border border-blue-200 rounded-lg bg-blue-50",children:[(0,s.jsx)("h4",{className:"text-sm font-bold text-blue-900 mb-3",children:d.settings?.dataManagement||"Data Management"}),(0,s.jsxs)("div",{className:"mb-4",children:[(0,s.jsxs)("div",{className:"flex items-center justify-between mb-2",children:[(0,s.jsx)("span",{className:"text-sm text-blue-800 font-medium",children:d.settings?.exportData||"Export Data"}),(0,s.jsxs)("div",{className:"flex items-center gap-2",children:[(0,s.jsxs)(f.Button,{variant:"outline",size:"sm",onClick:e6,disabled:eA,className:"bg-blue-100 hover:bg-blue-200 text-blue-900 border-blue-300",children:[eA?(0,s.jsx)(S.Loader2,{className:"mr-2 h-4 w-4 animate-spin"}):(0,s.jsx)(_.Download,{className:"mr-2 h-4 w-4"}),d.settings?.exportData||"Export"]}),n?.user?.role==="admin"&&(0,s.jsxs)(f.Button,{variant:"outline",size:"sm",onClick:e8,disabled:eA,className:"bg-orange-100 hover:bg-orange-200 text-orange-900 border-orange-300",children:[eA?(0,s.jsx)(S.Loader2,{className:"mr-2 h-4 w-4 animate-spin"}):(0,s.jsx)(_.Download,{className:"mr-2 h-4 w-4"}),d.settings?.exportAllData||"Export All"]})]})]}),(0,s.jsx)("p",{className:"text-xs text-blue-700",children:d.settings?.exportDataDesc||"Export all data as JSON file."})]}),(0,s.jsxs)("div",{children:[(0,s.jsxs)("div",{className:"flex items-center justify-between mb-2",children:[(0,s.jsx)("span",{className:"text-sm text-blue-800 font-medium",children:d.settings?.importData||"Import Data"}),(0,s.jsxs)("div",{className:"flex items-center gap-2",children:[(0,s.jsx)("input",{type:"file",accept:".json",onChange:e=>{let s=e.target.files?.[0];s&&(eY(s),eG(s.name))},className:"hidden",id:"import-file-input",disabled:eH}),(0,s.jsxs)(f.Button,{variant:"outline",size:"sm",onClick:()=>document.getElementById("import-file-input")?.click(),disabled:eH,className:"bg-blue-100 hover:bg-blue-200 text-blue-900 border-blue-300",children:[eH?(0,s.jsx)(S.Loader2,{className:"mr-2 h-4 w-4 animate-spin"}):(0,s.jsx)(U,{className:"mr-2 h-4 w-4"}),eZ||d.settings?.selectFile||"Select File"]}),eW&&(0,s.jsxs)(f.Button,{variant:"outline",size:"sm",onClick:e7,disabled:eH,className:"bg-green-100 hover:bg-green-200 text-green-900 border-green-300",children:[eH?(0,s.jsx)(S.Loader2,{className:"mr-2 h-4 w-4 animate-spin"}):(0,s.jsx)(R,{className:"mr-2 h-4 w-4"}),d.settings?.importData||"Import"]}),eW&&n?.user?.role==="admin"&&(0,s.jsxs)(f.Button,{variant:"outline",size:"sm",onClick:e9,disabled:eH,className:"bg-orange-100 hover:bg-orange-200 text-orange-900 border-orange-300",children:[eH?(0,s.jsx)(S.Loader2,{className:"mr-2 h-4 w-4 animate-spin"}):(0,s.jsx)(R,{className:"mr-2 h-4 w-4"}),d.settings?.importAllData||"Import All"]})]})]}),(0,s.jsx)("p",{className:"text-xs text-blue-700",children:d.settings?.importDataDesc||"Import data from JSON file. Existing data will be skipped."})]})]}),n?.user?.role==="admin"&&(0,s.jsxs)("div",{className:"p-4 border border-blue-200 rounded-lg bg-blue-50",children:[(0,s.jsxs)("div",{className:"flex items-center justify-between",children:[(0,s.jsx)("div",{className:"flex flex-col",children:(0,s.jsxs)("span",{className:"text-sm text-blue-900 font-bold flex items-center gap-2",children:[(0,s.jsx)(A.RefreshCw,{className:"h-4 w-4"}),d.settings?.migrateTags||"Migrate Tags"]})}),(0,s.jsx)(f.Button,{variant:"outline",size:"sm",onClick:se,disabled:X,className:"bg-blue-100 hover:bg-blue-200 text-blue-900 border-blue-300",children:X?(0,s.jsx)(S.Loader2,{className:"h-4 w-4 animate-spin"}):(0,s.jsx)(A.RefreshCw,{className:"h-4 w-4"})})]}),(0,s.jsx)("p",{className:"text-xs text-blue-800 mt-2 font-medium",children:d.settings?.migrateTagsDesc||"Re-populates standard tags from file"})]}),(0,s.jsxs)("div",{className:"p-4 border border-red-200 rounded-lg bg-red-50",children:[(0,s.jsxs)("div",{className:"flex items-center justify-between",children:[(0,s.jsx)("span",{className:"text-sm text-red-700 font-medium",children:d.settings?.clearData||"Clear Practice Data"}),(0,s.jsx)(f.Button,{variant:"destructive",size:"sm",onClick:e4,disabled:F,children:F?(0,s.jsx)(S.Loader2,{className:"h-4 w-4 animate-spin"}):(0,s.jsx)(k.Trash2,{className:"h-4 w-4"})})]}),(0,s.jsx)("p",{className:"text-xs text-red-600 mt-2",children:d.settings?.clearDataDesc||"This will permanently delete all practice history. Irreversible."})]}),(0,s.jsxs)("div",{className:"p-4 border border-red-200 rounded-lg bg-red-50",children:[(0,s.jsxs)("div",{className:"flex items-center justify-between",children:[(0,s.jsx)("span",{className:"text-sm text-red-700 font-medium",children:d.settings?.clearErrorData||"Clear Error Data"}),(0,s.jsx)(f.Button,{variant:"destructive",size:"sm",onClick:e3,disabled:$,children:$?(0,s.jsx)(S.Loader2,{className:"h-4 w-4 animate-spin"}):(0,s.jsx)(k.Trash2,{className:"h-4 w-4"})})]}),(0,s.jsx)("p",{className:"text-xs text-red-600 mt-2",children:d.settings?.clearErrorDataDesc||"This will permanently delete all error items. Irreversible."})]}),n?.user?.role==="admin"&&(0,s.jsx)(s.Fragment,{children:(0,s.jsxs)("div",{className:"p-4 border border-red-600/50 rounded-lg bg-red-100/50",children:[(0,s.jsxs)("div",{className:"flex items-center justify-between",children:[(0,s.jsx)("div",{className:"flex flex-col",children:(0,s.jsxs)("span",{className:"text-sm text-red-900 font-bold flex items-center gap-2",children:[(0,s.jsx)(C,{className:"h-4 w-4"}),d.settings?.systemReset||"System Initialization"]})}),(0,s.jsx)(f.Button,{variant:"destructive",size:"sm",onClick:e5,disabled:V,className:"bg-red-700 hover:bg-red-800",children:V?(0,s.jsx)(S.Loader2,{className:"h-4 w-4 animate-spin"}):(0,s.jsx)(k.Trash2,{className:"h-4 w-4"})})]}),(0,s.jsx)("p",{className:"text-xs text-red-800 mt-2 font-medium",children:d.settings?.systemResetDesc||"Resets the system to factory state. Deletes ALL data."})]})})]})}),(0,s.jsx)(N.TabsContent,{value:"about",className:"space-y-4 py-4",children:(0,s.jsxs)("div",{className:"flex flex-col items-center justify-center space-y-6 py-8 text-center bg-muted/30 rounded-lg border",children:[(0,s.jsxs)("div",{className:"space-y-2",children:[(0,s.jsx)("h3",{className:"text-2xl font-bold",children:d.app?.title||"Smart Error Notebook"}),(0,s.jsx)("p",{className:"text-muted-foreground",children:d.settings?.about?.desc||"AI-powered learning assistant"})]}),(0,s.jsxs)("div",{className:"flex items-center space-x-2 text-sm text-muted-foreground border px-4 py-2 rounded-full bg-background",children:[(0,s.jsx)(ez,{className:"h-4 w-4"}),(0,s.jsxs)("span",{children:[d.settings?.about?.version||"Version",": v",Q||"unknown"]})]}),(0,s.jsxs)("div",{className:"flex flex-col sm:flex-row flex-wrap justify-center gap-4 w-full sm:w-auto px-4 sm:px-0",children:[(0,s.jsx)(f.Button,{variant:"outline",asChild:!0,className:"gap-2 w-full sm:w-auto",children:(0,s.jsxs)("a",{href:"https://github.com/wttwins/wrong-notebook",target:"_blank",rel:"noopener noreferrer",children:[(0,s.jsx)(eq,{className:"h-4 w-4"}),d.settings?.about?.github||"GitHub Repository",(0,s.jsx)(e$,{className:"h-3 w-3 ml-1 opacity-50"})]})}),(0,s.jsx)(f.Button,{variant:"outline",asChild:!0,className:"gap-2 w-full sm:w-auto",children:(0,s.jsxs)("a",{href:"https://github.com/wttwins/wrong-notebook/releases",target:"_blank",rel:"noopener noreferrer",children:[(0,s.jsx)(eV,{className:"h-4 w-4"}),d.settings?.about?.releaseNotes||"Release Notes",(0,s.jsx)(e$,{className:"h-3 w-3 ml-1 opacity-50"})]})}),(0,s.jsx)(f.Button,{variant:"outline",asChild:!0,className:"gap-2 w-full sm:w-auto",children:(0,s.jsxs)("a",{href:"https://github.com/wttwins/wrong-notebook/issues",target:"_blank",rel:"noopener noreferrer",children:[(0,s.jsx)(eO,{className:"h-4 w-4"}),d.settings?.about?.feedback||"Feedback",(0,s.jsx)(e$,{className:"h-3 w-3 ml-1 opacity-50"})]})})]}),(0,s.jsx)("p",{className:"text-xs text-muted-foreground mt-8",children:d.settings?.about?.copyright||"© 2025 Wttwins. All rights reserved."})]})})]})]})]})}let eX=[/^\/login/,/^\/register/,/^\/print-preview/,/^\/exams\/[^/]+\/print/],eW=[{key:"home",href:"/",icon:p,match:e=>"/"===e},{key:"notebooks",href:"/notebooks",icon:c.BookOpen,match:e=>e.startsWith("/notebooks")||e.startsWith("/error-items")||e.startsWith("/practice")},{key:"tags",href:"/tags",icon:h,match:e=>e.startsWith("/tags")},{key:"stats",href:"/stats",icon:o.BarChart3,match:e=>e.startsWith("/stats")},{key:"exams",href:"/exams",icon:d.FileText,match:e=>e.startsWith("/exams")}];function eY({children:e}){let r=(0,l.usePathname)()||"/",{t:o}=(0,t.useLanguage)(),{data:c,status:d}=(0,a.useSession)();if(eX.some(e=>e.test(r))||"unauthenticated"===d)return(0,s.jsx)(s.Fragment,{children:e});let m=c?.user?.role==="admin",p=c?.user?.name||c?.user?.email||"";return(0,s.jsxs)("div",{className:"min-h-screen",children:[(0,s.jsx)("header",{className:"sticky top-0 z-40 border-b bg-card/80 backdrop-blur-md supports-[backdrop-filter]:bg-card/70 print:hidden",children:(0,s.jsxs)("div",{className:"mx-auto flex h-14 max-w-6xl items-center gap-3 px-4 md:h-16 md:px-8",children:[(0,s.jsxs)(n.default,{href:"/",className:"flex shrink-0 items-center gap-2",children:[(0,s.jsx)(i.default,{src:"/icons/icon.png",alt:"",width:32,height:32,className:"rounded-lg",priority:!0,unoptimized:!0}),(0,s.jsx)("span",{className:"text-base font-semibold tracking-tight",children:o.pageTitle.base})]}),(0,s.jsx)("nav",{className:"ml-4 hidden items-center gap-1 md:flex",children:eW.map(e=>{let t=e.match(r),a=e.icon;return(0,s.jsxs)(n.default,{href:e.href,className:(0,en.cn)("flex items-center gap-1.5 rounded-lg px-3 py-2 text-sm font-medium transition-colors",t?"bg-accent text-accent-foreground":"text-muted-foreground hover:bg-muted hover:text-foreground"),"aria-current":t?"page":void 0,children:[(0,s.jsx)(a,{className:"h-4 w-4"}),o.nav[e.key]]},e.key)})}),(0,s.jsxs)("div",{className:"ml-auto flex items-center gap-1",children:[p&&(0,s.jsxs)("span",{className:"mr-2 hidden max-w-40 items-center gap-2 truncate text-sm text-muted-foreground lg:flex",children:[(0,s.jsx)("span",{className:"flex h-7 w-7 shrink-0 items-center justify-center rounded-full bg-primary/10 text-xs font-semibold text-primary",children:p.slice(0,1).toUpperCase()}),(0,s.jsx)("span",{className:"truncate",children:p})]}),m&&(0,s.jsx)(n.default,{href:"/admin",title:o.nav.admin,children:(0,s.jsxs)(f.Button,{variant:"ghost",size:"icon",className:"rounded-full",children:[(0,s.jsx)(x,{className:"h-5 w-5"}),(0,s.jsx)("span",{className:"sr-only",children:o.nav.admin})]})}),(0,s.jsx)(eH,{}),(0,s.jsx)(f.Button,{variant:"ghost",size:"icon",className:"rounded-full text-muted-foreground hover:text-destructive",onClick:()=>(0,a.signOut)({callbackUrl:"/login"}),title:o.app.logout,children:(0,s.jsx)(u,{className:"h-5 w-5"})})]})]})}),(0,s.jsx)("div",{className:"pb-20 md:pb-0",children:e}),(0,s.jsx)("nav",{className:"pb-safe fixed inset-x-0 bottom-0 z-40 border-t bg-card/90 backdrop-blur-md md:hidden print:hidden",children:(0,s.jsx)("div",{className:"grid h-16 grid-cols-5",children:eW.map(e=>{let t=e.match(r),a=e.icon;return(0,s.jsxs)(n.default,{href:e.href,className:(0,en.cn)("flex flex-col items-center justify-center gap-1 text-[11px] font-medium transition-colors",t?"text-primary":"text-muted-foreground"),"aria-current":t?"page":void 0,children:[(0,s.jsx)("span",{className:(0,en.cn)("flex h-7 w-12 items-center justify-center rounded-full transition-colors",t&&"bg-accent"),children:(0,s.jsx)(a,{className:"h-5 w-5"})}),o.nav[e.key]]},e.key)})})})]})}let eZ=(0,m.default)("list-todo",[["path",{d:"M13 5h8",key:"a7qcls"}],["path",{d:"M13 12h8",key:"h98zly"}],["path",{d:"M13 19h8",key:"c3s6r1"}],["path",{d:"m3 17 2 2 4-4",key:"1jhpwq"}],["rect",{x:"3",y:"4",width:"6",height:"6",rx:"1",key:"cif1o7"}]]),eG=[/^\/login/,/^\/register/,/^\/print-preview/,/^\/exams\/[^/]+\/print/];function eJ(){let{t:e}=(0,t.useLanguage)(),{timeZone:i}=(0,r.useTimeZone)(),{status:o}=(0,a.useSession)(),c=(0,l.usePathname)(),[d,m]=(0,g.useState)(!1),[u,p]=(0,g.useState)([]),[x,h]=(0,g.useState)(()=>Date.now()),v="authenticated"!==o||eG.some(e=>e.test(c||"")),y=(0,g.useCallback)(async()=>{if("u"<typeof document||"hidden"!==document.visibilityState)try{let e=await eg.apiClient.get("/api/tasks");p(e.tasks),h(Date.now())}catch{}},[]);if((0,g.useEffect)(()=>{if(v)return;let e=setTimeout(y,0),s=setInterval(y,d?2e3:15e3);return()=>{clearTimeout(e),clearInterval(s)}},[v,d,y]),v)return null;let b=u.filter(e=>"running"===e.status).length,N=u.some(e=>"running"!==e.status),w=async()=>{try{let e=await eg.apiClient.delete("/api/tasks");p(e.tasks)}catch{}};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)(f.Button,{variant:"outline",size:"icon",className:"fixed bottom-20 right-4 z-40 h-11 w-11 rounded-full shadow-lg md:bottom-6 md:right-6 print:hidden",onClick:()=>m(!0),"aria-label":e.backgroundTasks.title,title:e.backgroundTasks.title,children:[b>0?(0,s.jsx)(S.Loader2,{className:"h-5 w-5 animate-spin"}):(0,s.jsx)(eZ,{className:"h-5 w-5"}),b>0&&(0,s.jsx)("span",{className:"absolute -right-1 -top-1 flex h-5 min-w-5 items-center justify-center rounded-full bg-primary px-1 text-xs text-primary-foreground",children:b})]}),(0,s.jsx)(j.Dialog,{open:d,onOpenChange:m,children:(0,s.jsxs)(j.DialogContent,{className:"max-h-[85vh] overflow-y-auto sm:max-w-lg",children:[(0,s.jsxs)(j.DialogHeader,{children:[(0,s.jsx)(j.DialogTitle,{children:e.backgroundTasks.title}),(0,s.jsx)(j.DialogDescription,{children:e.backgroundTasks.description})]}),0===u.length?(0,s.jsx)("p",{className:"py-6 text-center text-sm text-muted-foreground",children:e.backgroundTasks.empty}):(0,s.jsx)("ul",{className:"space-y-2",children:u.map(t=>{var a,r;let l;return(0,s.jsx)("li",{className:"rounded-md border p-3 text-sm",children:(0,s.jsxs)("div",{className:"flex items-start gap-2",children:["running"===t.status&&(0,s.jsx)(S.Loader2,{className:"mt-0.5 h-4 w-4 shrink-0 animate-spin text-primary"}),"succeeded"===t.status&&(0,s.jsx)(R,{className:"mt-0.5 h-4 w-4 shrink-0 text-green-600"}),"failed"===t.status&&(0,s.jsx)(P.XCircle,{className:"mt-0.5 h-4 w-4 shrink-0 text-destructive"}),(0,s.jsxs)("div",{className:"min-w-0 flex-1 space-y-1",children:[(0,s.jsxs)("div",{className:"font-medium",children:[e.backgroundTasks.kinds[t.kind],(0,s.jsxs)("span",{className:"font-normal text-muted-foreground",children:[" · ",e.backgroundTasks.status[t.status]]})]}),t.subject&&(0,s.jsx)("div",{className:"break-words text-muted-foreground",children:t.subject}),t.progress&&t.progress.total>0&&(0,s.jsxs)("div",{className:"space-y-1",children:[(0,s.jsx)("div",{className:"h-1.5 overflow-hidden rounded bg-muted",children:(0,s.jsx)("div",{className:"h-full bg-primary transition-all",style:{width:`${Math.round(t.progress.done/t.progress.total*100)}%`}})}),(0,s.jsxs)("div",{className:"text-xs text-muted-foreground",children:[e.backgroundTasks.progress.replace("{done}",String(t.progress.done)).replace("{total}",String(t.progress.total)),t.progress.failed>0&&` \xb7 ${e.backgroundTasks.failedCount.replace("{count}",String(t.progress.failed))}`]})]}),t.error&&(0,s.jsx)("div",{className:"text-xs text-destructive",children:(s=>{if(!s)return null;let t=e.backgroundTasks.errors[s]??e.errors[s];return"string"==typeof t?t:s})(t.error)}),(0,s.jsxs)("div",{className:"flex flex-wrap items-center gap-x-3 text-xs text-muted-foreground",children:[(0,s.jsx)("span",{children:e.backgroundTasks.startedAt.replace("{time}",(0,K.formatDateTime)(t.startedAt,"HH:mm:ss",i))}),(0,s.jsx)("span",{children:e.backgroundTasks.elapsed.replace("{time}",(a=t.startedAt,r=t.finishedAt,l=Math.max(0,Math.round(((r?Date.parse(r):x)-Date.parse(a))/1e3)),`${Math.floor(l/60)}:${String(l%60).padStart(2,"0")}`))}),t.link&&(0,s.jsx)(n.default,{href:t.link,className:"text-primary hover:underline",onClick:()=>m(!1),children:e.backgroundTasks.view})]})]})]})},t.id)})}),(0,s.jsxs)("div",{className:"flex items-center justify-between gap-2 pt-1",children:[(0,s.jsx)("p",{className:"text-xs text-muted-foreground",children:e.backgroundTasks.retentionHint}),N&&(0,s.jsx)(f.Button,{variant:"ghost",size:"sm",onClick:w,children:e.backgroundTasks.clearFinished})]})]})})]})}var eQ=e.i(37727);let e0={success:{icon:R,className:"text-success"},error:{icon:P.XCircle,className:"text-destructive"},warning:{icon:C,className:"text-warning"},info:{icon:ez,className:"text-primary"}};function e1(){let{t:e}=(0,t.useLanguage)(),[a,r]=(0,g.useState)([]),[i,n]=(0,g.useState)(null);return(0,g.useEffect)(()=>(0,ef.subscribeFeedback)(e=>{r(e.toasts),n(e.confirm)}),[]),(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)("div",{className:"pointer-events-none fixed inset-x-0 top-3 z-[100] flex flex-col items-center gap-2 px-4 print:hidden",role:"status","aria-live":"polite",children:a.map(t=>{let{icon:a,className:r}=e0[t.type];return(0,s.jsxs)("div",{className:"pointer-events-auto flex w-full max-w-sm items-start gap-3 rounded-xl border bg-card/95 px-4 py-3 text-sm shadow-lg backdrop-blur animate-in fade-in slide-in-from-top-2 duration-200",children:[(0,s.jsx)(a,{className:(0,en.cn)("mt-0.5 h-4 w-4 shrink-0",r)}),(0,s.jsx)("p",{className:"min-w-0 flex-1 whitespace-pre-line break-words leading-relaxed",children:t.message}),(0,s.jsx)("button",{type:"button",className:"shrink-0 rounded p-0.5 text-muted-foreground transition-colors hover:text-foreground",onClick:()=>(0,ef.dismissToast)(t.id),"aria-label":e.common.close,children:(0,s.jsx)(eQ.X,{className:"h-3.5 w-3.5"})})]},t.id)})}),(0,s.jsx)(j.Dialog,{open:!!i,onOpenChange:e=>{e||i?.resolve(!1)},children:(0,s.jsxs)(j.DialogContent,{className:"sm:max-w-md",children:[(0,s.jsxs)(j.DialogHeader,{children:[(0,s.jsxs)(j.DialogTitle,{className:"flex items-center gap-2",children:[i?.destructive&&(0,s.jsx)(C,{className:"h-5 w-5 text-destructive"}),i?.title||e.common.confirmTitle]}),(0,s.jsx)(j.DialogDescription,{className:"whitespace-pre-line pt-1 text-left leading-relaxed",children:i?.message})]}),(0,s.jsxs)(j.DialogFooter,{className:"gap-2",children:[(0,s.jsx)(f.Button,{variant:"outline",onClick:()=>i?.resolve(!1),children:i?.cancelText||e.common.cancel}),(0,s.jsx)(f.Button,{variant:i?.destructive?"destructive":"default",onClick:()=>i?.resolve(!0),autoFocus:!0,children:i?.confirmText||e.common.confirm})]})]})})]})}e.s(["Providers",0,function({children:e,timeZone:i}){return(0,s.jsx)(a.SessionProvider,{children:(0,s.jsx)(t.LanguageProvider,{children:(0,s.jsxs)(r.TimeZoneProvider,{initialTimeZone:i,children:[(0,s.jsx)(eY,{children:e}),(0,s.jsx)(eJ,{}),(0,s.jsx)(e1,{})]})})})}],1661)}]);
@@ -1 +0,0 @@
1
- (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,71689,e=>{"use strict";let t=(0,e.i(75254).default)("arrow-left",[["path",{d:"m12 19-7-7 7-7",key:"1l729n"}],["path",{d:"M19 12H5",key:"x3x0zl"}]]);e.s(["ArrowLeft",0,t],71689)},63059,e=>{"use strict";let t=(0,e.i(75254).default)("chevron-right",[["path",{d:"m9 18 6-6-6-6",key:"mthhwq"}]]);e.s(["ChevronRight",0,t],63059)},88699,e=>{"use strict";let t=(0,e.i(75254).default)("pencil",[["path",{d:"M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z",key:"1a8usu"}],["path",{d:"m15 5 4 4",key:"1mk7zo"}]]);e.s(["Pencil",0,t],88699)},66776,e=>{"use strict";var t=e.i(18050),a=e.i(71645),s=e.i(18566),o=e.i(19455),i=e.i(12505),n=e.i(93842),r=e.i(86963),l=e.i(31278),c=e.i(75254);let d=(0,c.default)("locate-fixed",[["line",{x1:"2",x2:"5",y1:"12",y2:"12",key:"bvdh0s"}],["line",{x1:"19",x2:"22",y1:"12",y2:"12",key:"1tbv5k"}],["line",{x1:"12",x2:"12",y1:"2",y2:"5",key:"11lu5j"}],["line",{x1:"12",x2:"12",y1:"19",y2:"22",key:"x3vr5v"}],["circle",{cx:"12",cy:"12",r:"7",key:"fim9np"}],["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}]]);var u=e.i(93479),m=e.i(11110),h=e.i(33547),g=e.i(47279);function x(){let{t:e}=(0,m.useLanguage)(),i=(0,s.useRouter)(),[n,r]=(0,a.useState)(""),[c,x]=(0,a.useState)(null),[p,b]=(0,a.useState)(!1),y=async t=>{t.preventDefault();let a=n.trim();if(!(0,g.isShortId)(a))return void x(e.shortId.invalid);b(!0),x(null);let s=await (0,h.locateByShortId)(a);b(!1),s?i.push(`/error-items/${s}`):x(e.shortId.notFound)};return(0,t.jsxs)("form",{onSubmit:y,className:"space-y-1",children:[(0,t.jsxs)("div",{className:"flex gap-2",children:[(0,t.jsx)(u.Input,{value:n,onChange:e=>{r(e.target.value),x(null)},placeholder:e.shortId.locatePlaceholder,maxLength:6,className:"font-mono sm:max-w-xs","aria-label":e.shortId.locateTitle}),(0,t.jsxs)(o.Button,{type:"submit",variant:"outline",disabled:p||!n.trim(),children:[p?(0,t.jsx)(l.Loader2,{className:"h-4 w-4 animate-spin"}):(0,t.jsx)(d,{className:"h-4 w-4"}),(0,t.jsx)("span",{className:"ml-2",children:e.shortId.locate})]})]}),c&&(0,t.jsx)("p",{className:"text-xs text-destructive",children:c})]})}var p=e.i(10980),b=e.i(7233);let y=(0,c.default)("atom",[["circle",{cx:"12",cy:"12",r:"1",key:"41hilf"}],["path",{d:"M20.2 20.2c2.04-2.03.02-7.36-4.5-11.9-4.54-4.52-9.87-6.54-11.9-4.5-2.04 2.03-.02 7.36 4.5 11.9 4.54 4.52 9.87 6.54 11.9 4.5Z",key:"1l2ple"}],["path",{d:"M15.7 15.7c4.52-4.54 6.54-9.87 4.5-11.9-2.03-2.04-7.36-.02-11.9 4.5-4.52 4.54-6.54 9.87-4.5 11.9 2.03 2.04 7.36.02 11.9-4.5Z",key:"1wam0m"}]]),k=(0,c.default)("book-text",[["path",{d:"M4 19.5v-15A2.5 2.5 0 0 1 6.5 2H19a1 1 0 0 1 1 1v18a1 1 0 0 1-1 1H6.5a1 1 0 0 1 0-5H20",key:"k3hazp"}],["path",{d:"M8 11h8",key:"vwpz6n"}],["path",{d:"M8 7h6",key:"1f0q6e"}]]);var j=e.i(63059);let f=(0,c.default)("flask-conical",[["path",{d:"M14 2v6a2 2 0 0 0 .245.96l5.51 10.08A2 2 0 0 1 18 22H6a2 2 0 0 1-1.755-2.96l5.51-10.08A2 2 0 0 0 10 8V2",key:"18mbvz"}],["path",{d:"M6.453 15h11.094",key:"3shlmq"}],["path",{d:"M8.5 2h7",key:"csnxdl"}]]),v=(0,c.default)("globe",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20",key:"13o1zl"}],["path",{d:"M2 12h20",key:"9i4pu4"}]]),N=(0,c.default)("landmark",[["path",{d:"M10 18v-7",key:"wt116b"}],["path",{d:"M11.12 2.198a2 2 0 0 1 1.76.006l7.866 3.847c.476.233.31.949-.22.949H3.474c-.53 0-.695-.716-.22-.949z",key:"1m329m"}],["path",{d:"M14 18v-7",key:"vav6t3"}],["path",{d:"M18 18v-7",key:"aexdmj"}],["path",{d:"M3 22h18",key:"8prr45"}],["path",{d:"M6 18v-7",key:"1ivflk"}]]);var S=e.i(63639);let w=(0,c.default)("leaf",[["path",{d:"M11 20A7 7 0 0 1 9.8 6.1C15.5 5 17 4.48 19 2c1 2 2 4.18 2 8 0 5.5-4.78 10-10 10Z",key:"nnexq3"}],["path",{d:"M2 21c0-3 1.85-5.36 5.08-6C9.5 14.52 12 13 13 12",key:"mt58a7"}]]);var C=e.i(88699);let E=(0,c.default)("scale",[["path",{d:"M12 3v18",key:"108xh3"}],["path",{d:"m19 8 3 8a5 5 0 0 1-6 0zV7",key:"zcdpyk"}],["path",{d:"M3 7h1a17 17 0 0 0 8-2 17 17 0 0 0 8 2h1",key:"1yorad"}],["path",{d:"m5 8 3 8a5 5 0 0 1-6 0zV7",key:"eua70x"}],["path",{d:"M7 21h10",key:"1b0cd5"}]]),T=(0,c.default)("sigma",[["path",{d:"M18 7V5a1 1 0 0 0-1-1H6.5a.5.5 0 0 0-.4.8l4.5 6a2 2 0 0 1 0 2.4l-4.5 6a.5.5 0 0 0 .4.8H17a1 1 0 0 0 1-1v-2",key:"wuwx1p"}]]);var L=e.i(27612),B=e.i(9830),D=e.i(76824);let M={math:{icon:T,className:"bg-blue-100 text-blue-600 dark:bg-blue-500/15 dark:text-blue-300"},english:{icon:S.Languages,className:"bg-emerald-100 text-emerald-600 dark:bg-emerald-500/15 dark:text-emerald-300"},chinese:{icon:k,className:"bg-rose-100 text-rose-600 dark:bg-rose-500/15 dark:text-rose-300"},physics:{icon:y,className:"bg-amber-100 text-amber-600 dark:bg-amber-500/15 dark:text-amber-300"},chemistry:{icon:f,className:"bg-teal-100 text-teal-600 dark:bg-teal-500/15 dark:text-teal-300"},biology:{icon:w,className:"bg-lime-100 text-lime-700 dark:bg-lime-500/15 dark:text-lime-300"},history:{icon:N,className:"bg-orange-100 text-orange-600 dark:bg-orange-500/15 dark:text-orange-300"},geography:{icon:v,className:"bg-cyan-100 text-cyan-600 dark:bg-cyan-500/15 dark:text-cyan-300"},politics:{icon:E,className:"bg-red-100 text-red-600 dark:bg-red-500/15 dark:text-red-300"}},A={icon:p.BookOpen,className:"bg-accent text-accent-foreground"};function O({id:e,name:a,stage:s,subjectKey:i,errorCount:n,onClick:r,onRename:l,onDelete:c,itemLabel:d="items"}){let u=(0,D.resolveNotebookScope)({name:a,stage:s,subjectKey:i}),{icon:m,className:h}=u.subject?M[u.subject]:A;return(0,t.jsxs)("div",{role:"link",tabIndex:0,className:"group relative flex cursor-pointer items-center gap-4 rounded-2xl border bg-card p-4 shadow-sm transition-all hover:-translate-y-0.5 hover:border-primary/40 hover:shadow-md focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring",onClick:r,onKeyDown:e=>{"Enter"===e.key&&r()},children:[(0,t.jsx)("div",{className:`flex h-12 w-12 shrink-0 items-center justify-center rounded-xl ${h}`,children:(0,t.jsx)(m,{className:"h-6 w-6"})}),(0,t.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,t.jsx)("h3",{className:"truncate font-semibold",children:a}),(0,t.jsxs)("p",{className:"mt-0.5 flex items-center gap-1.5 text-sm text-muted-foreground",children:[(0,t.jsx)("span",{className:"font-medium tabular-nums text-foreground",children:n}),d,(0,t.jsx)("span",{className:"text-border",children:"|"}),(0,t.jsx)(B.NotebookScopeLabel,{notebook:{name:a,stage:s,subjectKey:i},className:"truncate"})]})]}),(0,t.jsxs)("div",{className:"flex shrink-0 items-center opacity-100 transition-opacity sm:opacity-0 sm:group-hover:opacity-100 sm:group-focus-within:opacity-100",children:[l&&(0,t.jsx)(o.Button,{variant:"ghost",size:"icon-sm",className:"text-muted-foreground",onClick:e=>{e.stopPropagation(),l()},children:(0,t.jsx)(C.Pencil,{className:"h-4 w-4"})}),c&&(0,t.jsx)(o.Button,{variant:"ghost",size:"icon-sm",onClick:t=>{t.stopPropagation(),c(e)},children:(0,t.jsx)(L.Trash2,{className:`h-4 w-4 ${n>0?"text-muted-foreground":"text-destructive"}`})})]}),(0,t.jsx)(j.ChevronRight,{className:"hidden h-4 w-4 shrink-0 text-muted-foreground sm:block"})]})}var _=e.i(76639),P=e.i(10204),I=e.i(67489),F=e.i(94114);function R({open:e,onOpenChange:s,onCreate:i}){let[n,r]=(0,a.useState)(""),[l,c]=(0,a.useState)(D.DEFAULT_NOTEBOOK_STAGE),[d,h]=(0,a.useState)(D.STAGE_SUBJECTS[D.DEFAULT_NOTEBOOK_STAGE][0]),[g,x]=(0,a.useState)(!1),{t:p}=(0,m.useLanguage)(),{stageLabel:b,subjectLabel:y}=(0,B.useNotebookScopeLabels)(),k=async()=>{if(!n.trim())return void F.toast.warning(p.notebooks?.dialog?.enterName||"Please enter notebook name");x(!0);try{await i({name:n.trim(),stage:l,subjectKey:d}),r(""),s(!1)}catch(e){console.error(e)}finally{x(!1)}};return(0,t.jsx)(_.Dialog,{open:e,onOpenChange:s,children:(0,t.jsxs)(_.DialogContent,{children:[(0,t.jsxs)(_.DialogHeader,{children:[(0,t.jsx)(_.DialogTitle,{children:p.notebooks?.dialog?.title||"Create New Notebook"}),(0,t.jsx)(_.DialogDescription,{children:p.notebooks?.dialog?.desc||"Create separate notebooks for different subjects or chapters"})]}),(0,t.jsxs)("div",{className:"space-y-4 py-4",children:[(0,t.jsxs)("div",{className:"grid grid-cols-2 gap-3",children:[(0,t.jsxs)("div",{className:"space-y-2",children:[(0,t.jsx)(P.Label,{htmlFor:"notebook-stage",children:p.notebooks.dialog.stageLabel}),(0,t.jsxs)(I.Select,{value:l,onValueChange:e=>{c(e),D.STAGE_SUBJECTS[e].includes(d)||h(D.STAGE_SUBJECTS[e][0])},children:[(0,t.jsx)(I.SelectTrigger,{id:"notebook-stage",children:(0,t.jsx)(I.SelectValue,{})}),(0,t.jsx)(I.SelectContent,{children:D.NOTEBOOK_STAGES.map(e=>(0,t.jsx)(I.SelectItem,{value:e,children:b(e)},e))})]})]}),(0,t.jsxs)("div",{className:"space-y-2",children:[(0,t.jsx)(P.Label,{htmlFor:"notebook-subject",children:p.notebooks.dialog.subjectLabel}),(0,t.jsxs)(I.Select,{value:d,onValueChange:e=>h(e),children:[(0,t.jsx)(I.SelectTrigger,{id:"notebook-subject",children:(0,t.jsx)(I.SelectValue,{})}),(0,t.jsx)(I.SelectContent,{children:D.STAGE_SUBJECTS[l].map(e=>(0,t.jsx)(I.SelectItem,{value:e,children:y(e)},e))})]})]})]}),(0,t.jsx)("p",{className:"text-xs text-muted-foreground",children:p.notebooks.dialog.scopeHint}),(0,t.jsxs)("div",{className:"space-y-2",children:[(0,t.jsx)(P.Label,{htmlFor:"name",children:p.notebooks?.dialog?.nameLabel||"Notebook Name"}),(0,t.jsx)(u.Input,{id:"name",placeholder:p.notebooks?.dialog?.placeholder||"e.g. Math, Physics, Chemistry...",value:n,onChange:e=>r(e.target.value),onKeyDown:e=>"Enter"===e.key&&k()})]})]}),(0,t.jsxs)(_.DialogFooter,{children:[(0,t.jsx)(o.Button,{variant:"outline",onClick:()=>s(!1),children:p.common.cancel}),(0,t.jsx)(o.Button,{onClick:k,disabled:g||!n.trim(),children:g?p.notebooks?.dialog?.creating||"Creating...":p.notebooks?.dialog?.create||"Create"})]})]})})}var z=e.i(67153),H=e.i(41931),K=e.i(35209);e.s(["default",0,function(){let e=(0,s.useRouter)(),{t:l}=(0,m.useLanguage)();(0,K.usePageTitle)(l.notebooks.title);let[c,d]=(0,a.useState)([]),[u,h]=(0,a.useState)(!0),[g,y]=(0,a.useState)(!1),[k,j]=(0,a.useState)(null);(0,a.useEffect)(()=>{f()},[]);let f=async()=>{try{let e=await H.apiClient.get("/api/notebooks");d(e)}catch(e){console.error("Failed to fetch notebooks:",e)}finally{h(!1)}},v=async e=>{try{await H.apiClient.post("/api/notebooks",e),await f()}catch(t){console.error(t);let e=t.data?.message||l.notebooks?.createError||"Failed to create";F.toast.error(e)}},N=async e=>{k&&(await H.apiClient.put(`/api/notebooks/${k.id}`,{name:e}),j(null),await f())},S=async(e,t,a)=>{if(t>0)return void F.toast.warning(l.notebooks?.deleteNotEmpty||"Please clear all items in this notebook first.");if(await (0,F.confirmDialog)((l.notebooks?.deleteConfirm||"Are you sure?").replace("{name}",a),{destructive:!0}))try{await H.apiClient.delete(`/api/notebooks/${e}`),await f()}catch(t){console.error(t);let e=t.data?.message||l.notebooks?.deleteError||"Failed to delete";F.toast.error(e)}};return u?(0,t.jsx)(r.PageLoading,{label:l.common.loading}):(0,t.jsx)("main",{className:"mx-auto min-h-screen max-w-6xl px-4 py-6 md:px-8 md:py-8",children:(0,t.jsxs)("div",{className:"space-y-6",children:[(0,t.jsx)(n.PageHeader,{title:l.notebooks?.title||"My Notebooks",description:l.notebooks?.subtitle||"Manage your mistakes by subject",actions:(0,t.jsxs)(o.Button,{onClick:()=>y(!0),"aria-label":l.notebooks?.create||"New Notebook",children:[(0,t.jsx)(b.Plus,{className:"h-4 w-4"}),(0,t.jsx)("span",{className:"hidden sm:inline",children:l.notebooks?.create||"New Notebook"})]})}),(0,t.jsx)(x,{}),0===c.length?(0,t.jsx)(i.EmptyState,{icon:p.BookOpen,title:l.notebooks?.empty||"No notebooks yet.",action:(0,t.jsxs)(o.Button,{onClick:()=>y(!0),children:[(0,t.jsx)(b.Plus,{className:"h-4 w-4"}),l.notebooks?.createFirst||"Create Notebook"]})}):(0,t.jsx)("div",{className:"grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-3",children:c.map(a=>(0,t.jsx)(O,{id:a.id,name:a.name,stage:a.stage,subjectKey:a.subjectKey,errorCount:a._count?.errorItems||0,onClick:()=>{var t;return t=a.id,void e.push(`/notebooks/${t}`)},onRename:()=>j(a),onDelete:()=>S(a.id,a._count?.errorItems||0,a.name),itemLabel:l.notebooks?.items||"items"},a.id))}),(0,t.jsx)(R,{open:g,onOpenChange:y,onCreate:v},l.common.loading),(0,t.jsx)(z.RenameNotebookDialog,{open:!!k,onOpenChange:e=>{e||j(null)},currentName:k?.name||"",onRename:N})]})})}],66776)},9830,76824,e=>{"use strict";var t=e.i(18050),a=e.i(11110),s=e.i(52122);let o=["primary","junior_high","senior_high"],i="primary",n=["math","english","chinese","physics","chemistry","biology","history","geography","politics"];function r(e){return"string"==typeof e&&n.includes(e)}function l(e){var t;let a=r(e.subjectKey)?e.subjectKey:(0,s.inferSubjectFromName)(e.name);return{stage:"string"==typeof(t=e.stage)&&o.includes(t)?e.stage:i,subject:a&&r(a)?a:null}}function c(){let{t:e}=(0,a.useLanguage)();return{stageLabel:t=>({primary:e.auth.primary,junior_high:e.auth.juniorHigh,senior_high:e.auth.seniorHigh})[t],subjectLabel:t=>e.tags.subjects[t]}}e.s(["DEFAULT_NOTEBOOK_STAGE",0,i,"NOTEBOOK_STAGES",0,o,"STAGE_SUBJECTS",0,{primary:["math","english"],junior_high:n,senior_high:n},"resolveNotebookScope",0,l],76824),e.s(["NotebookScopeLabel",0,function({notebook:e,className:a}){let{stageLabel:s,subjectLabel:o}=c(),i=l(e);return(0,t.jsxs)("span",{className:a,children:[s(i.stage),i.subject?` \xb7 ${o(i.subject)}`:""]})},"useNotebookScopeLabels",0,c],9830)},67153,e=>{"use strict";var t=e.i(18050),a=e.i(71645),s=e.i(76639),o=e.i(19455),i=e.i(93479),n=e.i(10204),r=e.i(11110),l=e.i(94114);e.s(["RenameNotebookDialog",0,function({open:e,onOpenChange:c,currentName:d,onRename:u}){let[m,h]=(0,a.useState)(d),[g,x]=(0,a.useState)(!1),{t:p}=(0,r.useLanguage)();(0,a.useEffect)(()=>{h(d)},[d]);let b=async()=>{if(!m.trim())return void l.toast.warning(p.notebooks?.renameDialog?.enterName||"Please enter notebook name");x(!0);try{await u(m.trim()),c(!1)}catch(e){console.error(e)}finally{x(!1)}};return(0,t.jsx)(s.Dialog,{open:e,onOpenChange:c,children:(0,t.jsxs)(s.DialogContent,{children:[(0,t.jsx)(s.DialogHeader,{children:(0,t.jsx)(s.DialogTitle,{children:p.notebooks?.renameDialog?.title||"Rename Notebook"})}),(0,t.jsx)("div",{className:"space-y-4 py-4",children:(0,t.jsxs)("div",{className:"space-y-2",children:[(0,t.jsx)(n.Label,{htmlFor:"rename-name",children:p.notebooks?.renameDialog?.nameLabel||"New Name"}),(0,t.jsx)(i.Input,{id:"rename-name",placeholder:p.notebooks?.renameDialog?.placeholder||"Enter new notebook name",value:m,onChange:e=>h(e.target.value),onKeyDown:e=>"Enter"===e.key&&b()})]})}),(0,t.jsxs)(s.DialogFooter,{children:[(0,t.jsx)(o.Button,{variant:"outline",onClick:()=>c(!1),children:p.common.cancel}),(0,t.jsx)(o.Button,{onClick:b,disabled:g||!m.trim(),children:g?p.notebooks?.renameDialog?.renaming||"Renaming...":p.notebooks?.renameDialog?.rename||"Rename"})]})]})})}])},90546,e=>{"use strict";var t=e.i(18050),a=e.i(18566),s=e.i(19455),o=e.i(71689);e.s(["BackButton",0,function({fallbackUrl:e,className:i}){let n=(0,a.useRouter)();return(0,t.jsx)(s.Button,{variant:"ghost",size:"icon",onClick:()=>{n.push(e)},className:i,children:(0,t.jsx)(o.ArrowLeft,{className:"h-5 w-5"})})}])},12505,e=>{"use strict";var t=e.i(18050),a=e.i(75157);e.s(["EmptyState",0,function({icon:e,title:s,description:o,action:i,className:n}){return(0,t.jsxs)("div",{className:(0,a.cn)("flex flex-col items-center justify-center rounded-2xl border border-dashed bg-card/50 px-6 py-14 text-center",n),children:[(0,t.jsx)("div",{className:"mb-4 flex h-14 w-14 items-center justify-center rounded-2xl bg-accent text-accent-foreground",children:(0,t.jsx)(e,{className:"h-7 w-7"})}),(0,t.jsx)("p",{className:"font-medium",children:s}),o&&(0,t.jsx)("p",{className:"mt-1 max-w-sm text-sm text-muted-foreground",children:o}),i&&(0,t.jsx)("div",{className:"mt-5",children:i})]})}])},93842,e=>{"use strict";var t=e.i(18050),a=e.i(90546),s=e.i(75157);e.s(["PageHeader",0,function({title:e,description:o,backHref:i,actions:n,titleAddon:r,className:l}){return(0,t.jsxs)("div",{className:(0,s.cn)("flex items-start gap-3",l),children:[i&&(0,t.jsx)(a.BackButton,{fallbackUrl:i,className:"-ml-2 shrink-0"}),(0,t.jsxs)("div",{className:"min-w-0 flex-1 space-y-1",children:[(0,t.jsxs)("div",{className:"flex items-center gap-1",children:[(0,t.jsx)("h1",{className:"truncate text-2xl font-bold tracking-tight sm:text-3xl",children:e}),r]}),o&&(0,t.jsx)("p",{className:"text-sm text-muted-foreground sm:text-base",children:o})]}),n&&(0,t.jsx)("div",{className:"flex shrink-0 items-center gap-2",children:n})]})}])},86963,e=>{"use strict";var t=e.i(18050),a=e.i(31278);e.s(["PageLoading",0,function({label:e}){return(0,t.jsxs)("div",{className:"flex min-h-[50vh] flex-col items-center justify-center gap-3 text-muted-foreground",children:[(0,t.jsx)(a.Loader2,{className:"h-7 w-7 animate-spin text-primary"}),e&&(0,t.jsx)("p",{className:"text-sm",children:e})]})}])},52122,e=>{"use strict";e.i(30691),e.s(["inferSubjectFromName",0,function(e){if(!e)return null;let t=e.toLowerCase();return t.includes("math")||t.includes("数学")?"math":t.includes("physics")||t.includes("物理")?"physics":t.includes("chemistry")||t.includes("化学")?"chemistry":t.includes("biology")||t.includes("生物")?"biology":t.includes("english")||t.includes("英语")?"english":t.includes("chinese")||t.includes("语文")?"chinese":t.includes("history")||t.includes("历史")?"history":t.includes("geography")||t.includes("地理")?"geography":t.includes("politics")||t.includes("政治")?"politics":null}])},35209,e=>{"use strict";var t=e.i(71645),a=e.i(11110);e.s(["usePageTitle",0,function(...e){let{t:s}=(0,a.useLanguage)(),o=[s.pageTitle.base,...e.map(e=>"string"==typeof e?e.trim():"").filter(e=>e.length>0)].join("-");(0,t.useEffect)(()=>{document.title=o},[o])}])},33547,e=>{"use strict";var t=e.i(41931);async function a(e){try{return(await t.apiClient.get(`/api/error-items/short/${encodeURIComponent(e)}`)).id}catch{return null}}e.s(["locateByShortId",0,a])},47279,e=>{"use strict";let t=RegExp("^[123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz]{6}$");e.s(["isShortId",0,function(e){return"string"==typeof e&&t.test(e)}])}]);
@@ -1 +0,0 @@
1
- (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,63804,e=>{"use strict";let t=(0,e.i(75254).default)("list-checks",[["path",{d:"M13 5h8",key:"a7qcls"}],["path",{d:"M13 12h8",key:"h98zly"}],["path",{d:"M13 19h8",key:"c3s6r1"}],["path",{d:"m3 17 2 2 4-4",key:"1jhpwq"}],["path",{d:"m3 7 2 2 4-4",key:"1obspn"}]]);e.s(["ListChecks",0,t],63804)},20278,e=>{"use strict";let t=(0,e.i(75254).default)("target",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["circle",{cx:"12",cy:"12",r:"6",key:"1vlfrh"}],["circle",{cx:"12",cy:"12",r:"2",key:"1c9p78"}]]);e.s(["Target",0,t],20278)},52683,e=>{"use strict";var t=e.i(18050),s=e.i(71645),a=e.i(18566),n=e.i(98469),r=e.i(78197),i=e.i(12130),o=e.i(22016),l=e.i(17255),d=e.i(10980),c=e.i(63804),m=e.i(20278),u=e.i(11110);let g=()=>()=>{};function x({notebookCount:e,itemCount:a,targetNotebook:n}){let{t:r,language:i}=(0,u.useLanguage)(),{data:p}=(0,l.useSession)(),h=(0,s.useSyncExternalStore)(g,()=>new Date().getHours(),()=>null),f=null===h?r.common.welcome.replace(/[,,\s]+$/,""):h<12?r.home.greetingMorning:h<18?r.home.greetingAfternoon:r.home.greetingEvening,y=p?.user?.name||p?.user?.email||"";return(0,t.jsxs)("section",{className:"relative overflow-hidden rounded-2xl bg-gradient-to-br from-indigo-600 via-indigo-500 to-violet-500 p-5 text-white shadow-lg shadow-indigo-500/20 md:p-7",children:[(0,t.jsx)("div",{className:"pointer-events-none absolute -right-10 -top-12 h-44 w-44 rounded-full bg-white/10 blur-2xl"}),(0,t.jsx)("div",{className:"pointer-events-none absolute -bottom-16 right-24 h-40 w-40 rounded-full bg-fuchsia-300/20 blur-2xl"}),(0,t.jsxs)("div",{className:"relative flex flex-col gap-5 md:flex-row md:items-end md:justify-between",children:[(0,t.jsxs)("div",{className:"space-y-1.5",children:[(0,t.jsxs)("h1",{className:"text-xl font-bold tracking-tight md:text-2xl",children:[f,y&&`${"zh"===i?",":", "}${y}`]}),(0,t.jsx)("p",{className:"max-w-md text-sm text-white/80",children:r.home.heroSubtitle}),n&&(0,t.jsxs)("p",{className:"inline-flex items-center gap-1.5 rounded-full bg-white/15 px-3 py-1 text-xs font-medium",children:[(0,t.jsx)(m.Target,{className:"h-3.5 w-3.5"}),r.home.targetNotebook.replace("{name}",n)]})]}),(0,t.jsxs)(o.default,{href:"/notebooks",className:"grid grid-cols-2 gap-3 md:w-72",children:[(0,t.jsxs)("div",{className:"rounded-xl bg-white/15 px-4 py-3 backdrop-blur-sm transition-colors hover:bg-white/20",children:[(0,t.jsxs)("div",{className:"flex items-center gap-1.5 text-xs text-white/75",children:[(0,t.jsx)(d.BookOpen,{className:"h-3.5 w-3.5"}),r.home.notebookCount]}),(0,t.jsx)("div",{className:"mt-1 text-2xl font-bold tabular-nums",children:e})]}),(0,t.jsxs)("div",{className:"rounded-xl bg-white/15 px-4 py-3 backdrop-blur-sm transition-colors hover:bg-white/20",children:[(0,t.jsxs)("div",{className:"flex items-center gap-1.5 text-xs text-white/75",children:[(0,t.jsx)(c.ListChecks,{className:"h-3.5 w-3.5"}),r.home.itemCount]}),(0,t.jsx)("div",{className:"mt-1 text-2xl font-bold tabular-nums",children:a})]})]})]})]})}var p=e.i(41931),h=e.i(35209),f=e.i(28928),y=e.i(68553),v=e.i(74558),j=e.i(83086),w=e.i(86963),b=e.i(56738),S=e.i(4843),k=e.i(1276),N=e.i(17448),L=e.i(30634),A=e.i(47819),I=e.i(64002),C=e.i(15288),T=e.i(19455),H=e.i(24687),z=e.i(10204),P=e.i(56909),D=e.i(31278),$=e.i(86536),F=e.i(85873),F=F,E=e.i(67240),q=e.i(11445),R=e.i(88218),U=e.i(38465),B=e.i(67489),M=e.i(52122),O=e.i(94114);function K({onSubmit:e,defaultNotebookId:a,defaultNotebookName:n,isSaving:r}){let{t:i}=(0,u.useLanguage)(),[o,l]=(0,s.useState)(null),[d,c]=(0,s.useState)(""),[m,g]=(0,s.useState)(""),[x,p]=(0,s.useState)(""),[h,f]=(0,s.useState)(""),[y,j]=(0,s.useState)(""),[w,b]=(0,s.useState)("unknown"),[S,k]=(0,s.useState)([]),[N,L]=(0,s.useState)(a||""),[A,I]=(0,s.useState)(""),[V,_]=(0,s.useState)("a"),Q=async()=>{if(d.trim()){if(!N)return void O.toast.warning(i.editor.messages?.selectNotebook||"请选择错题本");await e({questionText:d.trim(),answerText:m.trim(),analysis:x.trim(),wrongAnswerText:h.trim(),mistakeAnalysis:y.trim(),mistakeStatus:w,knowledgePoints:S,subjectId:N,gradeSemester:A||void 0,paperLevel:V})}},X=e=>{(e.ctrlKey||e.metaKey)&&"Enter"===e.key&&(e.preventDefault(),d.trim()&&N&&!r&&Q())},Z=[{key:"question",label:i.editor?.question||"题目内容",value:d,setter:c,placeholder:"输入题目内容...\n支持 Markdown 和 LaTeX 公式\n\n示例:\n# 题目一\n\n已知 $f(x) = x^2 + 2x + 1$,求 $f(3)$ 的值。\n\n**解题要求:**\n1. 写出解题步骤\n2. 给出最终答案",minHeight:"min-h-[180px]",required:!0},{key:"answer",label:i.editor?.answer||"参考答案",value:m,setter:g,placeholder:"输入参考答案...\n\n示例:\n$f(3) = 3^2 + 2 \\times 3 + 1 = 9 + 6 + 1 = 16$",minHeight:"min-h-[120px]"},{key:"analysis",label:i.editor?.analysis||"解题分析",value:x,setter:p,placeholder:"输入解题分析...\n\n示例:\n这是一个**一元二次函数**求值问题。\n\n将 $x=3$ 代入函数表达式:\n$$f(3) = 3^2 + 2 \\times 3 + 1 = 16$$",minHeight:"min-h-[150px]"},{key:"wrongAnswer",label:i.editor?.wrongAnswerText||"错误解答原文",value:h,setter:f,placeholder:"如果有错误解答可以粘贴在这里,没有可留空",minHeight:"min-h-[100px]"},{key:"mistakeAnalysis",label:i.editor?.mistakeAnalysis||"错因分析",value:y,setter:j,placeholder:"分析错误可能发生在哪一步、为什么错...",minHeight:"min-h-[100px]"}];return(0,t.jsx)(C.Card,{className:"rounded-2xl",children:(0,t.jsxs)(C.CardContent,{className:"p-6 space-y-5",children:[(0,t.jsxs)("div",{className:"flex items-center justify-between",children:[(0,t.jsxs)("div",{className:"flex items-center gap-2 text-muted-foreground",children:[(0,t.jsx)(v.PenLine,{className:"h-5 w-5"}),(0,t.jsx)("span",{className:"text-sm font-medium",children:"直接录入错题内容(支持 Markdown + LaTeX)"})]}),(0,t.jsxs)(T.Button,{variant:"ghost",size:"sm",onClick:()=>{c(""),g(""),p(""),f(""),j(""),b("unknown"),k([]),I(""),_("a")},disabled:r,className:"text-muted-foreground hover:text-destructive",children:[(0,t.jsx)(E.RotateCcw,{className:"h-4 w-4 mr-1"}),"重置"]})]}),(0,t.jsxs)("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-4",children:[(0,t.jsxs)("div",{className:"space-y-2",children:[(0,t.jsxs)(z.Label,{children:[i.editor?.selectNotebook||"选择错题本"," *"]}),(0,t.jsx)(U.NotebookSelector,{value:N,onChange:L})]}),(0,t.jsxs)("div",{className:"space-y-2",children:[(0,t.jsx)(z.Label,{children:i.editor?.gradeSemester||"年级/学期"}),(0,t.jsx)("input",{type:"text",value:A,onChange:e=>I(e.target.value),placeholder:"如:初二上学期",className:"flex h-10 w-full rounded-md border border-input bg-background px-3 py-2 text-sm"})]}),(0,t.jsxs)("div",{className:"space-y-2",children:[(0,t.jsx)(z.Label,{children:i.editor?.paperLevel||"试卷难度"}),(0,t.jsxs)(B.Select,{value:V,onValueChange:_,children:[(0,t.jsx)(B.SelectTrigger,{children:(0,t.jsx)(B.SelectValue,{})}),(0,t.jsxs)(B.SelectContent,{children:[(0,t.jsx)(B.SelectItem,{value:"a",children:i.editor?.paperLevels?.a||"A卷/基础"}),(0,t.jsx)(B.SelectItem,{value:"b",children:i.editor?.paperLevels?.b||"B卷/提高"}),(0,t.jsx)(B.SelectItem,{value:"other",children:i.editor?.paperLevels?.other||"其他"})]})]})]})]}),Z.map(e=>(0,t.jsxs)("div",{className:"space-y-2",children:[(0,t.jsxs)("div",{className:"flex items-center justify-between",children:[(0,t.jsxs)(z.Label,{className:e.required?"text-primary font-semibold":"",children:[e.label," ",e.required&&"*"]}),(0,t.jsx)(T.Button,{variant:"ghost",size:"sm",className:"h-7 px-2 text-xs",onClick:()=>l(o===e.key?null:e.key),disabled:!e.value,children:o===e.key?(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(F.default,{className:"h-3 w-3 mr-1"}),"编辑"]}):(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)($.Eye,{className:"h-3 w-3 mr-1"}),"预览"]})})]}),o===e.key?(0,t.jsx)("div",{className:`rounded-md border bg-muted/30 p-4 ${e.minHeight} overflow-auto cursor-pointer`,onClick:()=>l(null),children:(0,t.jsx)(q.MarkdownRenderer,{content:e.value})}):(0,t.jsx)(H.Textarea,{value:e.value,onChange:t=>e.setter(t.target.value),onKeyDown:X,placeholder:e.placeholder,className:`${e.minHeight} font-mono text-sm resize-y`,disabled:r})]},e.key)),(0,t.jsxs)("div",{className:"space-y-2",children:[(0,t.jsx)(z.Label,{children:i.editor?.mistakeStatus||"作答状态"}),(0,t.jsxs)(B.Select,{value:w,onValueChange:e=>b(e),children:[(0,t.jsx)(B.SelectTrigger,{className:"w-[200px]",children:(0,t.jsx)(B.SelectValue,{})}),(0,t.jsxs)(B.SelectContent,{children:[(0,t.jsx)(B.SelectItem,{value:"not_attempted",children:i.editor?.mistakeStatuses?.notAttempted||"不会做"}),(0,t.jsx)(B.SelectItem,{value:"wrong_attempt",children:i.editor?.mistakeStatuses?.wrongAttempt||"做错了"}),(0,t.jsx)(B.SelectItem,{value:"unknown",children:i.editor?.mistakeStatuses?.unknown||"未判断"})]})]})]}),(0,t.jsxs)("div",{className:"space-y-2",children:[(0,t.jsx)(z.Label,{children:i.editor?.tags||"知识点标签"}),(0,t.jsx)(R.TagInput,{value:S,onChange:k,placeholder:i.editor?.tagsPlaceholder||"输入知识点标签...",enterHint:i.editor?.createTagHint,subject:(0,M.inferSubjectFromName)(n||null)||void 0}),(0,t.jsx)("p",{className:"text-xs text-muted-foreground",children:i.editor?.tagsHint||"💡 输入时会自动匹配已有标签"})]}),(0,t.jsxs)("div",{className:"flex flex-col items-center gap-2 pt-2",children:[(0,t.jsx)(T.Button,{onClick:Q,disabled:!d.trim()||!N||r,className:"w-full bg-gradient-to-r from-indigo-600 to-violet-500 hover:from-indigo-700 hover:to-violet-600 text-white font-medium",size:"lg",children:r?(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(D.Loader2,{className:"mr-2 h-4 w-4 animate-spin"}),"保存中..."]}):(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(P.Save,{className:"mr-2 h-4 w-4"}),"直接保存"]})}),(0,t.jsx)("p",{className:"text-xs text-muted-foreground text-center",children:"填写题目和答案后直接保存,无需 AI 分析 · Ctrl+Enter 快捷保存"})]})]})})}function V(){let[e,o]=(0,s.useState)("upload"),[l,d]=(0,s.useState)("idle"),[c,m]=(0,s.useState)(null),[g,w]=(0,s.useState)(null),{t:C,language:T}=(0,u.useLanguage)();(0,h.usePageTitle)(C.pageTitle.home);let H=(0,a.useSearchParams)(),z=(0,a.useRouter)(),P=H.get("notebook"),[D,$]=(0,s.useState)([]),[F,E]=(0,s.useState)(null),[q,R]=(0,s.useState)(null),[U,B]=(0,s.useState)("image"),[M,V]=(0,s.useState)(null),[_,Q]=(0,s.useState)(!1),[X,Z]=(0,s.useState)(!1),[J,G]=(0,s.useState)(null),[W,Y]=(0,s.useState)(null),ee=q?.timeouts?.analyze||18e4,et=ee+1e4;(0,s.useEffect)(()=>()=>{M&&URL.revokeObjectURL(M)},[M]),(0,s.useEffect)(()=>{p.apiClient.get("/api/notebooks").then(e=>$(e)).catch(e=>console.error("Failed to fetch notebooks:",e)),(0,I.fetchConfirmBeforeImport)().then(Z),p.apiClient.get("/api/settings").then(e=>{R(e),e.timeouts?.analyze&&k.frontendLogger.info("[Config]","Loaded timeout settings",{analyze:e.timeouts.analyze})}).catch(e=>console.error("Failed to fetch config:",e))},[]),(0,s.useEffect)(()=>{if("idle"===l)return;let e=setTimeout(()=>{k.frontendLogger.warn("[Progress]","处理超时,关闭进度提示",{analysisStep:l,safetyTimeout:et}),d("idle")},et);return()=>clearTimeout(e)},[l,et]);let es=async e=>{Q(!1),ea(new File([e],"cropped-image.jpg",{type:"image/jpeg"}))},ea=async e=>{let t=Date.now();k.frontendLogger.info("[HomeAnalyze]","Starting analysis flow",{timeoutSettings:{apiTimeout:ee,safetyTimeout:et}});try{k.frontendLogger.info("[HomeAnalyze]","Step 1/5: Compressing image"),d("compressing");let s=await (0,f.processImageFile)(e);w(s),k.frontendLogger.info("[HomeAnalyze]","Image compressed successfully",{size:s.length}),k.frontendLogger.info("[HomeAnalyze]","Step 2/5: Calling API endpoint /api/analyze"),d("analyzing");let a=Date.now(),n=await p.apiClient.post("/api/analyze",{imageBase64:s,language:T,subjectId:P||F||void 0},{timeout:ee}),r=Date.now()-a;if(k.frontendLogger.info("[HomeAnalyze]","API response received, validating data",{apiDuration:r}),!n||"object"!=typeof n)throw k.frontendLogger.error("[HomeAnalyze]","Validation failed - invalid response data",{data:n}),Error("Invalid API response: data is null or not an object");if(k.frontendLogger.info("[HomeAnalyze]","Response data validated successfully"),k.frontendLogger.info("[HomeAnalyze]","开始处理 AI 返回结果"),d("processing"),!X){d("saving");let e=await (0,I.saveParsedQuestion)(n,{subjectId:P,imageUrl:s});G(e),w(null),k.frontendLogger.info("[HomeAnalyze]","Imported without review",{id:e.id});return}k.frontendLogger.info("[HomeAnalyze]","Step 4/5: Setting parsed data and auto-selecting notebook");let i=JSON.stringify(n).length;if(n.subject){let e=D.find(e=>e.name.includes(n.subject)||n.subject.includes(e.name));e&&(E(e.id),k.frontendLogger.info("[HomeAnalyze]","Auto-selected notebook",{notebook:e.name,subject:n.subject}))}let l=Date.now();m(n);let c=Date.now()-l;k.frontendLogger.info("[HomeAnalyze]","Parsed data set successfully",{dataSize:i,setDataDuration:c}),k.frontendLogger.info("[HomeAnalyze]","Step 5/5: Switching to review page");let u=Date.now();o("review");let g=Date.now()-u;k.frontendLogger.info("[HomeAnalyze]","Step switched to review",{setStepDuration:g});let x=Date.now()-t;k.frontendLogger.info("[HomeAnalyze]","Analysis completed successfully",{totalDuration:x})}catch(s){let e=Date.now()-t;k.frontendLogger.error("[HomeError]","Analysis failed",{errorDuration:e,error:s.message||String(s)});try{let e=C.common?.messages?.analysisFailed||"Analysis failed, please try again",t=s?.data?.message;if(t&&"string"==typeof t)if(C.errors&&"object"==typeof C.errors&&t in C.errors){let s=C.errors[t];"string"==typeof s&&(e=s,k.frontendLogger.info("[HomeError]",`Matched error type: ${t}`,{errorMessage:e}))}else e=t,k.frontendLogger.info("[HomeError]","Using backend error message",{errorMessage:e});else s?.message&&(s.message.includes("fetch")||s.message.includes("network")?e=C.errors?.AI_CONNECTION_FAILED||"网络连接失败":"string"==typeof s.data&&(k.frontendLogger.info("[HomeError]","Raw error data",{errorDataPreview:s.data.substring(0,100)}),e+=` (${s.status||"Error"})`));O.toast.error(e)}catch(e){k.frontendLogger.error("[HomeError]","Failed to process error message",{innerError:String(e)}),O.toast.error("Analysis failed. Please try again.")}}finally{k.frontendLogger.info("[HomeAnalyze]","Finally: Resetting analysis state to idle"),d("idle"),k.frontendLogger.info("[HomeAnalyze]","Analysis state reset complete")}},en=async e=>{k.frontendLogger.info("[HomeSave]","Starting save process",{hasQuestionText:!!e.questionText,hasAnswerText:!!e.answerText,subjectId:e.subjectId,knowledgePointsCount:e.knowledgePoints?.length||0,hasImage:!!g,imageSize:g?.length||0});try{let t=await p.apiClient.post("/api/error-items",{...e,originalImageUrl:g||""});t.duplicate&&k.frontendLogger.info("[HomeSave]","Duplicate submission detected, using existing record"),k.frontendLogger.info("[HomeSave]","Save successful"),o("upload"),m(null),w(null),O.toast.success(t.duplicate?C.importFlow.duplicate:C.common.messages.saveSuccess),t.duplicate?z.push(`/error-items/${t.id}`):e.subjectId&&z.push(`/notebooks/${e.subjectId}`)}catch(e){k.frontendLogger.error("[HomeSave]","Save failed",{errorStatus:e?.status,errorMessage:e?.data?.message||e?.message||String(e),errorData:e?.data}),O.toast.error(C.common?.messages?.saveFailed||"Failed to save")}},er=async e=>{let t=Date.now();k.frontendLogger.info("[HomeTextSubmit]","Starting text-based analysis",{textLength:e.length});try{d("analyzing");let s=P||F,a=s?D.find(e=>e.id===s):void 0,n=await p.apiClient.post("/api/reanswer",{questionText:e,language:T,subject:a?.name||void 0,subjectId:a?.id},{timeout:ee});d("processing");let r={questionText:e,answerText:n.answerText,analysis:n.analysis,knowledgePoints:n.knowledgePoints||[],wrongAnswerText:n.wrongAnswerText||"",mistakeAnalysis:n.mistakeAnalysis||"",mistakeStatus:n.mistakeStatus||"unknown",subject:n.subject||"其他",requiresImage:!1,difficultyStars:n.difficultyStars??null};if(!X){d("saving");let e=await (0,I.saveParsedQuestion)(r,{subjectId:P,imageUrl:null});G(e);return}w(null),m(r),o("review");let i=Date.now()-t;k.frontendLogger.info("[HomeTextSubmit]","Text analysis completed",{totalDuration:i})}catch(s){let e=Date.now()-t;k.frontendLogger.error("[HomeTextSubmit]","Analysis failed",{errorDuration:e,error:s.message||String(s)});try{let e=C.common?.messages?.analysisFailed||"Analysis failed, please try again",t=s?.data?.message;if(t&&"string"==typeof t)if(C.errors&&"object"==typeof C.errors&&t in C.errors){let s=C.errors[t];"string"==typeof s&&(e=s)}else e=t;O.toast.error(e)}catch{O.toast.error("Analysis failed. Please try again.")}}finally{d("idle")}},ei=async e=>{k.frontendLogger.info("[HomeDirectSave]","Starting direct save",{hasQuestionText:!!e.questionText,hasAnswerText:!!e.answerText,subjectId:e.subjectId});try{d("saving");let t=await p.apiClient.post("/api/error-items",{questionText:e.questionText,answerText:e.answerText,analysis:e.analysis,wrongAnswerText:e.wrongAnswerText||null,mistakeAnalysis:e.mistakeAnalysis||null,mistakeStatus:e.mistakeStatus||"unknown",knowledgePoints:e.knowledgePoints,subjectId:e.subjectId,gradeSemester:e.gradeSemester,paperLevel:e.paperLevel,originalImageUrl:""});t.duplicate&&k.frontendLogger.info("[HomeDirectSave]","Duplicate detected"),k.frontendLogger.info("[HomeDirectSave]","Save successful"),d("idle"),O.toast.success(t.duplicate?C.importFlow.duplicate:C.common.messages.saveSuccess),t.duplicate?z.push(`/error-items/${t.id}`):e.subjectId&&z.push(`/notebooks/${e.subjectId}`)}catch(e){k.frontendLogger.error("[HomeDirectSave]","Save failed",{errorStatus:e?.status,errorMessage:e?.data?.message||e?.message||String(e)}),d("idle"),O.toast.error(C.common?.messages?.saveFailed||"Failed to save")}},eo=P||F,el=eo?D.find(e=>e.id===eo)?.name:void 0,ed=D.reduce((e,t)=>e+(t._count?.errorItems||0),0),ec=[{value:"image",icon:y.Camera,label:C.app?.uploadImage||"拍照上传"},{value:"text",icon:j.Sparkles,label:C.app?.manualInput||"AI解题"},{value:"direct",icon:v.PenLine,label:C.app?.directInput||"直接录入"}];return(0,t.jsxs)("main",{className:"min-h-screen",children:[(0,t.jsx)(b.ProgressFeedback,{status:l}),(0,t.jsxs)("div",{className:`mx-auto space-y-6 px-4 py-6 md:px-8 md:py-8 ${"review"===e?"max-w-6xl":"max-w-4xl"}`,children:["upload"===e&&(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(x,{notebookCount:D.length,itemCount:ed,targetNotebook:P?el:void 0}),(0,t.jsxs)("div",{className:"space-y-4",children:[(0,t.jsx)(S.SegmentedControl,{options:ec,value:U,onChange:B}),J&&(0,t.jsx)(L.ImportResultBanner,{imported:J,onDismiss:()=>G(null)}),W?(0,t.jsx)(A.BatchImportPanel,{blobs:W,subjectId:P,timeout:ee,onClose:()=>Y(null)}):"image"===U?(0,t.jsx)(n.UploadZone,{onImageSelect:e=>{G(null),V(URL.createObjectURL(e)),Q(!0)},isAnalyzing:"idle"!==l}):"text"===U?(0,t.jsx)(N.TextInputZone,{onSubmit:er,isAnalyzing:"idle"!==l,defaultNotebookName:el}):(0,t.jsx)(K,{onSubmit:ei,defaultNotebookId:eo||void 0,defaultNotebookName:el,isSaving:"saving"===l})]})]}),M&&(0,t.jsx)(i.ImageCropper,{imageSrc:M,open:_,onClose:()=>Q(!1),onCropComplete:es,onMultiCropComplete:e=>{Q(!1),G(null),Y(e)}}),"review"===e&&c&&(0,t.jsx)(r.CorrectionEditor,{initialData:c,onSave:en,onCancel:()=>o("upload"),imagePreview:g,initialSubjectId:P||F||void 0,aiTimeout:ee})]})]})}e.s(["default",0,function(){return(0,t.jsx)(s.Suspense,{fallback:(0,t.jsx)(w.PageLoading,{}),children:(0,t.jsx)(V,{})})}],52683)},86963,e=>{"use strict";var t=e.i(18050),s=e.i(31278);e.s(["PageLoading",0,function({label:e}){return(0,t.jsxs)("div",{className:"flex min-h-[50vh] flex-col items-center justify-center gap-3 text-muted-foreground",children:[(0,t.jsx)(s.Loader2,{className:"h-7 w-7 animate-spin text-primary"}),e&&(0,t.jsx)("p",{className:"text-sm",children:e})]})}])}]);
@@ -1,31 +0,0 @@
1
- (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,18576,(e,r,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n={WarningIcon:function(){return u},errorStyles:function(){return a},errorThemeCss:function(){return l}};for(var o in n)Object.defineProperty(t,o,{enumerable:!0,get:n[o]});e.r(55682);let i=e.r(18050);e.r(71645);let a={container:{fontFamily:'system-ui,"Segoe UI",Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji"',height:"100vh",display:"flex",alignItems:"center",justifyContent:"center"},card:{marginTop:"-32px",maxWidth:"325px",padding:"32px 28px",textAlign:"left"},icon:{marginBottom:"24px"},title:{fontSize:"24px",fontWeight:500,letterSpacing:"-0.02em",lineHeight:"32px",margin:"0 0 12px 0",color:"var(--next-error-title)"},message:{fontSize:"14px",fontWeight:400,lineHeight:"21px",margin:"0 0 20px 0",color:"var(--next-error-message)"},form:{margin:0},buttonGroup:{display:"flex",gap:"8px",alignItems:"center"},button:{display:"inline-flex",alignItems:"center",justifyContent:"center",height:"32px",padding:"0 12px",fontSize:"14px",fontWeight:500,lineHeight:"20px",borderRadius:"6px",cursor:"pointer",color:"var(--next-error-btn-text)",background:"var(--next-error-btn-bg)",border:"var(--next-error-btn-border)"},buttonSecondary:{display:"inline-flex",alignItems:"center",justifyContent:"center",height:"32px",padding:"0 12px",fontSize:"14px",fontWeight:500,lineHeight:"20px",borderRadius:"6px",cursor:"pointer",color:"var(--next-error-btn-secondary-text)",background:"var(--next-error-btn-secondary-bg)",border:"var(--next-error-btn-secondary-border)"},digestFooter:{position:"fixed",bottom:"32px",left:"0",right:"0",textAlign:"center",fontFamily:'ui-monospace,SFMono-Regular,"SF Mono",Menlo,Consolas,monospace',fontSize:"12px",lineHeight:"18px",fontWeight:400,margin:"0",color:"var(--next-error-digest)"}},l=`
2
- :root {
3
- --next-error-bg: #fff;
4
- --next-error-text: #171717;
5
- --next-error-title: #171717;
6
- --next-error-message: #171717;
7
- --next-error-digest: #666666;
8
- --next-error-btn-text: #fff;
9
- --next-error-btn-bg: #171717;
10
- --next-error-btn-border: none;
11
- --next-error-btn-secondary-text: #171717;
12
- --next-error-btn-secondary-bg: transparent;
13
- --next-error-btn-secondary-border: 1px solid rgba(0,0,0,0.08);
14
- }
15
- @media (prefers-color-scheme: dark) {
16
- :root {
17
- --next-error-bg: #0a0a0a;
18
- --next-error-text: #ededed;
19
- --next-error-title: #ededed;
20
- --next-error-message: #ededed;
21
- --next-error-digest: #a0a0a0;
22
- --next-error-btn-text: #0a0a0a;
23
- --next-error-btn-bg: #ededed;
24
- --next-error-btn-border: none;
25
- --next-error-btn-secondary-text: #ededed;
26
- --next-error-btn-secondary-bg: transparent;
27
- --next-error-btn-secondary-border: 1px solid rgba(255,255,255,0.14);
28
- }
29
- }
30
- body { margin: 0; color: var(--next-error-text); background: var(--next-error-bg); }
31
- `.replace(/\n\s*/g,"");function u(){return(0,i.jsx)("svg",{width:"32",height:"32",viewBox:"-0.2 -1.5 32 32",fill:"none",style:a.icon,children:(0,i.jsx)("path",{d:"M16.9328 0C18.0839 0.000116771 19.1334 0.658832 19.634 1.69531L31.4299 26.1309C32.0708 27.4588 31.1036 28.9999 29.6291 29H2.00215C0.527541 29 -0.439628 27.4588 0.201371 26.1309L11.9973 1.69531C12.4979 0.658823 13.5474 7.75066e-05 14.6984 0H16.9328ZM3.59493 26H28.0363L16.9328 3H14.6984L3.59493 26ZM15.8156 19C16.9202 19.0001 17.8156 19.8955 17.8156 21C17.8156 22.1045 16.9202 22.9999 15.8156 23C14.7111 23 13.8156 22.1046 13.8156 21C13.8156 19.8954 14.7111 19 15.8156 19ZM17.3156 16.5H14.3156V8.5H17.3156V16.5Z",fill:"var(--next-error-title)"})})}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),r.exports=t.default)},68027,(e,r,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"default",{enumerable:!0,get:function(){return a}}),e.r(55682);let n=e.r(18050);e.r(71645);let o=e.r(12354),i=e.r(18576),a=function({error:e}){let r=e?.digest,t=!!r;return(0,o.handleISRError)({error:e}),(0,n.jsxs)("html",{id:"__next_error__",children:[(0,n.jsx)("head",{children:(0,n.jsx)("style",{dangerouslySetInnerHTML:{__html:i.errorThemeCss}})}),(0,n.jsxs)("body",{children:[(0,n.jsx)("div",{style:i.errorStyles.container,children:(0,n.jsxs)("div",{style:i.errorStyles.card,children:[(0,n.jsx)(i.WarningIcon,{}),(0,n.jsx)("h1",{style:i.errorStyles.title,children:"This page couldn’t load"}),(0,n.jsx)("p",{style:i.errorStyles.message,children:t?"A server error occurred. Reload to try again.":"Reload to try again, or go back."}),(0,n.jsxs)("div",{style:i.errorStyles.buttonGroup,children:[(0,n.jsx)("form",{style:i.errorStyles.form,children:(0,n.jsx)("button",{type:"submit",style:i.errorStyles.button,children:"Reload"})}),!t&&(0,n.jsx)("button",{type:"button",style:i.errorStyles.buttonSecondary,onClick:()=>{window.history.length>1?window.history.back():window.location.href="/"},children:"Back"})]})]})}),r&&(0,n.jsxs)("p",{style:i.errorStyles.digestFooter,children:["ERROR ",r]})]})]})};("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),r.exports=t.default)},72383,(e,r,t)=>{"use strict";e.i(47167),Object.defineProperty(t,"__esModule",{value:!0});var n={ErrorBoundary:function(){return _},ErrorBoundaryHandler:function(){return y}};for(var o in n)Object.defineProperty(t,o,{enumerable:!0,get:n[o]});let i=e.r(90809),a=e.r(18050),l=i._(e.r(71645)),u=e.r(90373),d=e.r(65713);e.r(78377);let s=e.r(12354),c=e.r(82604),f=e.r(8372),p="u">typeof window&&(0,c.isBot)(window.navigator.userAgent);class y extends l.default.Component{static{this.contextType=f.AppRouterContext}constructor(e){super(e),this.reset=()=>{this.setState({error:null})},this.retry=()=>{(0,l.startTransition)(()=>{this.context?.refresh(),this.reset()})},this.state={error:null,previousPathname:this.props.pathname}}static getDerivedStateFromError(e){if((0,d.isNextRouterError)(e))throw e;return{error:{thrownValue:e}}}static getDerivedStateFromProps(e,r){let{error:t}=r;return e.pathname!==r.previousPathname&&r.error?{error:null,previousPathname:e.pathname}:{error:r.error,previousPathname:e.pathname}}render(){if(this.state.error&&!p){let e=this.state.error.thrownValue;return(0,s.handleISRError)({error:e}),(0,a.jsxs)(a.Fragment,{children:[this.props.errorStyles,this.props.errorScripts,(0,a.jsx)(this.props.errorComponent,{error:e,reset:this.reset,retry:this.retry})]})}return this.props.children}}function _({errorComponent:e,errorStyles:r,errorScripts:t,children:n}){let o=(0,u.useUntrackedPathname)();return e?(0,a.jsx)(y,{pathname:o,errorComponent:e,errorStyles:r,errorScripts:t,children:n}):(0,a.jsx)(a.Fragment,{children:n})}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),r.exports=t.default)},12354,(e,r,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"handleISRError",{enumerable:!0,get:function(){return o}});let n=e.r(1425);function o({error:e}){if(n.workAsyncStorage){let r=n.workAsyncStorage.getStore();if(r?.isStaticGeneration)throw e&&console.error(e),e}}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),r.exports=t.default)},78377,(e,r,t)=>{"use strict";e.i(47167),Object.defineProperty(t,"__esModule",{value:!0});var n={handleHardNavError:function(){return a},useNavFailureHandler:function(){return l}};for(var o in n)Object.defineProperty(t,o,{enumerable:!0,get:n[o]});e.r(71645);let i=e.r(51191);function a(e){return"u">typeof window&&!!window.next.__pendingUrl&&(0,i.createHrefFromUrl)(new URL(window.location.href))!==(0,i.createHrefFromUrl)(window.next.__pendingUrl)&&(console.error("Error occurred during navigation, falling back to hard navigation",e),window.location.href=window.next.__pendingUrl.toString(),!0)}function l(){}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),r.exports=t.default)},90373,(e,r,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"useUntrackedPathname",{enumerable:!0,get:function(){return a}});let n=e.r(71645),o=e.r(61994),i=e.r(1425);function a(){return!function(){if("u"<typeof window){let e=i.workUnitAsyncStorage.getStore();if(!e)return!1;switch(e.type){case"prerender":case"prerender-client":case"prerender-ppr":case"validation-client":let r=e.fallbackRouteParams;return!!r&&r.size>0}}return!1}()?(0,n.useContext)(o.PathnameContext):null}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),r.exports=t.default)},58442,(e,r,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n={RedirectBoundary:function(){return p},RedirectErrorBoundary:function(){return f}};for(var o in n)Object.defineProperty(t,o,{enumerable:!0,get:n[o]});let i=e.r(90809),a=e.r(18050),l=i._(e.r(71645)),u=e.r(76562),d=e.r(24063),s=e.r(68391);function c({redirect:e,reset:r,redirectType:t}){let n=(0,u.useRouter)();return(0,l.useEffect)(()=>{l.default.startTransition(()=>{"push"===t?n.push(e,{}):n.replace(e,{}),r()})},[e,t,r,n]),null}class f extends l.default.Component{constructor(e){super(e),this.state={redirect:null,redirectType:null}}static getDerivedStateFromError(e){if((0,s.isRedirectError)(e)){let r=(0,d.getURLFromRedirectError)(e),t=(0,d.getRedirectTypeFromError)(e);return"handled"in e?{redirect:null,redirectType:null}:{redirect:r,redirectType:t}}throw e}render(){let{redirect:e,redirectType:r}=this.state;return null!==e&&null!==r?(0,a.jsx)(c,{redirect:e,redirectType:r,reset:()=>this.setState({redirect:null})}):this.props.children}}function p({children:e}){let r=(0,u.useRouter)();return(0,a.jsx)(f,{router:r,children:e})}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),r.exports=t.default)},70725,(e,r,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"createRouterCacheKey",{enumerable:!0,get:function(){return o}});let n=e.r(13258);function o(e,r=!1){return Array.isArray(e)?`${e[0]}|${e[1]}|${e[2]}`:r&&e.startsWith(n.PAGE_SEGMENT_KEY)?n.PAGE_SEGMENT_KEY:e}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),r.exports=t.default)},1244,(e,r,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"unresolvedThenable",{enumerable:!0,get:function(){return n}});let n={then:()=>{}};("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),r.exports=t.default)},54839,(e,r,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n={METADATA_BOUNDARY_NAME:function(){return i},OUTLET_BOUNDARY_NAME:function(){return l},ROOT_LAYOUT_BOUNDARY_NAME:function(){return u},VIEWPORT_BOUNDARY_NAME:function(){return a}};for(var o in n)Object.defineProperty(t,o,{enumerable:!0,get:n[o]});let i="__next_metadata_boundary__",a="__next_viewport_boundary__",l="__next_outlet_boundary__",u="__next_root_layout_boundary__"},97367,(e,r,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n={MetadataBoundary:function(){return l},OutletBoundary:function(){return d},RootLayoutBoundary:function(){return s},ViewportBoundary:function(){return u}};for(var o in n)Object.defineProperty(t,o,{enumerable:!0,get:n[o]});let i=e.r(54839),a={[i.METADATA_BOUNDARY_NAME]:function({children:e}){return e},[i.VIEWPORT_BOUNDARY_NAME]:function({children:e}){return e},[i.OUTLET_BOUNDARY_NAME]:function({children:e}){return e},[i.ROOT_LAYOUT_BOUNDARY_NAME]:function({children:e}){return e}},l=a[i.METADATA_BOUNDARY_NAME.slice(0)],u=a[i.VIEWPORT_BOUNDARY_NAME.slice(0)],d=a[i.OUTLET_BOUNDARY_NAME.slice(0)],s=a[i.ROOT_LAYOUT_BOUNDARY_NAME.slice(0)]},42732,(e,r,t)=>{"use strict";e.i(47167),Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"HeadManagerContext",{enumerable:!0,get:function(){return n}});let n=e.r(55682)._(e.r(71645)).default.createContext({})}]);