sa2kit 3.0.0 → 3.2.0

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