sa2kit 3.1.0 → 3.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (712) hide show
  1. package/README.md +5 -5
  2. package/dist/AliyunOSSProvider-7IOT5U6M.js +15 -0
  3. package/dist/{AliyunOSSProvider-4GRL2FJB.js.map → AliyunOSSProvider-7IOT5U6M.js.map} +1 -1
  4. package/dist/AliyunOSSProvider-ZXZM7OQA.mjs +6 -0
  5. package/dist/{AliyunOSSProvider-QNVFIZ7Q.mjs.map → AliyunOSSProvider-ZXZM7OQA.mjs.map} +1 -1
  6. package/dist/LocalStorageProvider-KJKRCKBS.js +15 -0
  7. package/dist/{LocalStorageProvider-PFA2DMIJ.js.map → LocalStorageProvider-KJKRCKBS.js.map} +1 -1
  8. package/dist/LocalStorageProvider-O22465NY.mjs +6 -0
  9. package/dist/{LocalStorageProvider-J5RHV37G.mjs.map → LocalStorageProvider-O22465NY.mjs.map} +1 -1
  10. package/dist/{chunk-SLKOEYFH.js → chunk-2234T4A6.js} +5 -5
  11. package/dist/chunk-2234T4A6.js.map +1 -0
  12. package/dist/{chunk-HQLKOXG7.js → chunk-36KGNXKW.js} +3 -3
  13. package/dist/{chunk-HQLKOXG7.js.map → chunk-36KGNXKW.js.map} +1 -1
  14. package/dist/{chunk-BCE6RUZV.js → chunk-375C7WL7.js} +19 -19
  15. package/dist/chunk-375C7WL7.js.map +1 -0
  16. package/dist/{chunk-VMTEDX5H.js → chunk-3J24Z4MB.js} +34 -318
  17. package/dist/chunk-3J24Z4MB.js.map +1 -0
  18. package/dist/{chunk-PBI7FKMB.js → chunk-3QCATFQV.js} +3 -3
  19. package/dist/chunk-3QCATFQV.js.map +1 -0
  20. package/dist/{chunk-FXQOXLDE.js → chunk-3R6JHA6D.js} +4 -4
  21. package/dist/chunk-3R6JHA6D.js.map +1 -0
  22. package/dist/{chunk-ZRAW3HXA.js → chunk-4OXKHV7J.js} +3 -3
  23. package/dist/chunk-4OXKHV7J.js.map +1 -0
  24. package/dist/chunk-4PJM4752.js +4 -0
  25. package/dist/{chunk-5USIS3UM.js.map → chunk-4PJM4752.js.map} +1 -1
  26. package/dist/{chunk-3Z43XGA4.mjs → chunk-65JRVC3F.mjs} +4 -4
  27. package/dist/{chunk-3Z43XGA4.mjs.map → chunk-65JRVC3F.mjs.map} +1 -1
  28. package/dist/{chunk-Q5EDCKQA.js → chunk-6HL54I2B.js} +16 -16
  29. package/dist/chunk-6HL54I2B.js.map +1 -0
  30. package/dist/chunk-6V2MIQPF.mjs +77 -0
  31. package/dist/chunk-6V2MIQPF.mjs.map +1 -0
  32. package/dist/{chunk-C6KV7VTZ.mjs → chunk-7CRU2Y5X.mjs} +5 -5
  33. package/dist/chunk-7CRU2Y5X.mjs.map +1 -0
  34. package/dist/chunk-7PMT4L4I.js +324 -0
  35. package/dist/chunk-7PMT4L4I.js.map +1 -0
  36. package/dist/{chunk-XJ7ZAGC5.js → chunk-7VVZHFEM.js} +3 -3
  37. package/dist/chunk-7VVZHFEM.js.map +1 -0
  38. package/dist/chunk-AWHGIKTQ.js +56 -0
  39. package/dist/{chunk-FHLTPXAR.js.map → chunk-AWHGIKTQ.js.map} +1 -1
  40. package/dist/chunk-B3GYF6TY.js +37 -0
  41. package/dist/{chunk-2Y7BKFKZ.js.map → chunk-B3GYF6TY.js.map} +1 -1
  42. package/dist/{chunk-5FUAQLGC.mjs → chunk-BDBJFOXM.mjs} +3 -3
  43. package/dist/{chunk-5FUAQLGC.mjs.map → chunk-BDBJFOXM.mjs.map} +1 -1
  44. package/dist/{chunk-ZGVB35L2.mjs → chunk-BTW3SWQN.mjs} +3 -3
  45. package/dist/chunk-BTW3SWQN.mjs.map +1 -0
  46. package/dist/{chunk-I5ZPEDNR.mjs → chunk-CHYSSZ4E.mjs} +10 -10
  47. package/dist/chunk-CHYSSZ4E.mjs.map +1 -0
  48. package/dist/{chunk-FIUBFREP.mjs → chunk-DO6QYAZV.mjs} +5 -5
  49. package/dist/chunk-DO6QYAZV.mjs.map +1 -0
  50. package/dist/{chunk-MBANGIG3.mjs → chunk-DTR53LQO.mjs} +6 -6
  51. package/dist/chunk-DTR53LQO.mjs.map +1 -0
  52. package/dist/{chunk-EQXPL7TN.mjs → chunk-EI2S4XDG.mjs} +16 -5
  53. package/dist/chunk-EI2S4XDG.mjs.map +1 -0
  54. package/dist/{chunk-GSNGCENJ.js → chunk-EOZHUI46.js} +16 -4
  55. package/dist/chunk-EOZHUI46.js.map +1 -0
  56. package/dist/{chunk-25OFOKNF.js → chunk-F2BZIU67.js} +18 -5
  57. package/dist/chunk-F2BZIU67.js.map +1 -0
  58. package/dist/{chunk-AQPU2AXH.js → chunk-F2TEJSCP.js} +10 -10
  59. package/dist/chunk-F2TEJSCP.js.map +1 -0
  60. package/dist/{chunk-UCOE6SET.js → chunk-FCLS5R24.js} +3 -3
  61. package/dist/chunk-FCLS5R24.js.map +1 -0
  62. package/dist/{chunk-3NHAT7D4.mjs → chunk-FUA6ZGMI.mjs} +27 -12
  63. package/dist/chunk-FUA6ZGMI.mjs.map +1 -0
  64. package/dist/chunk-FY2X3LYR.mjs +3 -0
  65. package/dist/{chunk-VRN76M56.mjs.map → chunk-FY2X3LYR.mjs.map} +1 -1
  66. package/dist/{chunk-V7EVKD5G.mjs → chunk-GS4SAW25.mjs} +4 -4
  67. package/dist/chunk-GS4SAW25.mjs.map +1 -0
  68. package/dist/chunk-H56ICWUO.js +321 -0
  69. package/dist/chunk-H56ICWUO.js.map +1 -0
  70. package/dist/{chunk-HDMIOOZY.mjs → chunk-HG34SGMN.mjs} +4 -4
  71. package/dist/chunk-HG34SGMN.mjs.map +1 -0
  72. package/dist/chunk-HL4H2HF6.js +279 -0
  73. package/dist/chunk-HL4H2HF6.js.map +1 -0
  74. package/dist/chunk-IJIQUMAK.mjs +272 -0
  75. package/dist/chunk-IJIQUMAK.mjs.map +1 -0
  76. package/dist/{imageCrop/index.mjs → chunk-KEZFTDZT.mjs} +24 -6
  77. package/dist/chunk-KEZFTDZT.mjs.map +1 -0
  78. package/dist/{chunk-KQ643L7Z.js → chunk-KHOVC2KL.js} +3 -3
  79. package/dist/chunk-KHOVC2KL.js.map +1 -0
  80. package/dist/{chunk-6PMXAK7F.js → chunk-KRBSTLKC.js} +57 -57
  81. package/dist/chunk-KRBSTLKC.js.map +1 -0
  82. package/dist/chunk-KVYHCGRY.js +2011 -0
  83. package/dist/chunk-KVYHCGRY.js.map +1 -0
  84. package/dist/{chunk-G7UBMCUT.mjs → chunk-LZ5YTMMP.mjs} +3 -3
  85. package/dist/chunk-LZ5YTMMP.mjs.map +1 -0
  86. package/dist/{chunk-WW4GE6CZ.js → chunk-MJ6XJGAL.js} +23 -119
  87. package/dist/chunk-MJ6XJGAL.js.map +1 -0
  88. package/dist/{chunk-NCRP2YHY.mjs → chunk-MKLXCV4Z.mjs} +8 -96
  89. package/dist/chunk-MKLXCV4Z.mjs.map +1 -0
  90. package/dist/chunk-MMDSZIXD.mjs +286 -0
  91. package/dist/chunk-MMDSZIXD.mjs.map +1 -0
  92. package/dist/{chunk-TC5YU6A4.mjs → chunk-N2O3OX5Y.mjs} +3 -3
  93. package/dist/chunk-N2O3OX5Y.mjs.map +1 -0
  94. package/dist/{chunk-3FRAIS4T.mjs → chunk-O6NNSPWD.mjs} +5 -5
  95. package/dist/{chunk-3FRAIS4T.mjs.map → chunk-O6NNSPWD.mjs.map} +1 -1
  96. package/dist/chunk-OIRZXSYM.js +80 -0
  97. package/dist/chunk-OIRZXSYM.js.map +1 -0
  98. package/dist/{chunk-Q5VFBPMG.mjs → chunk-P7JQRNBJ.mjs} +3 -3
  99. package/dist/chunk-P7JQRNBJ.mjs.map +1 -0
  100. package/dist/{chunk-BIHYZA67.mjs → chunk-PLIG5257.mjs} +18 -18
  101. package/dist/chunk-PLIG5257.mjs.map +1 -0
  102. package/dist/chunk-QIF4MG5V.mjs +283 -0
  103. package/dist/chunk-QIF4MG5V.mjs.map +1 -0
  104. package/dist/{chunk-4OOANEJV.mjs → chunk-RHECN4E2.mjs} +21 -21
  105. package/dist/chunk-RHECN4E2.mjs.map +1 -0
  106. package/dist/{chunk-YOTQG4NP.mjs → chunk-RHHTZTIN.mjs} +4 -4
  107. package/dist/chunk-RHHTZTIN.mjs.map +1 -0
  108. package/dist/{chunk-G6NSKJMH.js → chunk-RRQ2X26Z.js} +4 -4
  109. package/dist/chunk-RRQ2X26Z.js.map +1 -0
  110. package/dist/{chunk-4WBCWJSN.js → chunk-RST2T54Y.js} +7 -7
  111. package/dist/chunk-RST2T54Y.js.map +1 -0
  112. package/dist/{chunk-R2DXTE2L.js → chunk-RVNQI6BI.js} +4 -4
  113. package/dist/chunk-RVNQI6BI.js.map +1 -0
  114. package/dist/{chunk-SKFEJPMJ.mjs → chunk-S3K4LTRI.mjs} +6 -6
  115. package/dist/chunk-S3K4LTRI.mjs.map +1 -0
  116. package/dist/{chunk-ZM2SZJTZ.js → chunk-SWZ5XNF6.js} +9 -9
  117. package/dist/chunk-SWZ5XNF6.js.map +1 -0
  118. package/dist/{chunk-QSKLQX6H.js → chunk-U7HNBCBS.js} +16 -16
  119. package/dist/chunk-U7HNBCBS.js.map +1 -0
  120. package/dist/{chunk-CIVO4R6N.mjs → chunk-UJS3YSD3.mjs} +3 -3
  121. package/dist/chunk-UJS3YSD3.mjs.map +1 -0
  122. package/dist/{chunk-G6HXNQ2U.mjs → chunk-UJUWDF7M.mjs} +8 -8
  123. package/dist/chunk-UJUWDF7M.mjs.map +1 -0
  124. package/dist/{chunk-CAYOQDBR.js → chunk-UR5NENGE.js} +3 -3
  125. package/dist/chunk-UR5NENGE.js.map +1 -0
  126. package/dist/{chunk-QXAOXBVB.mjs → chunk-V7HGBDCB.mjs} +3 -3
  127. package/dist/chunk-V7HGBDCB.mjs.map +1 -0
  128. package/dist/{chunk-ATUCZXJY.js → chunk-V7RLIZMN.js} +14 -4
  129. package/dist/chunk-V7RLIZMN.js.map +1 -0
  130. package/dist/{chunk-ACUFEDVQ.js → chunk-VCKXK6V5.js} +9 -9
  131. package/dist/chunk-VCKXK6V5.js.map +1 -0
  132. package/dist/{chunk-XUS5ACKR.mjs → chunk-VIEXDTNF.mjs} +3 -3
  133. package/dist/chunk-VIEXDTNF.mjs.map +1 -0
  134. package/dist/{imageCrop/index.js → chunk-VN2DULIA.js} +24 -5
  135. package/dist/chunk-VN2DULIA.js.map +1 -0
  136. package/dist/{chunk-S6YSGVWD.js → chunk-VNWMRUY6.js} +31 -87
  137. package/dist/chunk-VNWMRUY6.js.map +1 -0
  138. package/dist/{chunk-3DXPQ4YV.mjs → chunk-VYK4M2D6.mjs} +18 -6
  139. package/dist/chunk-VYK4M2D6.mjs.map +1 -0
  140. package/dist/{chunk-WEEXCPSE.mjs → chunk-WB4H6ZUW.mjs} +3 -3
  141. package/dist/chunk-WB4H6ZUW.mjs.map +1 -0
  142. package/dist/{chunk-GWNBVGDT.mjs → chunk-WM3AEJ2E.mjs} +6 -257
  143. package/dist/chunk-WM3AEJ2E.mjs.map +1 -0
  144. package/dist/{chunk-CX2GHCAI.mjs → chunk-X5GINUGI.mjs} +26 -81
  145. package/dist/chunk-X5GINUGI.mjs.map +1 -0
  146. package/dist/{chunk-DIF5VRL3.mjs → chunk-XB7GUEHZ.mjs} +14 -5
  147. package/dist/chunk-XB7GUEHZ.mjs.map +1 -0
  148. package/dist/{chunk-ZLYPALF3.js → chunk-XE5RGZ3B.js} +11 -11
  149. package/dist/chunk-XE5RGZ3B.js.map +1 -0
  150. package/dist/{chunk-WJ7IMUEJ.mjs → chunk-XNTIMVSL.mjs} +7 -7
  151. package/dist/chunk-XNTIMVSL.mjs.map +1 -0
  152. package/dist/{chunk-ZWQJSZEY.js → chunk-Y7WHUKJF.js} +28 -12
  153. package/dist/chunk-Y7WHUKJF.js.map +1 -0
  154. package/dist/{components/index.mjs → chunk-YIRPPMCN.mjs} +305 -785
  155. package/dist/chunk-YIRPPMCN.mjs.map +1 -0
  156. package/dist/{chunk-KH6RQ4J5.js → chunk-Z2SNB5LJ.js} +3 -3
  157. package/dist/chunk-Z2SNB5LJ.js.map +1 -0
  158. package/dist/{chunk-HJ6MH7J7.js → chunk-ZOP7YIVX.js} +17 -17
  159. package/dist/chunk-ZOP7YIVX.js.map +1 -0
  160. package/dist/{chunk-HJZHQW5R.mjs → chunk-ZUZLWHH5.mjs} +3 -3
  161. package/dist/chunk-ZUZLWHH5.mjs.map +1 -0
  162. package/dist/{ai → common/ai}/llm/core/index.d.mts +3 -3
  163. package/dist/{ai → common/ai}/llm/core/index.d.ts +3 -3
  164. package/dist/{ai/llm → common/ai/llm/core}/index.js +14 -14
  165. package/dist/{ai/llm → common/ai/llm/core}/index.mjs +3 -3
  166. package/dist/{ai → common/ai}/llm/electron/index.d.mts +3 -3
  167. package/dist/{ai/llm/web → common/ai/llm/electron}/index.d.ts +3 -3
  168. package/dist/common/ai/llm/electron/index.js +67 -0
  169. package/dist/common/ai/llm/electron/index.mjs +10 -0
  170. package/dist/{ai → common/ai}/llm/index.d.mts +2 -2
  171. package/dist/{ai → common/ai}/llm/index.d.ts +2 -2
  172. package/dist/{ai/llm/core → common/ai/llm}/index.js +13 -13
  173. package/dist/{ai/llm/core → common/ai/llm}/index.mjs +2 -2
  174. package/dist/{ai → common/ai}/llm/miniapp/index.d.mts +3 -3
  175. package/dist/{ai → common/ai}/llm/miniapp/index.d.ts +3 -3
  176. package/dist/{ai/llm/rn → common/ai/llm/miniapp}/index.js +16 -16
  177. package/dist/{ai/llm/rn → common/ai/llm/miniapp}/index.mjs +4 -4
  178. package/dist/{ai → common/ai}/llm/rn/index.d.mts +3 -3
  179. package/dist/{ai → common/ai}/llm/rn/index.d.ts +3 -3
  180. package/dist/{ai/llm/miniapp → common/ai/llm/rn}/index.js +16 -16
  181. package/dist/{ai/llm/miniapp → common/ai/llm/rn}/index.mjs +4 -4
  182. package/dist/common/ai/llm/ui/electron/index.d.mts +5 -0
  183. package/dist/common/ai/llm/ui/electron/index.d.ts +5 -0
  184. package/dist/common/ai/llm/ui/electron/index.js +22 -0
  185. package/dist/common/ai/llm/ui/electron/index.mjs +9 -0
  186. package/dist/common/ai/llm/ui/miniapp/index.d.mts +9 -0
  187. package/dist/common/ai/llm/ui/miniapp/index.d.ts +9 -0
  188. package/dist/common/ai/llm/ui/miniapp/index.js +14 -0
  189. package/dist/common/ai/llm/ui/miniapp/index.mjs +5 -0
  190. package/dist/common/ai/llm/ui/rn/index.d.mts +9 -0
  191. package/dist/common/ai/llm/ui/rn/index.d.ts +9 -0
  192. package/dist/common/ai/llm/ui/rn/index.js +14 -0
  193. package/dist/common/ai/llm/ui/rn/index.mjs +5 -0
  194. package/dist/{ai → common/ai}/llm/ui/web/index.d.mts +7 -7
  195. package/dist/{ai → common/ai}/llm/ui/web/index.d.ts +7 -7
  196. package/dist/common/ai/llm/ui/web/index.js +21 -0
  197. package/dist/common/ai/llm/ui/web/index.mjs +8 -0
  198. package/dist/{ai → common/ai}/llm/web/index.d.mts +3 -3
  199. package/dist/{ai/llm/electron → common/ai/llm/web}/index.d.ts +3 -3
  200. package/dist/common/ai/llm/web/index.js +66 -0
  201. package/dist/common/ai/llm/web/index.mjs +9 -0
  202. package/dist/{analytics → common/analytics}/index.d.mts +1 -1
  203. package/dist/{analytics → common/analytics}/index.d.ts +1 -1
  204. package/dist/{analytics → common/analytics}/index.js +79 -79
  205. package/dist/{analytics → common/analytics}/index.mjs +3 -3
  206. package/dist/{analytics → common/analytics}/server/index.js +2 -2
  207. package/dist/common/analytics/server/index.js.map +1 -0
  208. package/dist/{analytics → common/analytics}/server/index.mjs +2 -2
  209. package/dist/common/analytics/server/index.mjs.map +1 -0
  210. package/dist/{api → common/api}/index.d.mts +3 -3
  211. package/dist/{api → common/api}/index.d.ts +3 -3
  212. package/dist/common/api/index.js +21 -0
  213. package/dist/common/api/index.mjs +4 -0
  214. package/dist/common/auth/components/index.d.mts +9 -9
  215. package/dist/common/auth/components/index.d.ts +9 -9
  216. package/dist/common/auth/index.js +6 -6
  217. package/dist/common/auth/index.mjs +2 -2
  218. package/dist/common/auth/react/index.d.mts +3 -3
  219. package/dist/common/auth/react/index.d.ts +3 -3
  220. package/dist/common/auth/rn/index.d.mts +2 -2
  221. package/dist/common/auth/rn/index.d.ts +2 -2
  222. package/dist/common/auth/rn/index.js +2 -2
  223. package/dist/common/auth/rn/index.js.map +1 -1
  224. package/dist/common/auth/rn/index.mjs +1 -1
  225. package/dist/common/auth/rn/index.mjs.map +1 -1
  226. package/dist/common/components/index.d.mts +4 -0
  227. package/dist/common/components/index.d.ts +4 -0
  228. package/dist/common/components/index.js +414 -0
  229. package/dist/common/components/index.mjs +9 -0
  230. package/dist/{config → common/config}/index.d.mts +1 -1
  231. package/dist/{config → common/config}/index.d.ts +1 -1
  232. package/dist/common/config/index.js +21 -0
  233. package/dist/common/config/index.mjs +4 -0
  234. package/dist/{config → common/config}/server/index.js +5 -5
  235. package/dist/common/config/server/index.js.map +1 -0
  236. package/dist/{config → common/config}/server/index.mjs +5 -5
  237. package/dist/common/config/server/index.mjs.map +1 -0
  238. package/dist/common/export/index.d.mts +2 -2
  239. package/dist/common/export/index.d.ts +2 -2
  240. package/dist/common/export/index.js +67 -67
  241. package/dist/common/export/index.mjs +3 -3
  242. package/dist/common/export/server/index.d.mts +2 -2
  243. package/dist/common/export/server/index.d.ts +2 -2
  244. package/dist/common/export/server/index.js +76 -48
  245. package/dist/common/export/server/index.mjs +3 -3
  246. package/dist/common/file/index.d.mts +2 -2
  247. package/dist/common/file/index.d.ts +2 -2
  248. package/dist/common/file/index.js +27 -27
  249. package/dist/common/file/index.mjs +5 -5
  250. package/dist/common/file/server/index.d.mts +2 -2
  251. package/dist/common/file/server/index.d.ts +2 -2
  252. package/dist/common/file/server/index.js +58 -50
  253. package/dist/common/file/server/index.mjs +8 -8
  254. package/dist/{i18n → common/i18n}/index.d.mts +1 -1
  255. package/dist/{i18n → common/i18n}/index.d.ts +1 -1
  256. package/dist/{i18n → common/i18n}/index.js +18 -18
  257. package/dist/{i18n → common/i18n}/index.mjs +2 -2
  258. package/dist/common/imageCrop/index.d.mts +2 -0
  259. package/dist/common/imageCrop/index.d.ts +2 -0
  260. package/dist/common/imageCrop/index.js +61 -0
  261. package/dist/common/imageCrop/index.mjs +4 -0
  262. package/dist/common/index.d.mts +16 -16
  263. package/dist/common/index.d.ts +16 -16
  264. package/dist/common/index.js +75 -67
  265. package/dist/common/index.mjs +26 -26
  266. package/dist/common/logger/index.d.mts +1 -1
  267. package/dist/common/logger/index.d.ts +1 -1
  268. package/dist/common/logger/index.js +6 -7
  269. package/dist/common/logger/index.mjs +1 -2
  270. package/dist/{ossFile → common/ossFile}/index.d.mts +6 -6
  271. package/dist/{ossFile → common/ossFile}/index.d.ts +6 -6
  272. package/dist/{ossFile → common/ossFile}/index.js +26 -26
  273. package/dist/{ossFile → common/ossFile}/index.mjs +5 -5
  274. package/dist/{ossFile/server/index.d.ts → common/ossFile/server/index.d.mts} +7 -7
  275. package/dist/{ossFile/server/index.d.mts → common/ossFile/server/index.d.ts} +7 -7
  276. package/dist/{ossFile → common/ossFile}/server/index.js +60 -52
  277. package/dist/{ossFile → common/ossFile}/server/index.mjs +10 -10
  278. package/dist/common/platform/index.js +8 -8
  279. package/dist/common/platform/index.mjs +4 -4
  280. package/dist/common/request/index.d.mts +1 -1
  281. package/dist/common/request/index.d.ts +1 -1
  282. package/dist/common/request/index.js +5 -6
  283. package/dist/common/request/index.mjs +2 -3
  284. package/dist/common/storage/index.d.mts +1 -1
  285. package/dist/common/storage/index.d.ts +1 -1
  286. package/dist/common/storage/index.js +17 -17
  287. package/dist/common/storage/index.mjs +5 -5
  288. package/dist/{universalExport → common/universalExport}/index.d.mts +6 -86
  289. package/dist/{universalExport → common/universalExport}/index.d.ts +6 -86
  290. package/dist/{universalExport → common/universalExport}/index.js +67 -67
  291. package/dist/common/universalExport/index.mjs +5 -0
  292. package/dist/{universalExport → common/universalExport}/server/index.d.mts +3 -84
  293. package/dist/{universalExport → common/universalExport}/server/index.d.ts +3 -84
  294. package/dist/common/universalExport/server/index.js +151 -0
  295. package/dist/common/universalExport/server/index.mjs +6 -0
  296. package/dist/{universalFile/index.d.ts → common/universalFile/index.d.mts} +9 -9
  297. package/dist/{universalFile/index.d.mts → common/universalFile/index.d.ts} +9 -9
  298. package/dist/{universalFile → common/universalFile}/index.js +63 -63
  299. package/dist/common/universalFile/index.js.map +1 -0
  300. package/dist/{universalFile → common/universalFile}/index.mjs +4 -4
  301. package/dist/common/universalFile/index.mjs.map +1 -0
  302. package/dist/{universalFile → common/universalFile}/server/index.d.mts +5 -5
  303. package/dist/{universalFile → common/universalFile}/server/index.d.ts +5 -5
  304. package/dist/{universalFile → common/universalFile}/server/index.js +68 -68
  305. package/dist/{universalFile → common/universalFile}/server/index.mjs +8 -8
  306. package/dist/common/utils/index.d.mts +1 -1
  307. package/dist/common/utils/index.d.ts +1 -1
  308. package/dist/common/utils/index.js +11 -12
  309. package/dist/common/utils/index.mjs +2 -3
  310. package/dist/{index-WrR57hKT.d.ts → index-BRLygK4h.d.ts} +2 -2
  311. package/dist/{request/index.d.mts → index-BWNK5mH2.d.ts} +19 -2
  312. package/dist/{utils/index.d.mts → index-BiCK6gg6.d.mts} +19 -1
  313. package/dist/{utils/index.d.ts → index-BiCK6gg6.d.ts} +19 -1
  314. package/dist/{index-DoUo8IrU.d.mts → index-BxZauNN_.d.mts} +8 -8
  315. package/dist/{index-DoUo8IrU.d.ts → index-BxZauNN_.d.ts} +8 -8
  316. package/dist/{request/index.d.ts → index-C-P2yBTH.d.mts} +19 -2
  317. package/dist/{index-D0cqaQEH.d.mts → index-CLB80GCP.d.mts} +5 -5
  318. package/dist/{index-D0cqaQEH.d.ts → index-CLB80GCP.d.ts} +5 -5
  319. package/dist/{index-2G9Dxjvt.d.ts → index-CT4K2z-O.d.ts} +2 -2
  320. package/dist/{index-qcOvRVuN.d.mts → index-D6RJTGce.d.mts} +2 -2
  321. package/dist/{storage/index.d.ts → index-DA7L9JlE.d.mts} +26 -3
  322. package/dist/{imageCrop/index.d.mts → index-DXVph21C.d.mts} +40 -4
  323. package/dist/{imageCrop/index.d.ts → index-DXVph21C.d.ts} +40 -4
  324. package/dist/{index-CYuUB8aF.d.mts → index-DzyK789B.d.mts} +2 -2
  325. package/dist/{logger/index.d.mts → index-FVJZCEtm.d.mts} +21 -1
  326. package/dist/{logger/index.d.ts → index-FVJZCEtm.d.ts} +21 -1
  327. package/dist/{storage/index.d.mts → index-nD9vPCZT.d.ts} +26 -3
  328. package/dist/{components/index.d.mts → index-nOmIv2BG.d.mts} +159 -5
  329. package/dist/{components/index.d.ts → index-nOmIv2BG.d.ts} +159 -5
  330. package/dist/{path-qjVnH8qU.d.ts → path-Bzc7hj1N.d.ts} +5 -1
  331. package/dist/{path-DkaHQSyW.d.mts → path-DN_65vhO.d.mts} +5 -1
  332. package/dist/{types-3ujSNAXb.d.mts → utils-Dm3O1rAa.d.mts} +81 -1
  333. package/dist/{types-3ujSNAXb.d.ts → utils-Dm3O1rAa.d.ts} +81 -1
  334. package/package.json +292 -312
  335. package/dist/AliyunOSSProvider-4GRL2FJB.js +0 -15
  336. package/dist/AliyunOSSProvider-QNVFIZ7Q.mjs +0 -6
  337. package/dist/CollisionBalls-BpHufX3H.d.mts +0 -41
  338. package/dist/CollisionBalls-BpHufX3H.d.ts +0 -41
  339. package/dist/ConfigService-BxK06xP6.d.mts +0 -262
  340. package/dist/ConfigService-BxK06xP6.d.ts +0 -262
  341. package/dist/LocalStorageProvider-J5RHV37G.mjs +0 -6
  342. package/dist/LocalStorageProvider-PFA2DMIJ.js +0 -15
  343. package/dist/UniversalFileService-CC4d3wkc.d.ts +0 -139
  344. package/dist/UniversalFileService-CzAE_G4V.d.mts +0 -139
  345. package/dist/ai/llm/electron/index.js +0 -66
  346. package/dist/ai/llm/electron/index.mjs +0 -9
  347. package/dist/ai/llm/ui/electron/index.d.mts +0 -5
  348. package/dist/ai/llm/ui/electron/index.d.ts +0 -5
  349. package/dist/ai/llm/ui/electron/index.js +0 -21
  350. package/dist/ai/llm/ui/electron/index.mjs +0 -8
  351. package/dist/ai/llm/ui/miniapp/index.d.mts +0 -9
  352. package/dist/ai/llm/ui/miniapp/index.d.ts +0 -9
  353. package/dist/ai/llm/ui/miniapp/index.js +0 -14
  354. package/dist/ai/llm/ui/miniapp/index.mjs +0 -5
  355. package/dist/ai/llm/ui/rn/index.d.mts +0 -9
  356. package/dist/ai/llm/ui/rn/index.d.ts +0 -9
  357. package/dist/ai/llm/ui/rn/index.js +0 -14
  358. package/dist/ai/llm/ui/rn/index.mjs +0 -5
  359. package/dist/ai/llm/ui/web/index.js +0 -20
  360. package/dist/ai/llm/ui/web/index.mjs +0 -7
  361. package/dist/ai/llm/web/index.js +0 -65
  362. package/dist/ai/llm/web/index.mjs +0 -8
  363. package/dist/analytics/server/index.js.map +0 -1
  364. package/dist/analytics/server/index.mjs.map +0 -1
  365. package/dist/api/index.js +0 -21
  366. package/dist/api/index.mjs +0 -4
  367. package/dist/audioDetection/index.d.mts +0 -449
  368. package/dist/audioDetection/index.d.ts +0 -449
  369. package/dist/audioDetection/index.js +0 -1244
  370. package/dist/audioDetection/index.js.map +0 -1
  371. package/dist/audioDetection/index.mjs +0 -1227
  372. package/dist/audioDetection/index.mjs.map +0 -1
  373. package/dist/boothVaultService-Cn4WPhjg.d.mts +0 -83
  374. package/dist/boothVaultService-Cn4WPhjg.d.ts +0 -83
  375. package/dist/business/index.d.mts +0 -2
  376. package/dist/business/index.d.ts +0 -2
  377. package/dist/business/index.js +0 -581
  378. package/dist/business/index.js.map +0 -1
  379. package/dist/business/index.mjs +0 -575
  380. package/dist/business/index.mjs.map +0 -1
  381. package/dist/calendar/index.d.mts +0 -1325
  382. package/dist/calendar/index.d.ts +0 -1325
  383. package/dist/calendar/index.js +0 -5964
  384. package/dist/calendar/index.js.map +0 -1
  385. package/dist/calendar/index.mjs +0 -5878
  386. package/dist/calendar/index.mjs.map +0 -1
  387. package/dist/calendar/routes/index.d.mts +0 -191
  388. package/dist/calendar/routes/index.d.ts +0 -191
  389. package/dist/calendar/routes/index.js +0 -844
  390. package/dist/calendar/routes/index.js.map +0 -1
  391. package/dist/calendar/routes/index.mjs +0 -826
  392. package/dist/calendar/routes/index.mjs.map +0 -1
  393. package/dist/chunk-25OFOKNF.js.map +0 -1
  394. package/dist/chunk-2Y7BKFKZ.js +0 -37
  395. package/dist/chunk-3CSCIRQY.js +0 -17
  396. package/dist/chunk-3CSCIRQY.js.map +0 -1
  397. package/dist/chunk-3DXPQ4YV.mjs.map +0 -1
  398. package/dist/chunk-3NHAT7D4.mjs.map +0 -1
  399. package/dist/chunk-4FDUURSD.js +0 -22
  400. package/dist/chunk-4FDUURSD.js.map +0 -1
  401. package/dist/chunk-4OOANEJV.mjs.map +0 -1
  402. package/dist/chunk-4WBCWJSN.js.map +0 -1
  403. package/dist/chunk-5GBDDXYL.mjs +0 -23
  404. package/dist/chunk-5GBDDXYL.mjs.map +0 -1
  405. package/dist/chunk-5USIS3UM.js +0 -4
  406. package/dist/chunk-6PMXAK7F.js.map +0 -1
  407. package/dist/chunk-7B5SI4OF.mjs +0 -15
  408. package/dist/chunk-7B5SI4OF.mjs.map +0 -1
  409. package/dist/chunk-ACUFEDVQ.js.map +0 -1
  410. package/dist/chunk-AQPU2AXH.js.map +0 -1
  411. package/dist/chunk-ATUCZXJY.js.map +0 -1
  412. package/dist/chunk-BCE6RUZV.js.map +0 -1
  413. package/dist/chunk-BIHYZA67.mjs.map +0 -1
  414. package/dist/chunk-C6KV7VTZ.mjs.map +0 -1
  415. package/dist/chunk-CAYOQDBR.js.map +0 -1
  416. package/dist/chunk-CIVO4R6N.mjs.map +0 -1
  417. package/dist/chunk-CX2GHCAI.mjs.map +0 -1
  418. package/dist/chunk-DIF5VRL3.mjs.map +0 -1
  419. package/dist/chunk-EQXPL7TN.mjs.map +0 -1
  420. package/dist/chunk-FCEBAWN6.js +0 -18
  421. package/dist/chunk-FCEBAWN6.js.map +0 -1
  422. package/dist/chunk-FHIE5MTC.mjs +0 -541
  423. package/dist/chunk-FHIE5MTC.mjs.map +0 -1
  424. package/dist/chunk-FHLTPXAR.js +0 -56
  425. package/dist/chunk-FIUBFREP.mjs.map +0 -1
  426. package/dist/chunk-FXQOXLDE.js.map +0 -1
  427. package/dist/chunk-G6HXNQ2U.mjs.map +0 -1
  428. package/dist/chunk-G6NSKJMH.js.map +0 -1
  429. package/dist/chunk-G7UBMCUT.mjs.map +0 -1
  430. package/dist/chunk-GSNGCENJ.js.map +0 -1
  431. package/dist/chunk-GWNBVGDT.mjs.map +0 -1
  432. package/dist/chunk-HDMIOOZY.mjs.map +0 -1
  433. package/dist/chunk-HJ6MH7J7.js.map +0 -1
  434. package/dist/chunk-HJZHQW5R.mjs.map +0 -1
  435. package/dist/chunk-I5ZPEDNR.mjs.map +0 -1
  436. package/dist/chunk-KH6RQ4J5.js.map +0 -1
  437. package/dist/chunk-KQ643L7Z.js.map +0 -1
  438. package/dist/chunk-LFB5EIIM.mjs +0 -31
  439. package/dist/chunk-LFB5EIIM.mjs.map +0 -1
  440. package/dist/chunk-MBANGIG3.mjs.map +0 -1
  441. package/dist/chunk-NCRP2YHY.mjs.map +0 -1
  442. package/dist/chunk-NDGHXVGS.js +0 -25
  443. package/dist/chunk-NDGHXVGS.js.map +0 -1
  444. package/dist/chunk-NDPO5OMC.js +0 -563
  445. package/dist/chunk-NDPO5OMC.js.map +0 -1
  446. package/dist/chunk-PBI7FKMB.js.map +0 -1
  447. package/dist/chunk-Q5EDCKQA.js.map +0 -1
  448. package/dist/chunk-Q5VFBPMG.mjs.map +0 -1
  449. package/dist/chunk-QSKLQX6H.js.map +0 -1
  450. package/dist/chunk-QXAOXBVB.mjs.map +0 -1
  451. package/dist/chunk-R2DXTE2L.js.map +0 -1
  452. package/dist/chunk-RTD2WHQQ.mjs +0 -16
  453. package/dist/chunk-RTD2WHQQ.mjs.map +0 -1
  454. package/dist/chunk-S6YSGVWD.js.map +0 -1
  455. package/dist/chunk-SKFEJPMJ.mjs.map +0 -1
  456. package/dist/chunk-SLKOEYFH.js.map +0 -1
  457. package/dist/chunk-TC5YU6A4.mjs.map +0 -1
  458. package/dist/chunk-UCOE6SET.js.map +0 -1
  459. package/dist/chunk-UIYKZ73N.js +0 -36
  460. package/dist/chunk-UIYKZ73N.js.map +0 -1
  461. package/dist/chunk-V7EVKD5G.mjs.map +0 -1
  462. package/dist/chunk-VMTEDX5H.js.map +0 -1
  463. package/dist/chunk-VRN76M56.mjs +0 -3
  464. package/dist/chunk-VXFUXZN5.mjs +0 -20
  465. package/dist/chunk-VXFUXZN5.mjs.map +0 -1
  466. package/dist/chunk-WEEXCPSE.mjs.map +0 -1
  467. package/dist/chunk-WJ7IMUEJ.mjs.map +0 -1
  468. package/dist/chunk-WW4GE6CZ.js.map +0 -1
  469. package/dist/chunk-XJ7ZAGC5.js.map +0 -1
  470. package/dist/chunk-XUS5ACKR.mjs.map +0 -1
  471. package/dist/chunk-YOTQG4NP.mjs.map +0 -1
  472. package/dist/chunk-ZGVB35L2.mjs.map +0 -1
  473. package/dist/chunk-ZLYPALF3.js.map +0 -1
  474. package/dist/chunk-ZM2SZJTZ.js.map +0 -1
  475. package/dist/chunk-ZRAW3HXA.js.map +0 -1
  476. package/dist/chunk-ZWQJSZEY.js.map +0 -1
  477. package/dist/components/index.js +0 -2516
  478. package/dist/components/index.js.map +0 -1
  479. package/dist/components/index.mjs.map +0 -1
  480. package/dist/config/index.js +0 -21
  481. package/dist/config/index.mjs +0 -4
  482. package/dist/config/server/index.js.map +0 -1
  483. package/dist/config/server/index.mjs.map +0 -1
  484. package/dist/drizzle-schema-BNhqj2AZ.d.mts +0 -1114
  485. package/dist/drizzle-schema-BNhqj2AZ.d.ts +0 -1114
  486. package/dist/festivalCard/index.d.mts +0 -76
  487. package/dist/festivalCard/index.d.ts +0 -76
  488. package/dist/festivalCard/index.js +0 -1492
  489. package/dist/festivalCard/index.js.map +0 -1
  490. package/dist/festivalCard/index.mjs +0 -1475
  491. package/dist/festivalCard/index.mjs.map +0 -1
  492. package/dist/festivalCard/routes/index.d.mts +0 -42
  493. package/dist/festivalCard/routes/index.d.ts +0 -42
  494. package/dist/festivalCard/routes/index.js +0 -361
  495. package/dist/festivalCard/routes/index.js.map +0 -1
  496. package/dist/festivalCard/routes/index.mjs +0 -356
  497. package/dist/festivalCard/routes/index.mjs.map +0 -1
  498. package/dist/festivalCard/server/index.d.mts +0 -120
  499. package/dist/festivalCard/server/index.d.ts +0 -120
  500. package/dist/festivalCard/server/index.js +0 -272
  501. package/dist/festivalCard/server/index.js.map +0 -1
  502. package/dist/festivalCard/server/index.mjs +0 -265
  503. package/dist/festivalCard/server/index.mjs.map +0 -1
  504. package/dist/festivalCardService-B3GsnNpV.d.ts +0 -13
  505. package/dist/festivalCardService-CWhrLNE9.d.mts +0 -13
  506. package/dist/imageCrop/index.js.map +0 -1
  507. package/dist/imageCrop/index.mjs.map +0 -1
  508. package/dist/index-Bjem5rWn.d.mts +0 -17
  509. package/dist/index-C5U-2hJq.d.ts +0 -23
  510. package/dist/index-CifSBBP2.d.ts +0 -17
  511. package/dist/index-D0K4ehme.d.mts +0 -20
  512. package/dist/index-DLnfKN-a.d.mts +0 -23
  513. package/dist/index-DSel44Ke.d.mts +0 -93
  514. package/dist/index-DSel44Ke.d.ts +0 -93
  515. package/dist/index-DZ5iJtNO.d.mts +0 -102
  516. package/dist/index-DZ5iJtNO.d.ts +0 -102
  517. package/dist/index-Da7qdkgW.d.ts +0 -20
  518. package/dist/index-DrPcMJPc.d.mts +0 -250
  519. package/dist/index-DrPcMJPc.d.ts +0 -250
  520. package/dist/index-oLUvfqT8.d.ts +0 -20
  521. package/dist/index-pe38RDgC.d.mts +0 -20
  522. package/dist/index.d.mts +0 -11611
  523. package/dist/index.d.ts +0 -11611
  524. package/dist/index.js +0 -17230
  525. package/dist/index.js.map +0 -1
  526. package/dist/index.mjs +0 -16954
  527. package/dist/index.mjs.map +0 -1
  528. package/dist/logger/index.js +0 -29
  529. package/dist/logger/index.mjs +0 -4
  530. package/dist/mikuContest/ui/web/index.d.mts +0 -2
  531. package/dist/mikuContest/ui/web/index.d.ts +0 -2
  532. package/dist/mikuContest/ui/web/index.js +0 -353
  533. package/dist/mikuContest/ui/web/index.js.map +0 -1
  534. package/dist/mikuContest/ui/web/index.mjs +0 -343
  535. package/dist/mikuContest/ui/web/index.mjs.map +0 -1
  536. package/dist/mikuFireworks3D/index.d.mts +0 -268
  537. package/dist/mikuFireworks3D/index.d.ts +0 -268
  538. package/dist/mikuFireworks3D/index.js +0 -1267
  539. package/dist/mikuFireworks3D/index.js.map +0 -1
  540. package/dist/mikuFireworks3D/index.mjs +0 -1228
  541. package/dist/mikuFireworks3D/index.mjs.map +0 -1
  542. package/dist/mikuFusionGame/index.d.mts +0 -117
  543. package/dist/mikuFusionGame/index.d.ts +0 -117
  544. package/dist/mikuFusionGame/index.js +0 -1208
  545. package/dist/mikuFusionGame/index.js.map +0 -1
  546. package/dist/mikuFusionGame/index.mjs +0 -1195
  547. package/dist/mikuFusionGame/index.mjs.map +0 -1
  548. package/dist/mmd/admin/index.d.mts +0 -487
  549. package/dist/mmd/admin/index.d.ts +0 -487
  550. package/dist/mmd/admin/index.js +0 -1058
  551. package/dist/mmd/admin/index.js.map +0 -1
  552. package/dist/mmd/admin/index.mjs +0 -1027
  553. package/dist/mmd/admin/index.mjs.map +0 -1
  554. package/dist/mmd/index.d.mts +0 -2467
  555. package/dist/mmd/index.d.ts +0 -2467
  556. package/dist/mmd/index.js +0 -10119
  557. package/dist/mmd/index.js.map +0 -1
  558. package/dist/mmd/index.mjs +0 -10028
  559. package/dist/mmd/index.mjs.map +0 -1
  560. package/dist/mmd/server/index.d.mts +0 -139
  561. package/dist/mmd/server/index.d.ts +0 -139
  562. package/dist/mmd/server/index.js +0 -424
  563. package/dist/mmd/server/index.js.map +0 -1
  564. package/dist/mmd/server/index.mjs +0 -404
  565. package/dist/mmd/server/index.mjs.map +0 -1
  566. package/dist/music/index.d.mts +0 -74
  567. package/dist/music/index.d.ts +0 -74
  568. package/dist/music/index.js +0 -830
  569. package/dist/music/index.js.map +0 -1
  570. package/dist/music/index.mjs +0 -809
  571. package/dist/music/index.mjs.map +0 -1
  572. package/dist/music/server/index.d.mts +0 -1
  573. package/dist/music/server/index.d.ts +0 -1
  574. package/dist/music/server/index.js +0 -194
  575. package/dist/music/server/index.js.map +0 -1
  576. package/dist/music/server/index.mjs +0 -182
  577. package/dist/music/server/index.mjs.map +0 -1
  578. package/dist/navigation/index.d.mts +0 -93
  579. package/dist/navigation/index.d.ts +0 -93
  580. package/dist/navigation/index.js +0 -453
  581. package/dist/navigation/index.js.map +0 -1
  582. package/dist/navigation/index.mjs +0 -443
  583. package/dist/navigation/index.mjs.map +0 -1
  584. package/dist/portfolio/index.d.mts +0 -66
  585. package/dist/portfolio/index.d.ts +0 -66
  586. package/dist/portfolio/index.js +0 -736
  587. package/dist/portfolio/index.js.map +0 -1
  588. package/dist/portfolio/index.mjs +0 -724
  589. package/dist/portfolio/index.mjs.map +0 -1
  590. package/dist/qqbot/server/index.d.mts +0 -216
  591. package/dist/qqbot/server/index.d.ts +0 -216
  592. package/dist/qqbot/server/index.js +0 -394
  593. package/dist/qqbot/server/index.js.map +0 -1
  594. package/dist/qqbot/server/index.mjs +0 -385
  595. package/dist/qqbot/server/index.mjs.map +0 -1
  596. package/dist/qqbot/ui/web/index.d.mts +0 -10
  597. package/dist/qqbot/ui/web/index.d.ts +0 -10
  598. package/dist/qqbot/ui/web/index.js +0 -105
  599. package/dist/qqbot/ui/web/index.js.map +0 -1
  600. package/dist/qqbot/ui/web/index.mjs +0 -99
  601. package/dist/qqbot/ui/web/index.mjs.map +0 -1
  602. package/dist/request/index.js +0 -22
  603. package/dist/request/index.mjs +0 -5
  604. package/dist/screenReceiver/index.d.mts +0 -86
  605. package/dist/screenReceiver/index.d.ts +0 -86
  606. package/dist/screenReceiver/index.js +0 -281
  607. package/dist/screenReceiver/index.js.map +0 -1
  608. package/dist/screenReceiver/index.mjs +0 -273
  609. package/dist/screenReceiver/index.mjs.map +0 -1
  610. package/dist/storage/index.js +0 -48
  611. package/dist/storage/index.mjs +0 -7
  612. package/dist/testYourself/admin/index.d.mts +0 -58
  613. package/dist/testYourself/admin/index.d.ts +0 -58
  614. package/dist/testYourself/admin/index.js +0 -1009
  615. package/dist/testYourself/admin/index.js.map +0 -1
  616. package/dist/testYourself/admin/index.mjs +0 -1002
  617. package/dist/testYourself/admin/index.mjs.map +0 -1
  618. package/dist/testYourself/index.d.mts +0 -53
  619. package/dist/testYourself/index.d.ts +0 -53
  620. package/dist/testYourself/index.js +0 -2551
  621. package/dist/testYourself/index.js.map +0 -1
  622. package/dist/testYourself/index.mjs +0 -2531
  623. package/dist/testYourself/index.mjs.map +0 -1
  624. package/dist/testYourself/server/index.d.mts +0 -1029
  625. package/dist/testYourself/server/index.d.ts +0 -1029
  626. package/dist/testYourself/server/index.js +0 -825
  627. package/dist/testYourself/server/index.js.map +0 -1
  628. package/dist/testYourself/server/index.mjs +0 -816
  629. package/dist/testYourself/server/index.mjs.map +0 -1
  630. package/dist/types-B6B210gX.d.mts +0 -270
  631. package/dist/types-B6B210gX.d.ts +0 -270
  632. package/dist/types-Bdnte5EN.d.mts +0 -292
  633. package/dist/types-Cs0CLvrH.d.mts +0 -70
  634. package/dist/types-Cs0CLvrH.d.ts +0 -70
  635. package/dist/types-HorDyIRv.d.mts +0 -303
  636. package/dist/types-HorDyIRv.d.ts +0 -303
  637. package/dist/types-_rFX1atk.d.ts +0 -292
  638. package/dist/universalExport/index.mjs +0 -5
  639. package/dist/universalExport/server/index.js +0 -123
  640. package/dist/universalExport/server/index.mjs +0 -6
  641. package/dist/universalFile/index.js.map +0 -1
  642. package/dist/universalFile/index.mjs.map +0 -1
  643. package/dist/universalFile/server/index.js.map +0 -1
  644. package/dist/universalFile/server/index.mjs.map +0 -1
  645. package/dist/utils/index.js +0 -46
  646. package/dist/utils/index.js.map +0 -1
  647. package/dist/utils/index.mjs +0 -5
  648. package/dist/utils/index.mjs.map +0 -1
  649. package/dist/vocaloidBooth/index.d.mts +0 -64
  650. package/dist/vocaloidBooth/index.d.ts +0 -64
  651. package/dist/vocaloidBooth/index.js +0 -376
  652. package/dist/vocaloidBooth/index.js.map +0 -1
  653. package/dist/vocaloidBooth/index.mjs +0 -362
  654. package/dist/vocaloidBooth/index.mjs.map +0 -1
  655. package/dist/vocaloidBooth/server/index.d.mts +0 -111
  656. package/dist/vocaloidBooth/server/index.d.ts +0 -111
  657. package/dist/vocaloidBooth/server/index.js +0 -247
  658. package/dist/vocaloidBooth/server/index.js.map +0 -1
  659. package/dist/vocaloidBooth/server/index.mjs +0 -237
  660. package/dist/vocaloidBooth/server/index.mjs.map +0 -1
  661. package/dist/vocaloidBooth/web/index.d.mts +0 -3
  662. package/dist/vocaloidBooth/web/index.d.ts +0 -3
  663. package/dist/vocaloidBooth/web/index.js +0 -376
  664. package/dist/vocaloidBooth/web/index.js.map +0 -1
  665. package/dist/vocaloidBooth/web/index.mjs +0 -362
  666. package/dist/vocaloidBooth/web/index.mjs.map +0 -1
  667. /package/dist/{ai → common/ai}/llm/core/index.js.map +0 -0
  668. /package/dist/{ai → common/ai}/llm/core/index.mjs.map +0 -0
  669. /package/dist/{ai → common/ai}/llm/electron/index.js.map +0 -0
  670. /package/dist/{ai → common/ai}/llm/electron/index.mjs.map +0 -0
  671. /package/dist/{ai → common/ai}/llm/index.js.map +0 -0
  672. /package/dist/{ai → common/ai}/llm/index.mjs.map +0 -0
  673. /package/dist/{ai → common/ai}/llm/miniapp/index.js.map +0 -0
  674. /package/dist/{ai → common/ai}/llm/miniapp/index.mjs.map +0 -0
  675. /package/dist/{ai → common/ai}/llm/rn/index.js.map +0 -0
  676. /package/dist/{ai → common/ai}/llm/rn/index.mjs.map +0 -0
  677. /package/dist/{ai → common/ai}/llm/ui/electron/index.js.map +0 -0
  678. /package/dist/{ai → common/ai}/llm/ui/electron/index.mjs.map +0 -0
  679. /package/dist/{ai → common/ai}/llm/ui/miniapp/index.js.map +0 -0
  680. /package/dist/{ai → common/ai}/llm/ui/miniapp/index.mjs.map +0 -0
  681. /package/dist/{ai → common/ai}/llm/ui/rn/index.js.map +0 -0
  682. /package/dist/{ai → common/ai}/llm/ui/rn/index.mjs.map +0 -0
  683. /package/dist/{ai → common/ai}/llm/ui/web/index.js.map +0 -0
  684. /package/dist/{ai → common/ai}/llm/ui/web/index.mjs.map +0 -0
  685. /package/dist/{ai → common/ai}/llm/web/index.js.map +0 -0
  686. /package/dist/{ai → common/ai}/llm/web/index.mjs.map +0 -0
  687. /package/dist/{analytics → common/analytics}/index.js.map +0 -0
  688. /package/dist/{analytics → common/analytics}/index.mjs.map +0 -0
  689. /package/dist/{analytics → common/analytics}/server/index.d.mts +0 -0
  690. /package/dist/{analytics → common/analytics}/server/index.d.ts +0 -0
  691. /package/dist/{api → common/api}/index.js.map +0 -0
  692. /package/dist/{api → common/api}/index.mjs.map +0 -0
  693. /package/dist/{config → common/components}/index.js.map +0 -0
  694. /package/dist/{config → common/components}/index.mjs.map +0 -0
  695. /package/dist/{i18n → common/config}/index.js.map +0 -0
  696. /package/dist/{i18n → common/config}/index.mjs.map +0 -0
  697. /package/dist/{config → common/config}/server/index.d.mts +0 -0
  698. /package/dist/{config → common/config}/server/index.d.ts +0 -0
  699. /package/dist/{logger → common/i18n}/index.js.map +0 -0
  700. /package/dist/{logger → common/i18n}/index.mjs.map +0 -0
  701. /package/dist/{ossFile → common/imageCrop}/index.js.map +0 -0
  702. /package/dist/{ossFile → common/imageCrop}/index.mjs.map +0 -0
  703. /package/dist/{ossFile/server → common/ossFile}/index.js.map +0 -0
  704. /package/dist/{ossFile/server → common/ossFile}/index.mjs.map +0 -0
  705. /package/dist/{request → common/ossFile/server}/index.js.map +0 -0
  706. /package/dist/{request → common/ossFile/server}/index.mjs.map +0 -0
  707. /package/dist/{storage → common/universalExport}/index.js.map +0 -0
  708. /package/dist/{storage → common/universalExport}/index.mjs.map +0 -0
  709. /package/dist/{universalExport → common/universalExport/server}/index.js.map +0 -0
  710. /package/dist/{universalExport → common/universalExport/server}/index.mjs.map +0 -0
  711. /package/dist/{universalExport → common/universalFile}/server/index.js.map +0 -0
  712. /package/dist/{universalExport → common/universalFile}/server/index.mjs.map +0 -0
@@ -0,0 +1,2011 @@
1
+ 'use strict';
2
+
3
+ var chunk7PMT4L4I_js = require('./chunk-7PMT4L4I.js');
4
+ var chunkY7WHUKJF_js = require('./chunk-Y7WHUKJF.js');
5
+ var chunkOIRZXSYM_js = require('./chunk-OIRZXSYM.js');
6
+ var chunkNSBPE2FW_js = require('./chunk-NSBPE2FW.js');
7
+ var React6 = require('react');
8
+ var classVarianceAuthority = require('class-variance-authority');
9
+ var lucideReact = require('lucide-react');
10
+ var clsx = require('clsx');
11
+ var navigation = require('next/navigation');
12
+
13
+ function _interopNamespace(e) {
14
+ if (e && e.__esModule) return e;
15
+ var n = Object.create(null);
16
+ if (e) {
17
+ Object.keys(e).forEach(function (k) {
18
+ if (k !== 'default') {
19
+ var d = Object.getOwnPropertyDescriptor(e, k);
20
+ Object.defineProperty(n, k, d.get ? d : {
21
+ enumerable: true,
22
+ get: function () { return e[k]; }
23
+ });
24
+ }
25
+ });
26
+ }
27
+ n.default = e;
28
+ return Object.freeze(n);
29
+ }
30
+
31
+ var React6__namespace = /*#__PURE__*/_interopNamespace(React6);
32
+
33
+ // src/common/components/index.ts
34
+ var components_exports = {};
35
+ chunkNSBPE2FW_js.__export(components_exports, {
36
+ AlertDialog: () => chunk7PMT4L4I_js.Dialog,
37
+ AlertDialogAction: () => AlertDialogAction,
38
+ AlertDialogCancel: () => AlertDialogCancel,
39
+ AlertDialogContent: () => AlertDialogContent,
40
+ AlertDialogDescription: () => chunk7PMT4L4I_js.DialogDescription,
41
+ AlertDialogFooter: () => chunk7PMT4L4I_js.DialogFooter,
42
+ AlertDialogHeader: () => chunk7PMT4L4I_js.DialogHeader,
43
+ AlertDialogOverlay: () => chunk7PMT4L4I_js.DialogOverlay,
44
+ AlertDialogPortal: () => chunk7PMT4L4I_js.DialogPortal,
45
+ AlertDialogTitle: () => chunk7PMT4L4I_js.DialogTitle,
46
+ AlertDialogTrigger: () => chunk7PMT4L4I_js.DialogTrigger,
47
+ Avatar: () => Avatar,
48
+ AvatarFallback: () => AvatarFallback,
49
+ AvatarImage: () => AvatarImage,
50
+ BackButton: () => BackButton,
51
+ Badge: () => Badge,
52
+ Button: () => chunk7PMT4L4I_js.Button,
53
+ Card: () => Card,
54
+ CardContent: () => CardContent,
55
+ CardDescription: () => CardDescription,
56
+ CardFooter: () => CardFooter,
57
+ CardHeader: () => CardHeader,
58
+ CardTitle: () => CardTitle,
59
+ CollisionBalls: () => CollisionBalls,
60
+ ConfirmModal: () => ConfirmModal,
61
+ Dialog: () => chunk7PMT4L4I_js.Dialog,
62
+ DialogClose: () => chunk7PMT4L4I_js.DialogClose,
63
+ DialogContent: () => chunk7PMT4L4I_js.DialogContent,
64
+ DialogDescription: () => chunk7PMT4L4I_js.DialogDescription,
65
+ DialogFooter: () => chunk7PMT4L4I_js.DialogFooter,
66
+ DialogHeader: () => chunk7PMT4L4I_js.DialogHeader,
67
+ DialogOverlay: () => chunk7PMT4L4I_js.DialogOverlay,
68
+ DialogPortal: () => chunk7PMT4L4I_js.DialogPortal,
69
+ DialogTitle: () => chunk7PMT4L4I_js.DialogTitle,
70
+ DialogTrigger: () => chunk7PMT4L4I_js.DialogTrigger,
71
+ DropdownMenu: () => DropdownMenu,
72
+ DropdownMenuCheckboxItem: () => DropdownMenuCheckboxItem,
73
+ DropdownMenuContent: () => DropdownMenuContent,
74
+ DropdownMenuGroup: () => DropdownMenuGroup,
75
+ DropdownMenuItem: () => DropdownMenuItem,
76
+ DropdownMenuLabel: () => DropdownMenuLabel,
77
+ DropdownMenuPortal: () => DropdownMenuPortal,
78
+ DropdownMenuRadioGroup: () => DropdownMenuRadioGroup,
79
+ DropdownMenuRadioItem: () => DropdownMenuRadioItem,
80
+ DropdownMenuSeparator: () => DropdownMenuSeparator,
81
+ DropdownMenuShortcut: () => DropdownMenuShortcut,
82
+ DropdownMenuSub: () => DropdownMenuSub,
83
+ DropdownMenuSubContent: () => DropdownMenuSubContent,
84
+ DropdownMenuSubTrigger: () => DropdownMenuSubTrigger,
85
+ DropdownMenuTrigger: () => DropdownMenuTrigger,
86
+ FilterButtonGroup: () => FilterButtonGroup,
87
+ GenericOrderManager: () => GenericOrderManager,
88
+ Grid: () => Grid,
89
+ ImageMappingPanel: () => ImageMappingPanel,
90
+ Input: () => chunk7PMT4L4I_js.Input,
91
+ Label: () => Label,
92
+ LocalImageMappingPanel: () => LocalImageMappingPanel,
93
+ Modal: () => Modal,
94
+ Popover: () => Popover,
95
+ PopoverAnchor: () => PopoverAnchor,
96
+ PopoverContent: () => PopoverContent,
97
+ PopoverTrigger: () => PopoverTrigger,
98
+ Progress: () => Progress,
99
+ ScrollArea: () => ScrollArea,
100
+ ScrollBar: () => ScrollBar,
101
+ SearchBox: () => SearchBox,
102
+ SearchResultHint: () => SearchResultHint,
103
+ Select: () => Select,
104
+ SelectContent: () => SelectContent,
105
+ SelectGroup: () => SelectGroup,
106
+ SelectItem: () => SelectItem,
107
+ SelectLabel: () => SelectLabel,
108
+ SelectScrollDownButton: () => SelectScrollDownButton,
109
+ SelectScrollUpButton: () => SelectScrollUpButton,
110
+ SelectSeparator: () => SelectSeparator,
111
+ SelectTrigger: () => SelectTrigger,
112
+ SelectValue: () => SelectValue,
113
+ Separator: () => Separator,
114
+ Sheet: () => chunk7PMT4L4I_js.Dialog,
115
+ SheetClose: () => chunk7PMT4L4I_js.DialogClose,
116
+ SheetContent: () => SheetContent,
117
+ SheetDescription: () => SheetDescription,
118
+ SheetFooter: () => SheetFooter,
119
+ SheetHeader: () => SheetHeader,
120
+ SheetOverlay: () => chunk7PMT4L4I_js.DialogOverlay,
121
+ SheetPortal: () => chunk7PMT4L4I_js.DialogPortal,
122
+ SheetTitle: () => SheetTitle,
123
+ SheetTrigger: () => chunk7PMT4L4I_js.DialogTrigger,
124
+ Tabs: () => Tabs,
125
+ TabsContent: () => TabsContent,
126
+ TabsList: () => TabsList,
127
+ TabsTrigger: () => TabsTrigger,
128
+ Textarea: () => Textarea,
129
+ Timeline: () => Timeline,
130
+ Tooltip: () => Tooltip,
131
+ TooltipContent: () => TooltipContent,
132
+ TooltipProvider: () => TooltipProvider,
133
+ TooltipTrigger: () => TooltipTrigger,
134
+ badgeVariants: () => badgeVariants,
135
+ buttonVariants: () => chunk7PMT4L4I_js.buttonVariants
136
+ });
137
+ var Card = React6__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React6__namespace.createElement(
138
+ "div",
139
+ {
140
+ ref,
141
+ className: chunkY7WHUKJF_js.cn(
142
+ "rounded-xl border bg-card text-card-foreground shadow",
143
+ className
144
+ ),
145
+ ...props
146
+ }
147
+ ));
148
+ Card.displayName = "Card";
149
+ var CardHeader = React6__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React6__namespace.createElement(
150
+ "div",
151
+ {
152
+ ref,
153
+ className: chunkY7WHUKJF_js.cn("flex flex-col space-y-1.5 p-6", className),
154
+ ...props
155
+ }
156
+ ));
157
+ CardHeader.displayName = "CardHeader";
158
+ var CardTitle = React6__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React6__namespace.createElement(
159
+ "div",
160
+ {
161
+ ref,
162
+ className: chunkY7WHUKJF_js.cn("font-semibold leading-none tracking-tight", className),
163
+ ...props
164
+ }
165
+ ));
166
+ CardTitle.displayName = "CardTitle";
167
+ var CardDescription = React6__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React6__namespace.createElement(
168
+ "div",
169
+ {
170
+ ref,
171
+ className: chunkY7WHUKJF_js.cn("text-sm text-muted-foreground", className),
172
+ ...props
173
+ }
174
+ ));
175
+ CardDescription.displayName = "CardDescription";
176
+ var CardContent = React6__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React6__namespace.createElement("div", { ref, className: chunkY7WHUKJF_js.cn("p-6 pt-0", className), ...props }));
177
+ CardContent.displayName = "CardContent";
178
+ var CardFooter = React6__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React6__namespace.createElement(
179
+ "div",
180
+ {
181
+ ref,
182
+ className: chunkY7WHUKJF_js.cn("flex items-center p-6 pt-0", className),
183
+ ...props
184
+ }
185
+ ));
186
+ CardFooter.displayName = "CardFooter";
187
+ var badgeVariants = classVarianceAuthority.cva(
188
+ "inline-flex items-center rounded-md border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2",
189
+ {
190
+ variants: {
191
+ variant: {
192
+ default: "border-transparent bg-primary text-primary-foreground shadow hover:bg-primary/80",
193
+ secondary: "border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80",
194
+ destructive: "border-transparent bg-destructive text-destructive-foreground shadow hover:bg-destructive/80",
195
+ outline: "text-foreground"
196
+ }
197
+ },
198
+ defaultVariants: {
199
+ variant: "default"
200
+ }
201
+ }
202
+ );
203
+ function Badge({ className, variant, ...props }) {
204
+ return /* @__PURE__ */ React6__namespace.createElement("div", { className: chunkY7WHUKJF_js.cn(badgeVariants({ variant }), className), ...props });
205
+ }
206
+ var labelVariants = classVarianceAuthority.cva(
207
+ "text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70"
208
+ );
209
+ var Label = React6__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React6__namespace.createElement(
210
+ "label",
211
+ {
212
+ ref,
213
+ className: chunkY7WHUKJF_js.cn(labelVariants(), className),
214
+ ...props
215
+ }
216
+ ));
217
+ Label.displayName = "Label";
218
+ var TabsContext = React6__namespace.createContext(null);
219
+ var Tabs = ({
220
+ value,
221
+ defaultValue = "",
222
+ onValueChange,
223
+ className,
224
+ ...props
225
+ }) => {
226
+ const [current, setCurrent] = chunk7PMT4L4I_js.useControllableState({
227
+ value,
228
+ defaultValue,
229
+ onChange: onValueChange
230
+ });
231
+ return /* @__PURE__ */ React6__namespace.createElement(TabsContext.Provider, { value: { value: current, setValue: setCurrent } }, /* @__PURE__ */ React6__namespace.createElement("div", { className, ...props }));
232
+ };
233
+ var TabsList = React6__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React6__namespace.createElement(
234
+ "div",
235
+ {
236
+ ref,
237
+ className: chunkY7WHUKJF_js.cn(
238
+ "inline-flex h-9 items-center justify-center rounded-lg bg-muted p-1 text-muted-foreground",
239
+ className
240
+ ),
241
+ ...props
242
+ }
243
+ ));
244
+ TabsList.displayName = "TabsList";
245
+ var TabsTrigger = React6__namespace.forwardRef(
246
+ ({ className, value, onClick, ...props }, ref) => {
247
+ const ctx = React6__namespace.useContext(TabsContext);
248
+ const active = ctx?.value === value;
249
+ return /* @__PURE__ */ React6__namespace.createElement(
250
+ "button",
251
+ {
252
+ ref,
253
+ type: "button",
254
+ "data-state": active ? "active" : "inactive",
255
+ className: chunkY7WHUKJF_js.cn(
256
+ "inline-flex items-center justify-center whitespace-nowrap rounded-md px-3 py-1 text-sm font-medium ring-offset-background transition-all focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50",
257
+ active && "bg-background text-foreground shadow",
258
+ className
259
+ ),
260
+ onClick: (e) => {
261
+ ctx?.setValue(value);
262
+ onClick?.(e);
263
+ },
264
+ ...props
265
+ }
266
+ );
267
+ }
268
+ );
269
+ TabsTrigger.displayName = "TabsTrigger";
270
+ var TabsContent = React6__namespace.forwardRef(
271
+ ({ className, value, forceMount = false, ...props }, ref) => {
272
+ const ctx = React6__namespace.useContext(TabsContext);
273
+ const active = ctx?.value === value;
274
+ if (!active && !forceMount) return null;
275
+ return /* @__PURE__ */ React6__namespace.createElement(
276
+ "div",
277
+ {
278
+ ref,
279
+ "data-state": active ? "active" : "inactive",
280
+ hidden: !active && forceMount,
281
+ className: chunkY7WHUKJF_js.cn(
282
+ "mt-2 ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2",
283
+ className
284
+ ),
285
+ ...props
286
+ }
287
+ );
288
+ }
289
+ );
290
+ TabsContent.displayName = "TabsContent";
291
+ var AlertDialogContent = React6__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React6__namespace.createElement(
292
+ chunk7PMT4L4I_js.DialogContent,
293
+ {
294
+ ref,
295
+ className: chunkY7WHUKJF_js.cn("z-[9999]", className),
296
+ ...props
297
+ }
298
+ ));
299
+ AlertDialogContent.displayName = "AlertDialogContent";
300
+ var AlertDialogAction = React6__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React6__namespace.createElement(
301
+ chunk7PMT4L4I_js.DialogClose,
302
+ {
303
+ ref,
304
+ className: chunkY7WHUKJF_js.cn(chunk7PMT4L4I_js.buttonVariants(), className),
305
+ ...props
306
+ }
307
+ ));
308
+ AlertDialogAction.displayName = "AlertDialogAction";
309
+ var AlertDialogCancel = React6__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React6__namespace.createElement(
310
+ chunk7PMT4L4I_js.DialogClose,
311
+ {
312
+ ref,
313
+ className: chunkY7WHUKJF_js.cn(
314
+ chunk7PMT4L4I_js.buttonVariants({ variant: "outline" }),
315
+ "mt-2 sm:mt-0",
316
+ className
317
+ ),
318
+ ...props
319
+ }
320
+ ));
321
+ AlertDialogCancel.displayName = "AlertDialogCancel";
322
+ var DropdownMenuContext = React6__namespace.createContext(null);
323
+ var DropdownMenuRadioGroupContext = React6__namespace.createContext(null);
324
+ var DropdownMenu = ({ open, defaultOpen = false, onOpenChange, children }) => {
325
+ const [isOpen, setIsOpen] = chunk7PMT4L4I_js.useControllableState({
326
+ value: open,
327
+ defaultValue: defaultOpen,
328
+ onChange: onOpenChange
329
+ });
330
+ const triggerRef = React6__namespace.useRef(null);
331
+ const contentRef = React6__namespace.useRef(null);
332
+ return /* @__PURE__ */ React6__namespace.createElement(DropdownMenuContext.Provider, { value: { open: isOpen, setOpen: setIsOpen, triggerRef, contentRef } }, children);
333
+ };
334
+ var DropdownMenuTrigger = React6__namespace.forwardRef(({ children, onClick, ...props }, ref) => {
335
+ const ctx = React6__namespace.useContext(DropdownMenuContext);
336
+ if (!ctx) return null;
337
+ const mergedRef = chunk7PMT4L4I_js.mergeRefs(ctx.triggerRef, ref);
338
+ const handleClick = (e) => {
339
+ ctx.setOpen(!ctx.open);
340
+ onClick?.(e);
341
+ };
342
+ return /* @__PURE__ */ React6__namespace.createElement("button", { ref: mergedRef, type: "button", onClick: handleClick, ...props }, children);
343
+ });
344
+ DropdownMenuTrigger.displayName = "DropdownMenuTrigger";
345
+ var DropdownMenuGroup = ({ children }) => /* @__PURE__ */ React6__namespace.createElement(React6__namespace.Fragment, null, children);
346
+ var DropdownMenuPortal = ({ children }) => /* @__PURE__ */ React6__namespace.createElement(chunk7PMT4L4I_js.Portal, null, children);
347
+ var DropdownMenuSub = ({ children }) => /* @__PURE__ */ React6__namespace.createElement(React6__namespace.Fragment, null, children);
348
+ var DropdownMenuContent = React6__namespace.forwardRef(({ className, sideOffset = 4, style, ...props }, ref) => {
349
+ const ctx = React6__namespace.useContext(DropdownMenuContext);
350
+ const [pos, setPos] = React6__namespace.useState({ top: 0, left: 0 });
351
+ const open = !!ctx?.open;
352
+ const trigger = ctx?.triggerRef.current ?? null;
353
+ React6__namespace.useLayoutEffect(() => {
354
+ if (!trigger) return;
355
+ const rect = trigger.getBoundingClientRect();
356
+ setPos({ top: rect.bottom + sideOffset, left: rect.left });
357
+ }, [trigger, sideOffset]);
358
+ chunk7PMT4L4I_js.useOnClickOutside(
359
+ [ctx?.contentRef ?? { current: null }, ctx?.triggerRef ?? { current: null }],
360
+ () => ctx?.setOpen(false),
361
+ open
362
+ );
363
+ if (!ctx || !open || !trigger) return null;
364
+ return /* @__PURE__ */ React6__namespace.createElement(DropdownMenuPortal, null, /* @__PURE__ */ React6__namespace.createElement(
365
+ "div",
366
+ {
367
+ ref: chunk7PMT4L4I_js.mergeRefs(ctx.contentRef, ref),
368
+ className: chunkY7WHUKJF_js.cn(
369
+ "z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md",
370
+ className
371
+ ),
372
+ style: { position: "fixed", top: pos.top, left: pos.left, ...style },
373
+ ...props
374
+ }
375
+ ));
376
+ });
377
+ DropdownMenuContent.displayName = "DropdownMenuContent";
378
+ var DropdownMenuItem = React6__namespace.forwardRef(({ className, inset, onSelect, onClick, ...props }, ref) => {
379
+ const ctx = React6__namespace.useContext(DropdownMenuContext);
380
+ return /* @__PURE__ */ React6__namespace.createElement(
381
+ "button",
382
+ {
383
+ ref,
384
+ type: "button",
385
+ className: chunkY7WHUKJF_js.cn(
386
+ "relative flex w-full cursor-default select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-none transition-colors hover:bg-accent hover:text-accent-foreground disabled:pointer-events-none disabled:opacity-50",
387
+ inset && "pl-8",
388
+ className
389
+ ),
390
+ onClick: (e) => {
391
+ onSelect?.(e.nativeEvent);
392
+ onClick?.(e);
393
+ if (!e.isDefaultPrevented()) {
394
+ ctx?.setOpen(false);
395
+ }
396
+ },
397
+ ...props
398
+ }
399
+ );
400
+ });
401
+ DropdownMenuItem.displayName = "DropdownMenuItem";
402
+ var DropdownMenuCheckboxItem = React6__namespace.forwardRef(({ className, children, checked = false, onCheckedChange, onClick, ...props }, ref) => /* @__PURE__ */ React6__namespace.createElement(
403
+ "button",
404
+ {
405
+ ref,
406
+ type: "button",
407
+ className: chunkY7WHUKJF_js.cn(
408
+ "relative flex w-full cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors hover:bg-accent hover:text-accent-foreground disabled:pointer-events-none disabled:opacity-50",
409
+ className
410
+ ),
411
+ onClick: (e) => {
412
+ onCheckedChange?.(!checked);
413
+ onClick?.(e);
414
+ },
415
+ ...props
416
+ },
417
+ /* @__PURE__ */ React6__namespace.createElement("span", { className: "absolute left-2 flex h-3.5 w-3.5 items-center justify-center" }, checked ? /* @__PURE__ */ React6__namespace.createElement(lucideReact.Check, { className: "h-4 w-4" }) : null),
418
+ children
419
+ ));
420
+ DropdownMenuCheckboxItem.displayName = "DropdownMenuCheckboxItem";
421
+ var DropdownMenuRadioGroup = ({
422
+ value,
423
+ onValueChange,
424
+ children
425
+ }) => /* @__PURE__ */ React6__namespace.createElement(DropdownMenuRadioGroupContext.Provider, { value: { value, onValueChange } }, children);
426
+ var DropdownMenuRadioItem = React6__namespace.forwardRef(({ className, children, value, onClick, ...props }, ref) => {
427
+ const radioCtx = React6__namespace.useContext(DropdownMenuRadioGroupContext);
428
+ const menuCtx = React6__namespace.useContext(DropdownMenuContext);
429
+ const checked = radioCtx?.value === value;
430
+ return /* @__PURE__ */ React6__namespace.createElement(
431
+ "button",
432
+ {
433
+ ref,
434
+ type: "button",
435
+ className: chunkY7WHUKJF_js.cn(
436
+ "relative flex w-full cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors hover:bg-accent hover:text-accent-foreground disabled:pointer-events-none disabled:opacity-50",
437
+ className
438
+ ),
439
+ onClick: (e) => {
440
+ radioCtx?.onValueChange?.(value);
441
+ onClick?.(e);
442
+ menuCtx?.setOpen(false);
443
+ },
444
+ ...props
445
+ },
446
+ /* @__PURE__ */ React6__namespace.createElement("span", { className: "absolute left-2 flex h-3.5 w-3.5 items-center justify-center" }, checked ? /* @__PURE__ */ React6__namespace.createElement(lucideReact.Circle, { className: "h-2 w-2 fill-current" }) : null),
447
+ children
448
+ );
449
+ });
450
+ DropdownMenuRadioItem.displayName = "DropdownMenuRadioItem";
451
+ var DropdownMenuLabel = React6__namespace.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ React6__namespace.createElement(
452
+ "div",
453
+ {
454
+ ref,
455
+ className: chunkY7WHUKJF_js.cn("px-2 py-1.5 text-sm font-semibold", inset && "pl-8", className),
456
+ ...props
457
+ }
458
+ ));
459
+ DropdownMenuLabel.displayName = "DropdownMenuLabel";
460
+ var DropdownMenuSeparator = React6__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React6__namespace.createElement(
461
+ "div",
462
+ {
463
+ ref,
464
+ className: chunkY7WHUKJF_js.cn("-mx-1 my-1 h-px bg-muted", className),
465
+ ...props
466
+ }
467
+ ));
468
+ DropdownMenuSeparator.displayName = "DropdownMenuSeparator";
469
+ var DropdownMenuShortcut = ({
470
+ className,
471
+ ...props
472
+ }) => /* @__PURE__ */ React6__namespace.createElement(
473
+ "span",
474
+ {
475
+ className: chunkY7WHUKJF_js.cn("ml-auto text-xs tracking-widest opacity-60", className),
476
+ ...props
477
+ }
478
+ );
479
+ DropdownMenuShortcut.displayName = "DropdownMenuShortcut";
480
+ var DropdownMenuSubTrigger = React6__namespace.forwardRef(({ className, inset, children, ...props }, ref) => /* @__PURE__ */ React6__namespace.createElement(
481
+ "button",
482
+ {
483
+ ref,
484
+ type: "button",
485
+ className: chunkY7WHUKJF_js.cn(
486
+ "flex w-full cursor-default select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-none hover:bg-accent",
487
+ inset && "pl-8",
488
+ className
489
+ ),
490
+ ...props
491
+ },
492
+ children,
493
+ /* @__PURE__ */ React6__namespace.createElement(lucideReact.ChevronRight, { className: "ml-auto" })
494
+ ));
495
+ DropdownMenuSubTrigger.displayName = "DropdownMenuSubTrigger";
496
+ var DropdownMenuSubContent = React6__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React6__namespace.createElement(
497
+ "div",
498
+ {
499
+ ref,
500
+ className: chunkY7WHUKJF_js.cn(
501
+ "z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-lg",
502
+ className
503
+ ),
504
+ ...props
505
+ }
506
+ ));
507
+ DropdownMenuSubContent.displayName = "DropdownMenuSubContent";
508
+ var PopoverContext = React6__namespace.createContext(null);
509
+ var Popover = ({ open, defaultOpen = false, onOpenChange, children }) => {
510
+ const [isOpen, setIsOpen] = chunk7PMT4L4I_js.useControllableState({
511
+ value: open,
512
+ defaultValue: defaultOpen,
513
+ onChange: onOpenChange
514
+ });
515
+ const triggerRef = React6__namespace.useRef(null);
516
+ const anchorRef = React6__namespace.useRef(null);
517
+ const contentRef = React6__namespace.useRef(null);
518
+ return /* @__PURE__ */ React6__namespace.createElement(PopoverContext.Provider, { value: { open: isOpen, setOpen: setIsOpen, triggerRef, anchorRef, contentRef } }, children);
519
+ };
520
+ var PopoverTrigger = React6__namespace.forwardRef(
521
+ ({ children, onClick, ...props }, ref) => {
522
+ const ctx = React6__namespace.useContext(PopoverContext);
523
+ if (!ctx) return null;
524
+ const mergedRef = chunk7PMT4L4I_js.mergeRefs(ctx.triggerRef, ref);
525
+ const handleClick = (e) => {
526
+ ctx.setOpen(!ctx.open);
527
+ onClick?.(e);
528
+ };
529
+ return /* @__PURE__ */ React6__namespace.createElement("button", { ref: mergedRef, type: "button", onClick: handleClick, ...props }, children);
530
+ }
531
+ );
532
+ PopoverTrigger.displayName = "PopoverTrigger";
533
+ var PopoverAnchor = React6__namespace.forwardRef(
534
+ ({ ...props }, ref) => {
535
+ const ctx = React6__namespace.useContext(PopoverContext);
536
+ if (!ctx) return null;
537
+ return /* @__PURE__ */ React6__namespace.createElement("span", { ref: chunk7PMT4L4I_js.mergeRefs(ctx.anchorRef, ref), ...props });
538
+ }
539
+ );
540
+ PopoverAnchor.displayName = "PopoverAnchor";
541
+ var PopoverContent = React6__namespace.forwardRef(
542
+ ({ className, align = "center", sideOffset = 4, style, ...props }, ref) => {
543
+ const ctx = React6__namespace.useContext(PopoverContext);
544
+ const [position, setPosition] = React6__namespace.useState({ top: 0, left: 0 });
545
+ const open = !!ctx?.open;
546
+ const anchor = ctx?.anchorRef.current ?? ctx?.triggerRef.current ?? null;
547
+ React6__namespace.useLayoutEffect(() => {
548
+ if (!anchor) return;
549
+ const rect = anchor.getBoundingClientRect();
550
+ let left = rect.left + rect.width / 2;
551
+ if (align === "start") left = rect.left;
552
+ if (align === "end") left = rect.right;
553
+ setPosition({ top: rect.bottom + sideOffset, left });
554
+ }, [anchor, align, sideOffset]);
555
+ chunk7PMT4L4I_js.useOnClickOutside(
556
+ [ctx?.contentRef ?? { current: null }, ctx?.triggerRef ?? { current: null }],
557
+ () => ctx?.setOpen(false),
558
+ open
559
+ );
560
+ if (!ctx || !open) return null;
561
+ return /* @__PURE__ */ React6__namespace.createElement(chunk7PMT4L4I_js.Portal, null, /* @__PURE__ */ React6__namespace.createElement(
562
+ "div",
563
+ {
564
+ ref: chunk7PMT4L4I_js.mergeRefs(ctx.contentRef, ref),
565
+ className: chunkY7WHUKJF_js.cn(
566
+ "z-50 w-72 rounded-md border bg-popover p-4 text-popover-foreground shadow-md outline-none",
567
+ className
568
+ ),
569
+ style: {
570
+ position: "fixed",
571
+ top: position.top,
572
+ left: position.left,
573
+ transform: align === "center" ? "translateX(-50%)" : align === "end" ? "translateX(-100%)" : void 0,
574
+ ...style
575
+ },
576
+ ...props
577
+ }
578
+ ));
579
+ }
580
+ );
581
+ PopoverContent.displayName = "PopoverContent";
582
+ var Progress = React6__namespace.forwardRef(
583
+ ({ className, value = 0, max = 100, ...props }, ref) => {
584
+ const safeMax = max <= 0 ? 100 : max;
585
+ const safeValue = Math.max(0, Math.min(value, safeMax));
586
+ const percent = safeValue / safeMax * 100;
587
+ return /* @__PURE__ */ React6__namespace.createElement(
588
+ "div",
589
+ {
590
+ ref,
591
+ role: "progressbar",
592
+ "aria-valuemin": 0,
593
+ "aria-valuemax": safeMax,
594
+ "aria-valuenow": safeValue,
595
+ className: chunkY7WHUKJF_js.cn(
596
+ "relative h-2 w-full overflow-hidden rounded-full bg-primary/20",
597
+ className
598
+ ),
599
+ ...props
600
+ },
601
+ /* @__PURE__ */ React6__namespace.createElement(
602
+ "div",
603
+ {
604
+ className: "h-full w-full flex-1 bg-primary transition-all",
605
+ style: { transform: `translateX(-${100 - percent}%)` }
606
+ }
607
+ )
608
+ );
609
+ }
610
+ );
611
+ Progress.displayName = "Progress";
612
+ var ScrollArea = React6__namespace.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ React6__namespace.createElement(
613
+ "div",
614
+ {
615
+ ref,
616
+ className: chunkY7WHUKJF_js.cn("relative overflow-auto", className),
617
+ ...props
618
+ },
619
+ children
620
+ ));
621
+ ScrollArea.displayName = "ScrollArea";
622
+ var ScrollBar = React6__namespace.forwardRef(
623
+ ({ className, orientation = "vertical", ...props }, ref) => /* @__PURE__ */ React6__namespace.createElement(
624
+ "div",
625
+ {
626
+ ref,
627
+ className: chunkY7WHUKJF_js.cn(
628
+ "pointer-events-none absolute",
629
+ orientation === "vertical" ? "right-0 top-0 h-full w-2.5" : "bottom-0 left-0 h-2.5 w-full",
630
+ className
631
+ ),
632
+ ...props
633
+ }
634
+ )
635
+ );
636
+ ScrollBar.displayName = "ScrollBar";
637
+ var SelectContext = React6__namespace.createContext(null);
638
+ var SelectGroupContext = React6__namespace.createContext(false);
639
+ var Select = ({
640
+ value,
641
+ defaultValue,
642
+ onValueChange,
643
+ open,
644
+ defaultOpen = false,
645
+ onOpenChange,
646
+ disabled = false,
647
+ children
648
+ }) => {
649
+ const [isOpen, setIsOpen] = chunk7PMT4L4I_js.useControllableState({
650
+ value: open,
651
+ defaultValue: defaultOpen,
652
+ onChange: onOpenChange
653
+ });
654
+ const [currentValue, setCurrentValue] = chunk7PMT4L4I_js.useControllableState({
655
+ value,
656
+ defaultValue,
657
+ onChange: (next) => {
658
+ if (next !== void 0) {
659
+ onValueChange?.(next);
660
+ }
661
+ }
662
+ });
663
+ const triggerRef = React6__namespace.useRef(null);
664
+ const contentRef = React6__namespace.useRef(null);
665
+ const itemsRef = React6__namespace.useRef(/* @__PURE__ */ new Map());
666
+ return /* @__PURE__ */ React6__namespace.createElement(
667
+ SelectContext.Provider,
668
+ {
669
+ value: {
670
+ open: disabled ? false : isOpen,
671
+ setOpen: disabled ? () => void 0 : setIsOpen,
672
+ value: currentValue,
673
+ setValue: (next) => {
674
+ if (disabled) return;
675
+ setCurrentValue(next);
676
+ setIsOpen(false);
677
+ },
678
+ triggerRef,
679
+ contentRef,
680
+ itemsRef
681
+ }
682
+ },
683
+ children
684
+ );
685
+ };
686
+ var SelectGroup = ({ children }) => /* @__PURE__ */ React6__namespace.createElement(SelectGroupContext.Provider, { value: true }, children);
687
+ var SelectValue = ({
688
+ placeholder,
689
+ children
690
+ }) => {
691
+ const ctx = React6__namespace.useContext(SelectContext);
692
+ if (!ctx) return null;
693
+ if (children) return /* @__PURE__ */ React6__namespace.createElement(React6__namespace.Fragment, null, children);
694
+ if (ctx.value && ctx.itemsRef.current.has(ctx.value)) {
695
+ return /* @__PURE__ */ React6__namespace.createElement(React6__namespace.Fragment, null, ctx.itemsRef.current.get(ctx.value));
696
+ }
697
+ return /* @__PURE__ */ React6__namespace.createElement("span", { className: "text-muted-foreground" }, placeholder);
698
+ };
699
+ var SelectTrigger = React6__namespace.forwardRef(({ className, children, onClick, ...props }, ref) => {
700
+ const ctx = React6__namespace.useContext(SelectContext);
701
+ if (!ctx) return null;
702
+ return /* @__PURE__ */ React6__namespace.createElement(
703
+ "button",
704
+ {
705
+ ref: chunk7PMT4L4I_js.mergeRefs(ctx.triggerRef, ref),
706
+ type: "button",
707
+ className: chunkY7WHUKJF_js.cn(
708
+ "flex h-9 w-full items-center justify-between whitespace-nowrap rounded-md border border-input bg-transparent px-3 py-2 text-sm shadow-sm ring-offset-background focus:outline-none focus:ring-1 focus:ring-ring disabled:cursor-not-allowed disabled:opacity-50 [&>span]:line-clamp-1",
709
+ className
710
+ ),
711
+ onClick: (e) => {
712
+ ctx.setOpen(!ctx.open);
713
+ onClick?.(e);
714
+ },
715
+ ...props
716
+ },
717
+ /* @__PURE__ */ React6__namespace.createElement("span", null, children),
718
+ /* @__PURE__ */ React6__namespace.createElement(lucideReact.ChevronDown, { className: "h-4 w-4 opacity-50" })
719
+ );
720
+ });
721
+ SelectTrigger.displayName = "SelectTrigger";
722
+ var SelectScrollUpButton = React6__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React6__namespace.createElement(
723
+ "div",
724
+ {
725
+ ref,
726
+ className: chunkY7WHUKJF_js.cn("flex cursor-default items-center justify-center py-1", className),
727
+ ...props
728
+ },
729
+ /* @__PURE__ */ React6__namespace.createElement(lucideReact.ChevronUp, { className: "h-4 w-4" })
730
+ ));
731
+ SelectScrollUpButton.displayName = "SelectScrollUpButton";
732
+ var SelectScrollDownButton = React6__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React6__namespace.createElement(
733
+ "div",
734
+ {
735
+ ref,
736
+ className: chunkY7WHUKJF_js.cn("flex cursor-default items-center justify-center py-1", className),
737
+ ...props
738
+ },
739
+ /* @__PURE__ */ React6__namespace.createElement(lucideReact.ChevronDown, { className: "h-4 w-4" })
740
+ ));
741
+ SelectScrollDownButton.displayName = "SelectScrollDownButton";
742
+ var SelectContent = React6__namespace.forwardRef(({ className, children, style, ...props }, ref) => {
743
+ const ctx = React6__namespace.useContext(SelectContext);
744
+ const [pos, setPos] = React6__namespace.useState({ top: 0, left: 0, width: 0 });
745
+ const open = !!ctx?.open;
746
+ const trigger = ctx?.triggerRef.current ?? null;
747
+ React6__namespace.useLayoutEffect(() => {
748
+ if (!trigger) return;
749
+ const rect = trigger.getBoundingClientRect();
750
+ setPos({ top: rect.bottom + 4, left: rect.left, width: rect.width });
751
+ }, [trigger]);
752
+ chunk7PMT4L4I_js.useOnClickOutside(
753
+ [ctx?.contentRef ?? { current: null }, ctx?.triggerRef ?? { current: null }],
754
+ () => ctx?.setOpen(false),
755
+ open
756
+ );
757
+ if (!ctx || !open || !trigger) return null;
758
+ return /* @__PURE__ */ React6__namespace.createElement(chunk7PMT4L4I_js.Portal, null, /* @__PURE__ */ React6__namespace.createElement(
759
+ "div",
760
+ {
761
+ ref: chunk7PMT4L4I_js.mergeRefs(ctx.contentRef, ref),
762
+ className: chunkY7WHUKJF_js.cn(
763
+ "relative z-50 max-h-80 overflow-y-auto overflow-x-hidden rounded-md border bg-popover text-popover-foreground shadow-md",
764
+ className
765
+ ),
766
+ style: {
767
+ position: "fixed",
768
+ top: pos.top,
769
+ left: pos.left,
770
+ minWidth: Math.max(pos.width, 128),
771
+ ...style
772
+ },
773
+ ...props
774
+ },
775
+ /* @__PURE__ */ React6__namespace.createElement("div", { className: "p-1" }, children)
776
+ ));
777
+ });
778
+ SelectContent.displayName = "SelectContent";
779
+ var SelectLabel = React6__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React6__namespace.createElement(
780
+ "div",
781
+ {
782
+ ref,
783
+ className: chunkY7WHUKJF_js.cn("px-2 py-1.5 text-sm font-semibold", className),
784
+ ...props
785
+ }
786
+ ));
787
+ SelectLabel.displayName = "SelectLabel";
788
+ var SelectItem = React6__namespace.forwardRef(
789
+ ({ className, children, value, onClick, ...props }, ref) => {
790
+ const ctx = React6__namespace.useContext(SelectContext);
791
+ React6__namespace.useEffect(() => {
792
+ if (!ctx) return;
793
+ ctx.itemsRef.current.set(value, children);
794
+ return () => {
795
+ ctx.itemsRef.current.delete(value);
796
+ };
797
+ }, [ctx, value, children]);
798
+ if (!ctx) return null;
799
+ const selected = ctx.value === value;
800
+ return /* @__PURE__ */ React6__namespace.createElement(
801
+ "button",
802
+ {
803
+ ref,
804
+ type: "button",
805
+ className: chunkY7WHUKJF_js.cn(
806
+ "relative flex w-full cursor-default select-none items-center rounded-sm py-1.5 pl-2 pr-8 text-sm outline-none hover:bg-accent hover:text-accent-foreground disabled:pointer-events-none disabled:opacity-50",
807
+ className
808
+ ),
809
+ onClick: (e) => {
810
+ ctx.setValue(value);
811
+ onClick?.(e);
812
+ },
813
+ ...props
814
+ },
815
+ /* @__PURE__ */ React6__namespace.createElement("span", { className: "absolute right-2 flex h-3.5 w-3.5 items-center justify-center" }, selected ? /* @__PURE__ */ React6__namespace.createElement(lucideReact.Check, { className: "h-4 w-4" }) : null),
816
+ /* @__PURE__ */ React6__namespace.createElement("span", null, children)
817
+ );
818
+ }
819
+ );
820
+ SelectItem.displayName = "SelectItem";
821
+ var SelectSeparator = React6__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React6__namespace.createElement(
822
+ "div",
823
+ {
824
+ ref,
825
+ className: chunkY7WHUKJF_js.cn("-mx-1 my-1 h-px bg-muted", className),
826
+ ...props
827
+ }
828
+ ));
829
+ SelectSeparator.displayName = "SelectSeparator";
830
+ var Separator = React6__namespace.forwardRef(
831
+ ({ className, orientation = "horizontal", decorative = true, ...props }, ref) => /* @__PURE__ */ React6__namespace.createElement(
832
+ "div",
833
+ {
834
+ ref,
835
+ role: decorative ? void 0 : "separator",
836
+ "aria-orientation": orientation,
837
+ className: chunkY7WHUKJF_js.cn(
838
+ "shrink-0 bg-border",
839
+ orientation === "horizontal" ? "h-[1px] w-full" : "h-full w-[1px]",
840
+ className
841
+ ),
842
+ ...props
843
+ }
844
+ )
845
+ );
846
+ Separator.displayName = "Separator";
847
+ var sheetVariants = classVarianceAuthority.cva(
848
+ "fixed z-[10000] gap-4 bg-background p-6 shadow-lg transition ease-in-out translate-x-0 translate-y-0",
849
+ {
850
+ variants: {
851
+ side: {
852
+ top: "inset-x-0 top-0 left-0 border-b",
853
+ bottom: "inset-x-0 bottom-0 left-0 border-t",
854
+ left: "inset-y-0 left-0 top-0 h-full w-3/4 border-r sm:max-w-sm",
855
+ right: "inset-y-0 right-0 top-0 h-full w-3/4 border-l sm:max-w-sm"
856
+ }
857
+ },
858
+ defaultVariants: {
859
+ side: "right"
860
+ }
861
+ }
862
+ );
863
+ var SheetContent = React6__namespace.forwardRef(
864
+ ({ side = "right", className, children, ...props }, ref) => /* @__PURE__ */ React6__namespace.createElement(
865
+ chunk7PMT4L4I_js.DialogContent,
866
+ {
867
+ ref,
868
+ className: chunkY7WHUKJF_js.cn(
869
+ "max-w-none rounded-none",
870
+ sheetVariants({ side }),
871
+ className
872
+ ),
873
+ showCloseButton: false,
874
+ ...props
875
+ },
876
+ /* @__PURE__ */ React6__namespace.createElement(chunk7PMT4L4I_js.DialogClose, { className: "absolute right-4 top-4 rounded-sm opacity-70 transition-opacity hover:opacity-100" }, /* @__PURE__ */ React6__namespace.createElement(lucideReact.X, { className: "h-4 w-4" }), /* @__PURE__ */ React6__namespace.createElement("span", { className: "sr-only" }, "Close")),
877
+ children
878
+ )
879
+ );
880
+ SheetContent.displayName = "SheetContent";
881
+ var SheetHeader = ({
882
+ className,
883
+ ...props
884
+ }) => /* @__PURE__ */ React6__namespace.createElement(
885
+ "div",
886
+ {
887
+ className: chunkY7WHUKJF_js.cn(
888
+ "flex flex-col space-y-2 text-center sm:text-left",
889
+ className
890
+ ),
891
+ ...props
892
+ }
893
+ );
894
+ SheetHeader.displayName = "SheetHeader";
895
+ var SheetFooter = ({
896
+ className,
897
+ ...props
898
+ }) => /* @__PURE__ */ React6__namespace.createElement(
899
+ "div",
900
+ {
901
+ className: chunkY7WHUKJF_js.cn(
902
+ "flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2",
903
+ className
904
+ ),
905
+ ...props
906
+ }
907
+ );
908
+ SheetFooter.displayName = "SheetFooter";
909
+ var SheetTitle = React6__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React6__namespace.createElement(
910
+ "h2",
911
+ {
912
+ ref,
913
+ className: chunkY7WHUKJF_js.cn("text-lg font-semibold text-foreground", className),
914
+ ...props
915
+ }
916
+ ));
917
+ SheetTitle.displayName = "SheetTitle";
918
+ var SheetDescription = React6__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React6__namespace.createElement(
919
+ "p",
920
+ {
921
+ ref,
922
+ className: chunkY7WHUKJF_js.cn("text-sm text-muted-foreground", className),
923
+ ...props
924
+ }
925
+ ));
926
+ SheetDescription.displayName = "SheetDescription";
927
+ var Textarea = React6__namespace.forwardRef(({ className, ...props }, ref) => {
928
+ return /* @__PURE__ */ React6__namespace.createElement(
929
+ "textarea",
930
+ {
931
+ className: chunkY7WHUKJF_js.cn(
932
+ "flex min-h-[60px] w-full rounded-md border border-input bg-transparent px-3 py-2 text-base shadow-sm placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 md:text-sm",
933
+ className
934
+ ),
935
+ ref,
936
+ ...props
937
+ }
938
+ );
939
+ });
940
+ Textarea.displayName = "Textarea";
941
+ var TooltipConfigContext = React6__namespace.createContext({
942
+ delayDuration: 200
943
+ });
944
+ var TooltipContext = React6__namespace.createContext(null);
945
+ var TooltipProvider = ({
946
+ children,
947
+ delayDuration = 200
948
+ }) => {
949
+ return /* @__PURE__ */ React6__namespace.createElement(TooltipConfigContext.Provider, { value: { delayDuration } }, children);
950
+ };
951
+ var Tooltip = ({ children }) => {
952
+ const [open, setOpen] = React6__namespace.useState(false);
953
+ const triggerRef = React6__namespace.useRef(null);
954
+ return /* @__PURE__ */ React6__namespace.createElement(TooltipContext.Provider, { value: { open, setOpen, triggerRef } }, children);
955
+ };
956
+ var TooltipTrigger = React6__namespace.forwardRef(({ children, ...props }, ref) => {
957
+ const ctx = React6__namespace.useContext(TooltipContext);
958
+ const cfg = React6__namespace.useContext(TooltipConfigContext);
959
+ const timer = React6__namespace.useRef(null);
960
+ if (!ctx) return null;
961
+ const setRef = chunk7PMT4L4I_js.mergeRefs(ctx.triggerRef, ref);
962
+ const openWithDelay = () => {
963
+ if (timer.current) clearTimeout(timer.current);
964
+ timer.current = setTimeout(() => ctx.setOpen(true), cfg.delayDuration);
965
+ };
966
+ const closeNow = () => {
967
+ if (timer.current) clearTimeout(timer.current);
968
+ ctx.setOpen(false);
969
+ };
970
+ const shared = {
971
+ onMouseEnter: openWithDelay,
972
+ onMouseLeave: closeNow,
973
+ onFocus: openWithDelay,
974
+ onBlur: closeNow,
975
+ ...props
976
+ };
977
+ return /* @__PURE__ */ React6__namespace.createElement("span", { ref: setRef, ...shared }, children);
978
+ });
979
+ TooltipTrigger.displayName = "TooltipTrigger";
980
+ var TooltipContent = React6__namespace.forwardRef(({ className, sideOffset = 4, style, ...props }, ref) => {
981
+ const ctx = React6__namespace.useContext(TooltipContext);
982
+ const [pos, setPos] = React6__namespace.useState({ top: 0, left: 0 });
983
+ const open = !!ctx?.open;
984
+ const trigger = ctx?.triggerRef.current ?? null;
985
+ React6__namespace.useLayoutEffect(() => {
986
+ if (!trigger) return;
987
+ const rect = trigger.getBoundingClientRect();
988
+ setPos({
989
+ top: rect.top - sideOffset,
990
+ left: rect.left + rect.width / 2
991
+ });
992
+ }, [trigger, sideOffset]);
993
+ if (!ctx || !open || !trigger) return null;
994
+ return /* @__PURE__ */ React6__namespace.createElement(chunk7PMT4L4I_js.Portal, null, /* @__PURE__ */ React6__namespace.createElement(
995
+ "div",
996
+ {
997
+ ref,
998
+ className: chunkY7WHUKJF_js.cn(
999
+ "z-50 overflow-hidden rounded-md bg-primary px-3 py-1.5 text-xs text-primary-foreground",
1000
+ className
1001
+ ),
1002
+ style: {
1003
+ position: "fixed",
1004
+ top: pos.top,
1005
+ left: pos.left,
1006
+ transform: "translate(-50%, -100%)",
1007
+ ...style
1008
+ },
1009
+ ...props
1010
+ }
1011
+ ));
1012
+ });
1013
+ TooltipContent.displayName = "TooltipContent";
1014
+ var AvatarContext = React6__namespace.createContext(null);
1015
+ var Avatar = React6__namespace.forwardRef(({ className, ...props }, ref) => {
1016
+ const [status, setStatus] = React6__namespace.useState("idle");
1017
+ return /* @__PURE__ */ React6__namespace.createElement(AvatarContext.Provider, { value: { status, setStatus } }, /* @__PURE__ */ React6__namespace.createElement(
1018
+ "span",
1019
+ {
1020
+ ref,
1021
+ className: chunkY7WHUKJF_js.cn(
1022
+ "relative flex h-10 w-10 shrink-0 overflow-hidden rounded-full",
1023
+ className
1024
+ ),
1025
+ ...props
1026
+ }
1027
+ ));
1028
+ });
1029
+ Avatar.displayName = "Avatar";
1030
+ var AvatarImage = React6__namespace.forwardRef(({ className, onLoad, onError, ...props }, ref) => {
1031
+ const ctx = React6__namespace.useContext(AvatarContext);
1032
+ return /* @__PURE__ */ React6__namespace.createElement(
1033
+ "img",
1034
+ {
1035
+ ref,
1036
+ className: chunkY7WHUKJF_js.cn(
1037
+ "aspect-square h-full w-full",
1038
+ ctx?.status === "error" ? "hidden" : void 0,
1039
+ className
1040
+ ),
1041
+ onLoad: (e) => {
1042
+ ctx?.setStatus("loaded");
1043
+ onLoad?.(e);
1044
+ },
1045
+ onError: (e) => {
1046
+ ctx?.setStatus("error");
1047
+ onError?.(e);
1048
+ },
1049
+ ...props
1050
+ }
1051
+ );
1052
+ });
1053
+ AvatarImage.displayName = "AvatarImage";
1054
+ var AvatarFallback = React6__namespace.forwardRef(({ className, ...props }, ref) => {
1055
+ const ctx = React6__namespace.useContext(AvatarContext);
1056
+ const show = ctx?.status !== "loaded";
1057
+ if (!show) return null;
1058
+ return /* @__PURE__ */ React6__namespace.createElement(
1059
+ "span",
1060
+ {
1061
+ ref,
1062
+ className: chunkY7WHUKJF_js.cn(
1063
+ "flex h-full w-full items-center justify-center rounded-full bg-muted",
1064
+ className
1065
+ ),
1066
+ ...props
1067
+ }
1068
+ );
1069
+ });
1070
+ AvatarFallback.displayName = "AvatarFallback";
1071
+ function buildGridColsClasses(columns) {
1072
+ return [
1073
+ "grid-cols-1",
1074
+ // 默认单列
1075
+ columns.sm ? "sm:grid-cols-" + columns.sm : "",
1076
+ columns.md ? "md:grid-cols-" + columns.md : "md:grid-cols-2",
1077
+ columns.lg ? "lg:grid-cols-" + columns.lg : "lg:grid-cols-3",
1078
+ columns.xl ? "xl:grid-cols-" + columns.xl : ""
1079
+ ].filter(Boolean).join(" ");
1080
+ }
1081
+ function getGapClassName(gap) {
1082
+ const gapClasses = {
1083
+ sm: "gap-3",
1084
+ md: "gap-6",
1085
+ lg: "gap-8",
1086
+ xl: "gap-10"
1087
+ };
1088
+ return gapClasses[gap];
1089
+ }
1090
+ function Grid({
1091
+ items,
1092
+ renderItem,
1093
+ columns = { md: 2, lg: 3 },
1094
+ gap = "md",
1095
+ className = "",
1096
+ style
1097
+ }) {
1098
+ const gridColsClasses = buildGridColsClasses(columns);
1099
+ const gapClass = getGapClassName(gap);
1100
+ return /* @__PURE__ */ React6__namespace.default.createElement(
1101
+ "div",
1102
+ {
1103
+ className: clsx.clsx("grid", gridColsClasses, gapClass, className),
1104
+ style
1105
+ },
1106
+ items.map((item, index) => /* @__PURE__ */ React6__namespace.default.createElement("div", { key: item.id }, renderItem(item, index)))
1107
+ );
1108
+ }
1109
+ var SearchBox = ({
1110
+ searchQuery,
1111
+ onSearchChange,
1112
+ placeholder = "\u641C\u7D22\u5B9E\u9A8C\u9879\u76EE\u7684\u6807\u9898\u3001\u63CF\u8FF0\u6216\u6807\u7B7E...",
1113
+ size = "large"
1114
+ }) => {
1115
+ const getSizeStyles = () => {
1116
+ switch (size) {
1117
+ case "small":
1118
+ return {
1119
+ container: "h-10",
1120
+ input: "pl-10 pr-10 text-sm",
1121
+ icon: "w-4 h-4",
1122
+ iconPosition: "left-3",
1123
+ clearButton: "right-2 w-6 h-6",
1124
+ clearIcon: "w-3 h-3"
1125
+ };
1126
+ case "medium":
1127
+ return {
1128
+ container: "h-12",
1129
+ input: "pl-12 pr-12 text-base",
1130
+ icon: "w-5 h-5",
1131
+ iconPosition: "left-3",
1132
+ clearButton: "right-3 w-7 h-7",
1133
+ clearIcon: "w-4 h-4"
1134
+ };
1135
+ case "large":
1136
+ default:
1137
+ return {
1138
+ container: "h-16",
1139
+ input: "pl-6 pr-16 text-lg",
1140
+ icon: "w-6 h-6",
1141
+ iconPosition: "left-6",
1142
+ clearButton: "right-4 w-8 h-8",
1143
+ clearIcon: "w-4 h-4"
1144
+ };
1145
+ }
1146
+ };
1147
+ const styles = getSizeStyles();
1148
+ const isLarge = size === "large";
1149
+ return /* @__PURE__ */ React6__namespace.default.createElement("div", { className: "relative group w-full" }, /* @__PURE__ */ React6__namespace.default.createElement(
1150
+ "input",
1151
+ {
1152
+ type: "text",
1153
+ placeholder,
1154
+ value: searchQuery,
1155
+ onChange: (e) => onSearchChange(e.target.value),
1156
+ className: clsx.clsx(
1157
+ "w-full",
1158
+ styles.container,
1159
+ styles.input,
1160
+ isLarge ? "border-2 border-gray-200 rounded-2xl shadow-lg" : "border border-gray-300 rounded-lg shadow-sm",
1161
+ "bg-white focus:ring-2 focus:ring-blue-500/20 focus:border-blue-500 hover:border-gray-400",
1162
+ isLarge ? "hover:shadow-xl" : "hover:shadow-md",
1163
+ "transition-all duration-300 ease-out text-gray-800 placeholder-gray-500",
1164
+ isLarge ? "font-medium" : "font-normal"
1165
+ )
1166
+ }
1167
+ ), searchQuery && /* @__PURE__ */ React6__namespace.default.createElement(
1168
+ "button",
1169
+ {
1170
+ onClick: () => onSearchChange(""),
1171
+ className: clsx.clsx(
1172
+ "absolute top-1/2",
1173
+ styles.clearButton,
1174
+ "transform -translate-y-1/2 z-10 group/clear"
1175
+ )
1176
+ },
1177
+ /* @__PURE__ */ React6__namespace.default.createElement("div", { className: clsx.clsx(
1178
+ styles.clearButton,
1179
+ "flex items-center justify-center rounded-full bg-gray-100 hover:bg-gray-200 transition-all duration-200 group-hover/clear:scale-105"
1180
+ ) }, /* @__PURE__ */ React6__namespace.default.createElement(
1181
+ "svg",
1182
+ {
1183
+ className: clsx.clsx(styles.clearIcon, "text-gray-500 group-hover/clear:text-gray-700"),
1184
+ fill: "none",
1185
+ stroke: "currentColor",
1186
+ viewBox: "0 0 24 24"
1187
+ },
1188
+ /* @__PURE__ */ React6__namespace.default.createElement(
1189
+ "path",
1190
+ {
1191
+ strokeLinecap: "round",
1192
+ strokeLinejoin: "round",
1193
+ strokeWidth: 2,
1194
+ d: "M6 18L18 6M6 6l12 12"
1195
+ }
1196
+ )
1197
+ ))
1198
+ ));
1199
+ };
1200
+ var Timeline = ({ items = [] }) => {
1201
+ if (!items || items.length === 0) {
1202
+ return null;
1203
+ }
1204
+ return /* @__PURE__ */ React6__namespace.default.createElement("div", { className: "relative" }, /* @__PURE__ */ React6__namespace.default.createElement("div", { className: "absolute left-4 top-0 bottom-0 w-0.5 bg-gray-200" }), items.map((item, index) => /* @__PURE__ */ React6__namespace.default.createElement("div", { key: index, className: "relative pl-12 pb-8" }, /* @__PURE__ */ React6__namespace.default.createElement("div", { className: "absolute left-0 w-8 h-8 rounded-full bg-blue-500 border-4 border-white shadow-md flex items-center justify-center" }, /* @__PURE__ */ React6__namespace.default.createElement("div", { className: "w-2 h-2 rounded-full bg-white" })), /* @__PURE__ */ React6__namespace.default.createElement("div", { className: "bg-white rounded-lg p-4 shadow-md" }, /* @__PURE__ */ React6__namespace.default.createElement("div", { className: "text-sm text-gray-500 mb-2" }, item.date), /* @__PURE__ */ React6__namespace.default.createElement("h4", { className: "text-lg font-semibold mb-2" }, item.title), /* @__PURE__ */ React6__namespace.default.createElement("p", { className: "text-gray-600" }, item.description)))));
1205
+ };
1206
+ var CollisionBalls = ({
1207
+ collisionBallsConfig: {
1208
+ balls,
1209
+ width,
1210
+ height
1211
+ }
1212
+ }) => {
1213
+ const canvasRef = React6.useRef(null);
1214
+ const containerRef = React6.useRef(null);
1215
+ const ballsRef = React6.useRef([]);
1216
+ const [isShaking, setIsShaking] = React6.useState(false);
1217
+ const [draggedBall, setDraggedBall] = React6.useState(null);
1218
+ const [mousePos, setMousePos] = React6.useState({ x: 0, y: 0 });
1219
+ const animationRef = React6.useRef(null);
1220
+ const updateCanvasSize = () => {
1221
+ const container = containerRef.current;
1222
+ const canvas = canvasRef.current;
1223
+ if (!container || !canvas) {
1224
+ console.error("Container or canvas not found");
1225
+ return;
1226
+ }
1227
+ const containerWidth = container.clientWidth;
1228
+ const containerHeight = container.clientHeight;
1229
+ console.log("Container size:", { containerWidth, containerHeight });
1230
+ canvas.width = containerWidth;
1231
+ canvas.height = containerHeight;
1232
+ canvas.style.width = containerWidth + "px";
1233
+ canvas.style.height = containerHeight + "px";
1234
+ console.log("Canvas size updated:", {
1235
+ width: canvas.width,
1236
+ height: canvas.height,
1237
+ containerWidth,
1238
+ containerHeight
1239
+ });
1240
+ };
1241
+ const initBalls = () => {
1242
+ const canvas = canvasRef.current;
1243
+ if (!canvas) {
1244
+ console.error("Canvas not found during ball initialization");
1245
+ return [];
1246
+ }
1247
+ console.log("Initializing balls with canvas size:", {
1248
+ width: canvas.width,
1249
+ height: canvas.height
1250
+ });
1251
+ return balls.map((ballConfig) => ({
1252
+ x: Math.random() * (canvas.width - 100) + 50,
1253
+ y: Math.random() * (canvas.height - 100) + 50,
1254
+ vx: (Math.random() - 0.5) * 4,
1255
+ vy: (Math.random() - 0.5) * 4,
1256
+ radius: ballConfig.size,
1257
+ color: ballConfig.color,
1258
+ text: ballConfig.label,
1259
+ isDragging: false
1260
+ }));
1261
+ };
1262
+ React6.useEffect(() => {
1263
+ const handleResize = () => {
1264
+ console.log("Window resized");
1265
+ updateCanvasSize();
1266
+ };
1267
+ if (typeof window !== "undefined") {
1268
+ window.addEventListener("resize", handleResize);
1269
+ updateCanvasSize();
1270
+ }
1271
+ return () => {
1272
+ if (typeof window !== "undefined") {
1273
+ window.removeEventListener("resize", handleResize);
1274
+ }
1275
+ };
1276
+ }, []);
1277
+ React6.useEffect(() => {
1278
+ const canvas = canvasRef.current;
1279
+ if (!canvas) {
1280
+ console.error("Canvas element not found");
1281
+ return;
1282
+ }
1283
+ const ctx = canvas.getContext("2d");
1284
+ if (!ctx) {
1285
+ console.error("Failed to get canvas context");
1286
+ return;
1287
+ }
1288
+ console.log("Starting animation setup...");
1289
+ updateCanvasSize();
1290
+ ballsRef.current = initBalls();
1291
+ console.log("Balls initialized:", ballsRef.current);
1292
+ let lastTime = performance.now();
1293
+ let frameCount = 0;
1294
+ const animate = (currentTime) => {
1295
+ try {
1296
+ frameCount++;
1297
+ if (currentTime - lastTime >= 1e3) {
1298
+ console.log("FPS: " + frameCount);
1299
+ frameCount = 0;
1300
+ lastTime = currentTime;
1301
+ }
1302
+ ctx.clearRect(0, 0, canvas.width, canvas.height);
1303
+ ballsRef.current.forEach((ball) => {
1304
+ if (!ball.isDragging) {
1305
+ updatePosition(ball, canvas.width, canvas.height);
1306
+ }
1307
+ for (let i = 0; i < ballsRef.current.length; i++) {
1308
+ for (let j = i + 1; j < ballsRef.current.length; j++) {
1309
+ const ball1 = ballsRef.current[i];
1310
+ const ball2 = ballsRef.current[j];
1311
+ if (ball1 && ball2) {
1312
+ checkCollision(ball1, ball2);
1313
+ }
1314
+ }
1315
+ }
1316
+ draw(ctx, ball);
1317
+ });
1318
+ animationRef.current = requestAnimationFrame(animate);
1319
+ } catch (error) {
1320
+ console.error("Animation error:", error);
1321
+ }
1322
+ };
1323
+ console.log("Starting animation loop...");
1324
+ animationRef.current = requestAnimationFrame(animate);
1325
+ return () => {
1326
+ console.log("Cleaning up animation...");
1327
+ if (animationRef.current) {
1328
+ cancelAnimationFrame(animationRef.current);
1329
+ animationRef.current = null;
1330
+ }
1331
+ };
1332
+ }, []);
1333
+ const shake = () => {
1334
+ setIsShaking(true);
1335
+ ballsRef.current.forEach((ball) => {
1336
+ ball.vx = (Math.random() - 0.5) * 10;
1337
+ ball.vy = (Math.random() - 0.5) * 10;
1338
+ });
1339
+ setTimeout(() => setIsShaking(false), 200);
1340
+ };
1341
+ const slowdown = () => {
1342
+ setIsShaking(true);
1343
+ ballsRef.current.forEach((ball) => {
1344
+ ball.vx = ball.vx * 0.5;
1345
+ ball.vy = ball.vy * 0.5;
1346
+ });
1347
+ setTimeout(() => setIsShaking(false), 200);
1348
+ };
1349
+ const checkCollision = (ball1, ball2) => {
1350
+ const dx = ball2.x - ball1.x;
1351
+ const dy = ball2.y - ball1.y;
1352
+ const distance = Math.sqrt(dx * dx + dy * dy);
1353
+ if (distance < ball1.radius + ball2.radius) {
1354
+ const angle = Math.atan2(dy, dx);
1355
+ const overlap = (ball1.radius + ball2.radius - distance) / 2;
1356
+ if (ball1.isDragging || ball2.isDragging) {
1357
+ const draggedBall2 = ball1.isDragging ? ball1 : ball2;
1358
+ const otherBall = ball1.isDragging ? ball2 : ball1;
1359
+ otherBall.x += (draggedBall2 === ball1 ? 1 : -1) * overlap * Math.cos(angle);
1360
+ otherBall.y += (draggedBall2 === ball1 ? 1 : -1) * overlap * Math.sin(angle);
1361
+ const pushForce = 2;
1362
+ otherBall.vx = (draggedBall2 === ball1 ? -1 : 1) * Math.cos(angle) * pushForce;
1363
+ otherBall.vy = (draggedBall2 === ball1 ? -1 : 1) * Math.sin(angle) * pushForce;
1364
+ return;
1365
+ }
1366
+ const sin = Math.sin(angle);
1367
+ const cos = Math.cos(angle);
1368
+ const vx1 = ball1.vx * cos + ball1.vy * sin;
1369
+ const vy1 = ball1.vy * cos - ball1.vx * sin;
1370
+ const vx2 = ball2.vx * cos + ball2.vy * sin;
1371
+ const vy2 = ball2.vy * cos - ball2.vx * sin;
1372
+ const newVx1 = vx2;
1373
+ const newVx2 = vx1;
1374
+ ball1.vx = newVx1 * cos - vy1 * sin;
1375
+ ball1.vy = vy1 * cos + newVx1 * sin;
1376
+ ball2.vx = newVx2 * cos - vy2 * sin;
1377
+ ball2.vy = vy2 * cos + newVx2 * sin;
1378
+ ball1.x -= overlap * Math.cos(angle);
1379
+ ball1.y -= overlap * Math.sin(angle);
1380
+ ball2.x += overlap * Math.cos(angle);
1381
+ ball2.y += overlap * Math.sin(angle);
1382
+ }
1383
+ };
1384
+ const updatePosition = (ball, width2, height2) => {
1385
+ const handleBoundaryCollision = (velocity, position, boundary, radius) => {
1386
+ let newVelocity = velocity;
1387
+ let newPosition = position;
1388
+ if (position - radius < 0) {
1389
+ newPosition = radius;
1390
+ newVelocity = Math.abs(velocity);
1391
+ } else if (position + radius > boundary) {
1392
+ newPosition = boundary - radius;
1393
+ newVelocity = -Math.abs(velocity);
1394
+ }
1395
+ return [newVelocity, newPosition];
1396
+ };
1397
+ const [newVx, newX] = handleBoundaryCollision(
1398
+ ball.vx,
1399
+ ball.x,
1400
+ width2,
1401
+ ball.radius
1402
+ );
1403
+ const [newVy, newY] = handleBoundaryCollision(
1404
+ ball.vy,
1405
+ ball.y,
1406
+ height2,
1407
+ ball.radius
1408
+ );
1409
+ ball.vx = newVx;
1410
+ ball.vy = newVy;
1411
+ ball.x = newX;
1412
+ ball.y = newY;
1413
+ };
1414
+ const draw = (ctx, ball) => {
1415
+ ctx.beginPath();
1416
+ ctx.arc(ball.x, ball.y, ball.radius, 0, Math.PI * 2);
1417
+ ctx.fillStyle = ball.color;
1418
+ ctx.fill();
1419
+ ctx.closePath();
1420
+ if (ball.text) {
1421
+ ctx.font = "14px Arial";
1422
+ ctx.fillStyle = "#fff";
1423
+ ctx.textAlign = "center";
1424
+ ctx.textBaseline = "middle";
1425
+ ctx.fillText(ball.text, ball.x, ball.y);
1426
+ }
1427
+ };
1428
+ const handleMouseDown = (event) => {
1429
+ const mousePos2 = getMousePos(event);
1430
+ const ball = ballsRef.current.find((b) => {
1431
+ const dx = b.x - mousePos2.x;
1432
+ const dy = b.y - mousePos2.y;
1433
+ return Math.sqrt(dx * dx + dy * dy) < b.radius;
1434
+ });
1435
+ if (ball) {
1436
+ ball.isDragging = true;
1437
+ setDraggedBall(ball);
1438
+ }
1439
+ };
1440
+ const handleMouseMove = (event) => {
1441
+ const mousePos2 = getMousePos(event);
1442
+ setMousePos(mousePos2);
1443
+ if (draggedBall) {
1444
+ draggedBall.x = mousePos2.x;
1445
+ draggedBall.y = mousePos2.y;
1446
+ draggedBall.vx = 0;
1447
+ draggedBall.vy = 0;
1448
+ }
1449
+ };
1450
+ const handleMouseUp = () => {
1451
+ if (draggedBall) {
1452
+ draggedBall.isDragging = false;
1453
+ setDraggedBall(null);
1454
+ }
1455
+ };
1456
+ const getMousePos = (event) => {
1457
+ const canvas = canvasRef.current;
1458
+ if (!canvas) return { x: 0, y: 0 };
1459
+ const rect = canvas.getBoundingClientRect();
1460
+ const scaleX = canvas.width / rect.width;
1461
+ const scaleY = canvas.height / rect.height;
1462
+ return {
1463
+ x: (event.clientX - rect.left) * scaleX,
1464
+ y: (event.clientY - rect.top) * scaleY
1465
+ };
1466
+ };
1467
+ return /* @__PURE__ */ React6__namespace.default.createElement("div", { style: { width: "100%", height: "100%", position: "relative", backgroundColor: "#f9fafb", borderRadius: "0.5rem" } }, /* @__PURE__ */ React6__namespace.default.createElement("div", { ref: containerRef, style: { width: "100%", height: "100%", position: "absolute", top: 0, left: 0 } }, /* @__PURE__ */ React6__namespace.default.createElement(
1468
+ "canvas",
1469
+ {
1470
+ ref: canvasRef,
1471
+ style: {
1472
+ width: "100%",
1473
+ height: "100%",
1474
+ display: "block"
1475
+ // 确保canvas正确显示
1476
+ },
1477
+ onMouseDown: handleMouseDown,
1478
+ onMouseMove: handleMouseMove,
1479
+ onMouseUp: handleMouseUp,
1480
+ onMouseLeave: handleMouseUp
1481
+ }
1482
+ )), /* @__PURE__ */ React6__namespace.default.createElement("div", { className: "absolute bottom-4 right-4 flex gap-2" }, /* @__PURE__ */ React6__namespace.default.createElement(
1483
+ "button",
1484
+ {
1485
+ onClick: shake,
1486
+ className: clsx.clsx("px-4 py-2 bg-blue-500 text-white rounded-lg hover:bg-blue-600 transition-colors", isShaking ? "animate-pulse" : "")
1487
+ },
1488
+ "\u6447\u4E00\u6447"
1489
+ ), /* @__PURE__ */ React6__namespace.default.createElement(
1490
+ "button",
1491
+ {
1492
+ onClick: slowdown,
1493
+ className: clsx.clsx("px-4 py-2 bg-green-500 text-white rounded-lg hover:bg-green-600 transition-colors", isShaking ? "animate-pulse" : "")
1494
+ },
1495
+ "\u51CF\u901F"
1496
+ )));
1497
+ };
1498
+ function GenericOrderManager({
1499
+ operations,
1500
+ renderItem,
1501
+ className = "",
1502
+ title = "\u987A\u5E8F\u7BA1\u7406",
1503
+ description = "\u62D6\u62FD\u6216\u4F7F\u7528\u6309\u94AE\u8C03\u6574\u663E\u793A\u987A\u5E8F",
1504
+ onOrderChanged,
1505
+ emptyMessage = "\u6682\u65E0\u6570\u636E",
1506
+ loadingMessage = "\u52A0\u8F7D\u6570\u636E..."
1507
+ }) {
1508
+ const [items, setItems] = React6.useState([]);
1509
+ const [originalOrder, setOriginalOrder] = React6.useState([]);
1510
+ const [loading, setLoading] = React6.useState(true);
1511
+ const [saving, setSaving] = React6.useState(false);
1512
+ const [error, setError] = React6.useState(null);
1513
+ const [hasChanges, setHasChanges] = React6.useState(false);
1514
+ const [draggedItem, setDraggedItem] = React6.useState(null);
1515
+ const loadItems = React6.useCallback(async () => {
1516
+ try {
1517
+ setLoading(true);
1518
+ setError(null);
1519
+ const data = await operations.loadItems();
1520
+ setItems(data);
1521
+ setOriginalOrder([...data]);
1522
+ setHasChanges(false);
1523
+ } catch (err) {
1524
+ console.error("\u274C [\u901A\u7528\u6392\u5E8F] \u52A0\u8F7D\u6570\u636E\u9519\u8BEF:", err);
1525
+ setError(err instanceof Error ? err.message : "\u52A0\u8F7D\u6570\u636E\u5931\u8D25");
1526
+ } finally {
1527
+ setLoading(false);
1528
+ }
1529
+ }, [operations]);
1530
+ React6.useEffect(() => {
1531
+ loadItems();
1532
+ }, [loadItems]);
1533
+ React6.useEffect(() => {
1534
+ const hasOrderChanged = items.some(
1535
+ (item, index) => originalOrder[index]?.id !== item.id
1536
+ );
1537
+ setHasChanges(hasOrderChanged);
1538
+ }, [items, originalOrder]);
1539
+ const handleMoveUp = async (itemId) => {
1540
+ try {
1541
+ setError(null);
1542
+ const currentIndex = items.findIndex((item) => item.id === itemId);
1543
+ if (currentIndex === -1) {
1544
+ setError("\u9879\u76EE\u4E0D\u5B58\u5728");
1545
+ return;
1546
+ }
1547
+ if (currentIndex === 0) {
1548
+ setError("\u9879\u76EE\u5DF2\u7ECF\u5728\u6700\u524D\u9762\uFF0C\u65E0\u6CD5\u4E0A\u79FB");
1549
+ return;
1550
+ }
1551
+ await operations.moveItemUp(itemId);
1552
+ await loadItems();
1553
+ onOrderChanged?.();
1554
+ } catch (err) {
1555
+ console.error("\u274C [\u901A\u7528\u6392\u5E8F] \u4E0A\u79FB\u9879\u76EE\u9519\u8BEF:", err);
1556
+ setError(err instanceof Error ? err.message : "\u4E0A\u79FB\u5931\u8D25");
1557
+ }
1558
+ };
1559
+ const handleMoveDown = async (itemId) => {
1560
+ try {
1561
+ setError(null);
1562
+ const currentIndex = items.findIndex((item) => item.id === itemId);
1563
+ if (currentIndex === -1) {
1564
+ setError("\u9879\u76EE\u4E0D\u5B58\u5728");
1565
+ return;
1566
+ }
1567
+ if (currentIndex === items.length - 1) {
1568
+ setError("\u9879\u76EE\u5DF2\u7ECF\u5728\u6700\u540E\u9762\uFF0C\u65E0\u6CD5\u4E0B\u79FB");
1569
+ return;
1570
+ }
1571
+ await operations.moveItemDown(itemId);
1572
+ await loadItems();
1573
+ onOrderChanged?.();
1574
+ } catch (err) {
1575
+ console.error("\u274C [\u901A\u7528\u6392\u5E8F] \u4E0B\u79FB\u9879\u76EE\u9519\u8BEF:", err);
1576
+ setError(err instanceof Error ? err.message : "\u4E0B\u79FB\u5931\u8D25");
1577
+ }
1578
+ };
1579
+ const handleDragStart = (e, index) => {
1580
+ setDraggedItem(index);
1581
+ e.dataTransfer.effectAllowed = "move";
1582
+ };
1583
+ const handleDragOver = (e, _index) => {
1584
+ e.preventDefault();
1585
+ e.dataTransfer.dropEffect = "move";
1586
+ };
1587
+ const handleDrop = async (e, dropIndex) => {
1588
+ e.preventDefault();
1589
+ if (draggedItem === null || draggedItem === dropIndex) {
1590
+ setDraggedItem(null);
1591
+ return;
1592
+ }
1593
+ try {
1594
+ setError(null);
1595
+ const newItems = [...items];
1596
+ const draggedItemData = newItems[draggedItem];
1597
+ if (!draggedItemData) return;
1598
+ newItems.splice(draggedItem, 1);
1599
+ newItems.splice(dropIndex, 0, draggedItemData);
1600
+ const itemOrders = newItems.map((item, index) => ({
1601
+ id: item.id,
1602
+ order: index
1603
+ }));
1604
+ await operations.updateItemOrder(itemOrders);
1605
+ await loadItems();
1606
+ onOrderChanged?.();
1607
+ } catch (err) {
1608
+ console.error("\u274C [\u901A\u7528\u6392\u5E8F] \u62D6\u62FD\u6392\u5E8F\u9519\u8BEF:", err);
1609
+ setError(err instanceof Error ? err.message : "\u6392\u5E8F\u5931\u8D25");
1610
+ } finally {
1611
+ setDraggedItem(null);
1612
+ }
1613
+ };
1614
+ const handleSaveOrder = async () => {
1615
+ try {
1616
+ setSaving(true);
1617
+ setError(null);
1618
+ const itemOrders = items.map((item, index) => ({
1619
+ id: item.id,
1620
+ order: index
1621
+ }));
1622
+ await operations.updateItemOrder(itemOrders);
1623
+ setOriginalOrder([...items]);
1624
+ setHasChanges(false);
1625
+ onOrderChanged?.();
1626
+ } catch (err) {
1627
+ console.error("\u274C [\u901A\u7528\u6392\u5E8F] \u4FDD\u5B58\u987A\u5E8F\u9519\u8BEF:", err);
1628
+ setError(err instanceof Error ? err.message : "\u4FDD\u5B58\u5931\u8D25");
1629
+ await loadItems();
1630
+ } finally {
1631
+ setSaving(false);
1632
+ }
1633
+ };
1634
+ const handleResetOrder = () => {
1635
+ setItems([...originalOrder]);
1636
+ };
1637
+ if (loading) {
1638
+ return /* @__PURE__ */ React6__namespace.default.createElement("div", { className: chunkY7WHUKJF_js.cn("flex flex-col items-center justify-center p-12 text-gray-500", className) }, /* @__PURE__ */ React6__namespace.default.createElement("div", { className: "w-6 h-6 border-2 border-gray-200 border-t-blue-500 rounded-full animate-spin mb-2" }), /* @__PURE__ */ React6__namespace.default.createElement("span", null, loadingMessage));
1639
+ }
1640
+ return /* @__PURE__ */ React6__namespace.default.createElement("div", { className: chunkY7WHUKJF_js.cn("bg-white rounded-xl p-6 shadow-md border-2 border-gray-100", className) }, /* @__PURE__ */ React6__namespace.default.createElement("div", { className: "flex items-center justify-between mb-4 pb-3 border-b border-gray-100 sm:flex-row flex-col sm:items-center items-start gap-4" }, /* @__PURE__ */ React6__namespace.default.createElement("h3", { className: "m-0 text-gray-900 text-lg font-semibold" }, title), /* @__PURE__ */ React6__namespace.default.createElement("div", { className: "flex gap-3 w-full sm:w-auto" }, hasChanges && /* @__PURE__ */ React6__namespace.default.createElement(React6__namespace.default.Fragment, null, /* @__PURE__ */ React6__namespace.default.createElement(
1641
+ "button",
1642
+ {
1643
+ onClick: handleResetOrder,
1644
+ className: "flex items-center gap-2 bg-amber-500 hover:bg-amber-600 text-white px-4 py-2 rounded-lg font-medium transition-colors",
1645
+ title: "\u91CD\u7F6E\u4E3A\u539F\u59CB\u987A\u5E8F"
1646
+ },
1647
+ /* @__PURE__ */ React6__namespace.default.createElement(lucideReact.RotateCcw, { size: 16 }),
1648
+ "\u91CD\u7F6E"
1649
+ ), /* @__PURE__ */ React6__namespace.default.createElement(
1650
+ "button",
1651
+ {
1652
+ onClick: handleSaveOrder,
1653
+ disabled: saving,
1654
+ className: "flex items-center gap-2 bg-blue-500 hover:bg-blue-600 disabled:opacity-50 disabled:cursor-not-allowed text-white px-4 py-2 rounded-lg font-medium transition-colors",
1655
+ title: "\u4FDD\u5B58\u65B0\u987A\u5E8F"
1656
+ },
1657
+ /* @__PURE__ */ React6__namespace.default.createElement(lucideReact.Save, { size: 16 }),
1658
+ saving ? "\u4FDD\u5B58\u4E2D..." : "\u4FDD\u5B58\u987A\u5E8F"
1659
+ )))), error && /* @__PURE__ */ React6__namespace.default.createElement("div", { className: "flex items-center gap-2 bg-red-50 text-red-600 p-3 rounded-lg mb-4 border border-red-200" }, /* @__PURE__ */ React6__namespace.default.createElement(lucideReact.AlertCircle, { size: 16 }), /* @__PURE__ */ React6__namespace.default.createElement("span", null, error)), /* @__PURE__ */ React6__namespace.default.createElement("div", { className: "bg-slate-50 border border-slate-200 rounded-lg p-4 mb-6" }, /* @__PURE__ */ React6__namespace.default.createElement("p", { className: "m-0 mb-2 color-slate-500 text-sm" }, description), /* @__PURE__ */ React6__namespace.default.createElement("ul", { className: "m-0 pl-6 color-slate-500 text-sm list-disc" }, /* @__PURE__ */ React6__namespace.default.createElement("li", { className: "mb-1" }, "\u4F7F\u7528\u62D6\u62FD\uFF1A\u70B9\u51FB\u5E76\u62D6\u52A8 ", /* @__PURE__ */ React6__namespace.default.createElement(lucideReact.GripVertical, { size: 14, className: "inline-block align-middle text-gray-500" }), " \u56FE\u6807"), /* @__PURE__ */ React6__namespace.default.createElement("li", { className: "mb-1" }, "\u4F7F\u7528\u6309\u94AE\uFF1A\u70B9\u51FB ", /* @__PURE__ */ React6__namespace.default.createElement(lucideReact.ChevronUp, { size: 14, className: "inline-block align-middle text-gray-500" }), " \u6216 ", /* @__PURE__ */ React6__namespace.default.createElement(lucideReact.ChevronDown, { size: 14, className: "inline-block align-middle text-gray-500" }), " \u6309\u94AE"), /* @__PURE__ */ React6__namespace.default.createElement("li", null, '\u5B8C\u6210\u8C03\u6574\u540E\uFF0C\u70B9\u51FB"\u4FDD\u5B58\u987A\u5E8F"\u6309\u94AE\u4FDD\u5B58\u66F4\u6539'))), /* @__PURE__ */ React6__namespace.default.createElement("div", { className: "flex flex-col gap-3" }, items.map((item, index) => /* @__PURE__ */ React6__namespace.default.createElement(
1660
+ "div",
1661
+ {
1662
+ key: item.id,
1663
+ className: chunkY7WHUKJF_js.cn(
1664
+ "flex items-center gap-3 p-4 bg-gray-50 border-2 border-gray-200 rounded-lg transition-all hover:border-gray-300 hover:shadow-sm",
1665
+ draggedItem === index && "opacity-50 rotate-2 border-blue-500"
1666
+ ),
1667
+ draggable: true,
1668
+ onDragStart: (e) => handleDragStart(e, index),
1669
+ onDragOver: (e) => handleDragOver(e),
1670
+ onDrop: (e) => handleDrop(e, index)
1671
+ },
1672
+ /* @__PURE__ */ React6__namespace.default.createElement("div", { className: "flex items-center cursor-grab active:cursor-grabbing text-gray-400 p-1 rounded hover:text-gray-500 hover:bg-gray-100 transition-colors" }, /* @__PURE__ */ React6__namespace.default.createElement(lucideReact.GripVertical, { size: 20 })),
1673
+ /* @__PURE__ */ React6__namespace.default.createElement("div", { className: "flex-1 min-w-0" }, renderItem(item, index, index === 0, index === items.length - 1)),
1674
+ /* @__PURE__ */ React6__namespace.default.createElement("div", { className: "flex items-center mx-3" }, /* @__PURE__ */ React6__namespace.default.createElement("span", { className: "flex items-center justify-center w-8 h-8 bg-blue-500 text-white text-sm font-semibold rounded-full sm:w-8 sm:h-8 w-7 h-7 sm:text-sm text-xs" }, "#", index + 1)),
1675
+ /* @__PURE__ */ React6__namespace.default.createElement("div", { className: "flex flex-col gap-1 sm:flex-col flex-row" }, /* @__PURE__ */ React6__namespace.default.createElement(
1676
+ "button",
1677
+ {
1678
+ onClick: () => handleMoveUp(item.id),
1679
+ disabled: index === 0,
1680
+ className: "flex items-center justify-center w-8 h-8 p-0 border border-gray-300 bg-white text-gray-500 rounded cursor-pointer transition-all hover:bg-gray-100 hover:border-gray-400 hover:text-gray-700 disabled:opacity-40 disabled:cursor-not-allowed disabled:bg-gray-50 sm:w-8 sm:h-8 w-7 h-7",
1681
+ title: "\u4E0A\u79FB"
1682
+ },
1683
+ /* @__PURE__ */ React6__namespace.default.createElement(lucideReact.ChevronUp, { size: 18 })
1684
+ ), /* @__PURE__ */ React6__namespace.default.createElement(
1685
+ "button",
1686
+ {
1687
+ onClick: () => handleMoveDown(item.id),
1688
+ disabled: index === items.length - 1,
1689
+ className: "flex items-center justify-center w-8 h-8 p-0 border border-gray-300 bg-white text-gray-500 rounded cursor-pointer transition-all hover:bg-gray-100 hover:border-gray-400 hover:text-gray-700 disabled:opacity-40 disabled:cursor-not-allowed disabled:bg-gray-50 sm:w-8 sm:h-8 w-7 h-7",
1690
+ title: "\u4E0B\u79FB"
1691
+ },
1692
+ /* @__PURE__ */ React6__namespace.default.createElement(lucideReact.ChevronDown, { size: 18 })
1693
+ ))
1694
+ ))), items.length === 0 && /* @__PURE__ */ React6__namespace.default.createElement("div", { className: "text-center p-12 text-gray-400 italic" }, /* @__PURE__ */ React6__namespace.default.createElement("p", { className: "m-0" }, emptyMessage)));
1695
+ }
1696
+ var BackButton = ({ href, className = "" }) => {
1697
+ const router = navigation.useRouter();
1698
+ const handleClick = () => {
1699
+ if (href) {
1700
+ router.push(href);
1701
+ } else {
1702
+ router.back();
1703
+ }
1704
+ };
1705
+ return /* @__PURE__ */ React6__namespace.default.createElement(
1706
+ "button",
1707
+ {
1708
+ onClick: handleClick,
1709
+ className: chunkY7WHUKJF_js.cn(
1710
+ "inline-flex items-center px-4 py-2 text-sm font-medium text-gray-700 bg-white border border-gray-300 rounded-md hover:bg-gray-50 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-blue-500 transition-colors",
1711
+ className
1712
+ )
1713
+ },
1714
+ /* @__PURE__ */ React6__namespace.default.createElement(
1715
+ "svg",
1716
+ {
1717
+ className: "w-5 h-5 mr-2",
1718
+ fill: "none",
1719
+ stroke: "currentColor",
1720
+ viewBox: "0 0 24 24"
1721
+ },
1722
+ /* @__PURE__ */ React6__namespace.default.createElement(
1723
+ "path",
1724
+ {
1725
+ strokeLinecap: "round",
1726
+ strokeLinejoin: "round",
1727
+ strokeWidth: 2,
1728
+ d: "M10 19l-7-7m0 0l7-7m-7 7h18"
1729
+ }
1730
+ )
1731
+ ),
1732
+ "\u8FD4\u56DE"
1733
+ );
1734
+ };
1735
+ function getColorValue(bgClass) {
1736
+ const colorMap = {
1737
+ "bg-blue-500": "#3b82f6",
1738
+ "bg-green-500": "#10b981",
1739
+ "bg-red-500": "#ef4444",
1740
+ "bg-purple-500": "#8b5cf6",
1741
+ "bg-slate-500": "#64748b",
1742
+ "bg-emerald-500": "#10b981",
1743
+ "bg-orange-500": "#f97316"
1744
+ };
1745
+ return colorMap[bgClass] || "#3b82f6";
1746
+ }
1747
+ function FilterButtonGroup({
1748
+ label,
1749
+ value,
1750
+ options,
1751
+ onChange,
1752
+ className
1753
+ }) {
1754
+ return /* @__PURE__ */ React6__namespace.default.createElement("div", { className: chunkY7WHUKJF_js.cn("space-y-4", className) }, /* @__PURE__ */ React6__namespace.default.createElement("h3", { className: "text-lg font-semibold text-gray-800" }, label), /* @__PURE__ */ React6__namespace.default.createElement("div", { className: "flex gap-3" }, options.map((option) => {
1755
+ const isActive = value === option.value;
1756
+ return /* @__PURE__ */ React6__namespace.default.createElement(
1757
+ "button",
1758
+ {
1759
+ key: option.value,
1760
+ onClick: () => onChange(option.value),
1761
+ style: isActive ? { backgroundColor: getColorValue(option.activeColor.bg) } : void 0,
1762
+ className: chunkY7WHUKJF_js.cn(
1763
+ "flex-1 h-12 rounded-lg font-medium text-sm transition-all duration-200 ease-out focus:outline-none focus:ring-2 focus:ring-opacity-50 border",
1764
+ isActive ? "text-white border-transparent shadow-md focus:ring-white" : "bg-white text-gray-700 border-gray-200 shadow-sm hover:bg-gray-50 hover:border-gray-300 hover:shadow focus:ring-blue-300"
1765
+ )
1766
+ },
1767
+ /* @__PURE__ */ React6__namespace.default.createElement("div", { className: "flex items-center justify-center space-x-2" }, /* @__PURE__ */ React6__namespace.default.createElement("span", { className: "text-lg" }, option.icon), /* @__PURE__ */ React6__namespace.default.createElement("span", null, option.label), option.showCount && option.count !== void 0 && /* @__PURE__ */ React6__namespace.default.createElement("span", { className: chunkY7WHUKJF_js.cn(
1768
+ "text-xs font-semibold px-2 py-0.5 rounded-full min-w-[1.25rem] text-center",
1769
+ isActive ? "bg-white/20 text-white" : "bg-gray-100 text-gray-600"
1770
+ ) }, option.count))
1771
+ );
1772
+ })));
1773
+ }
1774
+ function SearchResultHint({ searchQuery, resultCount, className }) {
1775
+ if (!searchQuery) return null;
1776
+ return /* @__PURE__ */ React6__namespace.default.createElement("div", { className: chunkY7WHUKJF_js.cn("mb-6 p-4 bg-blue-50 border border-blue-200 rounded-lg", className) }, /* @__PURE__ */ React6__namespace.default.createElement("p", { className: "text-sm text-blue-700" }, '\u641C\u7D22 "', /* @__PURE__ */ React6__namespace.default.createElement("span", { className: "font-medium" }, searchQuery), '" \u627E\u5230 ', resultCount, " \u4E2A\u7ED3\u679C"));
1777
+ }
1778
+ var Modal = ({
1779
+ isOpen,
1780
+ onClose,
1781
+ title,
1782
+ width,
1783
+ height,
1784
+ className,
1785
+ maskClosable = true,
1786
+ children,
1787
+ zIndex = 50,
1788
+ overlayClassName
1789
+ }) => {
1790
+ const contentZIndex = Math.max(zIndex, 1e4);
1791
+ return /* @__PURE__ */ React6__namespace.default.createElement(chunk7PMT4L4I_js.Dialog, { open: isOpen, onOpenChange: (open) => {
1792
+ if (!open) {
1793
+ if (maskClosable) {
1794
+ onClose();
1795
+ }
1796
+ }
1797
+ } }, /* @__PURE__ */ React6__namespace.default.createElement(
1798
+ chunk7PMT4L4I_js.DialogContent,
1799
+ {
1800
+ className: chunkY7WHUKJF_js.cn("sm:max-w-[425px]", className),
1801
+ overlayClassName,
1802
+ onPointerDownOutside: (e) => {
1803
+ if (!maskClosable) e.preventDefault();
1804
+ },
1805
+ onEscapeKeyDown: (e) => {
1806
+ if (!maskClosable) e.preventDefault();
1807
+ },
1808
+ style: {
1809
+ zIndex: contentZIndex,
1810
+ ...width ? { maxWidth: typeof width === "number" ? `${width}px` : width } : void 0,
1811
+ ...height ? { height: typeof height === "number" ? `${height}px` : height } : void 0
1812
+ }
1813
+ },
1814
+ title ? /* @__PURE__ */ React6__namespace.default.createElement(chunk7PMT4L4I_js.DialogHeader, null, /* @__PURE__ */ React6__namespace.default.createElement(chunk7PMT4L4I_js.DialogTitle, null, title)) : (
1815
+ // 无障碍性:始终需要 DialogTitle,使用 sr-only 对视觉隐藏但对屏幕阅读器可见
1816
+ /* @__PURE__ */ React6__namespace.default.createElement(chunk7PMT4L4I_js.DialogTitle, { className: "sr-only" }, "\u5F39\u7A97")
1817
+ ),
1818
+ /* @__PURE__ */ React6__namespace.default.createElement("div", { className: "py-4" }, children)
1819
+ ));
1820
+ };
1821
+ var ConfirmModal = ({
1822
+ isOpen,
1823
+ onClose,
1824
+ onConfirm,
1825
+ title = "\u786E\u8BA4\u64CD\u4F5C",
1826
+ message,
1827
+ confirmText = "\u786E\u8BA4",
1828
+ cancelText = "\u53D6\u6D88",
1829
+ isLoading = false
1830
+ }) => {
1831
+ return /* @__PURE__ */ React6__namespace.default.createElement(chunk7PMT4L4I_js.Dialog, { open: isOpen, onOpenChange: (open) => !open && onClose() }, /* @__PURE__ */ React6__namespace.default.createElement(AlertDialogContent, null, /* @__PURE__ */ React6__namespace.default.createElement(chunk7PMT4L4I_js.DialogHeader, null, /* @__PURE__ */ React6__namespace.default.createElement(chunk7PMT4L4I_js.DialogTitle, null, title), /* @__PURE__ */ React6__namespace.default.createElement(chunk7PMT4L4I_js.DialogDescription, null, message)), /* @__PURE__ */ React6__namespace.default.createElement(chunk7PMT4L4I_js.DialogFooter, null, /* @__PURE__ */ React6__namespace.default.createElement(AlertDialogCancel, { disabled: isLoading }, cancelText), /* @__PURE__ */ React6__namespace.default.createElement(
1832
+ AlertDialogAction,
1833
+ {
1834
+ onClick: (e) => {
1835
+ e.preventDefault();
1836
+ onConfirm();
1837
+ },
1838
+ disabled: isLoading,
1839
+ className: "bg-destructive text-destructive-foreground hover:bg-destructive/90"
1840
+ },
1841
+ isLoading ? "\u5904\u7406\u4E2D..." : confirmText
1842
+ ))));
1843
+ };
1844
+ function ImageMappingPanel({
1845
+ title,
1846
+ items,
1847
+ value,
1848
+ onChange,
1849
+ className,
1850
+ uploadLabel = "\u4E0A\u4F20\u56FE\u7247",
1851
+ clearLabel = "\u6E05\u9664"
1852
+ }) {
1853
+ const handleFileChange = (id, file) => {
1854
+ if (!file) {
1855
+ return;
1856
+ }
1857
+ const reader = new FileReader();
1858
+ reader.onload = () => {
1859
+ const base64 = typeof reader.result === "string" ? reader.result : "";
1860
+ if (!base64) {
1861
+ return;
1862
+ }
1863
+ onChange({
1864
+ ...value,
1865
+ [id]: base64
1866
+ });
1867
+ };
1868
+ reader.readAsDataURL(file);
1869
+ };
1870
+ const handleRemove = (id) => {
1871
+ const next = { ...value };
1872
+ delete next[id];
1873
+ onChange(next);
1874
+ };
1875
+ return /* @__PURE__ */ React6__namespace.default.createElement("details", { className: chunkY7WHUKJF_js.cn("rounded-lg border border-slate-200 bg-white/80 p-3", className) }, /* @__PURE__ */ React6__namespace.default.createElement("summary", { className: "cursor-pointer text-sm font-semibold text-slate-700" }, title), /* @__PURE__ */ React6__namespace.default.createElement("div", { className: "mt-3 grid grid-cols-1 gap-2 sm:grid-cols-2" }, items.map((item) => {
1876
+ const image = value[item.id];
1877
+ return /* @__PURE__ */ React6__namespace.default.createElement(
1878
+ "div",
1879
+ {
1880
+ key: item.id,
1881
+ className: "flex items-center gap-2 rounded-md border border-slate-200 bg-white p-2"
1882
+ },
1883
+ /* @__PURE__ */ React6__namespace.default.createElement("div", { className: "w-16 text-xs font-semibold text-slate-600" }, item.label),
1884
+ /* @__PURE__ */ React6__namespace.default.createElement("label", { className: "flex-1 cursor-pointer rounded-md bg-cyan-600 px-2 py-1 text-center text-xs font-medium text-white" }, uploadLabel, /* @__PURE__ */ React6__namespace.default.createElement(
1885
+ "input",
1886
+ {
1887
+ type: "file",
1888
+ accept: "image/*",
1889
+ className: "hidden",
1890
+ onChange: (event) => {
1891
+ handleFileChange(item.id, event.target.files?.[0]);
1892
+ event.currentTarget.value = "";
1893
+ }
1894
+ }
1895
+ )),
1896
+ image ? /* @__PURE__ */ React6__namespace.default.createElement(React6__namespace.default.Fragment, null, /* @__PURE__ */ React6__namespace.default.createElement(
1897
+ "img",
1898
+ {
1899
+ src: image,
1900
+ alt: item.label,
1901
+ className: "h-8 w-8 rounded-full border border-slate-200 object-cover"
1902
+ }
1903
+ ), /* @__PURE__ */ React6__namespace.default.createElement(
1904
+ "button",
1905
+ {
1906
+ type: "button",
1907
+ className: "rounded-md border border-red-200 px-2 py-1 text-xs text-red-600",
1908
+ onClick: () => handleRemove(item.id)
1909
+ },
1910
+ clearLabel
1911
+ )) : null
1912
+ );
1913
+ })));
1914
+ }
1915
+ function LocalImageMappingPanel({
1916
+ storageKey,
1917
+ defaultValue = {},
1918
+ onValueChange,
1919
+ ...panelProps
1920
+ }) {
1921
+ const [value, setValue] = chunkOIRZXSYM_js.useLocalStorage(storageKey, defaultValue);
1922
+ return /* @__PURE__ */ React6__namespace.default.createElement(
1923
+ ImageMappingPanel,
1924
+ {
1925
+ ...panelProps,
1926
+ value,
1927
+ onChange: (next) => {
1928
+ setValue(next);
1929
+ onValueChange?.(next);
1930
+ }
1931
+ }
1932
+ );
1933
+ }
1934
+
1935
+ exports.AlertDialogAction = AlertDialogAction;
1936
+ exports.AlertDialogCancel = AlertDialogCancel;
1937
+ exports.AlertDialogContent = AlertDialogContent;
1938
+ exports.Avatar = Avatar;
1939
+ exports.AvatarFallback = AvatarFallback;
1940
+ exports.AvatarImage = AvatarImage;
1941
+ exports.BackButton = BackButton;
1942
+ exports.Badge = Badge;
1943
+ exports.Card = Card;
1944
+ exports.CardContent = CardContent;
1945
+ exports.CardDescription = CardDescription;
1946
+ exports.CardFooter = CardFooter;
1947
+ exports.CardHeader = CardHeader;
1948
+ exports.CardTitle = CardTitle;
1949
+ exports.CollisionBalls = CollisionBalls;
1950
+ exports.ConfirmModal = ConfirmModal;
1951
+ exports.DropdownMenu = DropdownMenu;
1952
+ exports.DropdownMenuCheckboxItem = DropdownMenuCheckboxItem;
1953
+ exports.DropdownMenuContent = DropdownMenuContent;
1954
+ exports.DropdownMenuGroup = DropdownMenuGroup;
1955
+ exports.DropdownMenuItem = DropdownMenuItem;
1956
+ exports.DropdownMenuLabel = DropdownMenuLabel;
1957
+ exports.DropdownMenuPortal = DropdownMenuPortal;
1958
+ exports.DropdownMenuRadioGroup = DropdownMenuRadioGroup;
1959
+ exports.DropdownMenuRadioItem = DropdownMenuRadioItem;
1960
+ exports.DropdownMenuSeparator = DropdownMenuSeparator;
1961
+ exports.DropdownMenuShortcut = DropdownMenuShortcut;
1962
+ exports.DropdownMenuSub = DropdownMenuSub;
1963
+ exports.DropdownMenuSubContent = DropdownMenuSubContent;
1964
+ exports.DropdownMenuSubTrigger = DropdownMenuSubTrigger;
1965
+ exports.DropdownMenuTrigger = DropdownMenuTrigger;
1966
+ exports.FilterButtonGroup = FilterButtonGroup;
1967
+ exports.GenericOrderManager = GenericOrderManager;
1968
+ exports.Grid = Grid;
1969
+ exports.ImageMappingPanel = ImageMappingPanel;
1970
+ exports.Label = Label;
1971
+ exports.LocalImageMappingPanel = LocalImageMappingPanel;
1972
+ exports.Modal = Modal;
1973
+ exports.Popover = Popover;
1974
+ exports.PopoverAnchor = PopoverAnchor;
1975
+ exports.PopoverContent = PopoverContent;
1976
+ exports.PopoverTrigger = PopoverTrigger;
1977
+ exports.Progress = Progress;
1978
+ exports.ScrollArea = ScrollArea;
1979
+ exports.ScrollBar = ScrollBar;
1980
+ exports.SearchBox = SearchBox;
1981
+ exports.SearchResultHint = SearchResultHint;
1982
+ exports.Select = Select;
1983
+ exports.SelectContent = SelectContent;
1984
+ exports.SelectGroup = SelectGroup;
1985
+ exports.SelectItem = SelectItem;
1986
+ exports.SelectLabel = SelectLabel;
1987
+ exports.SelectScrollDownButton = SelectScrollDownButton;
1988
+ exports.SelectScrollUpButton = SelectScrollUpButton;
1989
+ exports.SelectSeparator = SelectSeparator;
1990
+ exports.SelectTrigger = SelectTrigger;
1991
+ exports.SelectValue = SelectValue;
1992
+ exports.Separator = Separator;
1993
+ exports.SheetContent = SheetContent;
1994
+ exports.SheetDescription = SheetDescription;
1995
+ exports.SheetFooter = SheetFooter;
1996
+ exports.SheetHeader = SheetHeader;
1997
+ exports.SheetTitle = SheetTitle;
1998
+ exports.Tabs = Tabs;
1999
+ exports.TabsContent = TabsContent;
2000
+ exports.TabsList = TabsList;
2001
+ exports.TabsTrigger = TabsTrigger;
2002
+ exports.Textarea = Textarea;
2003
+ exports.Timeline = Timeline;
2004
+ exports.Tooltip = Tooltip;
2005
+ exports.TooltipContent = TooltipContent;
2006
+ exports.TooltipProvider = TooltipProvider;
2007
+ exports.TooltipTrigger = TooltipTrigger;
2008
+ exports.badgeVariants = badgeVariants;
2009
+ exports.components_exports = components_exports;
2010
+ //# sourceMappingURL=chunk-KVYHCGRY.js.map
2011
+ //# sourceMappingURL=chunk-KVYHCGRY.js.map