sa2kit 1.6.60 → 1.6.62

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 (297) hide show
  1. package/dist/UniversalFileService-C3WQAFOV.js +15 -0
  2. package/dist/{UniversalFileService-J6ET6KZK.js.map → UniversalFileService-C3WQAFOV.js.map} +1 -1
  3. package/dist/UniversalFileService-O3IEROBN.mjs +6 -0
  4. package/dist/{UniversalFileService-336GFY6N.mjs.map → UniversalFileService-O3IEROBN.mjs.map} +1 -1
  5. package/dist/ai/llm/index.d.mts +70 -0
  6. package/dist/ai/llm/index.d.ts +70 -0
  7. package/dist/ai/llm/index.js +54 -0
  8. package/dist/ai/llm/index.js.map +1 -0
  9. package/dist/ai/llm/index.mjs +5 -0
  10. package/dist/ai/llm/index.mjs.map +1 -0
  11. package/dist/ai/llm/ui/electron/index.d.mts +5 -0
  12. package/dist/ai/llm/ui/electron/index.d.ts +5 -0
  13. package/dist/ai/llm/ui/electron/index.js +21 -0
  14. package/dist/ai/llm/ui/electron/index.js.map +1 -0
  15. package/dist/ai/llm/ui/electron/index.mjs +8 -0
  16. package/dist/ai/llm/ui/electron/index.mjs.map +1 -0
  17. package/dist/ai/llm/ui/miniapp/index.d.mts +9 -0
  18. package/dist/ai/llm/ui/miniapp/index.d.ts +9 -0
  19. package/dist/ai/llm/ui/miniapp/index.js +107 -0
  20. package/dist/ai/llm/ui/miniapp/index.js.map +1 -0
  21. package/dist/ai/llm/ui/miniapp/index.mjs +101 -0
  22. package/dist/ai/llm/ui/miniapp/index.mjs.map +1 -0
  23. package/dist/ai/llm/ui/rn/index.d.mts +9 -0
  24. package/dist/ai/llm/ui/rn/index.d.ts +9 -0
  25. package/dist/ai/llm/ui/rn/index.js +249 -0
  26. package/dist/ai/llm/ui/rn/index.js.map +1 -0
  27. package/dist/ai/llm/ui/rn/index.mjs +243 -0
  28. package/dist/ai/llm/ui/rn/index.mjs.map +1 -0
  29. package/dist/ai/llm/ui/web/index.d.mts +15 -0
  30. package/dist/ai/llm/ui/web/index.d.ts +15 -0
  31. package/dist/ai/llm/ui/web/index.js +21 -0
  32. package/dist/ai/llm/ui/web/index.js.map +1 -0
  33. package/dist/ai/llm/ui/web/index.mjs +8 -0
  34. package/dist/ai/llm/ui/web/index.mjs.map +1 -0
  35. package/dist/ar/index.d.mts +7 -0
  36. package/dist/ar/index.d.ts +7 -0
  37. package/dist/ar/index.js +17 -0
  38. package/dist/ar/index.js.map +1 -0
  39. package/dist/ar/index.mjs +4 -0
  40. package/dist/ar/index.mjs.map +1 -0
  41. package/dist/auth/index.js +22 -22
  42. package/dist/auth/index.mjs +2 -2
  43. package/dist/auth/legacy/db/index.d.mts +5 -0
  44. package/dist/auth/legacy/db/index.d.ts +5 -0
  45. package/dist/auth/legacy/db/index.js +34 -0
  46. package/dist/auth/legacy/db/index.js.map +1 -0
  47. package/dist/auth/legacy/db/index.mjs +5 -0
  48. package/dist/auth/legacy/db/index.mjs.map +1 -0
  49. package/dist/auth/legacy/index.d.mts +51 -0
  50. package/dist/auth/legacy/index.d.ts +51 -0
  51. package/dist/auth/legacy/index.js +146 -0
  52. package/dist/auth/legacy/index.js.map +1 -0
  53. package/dist/auth/legacy/index.mjs +13 -0
  54. package/dist/auth/legacy/index.mjs.map +1 -0
  55. package/dist/auth/legacy/logic/index.d.mts +9 -0
  56. package/dist/auth/legacy/logic/index.d.ts +9 -0
  57. package/dist/auth/legacy/logic/index.js +18 -0
  58. package/dist/auth/legacy/logic/index.js.map +1 -0
  59. package/dist/auth/legacy/logic/index.mjs +5 -0
  60. package/dist/auth/legacy/logic/index.mjs.map +1 -0
  61. package/dist/auth/legacy/routes/index.d.mts +50 -0
  62. package/dist/auth/legacy/routes/index.d.ts +50 -0
  63. package/dist/auth/legacy/routes/index.js +34 -0
  64. package/dist/auth/legacy/routes/index.js.map +1 -0
  65. package/dist/auth/legacy/routes/index.mjs +5 -0
  66. package/dist/auth/legacy/routes/index.mjs.map +1 -0
  67. package/dist/auth/legacy/schema/index.d.mts +401 -0
  68. package/dist/auth/legacy/schema/index.d.ts +401 -0
  69. package/dist/auth/legacy/schema/index.js +29 -0
  70. package/dist/auth/legacy/schema/index.js.map +1 -0
  71. package/dist/auth/legacy/schema/index.mjs +4 -0
  72. package/dist/auth/legacy/schema/index.mjs.map +1 -0
  73. package/dist/auth/legacy/server/index.d.mts +15 -0
  74. package/dist/auth/legacy/server/index.d.ts +15 -0
  75. package/dist/auth/legacy/server/index.js +65 -0
  76. package/dist/auth/legacy/server/index.js.map +1 -0
  77. package/dist/auth/legacy/server/index.mjs +8 -0
  78. package/dist/auth/legacy/server/index.mjs.map +1 -0
  79. package/dist/auth/legacy/services/index.d.mts +40 -0
  80. package/dist/auth/legacy/services/index.d.ts +40 -0
  81. package/dist/auth/legacy/services/index.js +14 -0
  82. package/dist/auth/legacy/services/index.js.map +1 -0
  83. package/dist/auth/legacy/services/index.mjs +5 -0
  84. package/dist/auth/legacy/services/index.mjs.map +1 -0
  85. package/dist/auth/legacy/ui/miniapp/index.d.mts +10 -0
  86. package/dist/auth/legacy/ui/miniapp/index.d.ts +10 -0
  87. package/dist/auth/legacy/ui/miniapp/index.js +23 -0
  88. package/dist/auth/legacy/ui/miniapp/index.js.map +1 -0
  89. package/dist/auth/legacy/ui/miniapp/index.mjs +6 -0
  90. package/dist/auth/legacy/ui/miniapp/index.mjs.map +1 -0
  91. package/dist/auth/legacy/ui/web/index.d.mts +22 -0
  92. package/dist/auth/legacy/ui/web/index.d.ts +22 -0
  93. package/dist/auth/legacy/ui/web/index.js +31 -0
  94. package/dist/auth/legacy/ui/web/index.js.map +1 -0
  95. package/dist/auth/legacy/ui/web/index.mjs +6 -0
  96. package/dist/auth/legacy/ui/web/index.mjs.map +1 -0
  97. package/dist/calendar/index.d.mts +390 -237
  98. package/dist/calendar/index.d.ts +390 -237
  99. package/dist/calendar/index.js +3825 -3785
  100. package/dist/calendar/index.js.map +1 -1
  101. package/dist/calendar/index.mjs +3730 -3696
  102. package/dist/calendar/index.mjs.map +1 -1
  103. package/dist/calendar/routes/index.js +30 -327
  104. package/dist/calendar/routes/index.js.map +1 -1
  105. package/dist/calendar/routes/index.mjs +1 -323
  106. package/dist/calendar/routes/index.mjs.map +1 -1
  107. package/dist/calendar/server.d.mts +6 -0
  108. package/dist/calendar/server.d.ts +6 -0
  109. package/dist/calendar/server.js +41 -13
  110. package/dist/calendar/server.js.map +1 -1
  111. package/dist/calendar/server.mjs +2 -2
  112. package/dist/calendar/server.mjs.map +1 -1
  113. package/dist/chunk-24F7KUED.js +263 -0
  114. package/dist/chunk-24F7KUED.js.map +1 -0
  115. package/dist/{chunk-YMS6BPXS.js → chunk-27IUMDDK.js} +3 -3
  116. package/dist/{chunk-YMS6BPXS.js.map → chunk-27IUMDDK.js.map} +1 -1
  117. package/dist/chunk-37M6NZIF.js +279 -0
  118. package/dist/chunk-37M6NZIF.js.map +1 -0
  119. package/dist/chunk-3JMUNOUT.js +144 -0
  120. package/dist/chunk-3JMUNOUT.js.map +1 -0
  121. package/dist/chunk-3PFCOTJP.mjs +256 -0
  122. package/dist/chunk-3PFCOTJP.mjs.map +1 -0
  123. package/dist/{chunk-NZZZUMMX.mjs → chunk-57MVE5LL.mjs} +3 -3
  124. package/dist/{chunk-NZZZUMMX.mjs.map → chunk-57MVE5LL.mjs.map} +1 -1
  125. package/dist/{chunk-622Y6LTH.mjs → chunk-5BLZEVWK.mjs} +196 -468
  126. package/dist/chunk-5BLZEVWK.mjs.map +1 -0
  127. package/dist/{chunk-YN4MJFIG.js → chunk-5LCGOCKG.js} +5 -5
  128. package/dist/{chunk-YN4MJFIG.js.map → chunk-5LCGOCKG.js.map} +1 -1
  129. package/dist/chunk-6XUQ2B4K.js +219 -0
  130. package/dist/chunk-6XUQ2B4K.js.map +1 -0
  131. package/dist/{chunk-NCOXT7SK.js → chunk-77UEPWVQ.js} +4 -4
  132. package/dist/{chunk-NCOXT7SK.js.map → chunk-77UEPWVQ.js.map} +1 -1
  133. package/dist/chunk-CFM56MGO.mjs +35 -0
  134. package/dist/chunk-CFM56MGO.mjs.map +1 -0
  135. package/dist/chunk-CPSFYP34.mjs +140 -0
  136. package/dist/chunk-CPSFYP34.mjs.map +1 -0
  137. package/dist/chunk-D22QBOCM.mjs +336 -0
  138. package/dist/chunk-D22QBOCM.mjs.map +1 -0
  139. package/dist/chunk-DA4QV64P.mjs +35 -0
  140. package/dist/chunk-DA4QV64P.mjs.map +1 -0
  141. package/dist/chunk-EKDLZND6.js +275 -0
  142. package/dist/chunk-EKDLZND6.js.map +1 -0
  143. package/dist/chunk-EKQPFZXQ.js +12 -0
  144. package/dist/chunk-EKQPFZXQ.js.map +1 -0
  145. package/dist/chunk-ERAAB5VG.js +324 -0
  146. package/dist/chunk-ERAAB5VG.js.map +1 -0
  147. package/dist/chunk-ESLY72VI.mjs +175 -0
  148. package/dist/chunk-ESLY72VI.mjs.map +1 -0
  149. package/dist/chunk-FGQGWW73.js +38 -0
  150. package/dist/chunk-FGQGWW73.js.map +1 -0
  151. package/dist/chunk-FXQOXLDE.js +120 -0
  152. package/dist/chunk-FXQOXLDE.js.map +1 -0
  153. package/dist/chunk-FZELCJR7.mjs +19 -0
  154. package/dist/chunk-FZELCJR7.mjs.map +1 -0
  155. package/dist/{chunk-HHVDOIPV.js → chunk-H3P2PGZL.js} +3 -3
  156. package/dist/{chunk-HHVDOIPV.js.map → chunk-H3P2PGZL.js.map} +1 -1
  157. package/dist/chunk-HBQMN5QM.mjs +10 -0
  158. package/dist/chunk-HBQMN5QM.mjs.map +1 -0
  159. package/dist/chunk-ITRIXMXF.mjs +862 -0
  160. package/dist/chunk-ITRIXMXF.mjs.map +1 -0
  161. package/dist/chunk-IUWSCUDC.js +4 -0
  162. package/dist/chunk-IUWSCUDC.js.map +1 -0
  163. package/dist/chunk-JCKCKRC2.js +50 -0
  164. package/dist/chunk-JCKCKRC2.js.map +1 -0
  165. package/dist/chunk-L7GQNY54.mjs +286 -0
  166. package/dist/chunk-L7GQNY54.mjs.map +1 -0
  167. package/dist/{chunk-ZRWED7Q6.js → chunk-LDVJ7URJ.js} +235 -520
  168. package/dist/chunk-LDVJ7URJ.js.map +1 -0
  169. package/dist/{chunk-CYTXGBP2.js → chunk-MLP74E3O.js} +573 -1607
  170. package/dist/chunk-MLP74E3O.js.map +1 -0
  171. package/dist/chunk-NAX4TUT7.js +182 -0
  172. package/dist/chunk-NAX4TUT7.js.map +1 -0
  173. package/dist/chunk-NW4EN4YI.mjs +213 -0
  174. package/dist/chunk-NW4EN4YI.mjs.map +1 -0
  175. package/dist/chunk-P3QMT3AY.mjs +44 -0
  176. package/dist/chunk-P3QMT3AY.mjs.map +1 -0
  177. package/dist/chunk-PJ4KYAQZ.mjs +631 -0
  178. package/dist/chunk-PJ4KYAQZ.mjs.map +1 -0
  179. package/dist/chunk-PLSEAREM.js +345 -0
  180. package/dist/chunk-PLSEAREM.js.map +1 -0
  181. package/dist/{chunk-EGJPS7OL.mjs → chunk-QZU4UJZG.mjs} +3 -3
  182. package/dist/{chunk-EGJPS7OL.mjs.map → chunk-QZU4UJZG.mjs.map} +1 -1
  183. package/dist/chunk-RJVR33ME.mjs +3 -0
  184. package/dist/chunk-RJVR33ME.mjs.map +1 -0
  185. package/dist/chunk-SYBHDB2D.js +650 -0
  186. package/dist/chunk-SYBHDB2D.js.map +1 -0
  187. package/dist/chunk-TVKVM7JT.js +21 -0
  188. package/dist/chunk-TVKVM7JT.js.map +1 -0
  189. package/dist/{chunk-PONZPO3U.mjs → chunk-UTB72ZJ7.mjs} +414 -1448
  190. package/dist/chunk-UTB72ZJ7.mjs.map +1 -0
  191. package/dist/chunk-V7EVKD5G.mjs +116 -0
  192. package/dist/chunk-V7EVKD5G.mjs.map +1 -0
  193. package/dist/chunk-VGPR3KLR.js +872 -0
  194. package/dist/chunk-VGPR3KLR.js.map +1 -0
  195. package/dist/chunk-VS7WATQD.js +255 -0
  196. package/dist/chunk-VS7WATQD.js.map +1 -0
  197. package/dist/chunk-VSP7XJT5.mjs +272 -0
  198. package/dist/chunk-VSP7XJT5.mjs.map +1 -0
  199. package/dist/{chunk-CSDIPQQO.mjs → chunk-VTKAIOP5.mjs} +5 -5
  200. package/dist/{chunk-CSDIPQQO.mjs.map → chunk-VTKAIOP5.mjs.map} +1 -1
  201. package/dist/chunk-VULJUXTF.mjs +267 -0
  202. package/dist/chunk-VULJUXTF.mjs.map +1 -0
  203. package/dist/chunk-XAHM6B3V.js +44 -0
  204. package/dist/chunk-XAHM6B3V.js.map +1 -0
  205. package/dist/chunk-YSF5YISM.mjs +248 -0
  206. package/dist/chunk-YSF5YISM.mjs.map +1 -0
  207. package/dist/{chunk-OFYBMMWT.mjs → chunk-YYJEVAJI.mjs} +3 -3
  208. package/dist/{chunk-OFYBMMWT.mjs.map → chunk-YYJEVAJI.mjs.map} +1 -1
  209. package/dist/components/index.d.mts +1 -0
  210. package/dist/components/index.d.ts +1 -0
  211. package/dist/components/index.js +182 -181
  212. package/dist/components/index.mjs +4 -3
  213. package/dist/index-DNKZ7-R_.d.mts +184 -0
  214. package/dist/index-DNKZ7-R_.d.ts +184 -0
  215. package/dist/index.d.mts +4 -1
  216. package/dist/index.d.ts +4 -1
  217. package/dist/index.js +285 -229
  218. package/dist/index.js.map +1 -1
  219. package/dist/index.mjs +15 -10
  220. package/dist/index.mjs.map +1 -1
  221. package/dist/mikuFusionGame/index.js +3 -3
  222. package/dist/mikuFusionGame/index.mjs +2 -2
  223. package/dist/mmd/index.d.mts +67 -9
  224. package/dist/mmd/index.d.ts +67 -9
  225. package/dist/mmd/index.js +969 -625
  226. package/dist/mmd/index.js.map +1 -1
  227. package/dist/mmd/index.mjs +969 -628
  228. package/dist/mmd/index.mjs.map +1 -1
  229. package/dist/portfolio/index.js +10 -9
  230. package/dist/portfolio/index.mjs +5 -4
  231. package/dist/qqbot/index.d.mts +2 -0
  232. package/dist/qqbot/index.d.ts +2 -0
  233. package/dist/qqbot/index.js +21 -0
  234. package/dist/qqbot/index.js.map +1 -0
  235. package/dist/qqbot/index.mjs +4 -0
  236. package/dist/qqbot/index.mjs.map +1 -0
  237. package/dist/qqbot/server/index.d.mts +91 -0
  238. package/dist/qqbot/server/index.d.ts +91 -0
  239. package/dist/qqbot/server/index.js +21 -0
  240. package/dist/qqbot/server/index.js.map +1 -0
  241. package/dist/qqbot/server/index.mjs +4 -0
  242. package/dist/qqbot/server/index.mjs.map +1 -0
  243. package/dist/qqbot/ui/web/index.d.mts +10 -0
  244. package/dist/qqbot/ui/web/index.d.ts +10 -0
  245. package/dist/qqbot/ui/web/index.js +105 -0
  246. package/dist/qqbot/ui/web/index.js.map +1 -0
  247. package/dist/qqbot/ui/web/index.mjs +99 -0
  248. package/dist/qqbot/ui/web/index.mjs.map +1 -0
  249. package/dist/screenReceiver/index.d.mts +78 -0
  250. package/dist/screenReceiver/index.d.ts +78 -0
  251. package/dist/screenReceiver/index.js +17 -0
  252. package/dist/screenReceiver/index.js.map +1 -0
  253. package/dist/screenReceiver/index.mjs +4 -0
  254. package/dist/screenReceiver/index.mjs.map +1 -0
  255. package/dist/screenReceiver/server/index.d.mts +36 -0
  256. package/dist/screenReceiver/server/index.d.ts +36 -0
  257. package/dist/screenReceiver/server/index.js +160 -0
  258. package/dist/screenReceiver/server/index.js.map +1 -0
  259. package/dist/screenReceiver/server/index.mjs +157 -0
  260. package/dist/screenReceiver/server/index.mjs.map +1 -0
  261. package/dist/showmasterpiece/db/index.js +42 -42
  262. package/dist/showmasterpiece/db/index.mjs +1 -1
  263. package/dist/showmasterpiece/index.js +52 -41
  264. package/dist/showmasterpiece/index.js.map +1 -1
  265. package/dist/showmasterpiece/index.mjs +15 -4
  266. package/dist/showmasterpiece/index.mjs.map +1 -1
  267. package/dist/showmasterpiece/server/index.js +42 -42
  268. package/dist/showmasterpiece/server/index.mjs +1 -1
  269. package/dist/showmasterpiece/ui/miniapp/index.d.mts +2 -0
  270. package/dist/showmasterpiece/ui/miniapp/index.d.ts +2 -0
  271. package/dist/showmasterpiece/ui/miniapp/index.js +83 -55
  272. package/dist/showmasterpiece/ui/miniapp/index.js.map +1 -1
  273. package/dist/showmasterpiece/ui/miniapp/index.mjs +83 -55
  274. package/dist/showmasterpiece/ui/miniapp/index.mjs.map +1 -1
  275. package/dist/showmasterpiece/ui/web/index.js +43 -32
  276. package/dist/showmasterpiece/ui/web/index.mjs +15 -4
  277. package/dist/testYourself/index.js +13 -13
  278. package/dist/testYourself/index.mjs +2 -2
  279. package/dist/types-B-hOccQw.d.mts +122 -0
  280. package/dist/types-B8rGXc4e.d.mts +38 -0
  281. package/dist/types-Cg89HGz2.d.ts +38 -0
  282. package/dist/types-CvKvpyN8.d.mts +48 -0
  283. package/dist/types-CvKvpyN8.d.ts +48 -0
  284. package/dist/types-Dy6x2gJW.d.ts +122 -0
  285. package/dist/universalFile/server/index.js +11 -11
  286. package/dist/universalFile/server/index.mjs +4 -4
  287. package/package.json +101 -1
  288. package/dist/UniversalFileService-336GFY6N.mjs +0 -6
  289. package/dist/UniversalFileService-J6ET6KZK.js +0 -15
  290. package/dist/chunk-622Y6LTH.mjs.map +0 -1
  291. package/dist/chunk-CYTXGBP2.js.map +0 -1
  292. package/dist/chunk-GVVS4IMM.mjs +0 -302
  293. package/dist/chunk-GVVS4IMM.mjs.map +0 -1
  294. package/dist/chunk-PONZPO3U.mjs.map +0 -1
  295. package/dist/chunk-WC5QFO3T.js +0 -314
  296. package/dist/chunk-WC5QFO3T.js.map +0 -1
  297. package/dist/chunk-ZRWED7Q6.js.map +0 -1
@@ -1,12 +1,14 @@
1
1
  import { init_hooks, init_masterpiecesService, init_masterpiecesConfigService, init_cartService, init_bookingService, init_bookingAdminService, init_cartHistoryService, init_CartContext, useCartContext, useDeadlinePopup, useBooking, useBookingForm, updateCollectionOrder, moveCollectionDown, moveCollectionUp, getAllCollections, updateArtworkOrder, moveArtworkDown, moveArtworkUp, getArtworksByCollection, BookingService, useMasterpieces, CartProvider, useMasterpiecesConfig, useBookingAdmin, getConfig, createCategory } from './chunk-OX6VMQDU.mjs';
2
2
  import { normalizeHomeTabConfig, getCategoryDisplayName, buildDefaultHomeTabConfig } from './chunk-MFG2Y6UR.mjs';
3
+ import { AuthGuard, UserMenu } from './chunk-ITRIXMXF.mjs';
4
+ import { AuthProvider, useAuth } from './chunk-ESLY72VI.mjs';
3
5
  import { UniversalExportClient, UniversalExportButton } from './chunk-TGNUEULF.mjs';
4
- import { Card, Badge, CardContent, Button, GenericOrderManager, Modal, CardHeader, CardTitle, CardDescription, Tabs, TabsList, TabsTrigger, TabsContent, Label, Input, Textarea, Select, SelectTrigger, SelectValue, SelectContent, SelectItem } from './chunk-622Y6LTH.mjs';
6
+ import { Card, Badge, CardContent, GenericOrderManager, Modal, CardHeader, CardTitle, CardDescription, Tabs, TabsList, TabsTrigger, TabsContent, Label, Textarea, Select, SelectTrigger, SelectValue, SelectContent, SelectItem } from './chunk-5BLZEVWK.mjs';
7
+ import { Button, Input } from './chunk-L7GQNY54.mjs';
5
8
  import { __require } from './chunk-WMJKH4XE.mjs';
6
- import React29, { createContext, useState, useEffect, useRef, useCallback, useMemo, useContext } from 'react';
7
- import { Check, Minus, Plus, ShoppingCart, ShoppingBag, Book, Eye, ImageIcon, ChevronLeft, ChevronRight, Grid3x3, X, Trash2, Calendar, Clock, CheckCircle, Package, Search, RefreshCw, Download, XCircle, Save, Edit, Settings, AlertTriangle, EyeOff, Database, Loader, ArrowLeft, User, Image, Info, History, Bell, Cog, RotateCcw, ArrowUpDown, LogOut, LogIn, Lock, Phone } from 'lucide-react';
9
+ import React23, { useState, useEffect, useRef, useCallback, useMemo } from 'react';
10
+ import { Check, Minus, Plus, ShoppingCart, ShoppingBag, Book, Eye, ImageIcon, ChevronLeft, ChevronRight, Grid3x3, X, Trash2, Calendar, Clock, CheckCircle, Package, Search, RefreshCw, Download, XCircle, Save, Edit, Settings, AlertTriangle, EyeOff, Database, Loader, ArrowLeft, User, Image, Info, History, Bell, Cog, RotateCcw, ArrowUpDown } from 'lucide-react';
8
11
  import Link from 'next/link';
9
- import { createPortal } from 'react-dom';
10
12
 
11
13
  // src/showmasterpiece/ui/web/components/AddToCartButton.tsx
12
14
  init_hooks();
@@ -80,9 +82,9 @@ var AddToCartButton = ({
80
82
  console.error("\u66F4\u65B0\u8D2D\u7269\u8F66\u6570\u91CF\u5931\u8D25:", error);
81
83
  }
82
84
  };
83
- return /* @__PURE__ */ React29.createElement("div", { className: `flex flex-col gap-2 ${className}` }, isInCart ? (
85
+ return /* @__PURE__ */ React23.createElement("div", { className: `flex flex-col gap-2 ${className}` }, isInCart ? (
84
86
  // 已在购物车中的状态
85
- /* @__PURE__ */ React29.createElement("div", { className: "flex flex-col gap-2" }, /* @__PURE__ */ React29.createElement(
87
+ /* @__PURE__ */ React23.createElement("div", { className: "flex flex-col gap-2" }, /* @__PURE__ */ React23.createElement(
86
88
  "button",
87
89
  {
88
90
  onClick: (e) => {
@@ -91,9 +93,9 @@ var AddToCartButton = ({
91
93
  disabled: loading,
92
94
  className: `flex items-center justify-center gap-2 rounded-lg font-medium transition-colors ${sizeStyles[size]} bg-green-600 text-white disabled:opacity-50`
93
95
  },
94
- /* @__PURE__ */ React29.createElement(Check, { size: 16 }),
95
- /* @__PURE__ */ React29.createElement("span", null, "\u5DF2\u52A0\u5165\u8D2D\u7269\u8F66")
96
- ), /* @__PURE__ */ React29.createElement("div", { className: "flex items-center justify-center border border-gray-300 rounded-lg bg-white" }, /* @__PURE__ */ React29.createElement(
96
+ /* @__PURE__ */ React23.createElement(Check, { size: 16 }),
97
+ /* @__PURE__ */ React23.createElement("span", null, "\u5DF2\u52A0\u5165\u8D2D\u7269\u8F66")
98
+ ), /* @__PURE__ */ React23.createElement("div", { className: "flex items-center justify-center border border-gray-300 rounded-lg bg-white" }, /* @__PURE__ */ React23.createElement(
97
99
  "button",
98
100
  {
99
101
  onClick: (e) => {
@@ -103,8 +105,8 @@ var AddToCartButton = ({
103
105
  disabled: loading,
104
106
  className: "px-2 py-1 hover:bg-gray-50 disabled:opacity-50 transition-colors"
105
107
  },
106
- /* @__PURE__ */ React29.createElement(Minus, { size: 14 })
107
- ), /* @__PURE__ */ React29.createElement("span", { className: "px-3 py-1 min-w-[2rem] text-center font-medium" }, currentQuantity), /* @__PURE__ */ React29.createElement(
108
+ /* @__PURE__ */ React23.createElement(Minus, { size: 14 })
109
+ ), /* @__PURE__ */ React23.createElement("span", { className: "px-3 py-1 min-w-[2rem] text-center font-medium" }, currentQuantity), /* @__PURE__ */ React23.createElement(
108
110
  "button",
109
111
  {
110
112
  onClick: (e) => {
@@ -114,11 +116,11 @@ var AddToCartButton = ({
114
116
  disabled: loading,
115
117
  className: "px-2 py-1 hover:bg-gray-50 transition-colors"
116
118
  },
117
- /* @__PURE__ */ React29.createElement(Plus, { size: 14 })
119
+ /* @__PURE__ */ React23.createElement(Plus, { size: 14 })
118
120
  )))
119
121
  ) : (
120
122
  // 未在购物车中的状态
121
- /* @__PURE__ */ React29.createElement("div", { className: "flex flex-col gap-2" }, showQuantitySelector && /* @__PURE__ */ React29.createElement("div", { className: "flex items-center justify-center border border-gray-300 rounded-lg bg-white" }, /* @__PURE__ */ React29.createElement(
123
+ /* @__PURE__ */ React23.createElement("div", { className: "flex flex-col gap-2" }, showQuantitySelector && /* @__PURE__ */ React23.createElement("div", { className: "flex items-center justify-center border border-gray-300 rounded-lg bg-white" }, /* @__PURE__ */ React23.createElement(
122
124
  "button",
123
125
  {
124
126
  onClick: (e) => {
@@ -128,8 +130,8 @@ var AddToCartButton = ({
128
130
  disabled: quantity <= 1 || loading,
129
131
  className: "px-2 py-1 hover:bg-gray-50 disabled:opacity-50 transition-colors"
130
132
  },
131
- /* @__PURE__ */ React29.createElement(Minus, { size: 14 })
132
- ), /* @__PURE__ */ React29.createElement("span", { className: "px-3 py-1 min-w-[2rem] text-center font-medium" }, quantity), /* @__PURE__ */ React29.createElement(
133
+ /* @__PURE__ */ React23.createElement(Minus, { size: 14 })
134
+ ), /* @__PURE__ */ React23.createElement("span", { className: "px-3 py-1 min-w-[2rem] text-center font-medium" }, quantity), /* @__PURE__ */ React23.createElement(
133
135
  "button",
134
136
  {
135
137
  onClick: (e) => {
@@ -139,8 +141,8 @@ var AddToCartButton = ({
139
141
  disabled: loading,
140
142
  className: "px-2 py-1 hover:bg-gray-50 transition-colors"
141
143
  },
142
- /* @__PURE__ */ React29.createElement(Plus, { size: 14 })
143
- )), /* @__PURE__ */ React29.createElement(
144
+ /* @__PURE__ */ React23.createElement(Plus, { size: 14 })
145
+ )), /* @__PURE__ */ React23.createElement(
144
146
  "button",
145
147
  {
146
148
  onClick: (e) => {
@@ -150,8 +152,8 @@ var AddToCartButton = ({
150
152
  disabled: loading,
151
153
  className: `flex items-center justify-center gap-2 rounded-lg font-medium transition-colors ${sizeStyles[size]} bg-blue-600 text-white hover:bg-blue-700 disabled:opacity-50`
152
154
  },
153
- /* @__PURE__ */ React29.createElement(ShoppingCart, { size: 16 }),
154
- /* @__PURE__ */ React29.createElement("span", null, "\u52A0\u5165\u8D2D\u7269\u8F66")
155
+ /* @__PURE__ */ React23.createElement(ShoppingCart, { size: 16 }),
156
+ /* @__PURE__ */ React23.createElement("span", null, "\u52A0\u5165\u8D2D\u7269\u8F66")
155
157
  ))
156
158
  ));
157
159
  };
@@ -200,8 +202,8 @@ var CollectionCard = ({
200
202
  setImageLoading(false);
201
203
  setImageError(true);
202
204
  };
203
- const renderImageLoading = () => /* @__PURE__ */ React29.createElement("div", { className: "absolute inset-0 flex items-center justify-center" }, /* @__PURE__ */ React29.createElement("div", { className: "w-8 h-8 border-2 border-prussian-blue-300 border-t-moonstone rounded-full animate-spin" }));
204
- const renderImageError = () => /* @__PURE__ */ React29.createElement("div", { className: "absolute inset-0 flex flex-col items-center justify-center gap-2 text-prussian-blue-600 text-sm text-center p-4" }, /* @__PURE__ */ React29.createElement(ImageIcon, { size: 32, className: "text-prussian-blue-500" }), /* @__PURE__ */ React29.createElement("span", null, "\u56FE\u7247\u52A0\u8F7D\u5931\u8D25"));
205
+ const renderImageLoading = () => /* @__PURE__ */ React23.createElement("div", { className: "absolute inset-0 flex items-center justify-center" }, /* @__PURE__ */ React23.createElement("div", { className: "w-8 h-8 border-2 border-prussian-blue-300 border-t-moonstone rounded-full animate-spin" }));
206
+ const renderImageError = () => /* @__PURE__ */ React23.createElement("div", { className: "absolute inset-0 flex flex-col items-center justify-center gap-2 text-prussian-blue-600 text-sm text-center p-4" }, /* @__PURE__ */ React23.createElement(ImageIcon, { size: 32, className: "text-prussian-blue-500" }), /* @__PURE__ */ React23.createElement("span", null, "\u56FE\u7247\u52A0\u8F7D\u5931\u8D25"));
205
207
  const renderCoverImage = () => {
206
208
  if (!shouldLoadImage) {
207
209
  return renderImageLoading();
@@ -210,7 +212,7 @@ var CollectionCard = ({
210
212
  return renderImageError();
211
213
  }
212
214
  console.log("\u{1F50D} [CollectionCard] \u6E32\u67D3\u5C01\u9762\u56FE\u7247:", collection.coverImage, "collection:", collection);
213
- return /* @__PURE__ */ React29.createElement(
215
+ return /* @__PURE__ */ React23.createElement(
214
216
  "img",
215
217
  {
216
218
  src: collection.coverImage,
@@ -231,22 +233,22 @@ var CollectionCard = ({
231
233
  return `\xA5${price}`;
232
234
  };
233
235
  const isProduct = collection.category !== "collection" /* COLLECTION */;
234
- return /* @__PURE__ */ React29.createElement(
236
+ return /* @__PURE__ */ React23.createElement(
235
237
  Card,
236
238
  {
237
239
  ref: cardRef,
238
240
  className: `overflow-hidden transition-all duration-300 transform w-full max-w-sm mx-auto group border-prussian-blue-200/30 shadow-lg hover:shadow-xl bg-gradient-to-br from-white to-prussian-blue-900/5 ${!(collection.pages && collection.pages.length > 0) ? "cursor-default" : "cursor-pointer hover:-translate-y-1 hover:shadow-moonstone/20 hover:border-moonstone/40"}`,
239
241
  onClick: collection.pages && collection.pages.length > 0 ? () => onSelect(collection) : void 0
240
242
  },
241
- /* @__PURE__ */ React29.createElement("div", { className: "relative w-full bg-gradient-to-br from-prussian-blue-900/5 to-oxford-blue-100/10 flex items-center justify-center overflow-hidden aspect-[1/1.414]" }, /* @__PURE__ */ React29.createElement("div", { className: "absolute inset-0 bg-gradient-to-t from-rich-black/60 via-oxford-blue/20 to-transparent opacity-0 group-hover:opacity-100 transition-opacity duration-300" }), /* @__PURE__ */ React29.createElement("div", { className: "absolute bottom-4 left-4 z-10" }, /* @__PURE__ */ React29.createElement(
243
+ /* @__PURE__ */ React23.createElement("div", { className: "relative w-full bg-gradient-to-br from-prussian-blue-900/5 to-oxford-blue-100/10 flex items-center justify-center overflow-hidden aspect-[1/1.414]" }, /* @__PURE__ */ React23.createElement("div", { className: "absolute inset-0 bg-gradient-to-t from-rich-black/60 via-oxford-blue/20 to-transparent opacity-0 group-hover:opacity-100 transition-opacity duration-300" }), /* @__PURE__ */ React23.createElement("div", { className: "absolute bottom-4 left-4 z-10" }, /* @__PURE__ */ React23.createElement(
242
244
  Badge,
243
245
  {
244
246
  variant: "secondary",
245
247
  className: "bg-moonstone/90 text-white backdrop-blur-sm border-none hover:bg-cerulean/90 transition-colors shadow-lg"
246
248
  },
247
- isProduct ? /* @__PURE__ */ React29.createElement(React29.Fragment, null, /* @__PURE__ */ React29.createElement(ShoppingBag, { size: 16, className: "mr-1" }), "\u5546\u54C1") : /* @__PURE__ */ React29.createElement(React29.Fragment, null, /* @__PURE__ */ React29.createElement(Book, { size: 16, className: "mr-1" }), collection.pages.length, " \u9875")
249
+ isProduct ? /* @__PURE__ */ React23.createElement(React23.Fragment, null, /* @__PURE__ */ React23.createElement(ShoppingBag, { size: 16, className: "mr-1" }), "\u5546\u54C1") : /* @__PURE__ */ React23.createElement(React23.Fragment, null, /* @__PURE__ */ React23.createElement(Book, { size: 16, className: "mr-1" }), collection.pages.length, " \u9875")
248
250
  )), renderCoverImage()),
249
- /* @__PURE__ */ React29.createElement(CardContent, { className: "p-6" }, /* @__PURE__ */ React29.createElement("h3", { className: "text-xl font-bold text-rich-black mb-2 line-clamp-2 group-hover:text-moonstone transition-colors" }, collection.title), /* @__PURE__ */ React29.createElement("p", { className: "text-prussian-blue-600 text-sm mb-1" }, "\u7F16\u53F7\uFF1A", collection.number), collection.category && /* @__PURE__ */ React29.createElement("p", { className: "text-prussian-blue-600 text-sm mb-1" }, "\u5206\u7C7B\uFF1A", collection.category.displayName), /* @__PURE__ */ React29.createElement("p", { className: "text-prussian-blue-700 text-sm mb-2 font-medium" }, "\u4EF7\u683C\uFF1A", formatPrice(collection.price)), collection.description && /* @__PURE__ */ React29.createElement("p", { className: "text-prussian-blue-500 text-sm mb-4 line-clamp-2" }, collection.description), /* @__PURE__ */ React29.createElement("div", { className: "flex gap-2" }, collection.pages && collection.pages.length > 0 && /* @__PURE__ */ React29.createElement(
251
+ /* @__PURE__ */ React23.createElement(CardContent, { className: "p-6" }, /* @__PURE__ */ React23.createElement("h3", { className: "text-xl font-bold text-rich-black mb-2 line-clamp-2 group-hover:text-moonstone transition-colors" }, collection.title), /* @__PURE__ */ React23.createElement("p", { className: "text-prussian-blue-600 text-sm mb-1" }, "\u7F16\u53F7\uFF1A", collection.number), collection.category && /* @__PURE__ */ React23.createElement("p", { className: "text-prussian-blue-600 text-sm mb-1" }, "\u5206\u7C7B\uFF1A", collection.category.displayName), /* @__PURE__ */ React23.createElement("p", { className: "text-prussian-blue-700 text-sm mb-2 font-medium" }, "\u4EF7\u683C\uFF1A", formatPrice(collection.price)), collection.description && /* @__PURE__ */ React23.createElement("p", { className: "text-prussian-blue-500 text-sm mb-4 line-clamp-2" }, collection.description), /* @__PURE__ */ React23.createElement("div", { className: "flex gap-2" }, collection.pages && collection.pages.length > 0 && /* @__PURE__ */ React23.createElement(
250
252
  Button,
251
253
  {
252
254
  className: "flex-1 bg-gradient-to-r from-moonstone to-cerulean hover:from-cerulean hover:to-moonstone text-white gap-2 shadow-lg transition-all duration-300 hover:shadow-moonstone/30",
@@ -255,9 +257,9 @@ var CollectionCard = ({
255
257
  onSelect(collection);
256
258
  }
257
259
  },
258
- /* @__PURE__ */ React29.createElement(Eye, { size: 16 }),
260
+ /* @__PURE__ */ React23.createElement(Eye, { size: 16 }),
259
261
  "\u67E5\u770B\u8BE6\u60C5"
260
- ), /* @__PURE__ */ React29.createElement(
262
+ ), /* @__PURE__ */ React23.createElement(
261
263
  AddToCartButton,
262
264
  {
263
265
  collection,
@@ -324,14 +326,14 @@ var ArtworkViewer = ({
324
326
  }
325
327
  }, 100);
326
328
  };
327
- return /* @__PURE__ */ React29.createElement(Card, { className: "w-full max-w-full box-border mx-auto shadow-lg border-prussian-blue-200/30 bg-gradient-to-br from-white to-prussian-blue-900/5" }, /* @__PURE__ */ React29.createElement(CardContent, { className: "p-6 lg:p-5 md:p-4 sm:p-3" }, /* @__PURE__ */ React29.createElement("div", { className: "relative min-h-[600px] flex items-center justify-center bg-gradient-to-br from-prussian-blue-900/5 to-oxford-blue-100/10 rounded-lg overflow-hidden lg:min-h-[500px] md:min-h-[450px] sm:min-h-[350px] sm:rounded-md" }, imageLoading && /* @__PURE__ */ React29.createElement("div", { className: "absolute top-1/2 left-1/2 transform -translate-x-1/2 -translate-y-1/2 flex flex-col items-center justify-center gap-4 text-prussian-blue-600 text-center p-4" }, /* @__PURE__ */ React29.createElement("div", { className: "w-10 h-10 border-[3px] border-prussian-blue-300 border-t-moonstone rounded-full animate-spin" }), /* @__PURE__ */ React29.createElement("p", null, "\u52A0\u8F7D\u4E2D...")), imageError && /* @__PURE__ */ React29.createElement("div", { className: "absolute top-1/2 left-1/2 transform -translate-x-1/2 -translate-y-1/2 flex flex-col items-center justify-center gap-4 text-prussian-blue-600 text-center p-4" }, /* @__PURE__ */ React29.createElement(ImageIcon, { size: 48, className: "text-prussian-blue-500" }), /* @__PURE__ */ React29.createElement("p", null, "\u56FE\u7247\u52A0\u8F7D\u5931\u8D25"), /* @__PURE__ */ React29.createElement(
329
+ return /* @__PURE__ */ React23.createElement(Card, { className: "w-full max-w-full box-border mx-auto shadow-lg border-prussian-blue-200/30 bg-gradient-to-br from-white to-prussian-blue-900/5" }, /* @__PURE__ */ React23.createElement(CardContent, { className: "p-6 lg:p-5 md:p-4 sm:p-3" }, /* @__PURE__ */ React23.createElement("div", { className: "relative min-h-[600px] flex items-center justify-center bg-gradient-to-br from-prussian-blue-900/5 to-oxford-blue-100/10 rounded-lg overflow-hidden lg:min-h-[500px] md:min-h-[450px] sm:min-h-[350px] sm:rounded-md" }, imageLoading && /* @__PURE__ */ React23.createElement("div", { className: "absolute top-1/2 left-1/2 transform -translate-x-1/2 -translate-y-1/2 flex flex-col items-center justify-center gap-4 text-prussian-blue-600 text-center p-4" }, /* @__PURE__ */ React23.createElement("div", { className: "w-10 h-10 border-[3px] border-prussian-blue-300 border-t-moonstone rounded-full animate-spin" }), /* @__PURE__ */ React23.createElement("p", null, "\u52A0\u8F7D\u4E2D...")), imageError && /* @__PURE__ */ React23.createElement("div", { className: "absolute top-1/2 left-1/2 transform -translate-x-1/2 -translate-y-1/2 flex flex-col items-center justify-center gap-4 text-prussian-blue-600 text-center p-4" }, /* @__PURE__ */ React23.createElement(ImageIcon, { size: 48, className: "text-prussian-blue-500" }), /* @__PURE__ */ React23.createElement("p", null, "\u56FE\u7247\u52A0\u8F7D\u5931\u8D25"), /* @__PURE__ */ React23.createElement(
328
330
  Button,
329
331
  {
330
332
  onClick: retryImageLoad,
331
333
  className: "bg-gradient-to-r from-moonstone to-cerulean hover:from-cerulean hover:to-moonstone text-white shadow-lg transition-all duration-300"
332
334
  },
333
335
  "\u91CD\u8BD5"
334
- )), imageSrc && !imageError && /* @__PURE__ */ React29.createElement(
336
+ )), imageSrc && !imageError && /* @__PURE__ */ React23.createElement(
335
337
  "img",
336
338
  {
337
339
  src: imageSrc,
@@ -341,7 +343,7 @@ var ArtworkViewer = ({
341
343
  onLoad: handleImageLoad,
342
344
  onError: handleImageError
343
345
  }
344
- ), /* @__PURE__ */ React29.createElement(
346
+ ), /* @__PURE__ */ React23.createElement(
345
347
  Button,
346
348
  {
347
349
  onClick: onPrev,
@@ -351,8 +353,8 @@ var ArtworkViewer = ({
351
353
  className: "absolute top-1/2 left-4 transform -translate-y-1/2 bg-white/95 backdrop-blur-sm shadow-lg hover:bg-moonstone-900/10 hover:scale-105 hover:shadow-xl disabled:opacity-40 z-10 rounded-full p-3 border-prussian-blue-200 hover:border-moonstone/40 md:left-3 sm:left-2",
352
354
  "aria-label": "\u4E0A\u4E00\u5F20"
353
355
  },
354
- /* @__PURE__ */ React29.createElement(ChevronLeft, { size: 24 })
355
- ), /* @__PURE__ */ React29.createElement(
356
+ /* @__PURE__ */ React23.createElement(ChevronLeft, { size: 24 })
357
+ ), /* @__PURE__ */ React23.createElement(
356
358
  Button,
357
359
  {
358
360
  onClick: onNext,
@@ -362,8 +364,8 @@ var ArtworkViewer = ({
362
364
  className: "absolute top-1/2 right-4 transform -translate-y-1/2 bg-white/95 backdrop-blur-sm shadow-lg hover:bg-moonstone-900/10 hover:scale-105 hover:shadow-xl disabled:opacity-40 z-10 rounded-full p-3 border-prussian-blue-200 hover:border-moonstone/40 md:right-3 sm:right-2",
363
365
  "aria-label": "\u4E0B\u4E00\u5F20"
364
366
  },
365
- /* @__PURE__ */ React29.createElement(ChevronRight, { size: 24 })
366
- )), /* @__PURE__ */ React29.createElement("div", { className: "mt-6 w-full max-w-full box-border lg:mt-5 md:mt-5 sm:mt-4" }, /* @__PURE__ */ React29.createElement("div", { className: "space-y-3" }, /* @__PURE__ */ React29.createElement("h2", { className: "text-2xl font-bold text-rich-black leading-tight lg:text-xl md:text-xl sm:text-lg sm:leading-5" }, artwork.title), /* @__PURE__ */ React29.createElement("div", { className: "flex flex-wrap gap-2" }, /* @__PURE__ */ React29.createElement(Badge, { variant: "outline", className: "border-moonstone/30 text-cerulean bg-moonstone-900/5" }, "\u7F16\u53F7\uFF1A", artwork.number), artwork.createdTime && /* @__PURE__ */ React29.createElement(Badge, { variant: "outline", className: "border-moonstone/30 text-cerulean bg-moonstone-900/5" }, "\u521B\u4F5C\u65F6\u95F4\uFF1A", artwork.createdTime), artwork.theme && /* @__PURE__ */ React29.createElement(Badge, { variant: "outline", className: "border-moonstone/30 text-cerulean bg-moonstone-900/5" }, "\u4E3B\u9898\uFF1A", artwork.theme)), artwork.description && /* @__PURE__ */ React29.createElement("p", { className: "text-base text-prussian-blue-700 leading-relaxed sm:text-sm sm:leading-6" }, artwork.description)))));
367
+ /* @__PURE__ */ React23.createElement(ChevronRight, { size: 24 })
368
+ )), /* @__PURE__ */ React23.createElement("div", { className: "mt-6 w-full max-w-full box-border lg:mt-5 md:mt-5 sm:mt-4" }, /* @__PURE__ */ React23.createElement("div", { className: "space-y-3" }, /* @__PURE__ */ React23.createElement("h2", { className: "text-2xl font-bold text-rich-black leading-tight lg:text-xl md:text-xl sm:text-lg sm:leading-5" }, artwork.title), /* @__PURE__ */ React23.createElement("div", { className: "flex flex-wrap gap-2" }, /* @__PURE__ */ React23.createElement(Badge, { variant: "outline", className: "border-moonstone/30 text-cerulean bg-moonstone-900/5" }, "\u7F16\u53F7\uFF1A", artwork.number), artwork.createdTime && /* @__PURE__ */ React23.createElement(Badge, { variant: "outline", className: "border-moonstone/30 text-cerulean bg-moonstone-900/5" }, "\u521B\u4F5C\u65F6\u95F4\uFF1A", artwork.createdTime), artwork.theme && /* @__PURE__ */ React23.createElement(Badge, { variant: "outline", className: "border-moonstone/30 text-cerulean bg-moonstone-900/5" }, "\u4E3B\u9898\uFF1A", artwork.theme)), artwork.description && /* @__PURE__ */ React23.createElement("p", { className: "text-base text-prussian-blue-700 leading-relaxed sm:text-sm sm:leading-6" }, artwork.description)))));
367
369
  };
368
370
  var MobileAlbumViewer = ({
369
371
  artworks,
@@ -520,9 +522,9 @@ var MobileAlbumViewer = ({
520
522
  setShowThumbnails(false);
521
523
  };
522
524
  if (!currentArtwork) {
523
- return /* @__PURE__ */ React29.createElement("div", { className: "flex items-center justify-center w-full h-full text-white" }, /* @__PURE__ */ React29.createElement("span", null, "\u6682\u65E0\u53EF\u5C55\u793A\u7684\u4F5C\u54C1"));
525
+ return /* @__PURE__ */ React23.createElement("div", { className: "flex items-center justify-center w-full h-full text-white" }, /* @__PURE__ */ React23.createElement("span", null, "\u6682\u65E0\u53EF\u5C55\u793A\u7684\u4F5C\u54C1"));
524
526
  }
525
- return /* @__PURE__ */ React29.createElement("div", { className: "relative w-full h-full bg-gradient-to-br from-rich-black to-oxford-blue" }, /* @__PURE__ */ React29.createElement(
527
+ return /* @__PURE__ */ React23.createElement("div", { className: "relative w-full h-full bg-gradient-to-br from-rich-black to-oxford-blue" }, /* @__PURE__ */ React23.createElement(
526
528
  "div",
527
529
  {
528
530
  ref: imageContainerRef,
@@ -531,8 +533,8 @@ var MobileAlbumViewer = ({
531
533
  onTouchMove: handleTouchMove,
532
534
  onTouchEnd: handleTouchEnd
533
535
  },
534
- imageLoading && /* @__PURE__ */ React29.createElement("div", { className: "absolute inset-0 flex items-center justify-center bg-rich-black/50" }, /* @__PURE__ */ React29.createElement("div", { className: "flex flex-col items-center gap-4 text-white" }, /* @__PURE__ */ React29.createElement("div", { className: "w-10 h-10 border-[3px] border-prussian-blue-300 border-t-moonstone rounded-full animate-spin" }), /* @__PURE__ */ React29.createElement("p", null, "\u52A0\u8F7D\u4E2D..."))),
535
- imageError && /* @__PURE__ */ React29.createElement("div", { className: "absolute inset-0 flex items-center justify-center bg-rich-black/50" }, /* @__PURE__ */ React29.createElement("div", { className: "flex flex-col items-center gap-4 text-white text-center p-4" }, /* @__PURE__ */ React29.createElement(ImageIcon, { size: 48, className: "text-moonstone" }), /* @__PURE__ */ React29.createElement("p", null, "\u56FE\u7247\u52A0\u8F7D\u5931\u8D25"), /* @__PURE__ */ React29.createElement(
536
+ imageLoading && /* @__PURE__ */ React23.createElement("div", { className: "absolute inset-0 flex items-center justify-center bg-rich-black/50" }, /* @__PURE__ */ React23.createElement("div", { className: "flex flex-col items-center gap-4 text-white" }, /* @__PURE__ */ React23.createElement("div", { className: "w-10 h-10 border-[3px] border-prussian-blue-300 border-t-moonstone rounded-full animate-spin" }), /* @__PURE__ */ React23.createElement("p", null, "\u52A0\u8F7D\u4E2D..."))),
537
+ imageError && /* @__PURE__ */ React23.createElement("div", { className: "absolute inset-0 flex items-center justify-center bg-rich-black/50" }, /* @__PURE__ */ React23.createElement("div", { className: "flex flex-col items-center gap-4 text-white text-center p-4" }, /* @__PURE__ */ React23.createElement(ImageIcon, { size: 48, className: "text-moonstone" }), /* @__PURE__ */ React23.createElement("p", null, "\u56FE\u7247\u52A0\u8F7D\u5931\u8D25"), /* @__PURE__ */ React23.createElement(
536
538
  Button,
537
539
  {
538
540
  onClick: retryImageLoad,
@@ -540,7 +542,7 @@ var MobileAlbumViewer = ({
540
542
  },
541
543
  "\u91CD\u8BD5"
542
544
  ))),
543
- imageSrc && !imageError && /* @__PURE__ */ React29.createElement(
545
+ imageSrc && !imageError && /* @__PURE__ */ React23.createElement(
544
546
  "img",
545
547
  {
546
548
  src: imageSrc,
@@ -555,7 +557,7 @@ var MobileAlbumViewer = ({
555
557
  onError: handleImageError
556
558
  }
557
559
  ),
558
- /* @__PURE__ */ React29.createElement(
560
+ /* @__PURE__ */ React23.createElement(
559
561
  Button,
560
562
  {
561
563
  onClick: onPrev,
@@ -565,9 +567,9 @@ var MobileAlbumViewer = ({
565
567
  className: "absolute top-1/2 left-4 transform -translate-y-1/2 bg-rich-black/70 backdrop-blur-sm text-white border-moonstone/30 hover:bg-oxford-blue/80 disabled:opacity-40 z-10 rounded-full w-12 h-12 shadow-lg",
566
568
  "aria-label": "\u4E0A\u4E00\u5F20"
567
569
  },
568
- /* @__PURE__ */ React29.createElement(ChevronLeft, { size: 24 })
570
+ /* @__PURE__ */ React23.createElement(ChevronLeft, { size: 24 })
569
571
  ),
570
- /* @__PURE__ */ React29.createElement(
572
+ /* @__PURE__ */ React23.createElement(
571
573
  Button,
572
574
  {
573
575
  onClick: onNext,
@@ -577,9 +579,9 @@ var MobileAlbumViewer = ({
577
579
  className: "absolute top-1/2 right-4 transform -translate-y-1/2 bg-rich-black/70 backdrop-blur-sm text-white border-moonstone/30 hover:bg-oxford-blue/80 disabled:opacity-40 z-10 rounded-full w-12 h-12 shadow-lg",
578
580
  "aria-label": "\u4E0B\u4E00\u5F20"
579
581
  },
580
- /* @__PURE__ */ React29.createElement(ChevronRight, { size: 24 })
582
+ /* @__PURE__ */ React23.createElement(ChevronRight, { size: 24 })
581
583
  ),
582
- /* @__PURE__ */ React29.createElement("div", { className: "absolute top-0 left-0 right-0 bg-gradient-to-b from-rich-black/80 via-oxford-blue/40 to-transparent p-4 z-20" }, /* @__PURE__ */ React29.createElement("div", { className: "flex items-center justify-between text-white" }, /* @__PURE__ */ React29.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ React29.createElement(Badge, { variant: "secondary", className: "bg-moonstone/30 text-white border-moonstone/50 backdrop-blur-sm" }, currentIndex + 1, " / ", artworks.length)), /* @__PURE__ */ React29.createElement(
584
+ /* @__PURE__ */ React23.createElement("div", { className: "absolute top-0 left-0 right-0 bg-gradient-to-b from-rich-black/80 via-oxford-blue/40 to-transparent p-4 z-20" }, /* @__PURE__ */ React23.createElement("div", { className: "flex items-center justify-between text-white" }, /* @__PURE__ */ React23.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ React23.createElement(Badge, { variant: "secondary", className: "bg-moonstone/30 text-white border-moonstone/50 backdrop-blur-sm" }, currentIndex + 1, " / ", artworks.length)), /* @__PURE__ */ React23.createElement(
583
585
  Button,
584
586
  {
585
587
  onClick: toggleThumbnails,
@@ -588,10 +590,10 @@ var MobileAlbumViewer = ({
588
590
  className: "text-white hover:bg-moonstone/30 rounded-full w-10 h-10 backdrop-blur-sm",
589
591
  "aria-label": "\u663E\u793A\u7F29\u7565\u56FE"
590
592
  },
591
- /* @__PURE__ */ React29.createElement(Grid3x3, { size: 20 })
593
+ /* @__PURE__ */ React23.createElement(Grid3x3, { size: 20 })
592
594
  ))),
593
- /* @__PURE__ */ React29.createElement("div", { className: "absolute bottom-0 left-0 right-0 bg-gradient-to-t from-rich-black/80 via-oxford-blue/40 to-transparent p-4 z-20" }, /* @__PURE__ */ React29.createElement("div", { className: "text-white" }, /* @__PURE__ */ React29.createElement("h2", { className: "text-xl font-bold mb-2" }, currentArtwork.title), /* @__PURE__ */ React29.createElement("div", { className: "flex flex-wrap gap-2 mb-2" }, /* @__PURE__ */ React29.createElement(Badge, { variant: "secondary", className: "bg-moonstone/30 text-white border-moonstone/50 backdrop-blur-sm" }, "\u7F16\u53F7\uFF1A", currentArtwork.number), currentArtwork.createdTime && /* @__PURE__ */ React29.createElement(Badge, { variant: "secondary", className: "bg-moonstone/30 text-white border-moonstone/50 backdrop-blur-sm" }, "\u521B\u4F5C\u65F6\u95F4\uFF1A", currentArtwork.createdTime), currentArtwork.theme && /* @__PURE__ */ React29.createElement(Badge, { variant: "secondary", className: "bg-moonstone/30 text-white border-moonstone/50 backdrop-blur-sm" }, "\u4E3B\u9898\uFF1A", currentArtwork.theme)), currentArtwork.description && /* @__PURE__ */ React29.createElement("p", { className: "text-sm text-white/90 leading-relaxed" }, currentArtwork.description)))
594
- ), showThumbnails && /* @__PURE__ */ React29.createElement("div", { className: "absolute inset-0 bg-gradient-to-br from-rich-black/95 to-oxford-blue/90 backdrop-blur-sm z-30 flex flex-col" }, /* @__PURE__ */ React29.createElement("div", { className: "flex items-center justify-between p-4 border-b border-moonstone/30" }, /* @__PURE__ */ React29.createElement("h3", { className: "text-white text-lg font-semibold" }, "\u9009\u62E9\u56FE\u7247"), /* @__PURE__ */ React29.createElement(
595
+ /* @__PURE__ */ React23.createElement("div", { className: "absolute bottom-0 left-0 right-0 bg-gradient-to-t from-rich-black/80 via-oxford-blue/40 to-transparent p-4 z-20" }, /* @__PURE__ */ React23.createElement("div", { className: "text-white" }, /* @__PURE__ */ React23.createElement("h2", { className: "text-xl font-bold mb-2" }, currentArtwork.title), /* @__PURE__ */ React23.createElement("div", { className: "flex flex-wrap gap-2 mb-2" }, /* @__PURE__ */ React23.createElement(Badge, { variant: "secondary", className: "bg-moonstone/30 text-white border-moonstone/50 backdrop-blur-sm" }, "\u7F16\u53F7\uFF1A", currentArtwork.number), currentArtwork.createdTime && /* @__PURE__ */ React23.createElement(Badge, { variant: "secondary", className: "bg-moonstone/30 text-white border-moonstone/50 backdrop-blur-sm" }, "\u521B\u4F5C\u65F6\u95F4\uFF1A", currentArtwork.createdTime), currentArtwork.theme && /* @__PURE__ */ React23.createElement(Badge, { variant: "secondary", className: "bg-moonstone/30 text-white border-moonstone/50 backdrop-blur-sm" }, "\u4E3B\u9898\uFF1A", currentArtwork.theme)), currentArtwork.description && /* @__PURE__ */ React23.createElement("p", { className: "text-sm text-white/90 leading-relaxed" }, currentArtwork.description)))
596
+ ), showThumbnails && /* @__PURE__ */ React23.createElement("div", { className: "absolute inset-0 bg-gradient-to-br from-rich-black/95 to-oxford-blue/90 backdrop-blur-sm z-30 flex flex-col" }, /* @__PURE__ */ React23.createElement("div", { className: "flex items-center justify-between p-4 border-b border-moonstone/30" }, /* @__PURE__ */ React23.createElement("h3", { className: "text-white text-lg font-semibold" }, "\u9009\u62E9\u56FE\u7247"), /* @__PURE__ */ React23.createElement(
595
597
  Button,
596
598
  {
597
599
  onClick: () => setShowThumbnails(false),
@@ -599,21 +601,21 @@ var MobileAlbumViewer = ({
599
601
  variant: "ghost",
600
602
  className: "text-white hover:bg-moonstone/30 rounded-full"
601
603
  },
602
- /* @__PURE__ */ React29.createElement(X, { size: 20 })
603
- )), /* @__PURE__ */ React29.createElement(
604
+ /* @__PURE__ */ React23.createElement(X, { size: 20 })
605
+ )), /* @__PURE__ */ React23.createElement(
604
606
  "div",
605
607
  {
606
608
  ref: thumbnailsRef,
607
609
  className: "flex-1 p-4 overflow-y-auto grid grid-cols-3 sm:grid-cols-4 md:grid-cols-5 lg:grid-cols-6 gap-2 content-start"
608
610
  },
609
- artworks.map((artwork, index) => /* @__PURE__ */ React29.createElement(
611
+ artworks.map((artwork, index) => /* @__PURE__ */ React23.createElement(
610
612
  "button",
611
613
  {
612
614
  key: artwork.id,
613
615
  onClick: () => selectThumbnail(index),
614
616
  className: `relative aspect-square rounded-lg overflow-hidden border-2 transition-all ${index === currentIndex ? "border-moonstone scale-95 shadow-lg shadow-moonstone/30" : "border-prussian-blue-300/30 hover:border-moonstone/50"}`
615
617
  },
616
- /* @__PURE__ */ React29.createElement(
618
+ /* @__PURE__ */ React23.createElement(
617
619
  "img",
618
620
  {
619
621
  src: artwork.image || `/api/showmasterpiece/collections/${collectionId}/artworks/${artwork.id}/image`,
@@ -621,8 +623,8 @@ var MobileAlbumViewer = ({
621
623
  className: "w-full h-full object-cover"
622
624
  }
623
625
  ),
624
- index === currentIndex && /* @__PURE__ */ React29.createElement("div", { className: "absolute inset-0 bg-moonstone/20 flex items-center justify-center" }, /* @__PURE__ */ React29.createElement("div", { className: "w-6 h-6 bg-moonstone rounded-full flex items-center justify-center shadow-lg" }, /* @__PURE__ */ React29.createElement("div", { className: "w-2 h-2 bg-white rounded-full" }))),
625
- /* @__PURE__ */ React29.createElement("div", { className: "absolute bottom-0 left-0 right-0 bg-gradient-to-t from-rich-black/80 to-transparent p-1" }, /* @__PURE__ */ React29.createElement("div", { className: "text-white text-xs text-center truncate" }, index + 1))
626
+ index === currentIndex && /* @__PURE__ */ React23.createElement("div", { className: "absolute inset-0 bg-moonstone/20 flex items-center justify-center" }, /* @__PURE__ */ React23.createElement("div", { className: "w-6 h-6 bg-moonstone rounded-full flex items-center justify-center shadow-lg" }, /* @__PURE__ */ React23.createElement("div", { className: "w-2 h-2 bg-white rounded-full" }))),
627
+ /* @__PURE__ */ React23.createElement("div", { className: "absolute bottom-0 left-0 right-0 bg-gradient-to-t from-rich-black/80 to-transparent p-1" }, /* @__PURE__ */ React23.createElement("div", { className: "text-white text-xs text-center truncate" }, index + 1))
626
628
  ))
627
629
  )));
628
630
  };
@@ -688,7 +690,7 @@ var ThumbnailItem = ({ page, index, isActive, onSelect }) => {
688
690
  setImageLoading(false);
689
691
  setImageError(true);
690
692
  };
691
- return /* @__PURE__ */ React29.createElement(
693
+ return /* @__PURE__ */ React23.createElement(
692
694
  "button",
693
695
  {
694
696
  id: `thumbnail-${page.id}`,
@@ -696,7 +698,7 @@ var ThumbnailItem = ({ page, index, isActive, onSelect }) => {
696
698
  className: `w-full p-2 border-2 border-prussian-blue-200/30 rounded-lg bg-gradient-to-br from-white to-prussian-blue-900/5 cursor-pointer transition-all duration-200 min-h-[44px] flex items-center justify-center hover:border-moonstone/40 hover:bg-moonstone-900/10 focus:outline-none focus:ring-2 focus:ring-moonstone focus:ring-offset-2 lg:flex-shrink-0 lg:min-w-[220px] lg:max-w-[220px] lg:p-3.5 md:min-w-[200px] md:max-w-[200px] md:p-3 md:min-h-12 sm:min-w-[180px] sm:max-w-[180px] sm:p-2.5 sm:rounded-md ${isActive ? "border-moonstone bg-moonstone-900/10 shadow-lg shadow-moonstone/20" : ""}`,
697
699
  "aria-label": `\u67E5\u770B\u7B2C ${index + 1} \u9875\uFF1A${page.title}`
698
700
  },
699
- /* @__PURE__ */ React29.createElement("div", { className: "relative w-16 h-20 flex items-center justify-center bg-gradient-to-br from-prussian-blue-900/5 to-oxford-blue-100/10 rounded border border-prussian-blue-200/20 overflow-hidden flex-shrink-0 lg:w-11 lg:h-15 md:w-10 md:h-14 sm:w-9 sm:h-13 sm:rounded-sm" }, imageLoading && /* @__PURE__ */ React29.createElement("div", { className: "absolute top-1/2 left-1/2 transform -translate-x-1/2 -translate-y-1/2 flex items-center justify-center" }, /* @__PURE__ */ React29.createElement("div", { className: "w-4 h-4 border border-prussian-blue-300 border-t-moonstone rounded-full animate-spin" })), imageError && /* @__PURE__ */ React29.createElement("div", { className: "absolute top-1/2 left-1/2 transform -translate-x-1/2 -translate-y-1/2 flex items-center justify-center text-prussian-blue-400 text-xs" }, /* @__PURE__ */ React29.createElement(ImageIcon, { size: 20 })), imageSrc && !imageError && /* @__PURE__ */ React29.createElement(
701
+ /* @__PURE__ */ React23.createElement("div", { className: "relative w-16 h-20 flex items-center justify-center bg-gradient-to-br from-prussian-blue-900/5 to-oxford-blue-100/10 rounded border border-prussian-blue-200/20 overflow-hidden flex-shrink-0 lg:w-11 lg:h-15 md:w-10 md:h-14 sm:w-9 sm:h-13 sm:rounded-sm" }, imageLoading && /* @__PURE__ */ React23.createElement("div", { className: "absolute top-1/2 left-1/2 transform -translate-x-1/2 -translate-y-1/2 flex items-center justify-center" }, /* @__PURE__ */ React23.createElement("div", { className: "w-4 h-4 border border-prussian-blue-300 border-t-moonstone rounded-full animate-spin" })), imageError && /* @__PURE__ */ React23.createElement("div", { className: "absolute top-1/2 left-1/2 transform -translate-x-1/2 -translate-y-1/2 flex items-center justify-center text-prussian-blue-400 text-xs" }, /* @__PURE__ */ React23.createElement(ImageIcon, { size: 20 })), imageSrc && !imageError && /* @__PURE__ */ React23.createElement(
700
702
  "img",
701
703
  {
702
704
  src: imageSrc,
@@ -706,7 +708,7 @@ var ThumbnailItem = ({ page, index, isActive, onSelect }) => {
706
708
  onError: handleImageError
707
709
  }
708
710
  )),
709
- /* @__PURE__ */ React29.createElement("div", { className: "text-left flex-1 min-w-0 lg:flex lg:flex-col lg:gap-1 lg:ml-3.5 md:ml-3 sm:ml-2.5" }, /* @__PURE__ */ React29.createElement("h4", { className: "font-medium text-sm text-rich-black mb-1 overflow-hidden text-ellipsis whitespace-nowrap leading-tight lg:text-xs md:text-xs sm:text-xs sm:mb-0.5" }, page.title), /* @__PURE__ */ React29.createElement("p", { className: "text-xs text-prussian-blue-600 mb-0 overflow-hidden text-ellipsis whitespace-nowrap lg:text-xs md:text-xs sm:text-xs" }, page.number))
711
+ /* @__PURE__ */ React23.createElement("div", { className: "text-left flex-1 min-w-0 lg:flex lg:flex-col lg:gap-1 lg:ml-3.5 md:ml-3 sm:ml-2.5" }, /* @__PURE__ */ React23.createElement("h4", { className: "font-medium text-sm text-rich-black mb-1 overflow-hidden text-ellipsis whitespace-nowrap leading-tight lg:text-xs md:text-xs sm:text-xs sm:mb-0.5" }, page.title), /* @__PURE__ */ React23.createElement("p", { className: "text-xs text-prussian-blue-600 mb-0 overflow-hidden text-ellipsis whitespace-nowrap lg:text-xs md:text-xs sm:text-xs" }, page.number))
710
712
  );
711
713
  };
712
714
  var ThumbnailSidebar = ({
@@ -714,7 +716,7 @@ var ThumbnailSidebar = ({
714
716
  currentPage,
715
717
  onPageSelect
716
718
  }) => {
717
- return /* @__PURE__ */ React29.createElement("div", { className: "bg-gradient-to-br from-white to-prussian-blue-900/5 rounded-2xl shadow-2xl border border-prussian-blue-200/30 p-6 w-full max-w-full box-border mb-0 lg:p-5 lg:mb-4 md:p-4 md:mb-4 md:rounded-xl sm:p-3.5 sm:rounded-xl" }, /* @__PURE__ */ React29.createElement("div", { className: "flex justify-between items-center mb-4 lg:mb-3.5 md:mb-3 sm:mb-2.5" }, /* @__PURE__ */ React29.createElement("h3", { className: "text-lg font-semibold text-rich-black mb-0 leading-tight lg:text-base md:text-base sm:text-sm" }, "\u4F5C\u54C1\u5217\u8868"), /* @__PURE__ */ React29.createElement("span", { className: "text-sm text-cerulean font-medium lg:text-sm md:text-sm sm:text-xs" }, currentPage + 1, " / ", pages.length)), /* @__PURE__ */ React29.createElement("div", { className: "flex flex-col gap-3 max-h-[600px] overflow-y-auto scrollbar-thin scrollbar-thumb-moonstone/50 scrollbar-track-prussian-blue-100/30 lg:flex-row lg:gap-4 lg:max-h-none lg:overflow-x-auto lg:overflow-y-hidden lg:pb-2.5 lg:scroll-snap-x lg:scroll-smooth md:gap-3.5 md:pb-2 sm:gap-2.5 sm:pb-1.5" }, pages.map((page, index) => /* @__PURE__ */ React29.createElement(
719
+ return /* @__PURE__ */ React23.createElement("div", { className: "bg-gradient-to-br from-white to-prussian-blue-900/5 rounded-2xl shadow-2xl border border-prussian-blue-200/30 p-6 w-full max-w-full box-border mb-0 lg:p-5 lg:mb-4 md:p-4 md:mb-4 md:rounded-xl sm:p-3.5 sm:rounded-xl" }, /* @__PURE__ */ React23.createElement("div", { className: "flex justify-between items-center mb-4 lg:mb-3.5 md:mb-3 sm:mb-2.5" }, /* @__PURE__ */ React23.createElement("h3", { className: "text-lg font-semibold text-rich-black mb-0 leading-tight lg:text-base md:text-base sm:text-sm" }, "\u4F5C\u54C1\u5217\u8868"), /* @__PURE__ */ React23.createElement("span", { className: "text-sm text-cerulean font-medium lg:text-sm md:text-sm sm:text-xs" }, currentPage + 1, " / ", pages.length)), /* @__PURE__ */ React23.createElement("div", { className: "flex flex-col gap-3 max-h-[600px] overflow-y-auto scrollbar-thin scrollbar-thumb-moonstone/50 scrollbar-track-prussian-blue-100/30 lg:flex-row lg:gap-4 lg:max-h-none lg:overflow-x-auto lg:overflow-y-hidden lg:pb-2.5 lg:scroll-snap-x lg:scroll-smooth md:gap-3.5 md:pb-2 sm:gap-2.5 sm:pb-1.5" }, pages.map((page, index) => /* @__PURE__ */ React23.createElement(
718
720
  ThumbnailItem,
719
721
  {
720
722
  key: page.id,
@@ -1242,7 +1244,7 @@ async function refreshFileServiceConfig() {
1242
1244
  const ossConfig = config?.storageProviders?.["aliyun-oss"];
1243
1245
  if (ossConfig && ossConfig.enabled) {
1244
1246
  console.log("\u{1F504} [ShowMasterpiece] \u91CD\u65B0\u521D\u59CB\u5316OSS Provider\u4EE5\u5E94\u7528\u65B0\u914D\u7F6E");
1245
- const { UniversalFileService } = await import('./UniversalFileService-336GFY6N.mjs');
1247
+ const { UniversalFileService } = await import('./UniversalFileService-O3IEROBN.mjs');
1246
1248
  const fileService = new UniversalFileService(config);
1247
1249
  await fileService.initialize();
1248
1250
  await fileService.reinitializeStorageProviders?.();
@@ -1573,7 +1575,7 @@ function CollectionOrderManagerV2({
1573
1575
  }
1574
1576
  };
1575
1577
  const renderCollection = (collection, index, isFirst, isLast) => {
1576
- return /* @__PURE__ */ React29.createElement("div", { style: { display: "flex", alignItems: "center", gap: "12px", flex: 1 } }, /* @__PURE__ */ React29.createElement(
1578
+ return /* @__PURE__ */ React23.createElement("div", { style: { display: "flex", alignItems: "center", gap: "12px", flex: 1 } }, /* @__PURE__ */ React23.createElement(
1577
1579
  "img",
1578
1580
  {
1579
1581
  src: collection.coverImage || "/placeholder-image.png",
@@ -1586,7 +1588,7 @@ function CollectionOrderManagerV2({
1586
1588
  border: "1px solid #e5e7eb"
1587
1589
  }
1588
1590
  }
1589
- ), /* @__PURE__ */ React29.createElement("div", { style: { flex: 1, minWidth: 0 } }, /* @__PURE__ */ React29.createElement("h4", { style: {
1591
+ ), /* @__PURE__ */ React23.createElement("div", { style: { flex: 1, minWidth: 0 } }, /* @__PURE__ */ React23.createElement("h4", { style: {
1590
1592
  margin: "0 0 4px 0",
1591
1593
  color: "#1f2937",
1592
1594
  fontSize: "16px",
@@ -1594,14 +1596,14 @@ function CollectionOrderManagerV2({
1594
1596
  whiteSpace: "nowrap",
1595
1597
  overflow: "hidden",
1596
1598
  textOverflow: "ellipsis"
1597
- } }, collection.title), /* @__PURE__ */ React29.createElement("p", { style: {
1599
+ } }, collection.title), /* @__PURE__ */ React23.createElement("p", { style: {
1598
1600
  fontSize: 13,
1599
1601
  color: "#64748b",
1600
1602
  marginBottom: 2,
1601
1603
  whiteSpace: "nowrap",
1602
1604
  overflow: "hidden",
1603
1605
  textOverflow: "ellipsis"
1604
- } }, "\u7F16\u53F7\uFF1A", collection.number), collection.category && /* @__PURE__ */ React29.createElement("span", { style: {
1606
+ } }, "\u7F16\u53F7\uFF1A", collection.number), collection.category && /* @__PURE__ */ React23.createElement("span", { style: {
1605
1607
  display: "inline-block",
1606
1608
  padding: "2px 8px",
1607
1609
  background: "#dbeafe",
@@ -1611,7 +1613,7 @@ function CollectionOrderManagerV2({
1611
1613
  borderRadius: "12px"
1612
1614
  } }, collection.category)));
1613
1615
  };
1614
- return /* @__PURE__ */ React29.createElement(
1616
+ return /* @__PURE__ */ React23.createElement(
1615
1617
  GenericOrderManager,
1616
1618
  {
1617
1619
  operations,
@@ -1680,7 +1682,7 @@ function ArtworkOrderManagerV2({
1680
1682
  }
1681
1683
  };
1682
1684
  const renderArtwork = (artwork, index, isFirst, isLast) => {
1683
- return /* @__PURE__ */ React29.createElement("div", { style: { display: "flex", alignItems: "center", gap: "12px", flex: 1 } }, /* @__PURE__ */ React29.createElement("div", { style: {
1685
+ return /* @__PURE__ */ React23.createElement("div", { style: { display: "flex", alignItems: "center", gap: "12px", flex: 1 } }, /* @__PURE__ */ React23.createElement("div", { style: {
1684
1686
  display: "flex",
1685
1687
  alignItems: "center",
1686
1688
  justifyContent: "center",
@@ -1691,7 +1693,7 @@ function ArtworkOrderManagerV2({
1691
1693
  overflow: "hidden",
1692
1694
  background: "#f9fafb",
1693
1695
  flexShrink: 0
1694
- } }, artwork.image ? /* @__PURE__ */ React29.createElement(
1696
+ } }, artwork.image ? /* @__PURE__ */ React23.createElement(
1695
1697
  "img",
1696
1698
  {
1697
1699
  src: artwork.image,
@@ -1710,7 +1712,7 @@ function ArtworkOrderManagerV2({
1710
1712
  }
1711
1713
  }
1712
1714
  }
1713
- ) : /* @__PURE__ */ React29.createElement("div", { style: {
1715
+ ) : /* @__PURE__ */ React23.createElement("div", { style: {
1714
1716
  display: "flex",
1715
1717
  alignItems: "center",
1716
1718
  justifyContent: "center",
@@ -1718,7 +1720,7 @@ function ArtworkOrderManagerV2({
1718
1720
  height: "100%",
1719
1721
  color: "#9ca3af",
1720
1722
  background: "#f3f4f6"
1721
- } }, /* @__PURE__ */ React29.createElement(Image, { size: 24 })), /* @__PURE__ */ React29.createElement("div", { className: "placeholder", style: {
1723
+ } }, /* @__PURE__ */ React23.createElement(Image, { size: 24 })), /* @__PURE__ */ React23.createElement("div", { className: "placeholder", style: {
1722
1724
  display: "none",
1723
1725
  alignItems: "center",
1724
1726
  justifyContent: "center",
@@ -1726,7 +1728,7 @@ function ArtworkOrderManagerV2({
1726
1728
  height: "100%",
1727
1729
  color: "#9ca3af",
1728
1730
  background: "#f3f4f6"
1729
- } }, /* @__PURE__ */ React29.createElement(Image, { size: 24 }))), /* @__PURE__ */ React29.createElement("div", { style: { flex: 1, minWidth: 0 } }, /* @__PURE__ */ React29.createElement("h4", { style: {
1731
+ } }, /* @__PURE__ */ React23.createElement(Image, { size: 24 }))), /* @__PURE__ */ React23.createElement("div", { style: { flex: 1, minWidth: 0 } }, /* @__PURE__ */ React23.createElement("h4", { style: {
1730
1732
  margin: "0 0 4px 0",
1731
1733
  color: "#1f2937",
1732
1734
  fontSize: "16px",
@@ -1735,21 +1737,21 @@ function ArtworkOrderManagerV2({
1735
1737
  whiteSpace: "nowrap",
1736
1738
  overflow: "hidden",
1737
1739
  textOverflow: "ellipsis"
1738
- } }, artwork.title), /* @__PURE__ */ React29.createElement("p", { style: {
1740
+ } }, artwork.title), /* @__PURE__ */ React23.createElement("p", { style: {
1739
1741
  margin: "0 0 4px 0",
1740
1742
  color: "#6b7280",
1741
1743
  fontSize: "14px",
1742
1744
  whiteSpace: "nowrap",
1743
1745
  overflow: "hidden",
1744
1746
  textOverflow: "ellipsis"
1745
- } }, "\u7F16\u53F7\uFF1A", artwork.number), artwork.createdTime && /* @__PURE__ */ React29.createElement("p", { style: {
1747
+ } }, "\u7F16\u53F7\uFF1A", artwork.number), artwork.createdTime && /* @__PURE__ */ React23.createElement("p", { style: {
1746
1748
  margin: "0 0 4px 0",
1747
1749
  color: "#6b7280",
1748
1750
  fontSize: "14px",
1749
1751
  whiteSpace: "nowrap",
1750
1752
  overflow: "hidden",
1751
1753
  textOverflow: "ellipsis"
1752
- } }, "\u521B\u4F5C\u65F6\u95F4\uFF1A", artwork.createdTime), artwork.theme && /* @__PURE__ */ React29.createElement("span", { style: {
1754
+ } }, "\u521B\u4F5C\u65F6\u95F4\uFF1A", artwork.createdTime), artwork.theme && /* @__PURE__ */ React23.createElement("span", { style: {
1753
1755
  display: "inline-block",
1754
1756
  background: "#dbeafe",
1755
1757
  color: "#1d4ed8",
@@ -1759,7 +1761,7 @@ function ArtworkOrderManagerV2({
1759
1761
  marginRight: "6px"
1760
1762
  } }, artwork.theme)));
1761
1763
  };
1762
- return /* @__PURE__ */ React29.createElement(
1764
+ return /* @__PURE__ */ React23.createElement(
1763
1765
  GenericOrderManager,
1764
1766
  {
1765
1767
  operations,
@@ -1838,14 +1840,14 @@ var UniversalImageUpload = ({
1838
1840
  };
1839
1841
  const handleDivClick = (e) => {
1840
1842
  };
1841
- return /* @__PURE__ */ React29.createElement(
1843
+ return /* @__PURE__ */ React23.createElement(
1842
1844
  "div",
1843
1845
  {
1844
1846
  className: "border-2 border-dashed border-slate-300 rounded-xl p-8 text-center hover:border-blue-400 hover:bg-slate-50 transition-all duration-200 cursor-pointer",
1845
1847
  onClick: handleDivClick,
1846
1848
  style: { position: "relative", zIndex: 1 }
1847
1849
  },
1848
- /* @__PURE__ */ React29.createElement(
1850
+ /* @__PURE__ */ React23.createElement(
1849
1851
  "input",
1850
1852
  {
1851
1853
  type: "file",
@@ -1865,7 +1867,7 @@ var UniversalImageUpload = ({
1865
1867
  }
1866
1868
  }
1867
1869
  ),
1868
- /* @__PURE__ */ React29.createElement("div", { className: "text-slate-500 pointer-events-none" }, uploading ? /* @__PURE__ */ React29.createElement(React29.Fragment, null, /* @__PURE__ */ React29.createElement("div", { className: "animate-spin w-10 h-10 border-3 border-blue-500 border-t-transparent rounded-full mx-auto mb-3" }), /* @__PURE__ */ React29.createElement("p", { className: "text-sm font-medium" }, "\u6B63\u5728\u4E0A\u4F20\u5230\u4E91\u5B58\u50A8...")) : /* @__PURE__ */ React29.createElement(React29.Fragment, null, /* @__PURE__ */ React29.createElement("svg", { className: "w-16 h-16 mx-auto mb-4 text-slate-400", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24" }, /* @__PURE__ */ React29.createElement("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 1.5, d: "M7 16a4 4 0 01-.88-7.903A5 5 0 1115.9 6L16 6a5 5 0 011 9.9M15 13l-3-3m0 0l-3 3m3-3v12" })), /* @__PURE__ */ React29.createElement("p", { className: "text-lg font-semibold text-slate-700 mb-2" }, placeholder), /* @__PURE__ */ React29.createElement("p", { className: "text-sm text-slate-600 mb-1" }, "\u652F\u6301 JPG\u3001PNG\u3001GIF\u3001WebP \u683C\u5F0F"), /* @__PURE__ */ React29.createElement("p", { className: "text-xs text-blue-600" }, "\u81EA\u52A8\u4E0A\u4F20\u5230\u4E91\u5B58\u50A8\uFF0C\u4EAB\u53D7CDN\u52A0\u901F")))
1870
+ /* @__PURE__ */ React23.createElement("div", { className: "text-slate-500 pointer-events-none" }, uploading ? /* @__PURE__ */ React23.createElement(React23.Fragment, null, /* @__PURE__ */ React23.createElement("div", { className: "animate-spin w-10 h-10 border-3 border-blue-500 border-t-transparent rounded-full mx-auto mb-3" }), /* @__PURE__ */ React23.createElement("p", { className: "text-sm font-medium" }, "\u6B63\u5728\u4E0A\u4F20\u5230\u4E91\u5B58\u50A8...")) : /* @__PURE__ */ React23.createElement(React23.Fragment, null, /* @__PURE__ */ React23.createElement("svg", { className: "w-16 h-16 mx-auto mb-4 text-slate-400", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24" }, /* @__PURE__ */ React23.createElement("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 1.5, d: "M7 16a4 4 0 01-.88-7.903A5 5 0 1115.9 6L16 6a5 5 0 011 9.9M15 13l-3-3m0 0l-3 3m3-3v12" })), /* @__PURE__ */ React23.createElement("p", { className: "text-lg font-semibold text-slate-700 mb-2" }, placeholder), /* @__PURE__ */ React23.createElement("p", { className: "text-sm text-slate-600 mb-1" }, "\u652F\u6301 JPG\u3001PNG\u3001GIF\u3001WebP \u683C\u5F0F"), /* @__PURE__ */ React23.createElement("p", { className: "text-xs text-blue-600" }, "\u81EA\u52A8\u4E0A\u4F20\u5230\u4E91\u5B58\u50A8\uFF0C\u4EAB\u53D7CDN\u52A0\u901F")))
1869
1871
  );
1870
1872
  };
1871
1873
  const renderPreview = () => {
@@ -1873,7 +1875,7 @@ var UniversalImageUpload = ({
1873
1875
  return null;
1874
1876
  }
1875
1877
  const imageUrl = value || (fileId ? `/api/universal-file/${fileId}` : "");
1876
- return /* @__PURE__ */ React29.createElement("div", { className: "mt-4" }, /* @__PURE__ */ React29.createElement("div", { className: "relative inline-block group" }, /* @__PURE__ */ React29.createElement(
1878
+ return /* @__PURE__ */ React23.createElement("div", { className: "mt-4" }, /* @__PURE__ */ React23.createElement("div", { className: "relative inline-block group" }, /* @__PURE__ */ React23.createElement(
1877
1879
  "img",
1878
1880
  {
1879
1881
  src: imageUrl,
@@ -1883,7 +1885,7 @@ var UniversalImageUpload = ({
1883
1885
  e.currentTarget.style.display = "none";
1884
1886
  }
1885
1887
  }
1886
- ), /* @__PURE__ */ React29.createElement(
1888
+ ), /* @__PURE__ */ React23.createElement(
1887
1889
  "button",
1888
1890
  {
1889
1891
  type: "button",
@@ -1891,10 +1893,10 @@ var UniversalImageUpload = ({
1891
1893
  className: "absolute -top-3 -right-3 bg-red-500 text-white rounded-full w-7 h-7 flex items-center justify-center hover:bg-red-600 transition-colors shadow-lg opacity-0 group-hover:opacity-100",
1892
1894
  title: "\u5220\u9664\u56FE\u7247"
1893
1895
  },
1894
- /* @__PURE__ */ React29.createElement("svg", { className: "w-4 h-4", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24" }, /* @__PURE__ */ React29.createElement("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M6 18L18 6M6 6l12 12" }))
1896
+ /* @__PURE__ */ React23.createElement("svg", { className: "w-4 h-4", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24" }, /* @__PURE__ */ React23.createElement("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M6 18L18 6M6 6l12 12" }))
1895
1897
  )));
1896
1898
  };
1897
- return /* @__PURE__ */ React29.createElement("div", { className }, label && /* @__PURE__ */ React29.createElement("label", { className: "block text-sm font-medium text-slate-700 mb-3" }, label), fileId && /* @__PURE__ */ React29.createElement("div", { className: "mb-3 p-3 bg-emerald-50 border border-emerald-200 rounded-lg text-sm text-emerald-700" }, /* @__PURE__ */ React29.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ React29.createElement("svg", { className: "w-4 h-4", fill: "currentColor", viewBox: "0 0 20 20" }, /* @__PURE__ */ React29.createElement("path", { fillRule: "evenodd", d: "M10 18a8 8 0 100-16 8 8 0 000 16zm3.707-9.293a1 1 0 00-1.414-1.414L9 10.586 7.707 9.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4z", clipRule: "evenodd" })), /* @__PURE__ */ React29.createElement("span", null, "\u56FE\u7247\u5DF2\u4E0A\u4F20\u5230\u4E91\u5B58\u50A8"))), renderUploadArea(), renderPreview(), /* @__PURE__ */ React29.createElement("div", { className: "mt-3 text-xs text-slate-500" }, businessType === "cover" ? "\u5C01\u9762\u56FE\u7247" : "\u4F5C\u54C1\u56FE\u7247", "\u5C06\u81EA\u52A8\u4E0A\u4F20\u5230\u4E91\u5B58\u50A8\u5E76\u901A\u8FC7CDN\u5206\u53D1\uFF0C\u63D0\u4F9B\u66F4\u597D\u7684\u6027\u80FD\u548C\u7528\u6237\u4F53\u9A8C"));
1899
+ return /* @__PURE__ */ React23.createElement("div", { className }, label && /* @__PURE__ */ React23.createElement("label", { className: "block text-sm font-medium text-slate-700 mb-3" }, label), fileId && /* @__PURE__ */ React23.createElement("div", { className: "mb-3 p-3 bg-emerald-50 border border-emerald-200 rounded-lg text-sm text-emerald-700" }, /* @__PURE__ */ React23.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ React23.createElement("svg", { className: "w-4 h-4", fill: "currentColor", viewBox: "0 0 20 20" }, /* @__PURE__ */ React23.createElement("path", { fillRule: "evenodd", d: "M10 18a8 8 0 100-16 8 8 0 000 16zm3.707-9.293a1 1 0 00-1.414-1.414L9 10.586 7.707 9.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4z", clipRule: "evenodd" })), /* @__PURE__ */ React23.createElement("span", null, "\u56FE\u7247\u5DF2\u4E0A\u4F20\u5230\u4E91\u5B58\u50A8"))), renderUploadArea(), renderPreview(), /* @__PURE__ */ React23.createElement("div", { className: "mt-3 text-xs text-slate-500" }, businessType === "cover" ? "\u5C01\u9762\u56FE\u7247" : "\u4F5C\u54C1\u56FE\u7247", "\u5C06\u81EA\u52A8\u4E0A\u4F20\u5230\u4E91\u5B58\u50A8\u5E76\u901A\u8FC7CDN\u5206\u53D1\uFF0C\u63D0\u4F9B\u66F4\u597D\u7684\u6027\u80FD\u548C\u7528\u6237\u4F53\u9A8C"));
1898
1900
  };
1899
1901
 
1900
1902
  // src/showmasterpiece/ui/web/components/CartPage.tsx
@@ -2040,7 +2042,7 @@ var CartPage = ({ userId, onClose }) => {
2040
2042
  }
2041
2043
  };
2042
2044
  if (checkoutSuccess) {
2043
- return /* @__PURE__ */ React29.createElement("div", { className: "max-w-2xl mx-auto p-6" }, /* @__PURE__ */ React29.createElement("div", { className: "text-center" }, /* @__PURE__ */ React29.createElement("div", { className: "text-green-500 text-6xl mb-4" }, "\u2705"), /* @__PURE__ */ React29.createElement("h2", { className: "text-2xl font-bold text-gray-900 mb-4" }, "\u6279\u91CF\u9884\u8BA2\u63D0\u4EA4\u6210\u529F\uFF01"), /* @__PURE__ */ React29.createElement("p", { className: "text-gray-600 mb-6" }, "\u60A8\u7684\u6279\u91CF\u9884\u8BA2\u5DF2\u6210\u529F\u63D0\u4EA4\uFF0C\u6211\u4EEC\u4F1A\u5C3D\u5FEB\u4E0E\u60A8\u8054\u7CFB\u786E\u8BA4\u3002"), /* @__PURE__ */ React29.createElement(
2045
+ return /* @__PURE__ */ React23.createElement("div", { className: "max-w-2xl mx-auto p-6" }, /* @__PURE__ */ React23.createElement("div", { className: "text-center" }, /* @__PURE__ */ React23.createElement("div", { className: "text-green-500 text-6xl mb-4" }, "\u2705"), /* @__PURE__ */ React23.createElement("h2", { className: "text-2xl font-bold text-gray-900 mb-4" }, "\u6279\u91CF\u9884\u8BA2\u63D0\u4EA4\u6210\u529F\uFF01"), /* @__PURE__ */ React23.createElement("p", { className: "text-gray-600 mb-6" }, "\u60A8\u7684\u6279\u91CF\u9884\u8BA2\u5DF2\u6210\u529F\u63D0\u4EA4\uFF0C\u6211\u4EEC\u4F1A\u5C3D\u5FEB\u4E0E\u60A8\u8054\u7CFB\u786E\u8BA4\u3002"), /* @__PURE__ */ React23.createElement(
2044
2046
  "button",
2045
2047
  {
2046
2048
  onClick: handleContinueShopping,
@@ -2049,45 +2051,45 @@ var CartPage = ({ userId, onClose }) => {
2049
2051
  "\u7EE7\u7EED\u8D2D\u7269"
2050
2052
  )));
2051
2053
  }
2052
- return /* @__PURE__ */ React29.createElement("div", { className: "max-w-4xl mx-auto p-3 sm:p-6" }, /* @__PURE__ */ React29.createElement("div", { className: "text-center mb-6 sm:mb-8" }, /* @__PURE__ */ React29.createElement("h1", { className: "text-2xl sm:text-3xl font-bold text-gray-900 mb-2" }, "\u8D2D\u7269\u8F66"), /* @__PURE__ */ React29.createElement("p", { className: "text-sm sm:text-base text-gray-600" }, "\u7BA1\u7406\u60A8\u9009\u62E9\u7684\u8C37\u5B50\uFF0C\u786E\u8BA4\u540E\u6279\u91CF\u9884\u8BA2")), error && /* @__PURE__ */ React29.createElement("div", { className: "bg-red-50 border border-red-200 rounded-lg p-3 sm:p-4 mb-4 sm:mb-6" }, /* @__PURE__ */ React29.createElement("div", { className: "flex" }, /* @__PURE__ */ React29.createElement("div", { className: "text-red-400 mr-3 flex-shrink-0" }, /* @__PURE__ */ React29.createElement("svg", { className: "w-5 h-5", fill: "currentColor", viewBox: "0 0 20 20" }, /* @__PURE__ */ React29.createElement("path", { fillRule: "evenodd", d: "M10 18a8 8 0 100-16 8 8 0 000 16zM8.707 7.293a1 1 0 00-1.414 1.414L8.586 10l-1.293 1.293a1 1 0 101.414 1.414L10 11.414l1.293 1.293a1 1 0 001.414-1.414L11.414 10l1.293-1.293a1 1 0 00-1.414-1.414L10 8.586 8.707 7.293z", clipRule: "evenodd" }))), /* @__PURE__ */ React29.createElement("div", { className: "min-w-0 flex-1" }, /* @__PURE__ */ React29.createElement("h3", { className: "text-sm font-medium text-red-800" }, "\u64CD\u4F5C\u5931\u8D25"), /* @__PURE__ */ React29.createElement("p", { className: "text-sm text-red-700 mt-1 break-words" }, error)))), cart.items.length === 0 && !loading && /* @__PURE__ */ React29.createElement("div", { className: "text-center py-8 sm:py-12" }, /* @__PURE__ */ React29.createElement(ShoppingBag, { className: "w-12 h-12 sm:w-16 sm:h-16 text-gray-400 mx-auto mb-4" }), /* @__PURE__ */ React29.createElement("h3", { className: "text-base sm:text-lg font-medium text-gray-900 mb-2" }, "\u8D2D\u7269\u8F66\u4E3A\u7A7A"), /* @__PURE__ */ React29.createElement("p", { className: "text-sm sm:text-base text-gray-600 mb-6" }, "\u60A8\u8FD8\u6CA1\u6709\u6DFB\u52A0\u4EFB\u4F55\u8C37\u5B50\u5230\u8D2D\u7269\u8F66"), /* @__PURE__ */ React29.createElement(
2054
+ return /* @__PURE__ */ React23.createElement("div", { className: "max-w-4xl mx-auto p-3 sm:p-6" }, /* @__PURE__ */ React23.createElement("div", { className: "text-center mb-6 sm:mb-8" }, /* @__PURE__ */ React23.createElement("h1", { className: "text-2xl sm:text-3xl font-bold text-gray-900 mb-2" }, "\u8D2D\u7269\u8F66"), /* @__PURE__ */ React23.createElement("p", { className: "text-sm sm:text-base text-gray-600" }, "\u7BA1\u7406\u60A8\u9009\u62E9\u7684\u8C37\u5B50\uFF0C\u786E\u8BA4\u540E\u6279\u91CF\u9884\u8BA2")), error && /* @__PURE__ */ React23.createElement("div", { className: "bg-red-50 border border-red-200 rounded-lg p-3 sm:p-4 mb-4 sm:mb-6" }, /* @__PURE__ */ React23.createElement("div", { className: "flex" }, /* @__PURE__ */ React23.createElement("div", { className: "text-red-400 mr-3 flex-shrink-0" }, /* @__PURE__ */ React23.createElement("svg", { className: "w-5 h-5", fill: "currentColor", viewBox: "0 0 20 20" }, /* @__PURE__ */ React23.createElement("path", { fillRule: "evenodd", d: "M10 18a8 8 0 100-16 8 8 0 000 16zM8.707 7.293a1 1 0 00-1.414 1.414L8.586 10l-1.293 1.293a1 1 0 101.414 1.414L10 11.414l1.293 1.293a1 1 0 001.414-1.414L11.414 10l1.293-1.293a1 1 0 00-1.414-1.414L10 8.586 8.707 7.293z", clipRule: "evenodd" }))), /* @__PURE__ */ React23.createElement("div", { className: "min-w-0 flex-1" }, /* @__PURE__ */ React23.createElement("h3", { className: "text-sm font-medium text-red-800" }, "\u64CD\u4F5C\u5931\u8D25"), /* @__PURE__ */ React23.createElement("p", { className: "text-sm text-red-700 mt-1 break-words" }, error)))), cart.items.length === 0 && !loading && /* @__PURE__ */ React23.createElement("div", { className: "text-center py-8 sm:py-12" }, /* @__PURE__ */ React23.createElement(ShoppingBag, { className: "w-12 h-12 sm:w-16 sm:h-16 text-gray-400 mx-auto mb-4" }), /* @__PURE__ */ React23.createElement("h3", { className: "text-base sm:text-lg font-medium text-gray-900 mb-2" }, "\u8D2D\u7269\u8F66\u4E3A\u7A7A"), /* @__PURE__ */ React23.createElement("p", { className: "text-sm sm:text-base text-gray-600 mb-6" }, "\u60A8\u8FD8\u6CA1\u6709\u6DFB\u52A0\u4EFB\u4F55\u8C37\u5B50\u5230\u8D2D\u7269\u8F66"), /* @__PURE__ */ React23.createElement(
2053
2055
  "button",
2054
2056
  {
2055
2057
  onClick: onClose,
2056
2058
  className: "bg-blue-600 text-white px-4 py-3 sm:py-2 rounded-lg hover:bg-blue-700 transition-colors text-base"
2057
2059
  },
2058
2060
  "\u7EE7\u7EED\u6D4F\u89C8\u8C37\u5B50"
2059
- )), cart.items.length > 0 && /* @__PURE__ */ React29.createElement("div", { className: "space-y-6" }, /* @__PURE__ */ React29.createElement("div", { className: "bg-white rounded-lg shadow-sm border" }, cart.items.map((item) => /* @__PURE__ */ React29.createElement("div", { key: item.collectionId, className: "flex flex-col sm:flex-row items-start sm:items-center p-3 sm:p-4 border-b last:border-b-0 gap-3 sm:gap-4" }, item.collection.coverImage ? /* @__PURE__ */ React29.createElement(
2061
+ )), cart.items.length > 0 && /* @__PURE__ */ React23.createElement("div", { className: "space-y-6" }, /* @__PURE__ */ React23.createElement("div", { className: "bg-white rounded-lg shadow-sm border" }, cart.items.map((item) => /* @__PURE__ */ React23.createElement("div", { key: item.collectionId, className: "flex flex-col sm:flex-row items-start sm:items-center p-3 sm:p-4 border-b last:border-b-0 gap-3 sm:gap-4" }, item.collection.coverImage ? /* @__PURE__ */ React23.createElement(
2060
2062
  "img",
2061
2063
  {
2062
2064
  src: item.collection.coverImage,
2063
2065
  alt: item.collection.title,
2064
2066
  className: "w-16 h-16 sm:w-16 sm:h-16 object-cover rounded-md flex-shrink-0"
2065
2067
  }
2066
- ) : /* @__PURE__ */ React29.createElement("div", { className: "w-16 h-16 sm:w-16 sm:h-16 bg-gray-100 rounded-md flex-shrink-0 flex items-center justify-center text-gray-400 text-xs" }, "\u6682\u65E0\u56FE\u7247"), /* @__PURE__ */ React29.createElement("div", { className: "flex-1 min-w-0" }, /* @__PURE__ */ React29.createElement("h3", { className: "font-semibold text-gray-900 text-sm sm:text-base line-clamp-2" }, item.collection.title), /* @__PURE__ */ React29.createElement("p", { className: "text-xs sm:text-sm text-gray-600" }, "\u7F16\u53F7\uFF1A", item.collection.number), /* @__PURE__ */ React29.createElement("p", { className: "text-xs sm:text-sm text-gray-600" }, "\u4EF7\u683C\uFF1A", item.collection.price ? `\xA5${item.collection.price}` : "\u4EF7\u683C\u5F85\u5B9A")), /* @__PURE__ */ React29.createElement("div", { className: "flex flex-col sm:flex-row items-center gap-2 sm:gap-4 w-full sm:w-auto" }, /* @__PURE__ */ React29.createElement("div", { className: "flex items-center space-x-2" }, /* @__PURE__ */ React29.createElement(
2068
+ ) : /* @__PURE__ */ React23.createElement("div", { className: "w-16 h-16 sm:w-16 sm:h-16 bg-gray-100 rounded-md flex-shrink-0 flex items-center justify-center text-gray-400 text-xs" }, "\u6682\u65E0\u56FE\u7247"), /* @__PURE__ */ React23.createElement("div", { className: "flex-1 min-w-0" }, /* @__PURE__ */ React23.createElement("h3", { className: "font-semibold text-gray-900 text-sm sm:text-base line-clamp-2" }, item.collection.title), /* @__PURE__ */ React23.createElement("p", { className: "text-xs sm:text-sm text-gray-600" }, "\u7F16\u53F7\uFF1A", item.collection.number), /* @__PURE__ */ React23.createElement("p", { className: "text-xs sm:text-sm text-gray-600" }, "\u4EF7\u683C\uFF1A", item.collection.price ? `\xA5${item.collection.price}` : "\u4EF7\u683C\u5F85\u5B9A")), /* @__PURE__ */ React23.createElement("div", { className: "flex flex-col sm:flex-row items-center gap-2 sm:gap-4 w-full sm:w-auto" }, /* @__PURE__ */ React23.createElement("div", { className: "flex items-center space-x-2" }, /* @__PURE__ */ React23.createElement(
2067
2069
  "button",
2068
2070
  {
2069
2071
  onClick: () => updateCartItem2({ collectionId: item.collectionId, quantity: item.quantity - 1 }),
2070
2072
  disabled: loading,
2071
2073
  className: "w-10 h-10 sm:w-8 sm:h-8 rounded-full border border-gray-300 flex items-center justify-center hover:bg-gray-50 disabled:opacity-50"
2072
2074
  },
2073
- /* @__PURE__ */ React29.createElement(Minus, { size: 18, className: "sm:w-4 sm:h-4" })
2074
- ), /* @__PURE__ */ React29.createElement("span", { className: "w-16 sm:w-12 text-center font-medium text-sm sm:text-base" }, item.quantity), /* @__PURE__ */ React29.createElement(
2075
+ /* @__PURE__ */ React23.createElement(Minus, { size: 18, className: "sm:w-4 sm:h-4" })
2076
+ ), /* @__PURE__ */ React23.createElement("span", { className: "w-16 sm:w-12 text-center font-medium text-sm sm:text-base" }, item.quantity), /* @__PURE__ */ React23.createElement(
2075
2077
  "button",
2076
2078
  {
2077
2079
  onClick: () => updateCartItem2({ collectionId: item.collectionId, quantity: item.quantity + 1 }),
2078
2080
  disabled: loading,
2079
2081
  className: "w-10 h-10 sm:w-8 sm:h-8 rounded-full border border-gray-300 flex items-center justify-center hover:bg-gray-50 disabled:opacity-50"
2080
2082
  },
2081
- /* @__PURE__ */ React29.createElement(Plus, { size: 18, className: "sm:w-4 sm:h-4" })
2082
- )), /* @__PURE__ */ React29.createElement("div", { className: "text-center sm:text-right" }, /* @__PURE__ */ React29.createElement("p", { className: "font-semibold text-gray-900 text-sm sm:text-base" }, "\xA5", (item.collection.price || 0) * item.quantity))), /* @__PURE__ */ React29.createElement(
2083
+ /* @__PURE__ */ React23.createElement(Plus, { size: 18, className: "sm:w-4 sm:h-4" })
2084
+ )), /* @__PURE__ */ React23.createElement("div", { className: "text-center sm:text-right" }, /* @__PURE__ */ React23.createElement("p", { className: "font-semibold text-gray-900 text-sm sm:text-base" }, "\xA5", (item.collection.price || 0) * item.quantity))), /* @__PURE__ */ React23.createElement(
2083
2085
  "button",
2084
2086
  {
2085
2087
  onClick: () => removeFromCart2({ collectionId: item.collectionId }),
2086
2088
  disabled: loading,
2087
2089
  className: "text-red-500 hover:text-red-700 disabled:opacity-50 p-2 sm:p-1"
2088
2090
  },
2089
- /* @__PURE__ */ React29.createElement(Trash2, { size: 20, className: "sm:w-5 sm:h-5" })
2090
- )))), /* @__PURE__ */ React29.createElement("div", { className: "bg-gray-50 rounded-lg p-3 sm:p-4" }, /* @__PURE__ */ React29.createElement("div", { className: "flex justify-between items-center mb-2" }, /* @__PURE__ */ React29.createElement("span", { className: "text-sm sm:text-base text-gray-600" }, "\u5546\u54C1\u603B\u6570\uFF1A"), /* @__PURE__ */ React29.createElement("span", { className: "text-sm sm:text-base font-semibold" }, cart.totalQuantity)), /* @__PURE__ */ React29.createElement("div", { className: "flex justify-between items-center" }, /* @__PURE__ */ React29.createElement("span", { className: "text-sm sm:text-base text-gray-600" }, "\u603B\u4EF7\u683C\uFF1A"), /* @__PURE__ */ React29.createElement("span", { className: "text-lg sm:text-xl font-bold text-blue-600" }, "\xA5", cart.totalPrice))), /* @__PURE__ */ React29.createElement("div", { className: "bg-white rounded-lg shadow-sm border p-4 sm:p-6" }, /* @__PURE__ */ React29.createElement("div", { className: "flex justify-between items-center mb-4" }, /* @__PURE__ */ React29.createElement("h3", { className: "text-base sm:text-lg font-semibold text-gray-900" }, "\u6279\u91CF\u9884\u8BA2\u4FE1\u606F"), process.env.NODE_ENV === "development" && /* @__PURE__ */ React29.createElement(
2091
+ /* @__PURE__ */ React23.createElement(Trash2, { size: 20, className: "sm:w-5 sm:h-5" })
2092
+ )))), /* @__PURE__ */ React23.createElement("div", { className: "bg-gray-50 rounded-lg p-3 sm:p-4" }, /* @__PURE__ */ React23.createElement("div", { className: "flex justify-between items-center mb-2" }, /* @__PURE__ */ React23.createElement("span", { className: "text-sm sm:text-base text-gray-600" }, "\u5546\u54C1\u603B\u6570\uFF1A"), /* @__PURE__ */ React23.createElement("span", { className: "text-sm sm:text-base font-semibold" }, cart.totalQuantity)), /* @__PURE__ */ React23.createElement("div", { className: "flex justify-between items-center" }, /* @__PURE__ */ React23.createElement("span", { className: "text-sm sm:text-base text-gray-600" }, "\u603B\u4EF7\u683C\uFF1A"), /* @__PURE__ */ React23.createElement("span", { className: "text-lg sm:text-xl font-bold text-blue-600" }, "\xA5", cart.totalPrice))), /* @__PURE__ */ React23.createElement("div", { className: "bg-white rounded-lg shadow-sm border p-4 sm:p-6" }, /* @__PURE__ */ React23.createElement("div", { className: "flex justify-between items-center mb-4" }, /* @__PURE__ */ React23.createElement("h3", { className: "text-base sm:text-lg font-semibold text-gray-900" }, "\u6279\u91CF\u9884\u8BA2\u4FE1\u606F"), process.env.NODE_ENV === "development" && /* @__PURE__ */ React23.createElement(
2091
2093
  "button",
2092
2094
  {
2093
2095
  type: "button",
@@ -2095,7 +2097,7 @@ var CartPage = ({ userId, onClose }) => {
2095
2097
  className: "px-3 py-1 text-xs bg-yellow-100 text-yellow-800 rounded-md hover:bg-yellow-200 transition-colors"
2096
2098
  },
2097
2099
  "\u586B\u5145\u6D4B\u8BD5\u6570\u636E"
2098
- )), /* @__PURE__ */ React29.createElement("form", { onSubmit: handleCheckout, className: "space-y-4" }, /* @__PURE__ */ React29.createElement("div", null, /* @__PURE__ */ React29.createElement("label", { htmlFor: "qqNumber", className: "block text-sm font-medium text-gray-700 mb-2" }, "QQ\u53F7 ", /* @__PURE__ */ React29.createElement("span", { className: "text-red-500" }, "*")), /* @__PURE__ */ React29.createElement(
2100
+ )), /* @__PURE__ */ React23.createElement("form", { onSubmit: handleCheckout, className: "space-y-4" }, /* @__PURE__ */ React23.createElement("div", null, /* @__PURE__ */ React23.createElement("label", { htmlFor: "qqNumber", className: "block text-sm font-medium text-gray-700 mb-2" }, "QQ\u53F7 ", /* @__PURE__ */ React23.createElement("span", { className: "text-red-500" }, "*")), /* @__PURE__ */ React23.createElement(
2099
2101
  "input",
2100
2102
  {
2101
2103
  type: "text",
@@ -2106,7 +2108,7 @@ var CartPage = ({ userId, onClose }) => {
2106
2108
  placeholder: "\u8BF7\u8F93\u5165\u60A8\u7684QQ\u53F7",
2107
2109
  disabled: isCheckingOut
2108
2110
  }
2109
- ), formErrors.qqNumber && /* @__PURE__ */ React29.createElement("p", { className: "mt-1 text-sm text-red-600" }, formErrors.qqNumber)), /* @__PURE__ */ React29.createElement("div", null, /* @__PURE__ */ React29.createElement("label", { htmlFor: "phoneNumber", className: "block text-sm font-medium text-gray-700 mb-2" }, "\u624B\u673A\u53F7 ", /* @__PURE__ */ React29.createElement("span", { className: "text-red-500" }, "*")), /* @__PURE__ */ React29.createElement(
2111
+ ), formErrors.qqNumber && /* @__PURE__ */ React23.createElement("p", { className: "mt-1 text-sm text-red-600" }, formErrors.qqNumber)), /* @__PURE__ */ React23.createElement("div", null, /* @__PURE__ */ React23.createElement("label", { htmlFor: "phoneNumber", className: "block text-sm font-medium text-gray-700 mb-2" }, "\u624B\u673A\u53F7 ", /* @__PURE__ */ React23.createElement("span", { className: "text-red-500" }, "*")), /* @__PURE__ */ React23.createElement(
2110
2112
  "input",
2111
2113
  {
2112
2114
  type: "tel",
@@ -2117,7 +2119,7 @@ var CartPage = ({ userId, onClose }) => {
2117
2119
  placeholder: "\u8BF7\u8F93\u5165\u60A8\u7684\u624B\u673A\u53F7",
2118
2120
  disabled: isCheckingOut
2119
2121
  }
2120
- ), formErrors.phoneNumber && /* @__PURE__ */ React29.createElement("p", { className: "mt-1 text-sm text-red-600" }, formErrors.phoneNumber)), /* @__PURE__ */ React29.createElement("div", null, /* @__PURE__ */ React29.createElement("label", { htmlFor: "notes", className: "block text-sm font-medium text-gray-700 mb-2" }, "\u5907\u6CE8\u4FE1\u606F ", /* @__PURE__ */ React29.createElement("span", { className: "text-red-500" }, "*")), /* @__PURE__ */ React29.createElement(
2122
+ ), formErrors.phoneNumber && /* @__PURE__ */ React23.createElement("p", { className: "mt-1 text-sm text-red-600" }, formErrors.phoneNumber)), /* @__PURE__ */ React23.createElement("div", null, /* @__PURE__ */ React23.createElement("label", { htmlFor: "notes", className: "block text-sm font-medium text-gray-700 mb-2" }, "\u5907\u6CE8\u4FE1\u606F ", /* @__PURE__ */ React23.createElement("span", { className: "text-red-500" }, "*")), /* @__PURE__ */ React23.createElement(
2121
2123
  "textarea",
2122
2124
  {
2123
2125
  id: "notes",
@@ -2134,7 +2136,7 @@ var CartPage = ({ userId, onClose }) => {
2134
2136
  \uFF086\uFF09\u8471\u97F5\u73AF\u4EAC\xB7\u56DB\u7EF4\u7A7A\u95F4`,
2135
2137
  disabled: isCheckingOut
2136
2138
  }
2137
- ), formErrors.notes && /* @__PURE__ */ React29.createElement("p", { className: "mt-1 text-sm text-red-600" }, formErrors.notes)), /* @__PURE__ */ React29.createElement("div", null, /* @__PURE__ */ React29.createElement("label", { htmlFor: "pickupMethod", className: "block text-sm font-medium text-gray-700 mb-2" }, "\u6536\u8D27\u4FE1\u606F ", /* @__PURE__ */ React29.createElement("span", { className: "text-red-500" }, "*")), /* @__PURE__ */ React29.createElement(
2139
+ ), formErrors.notes && /* @__PURE__ */ React23.createElement("p", { className: "mt-1 text-sm text-red-600" }, formErrors.notes)), /* @__PURE__ */ React23.createElement("div", null, /* @__PURE__ */ React23.createElement("label", { htmlFor: "pickupMethod", className: "block text-sm font-medium text-gray-700 mb-2" }, "\u6536\u8D27\u4FE1\u606F ", /* @__PURE__ */ React23.createElement("span", { className: "text-red-500" }, "*")), /* @__PURE__ */ React23.createElement(
2138
2140
  "textarea",
2139
2141
  {
2140
2142
  id: "pickupMethod",
@@ -2148,7 +2150,7 @@ var CartPage = ({ userId, onClose }) => {
2148
2150
  \uFF083\uFF09\u6536\u4EF6\u624B\u673A\u53F7`,
2149
2151
  disabled: isCheckingOut
2150
2152
  }
2151
- ), formErrors.pickupMethod && /* @__PURE__ */ React29.createElement("p", { className: "mt-1 text-sm text-red-600" }, formErrors.pickupMethod)), /* @__PURE__ */ React29.createElement("div", { className: "flex flex-col sm:flex-row gap-3 sm:gap-4 pt-4" }, /* @__PURE__ */ React29.createElement(
2153
+ ), formErrors.pickupMethod && /* @__PURE__ */ React23.createElement("p", { className: "mt-1 text-sm text-red-600" }, formErrors.pickupMethod)), /* @__PURE__ */ React23.createElement("div", { className: "flex flex-col sm:flex-row gap-3 sm:gap-4 pt-4" }, /* @__PURE__ */ React23.createElement(
2152
2154
  "button",
2153
2155
  {
2154
2156
  type: "button",
@@ -2157,7 +2159,7 @@ var CartPage = ({ userId, onClose }) => {
2157
2159
  className: "flex-1 bg-gray-200 text-gray-800 py-3 sm:py-2 px-4 rounded-lg hover:bg-gray-300 transition-colors disabled:opacity-50 text-base"
2158
2160
  },
2159
2161
  "\u6E05\u7A7A\u8D2D\u7269\u8F66"
2160
- ), /* @__PURE__ */ React29.createElement(
2162
+ ), /* @__PURE__ */ React23.createElement(
2161
2163
  "button",
2162
2164
  {
2163
2165
  type: "submit",
@@ -2165,7 +2167,7 @@ var CartPage = ({ userId, onClose }) => {
2165
2167
  className: `flex-1 py-3 sm:py-2 px-4 rounded-lg font-medium transition-colors text-base ${loading || isCheckingOut || cart.items.length === 0 ? "bg-gray-400 text-gray-600 cursor-not-allowed" : "bg-blue-600 text-white hover:bg-blue-700"}`
2166
2168
  },
2167
2169
  isCheckingOut ? "\u63D0\u4EA4\u4E2D..." : "\u6279\u91CF\u9884\u8BA2"
2168
- ))))), loading && /* @__PURE__ */ React29.createElement("div", { className: "text-center py-8 sm:py-12" }, /* @__PURE__ */ React29.createElement("div", { className: "animate-spin rounded-full h-8 w-8 border-b-2 border-blue-600 mx-auto mb-4" }), /* @__PURE__ */ React29.createElement("p", { className: "text-sm sm:text-base text-gray-600" }, "\u52A0\u8F7D\u4E2D...")), hasPopup && /* @__PURE__ */ React29.createElement(
2170
+ ))))), loading && /* @__PURE__ */ React23.createElement("div", { className: "text-center py-8 sm:py-12" }, /* @__PURE__ */ React23.createElement("div", { className: "animate-spin rounded-full h-8 w-8 border-b-2 border-blue-600 mx-auto mb-4" }), /* @__PURE__ */ React23.createElement("p", { className: "text-sm sm:text-base text-gray-600" }, "\u52A0\u8F7D\u4E2D...")), hasPopup && /* @__PURE__ */ React23.createElement(
2169
2171
  DeadlinePopupManager,
2170
2172
  {
2171
2173
  configs: popupConfigs,
@@ -2225,7 +2227,7 @@ var CartModal = ({
2225
2227
  }
2226
2228
  };
2227
2229
  if (!isOpen || !mounted) return null;
2228
- return /* @__PURE__ */ React29.createElement(React29.Fragment, null, /* @__PURE__ */ React29.createElement(
2230
+ return /* @__PURE__ */ React23.createElement(React23.Fragment, null, /* @__PURE__ */ React23.createElement(
2229
2231
  "div",
2230
2232
  {
2231
2233
  className: "fixed top-0 left-0 right-0 bottom-0 w-screen h-screen bg-black/50 backdrop-blur-sm flex items-center justify-center z-[999] p-4",
@@ -2236,28 +2238,28 @@ var CartModal = ({
2236
2238
  e.stopPropagation();
2237
2239
  }
2238
2240
  },
2239
- /* @__PURE__ */ React29.createElement(
2241
+ /* @__PURE__ */ React23.createElement(
2240
2242
  "div",
2241
2243
  {
2242
2244
  className: "bg-white rounded-2xl shadow-xl w-full max-w-6xl max-h-[95vh] overflow-hidden relative flex flex-col",
2243
2245
  onClick: (e) => e.stopPropagation()
2244
2246
  },
2245
- /* @__PURE__ */ React29.createElement("div", { className: "flex items-center justify-between px-6 py-4 border-b border-gray-100" }, /* @__PURE__ */ React29.createElement("h2", { className: "text-xl font-semibold text-gray-800" }, title), /* @__PURE__ */ React29.createElement(
2247
+ /* @__PURE__ */ React23.createElement("div", { className: "flex items-center justify-between px-6 py-4 border-b border-gray-100" }, /* @__PURE__ */ React23.createElement("h2", { className: "text-xl font-semibold text-gray-800" }, title), /* @__PURE__ */ React23.createElement(
2246
2248
  "button",
2247
2249
  {
2248
2250
  className: "bg-transparent border-none text-gray-500 cursor-pointer p-2 rounded-lg transition-all hover:bg-gray-100 hover:text-gray-700 focus:outline-none focus:ring-2 focus:ring-blue-500 focus:ring-offset-2 min-w-9 min-h-9 flex items-center justify-center",
2249
2251
  onClick: onClose
2250
2252
  },
2251
- /* @__PURE__ */ React29.createElement(X, { size: 20 })
2253
+ /* @__PURE__ */ React23.createElement(X, { size: 20 })
2252
2254
  )),
2253
- /* @__PURE__ */ React29.createElement(
2255
+ /* @__PURE__ */ React23.createElement(
2254
2256
  "div",
2255
2257
  {
2256
2258
  className: "flex-1 overflow-auto",
2257
2259
  onWheel: handleWheelPrevent,
2258
2260
  onTouchMove: handleTouchPrevent
2259
2261
  },
2260
- /* @__PURE__ */ React29.createElement(CartPage, { userId, onClose })
2262
+ /* @__PURE__ */ React23.createElement(CartPage, { userId, onClose })
2261
2263
  )
2262
2264
  )
2263
2265
  ));
@@ -2272,15 +2274,15 @@ var CartButton = ({
2272
2274
  showBadge = true
2273
2275
  }) => {
2274
2276
  const { cart } = useCartContext();
2275
- return /* @__PURE__ */ React29.createElement(
2277
+ return /* @__PURE__ */ React23.createElement(
2276
2278
  "button",
2277
2279
  {
2278
2280
  onClick,
2279
2281
  className: `relative bg-blue-600 text-white px-4 py-2 rounded-lg hover:bg-blue-700 transition-colors flex items-center gap-2 ${className}`
2280
2282
  },
2281
- /* @__PURE__ */ React29.createElement(ShoppingCart, { size: 16 }),
2282
- /* @__PURE__ */ React29.createElement("span", null, "\u8D2D\u7269\u8F66"),
2283
- showBadge && cart.totalQuantity > 0 && /* @__PURE__ */ React29.createElement("span", { className: "absolute -top-2 -right-2 bg-red-500 text-white text-xs rounded-full w-5 h-5 flex items-center justify-center font-medium" }, cart.totalQuantity > 99 ? "99+" : cart.totalQuantity)
2283
+ /* @__PURE__ */ React23.createElement(ShoppingCart, { size: 16 }),
2284
+ /* @__PURE__ */ React23.createElement("span", null, "\u8D2D\u7269\u8F66"),
2285
+ showBadge && cart.totalQuantity > 0 && /* @__PURE__ */ React23.createElement("span", { className: "absolute -top-2 -right-2 bg-red-500 text-white text-xs rounded-full w-5 h-5 flex items-center justify-center font-medium" }, cart.totalQuantity > 99 ? "99+" : cart.totalQuantity)
2284
2286
  );
2285
2287
  };
2286
2288
  var CollectionList = ({
@@ -2305,12 +2307,12 @@ var CollectionList = ({
2305
2307
  return `\xA5${price}`;
2306
2308
  };
2307
2309
  if (loading) {
2308
- return /* @__PURE__ */ React29.createElement("div", { className: "grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4" }, Array.from({ length: 6 }).map((_, index) => /* @__PURE__ */ React29.createElement("div", { key: index, className: "bg-gray-100 rounded-lg p-4 animate-pulse" }, /* @__PURE__ */ React29.createElement("div", { className: "w-full h-48 bg-gray-200 rounded-md mb-3" }), /* @__PURE__ */ React29.createElement("div", { className: "h-4 bg-gray-200 rounded mb-2" }), /* @__PURE__ */ React29.createElement("div", { className: "h-3 bg-gray-200 rounded mb-2" }), /* @__PURE__ */ React29.createElement("div", { className: "h-3 bg-gray-200 rounded w-1/2" }))));
2310
+ return /* @__PURE__ */ React23.createElement("div", { className: "grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4" }, Array.from({ length: 6 }).map((_, index) => /* @__PURE__ */ React23.createElement("div", { key: index, className: "bg-gray-100 rounded-lg p-4 animate-pulse" }, /* @__PURE__ */ React23.createElement("div", { className: "w-full h-48 bg-gray-200 rounded-md mb-3" }), /* @__PURE__ */ React23.createElement("div", { className: "h-4 bg-gray-200 rounded mb-2" }), /* @__PURE__ */ React23.createElement("div", { className: "h-3 bg-gray-200 rounded mb-2" }), /* @__PURE__ */ React23.createElement("div", { className: "h-3 bg-gray-200 rounded w-1/2" }))));
2309
2311
  }
2310
2312
  if (collections.length === 0) {
2311
- return /* @__PURE__ */ React29.createElement("div", { className: "text-center py-12" }, /* @__PURE__ */ React29.createElement("div", { className: "text-gray-400 text-6xl mb-4" }, "\u{1F3A8}"), /* @__PURE__ */ React29.createElement("h3", { className: "text-lg font-medium text-gray-900 mb-2" }, "\u6682\u65E0\u53EF\u7528\u753B\u96C6"), /* @__PURE__ */ React29.createElement("p", { className: "text-gray-500" }, "\u5F53\u524D\u6CA1\u6709\u53EF\u9884\u8BA2\u7684\u753B\u96C6\uFF0C\u8BF7\u7A0D\u540E\u518D\u8BD5"));
2313
+ return /* @__PURE__ */ React23.createElement("div", { className: "text-center py-12" }, /* @__PURE__ */ React23.createElement("div", { className: "text-gray-400 text-6xl mb-4" }, "\u{1F3A8}"), /* @__PURE__ */ React23.createElement("h3", { className: "text-lg font-medium text-gray-900 mb-2" }, "\u6682\u65E0\u53EF\u7528\u753B\u96C6"), /* @__PURE__ */ React23.createElement("p", { className: "text-gray-500" }, "\u5F53\u524D\u6CA1\u6709\u53EF\u9884\u8BA2\u7684\u753B\u96C6\uFF0C\u8BF7\u7A0D\u540E\u518D\u8BD5"));
2312
2314
  }
2313
- return /* @__PURE__ */ React29.createElement("div", { className: "grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4" }, collections.map((collection) => /* @__PURE__ */ React29.createElement(
2315
+ return /* @__PURE__ */ React23.createElement("div", { className: "grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4" }, collections.map((collection) => /* @__PURE__ */ React23.createElement(
2314
2316
  "div",
2315
2317
  {
2316
2318
  key: collection.id,
@@ -2322,8 +2324,8 @@ var CollectionList = ({
2322
2324
  `,
2323
2325
  onClick: () => handleCollectionSelect(collection.id)
2324
2326
  },
2325
- selectedCollectionId === collection.id && /* @__PURE__ */ React29.createElement("div", { className: "absolute top-2 right-2 z-10" }, /* @__PURE__ */ React29.createElement("div", { className: "bg-blue-500 text-white rounded-full w-6 h-6 flex items-center justify-center" }, /* @__PURE__ */ React29.createElement("svg", { className: "w-4 h-4", fill: "currentColor", viewBox: "0 0 20 20" }, /* @__PURE__ */ React29.createElement("path", { fillRule: "evenodd", d: "M16.707 5.293a1 1 0 010 1.414l-8 8a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L8 12.586l7.293-7.293a1 1 0 011.414 0z", clipRule: "evenodd" })))),
2326
- /* @__PURE__ */ React29.createElement("div", { className: "relative h-48 overflow-hidden" }, /* @__PURE__ */ React29.createElement(
2327
+ selectedCollectionId === collection.id && /* @__PURE__ */ React23.createElement("div", { className: "absolute top-2 right-2 z-10" }, /* @__PURE__ */ React23.createElement("div", { className: "bg-blue-500 text-white rounded-full w-6 h-6 flex items-center justify-center" }, /* @__PURE__ */ React23.createElement("svg", { className: "w-4 h-4", fill: "currentColor", viewBox: "0 0 20 20" }, /* @__PURE__ */ React23.createElement("path", { fillRule: "evenodd", d: "M16.707 5.293a1 1 0 010 1.414l-8 8a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L8 12.586l7.293-7.293a1 1 0 011.414 0z", clipRule: "evenodd" })))),
2328
+ /* @__PURE__ */ React23.createElement("div", { className: "relative h-48 overflow-hidden" }, /* @__PURE__ */ React23.createElement(
2327
2329
  "img",
2328
2330
  {
2329
2331
  src: collection.coverImage,
@@ -2334,9 +2336,9 @@ var CollectionList = ({
2334
2336
  target.src = "/images/placeholder-artwork.jpg";
2335
2337
  }
2336
2338
  }
2337
- ), /* @__PURE__ */ React29.createElement("div", { className: "absolute bottom-2 left-2" }, /* @__PURE__ */ React29.createElement("span", { className: "bg-black bg-opacity-75 text-white px-2 py-1 rounded text-sm font-medium" }, formatPrice(collection.price)))),
2338
- /* @__PURE__ */ React29.createElement("div", { className: "p-4" }, /* @__PURE__ */ React29.createElement("h3", { className: "font-semibold text-gray-900 mb-1 line-clamp-2" }, collection.title), /* @__PURE__ */ React29.createElement("p", { className: "text-sm text-gray-600 mb-2" }, "\u7F16\u53F7\uFF1A", collection.number), collection.description && /* @__PURE__ */ React29.createElement("p", { className: "text-sm text-gray-500 line-clamp-2" }, collection.description)),
2339
- !disabled && /* @__PURE__ */ React29.createElement("div", { className: "absolute inset-0 bg-blue-500 bg-opacity-0 hover:bg-opacity-10 transition-all duration-200 flex items-center justify-center" }, /* @__PURE__ */ React29.createElement("span", { className: "text-blue-600 font-medium opacity-0 hover:opacity-100 transition-opacity duration-200" }, "\u70B9\u51FB\u9009\u62E9"))
2339
+ ), /* @__PURE__ */ React23.createElement("div", { className: "absolute bottom-2 left-2" }, /* @__PURE__ */ React23.createElement("span", { className: "bg-black bg-opacity-75 text-white px-2 py-1 rounded text-sm font-medium" }, formatPrice(collection.price)))),
2340
+ /* @__PURE__ */ React23.createElement("div", { className: "p-4" }, /* @__PURE__ */ React23.createElement("h3", { className: "font-semibold text-gray-900 mb-1 line-clamp-2" }, collection.title), /* @__PURE__ */ React23.createElement("p", { className: "text-sm text-gray-600 mb-2" }, "\u7F16\u53F7\uFF1A", collection.number), collection.description && /* @__PURE__ */ React23.createElement("p", { className: "text-sm text-gray-500 line-clamp-2" }, collection.description)),
2341
+ !disabled && /* @__PURE__ */ React23.createElement("div", { className: "absolute inset-0 bg-blue-500 bg-opacity-0 hover:bg-opacity-10 transition-all duration-200 flex items-center justify-center" }, /* @__PURE__ */ React23.createElement("span", { className: "text-blue-600 font-medium opacity-0 hover:opacity-100 transition-opacity duration-200" }, "\u70B9\u51FB\u9009\u62E9"))
2340
2342
  )));
2341
2343
  };
2342
2344
 
@@ -2680,7 +2682,7 @@ var BookingAdminPanel = ({
2680
2682
  }
2681
2683
  await onSearch(params);
2682
2684
  };
2683
- return /* @__PURE__ */ React29.createElement("div", { className: "space-y-6" }, /* @__PURE__ */ React29.createElement("div", { className: "grid grid-cols-2 lg:grid-cols-4 gap-3 sm:gap-4" }, /* @__PURE__ */ React29.createElement("div", { className: "bg-white rounded-lg shadow-sm border border-slate-200 p-4 sm:p-6" }, /* @__PURE__ */ React29.createElement("div", { className: "flex items-center" }, /* @__PURE__ */ React29.createElement("div", { className: "p-2 bg-blue-100 rounded-lg" }, /* @__PURE__ */ React29.createElement(Calendar, { size: 20, className: "text-blue-600 sm:w-6 sm:h-6" })), /* @__PURE__ */ React29.createElement("div", { className: "ml-3 sm:ml-4" }, /* @__PURE__ */ React29.createElement("h3", { className: "text-lg sm:text-2xl font-bold text-slate-800" }, stats.totalBookings), /* @__PURE__ */ React29.createElement("p", { className: "text-xs sm:text-sm text-slate-600" }, "\u603B\u9884\u8BA2\u6570")))), /* @__PURE__ */ React29.createElement("div", { className: "bg-white rounded-lg shadow-sm border border-slate-200 p-4 sm:p-6" }, /* @__PURE__ */ React29.createElement("div", { className: "flex items-center" }, /* @__PURE__ */ React29.createElement("div", { className: "p-2 bg-yellow-100 rounded-lg" }, /* @__PURE__ */ React29.createElement(Clock, { size: 20, className: "text-yellow-600 sm:w-6 sm:h-6" })), /* @__PURE__ */ React29.createElement("div", { className: "ml-3 sm:ml-4" }, /* @__PURE__ */ React29.createElement("h3", { className: "text-lg sm:text-2xl font-bold text-slate-800" }, stats.pendingBookings), /* @__PURE__ */ React29.createElement("p", { className: "text-xs sm:text-sm text-slate-600" }, "\u5F85\u786E\u8BA4")))), /* @__PURE__ */ React29.createElement("div", { className: "bg-white rounded-lg shadow-sm border border-slate-200 p-4 sm:p-6" }, /* @__PURE__ */ React29.createElement("div", { className: "flex items-center" }, /* @__PURE__ */ React29.createElement("div", { className: "p-2 bg-green-100 rounded-lg" }, /* @__PURE__ */ React29.createElement(CheckCircle, { size: 20, className: "text-green-600 sm:w-6 sm:h-6" })), /* @__PURE__ */ React29.createElement("div", { className: "ml-3 sm:ml-4" }, /* @__PURE__ */ React29.createElement("h3", { className: "text-lg sm:text-2xl font-bold text-slate-800" }, stats.completedBookings), /* @__PURE__ */ React29.createElement("p", { className: "text-xs sm:text-sm text-slate-600" }, "\u5DF2\u5B8C\u6210")))), /* @__PURE__ */ React29.createElement("div", { className: "bg-white rounded-lg shadow-sm border border-slate-200 p-4 sm:p-6" }, /* @__PURE__ */ React29.createElement("div", { className: "flex items-center" }, /* @__PURE__ */ React29.createElement("div", { className: "p-2 bg-purple-100 rounded-lg" }, /* @__PURE__ */ React29.createElement(Package, { size: 20, className: "text-purple-600 sm:w-6 sm:h-6" })), /* @__PURE__ */ React29.createElement("div", { className: "ml-3 sm:ml-4" }, /* @__PURE__ */ React29.createElement("h3", { className: "text-lg sm:text-2xl font-bold text-slate-800" }, "\xA5", stats.totalRevenue), /* @__PURE__ */ React29.createElement("p", { className: "text-xs sm:text-sm text-slate-600" }, "\u603B\u6536\u5165"))))), /* @__PURE__ */ React29.createElement("div", { className: "bg-white rounded-lg shadow-sm border border-slate-200 p-4" }, /* @__PURE__ */ React29.createElement("form", { onSubmit: handleSearchSubmit, className: "space-y-4" }, /* @__PURE__ */ React29.createElement("div", { className: "flex flex-col sm:flex-row gap-4" }, /* @__PURE__ */ React29.createElement("div", { className: "flex-1" }, /* @__PURE__ */ React29.createElement("label", { htmlFor: "searchQqNumber", className: "block text-sm font-medium text-slate-700 mb-2" }, "QQ\u53F7\u641C\u7D22"), /* @__PURE__ */ React29.createElement(
2685
+ return /* @__PURE__ */ React23.createElement("div", { className: "space-y-6" }, /* @__PURE__ */ React23.createElement("div", { className: "grid grid-cols-2 lg:grid-cols-4 gap-3 sm:gap-4" }, /* @__PURE__ */ React23.createElement("div", { className: "bg-white rounded-lg shadow-sm border border-slate-200 p-4 sm:p-6" }, /* @__PURE__ */ React23.createElement("div", { className: "flex items-center" }, /* @__PURE__ */ React23.createElement("div", { className: "p-2 bg-blue-100 rounded-lg" }, /* @__PURE__ */ React23.createElement(Calendar, { size: 20, className: "text-blue-600 sm:w-6 sm:h-6" })), /* @__PURE__ */ React23.createElement("div", { className: "ml-3 sm:ml-4" }, /* @__PURE__ */ React23.createElement("h3", { className: "text-lg sm:text-2xl font-bold text-slate-800" }, stats.totalBookings), /* @__PURE__ */ React23.createElement("p", { className: "text-xs sm:text-sm text-slate-600" }, "\u603B\u9884\u8BA2\u6570")))), /* @__PURE__ */ React23.createElement("div", { className: "bg-white rounded-lg shadow-sm border border-slate-200 p-4 sm:p-6" }, /* @__PURE__ */ React23.createElement("div", { className: "flex items-center" }, /* @__PURE__ */ React23.createElement("div", { className: "p-2 bg-yellow-100 rounded-lg" }, /* @__PURE__ */ React23.createElement(Clock, { size: 20, className: "text-yellow-600 sm:w-6 sm:h-6" })), /* @__PURE__ */ React23.createElement("div", { className: "ml-3 sm:ml-4" }, /* @__PURE__ */ React23.createElement("h3", { className: "text-lg sm:text-2xl font-bold text-slate-800" }, stats.pendingBookings), /* @__PURE__ */ React23.createElement("p", { className: "text-xs sm:text-sm text-slate-600" }, "\u5F85\u786E\u8BA4")))), /* @__PURE__ */ React23.createElement("div", { className: "bg-white rounded-lg shadow-sm border border-slate-200 p-4 sm:p-6" }, /* @__PURE__ */ React23.createElement("div", { className: "flex items-center" }, /* @__PURE__ */ React23.createElement("div", { className: "p-2 bg-green-100 rounded-lg" }, /* @__PURE__ */ React23.createElement(CheckCircle, { size: 20, className: "text-green-600 sm:w-6 sm:h-6" })), /* @__PURE__ */ React23.createElement("div", { className: "ml-3 sm:ml-4" }, /* @__PURE__ */ React23.createElement("h3", { className: "text-lg sm:text-2xl font-bold text-slate-800" }, stats.completedBookings), /* @__PURE__ */ React23.createElement("p", { className: "text-xs sm:text-sm text-slate-600" }, "\u5DF2\u5B8C\u6210")))), /* @__PURE__ */ React23.createElement("div", { className: "bg-white rounded-lg shadow-sm border border-slate-200 p-4 sm:p-6" }, /* @__PURE__ */ React23.createElement("div", { className: "flex items-center" }, /* @__PURE__ */ React23.createElement("div", { className: "p-2 bg-purple-100 rounded-lg" }, /* @__PURE__ */ React23.createElement(Package, { size: 20, className: "text-purple-600 sm:w-6 sm:h-6" })), /* @__PURE__ */ React23.createElement("div", { className: "ml-3 sm:ml-4" }, /* @__PURE__ */ React23.createElement("h3", { className: "text-lg sm:text-2xl font-bold text-slate-800" }, "\xA5", stats.totalRevenue), /* @__PURE__ */ React23.createElement("p", { className: "text-xs sm:text-sm text-slate-600" }, "\u603B\u6536\u5165"))))), /* @__PURE__ */ React23.createElement("div", { className: "bg-white rounded-lg shadow-sm border border-slate-200 p-4" }, /* @__PURE__ */ React23.createElement("form", { onSubmit: handleSearchSubmit, className: "space-y-4" }, /* @__PURE__ */ React23.createElement("div", { className: "flex flex-col sm:flex-row gap-4" }, /* @__PURE__ */ React23.createElement("div", { className: "flex-1" }, /* @__PURE__ */ React23.createElement("label", { htmlFor: "searchQqNumber", className: "block text-sm font-medium text-slate-700 mb-2" }, "QQ\u53F7\u641C\u7D22"), /* @__PURE__ */ React23.createElement(
2684
2686
  "input",
2685
2687
  {
2686
2688
  type: "text",
@@ -2690,7 +2692,7 @@ var BookingAdminPanel = ({
2690
2692
  className: "w-full px-3 py-2 border border-slate-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-500",
2691
2693
  placeholder: "\u8F93\u5165QQ\u53F7\u8FDB\u884C\u641C\u7D22"
2692
2694
  }
2693
- )), /* @__PURE__ */ React29.createElement("div", { className: "flex-1" }, /* @__PURE__ */ React29.createElement("label", { htmlFor: "searchPhoneNumber", className: "block text-sm font-medium text-slate-700 mb-2" }, "\u624B\u673A\u53F7\u641C\u7D22"), /* @__PURE__ */ React29.createElement(
2695
+ )), /* @__PURE__ */ React23.createElement("div", { className: "flex-1" }, /* @__PURE__ */ React23.createElement("label", { htmlFor: "searchPhoneNumber", className: "block text-sm font-medium text-slate-700 mb-2" }, "\u624B\u673A\u53F7\u641C\u7D22"), /* @__PURE__ */ React23.createElement(
2694
2696
  "input",
2695
2697
  {
2696
2698
  type: "tel",
@@ -2700,7 +2702,7 @@ var BookingAdminPanel = ({
2700
2702
  className: "w-full px-3 py-2 border border-slate-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-500",
2701
2703
  placeholder: "\u8F93\u5165\u624B\u673A\u53F7\u8FDB\u884C\u641C\u7D22"
2702
2704
  }
2703
- )), /* @__PURE__ */ React29.createElement("div", { className: "flex-1" }, /* @__PURE__ */ React29.createElement("label", { htmlFor: "searchStatus", className: "block text-sm font-medium text-slate-700 mb-2" }, "\u72B6\u6001\u8FC7\u6EE4"), /* @__PURE__ */ React29.createElement(
2705
+ )), /* @__PURE__ */ React23.createElement("div", { className: "flex-1" }, /* @__PURE__ */ React23.createElement("label", { htmlFor: "searchStatus", className: "block text-sm font-medium text-slate-700 mb-2" }, "\u72B6\u6001\u8FC7\u6EE4"), /* @__PURE__ */ React23.createElement(
2704
2706
  "select",
2705
2707
  {
2706
2708
  id: "searchStatus",
@@ -2708,21 +2710,21 @@ var BookingAdminPanel = ({
2708
2710
  onChange: (e) => setSearchForm((prev) => ({ ...prev, status: e.target.value })),
2709
2711
  className: "w-full px-3 py-2 border border-slate-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-500"
2710
2712
  },
2711
- /* @__PURE__ */ React29.createElement("option", { value: "all" }, "\u5168\u90E8\u72B6\u6001"),
2712
- /* @__PURE__ */ React29.createElement("option", { value: "pending" }, "\u5F85\u786E\u8BA4"),
2713
- /* @__PURE__ */ React29.createElement("option", { value: "confirmed" }, "\u5DF2\u786E\u8BA4"),
2714
- /* @__PURE__ */ React29.createElement("option", { value: "completed" }, "\u5DF2\u5B8C\u6210"),
2715
- /* @__PURE__ */ React29.createElement("option", { value: "cancelled" }, "\u5DF2\u53D6\u6D88")
2716
- ))), /* @__PURE__ */ React29.createElement("div", { className: "flex gap-2" }, /* @__PURE__ */ React29.createElement(
2713
+ /* @__PURE__ */ React23.createElement("option", { value: "all" }, "\u5168\u90E8\u72B6\u6001"),
2714
+ /* @__PURE__ */ React23.createElement("option", { value: "pending" }, "\u5F85\u786E\u8BA4"),
2715
+ /* @__PURE__ */ React23.createElement("option", { value: "confirmed" }, "\u5DF2\u786E\u8BA4"),
2716
+ /* @__PURE__ */ React23.createElement("option", { value: "completed" }, "\u5DF2\u5B8C\u6210"),
2717
+ /* @__PURE__ */ React23.createElement("option", { value: "cancelled" }, "\u5DF2\u53D6\u6D88")
2718
+ ))), /* @__PURE__ */ React23.createElement("div", { className: "flex gap-2" }, /* @__PURE__ */ React23.createElement(
2717
2719
  "button",
2718
2720
  {
2719
2721
  type: "submit",
2720
2722
  disabled: loading,
2721
2723
  className: "flex items-center justify-center gap-2 px-4 py-2 bg-blue-600 text-white rounded-lg font-medium hover:bg-blue-700 transition-colors disabled:opacity-50"
2722
2724
  },
2723
- /* @__PURE__ */ React29.createElement(Search, { size: 16 }),
2725
+ /* @__PURE__ */ React23.createElement(Search, { size: 16 }),
2724
2726
  "\u641C\u7D22"
2725
- ), /* @__PURE__ */ React29.createElement(
2727
+ ), /* @__PURE__ */ React23.createElement(
2726
2728
  "button",
2727
2729
  {
2728
2730
  type: "button",
@@ -2730,53 +2732,53 @@ var BookingAdminPanel = ({
2730
2732
  disabled: loading,
2731
2733
  className: "flex items-center justify-center gap-2 px-4 py-2 bg-slate-100 text-slate-700 rounded-lg font-medium hover:bg-slate-200 transition-colors disabled:opacity-50"
2732
2734
  },
2733
- /* @__PURE__ */ React29.createElement(X, { size: 16 }),
2735
+ /* @__PURE__ */ React23.createElement(X, { size: 16 }),
2734
2736
  "\u6E05\u9664"
2735
- )))), /* @__PURE__ */ React29.createElement("div", { className: "bg-white rounded-lg shadow-sm border border-slate-200 p-4" }, /* @__PURE__ */ React29.createElement("div", { className: "flex flex-col sm:flex-row sm:items-center sm:justify-between gap-4" }, /* @__PURE__ */ React29.createElement("div", { className: "flex flex-wrap gap-2" }, /* @__PURE__ */ React29.createElement(
2737
+ )))), /* @__PURE__ */ React23.createElement("div", { className: "bg-white rounded-lg shadow-sm border border-slate-200 p-4" }, /* @__PURE__ */ React23.createElement("div", { className: "flex flex-col sm:flex-row sm:items-center sm:justify-between gap-4" }, /* @__PURE__ */ React23.createElement("div", { className: "flex flex-wrap gap-2" }, /* @__PURE__ */ React23.createElement(
2736
2738
  "button",
2737
2739
  {
2738
2740
  className: `px-3 py-2 text-sm sm:text-base rounded-lg font-medium transition-colors ${filterStatus === "all" ? "bg-blue-600 text-white" : "bg-slate-100 text-slate-700 hover:bg-slate-200"}`,
2739
2741
  onClick: () => handleStatusFilter("all")
2740
2742
  },
2741
2743
  "\u5168\u90E8"
2742
- ), /* @__PURE__ */ React29.createElement(
2744
+ ), /* @__PURE__ */ React23.createElement(
2743
2745
  "button",
2744
2746
  {
2745
2747
  className: `px-3 py-2 text-sm sm:text-base rounded-lg font-medium transition-colors ${filterStatus === "pending" ? "bg-blue-600 text-white" : "bg-slate-100 text-slate-700 hover:bg-slate-200"}`,
2746
2748
  onClick: () => handleStatusFilter("pending")
2747
2749
  },
2748
2750
  "\u5F85\u786E\u8BA4"
2749
- ), /* @__PURE__ */ React29.createElement(
2751
+ ), /* @__PURE__ */ React23.createElement(
2750
2752
  "button",
2751
2753
  {
2752
2754
  className: `px-3 py-2 text-sm sm:text-base rounded-lg font-medium transition-colors ${filterStatus === "confirmed" ? "bg-blue-600 text-white" : "bg-slate-100 text-slate-700 hover:bg-slate-200"}`,
2753
2755
  onClick: () => handleStatusFilter("confirmed")
2754
2756
  },
2755
2757
  "\u5DF2\u786E\u8BA4"
2756
- ), /* @__PURE__ */ React29.createElement(
2758
+ ), /* @__PURE__ */ React23.createElement(
2757
2759
  "button",
2758
2760
  {
2759
2761
  className: `px-3 py-2 text-sm sm:text-base rounded-lg font-medium transition-colors ${filterStatus === "completed" ? "bg-blue-600 text-white" : "bg-slate-100 text-slate-700 hover:bg-slate-200"}`,
2760
2762
  onClick: () => handleStatusFilter("completed")
2761
2763
  },
2762
2764
  "\u5DF2\u5B8C\u6210"
2763
- ), /* @__PURE__ */ React29.createElement(
2765
+ ), /* @__PURE__ */ React23.createElement(
2764
2766
  "button",
2765
2767
  {
2766
2768
  className: `px-3 py-2 text-sm sm:text-base rounded-lg font-medium transition-colors ${filterStatus === "cancelled" ? "bg-blue-600 text-white" : "bg-slate-100 text-slate-700 hover:bg-slate-200"}`,
2767
2769
  onClick: () => handleStatusFilter("cancelled")
2768
2770
  },
2769
2771
  "\u5DF2\u53D6\u6D88"
2770
- )), /* @__PURE__ */ React29.createElement("div", { className: "flex flex-col sm:flex-row gap-2 w-full sm:w-auto" }, /* @__PURE__ */ React29.createElement(
2772
+ )), /* @__PURE__ */ React23.createElement("div", { className: "flex flex-col sm:flex-row gap-2 w-full sm:w-auto" }, /* @__PURE__ */ React23.createElement(
2771
2773
  "button",
2772
2774
  {
2773
2775
  onClick: onRefresh,
2774
2776
  disabled: loading,
2775
2777
  className: "flex items-center justify-center gap-2 px-4 py-2 bg-blue-600 text-white rounded-lg font-medium hover:bg-blue-700 transition-colors disabled:opacity-50"
2776
2778
  },
2777
- /* @__PURE__ */ React29.createElement(RefreshCw, { size: 16, className: loading ? "animate-spin" : "" }),
2779
+ /* @__PURE__ */ React23.createElement(RefreshCw, { size: 16, className: loading ? "animate-spin" : "" }),
2778
2780
  "\u5237\u65B0"
2779
- ), /* @__PURE__ */ React29.createElement("div", { className: "flex items-center gap-2 px-3 py-2 bg-white border border-slate-200 rounded-lg" }, /* @__PURE__ */ React29.createElement(
2781
+ ), /* @__PURE__ */ React23.createElement("div", { className: "flex items-center gap-2 px-3 py-2 bg-white border border-slate-200 rounded-lg" }, /* @__PURE__ */ React23.createElement(
2780
2782
  "input",
2781
2783
  {
2782
2784
  type: "checkbox",
@@ -2785,7 +2787,7 @@ var BookingAdminPanel = ({
2785
2787
  onChange: (e) => setEnableUserPriceCalculation(e.target.checked),
2786
2788
  className: "w-4 h-4 text-blue-600 bg-gray-100 border-gray-300 rounded focus:ring-blue-500 focus:ring-2"
2787
2789
  }
2788
- ), /* @__PURE__ */ React29.createElement(
2790
+ ), /* @__PURE__ */ React23.createElement(
2789
2791
  "label",
2790
2792
  {
2791
2793
  htmlFor: "enableUserPriceCalculation",
@@ -2793,7 +2795,7 @@ var BookingAdminPanel = ({
2793
2795
  title: "\u52FE\u9009\u540E\u5BFC\u51FAExcel\u65F6\u4F1A\u6DFB\u52A0\u4E00\u5217\u7528\u6237\u603B\u4EF7\uFF08\u6839\u636EQQ\u53F7+\u624B\u673A\u53F7\u552F\u4E00\u5339\u914D\uFF09"
2794
2796
  },
2795
2797
  "\u5305\u542B\u7528\u6237\u603B\u4EF7"
2796
- )), /* @__PURE__ */ React29.createElement(
2798
+ )), /* @__PURE__ */ React23.createElement(
2797
2799
  UniversalExportButton,
2798
2800
  {
2799
2801
  exportService,
@@ -2847,7 +2849,7 @@ var BookingAdminPanel = ({
2847
2849
  console.error("\u274C [BookingAdminPanel] UniversalExportButton \u5BFC\u51FA\u5931\u8D25:", error2);
2848
2850
  }
2849
2851
  }
2850
- ), /* @__PURE__ */ React29.createElement(
2852
+ ), /* @__PURE__ */ React23.createElement(
2851
2853
  "button",
2852
2854
  {
2853
2855
  onClick: async () => {
@@ -2862,31 +2864,31 @@ var BookingAdminPanel = ({
2862
2864
  disabled: loading || bookings.length === 0,
2863
2865
  className: "flex items-center gap-2 px-4 py-2 bg-green-600 text-white rounded-lg font-medium hover:bg-green-700 transition-colors disabled:opacity-50 disabled:cursor-not-allowed"
2864
2866
  },
2865
- /* @__PURE__ */ React29.createElement(Download, { size: 16 }),
2867
+ /* @__PURE__ */ React23.createElement(Download, { size: 16 }),
2866
2868
  "\u76F4\u63A5\u5BFC\u51FA (",
2867
2869
  bookings.length,
2868
2870
  "\u6761)"
2869
- )))), error && /* @__PURE__ */ React29.createElement("div", { className: "bg-red-50 border border-red-200 rounded-lg p-4" }, /* @__PURE__ */ React29.createElement("div", { className: "flex" }, /* @__PURE__ */ React29.createElement("div", { className: "text-red-400 mr-3 flex-shrink-0" }, /* @__PURE__ */ React29.createElement(XCircle, { size: 20 })), /* @__PURE__ */ React29.createElement("div", { className: "min-w-0 flex-1" }, /* @__PURE__ */ React29.createElement("h3", { className: "text-sm font-medium text-red-800" }, "\u52A0\u8F7D\u5931\u8D25"), /* @__PURE__ */ React29.createElement("p", { className: "text-sm text-red-700 mt-1 break-words" }, error)))), /* @__PURE__ */ React29.createElement("div", { className: "space-y-4" }, paginatedBookings.length === 0 ? /* @__PURE__ */ React29.createElement("div", { className: "bg-white rounded-lg shadow-sm border border-slate-200 p-8 sm:p-12 text-center" }, /* @__PURE__ */ React29.createElement(Calendar, { size: 40, className: "text-slate-400 mx-auto mb-4 sm:w-12 sm:h-12" }), /* @__PURE__ */ React29.createElement("h3", { className: "text-base sm:text-lg font-medium text-slate-800 mb-2" }, "\u6682\u65E0\u9884\u8BA2\u6570\u636E"), /* @__PURE__ */ React29.createElement("p", { className: "text-sm sm:text-base text-slate-600" }, totalItems === 0 ? "\u5F53\u524D\u7B5B\u9009\u6761\u4EF6\u4E0B\u6CA1\u6709\u627E\u5230\u9884\u8BA2\u6570\u636E" : "\u5F53\u524D\u9875\u65E0\u6570\u636E")) : paginatedBookings.map((booking) => {
2871
+ )))), error && /* @__PURE__ */ React23.createElement("div", { className: "bg-red-50 border border-red-200 rounded-lg p-4" }, /* @__PURE__ */ React23.createElement("div", { className: "flex" }, /* @__PURE__ */ React23.createElement("div", { className: "text-red-400 mr-3 flex-shrink-0" }, /* @__PURE__ */ React23.createElement(XCircle, { size: 20 })), /* @__PURE__ */ React23.createElement("div", { className: "min-w-0 flex-1" }, /* @__PURE__ */ React23.createElement("h3", { className: "text-sm font-medium text-red-800" }, "\u52A0\u8F7D\u5931\u8D25"), /* @__PURE__ */ React23.createElement("p", { className: "text-sm text-red-700 mt-1 break-words" }, error)))), /* @__PURE__ */ React23.createElement("div", { className: "space-y-4" }, paginatedBookings.length === 0 ? /* @__PURE__ */ React23.createElement("div", { className: "bg-white rounded-lg shadow-sm border border-slate-200 p-8 sm:p-12 text-center" }, /* @__PURE__ */ React23.createElement(Calendar, { size: 40, className: "text-slate-400 mx-auto mb-4 sm:w-12 sm:h-12" }), /* @__PURE__ */ React23.createElement("h3", { className: "text-base sm:text-lg font-medium text-slate-800 mb-2" }, "\u6682\u65E0\u9884\u8BA2\u6570\u636E"), /* @__PURE__ */ React23.createElement("p", { className: "text-sm sm:text-base text-slate-600" }, totalItems === 0 ? "\u5F53\u524D\u7B5B\u9009\u6761\u4EF6\u4E0B\u6CA1\u6709\u627E\u5230\u9884\u8BA2\u6570\u636E" : "\u5F53\u524D\u9875\u65E0\u6570\u636E")) : paginatedBookings.map((booking) => {
2870
2872
  const statusInfo = getStatusInfo(booking.status);
2871
- return /* @__PURE__ */ React29.createElement("div", { key: booking.id, className: "bg-white rounded-lg shadow-sm border border-slate-200 overflow-hidden" }, /* @__PURE__ */ React29.createElement("div", { className: "p-4 sm:p-6" }, /* @__PURE__ */ React29.createElement("div", { className: "flex flex-col sm:flex-row sm:items-start sm:justify-between gap-4 mb-4" }, /* @__PURE__ */ React29.createElement("div", { className: "flex items-start gap-3 sm:gap-4" }, booking.collection.coverImage ? /* @__PURE__ */ React29.createElement(
2873
+ return /* @__PURE__ */ React23.createElement("div", { key: booking.id, className: "bg-white rounded-lg shadow-sm border border-slate-200 overflow-hidden" }, /* @__PURE__ */ React23.createElement("div", { className: "p-4 sm:p-6" }, /* @__PURE__ */ React23.createElement("div", { className: "flex flex-col sm:flex-row sm:items-start sm:justify-between gap-4 mb-4" }, /* @__PURE__ */ React23.createElement("div", { className: "flex items-start gap-3 sm:gap-4" }, booking.collection.coverImage ? /* @__PURE__ */ React23.createElement(
2872
2874
  "img",
2873
2875
  {
2874
2876
  src: booking.collection.coverImage,
2875
2877
  alt: booking.collection.title,
2876
2878
  className: "w-12 h-12 sm:w-16 sm:h-16 object-cover rounded-lg flex-shrink-0"
2877
2879
  }
2878
- ) : /* @__PURE__ */ React29.createElement("div", { className: "w-12 h-12 sm:w-16 sm:h-16 bg-slate-100 rounded-lg flex-shrink-0 flex items-center justify-center text-slate-400 text-xs" }, "\u6682\u65E0"), /* @__PURE__ */ React29.createElement("div", { className: "min-w-0 flex-1" }, /* @__PURE__ */ React29.createElement("h3", { className: "text-base sm:text-lg font-semibold text-slate-800 truncate" }, booking.collection.title), /* @__PURE__ */ React29.createElement("p", { className: "text-sm text-slate-600" }, "\u7F16\u53F7\uFF1A", booking.collection.number), /* @__PURE__ */ React29.createElement("p", { className: "text-sm text-slate-600" }, "QQ\u53F7\uFF1A", booking.qqNumber), booking.phoneNumber && /* @__PURE__ */ React29.createElement("p", { className: "text-sm text-slate-600" }, "\u624B\u673A\u53F7\uFF1A", booking.phoneNumber))), /* @__PURE__ */ React29.createElement("div", { className: "text-left sm:text-right" }, /* @__PURE__ */ React29.createElement("span", { className: `inline-flex items-center px-2.5 py-0.5 rounded-full text-xs font-medium ${statusInfo.color}` }, statusInfo.label), /* @__PURE__ */ React29.createElement("p", { className: "text-sm text-slate-500 mt-1" }, "# ", booking.id))), /* @__PURE__ */ React29.createElement("div", { className: "grid grid-cols-2 sm:grid-cols-4 gap-4 mb-4" }, /* @__PURE__ */ React29.createElement("div", null, /* @__PURE__ */ React29.createElement("p", { className: "text-xs text-slate-500" }, "\u6570\u91CF"), /* @__PURE__ */ React29.createElement("p", { className: "text-sm font-medium text-slate-800" }, booking.quantity)), /* @__PURE__ */ React29.createElement("div", null, /* @__PURE__ */ React29.createElement("p", { className: "text-xs text-slate-500" }, "\u5355\u4EF7"), /* @__PURE__ */ React29.createElement("p", { className: "text-sm font-medium text-slate-800" }, "\xA5", booking.collection.price)), /* @__PURE__ */ React29.createElement("div", null, /* @__PURE__ */ React29.createElement("p", { className: "text-xs text-slate-500" }, "\u603B\u4EF7"), /* @__PURE__ */ React29.createElement("p", { className: "text-sm font-medium text-slate-800" }, "\xA5", booking.totalPrice)), /* @__PURE__ */ React29.createElement("div", null, /* @__PURE__ */ React29.createElement("p", { className: "text-xs text-slate-500" }, "\u9884\u8BA2\u65F6\u95F4"), /* @__PURE__ */ React29.createElement("p", { className: "text-sm font-medium text-slate-800" }, formatTime(booking.createdAt)))), /* @__PURE__ */ React29.createElement("div", { className: "grid grid-cols-2 sm:grid-cols-3 gap-4 mb-4" }, /* @__PURE__ */ React29.createElement("div", null, /* @__PURE__ */ React29.createElement("p", { className: "text-xs text-slate-500" }, "QQ\u53F7"), /* @__PURE__ */ React29.createElement("p", { className: "text-sm font-medium text-slate-800" }, booking.qqNumber)), /* @__PURE__ */ React29.createElement("div", null, /* @__PURE__ */ React29.createElement("p", { className: "text-xs text-slate-500" }, "\u624B\u673A\u53F7"), /* @__PURE__ */ React29.createElement("p", { className: "text-sm font-medium text-slate-800" }, booking.phoneNumber))), /* @__PURE__ */ React29.createElement("div", { className: "grid grid-cols-2 sm:grid-cols-3 gap-4 mb-4" }, booking.confirmedAt && /* @__PURE__ */ React29.createElement("div", null, /* @__PURE__ */ React29.createElement("p", { className: "text-xs text-slate-500" }, "\u786E\u8BA4\u65F6\u95F4"), /* @__PURE__ */ React29.createElement("p", { className: "text-sm font-medium text-green-800" }, formatTime(booking.confirmedAt))), booking.completedAt && /* @__PURE__ */ React29.createElement("div", null, /* @__PURE__ */ React29.createElement("p", { className: "text-xs text-slate-500" }, "\u5B8C\u6210\u65F6\u95F4"), /* @__PURE__ */ React29.createElement("p", { className: "text-sm font-medium text-blue-800" }, formatTime(booking.completedAt))), booking.cancelledAt && /* @__PURE__ */ React29.createElement("div", null, /* @__PURE__ */ React29.createElement("p", { className: "text-xs text-slate-500" }, "\u53D6\u6D88\u65F6\u95F4"), /* @__PURE__ */ React29.createElement("p", { className: "text-sm font-medium text-red-800" }, formatTime(booking.cancelledAt)))), (booking.notes || booking.adminNotes || booking.pickupMethod) && /* @__PURE__ */ React29.createElement("div", { className: "mb-4" }, booking.pickupMethod && /* @__PURE__ */ React29.createElement("div", { className: "mb-2" }, /* @__PURE__ */ React29.createElement("p", { className: "text-xs text-slate-500" }, "\u9886\u53D6\u65B9\u5F0F \u8BF7\u586B\u51992\u670810\u53F7\u4EE5\u540E\u80FD\u6536\u5230\u8D27\u7684\u5730\u5740 \uFF081\uFF09\u6536\u4EF6\u4EBA \uFF082\uFF09\u6536\u4EF6\u5730\u5740 \uFF083\uFF09\u6536\u4EF6\u624B\u673A\u53F7"), /* @__PURE__ */ React29.createElement("p", { className: "text-sm text-slate-700" }, booking.pickupMethod)), booking.notes && /* @__PURE__ */ React29.createElement("div", { className: "mb-2" }, /* @__PURE__ */ React29.createElement("p", { className: "text-xs text-slate-500" }, "\u7528\u6237\u5907\u6CE8\uFF1A \uFF081\uFF09\u8471\u97F5\u73AF\u4EACComicUniverse \uFF082\uFF09\u8471\u97F5\u73AF\u4EAC\u5916\u661F\u5F00\u62D3\u7FA4 \uFF083\uFF09\u8471\u97F5\u73AF\u4EAC\u6BD4\u90BB\u661F \uFF084\uFF09\u8471\u97F5\u73AF\u4EAC\u534E\u4E1C\u7FA4 \uFF085\uFF09\u8471\u97F5\u73AF\u4EAC\u5929\u6D25\u7FA4 \uFF086\uFF09\u8471\u97F5\u73AF\u4EAC\xB7\u56DB\u7EF4\u7A7A\u95F4"), /* @__PURE__ */ React29.createElement("p", { className: "text-sm text-slate-700" }, booking.notes)), booking.adminNotes && /* @__PURE__ */ React29.createElement("div", null, /* @__PURE__ */ React29.createElement("p", { className: "text-xs text-slate-500" }, "\u7BA1\u7406\u5458\u5907\u6CE8"), /* @__PURE__ */ React29.createElement("p", { className: "text-sm text-slate-700" }, booking.adminNotes))), /* @__PURE__ */ React29.createElement("div", { className: "flex flex-col sm:flex-row gap-2" }, editingBooking === booking.id ? /* @__PURE__ */ React29.createElement(React29.Fragment, null, /* @__PURE__ */ React29.createElement(
2880
+ ) : /* @__PURE__ */ React23.createElement("div", { className: "w-12 h-12 sm:w-16 sm:h-16 bg-slate-100 rounded-lg flex-shrink-0 flex items-center justify-center text-slate-400 text-xs" }, "\u6682\u65E0"), /* @__PURE__ */ React23.createElement("div", { className: "min-w-0 flex-1" }, /* @__PURE__ */ React23.createElement("h3", { className: "text-base sm:text-lg font-semibold text-slate-800 truncate" }, booking.collection.title), /* @__PURE__ */ React23.createElement("p", { className: "text-sm text-slate-600" }, "\u7F16\u53F7\uFF1A", booking.collection.number), /* @__PURE__ */ React23.createElement("p", { className: "text-sm text-slate-600" }, "QQ\u53F7\uFF1A", booking.qqNumber), booking.phoneNumber && /* @__PURE__ */ React23.createElement("p", { className: "text-sm text-slate-600" }, "\u624B\u673A\u53F7\uFF1A", booking.phoneNumber))), /* @__PURE__ */ React23.createElement("div", { className: "text-left sm:text-right" }, /* @__PURE__ */ React23.createElement("span", { className: `inline-flex items-center px-2.5 py-0.5 rounded-full text-xs font-medium ${statusInfo.color}` }, statusInfo.label), /* @__PURE__ */ React23.createElement("p", { className: "text-sm text-slate-500 mt-1" }, "# ", booking.id))), /* @__PURE__ */ React23.createElement("div", { className: "grid grid-cols-2 sm:grid-cols-4 gap-4 mb-4" }, /* @__PURE__ */ React23.createElement("div", null, /* @__PURE__ */ React23.createElement("p", { className: "text-xs text-slate-500" }, "\u6570\u91CF"), /* @__PURE__ */ React23.createElement("p", { className: "text-sm font-medium text-slate-800" }, booking.quantity)), /* @__PURE__ */ React23.createElement("div", null, /* @__PURE__ */ React23.createElement("p", { className: "text-xs text-slate-500" }, "\u5355\u4EF7"), /* @__PURE__ */ React23.createElement("p", { className: "text-sm font-medium text-slate-800" }, "\xA5", booking.collection.price)), /* @__PURE__ */ React23.createElement("div", null, /* @__PURE__ */ React23.createElement("p", { className: "text-xs text-slate-500" }, "\u603B\u4EF7"), /* @__PURE__ */ React23.createElement("p", { className: "text-sm font-medium text-slate-800" }, "\xA5", booking.totalPrice)), /* @__PURE__ */ React23.createElement("div", null, /* @__PURE__ */ React23.createElement("p", { className: "text-xs text-slate-500" }, "\u9884\u8BA2\u65F6\u95F4"), /* @__PURE__ */ React23.createElement("p", { className: "text-sm font-medium text-slate-800" }, formatTime(booking.createdAt)))), /* @__PURE__ */ React23.createElement("div", { className: "grid grid-cols-2 sm:grid-cols-3 gap-4 mb-4" }, /* @__PURE__ */ React23.createElement("div", null, /* @__PURE__ */ React23.createElement("p", { className: "text-xs text-slate-500" }, "QQ\u53F7"), /* @__PURE__ */ React23.createElement("p", { className: "text-sm font-medium text-slate-800" }, booking.qqNumber)), /* @__PURE__ */ React23.createElement("div", null, /* @__PURE__ */ React23.createElement("p", { className: "text-xs text-slate-500" }, "\u624B\u673A\u53F7"), /* @__PURE__ */ React23.createElement("p", { className: "text-sm font-medium text-slate-800" }, booking.phoneNumber))), /* @__PURE__ */ React23.createElement("div", { className: "grid grid-cols-2 sm:grid-cols-3 gap-4 mb-4" }, booking.confirmedAt && /* @__PURE__ */ React23.createElement("div", null, /* @__PURE__ */ React23.createElement("p", { className: "text-xs text-slate-500" }, "\u786E\u8BA4\u65F6\u95F4"), /* @__PURE__ */ React23.createElement("p", { className: "text-sm font-medium text-green-800" }, formatTime(booking.confirmedAt))), booking.completedAt && /* @__PURE__ */ React23.createElement("div", null, /* @__PURE__ */ React23.createElement("p", { className: "text-xs text-slate-500" }, "\u5B8C\u6210\u65F6\u95F4"), /* @__PURE__ */ React23.createElement("p", { className: "text-sm font-medium text-blue-800" }, formatTime(booking.completedAt))), booking.cancelledAt && /* @__PURE__ */ React23.createElement("div", null, /* @__PURE__ */ React23.createElement("p", { className: "text-xs text-slate-500" }, "\u53D6\u6D88\u65F6\u95F4"), /* @__PURE__ */ React23.createElement("p", { className: "text-sm font-medium text-red-800" }, formatTime(booking.cancelledAt)))), (booking.notes || booking.adminNotes || booking.pickupMethod) && /* @__PURE__ */ React23.createElement("div", { className: "mb-4" }, booking.pickupMethod && /* @__PURE__ */ React23.createElement("div", { className: "mb-2" }, /* @__PURE__ */ React23.createElement("p", { className: "text-xs text-slate-500" }, "\u9886\u53D6\u65B9\u5F0F \u8BF7\u586B\u51992\u670810\u53F7\u4EE5\u540E\u80FD\u6536\u5230\u8D27\u7684\u5730\u5740 \uFF081\uFF09\u6536\u4EF6\u4EBA \uFF082\uFF09\u6536\u4EF6\u5730\u5740 \uFF083\uFF09\u6536\u4EF6\u624B\u673A\u53F7"), /* @__PURE__ */ React23.createElement("p", { className: "text-sm text-slate-700" }, booking.pickupMethod)), booking.notes && /* @__PURE__ */ React23.createElement("div", { className: "mb-2" }, /* @__PURE__ */ React23.createElement("p", { className: "text-xs text-slate-500" }, "\u7528\u6237\u5907\u6CE8\uFF1A \uFF081\uFF09\u8471\u97F5\u73AF\u4EACComicUniverse \uFF082\uFF09\u8471\u97F5\u73AF\u4EAC\u5916\u661F\u5F00\u62D3\u7FA4 \uFF083\uFF09\u8471\u97F5\u73AF\u4EAC\u6BD4\u90BB\u661F \uFF084\uFF09\u8471\u97F5\u73AF\u4EAC\u534E\u4E1C\u7FA4 \uFF085\uFF09\u8471\u97F5\u73AF\u4EAC\u5929\u6D25\u7FA4 \uFF086\uFF09\u8471\u97F5\u73AF\u4EAC\xB7\u56DB\u7EF4\u7A7A\u95F4"), /* @__PURE__ */ React23.createElement("p", { className: "text-sm text-slate-700" }, booking.notes)), booking.adminNotes && /* @__PURE__ */ React23.createElement("div", null, /* @__PURE__ */ React23.createElement("p", { className: "text-xs text-slate-500" }, "\u7BA1\u7406\u5458\u5907\u6CE8"), /* @__PURE__ */ React23.createElement("p", { className: "text-sm text-slate-700" }, booking.adminNotes))), /* @__PURE__ */ React23.createElement("div", { className: "flex flex-col sm:flex-row gap-2" }, editingBooking === booking.id ? /* @__PURE__ */ React23.createElement(React23.Fragment, null, /* @__PURE__ */ React23.createElement(
2879
2881
  "select",
2880
2882
  {
2881
2883
  value: editForm.status,
2882
2884
  onChange: (e) => setEditForm((prev) => ({ ...prev, status: e.target.value })),
2883
2885
  className: "flex-1 px-3 py-2 border border-slate-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-500"
2884
2886
  },
2885
- /* @__PURE__ */ React29.createElement("option", { value: "pending" }, "\u5F85\u786E\u8BA4"),
2886
- /* @__PURE__ */ React29.createElement("option", { value: "confirmed" }, "\u5DF2\u786E\u8BA4"),
2887
- /* @__PURE__ */ React29.createElement("option", { value: "completed" }, "\u5DF2\u5B8C\u6210"),
2888
- /* @__PURE__ */ React29.createElement("option", { value: "cancelled" }, "\u5DF2\u53D6\u6D88")
2889
- ), /* @__PURE__ */ React29.createElement(
2887
+ /* @__PURE__ */ React23.createElement("option", { value: "pending" }, "\u5F85\u786E\u8BA4"),
2888
+ /* @__PURE__ */ React23.createElement("option", { value: "confirmed" }, "\u5DF2\u786E\u8BA4"),
2889
+ /* @__PURE__ */ React23.createElement("option", { value: "completed" }, "\u5DF2\u5B8C\u6210"),
2890
+ /* @__PURE__ */ React23.createElement("option", { value: "cancelled" }, "\u5DF2\u53D6\u6D88")
2891
+ ), /* @__PURE__ */ React23.createElement(
2890
2892
  "input",
2891
2893
  {
2892
2894
  type: "text",
@@ -2895,51 +2897,51 @@ var BookingAdminPanel = ({
2895
2897
  placeholder: "\u7BA1\u7406\u5458\u5907\u6CE8",
2896
2898
  className: "flex-1 px-3 py-2 border border-slate-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-500"
2897
2899
  }
2898
- ), /* @__PURE__ */ React29.createElement(
2900
+ ), /* @__PURE__ */ React23.createElement(
2899
2901
  "button",
2900
2902
  {
2901
2903
  onClick: handleSaveEdit,
2902
2904
  className: "flex items-center justify-center gap-2 px-4 py-2 bg-green-600 text-white rounded-lg font-medium hover:bg-green-700 transition-colors"
2903
2905
  },
2904
- /* @__PURE__ */ React29.createElement(Save, { size: 16 }),
2906
+ /* @__PURE__ */ React23.createElement(Save, { size: 16 }),
2905
2907
  "\u4FDD\u5B58"
2906
- ), /* @__PURE__ */ React29.createElement(
2908
+ ), /* @__PURE__ */ React23.createElement(
2907
2909
  "button",
2908
2910
  {
2909
2911
  onClick: handleCancelEdit,
2910
2912
  className: "flex items-center justify-center gap-2 px-4 py-2 bg-slate-100 text-slate-700 rounded-lg font-medium hover:bg-slate-200 transition-colors"
2911
2913
  },
2912
- /* @__PURE__ */ React29.createElement(X, { size: 16 }),
2914
+ /* @__PURE__ */ React23.createElement(X, { size: 16 }),
2913
2915
  "\u53D6\u6D88"
2914
- )) : /* @__PURE__ */ React29.createElement(React29.Fragment, null, /* @__PURE__ */ React29.createElement(
2916
+ )) : /* @__PURE__ */ React23.createElement(React23.Fragment, null, /* @__PURE__ */ React23.createElement(
2915
2917
  "button",
2916
2918
  {
2917
2919
  onClick: () => handleEditBooking(booking),
2918
2920
  className: "flex items-center justify-center gap-2 px-4 py-2 bg-blue-600 text-white rounded-lg font-medium hover:bg-blue-700 transition-colors"
2919
2921
  },
2920
- /* @__PURE__ */ React29.createElement(Edit, { size: 16 }),
2922
+ /* @__PURE__ */ React23.createElement(Edit, { size: 16 }),
2921
2923
  "\u7F16\u8F91"
2922
- ), /* @__PURE__ */ React29.createElement(
2924
+ ), /* @__PURE__ */ React23.createElement(
2923
2925
  "button",
2924
2926
  {
2925
2927
  onClick: () => handleDeleteBooking(booking.id),
2926
2928
  className: "flex items-center justify-center gap-2 px-4 py-2 bg-red-600 text-white rounded-lg font-medium hover:bg-red-700 transition-colors"
2927
2929
  },
2928
- /* @__PURE__ */ React29.createElement(Trash2, { size: 16 }),
2930
+ /* @__PURE__ */ React23.createElement(Trash2, { size: 16 }),
2929
2931
  "\u5220\u9664"
2930
2932
  )))));
2931
- })), totalItems > 0 && /* @__PURE__ */ React29.createElement("div", { className: "bg-white rounded-lg shadow-sm border border-slate-200 p-4 sm:p-6" }, /* @__PURE__ */ React29.createElement("div", { className: "flex flex-col sm:flex-row sm:items-center sm:justify-between gap-4" }, /* @__PURE__ */ React29.createElement("div", { className: "flex items-center gap-4" }, /* @__PURE__ */ React29.createElement("div", { className: "text-sm text-slate-600" }, "\u5171 ", totalItems, " \u6761\u8BB0\u5F55\uFF0C\u7B2C ", currentPage, " / ", totalPages, " \u9875"), /* @__PURE__ */ React29.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ React29.createElement("span", { className: "text-sm text-slate-600" }, "\u6BCF\u9875\u663E\u793A"), /* @__PURE__ */ React29.createElement(
2933
+ })), totalItems > 0 && /* @__PURE__ */ React23.createElement("div", { className: "bg-white rounded-lg shadow-sm border border-slate-200 p-4 sm:p-6" }, /* @__PURE__ */ React23.createElement("div", { className: "flex flex-col sm:flex-row sm:items-center sm:justify-between gap-4" }, /* @__PURE__ */ React23.createElement("div", { className: "flex items-center gap-4" }, /* @__PURE__ */ React23.createElement("div", { className: "text-sm text-slate-600" }, "\u5171 ", totalItems, " \u6761\u8BB0\u5F55\uFF0C\u7B2C ", currentPage, " / ", totalPages, " \u9875"), /* @__PURE__ */ React23.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ React23.createElement("span", { className: "text-sm text-slate-600" }, "\u6BCF\u9875\u663E\u793A"), /* @__PURE__ */ React23.createElement(
2932
2934
  "select",
2933
2935
  {
2934
2936
  value: pageSize,
2935
2937
  onChange: (e) => handlePageSizeChange(Number(e.target.value)),
2936
2938
  className: "px-2 py-1 border border-slate-300 rounded text-sm focus:outline-none focus:ring-2 focus:ring-blue-500"
2937
2939
  },
2938
- /* @__PURE__ */ React29.createElement("option", { value: 5 }, "5"),
2939
- /* @__PURE__ */ React29.createElement("option", { value: 10 }, "10"),
2940
- /* @__PURE__ */ React29.createElement("option", { value: 20 }, "20"),
2941
- /* @__PURE__ */ React29.createElement("option", { value: 50 }, "50")
2942
- ), /* @__PURE__ */ React29.createElement("span", { className: "text-sm text-slate-600" }, "\u6761"))), /* @__PURE__ */ React29.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ React29.createElement(
2940
+ /* @__PURE__ */ React23.createElement("option", { value: 5 }, "5"),
2941
+ /* @__PURE__ */ React23.createElement("option", { value: 10 }, "10"),
2942
+ /* @__PURE__ */ React23.createElement("option", { value: 20 }, "20"),
2943
+ /* @__PURE__ */ React23.createElement("option", { value: 50 }, "50")
2944
+ ), /* @__PURE__ */ React23.createElement("span", { className: "text-sm text-slate-600" }, "\u6761"))), /* @__PURE__ */ React23.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ React23.createElement(
2943
2945
  "button",
2944
2946
  {
2945
2947
  onClick: () => handlePageChange(currentPage - 1),
@@ -2947,7 +2949,7 @@ var BookingAdminPanel = ({
2947
2949
  className: "px-3 py-1 text-sm border border-slate-300 rounded hover:bg-slate-50 disabled:opacity-50 disabled:cursor-not-allowed disabled:hover:bg-white"
2948
2950
  },
2949
2951
  "\u4E0A\u4E00\u9875"
2950
- ), /* @__PURE__ */ React29.createElement("div", { className: "flex items-center gap-1" }, Array.from({ length: Math.min(totalPages, 7) }, (_, index) => {
2952
+ ), /* @__PURE__ */ React23.createElement("div", { className: "flex items-center gap-1" }, Array.from({ length: Math.min(totalPages, 7) }, (_, index) => {
2951
2953
  let pageNum;
2952
2954
  if (totalPages <= 7) {
2953
2955
  pageNum = index + 1;
@@ -2956,7 +2958,7 @@ var BookingAdminPanel = ({
2956
2958
  if (index < 5) {
2957
2959
  pageNum = index + 1;
2958
2960
  } else if (index === 5) {
2959
- return /* @__PURE__ */ React29.createElement("span", { key: index, className: "px-2 text-slate-400" }, "...");
2961
+ return /* @__PURE__ */ React23.createElement("span", { key: index, className: "px-2 text-slate-400" }, "...");
2960
2962
  } else {
2961
2963
  pageNum = totalPages;
2962
2964
  }
@@ -2964,7 +2966,7 @@ var BookingAdminPanel = ({
2964
2966
  if (index === 0) {
2965
2967
  pageNum = 1;
2966
2968
  } else if (index === 1) {
2967
- return /* @__PURE__ */ React29.createElement("span", { key: index, className: "px-2 text-slate-400" }, "...");
2969
+ return /* @__PURE__ */ React23.createElement("span", { key: index, className: "px-2 text-slate-400" }, "...");
2968
2970
  } else {
2969
2971
  pageNum = totalPages - 5 + index;
2970
2972
  }
@@ -2972,17 +2974,17 @@ var BookingAdminPanel = ({
2972
2974
  if (index === 0) {
2973
2975
  pageNum = 1;
2974
2976
  } else if (index === 1) {
2975
- return /* @__PURE__ */ React29.createElement("span", { key: index, className: "px-2 text-slate-400" }, "...");
2977
+ return /* @__PURE__ */ React23.createElement("span", { key: index, className: "px-2 text-slate-400" }, "...");
2976
2978
  } else if (index >= 2 && index <= 4) {
2977
2979
  pageNum = currentPage - 3 + index;
2978
2980
  } else if (index === 5) {
2979
- return /* @__PURE__ */ React29.createElement("span", { key: index, className: "px-2 text-slate-400" }, "...");
2981
+ return /* @__PURE__ */ React23.createElement("span", { key: index, className: "px-2 text-slate-400" }, "...");
2980
2982
  } else {
2981
2983
  pageNum = totalPages;
2982
2984
  }
2983
2985
  }
2984
2986
  }
2985
- return /* @__PURE__ */ React29.createElement(
2987
+ return /* @__PURE__ */ React23.createElement(
2986
2988
  "button",
2987
2989
  {
2988
2990
  key: index,
@@ -2991,7 +2993,7 @@ var BookingAdminPanel = ({
2991
2993
  },
2992
2994
  pageNum
2993
2995
  );
2994
- })), /* @__PURE__ */ React29.createElement(
2996
+ })), /* @__PURE__ */ React23.createElement(
2995
2997
  "button",
2996
2998
  {
2997
2999
  onClick: () => handlePageChange(currentPage + 1),
@@ -2999,7 +3001,7 @@ var BookingAdminPanel = ({
2999
3001
  className: "px-3 py-1 text-sm border border-slate-300 rounded hover:bg-slate-50 disabled:opacity-50 disabled:cursor-not-allowed disabled:hover:bg-white"
3000
3002
  },
3001
3003
  "\u4E0B\u4E00\u9875"
3002
- ))), /* @__PURE__ */ React29.createElement("div", { className: "sm:hidden" }, /* @__PURE__ */ React29.createElement("div", { className: "flex items-center justify-between pt-4 border-t border-slate-200" }, /* @__PURE__ */ React29.createElement(
3004
+ ))), /* @__PURE__ */ React23.createElement("div", { className: "sm:hidden" }, /* @__PURE__ */ React23.createElement("div", { className: "flex items-center justify-between pt-4 border-t border-slate-200" }, /* @__PURE__ */ React23.createElement(
3003
3005
  "button",
3004
3006
  {
3005
3007
  onClick: () => handlePageChange(currentPage - 1),
@@ -3007,7 +3009,7 @@ var BookingAdminPanel = ({
3007
3009
  className: "flex items-center gap-2 px-4 py-2 text-sm bg-slate-100 rounded hover:bg-slate-200 disabled:opacity-50 disabled:cursor-not-allowed disabled:hover:bg-slate-100"
3008
3010
  },
3009
3011
  "\u4E0A\u4E00\u9875"
3010
- ), /* @__PURE__ */ React29.createElement("span", { className: "text-sm text-slate-600" }, currentPage, " / ", totalPages), /* @__PURE__ */ React29.createElement(
3012
+ ), /* @__PURE__ */ React23.createElement("span", { className: "text-sm text-slate-600" }, currentPage, " / ", totalPages), /* @__PURE__ */ React23.createElement(
3011
3013
  "button",
3012
3014
  {
3013
3015
  onClick: () => handlePageChange(currentPage + 1),
@@ -3015,21 +3017,21 @@ var BookingAdminPanel = ({
3015
3017
  className: "flex items-center gap-2 px-4 py-2 text-sm bg-slate-100 rounded hover:bg-slate-200 disabled:opacity-50 disabled:cursor-not-allowed disabled:hover:bg-slate-100"
3016
3018
  },
3017
3019
  "\u4E0B\u4E00\u9875"
3018
- )))), selectedBooking && /* @__PURE__ */ React29.createElement("div", { className: "fixed inset-0 bg-black bg-opacity-50 flex items-center justify-center p-4 z-50" }, /* @__PURE__ */ React29.createElement("div", { className: "bg-white rounded-lg shadow-xl max-w-2xl w-full max-h-[90vh] overflow-hidden" }, /* @__PURE__ */ React29.createElement("div", { className: "flex items-center justify-between p-4 sm:p-6 border-b border-slate-200" }, /* @__PURE__ */ React29.createElement("h2", { className: "text-lg sm:text-xl font-semibold text-slate-800" }, "\u9884\u8BA2\u8BE6\u60C5"), /* @__PURE__ */ React29.createElement(
3020
+ )))), selectedBooking && /* @__PURE__ */ React23.createElement("div", { className: "fixed inset-0 bg-black bg-opacity-50 flex items-center justify-center p-4 z-50" }, /* @__PURE__ */ React23.createElement("div", { className: "bg-white rounded-lg shadow-xl max-w-2xl w-full max-h-[90vh] overflow-hidden" }, /* @__PURE__ */ React23.createElement("div", { className: "flex items-center justify-between p-4 sm:p-6 border-b border-slate-200" }, /* @__PURE__ */ React23.createElement("h2", { className: "text-lg sm:text-xl font-semibold text-slate-800" }, "\u9884\u8BA2\u8BE6\u60C5"), /* @__PURE__ */ React23.createElement(
3019
3021
  "button",
3020
3022
  {
3021
3023
  onClick: () => setSelectedBooking(null),
3022
3024
  className: "text-slate-400 hover:text-slate-600 text-2xl font-bold leading-none p-1"
3023
3025
  },
3024
3026
  "\xD7"
3025
- )), /* @__PURE__ */ React29.createElement("div", { className: "p-4 sm:p-6 overflow-y-auto max-h-[calc(90vh-140px)]" }, /* @__PURE__ */ React29.createElement("div", { className: "space-y-6" }, /* @__PURE__ */ React29.createElement("div", null, /* @__PURE__ */ React29.createElement("h3", { className: "text-base sm:text-lg font-semibold text-slate-800 mb-3" }, "\u753B\u96C6\u4FE1\u606F"), /* @__PURE__ */ React29.createElement("div", { className: "flex items-start gap-3 sm:gap-4" }, selectedBooking.collection.coverImage ? /* @__PURE__ */ React29.createElement(
3027
+ )), /* @__PURE__ */ React23.createElement("div", { className: "p-4 sm:p-6 overflow-y-auto max-h-[calc(90vh-140px)]" }, /* @__PURE__ */ React23.createElement("div", { className: "space-y-6" }, /* @__PURE__ */ React23.createElement("div", null, /* @__PURE__ */ React23.createElement("h3", { className: "text-base sm:text-lg font-semibold text-slate-800 mb-3" }, "\u753B\u96C6\u4FE1\u606F"), /* @__PURE__ */ React23.createElement("div", { className: "flex items-start gap-3 sm:gap-4" }, selectedBooking.collection.coverImage ? /* @__PURE__ */ React23.createElement(
3026
3028
  "img",
3027
3029
  {
3028
3030
  src: selectedBooking.collection.coverImage,
3029
3031
  alt: selectedBooking.collection.title,
3030
3032
  className: "w-16 h-16 sm:w-20 sm:h-20 object-cover rounded-lg flex-shrink-0"
3031
3033
  }
3032
- ) : /* @__PURE__ */ React29.createElement("div", { className: "w-16 h-16 sm:w-20 sm:h-20 bg-slate-100 rounded-lg flex-shrink-0 flex items-center justify-center text-slate-400 text-xs" }, "\u6682\u65E0\u56FE\u7247"), /* @__PURE__ */ React29.createElement("div", { className: "min-w-0 flex-1" }, /* @__PURE__ */ React29.createElement("h4", { className: "font-medium text-slate-800 truncate" }, selectedBooking.collection.title), /* @__PURE__ */ React29.createElement("p", { className: "text-sm text-slate-600" }, "\u7F16\u53F7\uFF1A", selectedBooking.collection.number), /* @__PURE__ */ React29.createElement("p", { className: "text-sm text-slate-600" }, "\u4EF7\u683C\uFF1A\xA5", selectedBooking.collection.price || "\u5F85\u5B9A")))), /* @__PURE__ */ React29.createElement("div", null, /* @__PURE__ */ React29.createElement("h3", { className: "text-base sm:text-lg font-semibold text-slate-800 mb-3" }, "\u9884\u8BA2\u4FE1\u606F"), /* @__PURE__ */ React29.createElement("div", { className: "grid grid-cols-1 sm:grid-cols-2 gap-3 sm:gap-4" }, /* @__PURE__ */ React29.createElement("div", null, /* @__PURE__ */ React29.createElement("p", { className: "text-sm text-slate-500" }, "\u9884\u8BA2ID"), /* @__PURE__ */ React29.createElement("p", { className: "font-medium text-slate-800" }, "#", selectedBooking.id)), /* @__PURE__ */ React29.createElement("div", null, /* @__PURE__ */ React29.createElement("p", { className: "text-sm text-slate-500" }, "QQ\u53F7"), /* @__PURE__ */ React29.createElement("p", { className: "font-medium text-slate-800" }, selectedBooking.qqNumber)), selectedBooking.phoneNumber && /* @__PURE__ */ React29.createElement("div", null, /* @__PURE__ */ React29.createElement("p", { className: "text-sm text-slate-500" }, "\u624B\u673A\u53F7"), /* @__PURE__ */ React29.createElement("p", { className: "font-medium text-slate-800" }, selectedBooking.phoneNumber)), /* @__PURE__ */ React29.createElement("div", null, /* @__PURE__ */ React29.createElement("p", { className: "text-sm text-slate-500" }, "\u9884\u8BA2\u6570\u91CF"), /* @__PURE__ */ React29.createElement("p", { className: "font-medium text-slate-800" }, selectedBooking.quantity)), /* @__PURE__ */ React29.createElement("div", null, /* @__PURE__ */ React29.createElement("p", { className: "text-sm text-slate-500" }, "\u603B\u4EF7\u683C"), /* @__PURE__ */ React29.createElement("p", { className: "font-medium text-slate-800" }, "\xA5", selectedBooking.totalPrice)), /* @__PURE__ */ React29.createElement("div", null, /* @__PURE__ */ React29.createElement("p", { className: "text-sm text-slate-500" }, "\u72B6\u6001"), /* @__PURE__ */ React29.createElement("span", { className: `inline-flex items-center px-2.5 py-0.5 rounded-full text-xs font-medium ${getStatusInfo(selectedBooking.status).color}` }, getStatusInfo(selectedBooking.status).label)))), /* @__PURE__ */ React29.createElement("div", null, /* @__PURE__ */ React29.createElement("h3", { className: "text-base sm:text-lg font-semibold text-slate-800 mb-3" }, "\u65F6\u95F4\u4FE1\u606F"), /* @__PURE__ */ React29.createElement("div", { className: "space-y-2" }, /* @__PURE__ */ React29.createElement("div", null, /* @__PURE__ */ React29.createElement("p", { className: "text-sm text-slate-500" }, "\u9884\u8BA2\u65F6\u95F4"), /* @__PURE__ */ React29.createElement("p", { className: "text-sm font-medium text-slate-800" }, formatTime(selectedBooking.createdAt))), /* @__PURE__ */ React29.createElement("div", null, /* @__PURE__ */ React29.createElement("p", { className: "text-sm text-slate-500" }, "\u66F4\u65B0\u65F6\u95F4"), /* @__PURE__ */ React29.createElement("p", { className: "text-sm font-medium text-slate-800" }, formatTime(selectedBooking.updatedAt))), selectedBooking.confirmedAt && /* @__PURE__ */ React29.createElement("div", null, /* @__PURE__ */ React29.createElement("p", { className: "text-sm text-slate-500" }, "\u786E\u8BA4\u65F6\u95F4"), /* @__PURE__ */ React29.createElement("p", { className: "text-sm font-medium text-slate-800" }, formatTime(selectedBooking.confirmedAt))), selectedBooking.completedAt && /* @__PURE__ */ React29.createElement("div", null, /* @__PURE__ */ React29.createElement("p", { className: "text-sm text-slate-500" }, "\u5B8C\u6210\u65F6\u95F4"), /* @__PURE__ */ React29.createElement("p", { className: "text-sm font-medium text-slate-800" }, formatTime(selectedBooking.completedAt))), selectedBooking.cancelledAt && /* @__PURE__ */ React29.createElement("div", null, /* @__PURE__ */ React29.createElement("p", { className: "text-sm text-slate-500" }, "\u53D6\u6D88\u65F6\u95F4"), /* @__PURE__ */ React29.createElement("p", { className: "text-sm font-medium text-slate-800" }, formatTime(selectedBooking.cancelledAt))))), selectedBooking.notes && /* @__PURE__ */ React29.createElement("div", null, /* @__PURE__ */ React29.createElement("h3", { className: "text-base sm:text-lg font-semibold text-slate-800 mb-3" }, "\u7528\u6237\u5907\u6CE8"), /* @__PURE__ */ React29.createElement("p", { className: "text-sm text-slate-800 bg-slate-50 p-4 rounded-lg break-words" }, selectedBooking.notes)), selectedBooking.adminNotes && /* @__PURE__ */ React29.createElement("div", null, /* @__PURE__ */ React29.createElement("h3", { className: "text-base sm:text-lg font-semibold text-slate-800 mb-3" }, "\u7BA1\u7406\u5458\u5907\u6CE8"), /* @__PURE__ */ React29.createElement("p", { className: "text-sm text-slate-800 bg-slate-50 p-4 rounded-lg break-words" }, selectedBooking.adminNotes)))))));
3034
+ ) : /* @__PURE__ */ React23.createElement("div", { className: "w-16 h-16 sm:w-20 sm:h-20 bg-slate-100 rounded-lg flex-shrink-0 flex items-center justify-center text-slate-400 text-xs" }, "\u6682\u65E0\u56FE\u7247"), /* @__PURE__ */ React23.createElement("div", { className: "min-w-0 flex-1" }, /* @__PURE__ */ React23.createElement("h4", { className: "font-medium text-slate-800 truncate" }, selectedBooking.collection.title), /* @__PURE__ */ React23.createElement("p", { className: "text-sm text-slate-600" }, "\u7F16\u53F7\uFF1A", selectedBooking.collection.number), /* @__PURE__ */ React23.createElement("p", { className: "text-sm text-slate-600" }, "\u4EF7\u683C\uFF1A\xA5", selectedBooking.collection.price || "\u5F85\u5B9A")))), /* @__PURE__ */ React23.createElement("div", null, /* @__PURE__ */ React23.createElement("h3", { className: "text-base sm:text-lg font-semibold text-slate-800 mb-3" }, "\u9884\u8BA2\u4FE1\u606F"), /* @__PURE__ */ React23.createElement("div", { className: "grid grid-cols-1 sm:grid-cols-2 gap-3 sm:gap-4" }, /* @__PURE__ */ React23.createElement("div", null, /* @__PURE__ */ React23.createElement("p", { className: "text-sm text-slate-500" }, "\u9884\u8BA2ID"), /* @__PURE__ */ React23.createElement("p", { className: "font-medium text-slate-800" }, "#", selectedBooking.id)), /* @__PURE__ */ React23.createElement("div", null, /* @__PURE__ */ React23.createElement("p", { className: "text-sm text-slate-500" }, "QQ\u53F7"), /* @__PURE__ */ React23.createElement("p", { className: "font-medium text-slate-800" }, selectedBooking.qqNumber)), selectedBooking.phoneNumber && /* @__PURE__ */ React23.createElement("div", null, /* @__PURE__ */ React23.createElement("p", { className: "text-sm text-slate-500" }, "\u624B\u673A\u53F7"), /* @__PURE__ */ React23.createElement("p", { className: "font-medium text-slate-800" }, selectedBooking.phoneNumber)), /* @__PURE__ */ React23.createElement("div", null, /* @__PURE__ */ React23.createElement("p", { className: "text-sm text-slate-500" }, "\u9884\u8BA2\u6570\u91CF"), /* @__PURE__ */ React23.createElement("p", { className: "font-medium text-slate-800" }, selectedBooking.quantity)), /* @__PURE__ */ React23.createElement("div", null, /* @__PURE__ */ React23.createElement("p", { className: "text-sm text-slate-500" }, "\u603B\u4EF7\u683C"), /* @__PURE__ */ React23.createElement("p", { className: "font-medium text-slate-800" }, "\xA5", selectedBooking.totalPrice)), /* @__PURE__ */ React23.createElement("div", null, /* @__PURE__ */ React23.createElement("p", { className: "text-sm text-slate-500" }, "\u72B6\u6001"), /* @__PURE__ */ React23.createElement("span", { className: `inline-flex items-center px-2.5 py-0.5 rounded-full text-xs font-medium ${getStatusInfo(selectedBooking.status).color}` }, getStatusInfo(selectedBooking.status).label)))), /* @__PURE__ */ React23.createElement("div", null, /* @__PURE__ */ React23.createElement("h3", { className: "text-base sm:text-lg font-semibold text-slate-800 mb-3" }, "\u65F6\u95F4\u4FE1\u606F"), /* @__PURE__ */ React23.createElement("div", { className: "space-y-2" }, /* @__PURE__ */ React23.createElement("div", null, /* @__PURE__ */ React23.createElement("p", { className: "text-sm text-slate-500" }, "\u9884\u8BA2\u65F6\u95F4"), /* @__PURE__ */ React23.createElement("p", { className: "text-sm font-medium text-slate-800" }, formatTime(selectedBooking.createdAt))), /* @__PURE__ */ React23.createElement("div", null, /* @__PURE__ */ React23.createElement("p", { className: "text-sm text-slate-500" }, "\u66F4\u65B0\u65F6\u95F4"), /* @__PURE__ */ React23.createElement("p", { className: "text-sm font-medium text-slate-800" }, formatTime(selectedBooking.updatedAt))), selectedBooking.confirmedAt && /* @__PURE__ */ React23.createElement("div", null, /* @__PURE__ */ React23.createElement("p", { className: "text-sm text-slate-500" }, "\u786E\u8BA4\u65F6\u95F4"), /* @__PURE__ */ React23.createElement("p", { className: "text-sm font-medium text-slate-800" }, formatTime(selectedBooking.confirmedAt))), selectedBooking.completedAt && /* @__PURE__ */ React23.createElement("div", null, /* @__PURE__ */ React23.createElement("p", { className: "text-sm text-slate-500" }, "\u5B8C\u6210\u65F6\u95F4"), /* @__PURE__ */ React23.createElement("p", { className: "text-sm font-medium text-slate-800" }, formatTime(selectedBooking.completedAt))), selectedBooking.cancelledAt && /* @__PURE__ */ React23.createElement("div", null, /* @__PURE__ */ React23.createElement("p", { className: "text-sm text-slate-500" }, "\u53D6\u6D88\u65F6\u95F4"), /* @__PURE__ */ React23.createElement("p", { className: "text-sm font-medium text-slate-800" }, formatTime(selectedBooking.cancelledAt))))), selectedBooking.notes && /* @__PURE__ */ React23.createElement("div", null, /* @__PURE__ */ React23.createElement("h3", { className: "text-base sm:text-lg font-semibold text-slate-800 mb-3" }, "\u7528\u6237\u5907\u6CE8"), /* @__PURE__ */ React23.createElement("p", { className: "text-sm text-slate-800 bg-slate-50 p-4 rounded-lg break-words" }, selectedBooking.notes)), selectedBooking.adminNotes && /* @__PURE__ */ React23.createElement("div", null, /* @__PURE__ */ React23.createElement("h3", { className: "text-base sm:text-lg font-semibold text-slate-800 mb-3" }, "\u7BA1\u7406\u5458\u5907\u6CE8"), /* @__PURE__ */ React23.createElement("p", { className: "text-sm text-slate-800 bg-slate-50 p-4 rounded-lg break-words" }, selectedBooking.adminNotes)))))));
3033
3035
  };
3034
3036
  var BookingModal = ({
3035
3037
  isOpen,
@@ -3038,7 +3040,7 @@ var BookingModal = ({
3038
3040
  width = "90vw",
3039
3041
  height = "90vh"
3040
3042
  }) => {
3041
- return /* @__PURE__ */ React29.createElement(
3043
+ return /* @__PURE__ */ React23.createElement(
3042
3044
  Modal,
3043
3045
  {
3044
3046
  isOpen,
@@ -3048,7 +3050,7 @@ var BookingModal = ({
3048
3050
  maskClosable: false,
3049
3051
  className: "max-w-6xl"
3050
3052
  },
3051
- /* @__PURE__ */ React29.createElement(BookingPage, { onClose })
3053
+ /* @__PURE__ */ React23.createElement(BookingPage, { onClose })
3052
3054
  );
3053
3055
  };
3054
3056
  init_hooks();
@@ -3093,14 +3095,14 @@ var BookingPage = ({ onClose }) => {
3093
3095
  };
3094
3096
  const selectedCollection = collections.find((c) => c.id === formData.collectionId);
3095
3097
  if (submitted) {
3096
- return /* @__PURE__ */ React29.createElement("div", { className: "max-w-2xl mx-auto p-6" }, /* @__PURE__ */ React29.createElement("div", { className: "text-center" }, /* @__PURE__ */ React29.createElement("div", { className: "text-green-500 text-6xl mb-4" }, "\u2705"), /* @__PURE__ */ React29.createElement("h2", { className: "text-2xl font-bold text-gray-900 mb-4" }, "\u9884\u8BA2\u63D0\u4EA4\u6210\u529F\uFF01"), /* @__PURE__ */ React29.createElement("p", { className: "text-gray-600 mb-6" }, "\u60A8\u7684\u9884\u8BA2\u5DF2\u6210\u529F\u63D0\u4EA4\uFF0C\u6211\u4EEC\u4F1A\u5C3D\u5FEB\u4E0E\u60A8\u8054\u7CFB\u786E\u8BA4\u3002"), /* @__PURE__ */ React29.createElement("div", { className: "space-y-3" }, /* @__PURE__ */ React29.createElement(
3098
+ return /* @__PURE__ */ React23.createElement("div", { className: "max-w-2xl mx-auto p-6" }, /* @__PURE__ */ React23.createElement("div", { className: "text-center" }, /* @__PURE__ */ React23.createElement("div", { className: "text-green-500 text-6xl mb-4" }, "\u2705"), /* @__PURE__ */ React23.createElement("h2", { className: "text-2xl font-bold text-gray-900 mb-4" }, "\u9884\u8BA2\u63D0\u4EA4\u6210\u529F\uFF01"), /* @__PURE__ */ React23.createElement("p", { className: "text-gray-600 mb-6" }, "\u60A8\u7684\u9884\u8BA2\u5DF2\u6210\u529F\u63D0\u4EA4\uFF0C\u6211\u4EEC\u4F1A\u5C3D\u5FEB\u4E0E\u60A8\u8054\u7CFB\u786E\u8BA4\u3002"), /* @__PURE__ */ React23.createElement("div", { className: "space-y-3" }, /* @__PURE__ */ React23.createElement(
3097
3099
  "button",
3098
3100
  {
3099
3101
  onClick: handleNewBooking,
3100
3102
  className: "w-full bg-blue-600 text-white py-2 px-4 rounded-lg hover:bg-blue-700 transition-colors"
3101
3103
  },
3102
3104
  "\u7EE7\u7EED\u9884\u8BA2\u5176\u4ED6\u753B\u96C6"
3103
- ), onClose && /* @__PURE__ */ React29.createElement(
3105
+ ), onClose && /* @__PURE__ */ React23.createElement(
3104
3106
  "button",
3105
3107
  {
3106
3108
  onClick: onClose,
@@ -3109,29 +3111,29 @@ var BookingPage = ({ onClose }) => {
3109
3111
  "\u5173\u95ED"
3110
3112
  ))));
3111
3113
  }
3112
- return /* @__PURE__ */ React29.createElement("div", { className: "max-w-4xl mx-auto p-6" }, /* @__PURE__ */ React29.createElement("div", { className: "text-center mb-8" }, /* @__PURE__ */ React29.createElement("h1", { className: "text-3xl font-bold text-gray-900 mb-2" }, "\u9884\u8BA2\u753B\u96C6"), /* @__PURE__ */ React29.createElement("p", { className: "text-gray-600" }, "\u9009\u62E9\u60A8\u559C\u6B22\u7684\u753B\u96C6\u5E76\u586B\u5199\u9884\u8BA2\u4FE1\u606F")), error && /* @__PURE__ */ React29.createElement("div", { className: "bg-red-50 border border-red-200 rounded-lg p-4 mb-6" }, /* @__PURE__ */ React29.createElement("div", { className: "flex" }, /* @__PURE__ */ React29.createElement("div", { className: "text-red-400 mr-3" }, /* @__PURE__ */ React29.createElement("svg", { className: "w-5 h-5", fill: "currentColor", viewBox: "0 0 20 20" }, /* @__PURE__ */ React29.createElement("path", { fillRule: "evenodd", d: "M10 18a8 8 0 100-16 8 8 0 000 16zM8.707 7.293a1 1 0 00-1.414 1.414L8.586 10l-1.293 1.293a1 1 0 101.414 1.414L10 11.414l1.293 1.293a1 1 0 001.414-1.414L11.414 10l1.293-1.293a1 1 0 00-1.414-1.414L10 8.586 8.707 7.293z", clipRule: "evenodd" }))), /* @__PURE__ */ React29.createElement("div", null, /* @__PURE__ */ React29.createElement("h3", { className: "text-sm font-medium text-red-800" }, "\u63D0\u4EA4\u5931\u8D25"), /* @__PURE__ */ React29.createElement("p", { className: "text-sm text-red-700 mt-1" }, error)))), /* @__PURE__ */ React29.createElement("div", { className: "flex items-center justify-center mb-8" }, /* @__PURE__ */ React29.createElement("div", { className: "flex items-center" }, /* @__PURE__ */ React29.createElement("div", { className: `w-8 h-8 rounded-full flex items-center justify-center text-sm font-medium ${step === "select" ? "bg-blue-600 text-white" : "bg-green-500 text-white"}` }, step === "select" ? "1" : "\u2713"), /* @__PURE__ */ React29.createElement("div", { className: `ml-2 ${step === "select" ? "text-blue-600" : "text-green-600"}` }, "\u9009\u62E9\u753B\u96C6")), /* @__PURE__ */ React29.createElement("div", { className: "w-16 h-0.5 bg-gray-300 mx-4" }), /* @__PURE__ */ React29.createElement("div", { className: "flex items-center" }, /* @__PURE__ */ React29.createElement("div", { className: `w-8 h-8 rounded-full flex items-center justify-center text-sm font-medium ${step === "form" ? "bg-blue-600 text-white" : "bg-gray-300 text-gray-600"}` }, "2"), /* @__PURE__ */ React29.createElement("div", { className: `ml-2 ${step === "form" ? "text-blue-600" : "text-gray-500"}` }, "\u586B\u5199\u4FE1\u606F"))), step === "select" && /* @__PURE__ */ React29.createElement("div", null, /* @__PURE__ */ React29.createElement("div", { className: "mb-6" }, /* @__PURE__ */ React29.createElement("h2", { className: "text-xl font-semibold text-gray-900 mb-2" }, "\u9009\u62E9\u8981\u9884\u8BA2\u7684\u753B\u96C6"), /* @__PURE__ */ React29.createElement("p", { className: "text-gray-600" }, "\u70B9\u51FB\u4E0B\u65B9\u753B\u96C6\u5361\u7247\u8FDB\u884C\u9009\u62E9")), /* @__PURE__ */ React29.createElement(
3114
+ return /* @__PURE__ */ React23.createElement("div", { className: "max-w-4xl mx-auto p-6" }, /* @__PURE__ */ React23.createElement("div", { className: "text-center mb-8" }, /* @__PURE__ */ React23.createElement("h1", { className: "text-3xl font-bold text-gray-900 mb-2" }, "\u9884\u8BA2\u753B\u96C6"), /* @__PURE__ */ React23.createElement("p", { className: "text-gray-600" }, "\u9009\u62E9\u60A8\u559C\u6B22\u7684\u753B\u96C6\u5E76\u586B\u5199\u9884\u8BA2\u4FE1\u606F")), error && /* @__PURE__ */ React23.createElement("div", { className: "bg-red-50 border border-red-200 rounded-lg p-4 mb-6" }, /* @__PURE__ */ React23.createElement("div", { className: "flex" }, /* @__PURE__ */ React23.createElement("div", { className: "text-red-400 mr-3" }, /* @__PURE__ */ React23.createElement("svg", { className: "w-5 h-5", fill: "currentColor", viewBox: "0 0 20 20" }, /* @__PURE__ */ React23.createElement("path", { fillRule: "evenodd", d: "M10 18a8 8 0 100-16 8 8 0 000 16zM8.707 7.293a1 1 0 00-1.414 1.414L8.586 10l-1.293 1.293a1 1 0 101.414 1.414L10 11.414l1.293 1.293a1 1 0 001.414-1.414L11.414 10l1.293-1.293a1 1 0 00-1.414-1.414L10 8.586 8.707 7.293z", clipRule: "evenodd" }))), /* @__PURE__ */ React23.createElement("div", null, /* @__PURE__ */ React23.createElement("h3", { className: "text-sm font-medium text-red-800" }, "\u63D0\u4EA4\u5931\u8D25"), /* @__PURE__ */ React23.createElement("p", { className: "text-sm text-red-700 mt-1" }, error)))), /* @__PURE__ */ React23.createElement("div", { className: "flex items-center justify-center mb-8" }, /* @__PURE__ */ React23.createElement("div", { className: "flex items-center" }, /* @__PURE__ */ React23.createElement("div", { className: `w-8 h-8 rounded-full flex items-center justify-center text-sm font-medium ${step === "select" ? "bg-blue-600 text-white" : "bg-green-500 text-white"}` }, step === "select" ? "1" : "\u2713"), /* @__PURE__ */ React23.createElement("div", { className: `ml-2 ${step === "select" ? "text-blue-600" : "text-green-600"}` }, "\u9009\u62E9\u753B\u96C6")), /* @__PURE__ */ React23.createElement("div", { className: "w-16 h-0.5 bg-gray-300 mx-4" }), /* @__PURE__ */ React23.createElement("div", { className: "flex items-center" }, /* @__PURE__ */ React23.createElement("div", { className: `w-8 h-8 rounded-full flex items-center justify-center text-sm font-medium ${step === "form" ? "bg-blue-600 text-white" : "bg-gray-300 text-gray-600"}` }, "2"), /* @__PURE__ */ React23.createElement("div", { className: `ml-2 ${step === "form" ? "text-blue-600" : "text-gray-500"}` }, "\u586B\u5199\u4FE1\u606F"))), step === "select" && /* @__PURE__ */ React23.createElement("div", null, /* @__PURE__ */ React23.createElement("div", { className: "mb-6" }, /* @__PURE__ */ React23.createElement("h2", { className: "text-xl font-semibold text-gray-900 mb-2" }, "\u9009\u62E9\u8981\u9884\u8BA2\u7684\u753B\u96C6"), /* @__PURE__ */ React23.createElement("p", { className: "text-gray-600" }, "\u70B9\u51FB\u4E0B\u65B9\u753B\u96C6\u5361\u7247\u8FDB\u884C\u9009\u62E9")), /* @__PURE__ */ React23.createElement(
3113
3115
  CollectionList,
3114
3116
  {
3115
3117
  collections,
3116
3118
  loading,
3117
3119
  onSelectCollection: handleCollectionSelect
3118
3120
  }
3119
- )), step === "form" && selectedCollection && /* @__PURE__ */ React29.createElement("div", { className: "max-w-2xl mx-auto" }, /* @__PURE__ */ React29.createElement("div", { className: "mb-6" }, /* @__PURE__ */ React29.createElement(
3121
+ )), step === "form" && selectedCollection && /* @__PURE__ */ React23.createElement("div", { className: "max-w-2xl mx-auto" }, /* @__PURE__ */ React23.createElement("div", { className: "mb-6" }, /* @__PURE__ */ React23.createElement(
3120
3122
  "button",
3121
3123
  {
3122
3124
  onClick: handleBackToSelect,
3123
3125
  className: "text-blue-600 hover:text-blue-800 flex items-center mb-4"
3124
3126
  },
3125
- /* @__PURE__ */ React29.createElement("svg", { className: "w-4 h-4 mr-1", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24" }, /* @__PURE__ */ React29.createElement("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M15 19l-7-7 7-7" })),
3127
+ /* @__PURE__ */ React23.createElement("svg", { className: "w-4 h-4 mr-1", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24" }, /* @__PURE__ */ React23.createElement("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M15 19l-7-7 7-7" })),
3126
3128
  "\u8FD4\u56DE\u9009\u62E9\u753B\u96C6"
3127
- ), /* @__PURE__ */ React29.createElement("h2", { className: "text-xl font-semibold text-gray-900 mb-4" }, "\u586B\u5199\u9884\u8BA2\u4FE1\u606F"), /* @__PURE__ */ React29.createElement("div", { className: "bg-gray-50 rounded-lg p-4 mb-6" }, /* @__PURE__ */ React29.createElement("div", { className: "flex items-center" }, selectedCollection.coverImage ? /* @__PURE__ */ React29.createElement(
3129
+ ), /* @__PURE__ */ React23.createElement("h2", { className: "text-xl font-semibold text-gray-900 mb-4" }, "\u586B\u5199\u9884\u8BA2\u4FE1\u606F"), /* @__PURE__ */ React23.createElement("div", { className: "bg-gray-50 rounded-lg p-4 mb-6" }, /* @__PURE__ */ React23.createElement("div", { className: "flex items-center" }, selectedCollection.coverImage ? /* @__PURE__ */ React23.createElement(
3128
3130
  "img",
3129
3131
  {
3130
3132
  src: selectedCollection.coverImage,
3131
3133
  alt: selectedCollection.title,
3132
3134
  className: "w-16 h-16 object-cover rounded-md mr-4"
3133
3135
  }
3134
- ) : /* @__PURE__ */ React29.createElement("div", { className: "w-16 h-16 bg-gray-100 rounded-md mr-4 flex items-center justify-center text-gray-400 text-xs" }, "\u6682\u65E0\u56FE\u7247"), /* @__PURE__ */ React29.createElement("div", null, /* @__PURE__ */ React29.createElement("h3", { className: "font-semibold text-gray-900" }, selectedCollection.title), /* @__PURE__ */ React29.createElement("p", { className: "text-sm text-gray-600" }, "\u7F16\u53F7\uFF1A", selectedCollection.number), /* @__PURE__ */ React29.createElement("p", { className: "text-sm text-gray-600" }, "\u4EF7\u683C\uFF1A", selectedCollection.price ? `\xA5${selectedCollection.price}` : "\u4EF7\u683C\u5F85\u5B9A"))))), /* @__PURE__ */ React29.createElement("form", { onSubmit: handleSubmit, className: "space-y-6" }, /* @__PURE__ */ React29.createElement("div", null, /* @__PURE__ */ React29.createElement("label", { htmlFor: "qqNumber", className: "block text-sm font-medium text-gray-700 mb-2" }, "QQ\u53F7 ", /* @__PURE__ */ React29.createElement("span", { className: "text-red-500" }, "*")), /* @__PURE__ */ React29.createElement(
3136
+ ) : /* @__PURE__ */ React23.createElement("div", { className: "w-16 h-16 bg-gray-100 rounded-md mr-4 flex items-center justify-center text-gray-400 text-xs" }, "\u6682\u65E0\u56FE\u7247"), /* @__PURE__ */ React23.createElement("div", null, /* @__PURE__ */ React23.createElement("h3", { className: "font-semibold text-gray-900" }, selectedCollection.title), /* @__PURE__ */ React23.createElement("p", { className: "text-sm text-gray-600" }, "\u7F16\u53F7\uFF1A", selectedCollection.number), /* @__PURE__ */ React23.createElement("p", { className: "text-sm text-gray-600" }, "\u4EF7\u683C\uFF1A", selectedCollection.price ? `\xA5${selectedCollection.price}` : "\u4EF7\u683C\u5F85\u5B9A"))))), /* @__PURE__ */ React23.createElement("form", { onSubmit: handleSubmit, className: "space-y-6" }, /* @__PURE__ */ React23.createElement("div", null, /* @__PURE__ */ React23.createElement("label", { htmlFor: "qqNumber", className: "block text-sm font-medium text-gray-700 mb-2" }, "QQ\u53F7 ", /* @__PURE__ */ React23.createElement("span", { className: "text-red-500" }, "*")), /* @__PURE__ */ React23.createElement(
3135
3137
  "input",
3136
3138
  {
3137
3139
  type: "text",
@@ -3142,7 +3144,7 @@ var BookingPage = ({ onClose }) => {
3142
3144
  placeholder: "\u8BF7\u8F93\u5165\u60A8\u7684QQ\u53F7",
3143
3145
  disabled: submitting
3144
3146
  }
3145
- ), errors.qqNumber && /* @__PURE__ */ React29.createElement("p", { className: "mt-1 text-sm text-red-600" }, errors.qqNumber)), /* @__PURE__ */ React29.createElement("div", null, /* @__PURE__ */ React29.createElement("label", { htmlFor: "phoneNumber", className: "block text-sm font-medium text-gray-700 mb-2" }, "\u624B\u673A\u53F7"), /* @__PURE__ */ React29.createElement(
3147
+ ), errors.qqNumber && /* @__PURE__ */ React23.createElement("p", { className: "mt-1 text-sm text-red-600" }, errors.qqNumber)), /* @__PURE__ */ React23.createElement("div", null, /* @__PURE__ */ React23.createElement("label", { htmlFor: "phoneNumber", className: "block text-sm font-medium text-gray-700 mb-2" }, "\u624B\u673A\u53F7"), /* @__PURE__ */ React23.createElement(
3146
3148
  "input",
3147
3149
  {
3148
3150
  type: "tel",
@@ -3153,7 +3155,7 @@ var BookingPage = ({ onClose }) => {
3153
3155
  placeholder: "\u8BF7\u8F93\u5165\u60A8\u7684\u624B\u673A\u53F7\uFF08\u53EF\u9009\uFF09",
3154
3156
  disabled: submitting
3155
3157
  }
3156
- ), errors.phoneNumber && /* @__PURE__ */ React29.createElement("p", { className: "mt-1 text-sm text-red-600" }, errors.phoneNumber)), /* @__PURE__ */ React29.createElement("div", null, /* @__PURE__ */ React29.createElement("label", { htmlFor: "quantity", className: "block text-sm font-medium text-gray-700 mb-2" }, "\u9884\u8BA2\u6570\u91CF ", /* @__PURE__ */ React29.createElement("span", { className: "text-red-500" }, "*")), /* @__PURE__ */ React29.createElement(
3158
+ ), errors.phoneNumber && /* @__PURE__ */ React23.createElement("p", { className: "mt-1 text-sm text-red-600" }, errors.phoneNumber)), /* @__PURE__ */ React23.createElement("div", null, /* @__PURE__ */ React23.createElement("label", { htmlFor: "quantity", className: "block text-sm font-medium text-gray-700 mb-2" }, "\u9884\u8BA2\u6570\u91CF ", /* @__PURE__ */ React23.createElement("span", { className: "text-red-500" }, "*")), /* @__PURE__ */ React23.createElement(
3157
3159
  "input",
3158
3160
  {
3159
3161
  type: "number",
@@ -3165,7 +3167,7 @@ var BookingPage = ({ onClose }) => {
3165
3167
  placeholder: "\u8BF7\u8F93\u5165\u9884\u8BA2\u6570\u91CF",
3166
3168
  disabled: submitting
3167
3169
  }
3168
- ), errors.quantity && /* @__PURE__ */ React29.createElement("p", { className: "mt-1 text-sm text-red-600" }, errors.quantity)), /* @__PURE__ */ React29.createElement("div", null, /* @__PURE__ */ React29.createElement("label", { htmlFor: "notes", className: "block text-sm font-medium text-gray-700 mb-2" }, "\u5907\u6CE8\u4FE1\u606F"), /* @__PURE__ */ React29.createElement(
3170
+ ), errors.quantity && /* @__PURE__ */ React23.createElement("p", { className: "mt-1 text-sm text-red-600" }, errors.quantity)), /* @__PURE__ */ React23.createElement("div", null, /* @__PURE__ */ React23.createElement("label", { htmlFor: "notes", className: "block text-sm font-medium text-gray-700 mb-2" }, "\u5907\u6CE8\u4FE1\u606F"), /* @__PURE__ */ React23.createElement(
3169
3171
  "textarea",
3170
3172
  {
3171
3173
  id: "notes",
@@ -3176,7 +3178,7 @@ var BookingPage = ({ onClose }) => {
3176
3178
  placeholder: "\u8BF7\u8F93\u5165\u5907\u6CE8\u4FE1\u606F\uFF08\u53EF\u9009\uFF09",
3177
3179
  disabled: submitting
3178
3180
  }
3179
- )), /* @__PURE__ */ React29.createElement("div", { className: "pt-4" }, /* @__PURE__ */ React29.createElement(
3181
+ )), /* @__PURE__ */ React23.createElement("div", { className: "pt-4" }, /* @__PURE__ */ React23.createElement(
3180
3182
  "button",
3181
3183
  {
3182
3184
  type: "submit",
@@ -3251,57 +3253,57 @@ var CartHistoryPage = ({
3251
3253
  return sum + price * booking.quantity;
3252
3254
  }, 0);
3253
3255
  const completedBookings = bookings.filter((booking) => booking.status === "completed").length;
3254
- return /* @__PURE__ */ React29.createElement("div", { className: "space-y-6" }, /* @__PURE__ */ React29.createElement("div", { className: "bg-white rounded-lg shadow-sm border border-slate-200 p-6" }, /* @__PURE__ */ React29.createElement("div", { className: "flex items-center justify-between" }, /* @__PURE__ */ React29.createElement("div", null, /* @__PURE__ */ React29.createElement("h1", { className: "text-2xl font-bold text-slate-800" }, "\u6211\u7684\u9884\u8BA2\u5386\u53F2"), /* @__PURE__ */ React29.createElement("p", { className: "text-slate-600 mt-1" }, "QQ: ", qqNumber, " | \u624B\u673A: ", phoneNumber)), /* @__PURE__ */ React29.createElement("div", { className: "flex gap-2" }, /* @__PURE__ */ React29.createElement(
3256
+ return /* @__PURE__ */ React23.createElement("div", { className: "space-y-6" }, /* @__PURE__ */ React23.createElement("div", { className: "bg-white rounded-lg shadow-sm border border-slate-200 p-6" }, /* @__PURE__ */ React23.createElement("div", { className: "flex items-center justify-between" }, /* @__PURE__ */ React23.createElement("div", null, /* @__PURE__ */ React23.createElement("h1", { className: "text-2xl font-bold text-slate-800" }, "\u6211\u7684\u9884\u8BA2\u5386\u53F2"), /* @__PURE__ */ React23.createElement("p", { className: "text-slate-600 mt-1" }, "QQ: ", qqNumber, " | \u624B\u673A: ", phoneNumber)), /* @__PURE__ */ React23.createElement("div", { className: "flex gap-2" }, /* @__PURE__ */ React23.createElement(
3255
3257
  "button",
3256
3258
  {
3257
3259
  onClick: loadBookings,
3258
3260
  disabled: loading,
3259
3261
  className: "flex items-center gap-2 px-4 py-2 bg-blue-600 text-white rounded-lg font-medium hover:bg-blue-700 transition-colors disabled:opacity-50"
3260
3262
  },
3261
- /* @__PURE__ */ React29.createElement(RefreshCw, { size: 16, className: loading ? "animate-spin" : "" }),
3263
+ /* @__PURE__ */ React23.createElement(RefreshCw, { size: 16, className: loading ? "animate-spin" : "" }),
3262
3264
  "\u5237\u65B0"
3263
- )))), totalBookings > 0 && /* @__PURE__ */ React29.createElement("div", { className: "bg-white rounded-lg shadow-sm border border-slate-200 p-6" }, /* @__PURE__ */ React29.createElement("div", { className: "grid grid-cols-2 lg:grid-cols-4 gap-4" }, /* @__PURE__ */ React29.createElement("div", { className: "text-center" }, /* @__PURE__ */ React29.createElement("div", { className: "text-2xl font-bold text-slate-800" }, totalBookings), /* @__PURE__ */ React29.createElement("div", { className: "text-sm text-slate-600" }, "\u603B\u9884\u8BA2\u6B21\u6570")), /* @__PURE__ */ React29.createElement("div", { className: "text-center" }, /* @__PURE__ */ React29.createElement("div", { className: "text-2xl font-bold text-slate-800" }, totalQuantity), /* @__PURE__ */ React29.createElement("div", { className: "text-sm text-slate-600" }, "\u603B\u9884\u8BA2\u6570\u91CF")), /* @__PURE__ */ React29.createElement("div", { className: "text-center" }, /* @__PURE__ */ React29.createElement("div", { className: "text-2xl font-bold text-slate-800" }, "\xA5", totalPrice), /* @__PURE__ */ React29.createElement("div", { className: "text-sm text-slate-600" }, "\u603B\u9884\u8BA2\u91D1\u989D")), /* @__PURE__ */ React29.createElement("div", { className: "text-center" }, /* @__PURE__ */ React29.createElement("div", { className: "text-2xl font-bold text-slate-800" }, completedBookings), /* @__PURE__ */ React29.createElement("div", { className: "text-sm text-slate-600" }, "\u5DF2\u5B8C\u6210")))), error && /* @__PURE__ */ React29.createElement("div", { className: "bg-red-50 border border-red-200 rounded-lg p-4" }, /* @__PURE__ */ React29.createElement("div", { className: "flex" }, /* @__PURE__ */ React29.createElement("div", { className: "text-red-400 mr-3 flex-shrink-0" }, /* @__PURE__ */ React29.createElement(XCircle, { size: 20 })), /* @__PURE__ */ React29.createElement("div", { className: "min-w-0 flex-1" }, /* @__PURE__ */ React29.createElement("h3", { className: "text-sm font-medium text-red-800" }, "\u67E5\u8BE2\u5931\u8D25"), /* @__PURE__ */ React29.createElement("p", { className: "text-sm text-red-700 mt-1" }, error)))), /* @__PURE__ */ React29.createElement("div", { className: "space-y-4" }, loading ? /* @__PURE__ */ React29.createElement("div", { className: "bg-white rounded-lg shadow-sm border border-slate-200 p-8 text-center" }, /* @__PURE__ */ React29.createElement(RefreshCw, { size: 40, className: "text-slate-400 mx-auto mb-4 animate-spin" }), /* @__PURE__ */ React29.createElement("h3", { className: "text-lg font-medium text-slate-800 mb-2" }, "\u52A0\u8F7D\u4E2D..."), /* @__PURE__ */ React29.createElement("p", { className: "text-slate-600" }, "\u6B63\u5728\u83B7\u53D6\u60A8\u7684\u9884\u8BA2\u5386\u53F2\u8BB0\u5F55")) : totalBookings === 0 ? /* @__PURE__ */ React29.createElement("div", { className: "bg-white rounded-lg shadow-sm border border-slate-200 p-8 text-center" }, /* @__PURE__ */ React29.createElement(Calendar, { size: 40, className: "text-slate-400 mx-auto mb-4" }), /* @__PURE__ */ React29.createElement("h3", { className: "text-lg font-medium text-slate-800 mb-2" }, "\u6682\u65E0\u9884\u8BA2\u8BB0\u5F55"), /* @__PURE__ */ React29.createElement("p", { className: "text-slate-600" }, "\u60A8\u8FD8\u6CA1\u6709\u63D0\u4EA4\u8FC7\u4EFB\u4F55\u9884\u8BA2")) : bookings.map((booking) => {
3265
+ )))), totalBookings > 0 && /* @__PURE__ */ React23.createElement("div", { className: "bg-white rounded-lg shadow-sm border border-slate-200 p-6" }, /* @__PURE__ */ React23.createElement("div", { className: "grid grid-cols-2 lg:grid-cols-4 gap-4" }, /* @__PURE__ */ React23.createElement("div", { className: "text-center" }, /* @__PURE__ */ React23.createElement("div", { className: "text-2xl font-bold text-slate-800" }, totalBookings), /* @__PURE__ */ React23.createElement("div", { className: "text-sm text-slate-600" }, "\u603B\u9884\u8BA2\u6B21\u6570")), /* @__PURE__ */ React23.createElement("div", { className: "text-center" }, /* @__PURE__ */ React23.createElement("div", { className: "text-2xl font-bold text-slate-800" }, totalQuantity), /* @__PURE__ */ React23.createElement("div", { className: "text-sm text-slate-600" }, "\u603B\u9884\u8BA2\u6570\u91CF")), /* @__PURE__ */ React23.createElement("div", { className: "text-center" }, /* @__PURE__ */ React23.createElement("div", { className: "text-2xl font-bold text-slate-800" }, "\xA5", totalPrice), /* @__PURE__ */ React23.createElement("div", { className: "text-sm text-slate-600" }, "\u603B\u9884\u8BA2\u91D1\u989D")), /* @__PURE__ */ React23.createElement("div", { className: "text-center" }, /* @__PURE__ */ React23.createElement("div", { className: "text-2xl font-bold text-slate-800" }, completedBookings), /* @__PURE__ */ React23.createElement("div", { className: "text-sm text-slate-600" }, "\u5DF2\u5B8C\u6210")))), error && /* @__PURE__ */ React23.createElement("div", { className: "bg-red-50 border border-red-200 rounded-lg p-4" }, /* @__PURE__ */ React23.createElement("div", { className: "flex" }, /* @__PURE__ */ React23.createElement("div", { className: "text-red-400 mr-3 flex-shrink-0" }, /* @__PURE__ */ React23.createElement(XCircle, { size: 20 })), /* @__PURE__ */ React23.createElement("div", { className: "min-w-0 flex-1" }, /* @__PURE__ */ React23.createElement("h3", { className: "text-sm font-medium text-red-800" }, "\u67E5\u8BE2\u5931\u8D25"), /* @__PURE__ */ React23.createElement("p", { className: "text-sm text-red-700 mt-1" }, error)))), /* @__PURE__ */ React23.createElement("div", { className: "space-y-4" }, loading ? /* @__PURE__ */ React23.createElement("div", { className: "bg-white rounded-lg shadow-sm border border-slate-200 p-8 text-center" }, /* @__PURE__ */ React23.createElement(RefreshCw, { size: 40, className: "text-slate-400 mx-auto mb-4 animate-spin" }), /* @__PURE__ */ React23.createElement("h3", { className: "text-lg font-medium text-slate-800 mb-2" }, "\u52A0\u8F7D\u4E2D..."), /* @__PURE__ */ React23.createElement("p", { className: "text-slate-600" }, "\u6B63\u5728\u83B7\u53D6\u60A8\u7684\u9884\u8BA2\u5386\u53F2\u8BB0\u5F55")) : totalBookings === 0 ? /* @__PURE__ */ React23.createElement("div", { className: "bg-white rounded-lg shadow-sm border border-slate-200 p-8 text-center" }, /* @__PURE__ */ React23.createElement(Calendar, { size: 40, className: "text-slate-400 mx-auto mb-4" }), /* @__PURE__ */ React23.createElement("h3", { className: "text-lg font-medium text-slate-800 mb-2" }, "\u6682\u65E0\u9884\u8BA2\u8BB0\u5F55"), /* @__PURE__ */ React23.createElement("p", { className: "text-slate-600" }, "\u60A8\u8FD8\u6CA1\u6709\u63D0\u4EA4\u8FC7\u4EFB\u4F55\u9884\u8BA2")) : bookings.map((booking) => {
3264
3266
  const statusInfo = getStatusInfo(booking.status);
3265
3267
  const totalPrice2 = (booking.collection?.price || 0) * booking.quantity;
3266
- return /* @__PURE__ */ React29.createElement("div", { key: booking.id, className: "bg-white rounded-lg shadow-sm border border-slate-200 overflow-hidden" }, /* @__PURE__ */ React29.createElement("div", { className: "p-6" }, /* @__PURE__ */ React29.createElement("div", { className: "flex flex-col sm:flex-row sm:items-start sm:justify-between gap-4 mb-4" }, /* @__PURE__ */ React29.createElement("div", { className: "flex items-start gap-4" }, /* @__PURE__ */ React29.createElement(
3268
+ return /* @__PURE__ */ React23.createElement("div", { key: booking.id, className: "bg-white rounded-lg shadow-sm border border-slate-200 overflow-hidden" }, /* @__PURE__ */ React23.createElement("div", { className: "p-6" }, /* @__PURE__ */ React23.createElement("div", { className: "flex flex-col sm:flex-row sm:items-start sm:justify-between gap-4 mb-4" }, /* @__PURE__ */ React23.createElement("div", { className: "flex items-start gap-4" }, /* @__PURE__ */ React23.createElement(
3267
3269
  "img",
3268
3270
  {
3269
3271
  src: booking.collection?.coverImage || "",
3270
3272
  alt: booking.collection?.title || "\u672A\u77E5\u753B\u96C6",
3271
3273
  className: "w-16 h-16 object-cover rounded-lg flex-shrink-0"
3272
3274
  }
3273
- ), /* @__PURE__ */ React29.createElement("div", { className: "min-w-0 flex-1" }, /* @__PURE__ */ React29.createElement("h3", { className: "text-lg font-semibold text-slate-800" }, booking.collection?.title || "\u672A\u77E5\u753B\u96C6"), /* @__PURE__ */ React29.createElement("p", { className: "text-sm text-slate-600" }, "\u7F16\u53F7\uFF1A", booking.collection?.number || "\u672A\u77E5\u7F16\u53F7"), /* @__PURE__ */ React29.createElement("p", { className: "text-sm text-slate-600" }, "\u9884\u8BA2\u65F6\u95F4\uFF1A", formatTime(booking.createdAt)), /* @__PURE__ */ React29.createElement("p", { className: "text-sm text-slate-600" }, "\u6570\u91CF\uFF1A", booking.quantity, " | \u603B\u4EF7\uFF1A\xA5", totalPrice2))), /* @__PURE__ */ React29.createElement("div", { className: "text-left sm:text-right" }, /* @__PURE__ */ React29.createElement("span", { className: `inline-flex items-center px-2.5 py-0.5 rounded-full text-xs font-medium ${statusInfo.color}` }, statusInfo.label), /* @__PURE__ */ React29.createElement("p", { className: "text-sm text-slate-500 mt-1" }, "\u9884\u8BA2ID: ", booking.id))), booking.notes && /* @__PURE__ */ React29.createElement("div", { className: "mb-4" }, /* @__PURE__ */ React29.createElement("p", { className: "text-sm text-slate-500" }, "\u5907\u6CE8"), /* @__PURE__ */ React29.createElement("p", { className: "text-sm text-slate-800 bg-slate-50 p-3 rounded-lg break-words" }, booking.notes)), booking.adminNotes && /* @__PURE__ */ React29.createElement("div", { className: "mb-4" }, /* @__PURE__ */ React29.createElement("p", { className: "text-sm text-slate-500" }, "\u7BA1\u7406\u5458\u5907\u6CE8"), /* @__PURE__ */ React29.createElement("p", { className: "text-sm text-slate-800 bg-blue-50 p-3 rounded-lg break-words" }, booking.adminNotes)), /* @__PURE__ */ React29.createElement("div", { className: "flex flex-col sm:flex-row gap-2" }, /* @__PURE__ */ React29.createElement(
3275
+ ), /* @__PURE__ */ React23.createElement("div", { className: "min-w-0 flex-1" }, /* @__PURE__ */ React23.createElement("h3", { className: "text-lg font-semibold text-slate-800" }, booking.collection?.title || "\u672A\u77E5\u753B\u96C6"), /* @__PURE__ */ React23.createElement("p", { className: "text-sm text-slate-600" }, "\u7F16\u53F7\uFF1A", booking.collection?.number || "\u672A\u77E5\u7F16\u53F7"), /* @__PURE__ */ React23.createElement("p", { className: "text-sm text-slate-600" }, "\u9884\u8BA2\u65F6\u95F4\uFF1A", formatTime(booking.createdAt)), /* @__PURE__ */ React23.createElement("p", { className: "text-sm text-slate-600" }, "\u6570\u91CF\uFF1A", booking.quantity, " | \u603B\u4EF7\uFF1A\xA5", totalPrice2))), /* @__PURE__ */ React23.createElement("div", { className: "text-left sm:text-right" }, /* @__PURE__ */ React23.createElement("span", { className: `inline-flex items-center px-2.5 py-0.5 rounded-full text-xs font-medium ${statusInfo.color}` }, statusInfo.label), /* @__PURE__ */ React23.createElement("p", { className: "text-sm text-slate-500 mt-1" }, "\u9884\u8BA2ID: ", booking.id))), booking.notes && /* @__PURE__ */ React23.createElement("div", { className: "mb-4" }, /* @__PURE__ */ React23.createElement("p", { className: "text-sm text-slate-500" }, "\u5907\u6CE8"), /* @__PURE__ */ React23.createElement("p", { className: "text-sm text-slate-800 bg-slate-50 p-3 rounded-lg break-words" }, booking.notes)), booking.adminNotes && /* @__PURE__ */ React23.createElement("div", { className: "mb-4" }, /* @__PURE__ */ React23.createElement("p", { className: "text-sm text-slate-500" }, "\u7BA1\u7406\u5458\u5907\u6CE8"), /* @__PURE__ */ React23.createElement("p", { className: "text-sm text-slate-800 bg-blue-50 p-3 rounded-lg break-words" }, booking.adminNotes)), /* @__PURE__ */ React23.createElement("div", { className: "flex flex-col sm:flex-row gap-2" }, /* @__PURE__ */ React23.createElement(
3274
3276
  "button",
3275
3277
  {
3276
3278
  onClick: () => setSelectedBooking(booking),
3277
3279
  className: "flex items-center justify-center gap-2 px-4 py-2 bg-slate-100 text-slate-700 rounded-lg font-medium hover:bg-slate-200 transition-colors"
3278
3280
  },
3279
- /* @__PURE__ */ React29.createElement(Eye, { size: 16 }),
3281
+ /* @__PURE__ */ React23.createElement(Eye, { size: 16 }),
3280
3282
  "\u67E5\u770B\u8BE6\u60C5"
3281
- ), /* @__PURE__ */ React29.createElement(
3283
+ ), /* @__PURE__ */ React23.createElement(
3282
3284
  "button",
3283
3285
  {
3284
3286
  onClick: () => handleDeleteBooking(booking.id),
3285
3287
  className: "flex items-center justify-center gap-2 px-4 py-2 bg-red-100 text-red-700 rounded-lg font-medium hover:bg-red-200 transition-colors"
3286
3288
  },
3287
- /* @__PURE__ */ React29.createElement(Trash2, { size: 16 }),
3289
+ /* @__PURE__ */ React23.createElement(Trash2, { size: 16 }),
3288
3290
  "\u5220\u9664\u8BB0\u5F55"
3289
3291
  ))));
3290
- })), selectedBooking && /* @__PURE__ */ React29.createElement("div", { className: "fixed inset-0 bg-black bg-opacity-50 flex items-center justify-center p-4 z-50" }, /* @__PURE__ */ React29.createElement("div", { className: "bg-white rounded-lg shadow-xl max-w-2xl w-full max-h-[90vh] overflow-hidden" }, /* @__PURE__ */ React29.createElement("div", { className: "flex items-center justify-between p-6 border-b border-slate-200" }, /* @__PURE__ */ React29.createElement("h2", { className: "text-xl font-semibold text-slate-800" }, "\u9884\u8BA2\u8BE6\u60C5"), /* @__PURE__ */ React29.createElement(
3292
+ })), selectedBooking && /* @__PURE__ */ React23.createElement("div", { className: "fixed inset-0 bg-black bg-opacity-50 flex items-center justify-center p-4 z-50" }, /* @__PURE__ */ React23.createElement("div", { className: "bg-white rounded-lg shadow-xl max-w-2xl w-full max-h-[90vh] overflow-hidden" }, /* @__PURE__ */ React23.createElement("div", { className: "flex items-center justify-between p-6 border-b border-slate-200" }, /* @__PURE__ */ React23.createElement("h2", { className: "text-xl font-semibold text-slate-800" }, "\u9884\u8BA2\u8BE6\u60C5"), /* @__PURE__ */ React23.createElement(
3291
3293
  "button",
3292
3294
  {
3293
3295
  onClick: () => setSelectedBooking(null),
3294
3296
  className: "text-slate-400 hover:text-slate-600 text-2xl font-bold leading-none"
3295
3297
  },
3296
3298
  "\xD7"
3297
- )), /* @__PURE__ */ React29.createElement("div", { className: "p-6 overflow-y-auto max-h-[calc(90vh-140px)]" }, /* @__PURE__ */ React29.createElement("div", { className: "space-y-6" }, /* @__PURE__ */ React29.createElement("div", null, /* @__PURE__ */ React29.createElement("h3", { className: "text-lg font-semibold text-slate-800 mb-3" }, "\u57FA\u672C\u4FE1\u606F"), /* @__PURE__ */ React29.createElement("div", { className: "grid grid-cols-1 sm:grid-cols-2 gap-3" }, /* @__PURE__ */ React29.createElement("div", null, /* @__PURE__ */ React29.createElement("p", { className: "text-sm text-slate-500" }, "\u9884\u8BA2ID"), /* @__PURE__ */ React29.createElement("p", { className: "font-medium text-slate-800" }, selectedBooking.id)), /* @__PURE__ */ React29.createElement("div", null, /* @__PURE__ */ React29.createElement("p", { className: "text-sm text-slate-500" }, "\u9884\u8BA2\u65F6\u95F4"), /* @__PURE__ */ React29.createElement("p", { className: "font-medium text-slate-800" }, formatTime(selectedBooking.createdAt))), /* @__PURE__ */ React29.createElement("div", null, /* @__PURE__ */ React29.createElement("p", { className: "text-sm text-slate-500" }, "QQ\u53F7"), /* @__PURE__ */ React29.createElement("p", { className: "font-medium text-slate-800" }, selectedBooking.qqNumber)), /* @__PURE__ */ React29.createElement("div", null, /* @__PURE__ */ React29.createElement("p", { className: "text-sm text-slate-500" }, "\u624B\u673A\u53F7"), /* @__PURE__ */ React29.createElement("p", { className: "font-medium text-slate-800" }, selectedBooking.phoneNumber)), /* @__PURE__ */ React29.createElement("div", null, /* @__PURE__ */ React29.createElement("p", { className: "text-sm text-slate-500" }, "\u72B6\u6001"), /* @__PURE__ */ React29.createElement("span", { className: `inline-flex items-center px-2.5 py-0.5 rounded-full text-xs font-medium ${getStatusInfo(selectedBooking.status).color}` }, getStatusInfo(selectedBooking.status).label)), /* @__PURE__ */ React29.createElement("div", null, /* @__PURE__ */ React29.createElement("p", { className: "text-sm text-slate-500" }, "\u6570\u91CF"), /* @__PURE__ */ React29.createElement("p", { className: "font-medium text-slate-800" }, selectedBooking.quantity)))), selectedBooking.collection && /* @__PURE__ */ React29.createElement("div", null, /* @__PURE__ */ React29.createElement("h3", { className: "text-lg font-semibold text-slate-800 mb-3" }, "\u753B\u96C6\u8BE6\u60C5"), /* @__PURE__ */ React29.createElement("div", { className: "flex items-center gap-4 p-4 bg-slate-50 rounded-lg" }, selectedBooking.collection.coverImage ? /* @__PURE__ */ React29.createElement(
3299
+ )), /* @__PURE__ */ React23.createElement("div", { className: "p-6 overflow-y-auto max-h-[calc(90vh-140px)]" }, /* @__PURE__ */ React23.createElement("div", { className: "space-y-6" }, /* @__PURE__ */ React23.createElement("div", null, /* @__PURE__ */ React23.createElement("h3", { className: "text-lg font-semibold text-slate-800 mb-3" }, "\u57FA\u672C\u4FE1\u606F"), /* @__PURE__ */ React23.createElement("div", { className: "grid grid-cols-1 sm:grid-cols-2 gap-3" }, /* @__PURE__ */ React23.createElement("div", null, /* @__PURE__ */ React23.createElement("p", { className: "text-sm text-slate-500" }, "\u9884\u8BA2ID"), /* @__PURE__ */ React23.createElement("p", { className: "font-medium text-slate-800" }, selectedBooking.id)), /* @__PURE__ */ React23.createElement("div", null, /* @__PURE__ */ React23.createElement("p", { className: "text-sm text-slate-500" }, "\u9884\u8BA2\u65F6\u95F4"), /* @__PURE__ */ React23.createElement("p", { className: "font-medium text-slate-800" }, formatTime(selectedBooking.createdAt))), /* @__PURE__ */ React23.createElement("div", null, /* @__PURE__ */ React23.createElement("p", { className: "text-sm text-slate-500" }, "QQ\u53F7"), /* @__PURE__ */ React23.createElement("p", { className: "font-medium text-slate-800" }, selectedBooking.qqNumber)), /* @__PURE__ */ React23.createElement("div", null, /* @__PURE__ */ React23.createElement("p", { className: "text-sm text-slate-500" }, "\u624B\u673A\u53F7"), /* @__PURE__ */ React23.createElement("p", { className: "font-medium text-slate-800" }, selectedBooking.phoneNumber)), /* @__PURE__ */ React23.createElement("div", null, /* @__PURE__ */ React23.createElement("p", { className: "text-sm text-slate-500" }, "\u72B6\u6001"), /* @__PURE__ */ React23.createElement("span", { className: `inline-flex items-center px-2.5 py-0.5 rounded-full text-xs font-medium ${getStatusInfo(selectedBooking.status).color}` }, getStatusInfo(selectedBooking.status).label)), /* @__PURE__ */ React23.createElement("div", null, /* @__PURE__ */ React23.createElement("p", { className: "text-sm text-slate-500" }, "\u6570\u91CF"), /* @__PURE__ */ React23.createElement("p", { className: "font-medium text-slate-800" }, selectedBooking.quantity)))), selectedBooking.collection && /* @__PURE__ */ React23.createElement("div", null, /* @__PURE__ */ React23.createElement("h3", { className: "text-lg font-semibold text-slate-800 mb-3" }, "\u753B\u96C6\u8BE6\u60C5"), /* @__PURE__ */ React23.createElement("div", { className: "flex items-center gap-4 p-4 bg-slate-50 rounded-lg" }, selectedBooking.collection.coverImage ? /* @__PURE__ */ React23.createElement(
3298
3300
  "img",
3299
3301
  {
3300
3302
  src: selectedBooking.collection.coverImage,
3301
3303
  alt: selectedBooking.collection.title,
3302
3304
  className: "w-16 h-16 object-cover rounded-lg flex-shrink-0"
3303
3305
  }
3304
- ) : /* @__PURE__ */ React29.createElement("div", { className: "w-16 h-16 bg-slate-100 rounded-lg flex-shrink-0 flex items-center justify-center text-slate-400 text-xs" }, "\u6682\u65E0\u56FE\u7247"), /* @__PURE__ */ React29.createElement("div", { className: "min-w-0 flex-1" }, /* @__PURE__ */ React29.createElement("h4", { className: "font-medium text-slate-800" }, selectedBooking.collection.title), /* @__PURE__ */ React29.createElement("p", { className: "text-sm text-slate-600" }, "\u7F16\u53F7\uFF1A", selectedBooking.collection.number), /* @__PURE__ */ React29.createElement("p", { className: "text-sm text-slate-600" }, "\u5355\u4EF7\uFF1A\xA5", selectedBooking.collection.price || "\u5F85\u5B9A")), /* @__PURE__ */ React29.createElement("div", { className: "text-right" }, /* @__PURE__ */ React29.createElement("p", { className: "font-medium text-slate-800" }, "\u6570\u91CF\uFF1A", selectedBooking.quantity), /* @__PURE__ */ React29.createElement("p", { className: "font-medium text-slate-800" }, "\u603B\u4EF7\uFF1A\xA5", (selectedBooking.collection.price || 0) * selectedBooking.quantity)))), selectedBooking.notes && /* @__PURE__ */ React29.createElement("div", null, /* @__PURE__ */ React29.createElement("h3", { className: "text-lg font-semibold text-slate-800 mb-3" }, "\u7528\u6237\u5907\u6CE8"), /* @__PURE__ */ React29.createElement("p", { className: "text-slate-800 bg-slate-50 p-4 rounded-lg break-words" }, selectedBooking.notes)), selectedBooking.adminNotes && /* @__PURE__ */ React29.createElement("div", null, /* @__PURE__ */ React29.createElement("h3", { className: "text-lg font-semibold text-slate-800 mb-3" }, "\u7BA1\u7406\u5458\u5907\u6CE8"), /* @__PURE__ */ React29.createElement("p", { className: "text-slate-800 bg-blue-50 p-4 rounded-lg break-words" }, selectedBooking.adminNotes)), /* @__PURE__ */ React29.createElement("div", null, /* @__PURE__ */ React29.createElement("h3", { className: "text-lg font-semibold text-slate-800 mb-3" }, "\u65F6\u95F4\u4FE1\u606F"), /* @__PURE__ */ React29.createElement("div", { className: "grid grid-cols-1 sm:grid-cols-2 gap-3" }, /* @__PURE__ */ React29.createElement("div", null, /* @__PURE__ */ React29.createElement("p", { className: "text-sm text-slate-500" }, "\u521B\u5EFA\u65F6\u95F4"), /* @__PURE__ */ React29.createElement("p", { className: "font-medium text-slate-800" }, formatTime(selectedBooking.createdAt))), /* @__PURE__ */ React29.createElement("div", null, /* @__PURE__ */ React29.createElement("p", { className: "text-sm text-slate-500" }, "\u66F4\u65B0\u65F6\u95F4"), /* @__PURE__ */ React29.createElement("p", { className: "font-medium text-slate-800" }, formatTime(selectedBooking.updatedAt))), selectedBooking.confirmedAt && /* @__PURE__ */ React29.createElement("div", null, /* @__PURE__ */ React29.createElement("p", { className: "text-sm text-slate-500" }, "\u786E\u8BA4\u65F6\u95F4"), /* @__PURE__ */ React29.createElement("p", { className: "font-medium text-slate-800" }, formatTime(selectedBooking.confirmedAt))), selectedBooking.completedAt && /* @__PURE__ */ React29.createElement("div", null, /* @__PURE__ */ React29.createElement("p", { className: "text-sm text-slate-500" }, "\u5B8C\u6210\u65F6\u95F4"), /* @__PURE__ */ React29.createElement("p", { className: "font-medium text-slate-800" }, formatTime(selectedBooking.completedAt))), selectedBooking.cancelledAt && /* @__PURE__ */ React29.createElement("div", null, /* @__PURE__ */ React29.createElement("p", { className: "text-sm text-slate-500" }, "\u53D6\u6D88\u65F6\u95F4"), /* @__PURE__ */ React29.createElement("p", { className: "font-medium text-slate-800" }, formatTime(selectedBooking.cancelledAt))))))))));
3306
+ ) : /* @__PURE__ */ React23.createElement("div", { className: "w-16 h-16 bg-slate-100 rounded-lg flex-shrink-0 flex items-center justify-center text-slate-400 text-xs" }, "\u6682\u65E0\u56FE\u7247"), /* @__PURE__ */ React23.createElement("div", { className: "min-w-0 flex-1" }, /* @__PURE__ */ React23.createElement("h4", { className: "font-medium text-slate-800" }, selectedBooking.collection.title), /* @__PURE__ */ React23.createElement("p", { className: "text-sm text-slate-600" }, "\u7F16\u53F7\uFF1A", selectedBooking.collection.number), /* @__PURE__ */ React23.createElement("p", { className: "text-sm text-slate-600" }, "\u5355\u4EF7\uFF1A\xA5", selectedBooking.collection.price || "\u5F85\u5B9A")), /* @__PURE__ */ React23.createElement("div", { className: "text-right" }, /* @__PURE__ */ React23.createElement("p", { className: "font-medium text-slate-800" }, "\u6570\u91CF\uFF1A", selectedBooking.quantity), /* @__PURE__ */ React23.createElement("p", { className: "font-medium text-slate-800" }, "\u603B\u4EF7\uFF1A\xA5", (selectedBooking.collection.price || 0) * selectedBooking.quantity)))), selectedBooking.notes && /* @__PURE__ */ React23.createElement("div", null, /* @__PURE__ */ React23.createElement("h3", { className: "text-lg font-semibold text-slate-800 mb-3" }, "\u7528\u6237\u5907\u6CE8"), /* @__PURE__ */ React23.createElement("p", { className: "text-slate-800 bg-slate-50 p-4 rounded-lg break-words" }, selectedBooking.notes)), selectedBooking.adminNotes && /* @__PURE__ */ React23.createElement("div", null, /* @__PURE__ */ React23.createElement("h3", { className: "text-lg font-semibold text-slate-800 mb-3" }, "\u7BA1\u7406\u5458\u5907\u6CE8"), /* @__PURE__ */ React23.createElement("p", { className: "text-slate-800 bg-blue-50 p-4 rounded-lg break-words" }, selectedBooking.adminNotes)), /* @__PURE__ */ React23.createElement("div", null, /* @__PURE__ */ React23.createElement("h3", { className: "text-lg font-semibold text-slate-800 mb-3" }, "\u65F6\u95F4\u4FE1\u606F"), /* @__PURE__ */ React23.createElement("div", { className: "grid grid-cols-1 sm:grid-cols-2 gap-3" }, /* @__PURE__ */ React23.createElement("div", null, /* @__PURE__ */ React23.createElement("p", { className: "text-sm text-slate-500" }, "\u521B\u5EFA\u65F6\u95F4"), /* @__PURE__ */ React23.createElement("p", { className: "font-medium text-slate-800" }, formatTime(selectedBooking.createdAt))), /* @__PURE__ */ React23.createElement("div", null, /* @__PURE__ */ React23.createElement("p", { className: "text-sm text-slate-500" }, "\u66F4\u65B0\u65F6\u95F4"), /* @__PURE__ */ React23.createElement("p", { className: "font-medium text-slate-800" }, formatTime(selectedBooking.updatedAt))), selectedBooking.confirmedAt && /* @__PURE__ */ React23.createElement("div", null, /* @__PURE__ */ React23.createElement("p", { className: "text-sm text-slate-500" }, "\u786E\u8BA4\u65F6\u95F4"), /* @__PURE__ */ React23.createElement("p", { className: "font-medium text-slate-800" }, formatTime(selectedBooking.confirmedAt))), selectedBooking.completedAt && /* @__PURE__ */ React23.createElement("div", null, /* @__PURE__ */ React23.createElement("p", { className: "text-sm text-slate-500" }, "\u5B8C\u6210\u65F6\u95F4"), /* @__PURE__ */ React23.createElement("p", { className: "font-medium text-slate-800" }, formatTime(selectedBooking.completedAt))), selectedBooking.cancelledAt && /* @__PURE__ */ React23.createElement("div", null, /* @__PURE__ */ React23.createElement("p", { className: "text-sm text-slate-500" }, "\u53D6\u6D88\u65F6\u95F4"), /* @__PURE__ */ React23.createElement("p", { className: "font-medium text-slate-800" }, formatTime(selectedBooking.cancelledAt))))))))));
3305
3307
  };
3306
3308
  var DeadlinePopup = ({
3307
3309
  config,
@@ -3315,15 +3317,15 @@ var DeadlinePopup = ({
3315
3317
  const iconProps = { size: 24, className: "flex-shrink-0" };
3316
3318
  switch (theme2) {
3317
3319
  case "warning":
3318
- return /* @__PURE__ */ React29.createElement(AlertTriangle, { ...iconProps, className: "text-amber-500" });
3320
+ return /* @__PURE__ */ React23.createElement(AlertTriangle, { ...iconProps, className: "text-amber-500" });
3319
3321
  case "info":
3320
- return /* @__PURE__ */ React29.createElement(Info, { ...iconProps, className: "text-blue-500" });
3322
+ return /* @__PURE__ */ React23.createElement(Info, { ...iconProps, className: "text-blue-500" });
3321
3323
  case "error":
3322
- return /* @__PURE__ */ React29.createElement(XCircle, { ...iconProps, className: "text-red-500" });
3324
+ return /* @__PURE__ */ React23.createElement(XCircle, { ...iconProps, className: "text-red-500" });
3323
3325
  case "success":
3324
- return /* @__PURE__ */ React29.createElement(CheckCircle, { ...iconProps, className: "text-green-500" });
3326
+ return /* @__PURE__ */ React23.createElement(CheckCircle, { ...iconProps, className: "text-green-500" });
3325
3327
  default:
3326
- return /* @__PURE__ */ React29.createElement(Clock, { ...iconProps, className: "text-slate-500" });
3328
+ return /* @__PURE__ */ React23.createElement(Clock, { ...iconProps, className: "text-slate-500" });
3327
3329
  }
3328
3330
  };
3329
3331
  const getThemeStyles = (theme2 = "warning") => {
@@ -3397,7 +3399,7 @@ var DeadlinePopup = ({
3397
3399
  const { contentConfig, displayConfig } = config;
3398
3400
  const theme = contentConfig.theme || "warning";
3399
3401
  const styles = getThemeStyles(theme);
3400
- return /* @__PURE__ */ React29.createElement(
3402
+ return /* @__PURE__ */ React23.createElement(
3401
3403
  Modal,
3402
3404
  {
3403
3405
  isOpen,
@@ -3407,14 +3409,14 @@ var DeadlinePopup = ({
3407
3409
  maskClosable: displayConfig?.maskClosable ?? true,
3408
3410
  zIndex: 9999
3409
3411
  },
3410
- /* @__PURE__ */ React29.createElement("div", { className: `${styles.bgColor} ${styles.borderColor} border rounded-lg p-6` }, /* @__PURE__ */ React29.createElement("div", { className: "flex items-start gap-4 mb-4" }, getThemeIcon(theme), /* @__PURE__ */ React29.createElement("div", { className: "flex-1 min-w-0" }, /* @__PURE__ */ React29.createElement("h3", { className: `text-lg font-semibold ${styles.titleColor} mb-2` }, contentConfig.title), countdown > 0 && /* @__PURE__ */ React29.createElement("div", { className: "text-sm text-slate-500 mb-2" }, /* @__PURE__ */ React29.createElement(Clock, { size: 14, className: "inline mr-1" }), countdown, " \u79D2\u540E\u81EA\u52A8\u5173\u95ED"))), /* @__PURE__ */ React29.createElement("div", { className: `${styles.messageColor} mb-6 leading-relaxed whitespace-pre-wrap` }, contentConfig.message), /* @__PURE__ */ React29.createElement("div", { className: "flex justify-end gap-3" }, contentConfig.showCancel !== false && /* @__PURE__ */ React29.createElement(
3412
+ /* @__PURE__ */ React23.createElement("div", { className: `${styles.bgColor} ${styles.borderColor} border rounded-lg p-6` }, /* @__PURE__ */ React23.createElement("div", { className: "flex items-start gap-4 mb-4" }, getThemeIcon(theme), /* @__PURE__ */ React23.createElement("div", { className: "flex-1 min-w-0" }, /* @__PURE__ */ React23.createElement("h3", { className: `text-lg font-semibold ${styles.titleColor} mb-2` }, contentConfig.title), countdown > 0 && /* @__PURE__ */ React23.createElement("div", { className: "text-sm text-slate-500 mb-2" }, /* @__PURE__ */ React23.createElement(Clock, { size: 14, className: "inline mr-1" }), countdown, " \u79D2\u540E\u81EA\u52A8\u5173\u95ED"))), /* @__PURE__ */ React23.createElement("div", { className: `${styles.messageColor} mb-6 leading-relaxed whitespace-pre-wrap` }, contentConfig.message), /* @__PURE__ */ React23.createElement("div", { className: "flex justify-end gap-3" }, contentConfig.showCancel !== false && /* @__PURE__ */ React23.createElement(
3411
3413
  "button",
3412
3414
  {
3413
3415
  onClick: handleCancel,
3414
3416
  className: "px-4 py-2 text-slate-600 hover:text-slate-700 transition-colors"
3415
3417
  },
3416
3418
  contentConfig.cancelText || "\u53D6\u6D88"
3417
- ), /* @__PURE__ */ React29.createElement(
3419
+ ), /* @__PURE__ */ React23.createElement(
3418
3420
  "button",
3419
3421
  {
3420
3422
  onClick: handleConfirm,
@@ -3465,7 +3467,7 @@ var DeadlinePopupManager = ({
3465
3467
  if (!currentConfig) {
3466
3468
  return null;
3467
3469
  }
3468
- return /* @__PURE__ */ React29.createElement(
3470
+ return /* @__PURE__ */ React23.createElement(
3469
3471
  DeadlinePopup,
3470
3472
  {
3471
3473
  config: currentConfig,
@@ -3720,37 +3722,37 @@ var PopupConfigManagement = () => {
3720
3722
  return theme;
3721
3723
  }
3722
3724
  };
3723
- return /* @__PURE__ */ React29.createElement("div", { className: "space-y-6" }, /* @__PURE__ */ React29.createElement("div", { className: "flex items-center justify-between" }, /* @__PURE__ */ React29.createElement("div", null, /* @__PURE__ */ React29.createElement("h2", { className: "text-xl font-semibold text-slate-800" }, "\u5F39\u7A97\u914D\u7F6E\u7BA1\u7406"), /* @__PURE__ */ React29.createElement("p", { className: "text-sm text-slate-600 mt-1" }, "\u7BA1\u7406\u8D2D\u7269\u8F66\u63D0\u4EA4\u65F6\u7684\u9650\u65F6\u63D0\u9192\u5F39\u7A97"), /* @__PURE__ */ React29.createElement("div", { className: "mt-2 text-xs text-slate-500" }, "\u72B6\u6001: ", loading ? "\u52A0\u8F7D\u4E2D" : "\u5DF2\u52A0\u8F7D", " | \u914D\u7F6E\u6570\u91CF: ", configs.length, " |", error ? `\u9519\u8BEF: ${error}` : "\u6B63\u5E38")), /* @__PURE__ */ React29.createElement(
3725
+ return /* @__PURE__ */ React23.createElement("div", { className: "space-y-6" }, /* @__PURE__ */ React23.createElement("div", { className: "flex items-center justify-between" }, /* @__PURE__ */ React23.createElement("div", null, /* @__PURE__ */ React23.createElement("h2", { className: "text-xl font-semibold text-slate-800" }, "\u5F39\u7A97\u914D\u7F6E\u7BA1\u7406"), /* @__PURE__ */ React23.createElement("p", { className: "text-sm text-slate-600 mt-1" }, "\u7BA1\u7406\u8D2D\u7269\u8F66\u63D0\u4EA4\u65F6\u7684\u9650\u65F6\u63D0\u9192\u5F39\u7A97"), /* @__PURE__ */ React23.createElement("div", { className: "mt-2 text-xs text-slate-500" }, "\u72B6\u6001: ", loading ? "\u52A0\u8F7D\u4E2D" : "\u5DF2\u52A0\u8F7D", " | \u914D\u7F6E\u6570\u91CF: ", configs.length, " |", error ? `\u9519\u8BEF: ${error}` : "\u6B63\u5E38")), /* @__PURE__ */ React23.createElement(
3724
3726
  "button",
3725
3727
  {
3726
3728
  onClick: handleCreate,
3727
3729
  className: "flex items-center gap-2 px-4 py-2 bg-blue-600 text-white rounded-lg hover:bg-blue-700 transition-colors"
3728
3730
  },
3729
- /* @__PURE__ */ React29.createElement(Plus, { size: 16 }),
3731
+ /* @__PURE__ */ React23.createElement(Plus, { size: 16 }),
3730
3732
  "\u521B\u5EFA\u914D\u7F6E"
3731
- )), error && /* @__PURE__ */ React29.createElement("div", { className: "bg-red-50 border border-red-200 rounded-lg p-4" }, /* @__PURE__ */ React29.createElement("p", { className: "text-red-700" }, error)), loading ? /* @__PURE__ */ React29.createElement("div", { className: "text-center py-8" }, /* @__PURE__ */ React29.createElement("div", { className: "animate-spin rounded-full h-8 w-8 border-b-2 border-blue-600 mx-auto mb-4" }), /* @__PURE__ */ React29.createElement("p", { className: "text-slate-600" }, "\u52A0\u8F7D\u4E2D...")) : /* @__PURE__ */ React29.createElement("div", { className: "bg-white rounded-lg border border-slate-200 overflow-hidden" }, configs.length === 0 ? /* @__PURE__ */ React29.createElement("div", { className: "text-center py-8" }, /* @__PURE__ */ React29.createElement(Settings, { size: 40, className: "text-slate-400 mx-auto mb-4" }), /* @__PURE__ */ React29.createElement("h3", { className: "text-lg font-medium text-slate-800 mb-2" }, "\u6682\u65E0\u914D\u7F6E"), /* @__PURE__ */ React29.createElement("p", { className: "text-slate-600 mb-4" }, '\u70B9\u51FB"\u521B\u5EFA\u914D\u7F6E"\u5F00\u59CB\u8BBE\u7F6E\u5F39\u7A97')) : /* @__PURE__ */ React29.createElement("div", { className: "overflow-x-auto" }, /* @__PURE__ */ React29.createElement("table", { className: "w-full" }, /* @__PURE__ */ React29.createElement("thead", { className: "bg-slate-50" }, /* @__PURE__ */ React29.createElement("tr", null, /* @__PURE__ */ React29.createElement("th", { className: "px-6 py-3 text-left text-xs font-medium text-slate-500 uppercase tracking-wider" }, "\u914D\u7F6E\u4FE1\u606F"), /* @__PURE__ */ React29.createElement("th", { className: "px-6 py-3 text-left text-xs font-medium text-slate-500 uppercase tracking-wider" }, "\u89E6\u53D1\u6761\u4EF6"), /* @__PURE__ */ React29.createElement("th", { className: "px-6 py-3 text-left text-xs font-medium text-slate-500 uppercase tracking-wider" }, "\u5F39\u7A97\u5185\u5BB9"), /* @__PURE__ */ React29.createElement("th", { className: "px-6 py-3 text-left text-xs font-medium text-slate-500 uppercase tracking-wider" }, "\u6D41\u7A0B\u63A7\u5236"), /* @__PURE__ */ React29.createElement("th", { className: "px-6 py-3 text-left text-xs font-medium text-slate-500 uppercase tracking-wider" }, "\u72B6\u6001"), /* @__PURE__ */ React29.createElement("th", { className: "px-6 py-3 text-left text-xs font-medium text-slate-500 uppercase tracking-wider" }, "\u64CD\u4F5C"))), /* @__PURE__ */ React29.createElement("tbody", { className: "bg-white divide-y divide-slate-200" }, configs.map((config) => /* @__PURE__ */ React29.createElement("tr", { key: config.id, className: "hover:bg-slate-50" }, /* @__PURE__ */ React29.createElement("td", { className: "px-6 py-4 whitespace-nowrap" }, /* @__PURE__ */ React29.createElement("div", null, /* @__PURE__ */ React29.createElement("div", { className: "text-sm font-medium text-slate-900" }, config.name), config.description && /* @__PURE__ */ React29.createElement("div", { className: "text-sm text-slate-500" }, config.description), /* @__PURE__ */ React29.createElement("div", { className: "text-xs text-slate-400 mt-1" }, config.businessModule, " / ", config.businessScene))), /* @__PURE__ */ React29.createElement("td", { className: "px-6 py-4 whitespace-nowrap" }, /* @__PURE__ */ React29.createElement("div", { className: "text-sm text-slate-900" }, getTriggerTypeText(config.triggerConfig.triggerType)), /* @__PURE__ */ React29.createElement("div", { className: "text-sm text-slate-500" }, formatDeadlineTime(config.triggerConfig)), (config.triggerConfig.advanceMinutes || 0) > 0 && /* @__PURE__ */ React29.createElement("div", { className: "text-xs text-slate-400" }, "\u63D0\u524D ", config.triggerConfig.advanceMinutes, " \u5206\u949F")), /* @__PURE__ */ React29.createElement("td", { className: "px-6 py-4" }, /* @__PURE__ */ React29.createElement("div", null, /* @__PURE__ */ React29.createElement("div", { className: "text-sm font-medium text-slate-900" }, config.contentConfig.title), /* @__PURE__ */ React29.createElement("div", { className: "text-sm text-slate-500 max-w-xs truncate" }, config.contentConfig.message), /* @__PURE__ */ React29.createElement("div", { className: "text-xs text-slate-400 mt-1" }, "\u4E3B\u9898: ", getThemeText(config.contentConfig.theme || "warning")))), /* @__PURE__ */ React29.createElement("td", { className: "px-6 py-4 whitespace-nowrap" }, /* @__PURE__ */ React29.createElement("div", { className: `inline-flex items-center gap-1 px-2 py-1 rounded-full text-xs font-medium ${config.blockProcess ? "bg-red-100 text-red-800" : "bg-blue-100 text-blue-800"}` }, config.blockProcess ? /* @__PURE__ */ React29.createElement(React29.Fragment, null, /* @__PURE__ */ React29.createElement(AlertTriangle, { size: 12 }), "\u963B\u65AD\u63D0\u4EA4") : /* @__PURE__ */ React29.createElement(React29.Fragment, null, /* @__PURE__ */ React29.createElement(Clock, { size: 12 }), "\u4EC5\u63D0\u9192"))), /* @__PURE__ */ React29.createElement("td", { className: "px-6 py-4 whitespace-nowrap" }, /* @__PURE__ */ React29.createElement(
3733
+ )), error && /* @__PURE__ */ React23.createElement("div", { className: "bg-red-50 border border-red-200 rounded-lg p-4" }, /* @__PURE__ */ React23.createElement("p", { className: "text-red-700" }, error)), loading ? /* @__PURE__ */ React23.createElement("div", { className: "text-center py-8" }, /* @__PURE__ */ React23.createElement("div", { className: "animate-spin rounded-full h-8 w-8 border-b-2 border-blue-600 mx-auto mb-4" }), /* @__PURE__ */ React23.createElement("p", { className: "text-slate-600" }, "\u52A0\u8F7D\u4E2D...")) : /* @__PURE__ */ React23.createElement("div", { className: "bg-white rounded-lg border border-slate-200 overflow-hidden" }, configs.length === 0 ? /* @__PURE__ */ React23.createElement("div", { className: "text-center py-8" }, /* @__PURE__ */ React23.createElement(Settings, { size: 40, className: "text-slate-400 mx-auto mb-4" }), /* @__PURE__ */ React23.createElement("h3", { className: "text-lg font-medium text-slate-800 mb-2" }, "\u6682\u65E0\u914D\u7F6E"), /* @__PURE__ */ React23.createElement("p", { className: "text-slate-600 mb-4" }, '\u70B9\u51FB"\u521B\u5EFA\u914D\u7F6E"\u5F00\u59CB\u8BBE\u7F6E\u5F39\u7A97')) : /* @__PURE__ */ React23.createElement("div", { className: "overflow-x-auto" }, /* @__PURE__ */ React23.createElement("table", { className: "w-full" }, /* @__PURE__ */ React23.createElement("thead", { className: "bg-slate-50" }, /* @__PURE__ */ React23.createElement("tr", null, /* @__PURE__ */ React23.createElement("th", { className: "px-6 py-3 text-left text-xs font-medium text-slate-500 uppercase tracking-wider" }, "\u914D\u7F6E\u4FE1\u606F"), /* @__PURE__ */ React23.createElement("th", { className: "px-6 py-3 text-left text-xs font-medium text-slate-500 uppercase tracking-wider" }, "\u89E6\u53D1\u6761\u4EF6"), /* @__PURE__ */ React23.createElement("th", { className: "px-6 py-3 text-left text-xs font-medium text-slate-500 uppercase tracking-wider" }, "\u5F39\u7A97\u5185\u5BB9"), /* @__PURE__ */ React23.createElement("th", { className: "px-6 py-3 text-left text-xs font-medium text-slate-500 uppercase tracking-wider" }, "\u6D41\u7A0B\u63A7\u5236"), /* @__PURE__ */ React23.createElement("th", { className: "px-6 py-3 text-left text-xs font-medium text-slate-500 uppercase tracking-wider" }, "\u72B6\u6001"), /* @__PURE__ */ React23.createElement("th", { className: "px-6 py-3 text-left text-xs font-medium text-slate-500 uppercase tracking-wider" }, "\u64CD\u4F5C"))), /* @__PURE__ */ React23.createElement("tbody", { className: "bg-white divide-y divide-slate-200" }, configs.map((config) => /* @__PURE__ */ React23.createElement("tr", { key: config.id, className: "hover:bg-slate-50" }, /* @__PURE__ */ React23.createElement("td", { className: "px-6 py-4 whitespace-nowrap" }, /* @__PURE__ */ React23.createElement("div", null, /* @__PURE__ */ React23.createElement("div", { className: "text-sm font-medium text-slate-900" }, config.name), config.description && /* @__PURE__ */ React23.createElement("div", { className: "text-sm text-slate-500" }, config.description), /* @__PURE__ */ React23.createElement("div", { className: "text-xs text-slate-400 mt-1" }, config.businessModule, " / ", config.businessScene))), /* @__PURE__ */ React23.createElement("td", { className: "px-6 py-4 whitespace-nowrap" }, /* @__PURE__ */ React23.createElement("div", { className: "text-sm text-slate-900" }, getTriggerTypeText(config.triggerConfig.triggerType)), /* @__PURE__ */ React23.createElement("div", { className: "text-sm text-slate-500" }, formatDeadlineTime(config.triggerConfig)), (config.triggerConfig.advanceMinutes || 0) > 0 && /* @__PURE__ */ React23.createElement("div", { className: "text-xs text-slate-400" }, "\u63D0\u524D ", config.triggerConfig.advanceMinutes, " \u5206\u949F")), /* @__PURE__ */ React23.createElement("td", { className: "px-6 py-4" }, /* @__PURE__ */ React23.createElement("div", null, /* @__PURE__ */ React23.createElement("div", { className: "text-sm font-medium text-slate-900" }, config.contentConfig.title), /* @__PURE__ */ React23.createElement("div", { className: "text-sm text-slate-500 max-w-xs truncate" }, config.contentConfig.message), /* @__PURE__ */ React23.createElement("div", { className: "text-xs text-slate-400 mt-1" }, "\u4E3B\u9898: ", getThemeText(config.contentConfig.theme || "warning")))), /* @__PURE__ */ React23.createElement("td", { className: "px-6 py-4 whitespace-nowrap" }, /* @__PURE__ */ React23.createElement("div", { className: `inline-flex items-center gap-1 px-2 py-1 rounded-full text-xs font-medium ${config.blockProcess ? "bg-red-100 text-red-800" : "bg-blue-100 text-blue-800"}` }, config.blockProcess ? /* @__PURE__ */ React23.createElement(React23.Fragment, null, /* @__PURE__ */ React23.createElement(AlertTriangle, { size: 12 }), "\u963B\u65AD\u63D0\u4EA4") : /* @__PURE__ */ React23.createElement(React23.Fragment, null, /* @__PURE__ */ React23.createElement(Clock, { size: 12 }), "\u4EC5\u63D0\u9192"))), /* @__PURE__ */ React23.createElement("td", { className: "px-6 py-4 whitespace-nowrap" }, /* @__PURE__ */ React23.createElement(
3732
3734
  "button",
3733
3735
  {
3734
3736
  onClick: () => handleToggle(config),
3735
3737
  className: `inline-flex items-center gap-1 px-2 py-1 rounded-full text-xs font-medium ${config.enabled ? "bg-green-100 text-green-800" : "bg-gray-100 text-gray-800"}`
3736
3738
  },
3737
- config.enabled ? /* @__PURE__ */ React29.createElement(Eye, { size: 12 }) : /* @__PURE__ */ React29.createElement(EyeOff, { size: 12 }),
3739
+ config.enabled ? /* @__PURE__ */ React23.createElement(Eye, { size: 12 }) : /* @__PURE__ */ React23.createElement(EyeOff, { size: 12 }),
3738
3740
  config.enabled ? "\u542F\u7528" : "\u7981\u7528"
3739
- )), /* @__PURE__ */ React29.createElement("td", { className: "px-6 py-4 whitespace-nowrap text-sm font-medium" }, /* @__PURE__ */ React29.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ React29.createElement(
3741
+ )), /* @__PURE__ */ React23.createElement("td", { className: "px-6 py-4 whitespace-nowrap text-sm font-medium" }, /* @__PURE__ */ React23.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ React23.createElement(
3740
3742
  "button",
3741
3743
  {
3742
3744
  onClick: () => handleEdit(config),
3743
3745
  className: "text-blue-600 hover:text-blue-700"
3744
3746
  },
3745
- /* @__PURE__ */ React29.createElement(Edit, { size: 16 })
3746
- ), /* @__PURE__ */ React29.createElement(
3747
+ /* @__PURE__ */ React23.createElement(Edit, { size: 16 })
3748
+ ), /* @__PURE__ */ React23.createElement(
3747
3749
  "button",
3748
3750
  {
3749
3751
  onClick: () => handleDelete(config),
3750
3752
  className: "text-red-600 hover:text-red-700"
3751
3753
  },
3752
- /* @__PURE__ */ React29.createElement(Trash2, { size: 16 })
3753
- ))))))))), showCreateModal && /* @__PURE__ */ React29.createElement(
3754
+ /* @__PURE__ */ React23.createElement(Trash2, { size: 16 })
3755
+ ))))))))), showCreateModal && /* @__PURE__ */ React23.createElement(
3754
3756
  Modal,
3755
3757
  {
3756
3758
  isOpen: showCreateModal,
@@ -3763,7 +3765,7 @@ var PopupConfigManagement = () => {
3763
3765
  width: 600,
3764
3766
  maskClosable: false
3765
3767
  },
3766
- /* @__PURE__ */ React29.createElement("div", { className: "space-y-6 max-h-[70vh] overflow-y-auto" }, /* @__PURE__ */ React29.createElement("div", { className: "space-y-4" }, /* @__PURE__ */ React29.createElement("h4", { className: "font-medium text-slate-800" }, "\u57FA\u672C\u4FE1\u606F"), /* @__PURE__ */ React29.createElement("div", null, /* @__PURE__ */ React29.createElement("label", { className: "block text-sm font-medium text-slate-700 mb-1" }, "\u914D\u7F6E\u540D\u79F0 *"), /* @__PURE__ */ React29.createElement(
3768
+ /* @__PURE__ */ React23.createElement("div", { className: "space-y-6 max-h-[70vh] overflow-y-auto" }, /* @__PURE__ */ React23.createElement("div", { className: "space-y-4" }, /* @__PURE__ */ React23.createElement("h4", { className: "font-medium text-slate-800" }, "\u57FA\u672C\u4FE1\u606F"), /* @__PURE__ */ React23.createElement("div", null, /* @__PURE__ */ React23.createElement("label", { className: "block text-sm font-medium text-slate-700 mb-1" }, "\u914D\u7F6E\u540D\u79F0 *"), /* @__PURE__ */ React23.createElement(
3767
3769
  "input",
3768
3770
  {
3769
3771
  type: "text",
@@ -3772,7 +3774,7 @@ var PopupConfigManagement = () => {
3772
3774
  className: "w-full px-3 py-2 border border-slate-300 rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500",
3773
3775
  placeholder: "\u8BF7\u8F93\u5165\u914D\u7F6E\u540D\u79F0"
3774
3776
  }
3775
- )), /* @__PURE__ */ React29.createElement("div", null, /* @__PURE__ */ React29.createElement("label", { className: "block text-sm font-medium text-slate-700 mb-1" }, "\u914D\u7F6E\u63CF\u8FF0"), /* @__PURE__ */ React29.createElement(
3777
+ )), /* @__PURE__ */ React23.createElement("div", null, /* @__PURE__ */ React23.createElement("label", { className: "block text-sm font-medium text-slate-700 mb-1" }, "\u914D\u7F6E\u63CF\u8FF0"), /* @__PURE__ */ React23.createElement(
3776
3778
  "textarea",
3777
3779
  {
3778
3780
  value: formData.description,
@@ -3781,18 +3783,18 @@ var PopupConfigManagement = () => {
3781
3783
  className: "w-full px-3 py-2 border border-slate-300 rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500",
3782
3784
  placeholder: "\u8BF7\u8F93\u5165\u914D\u7F6E\u63CF\u8FF0"
3783
3785
  }
3784
- )), /* @__PURE__ */ React29.createElement("div", null, /* @__PURE__ */ React29.createElement("label", { className: "block text-sm font-medium text-slate-700 mb-1" }, "\u4E1A\u52A1\u573A\u666F *"), /* @__PURE__ */ React29.createElement(
3786
+ )), /* @__PURE__ */ React23.createElement("div", null, /* @__PURE__ */ React23.createElement("label", { className: "block text-sm font-medium text-slate-700 mb-1" }, "\u4E1A\u52A1\u573A\u666F *"), /* @__PURE__ */ React23.createElement(
3785
3787
  "select",
3786
3788
  {
3787
3789
  value: formData.businessScene,
3788
3790
  onChange: (e) => setFormData((prev) => ({ ...prev, businessScene: e.target.value })),
3789
3791
  className: "w-full px-3 py-2 border border-slate-300 rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500"
3790
3792
  },
3791
- /* @__PURE__ */ React29.createElement("option", { value: "cart_checkout" }, "\u8D2D\u7269\u8F66\u63D0\u4EA4"),
3792
- /* @__PURE__ */ React29.createElement("option", { value: "homepage_visit" }, "\u4E3B\u9875\u8BBF\u95EE"),
3793
- /* @__PURE__ */ React29.createElement("option", { value: "collection_view" }, "\u753B\u96C6\u6D4F\u89C8"),
3794
- /* @__PURE__ */ React29.createElement("option", { value: "artwork_detail" }, "\u4F5C\u54C1\u8BE6\u60C5")
3795
- ), /* @__PURE__ */ React29.createElement("div", { className: "text-xs text-slate-500 mt-1" }, "\u9009\u62E9\u5F39\u7A97\u5728\u54EA\u4E2A\u573A\u666F\u4E0B\u89E6\u53D1\u663E\u793A")), /* @__PURE__ */ React29.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ React29.createElement(
3793
+ /* @__PURE__ */ React23.createElement("option", { value: "cart_checkout" }, "\u8D2D\u7269\u8F66\u63D0\u4EA4"),
3794
+ /* @__PURE__ */ React23.createElement("option", { value: "homepage_visit" }, "\u4E3B\u9875\u8BBF\u95EE"),
3795
+ /* @__PURE__ */ React23.createElement("option", { value: "collection_view" }, "\u753B\u96C6\u6D4F\u89C8"),
3796
+ /* @__PURE__ */ React23.createElement("option", { value: "artwork_detail" }, "\u4F5C\u54C1\u8BE6\u60C5")
3797
+ ), /* @__PURE__ */ React23.createElement("div", { className: "text-xs text-slate-500 mt-1" }, "\u9009\u62E9\u5F39\u7A97\u5728\u54EA\u4E2A\u573A\u666F\u4E0B\u89E6\u53D1\u663E\u793A")), /* @__PURE__ */ React23.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ React23.createElement(
3796
3798
  "input",
3797
3799
  {
3798
3800
  type: "checkbox",
@@ -3801,7 +3803,7 @@ var PopupConfigManagement = () => {
3801
3803
  onChange: (e) => setFormData((prev) => ({ ...prev, enabled: e.target.checked })),
3802
3804
  className: "rounded border-slate-300 text-blue-600 focus:ring-blue-500"
3803
3805
  }
3804
- ), /* @__PURE__ */ React29.createElement("label", { htmlFor: "enabled", className: "text-sm font-medium text-slate-700" }, "\u542F\u7528\u6B64\u914D\u7F6E"))), /* @__PURE__ */ React29.createElement("div", { className: "space-y-4" }, /* @__PURE__ */ React29.createElement("h4", { className: "font-medium text-slate-800" }, "\u89E6\u53D1\u6761\u4EF6"), /* @__PURE__ */ React29.createElement("div", null, /* @__PURE__ */ React29.createElement("label", { className: "block text-sm font-medium text-slate-700 mb-1" }, "\u89E6\u53D1\u7C7B\u578B"), /* @__PURE__ */ React29.createElement(
3806
+ ), /* @__PURE__ */ React23.createElement("label", { htmlFor: "enabled", className: "text-sm font-medium text-slate-700" }, "\u542F\u7528\u6B64\u914D\u7F6E"))), /* @__PURE__ */ React23.createElement("div", { className: "space-y-4" }, /* @__PURE__ */ React23.createElement("h4", { className: "font-medium text-slate-800" }, "\u89E6\u53D1\u6761\u4EF6"), /* @__PURE__ */ React23.createElement("div", null, /* @__PURE__ */ React23.createElement("label", { className: "block text-sm font-medium text-slate-700 mb-1" }, "\u89E6\u53D1\u7C7B\u578B"), /* @__PURE__ */ React23.createElement(
3805
3807
  "select",
3806
3808
  {
3807
3809
  value: formData.triggerConfig.triggerType,
@@ -3814,10 +3816,10 @@ var PopupConfigManagement = () => {
3814
3816
  })),
3815
3817
  className: "w-full px-3 py-2 border border-slate-300 rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500"
3816
3818
  },
3817
- /* @__PURE__ */ React29.createElement("option", { value: "after_deadline" }, "\u8D85\u8FC7\u622A\u6B62\u65F6\u95F4\u540E\u663E\u793A"),
3818
- /* @__PURE__ */ React29.createElement("option", { value: "before_deadline" }, "\u622A\u6B62\u65F6\u95F4\u524D\u663E\u793A"),
3819
- /* @__PURE__ */ React29.createElement("option", { value: "always" }, "\u603B\u662F\u663E\u793A")
3820
- )), formData.triggerConfig.triggerType !== "always" && /* @__PURE__ */ React29.createElement("div", null, /* @__PURE__ */ React29.createElement("label", { className: "block text-sm font-medium text-slate-700 mb-1" }, "\u622A\u6B62\u65F6\u95F4"), /* @__PURE__ */ React29.createElement(
3819
+ /* @__PURE__ */ React23.createElement("option", { value: "after_deadline" }, "\u8D85\u8FC7\u622A\u6B62\u65F6\u95F4\u540E\u663E\u793A"),
3820
+ /* @__PURE__ */ React23.createElement("option", { value: "before_deadline" }, "\u622A\u6B62\u65F6\u95F4\u524D\u663E\u793A"),
3821
+ /* @__PURE__ */ React23.createElement("option", { value: "always" }, "\u603B\u662F\u663E\u793A")
3822
+ )), formData.triggerConfig.triggerType !== "always" && /* @__PURE__ */ React23.createElement("div", null, /* @__PURE__ */ React23.createElement("label", { className: "block text-sm font-medium text-slate-700 mb-1" }, "\u622A\u6B62\u65F6\u95F4"), /* @__PURE__ */ React23.createElement(
3821
3823
  "input",
3822
3824
  {
3823
3825
  type: "datetime-local",
@@ -3831,7 +3833,7 @@ var PopupConfigManagement = () => {
3831
3833
  })),
3832
3834
  className: "w-full px-3 py-2 border border-slate-300 rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500"
3833
3835
  }
3834
- )), formData.triggerConfig.triggerType === "before_deadline" && /* @__PURE__ */ React29.createElement("div", null, /* @__PURE__ */ React29.createElement("label", { className: "block text-sm font-medium text-slate-700 mb-1" }, "\u63D0\u524D\u5206\u949F\u6570"), /* @__PURE__ */ React29.createElement(
3836
+ )), formData.triggerConfig.triggerType === "before_deadline" && /* @__PURE__ */ React23.createElement("div", null, /* @__PURE__ */ React23.createElement("label", { className: "block text-sm font-medium text-slate-700 mb-1" }, "\u63D0\u524D\u5206\u949F\u6570"), /* @__PURE__ */ React23.createElement(
3835
3837
  "input",
3836
3838
  {
3837
3839
  type: "number",
@@ -3847,7 +3849,7 @@ var PopupConfigManagement = () => {
3847
3849
  className: "w-full px-3 py-2 border border-slate-300 rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500",
3848
3850
  placeholder: "\u5728\u622A\u6B62\u65F6\u95F4\u524D\u591A\u5C11\u5206\u949F\u663E\u793A"
3849
3851
  }
3850
- ))), /* @__PURE__ */ React29.createElement("div", { className: "space-y-4" }, /* @__PURE__ */ React29.createElement("h4", { className: "font-medium text-slate-800" }, "\u5F39\u7A97\u5185\u5BB9"), /* @__PURE__ */ React29.createElement("div", null, /* @__PURE__ */ React29.createElement("label", { className: "block text-sm font-medium text-slate-700 mb-1" }, "\u5F39\u7A97\u6807\u9898 *"), /* @__PURE__ */ React29.createElement(
3852
+ ))), /* @__PURE__ */ React23.createElement("div", { className: "space-y-4" }, /* @__PURE__ */ React23.createElement("h4", { className: "font-medium text-slate-800" }, "\u5F39\u7A97\u5185\u5BB9"), /* @__PURE__ */ React23.createElement("div", null, /* @__PURE__ */ React23.createElement("label", { className: "block text-sm font-medium text-slate-700 mb-1" }, "\u5F39\u7A97\u6807\u9898 *"), /* @__PURE__ */ React23.createElement(
3851
3853
  "input",
3852
3854
  {
3853
3855
  type: "text",
@@ -3862,7 +3864,7 @@ var PopupConfigManagement = () => {
3862
3864
  className: "w-full px-3 py-2 border border-slate-300 rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500",
3863
3865
  placeholder: "\u8BF7\u8F93\u5165\u5F39\u7A97\u6807\u9898"
3864
3866
  }
3865
- )), /* @__PURE__ */ React29.createElement("div", null, /* @__PURE__ */ React29.createElement("label", { className: "block text-sm font-medium text-slate-700 mb-1" }, "\u5F39\u7A97\u5185\u5BB9 *"), /* @__PURE__ */ React29.createElement(
3867
+ )), /* @__PURE__ */ React23.createElement("div", null, /* @__PURE__ */ React23.createElement("label", { className: "block text-sm font-medium text-slate-700 mb-1" }, "\u5F39\u7A97\u5185\u5BB9 *"), /* @__PURE__ */ React23.createElement(
3866
3868
  "textarea",
3867
3869
  {
3868
3870
  value: formData.contentConfig.message,
@@ -3877,7 +3879,7 @@ var PopupConfigManagement = () => {
3877
3879
  className: "w-full px-3 py-2 border border-slate-300 rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500",
3878
3880
  placeholder: "\u8BF7\u8F93\u5165\u5F39\u7A97\u5185\u5BB9"
3879
3881
  }
3880
- )), /* @__PURE__ */ React29.createElement("div", { className: "grid grid-cols-2 gap-4" }, /* @__PURE__ */ React29.createElement("div", null, /* @__PURE__ */ React29.createElement("label", { className: "block text-sm font-medium text-slate-700 mb-1" }, "\u786E\u8BA4\u6309\u94AE\u6587\u672C"), /* @__PURE__ */ React29.createElement(
3882
+ )), /* @__PURE__ */ React23.createElement("div", { className: "grid grid-cols-2 gap-4" }, /* @__PURE__ */ React23.createElement("div", null, /* @__PURE__ */ React23.createElement("label", { className: "block text-sm font-medium text-slate-700 mb-1" }, "\u786E\u8BA4\u6309\u94AE\u6587\u672C"), /* @__PURE__ */ React23.createElement(
3881
3883
  "input",
3882
3884
  {
3883
3885
  type: "text",
@@ -3891,7 +3893,7 @@ var PopupConfigManagement = () => {
3891
3893
  })),
3892
3894
  className: "w-full px-3 py-2 border border-slate-300 rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500"
3893
3895
  }
3894
- )), /* @__PURE__ */ React29.createElement("div", null, /* @__PURE__ */ React29.createElement("label", { className: "block text-sm font-medium text-slate-700 mb-1" }, "\u53D6\u6D88\u6309\u94AE\u6587\u672C"), /* @__PURE__ */ React29.createElement(
3896
+ )), /* @__PURE__ */ React23.createElement("div", null, /* @__PURE__ */ React23.createElement("label", { className: "block text-sm font-medium text-slate-700 mb-1" }, "\u53D6\u6D88\u6309\u94AE\u6587\u672C"), /* @__PURE__ */ React23.createElement(
3895
3897
  "input",
3896
3898
  {
3897
3899
  type: "text",
@@ -3905,7 +3907,7 @@ var PopupConfigManagement = () => {
3905
3907
  })),
3906
3908
  className: "w-full px-3 py-2 border border-slate-300 rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500"
3907
3909
  }
3908
- ))), /* @__PURE__ */ React29.createElement("div", null, /* @__PURE__ */ React29.createElement("label", { className: "block text-sm font-medium text-slate-700 mb-1" }, "\u5F39\u7A97\u4E3B\u9898"), /* @__PURE__ */ React29.createElement(
3910
+ ))), /* @__PURE__ */ React23.createElement("div", null, /* @__PURE__ */ React23.createElement("label", { className: "block text-sm font-medium text-slate-700 mb-1" }, "\u5F39\u7A97\u4E3B\u9898"), /* @__PURE__ */ React23.createElement(
3909
3911
  "select",
3910
3912
  {
3911
3913
  value: formData.contentConfig.theme,
@@ -3918,11 +3920,11 @@ var PopupConfigManagement = () => {
3918
3920
  })),
3919
3921
  className: "w-full px-3 py-2 border border-slate-300 rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500"
3920
3922
  },
3921
- /* @__PURE__ */ React29.createElement("option", { value: "warning" }, "\u8B66\u544A"),
3922
- /* @__PURE__ */ React29.createElement("option", { value: "info" }, "\u4FE1\u606F"),
3923
- /* @__PURE__ */ React29.createElement("option", { value: "error" }, "\u9519\u8BEF"),
3924
- /* @__PURE__ */ React29.createElement("option", { value: "success" }, "\u6210\u529F")
3925
- )), /* @__PURE__ */ React29.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ React29.createElement(
3923
+ /* @__PURE__ */ React23.createElement("option", { value: "warning" }, "\u8B66\u544A"),
3924
+ /* @__PURE__ */ React23.createElement("option", { value: "info" }, "\u4FE1\u606F"),
3925
+ /* @__PURE__ */ React23.createElement("option", { value: "error" }, "\u9519\u8BEF"),
3926
+ /* @__PURE__ */ React23.createElement("option", { value: "success" }, "\u6210\u529F")
3927
+ )), /* @__PURE__ */ React23.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ React23.createElement(
3926
3928
  "input",
3927
3929
  {
3928
3930
  type: "checkbox",
@@ -3937,7 +3939,7 @@ var PopupConfigManagement = () => {
3937
3939
  })),
3938
3940
  className: "rounded border-slate-300 text-blue-600 focus:ring-blue-500"
3939
3941
  }
3940
- ), /* @__PURE__ */ React29.createElement("label", { htmlFor: "showCancel", className: "text-sm font-medium text-slate-700" }, "\u663E\u793A\u53D6\u6D88\u6309\u94AE"))), /* @__PURE__ */ React29.createElement("div", { className: "space-y-4" }, /* @__PURE__ */ React29.createElement("h4", { className: "font-medium text-slate-800" }, "\u663E\u793A\u8BBE\u7F6E"), /* @__PURE__ */ React29.createElement("div", { className: "grid grid-cols-2 gap-4" }, /* @__PURE__ */ React29.createElement("div", null, /* @__PURE__ */ React29.createElement("label", { className: "block text-sm font-medium text-slate-700 mb-1" }, "\u5F39\u7A97\u5BBD\u5EA6 (px)"), /* @__PURE__ */ React29.createElement(
3942
+ ), /* @__PURE__ */ React23.createElement("label", { htmlFor: "showCancel", className: "text-sm font-medium text-slate-700" }, "\u663E\u793A\u53D6\u6D88\u6309\u94AE"))), /* @__PURE__ */ React23.createElement("div", { className: "space-y-4" }, /* @__PURE__ */ React23.createElement("h4", { className: "font-medium text-slate-800" }, "\u663E\u793A\u8BBE\u7F6E"), /* @__PURE__ */ React23.createElement("div", { className: "grid grid-cols-2 gap-4" }, /* @__PURE__ */ React23.createElement("div", null, /* @__PURE__ */ React23.createElement("label", { className: "block text-sm font-medium text-slate-700 mb-1" }, "\u5F39\u7A97\u5BBD\u5EA6 (px)"), /* @__PURE__ */ React23.createElement(
3941
3943
  "input",
3942
3944
  {
3943
3945
  type: "number",
@@ -3953,7 +3955,7 @@ var PopupConfigManagement = () => {
3953
3955
  })),
3954
3956
  className: "w-full px-3 py-2 border border-slate-300 rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500"
3955
3957
  }
3956
- )), /* @__PURE__ */ React29.createElement("div", null, /* @__PURE__ */ React29.createElement("label", { className: "block text-sm font-medium text-slate-700 mb-1" }, "\u81EA\u52A8\u5173\u95ED (\u79D2\uFF0C0=\u4E0D\u5173\u95ED)"), /* @__PURE__ */ React29.createElement(
3958
+ )), /* @__PURE__ */ React23.createElement("div", null, /* @__PURE__ */ React23.createElement("label", { className: "block text-sm font-medium text-slate-700 mb-1" }, "\u81EA\u52A8\u5173\u95ED (\u79D2\uFF0C0=\u4E0D\u5173\u95ED)"), /* @__PURE__ */ React23.createElement(
3957
3959
  "input",
3958
3960
  {
3959
3961
  type: "number",
@@ -3969,7 +3971,7 @@ var PopupConfigManagement = () => {
3969
3971
  })),
3970
3972
  className: "w-full px-3 py-2 border border-slate-300 rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500"
3971
3973
  }
3972
- ))), /* @__PURE__ */ React29.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ React29.createElement(
3974
+ ))), /* @__PURE__ */ React23.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ React23.createElement(
3973
3975
  "input",
3974
3976
  {
3975
3977
  type: "checkbox",
@@ -3984,8 +3986,8 @@ var PopupConfigManagement = () => {
3984
3986
  })),
3985
3987
  className: "rounded border-slate-300 text-blue-600 focus:ring-blue-500"
3986
3988
  }
3987
- ), /* @__PURE__ */ React29.createElement("label", { htmlFor: "maskClosable", className: "text-sm font-medium text-slate-700" }, "\u5141\u8BB8\u70B9\u51FB\u906E\u7F69\u5173\u95ED")))),
3988
- /* @__PURE__ */ React29.createElement("div", null, /* @__PURE__ */ React29.createElement("h4", { className: "text-sm font-medium text-slate-800 mb-3" }, "\u6D41\u7A0B\u63A7\u5236"), /* @__PURE__ */ React29.createElement("div", { className: "space-y-3" }, /* @__PURE__ */ React29.createElement("div", { className: "flex items-center gap-3" }, /* @__PURE__ */ React29.createElement(
3989
+ ), /* @__PURE__ */ React23.createElement("label", { htmlFor: "maskClosable", className: "text-sm font-medium text-slate-700" }, "\u5141\u8BB8\u70B9\u51FB\u906E\u7F69\u5173\u95ED")))),
3990
+ /* @__PURE__ */ React23.createElement("div", null, /* @__PURE__ */ React23.createElement("h4", { className: "text-sm font-medium text-slate-800 mb-3" }, "\u6D41\u7A0B\u63A7\u5236"), /* @__PURE__ */ React23.createElement("div", { className: "space-y-3" }, /* @__PURE__ */ React23.createElement("div", { className: "flex items-center gap-3" }, /* @__PURE__ */ React23.createElement(
3989
3991
  "input",
3990
3992
  {
3991
3993
  type: "checkbox",
@@ -3997,8 +3999,8 @@ var PopupConfigManagement = () => {
3997
3999
  })),
3998
4000
  className: "rounded border-slate-300 text-blue-600 focus:ring-blue-500"
3999
4001
  }
4000
- ), /* @__PURE__ */ React29.createElement("label", { htmlFor: "blockProcess", className: "text-sm font-medium text-slate-700" }, "\u963B\u65AD\u6D41\u7A0B")), /* @__PURE__ */ React29.createElement("div", { className: "text-xs text-slate-500 pl-6" }, "\u2022 \u542F\u7528\u65F6\uFF1A\u5F39\u7A97\u663E\u793A\u540E\u963B\u6B62\u7528\u6237\u7EE7\u7EED\u63D0\u4EA4\uFF0C\u53EA\u6709\u5173\u95ED\u5F39\u7A97\u624D\u80FD\u505C\u6B62\u64CD\u4F5C", /* @__PURE__ */ React29.createElement("br", null), "\u2022 \u7981\u7528\u65F6\uFF1A\u5F39\u7A97\u4EC5\u4F5C\u4E3A\u63D0\u9192\uFF0C\u7528\u6237\u53EF\u4EE5\u9009\u62E9\u7EE7\u7EED\u63D0\u4EA4\u6216\u53D6\u6D88"))),
4001
- /* @__PURE__ */ React29.createElement("div", { className: "flex justify-end gap-3 mt-6 pt-4 border-t border-slate-200" }, /* @__PURE__ */ React29.createElement(
4002
+ ), /* @__PURE__ */ React23.createElement("label", { htmlFor: "blockProcess", className: "text-sm font-medium text-slate-700" }, "\u963B\u65AD\u6D41\u7A0B")), /* @__PURE__ */ React23.createElement("div", { className: "text-xs text-slate-500 pl-6" }, "\u2022 \u542F\u7528\u65F6\uFF1A\u5F39\u7A97\u663E\u793A\u540E\u963B\u6B62\u7528\u6237\u7EE7\u7EED\u63D0\u4EA4\uFF0C\u53EA\u6709\u5173\u95ED\u5F39\u7A97\u624D\u80FD\u505C\u6B62\u64CD\u4F5C", /* @__PURE__ */ React23.createElement("br", null), "\u2022 \u7981\u7528\u65F6\uFF1A\u5F39\u7A97\u4EC5\u4F5C\u4E3A\u63D0\u9192\uFF0C\u7528\u6237\u53EF\u4EE5\u9009\u62E9\u7EE7\u7EED\u63D0\u4EA4\u6216\u53D6\u6D88"))),
4003
+ /* @__PURE__ */ React23.createElement("div", { className: "flex justify-end gap-3 mt-6 pt-4 border-t border-slate-200" }, /* @__PURE__ */ React23.createElement(
4002
4004
  "button",
4003
4005
  {
4004
4006
  onClick: () => {
@@ -4009,13 +4011,13 @@ var PopupConfigManagement = () => {
4009
4011
  className: "px-4 py-2 text-slate-600 hover:text-slate-700 transition-colors"
4010
4012
  },
4011
4013
  "\u53D6\u6D88"
4012
- ), /* @__PURE__ */ React29.createElement(
4014
+ ), /* @__PURE__ */ React23.createElement(
4013
4015
  "button",
4014
4016
  {
4015
4017
  onClick: handleSave,
4016
4018
  className: "flex items-center gap-2 px-4 py-2 bg-blue-600 text-white rounded-md hover:bg-blue-700 transition-colors"
4017
4019
  },
4018
- /* @__PURE__ */ React29.createElement(Save, { size: 16 }),
4020
+ /* @__PURE__ */ React23.createElement(Save, { size: 16 }),
4019
4021
  editingConfig ? "\u66F4\u65B0" : "\u521B\u5EFA"
4020
4022
  ))
4021
4023
  ));
@@ -4184,12 +4186,12 @@ var SystemConfigManager = () => {
4184
4186
  );
4185
4187
  const getStatusIcon = (item) => {
4186
4188
  if (item.isRequired && !item.value) {
4187
- return /* @__PURE__ */ React29.createElement(AlertTriangle, { className: "text-red-500", size: 16 });
4189
+ return /* @__PURE__ */ React23.createElement(AlertTriangle, { className: "text-red-500", size: 16 });
4188
4190
  }
4189
4191
  if (item.value) {
4190
- return /* @__PURE__ */ React29.createElement(CheckCircle, { className: "text-green-500", size: 16 });
4192
+ return /* @__PURE__ */ React23.createElement(CheckCircle, { className: "text-green-500", size: 16 });
4191
4193
  }
4192
- return /* @__PURE__ */ React29.createElement(AlertTriangle, { className: "text-yellow-500", size: 16 });
4194
+ return /* @__PURE__ */ React23.createElement(AlertTriangle, { className: "text-yellow-500", size: 16 });
4193
4195
  };
4194
4196
  const getTypeDisplay = (type) => {
4195
4197
  switch (type) {
@@ -4210,7 +4212,7 @@ var SystemConfigManager = () => {
4210
4212
  return "\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022";
4211
4213
  }
4212
4214
  if (!item.value) {
4213
- return /* @__PURE__ */ React29.createElement("span", { className: "text-gray-400 italic" }, "\u672A\u8BBE\u7F6E");
4215
+ return /* @__PURE__ */ React23.createElement("span", { className: "text-gray-400 italic" }, "\u672A\u8BBE\u7F6E");
4214
4216
  }
4215
4217
  return item.value;
4216
4218
  };
@@ -4226,16 +4228,16 @@ var SystemConfigManager = () => {
4226
4228
  }
4227
4229
  return void 0;
4228
4230
  }, [message]);
4229
- return /* @__PURE__ */ React29.createElement("div", { className: "space-y-6" }, message && /* @__PURE__ */ React29.createElement("div", { className: `p-4 rounded-lg ${message.type === "success" ? "bg-green-50 border border-green-200 text-green-800" : "bg-red-50 border border-red-200 text-red-800"}` }, message.text), /* @__PURE__ */ React29.createElement("div", { className: "bg-white rounded-lg shadow-sm border border-gray-200 p-6" }, /* @__PURE__ */ React29.createElement("div", { className: "flex flex-col sm:flex-row sm:items-center sm:justify-between gap-4" }, /* @__PURE__ */ React29.createElement("div", { className: "flex flex-col sm:flex-row sm:items-center gap-4" }, /* @__PURE__ */ React29.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ React29.createElement("label", { className: "text-sm font-medium text-gray-700" }, "\u73AF\u5883:"), /* @__PURE__ */ React29.createElement(
4231
+ return /* @__PURE__ */ React23.createElement("div", { className: "space-y-6" }, message && /* @__PURE__ */ React23.createElement("div", { className: `p-4 rounded-lg ${message.type === "success" ? "bg-green-50 border border-green-200 text-green-800" : "bg-red-50 border border-red-200 text-red-800"}` }, message.text), /* @__PURE__ */ React23.createElement("div", { className: "bg-white rounded-lg shadow-sm border border-gray-200 p-6" }, /* @__PURE__ */ React23.createElement("div", { className: "flex flex-col sm:flex-row sm:items-center sm:justify-between gap-4" }, /* @__PURE__ */ React23.createElement("div", { className: "flex flex-col sm:flex-row sm:items-center gap-4" }, /* @__PURE__ */ React23.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ React23.createElement("label", { className: "text-sm font-medium text-gray-700" }, "\u73AF\u5883:"), /* @__PURE__ */ React23.createElement(
4230
4232
  "select",
4231
4233
  {
4232
4234
  value: currentEnvironment,
4233
4235
  onChange: (e) => handleEnvironmentChange(e.target.value),
4234
4236
  className: "px-3 py-1 border border-gray-300 rounded-md text-sm focus:outline-none focus:ring-2 focus:ring-blue-500"
4235
4237
  },
4236
- /* @__PURE__ */ React29.createElement("option", { value: "development" }, "\u5F00\u53D1\u73AF\u5883"),
4237
- /* @__PURE__ */ React29.createElement("option", { value: "production" }, "\u751F\u4EA7\u73AF\u5883")
4238
- )), /* @__PURE__ */ React29.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ React29.createElement(
4238
+ /* @__PURE__ */ React23.createElement("option", { value: "development" }, "\u5F00\u53D1\u73AF\u5883"),
4239
+ /* @__PURE__ */ React23.createElement("option", { value: "production" }, "\u751F\u4EA7\u73AF\u5883")
4240
+ )), /* @__PURE__ */ React23.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ React23.createElement(
4239
4241
  "input",
4240
4242
  {
4241
4243
  type: "text",
@@ -4244,24 +4246,24 @@ var SystemConfigManager = () => {
4244
4246
  onChange: (e) => setSearchTerm(e.target.value),
4245
4247
  className: "px-3 py-1 border border-gray-300 rounded-md text-sm focus:outline-none focus:ring-2 focus:ring-blue-500"
4246
4248
  }
4247
- ))), /* @__PURE__ */ React29.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ React29.createElement(
4249
+ ))), /* @__PURE__ */ React23.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ React23.createElement(
4248
4250
  "button",
4249
4251
  {
4250
4252
  onClick: () => setAddDialog({ isOpen: true }),
4251
4253
  className: "flex items-center gap-2 px-4 py-2 bg-blue-600 text-white rounded-md text-sm font-medium hover:bg-blue-700 transition-colors"
4252
4254
  },
4253
- /* @__PURE__ */ React29.createElement(Plus, { size: 16 }),
4255
+ /* @__PURE__ */ React23.createElement(Plus, { size: 16 }),
4254
4256
  "\u65B0\u589E\u914D\u7F6E"
4255
- ), /* @__PURE__ */ React29.createElement(
4257
+ ), /* @__PURE__ */ React23.createElement(
4256
4258
  "button",
4257
4259
  {
4258
4260
  onClick: () => loadConfigItems(),
4259
4261
  disabled: loading,
4260
4262
  className: "flex items-center gap-2 px-4 py-2 bg-gray-100 text-gray-700 rounded-md text-sm font-medium hover:bg-gray-200 transition-colors disabled:opacity-50"
4261
4263
  },
4262
- /* @__PURE__ */ React29.createElement(RefreshCw, { size: 16, className: loading ? "animate-spin" : "" }),
4264
+ /* @__PURE__ */ React23.createElement(RefreshCw, { size: 16, className: loading ? "animate-spin" : "" }),
4263
4265
  "\u5237\u65B0"
4264
- )))), /* @__PURE__ */ React29.createElement("div", { className: "grid grid-cols-1 sm:grid-cols-3 gap-4" }, /* @__PURE__ */ React29.createElement("div", { className: "bg-white rounded-lg shadow-sm border border-gray-200 p-4" }, /* @__PURE__ */ React29.createElement("div", { className: "flex items-center gap-3" }, /* @__PURE__ */ React29.createElement(Database, { className: "text-blue-500", size: 20 }), /* @__PURE__ */ React29.createElement("div", null, /* @__PURE__ */ React29.createElement("p", { className: "text-sm text-gray-600" }, "\u603B\u914D\u7F6E\u9879"), /* @__PURE__ */ React29.createElement("p", { className: "text-lg font-semibold text-gray-900" }, configItems.length)))), /* @__PURE__ */ React29.createElement("div", { className: "bg-white rounded-lg shadow-sm border border-gray-200 p-4" }, /* @__PURE__ */ React29.createElement("div", { className: "flex items-center gap-3" }, /* @__PURE__ */ React29.createElement(CheckCircle, { className: "text-green-500", size: 20 }), /* @__PURE__ */ React29.createElement("div", null, /* @__PURE__ */ React29.createElement("p", { className: "text-sm text-gray-600" }, "\u5DF2\u914D\u7F6E"), /* @__PURE__ */ React29.createElement("p", { className: "text-lg font-semibold text-gray-900" }, configItems.filter((item) => item.value).length)))), /* @__PURE__ */ React29.createElement("div", { className: "bg-white rounded-lg shadow-sm border border-gray-200 p-4" }, /* @__PURE__ */ React29.createElement("div", { className: "flex items-center gap-3" }, /* @__PURE__ */ React29.createElement(AlertTriangle, { className: "text-yellow-500", size: 20 }), /* @__PURE__ */ React29.createElement("div", null, /* @__PURE__ */ React29.createElement("p", { className: "text-sm text-gray-600" }, "\u5F85\u914D\u7F6E"), /* @__PURE__ */ React29.createElement("p", { className: "text-lg font-semibold text-gray-900" }, configItems.filter((item) => item.isRequired && !item.value).length))))), /* @__PURE__ */ React29.createElement("div", { className: "bg-white rounded-lg shadow-sm border border-gray-200" }, loading ? /* @__PURE__ */ React29.createElement("div", { className: "p-8 text-center" }, /* @__PURE__ */ React29.createElement(Loader, { className: "animate-spin mx-auto mb-4 text-blue-500", size: 32 }), /* @__PURE__ */ React29.createElement("p", { className: "text-gray-600" }, "\u52A0\u8F7D\u914D\u7F6E\u9879\u4E2D...")) : /* @__PURE__ */ React29.createElement("div", { className: "overflow-x-auto" }, /* @__PURE__ */ React29.createElement("table", { className: "w-full" }, /* @__PURE__ */ React29.createElement("thead", { className: "bg-gray-50 border-b border-gray-200" }, /* @__PURE__ */ React29.createElement("tr", null, /* @__PURE__ */ React29.createElement("th", { className: "px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider" }, "\u72B6\u6001"), /* @__PURE__ */ React29.createElement("th", { className: "px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider" }, "\u914D\u7F6E\u9879"), /* @__PURE__ */ React29.createElement("th", { className: "px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider" }, "\u7C7B\u578B"), /* @__PURE__ */ React29.createElement("th", { className: "px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider" }, "\u5F53\u524D\u503C"), /* @__PURE__ */ React29.createElement("th", { className: "px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider" }, "\u64CD\u4F5C"))), /* @__PURE__ */ React29.createElement("tbody", { className: "bg-white divide-y divide-gray-200" }, filteredItems.map((item) => /* @__PURE__ */ React29.createElement("tr", { key: item.id, className: "hover:bg-gray-50" }, /* @__PURE__ */ React29.createElement("td", { className: "px-6 py-4 whitespace-nowrap" }, getStatusIcon(item)), /* @__PURE__ */ React29.createElement("td", { className: "px-6 py-4" }, /* @__PURE__ */ React29.createElement("div", null, /* @__PURE__ */ React29.createElement("div", { className: "text-sm font-medium text-gray-900" }, item.displayName, item.isRequired && /* @__PURE__ */ React29.createElement("span", { className: "text-red-500 ml-1" }, "*")), /* @__PURE__ */ React29.createElement("div", { className: "text-sm text-gray-500" }, item.description), /* @__PURE__ */ React29.createElement("div", { className: "text-xs text-gray-400 mt-1" }, "Key: ", item.key))), /* @__PURE__ */ React29.createElement("td", { className: "px-6 py-4 whitespace-nowrap" }, /* @__PURE__ */ React29.createElement("span", { className: "inline-flex items-center px-2 py-1 rounded-full text-xs font-medium bg-gray-100 text-gray-800" }, getTypeDisplay(item.type))), /* @__PURE__ */ React29.createElement("td", { className: "px-6 py-4" }, editingItem === item.id ? /* @__PURE__ */ React29.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ React29.createElement(
4266
+ )))), /* @__PURE__ */ React23.createElement("div", { className: "grid grid-cols-1 sm:grid-cols-3 gap-4" }, /* @__PURE__ */ React23.createElement("div", { className: "bg-white rounded-lg shadow-sm border border-gray-200 p-4" }, /* @__PURE__ */ React23.createElement("div", { className: "flex items-center gap-3" }, /* @__PURE__ */ React23.createElement(Database, { className: "text-blue-500", size: 20 }), /* @__PURE__ */ React23.createElement("div", null, /* @__PURE__ */ React23.createElement("p", { className: "text-sm text-gray-600" }, "\u603B\u914D\u7F6E\u9879"), /* @__PURE__ */ React23.createElement("p", { className: "text-lg font-semibold text-gray-900" }, configItems.length)))), /* @__PURE__ */ React23.createElement("div", { className: "bg-white rounded-lg shadow-sm border border-gray-200 p-4" }, /* @__PURE__ */ React23.createElement("div", { className: "flex items-center gap-3" }, /* @__PURE__ */ React23.createElement(CheckCircle, { className: "text-green-500", size: 20 }), /* @__PURE__ */ React23.createElement("div", null, /* @__PURE__ */ React23.createElement("p", { className: "text-sm text-gray-600" }, "\u5DF2\u914D\u7F6E"), /* @__PURE__ */ React23.createElement("p", { className: "text-lg font-semibold text-gray-900" }, configItems.filter((item) => item.value).length)))), /* @__PURE__ */ React23.createElement("div", { className: "bg-white rounded-lg shadow-sm border border-gray-200 p-4" }, /* @__PURE__ */ React23.createElement("div", { className: "flex items-center gap-3" }, /* @__PURE__ */ React23.createElement(AlertTriangle, { className: "text-yellow-500", size: 20 }), /* @__PURE__ */ React23.createElement("div", null, /* @__PURE__ */ React23.createElement("p", { className: "text-sm text-gray-600" }, "\u5F85\u914D\u7F6E"), /* @__PURE__ */ React23.createElement("p", { className: "text-lg font-semibold text-gray-900" }, configItems.filter((item) => item.isRequired && !item.value).length))))), /* @__PURE__ */ React23.createElement("div", { className: "bg-white rounded-lg shadow-sm border border-gray-200" }, loading ? /* @__PURE__ */ React23.createElement("div", { className: "p-8 text-center" }, /* @__PURE__ */ React23.createElement(Loader, { className: "animate-spin mx-auto mb-4 text-blue-500", size: 32 }), /* @__PURE__ */ React23.createElement("p", { className: "text-gray-600" }, "\u52A0\u8F7D\u914D\u7F6E\u9879\u4E2D...")) : /* @__PURE__ */ React23.createElement("div", { className: "overflow-x-auto" }, /* @__PURE__ */ React23.createElement("table", { className: "w-full" }, /* @__PURE__ */ React23.createElement("thead", { className: "bg-gray-50 border-b border-gray-200" }, /* @__PURE__ */ React23.createElement("tr", null, /* @__PURE__ */ React23.createElement("th", { className: "px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider" }, "\u72B6\u6001"), /* @__PURE__ */ React23.createElement("th", { className: "px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider" }, "\u914D\u7F6E\u9879"), /* @__PURE__ */ React23.createElement("th", { className: "px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider" }, "\u7C7B\u578B"), /* @__PURE__ */ React23.createElement("th", { className: "px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider" }, "\u5F53\u524D\u503C"), /* @__PURE__ */ React23.createElement("th", { className: "px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider" }, "\u64CD\u4F5C"))), /* @__PURE__ */ React23.createElement("tbody", { className: "bg-white divide-y divide-gray-200" }, filteredItems.map((item) => /* @__PURE__ */ React23.createElement("tr", { key: item.id, className: "hover:bg-gray-50" }, /* @__PURE__ */ React23.createElement("td", { className: "px-6 py-4 whitespace-nowrap" }, getStatusIcon(item)), /* @__PURE__ */ React23.createElement("td", { className: "px-6 py-4" }, /* @__PURE__ */ React23.createElement("div", null, /* @__PURE__ */ React23.createElement("div", { className: "text-sm font-medium text-gray-900" }, item.displayName, item.isRequired && /* @__PURE__ */ React23.createElement("span", { className: "text-red-500 ml-1" }, "*")), /* @__PURE__ */ React23.createElement("div", { className: "text-sm text-gray-500" }, item.description), /* @__PURE__ */ React23.createElement("div", { className: "text-xs text-gray-400 mt-1" }, "Key: ", item.key))), /* @__PURE__ */ React23.createElement("td", { className: "px-6 py-4 whitespace-nowrap" }, /* @__PURE__ */ React23.createElement("span", { className: "inline-flex items-center px-2 py-1 rounded-full text-xs font-medium bg-gray-100 text-gray-800" }, getTypeDisplay(item.type))), /* @__PURE__ */ React23.createElement("td", { className: "px-6 py-4" }, editingItem === item.id ? /* @__PURE__ */ React23.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ React23.createElement(
4265
4267
  "input",
4266
4268
  {
4267
4269
  type: item.type === "password" ? "password" : "text",
@@ -4273,44 +4275,44 @@ var SystemConfigManager = () => {
4273
4275
  className: "px-2 py-1 border border-gray-300 rounded text-sm focus:outline-none focus:ring-1 focus:ring-blue-500",
4274
4276
  placeholder: item.defaultValue
4275
4277
  }
4276
- ), /* @__PURE__ */ React29.createElement(
4278
+ ), /* @__PURE__ */ React23.createElement(
4277
4279
  "button",
4278
4280
  {
4279
4281
  onClick: () => saveEdit(item),
4280
4282
  disabled: saving === item.id,
4281
4283
  className: "text-green-600 hover:text-green-700 disabled:opacity-50"
4282
4284
  },
4283
- saving === item.id ? /* @__PURE__ */ React29.createElement(Loader, { size: 16, className: "animate-spin" }) : /* @__PURE__ */ React29.createElement(Save, { size: 16 })
4284
- ), /* @__PURE__ */ React29.createElement(
4285
+ saving === item.id ? /* @__PURE__ */ React23.createElement(Loader, { size: 16, className: "animate-spin" }) : /* @__PURE__ */ React23.createElement(Save, { size: 16 })
4286
+ ), /* @__PURE__ */ React23.createElement(
4285
4287
  "button",
4286
4288
  {
4287
4289
  onClick: cancelEdit,
4288
4290
  className: "text-gray-600 hover:text-gray-700"
4289
4291
  },
4290
4292
  "\xD7"
4291
- )) : /* @__PURE__ */ React29.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ React29.createElement("span", { className: "text-sm text-gray-900" }, renderValue(item)), item.isSensitive && /* @__PURE__ */ React29.createElement(
4293
+ )) : /* @__PURE__ */ React23.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ React23.createElement("span", { className: "text-sm text-gray-900" }, renderValue(item)), item.isSensitive && /* @__PURE__ */ React23.createElement(
4292
4294
  "button",
4293
4295
  {
4294
4296
  onClick: () => toggleSensitive(item.id),
4295
4297
  className: "text-gray-400 hover:text-gray-600"
4296
4298
  },
4297
- showSensitive[item.id] ? /* @__PURE__ */ React29.createElement(EyeOff, { size: 14 }) : /* @__PURE__ */ React29.createElement(Eye, { size: 14 })
4298
- ))), /* @__PURE__ */ React29.createElement("td", { className: "px-6 py-4 whitespace-nowrap text-sm font-medium" }, /* @__PURE__ */ React29.createElement("div", { className: "flex items-center gap-2" }, editingItem === item.id ? null : /* @__PURE__ */ React29.createElement(React29.Fragment, null, /* @__PURE__ */ React29.createElement(
4299
+ showSensitive[item.id] ? /* @__PURE__ */ React23.createElement(EyeOff, { size: 14 }) : /* @__PURE__ */ React23.createElement(Eye, { size: 14 })
4300
+ ))), /* @__PURE__ */ React23.createElement("td", { className: "px-6 py-4 whitespace-nowrap text-sm font-medium" }, /* @__PURE__ */ React23.createElement("div", { className: "flex items-center gap-2" }, editingItem === item.id ? null : /* @__PURE__ */ React23.createElement(React23.Fragment, null, /* @__PURE__ */ React23.createElement(
4299
4301
  "button",
4300
4302
  {
4301
4303
  onClick: () => startEdit(item),
4302
4304
  className: "text-blue-600 hover:text-blue-700"
4303
4305
  },
4304
- /* @__PURE__ */ React29.createElement(Edit, { size: 16 })
4305
- ), /* @__PURE__ */ React29.createElement(
4306
+ /* @__PURE__ */ React23.createElement(Edit, { size: 16 })
4307
+ ), /* @__PURE__ */ React23.createElement(
4306
4308
  "button",
4307
4309
  {
4308
4310
  onClick: () => handleDeleteItem(item),
4309
4311
  disabled: deleting === item.id,
4310
4312
  className: "text-red-600 hover:text-red-700 disabled:opacity-50"
4311
4313
  },
4312
- deleting === item.id ? /* @__PURE__ */ React29.createElement(Loader, { size: 16, className: "animate-spin" }) : /* @__PURE__ */ React29.createElement(Trash2, { size: 16 })
4313
- )))))))), filteredItems.length === 0 && /* @__PURE__ */ React29.createElement("div", { className: "p-8 text-center" }, /* @__PURE__ */ React29.createElement("p", { className: "text-gray-600" }, searchTerm ? "\u672A\u627E\u5230\u5339\u914D\u7684\u914D\u7F6E\u9879" : "\u6682\u65E0\u914D\u7F6E\u9879")))), /* @__PURE__ */ React29.createElement(
4314
+ deleting === item.id ? /* @__PURE__ */ React23.createElement(Loader, { size: 16, className: "animate-spin" }) : /* @__PURE__ */ React23.createElement(Trash2, { size: 16 })
4315
+ )))))))), filteredItems.length === 0 && /* @__PURE__ */ React23.createElement("div", { className: "p-8 text-center" }, /* @__PURE__ */ React23.createElement("p", { className: "text-gray-600" }, searchTerm ? "\u672A\u627E\u5230\u5339\u914D\u7684\u914D\u7F6E\u9879" : "\u6682\u65E0\u914D\u7F6E\u9879")))), /* @__PURE__ */ React23.createElement(
4314
4316
  DeleteConfirmDialog,
4315
4317
  {
4316
4318
  isOpen: deleteDialog.isOpen,
@@ -4318,7 +4320,7 @@ var SystemConfigManager = () => {
4318
4320
  onConfirm: confirmDelete,
4319
4321
  onCancel: () => setDeleteDialog({ isOpen: false, item: null })
4320
4322
  }
4321
- ), /* @__PURE__ */ React29.createElement(
4323
+ ), /* @__PURE__ */ React23.createElement(
4322
4324
  AddConfigItemDialog,
4323
4325
  {
4324
4326
  isOpen: addDialog.isOpen,
@@ -4444,13 +4446,13 @@ var AddConfigItemDialog = ({
4444
4446
  }
4445
4447
  };
4446
4448
  if (!isOpen) return null;
4447
- return /* @__PURE__ */ React29.createElement("div", { className: "fixed inset-0 z-50 overflow-y-auto" }, /* @__PURE__ */ React29.createElement("div", { className: "flex items-center justify-center min-h-screen pt-4 px-4 pb-20 text-center sm:block sm:p-0" }, /* @__PURE__ */ React29.createElement(
4449
+ return /* @__PURE__ */ React23.createElement("div", { className: "fixed inset-0 z-50 overflow-y-auto" }, /* @__PURE__ */ React23.createElement("div", { className: "flex items-center justify-center min-h-screen pt-4 px-4 pb-20 text-center sm:block sm:p-0" }, /* @__PURE__ */ React23.createElement(
4448
4450
  "div",
4449
4451
  {
4450
4452
  className: "fixed inset-0 bg-gray-500 bg-opacity-75 transition-opacity",
4451
4453
  onClick: onCancel
4452
4454
  }
4453
- ), /* @__PURE__ */ React29.createElement("div", { className: "inline-block align-bottom bg-white rounded-lg text-left overflow-hidden shadow-xl transform transition-all sm:my-8 sm:align-middle sm:max-w-2xl sm:w-full" }, /* @__PURE__ */ React29.createElement("div", { className: "bg-white px-4 pt-5 pb-4 sm:p-6 sm:pb-4" }, /* @__PURE__ */ React29.createElement("div", { className: "sm:flex sm:items-start" }, /* @__PURE__ */ React29.createElement("div", { className: "mx-auto flex-shrink-0 flex items-center justify-center h-12 w-12 rounded-full bg-blue-100 sm:mx-0 sm:h-10 sm:w-10" }, /* @__PURE__ */ React29.createElement(Plus, { className: "h-6 w-6 text-blue-600" })), /* @__PURE__ */ React29.createElement("div", { className: "mt-3 text-center sm:mt-0 sm:ml-4 sm:text-left w-full" }, /* @__PURE__ */ React29.createElement("h3", { className: "text-lg leading-6 font-medium text-gray-900 mb-4" }, "\u65B0\u589E\u914D\u7F6E\u9879"), error && /* @__PURE__ */ React29.createElement("div", { className: "mb-4 p-3 bg-red-50 border border-red-200 rounded-md" }, /* @__PURE__ */ React29.createElement("div", { className: "flex items-center" }, /* @__PURE__ */ React29.createElement(AlertTriangle, { className: "w-4 h-4 text-red-600 mr-2" }), /* @__PURE__ */ React29.createElement("span", { className: "text-sm text-red-800" }, error))), success && /* @__PURE__ */ React29.createElement("div", { className: "mb-4 p-3 bg-green-50 border border-green-200 rounded-md" }, /* @__PURE__ */ React29.createElement("div", { className: "flex items-center" }, /* @__PURE__ */ React29.createElement("span", { className: "text-sm text-green-800" }, success))), /* @__PURE__ */ React29.createElement("form", { onSubmit: handleSubmit, className: "space-y-4" }, /* @__PURE__ */ React29.createElement("div", null, /* @__PURE__ */ React29.createElement("label", { className: "block text-sm font-medium text-gray-700 mb-1" }, "\u914D\u7F6E\u952E ", /* @__PURE__ */ React29.createElement("span", { className: "text-red-500" }, "*")), /* @__PURE__ */ React29.createElement(
4455
+ ), /* @__PURE__ */ React23.createElement("div", { className: "inline-block align-bottom bg-white rounded-lg text-left overflow-hidden shadow-xl transform transition-all sm:my-8 sm:align-middle sm:max-w-2xl sm:w-full" }, /* @__PURE__ */ React23.createElement("div", { className: "bg-white px-4 pt-5 pb-4 sm:p-6 sm:pb-4" }, /* @__PURE__ */ React23.createElement("div", { className: "sm:flex sm:items-start" }, /* @__PURE__ */ React23.createElement("div", { className: "mx-auto flex-shrink-0 flex items-center justify-center h-12 w-12 rounded-full bg-blue-100 sm:mx-0 sm:h-10 sm:w-10" }, /* @__PURE__ */ React23.createElement(Plus, { className: "h-6 w-6 text-blue-600" })), /* @__PURE__ */ React23.createElement("div", { className: "mt-3 text-center sm:mt-0 sm:ml-4 sm:text-left w-full" }, /* @__PURE__ */ React23.createElement("h3", { className: "text-lg leading-6 font-medium text-gray-900 mb-4" }, "\u65B0\u589E\u914D\u7F6E\u9879"), error && /* @__PURE__ */ React23.createElement("div", { className: "mb-4 p-3 bg-red-50 border border-red-200 rounded-md" }, /* @__PURE__ */ React23.createElement("div", { className: "flex items-center" }, /* @__PURE__ */ React23.createElement(AlertTriangle, { className: "w-4 h-4 text-red-600 mr-2" }), /* @__PURE__ */ React23.createElement("span", { className: "text-sm text-red-800" }, error))), success && /* @__PURE__ */ React23.createElement("div", { className: "mb-4 p-3 bg-green-50 border border-green-200 rounded-md" }, /* @__PURE__ */ React23.createElement("div", { className: "flex items-center" }, /* @__PURE__ */ React23.createElement("span", { className: "text-sm text-green-800" }, success))), /* @__PURE__ */ React23.createElement("form", { onSubmit: handleSubmit, className: "space-y-4" }, /* @__PURE__ */ React23.createElement("div", null, /* @__PURE__ */ React23.createElement("label", { className: "block text-sm font-medium text-gray-700 mb-1" }, "\u914D\u7F6E\u952E ", /* @__PURE__ */ React23.createElement("span", { className: "text-red-500" }, "*")), /* @__PURE__ */ React23.createElement(
4454
4456
  "input",
4455
4457
  {
4456
4458
  type: "text",
@@ -4460,7 +4462,7 @@ var AddConfigItemDialog = ({
4460
4462
  className: `w-full px-3 py-2 border rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500 ${errors.key ? "border-red-300" : "border-gray-300"}`,
4461
4463
  disabled: saving
4462
4464
  }
4463
- ), errors.key && /* @__PURE__ */ React29.createElement("p", { className: "mt-1 text-sm text-red-600" }, errors.key), /* @__PURE__ */ React29.createElement("p", { className: "mt-1 text-xs text-gray-500" }, "\u53EA\u80FD\u5305\u542B\u5927\u5199\u5B57\u6BCD\u3001\u6570\u5B57\u548C\u4E0B\u5212\u7EBF\uFF0C\u4E14\u5FC5\u987B\u4EE5\u5B57\u6BCD\u6216\u4E0B\u5212\u7EBF\u5F00\u5934")), /* @__PURE__ */ React29.createElement("div", null, /* @__PURE__ */ React29.createElement("label", { className: "block text-sm font-medium text-gray-700 mb-1" }, "\u663E\u793A\u540D\u79F0 ", /* @__PURE__ */ React29.createElement("span", { className: "text-red-500" }, "*")), /* @__PURE__ */ React29.createElement(
4465
+ ), errors.key && /* @__PURE__ */ React23.createElement("p", { className: "mt-1 text-sm text-red-600" }, errors.key), /* @__PURE__ */ React23.createElement("p", { className: "mt-1 text-xs text-gray-500" }, "\u53EA\u80FD\u5305\u542B\u5927\u5199\u5B57\u6BCD\u3001\u6570\u5B57\u548C\u4E0B\u5212\u7EBF\uFF0C\u4E14\u5FC5\u987B\u4EE5\u5B57\u6BCD\u6216\u4E0B\u5212\u7EBF\u5F00\u5934")), /* @__PURE__ */ React23.createElement("div", null, /* @__PURE__ */ React23.createElement("label", { className: "block text-sm font-medium text-gray-700 mb-1" }, "\u663E\u793A\u540D\u79F0 ", /* @__PURE__ */ React23.createElement("span", { className: "text-red-500" }, "*")), /* @__PURE__ */ React23.createElement(
4464
4466
  "input",
4465
4467
  {
4466
4468
  type: "text",
@@ -4470,7 +4472,7 @@ var AddConfigItemDialog = ({
4470
4472
  className: `w-full px-3 py-2 border rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500 ${errors.displayName ? "border-red-300" : "border-gray-300"}`,
4471
4473
  disabled: saving
4472
4474
  }
4473
- ), errors.displayName && /* @__PURE__ */ React29.createElement("p", { className: "mt-1 text-sm text-red-600" }, errors.displayName)), /* @__PURE__ */ React29.createElement("div", null, /* @__PURE__ */ React29.createElement("label", { className: "block text-sm font-medium text-gray-700 mb-1" }, "\u63CF\u8FF0"), /* @__PURE__ */ React29.createElement(
4475
+ ), errors.displayName && /* @__PURE__ */ React23.createElement("p", { className: "mt-1 text-sm text-red-600" }, errors.displayName)), /* @__PURE__ */ React23.createElement("div", null, /* @__PURE__ */ React23.createElement("label", { className: "block text-sm font-medium text-gray-700 mb-1" }, "\u63CF\u8FF0"), /* @__PURE__ */ React23.createElement(
4474
4476
  "textarea",
4475
4477
  {
4476
4478
  value: formData.description,
@@ -4480,7 +4482,7 @@ var AddConfigItemDialog = ({
4480
4482
  className: "w-full px-3 py-2 border border-gray-300 rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500",
4481
4483
  disabled: saving
4482
4484
  }
4483
- )), /* @__PURE__ */ React29.createElement("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-4" }, /* @__PURE__ */ React29.createElement("div", null, /* @__PURE__ */ React29.createElement("label", { className: "block text-sm font-medium text-gray-700 mb-1" }, "\u914D\u7F6E\u7C7B\u578B ", /* @__PURE__ */ React29.createElement("span", { className: "text-red-500" }, "*")), /* @__PURE__ */ React29.createElement(
4485
+ )), /* @__PURE__ */ React23.createElement("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-4" }, /* @__PURE__ */ React23.createElement("div", null, /* @__PURE__ */ React23.createElement("label", { className: "block text-sm font-medium text-gray-700 mb-1" }, "\u914D\u7F6E\u7C7B\u578B ", /* @__PURE__ */ React23.createElement("span", { className: "text-red-500" }, "*")), /* @__PURE__ */ React23.createElement(
4484
4486
  "select",
4485
4487
  {
4486
4488
  value: formData.type,
@@ -4488,11 +4490,11 @@ var AddConfigItemDialog = ({
4488
4490
  className: "w-full px-3 py-2 border border-gray-300 rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500",
4489
4491
  disabled: saving
4490
4492
  },
4491
- /* @__PURE__ */ React29.createElement("option", { value: "string" }, "\u5B57\u7B26\u4E32"),
4492
- /* @__PURE__ */ React29.createElement("option", { value: "number" }, "\u6570\u5B57"),
4493
- /* @__PURE__ */ React29.createElement("option", { value: "boolean" }, "\u5E03\u5C14\u503C"),
4494
- /* @__PURE__ */ React29.createElement("option", { value: "password" }, "\u5BC6\u7801")
4495
- )), /* @__PURE__ */ React29.createElement("div", null, /* @__PURE__ */ React29.createElement("label", { className: "block text-sm font-medium text-gray-700 mb-1" }, "\u6392\u5E8F"), /* @__PURE__ */ React29.createElement(
4493
+ /* @__PURE__ */ React23.createElement("option", { value: "string" }, "\u5B57\u7B26\u4E32"),
4494
+ /* @__PURE__ */ React23.createElement("option", { value: "number" }, "\u6570\u5B57"),
4495
+ /* @__PURE__ */ React23.createElement("option", { value: "boolean" }, "\u5E03\u5C14\u503C"),
4496
+ /* @__PURE__ */ React23.createElement("option", { value: "password" }, "\u5BC6\u7801")
4497
+ )), /* @__PURE__ */ React23.createElement("div", null, /* @__PURE__ */ React23.createElement("label", { className: "block text-sm font-medium text-gray-700 mb-1" }, "\u6392\u5E8F"), /* @__PURE__ */ React23.createElement(
4496
4498
  "input",
4497
4499
  {
4498
4500
  type: "number",
@@ -4502,7 +4504,7 @@ var AddConfigItemDialog = ({
4502
4504
  className: "w-full px-3 py-2 border border-gray-300 rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500",
4503
4505
  disabled: saving
4504
4506
  }
4505
- ))), /* @__PURE__ */ React29.createElement("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-4" }, /* @__PURE__ */ React29.createElement("div", null, /* @__PURE__ */ React29.createElement("label", { className: "block text-sm font-medium text-gray-700 mb-1" }, "\u914D\u7F6E\u503C"), formData.type === "boolean" ? /* @__PURE__ */ React29.createElement(
4507
+ ))), /* @__PURE__ */ React23.createElement("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-4" }, /* @__PURE__ */ React23.createElement("div", null, /* @__PURE__ */ React23.createElement("label", { className: "block text-sm font-medium text-gray-700 mb-1" }, "\u914D\u7F6E\u503C"), formData.type === "boolean" ? /* @__PURE__ */ React23.createElement(
4506
4508
  "select",
4507
4509
  {
4508
4510
  value: formData.value,
@@ -4510,10 +4512,10 @@ var AddConfigItemDialog = ({
4510
4512
  className: `w-full px-3 py-2 border rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500 ${errors.value ? "border-red-300" : "border-gray-300"}`,
4511
4513
  disabled: saving
4512
4514
  },
4513
- /* @__PURE__ */ React29.createElement("option", { value: "" }, "\u8BF7\u9009\u62E9"),
4514
- /* @__PURE__ */ React29.createElement("option", { value: "true" }, "true"),
4515
- /* @__PURE__ */ React29.createElement("option", { value: "false" }, "false")
4516
- ) : /* @__PURE__ */ React29.createElement(
4515
+ /* @__PURE__ */ React23.createElement("option", { value: "" }, "\u8BF7\u9009\u62E9"),
4516
+ /* @__PURE__ */ React23.createElement("option", { value: "true" }, "true"),
4517
+ /* @__PURE__ */ React23.createElement("option", { value: "false" }, "false")
4518
+ ) : /* @__PURE__ */ React23.createElement(
4517
4519
  "input",
4518
4520
  {
4519
4521
  type: formData.type === "password" ? "password" : formData.type === "number" ? "number" : "text",
@@ -4523,7 +4525,7 @@ var AddConfigItemDialog = ({
4523
4525
  className: `w-full px-3 py-2 border rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500 ${errors.value ? "border-red-300" : "border-gray-300"}`,
4524
4526
  disabled: saving
4525
4527
  }
4526
- ), errors.value && /* @__PURE__ */ React29.createElement("p", { className: "mt-1 text-sm text-red-600" }, errors.value)), /* @__PURE__ */ React29.createElement("div", null, /* @__PURE__ */ React29.createElement("label", { className: "block text-sm font-medium text-gray-700 mb-1" }, "\u9ED8\u8BA4\u503C"), formData.type === "boolean" ? /* @__PURE__ */ React29.createElement(
4528
+ ), errors.value && /* @__PURE__ */ React23.createElement("p", { className: "mt-1 text-sm text-red-600" }, errors.value)), /* @__PURE__ */ React23.createElement("div", null, /* @__PURE__ */ React23.createElement("label", { className: "block text-sm font-medium text-gray-700 mb-1" }, "\u9ED8\u8BA4\u503C"), formData.type === "boolean" ? /* @__PURE__ */ React23.createElement(
4527
4529
  "select",
4528
4530
  {
4529
4531
  value: formData.defaultValue,
@@ -4531,10 +4533,10 @@ var AddConfigItemDialog = ({
4531
4533
  className: "w-full px-3 py-2 border border-gray-300 rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500",
4532
4534
  disabled: saving
4533
4535
  },
4534
- /* @__PURE__ */ React29.createElement("option", { value: "" }, "\u8BF7\u9009\u62E9"),
4535
- /* @__PURE__ */ React29.createElement("option", { value: "true" }, "true"),
4536
- /* @__PURE__ */ React29.createElement("option", { value: "false" }, "false")
4537
- ) : /* @__PURE__ */ React29.createElement(
4536
+ /* @__PURE__ */ React23.createElement("option", { value: "" }, "\u8BF7\u9009\u62E9"),
4537
+ /* @__PURE__ */ React23.createElement("option", { value: "true" }, "true"),
4538
+ /* @__PURE__ */ React23.createElement("option", { value: "false" }, "false")
4539
+ ) : /* @__PURE__ */ React23.createElement(
4538
4540
  "input",
4539
4541
  {
4540
4542
  type: formData.type === "password" ? "password" : formData.type === "number" ? "number" : "text",
@@ -4544,7 +4546,7 @@ var AddConfigItemDialog = ({
4544
4546
  className: "w-full px-3 py-2 border border-gray-300 rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500",
4545
4547
  disabled: saving
4546
4548
  }
4547
- ))), /* @__PURE__ */ React29.createElement("div", { className: "flex flex-wrap gap-6" }, /* @__PURE__ */ React29.createElement("div", { className: "flex items-center" }, /* @__PURE__ */ React29.createElement(
4549
+ ))), /* @__PURE__ */ React23.createElement("div", { className: "flex flex-wrap gap-6" }, /* @__PURE__ */ React23.createElement("div", { className: "flex items-center" }, /* @__PURE__ */ React23.createElement(
4548
4550
  "input",
4549
4551
  {
4550
4552
  type: "checkbox",
@@ -4554,7 +4556,7 @@ var AddConfigItemDialog = ({
4554
4556
  className: "h-4 w-4 text-blue-600 focus:ring-blue-500 border-gray-300 rounded",
4555
4557
  disabled: saving
4556
4558
  }
4557
- ), /* @__PURE__ */ React29.createElement("label", { htmlFor: "isRequired", className: "ml-2 block text-sm text-gray-900" }, "\u5FC5\u9700\u914D\u7F6E\u9879")), /* @__PURE__ */ React29.createElement("div", { className: "flex items-center" }, /* @__PURE__ */ React29.createElement(
4559
+ ), /* @__PURE__ */ React23.createElement("label", { htmlFor: "isRequired", className: "ml-2 block text-sm text-gray-900" }, "\u5FC5\u9700\u914D\u7F6E\u9879")), /* @__PURE__ */ React23.createElement("div", { className: "flex items-center" }, /* @__PURE__ */ React23.createElement(
4558
4560
  "input",
4559
4561
  {
4560
4562
  type: "checkbox",
@@ -4564,7 +4566,7 @@ var AddConfigItemDialog = ({
4564
4566
  className: "h-4 w-4 text-blue-600 focus:ring-blue-500 border-gray-300 rounded",
4565
4567
  disabled: saving
4566
4568
  }
4567
- ), /* @__PURE__ */ React29.createElement("label", { htmlFor: "isSensitive", className: "ml-2 block text-sm text-gray-900" }, "\u654F\u611F\u4FE1\u606F"))))))), /* @__PURE__ */ React29.createElement("div", { className: "bg-gray-50 px-4 py-3 sm:px-6 sm:flex sm:flex-row-reverse" }, /* @__PURE__ */ React29.createElement(
4569
+ ), /* @__PURE__ */ React23.createElement("label", { htmlFor: "isSensitive", className: "ml-2 block text-sm text-gray-900" }, "\u654F\u611F\u4FE1\u606F"))))))), /* @__PURE__ */ React23.createElement("div", { className: "bg-gray-50 px-4 py-3 sm:px-6 sm:flex sm:flex-row-reverse" }, /* @__PURE__ */ React23.createElement(
4568
4570
  "button",
4569
4571
  {
4570
4572
  type: "button",
@@ -4572,8 +4574,8 @@ var AddConfigItemDialog = ({
4572
4574
  disabled: saving,
4573
4575
  className: "w-full inline-flex justify-center rounded-md border border-transparent shadow-sm px-4 py-2 bg-blue-600 text-base font-medium text-white hover:bg-blue-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-blue-500 sm:ml-3 sm:w-auto sm:text-sm disabled:opacity-50 disabled:cursor-not-allowed"
4574
4576
  },
4575
- saving ? /* @__PURE__ */ React29.createElement(React29.Fragment, null, /* @__PURE__ */ React29.createElement(Loader, { className: "w-4 h-4 mr-2 animate-spin" }), "\u521B\u5EFA\u4E2D...") : /* @__PURE__ */ React29.createElement(React29.Fragment, null, /* @__PURE__ */ React29.createElement(Save, { className: "w-4 h-4 mr-2" }), "\u521B\u5EFA\u914D\u7F6E\u9879")
4576
- ), /* @__PURE__ */ React29.createElement(
4577
+ saving ? /* @__PURE__ */ React23.createElement(React23.Fragment, null, /* @__PURE__ */ React23.createElement(Loader, { className: "w-4 h-4 mr-2 animate-spin" }), "\u521B\u5EFA\u4E2D...") : /* @__PURE__ */ React23.createElement(React23.Fragment, null, /* @__PURE__ */ React23.createElement(Save, { className: "w-4 h-4 mr-2" }), "\u521B\u5EFA\u914D\u7F6E\u9879")
4578
+ ), /* @__PURE__ */ React23.createElement(
4577
4579
  "button",
4578
4580
  {
4579
4581
  type: "button",
@@ -4592,13 +4594,13 @@ var DeleteConfirmDialog = ({
4592
4594
  loading = false
4593
4595
  }) => {
4594
4596
  if (!isOpen || !item) return null;
4595
- return /* @__PURE__ */ React29.createElement("div", { className: "fixed inset-0 z-50 overflow-y-auto" }, /* @__PURE__ */ React29.createElement("div", { className: "flex items-center justify-center min-h-screen pt-4 px-4 pb-20 text-center sm:block sm:p-0" }, /* @__PURE__ */ React29.createElement(
4597
+ return /* @__PURE__ */ React23.createElement("div", { className: "fixed inset-0 z-50 overflow-y-auto" }, /* @__PURE__ */ React23.createElement("div", { className: "flex items-center justify-center min-h-screen pt-4 px-4 pb-20 text-center sm:block sm:p-0" }, /* @__PURE__ */ React23.createElement(
4596
4598
  "div",
4597
4599
  {
4598
4600
  className: "fixed inset-0 bg-gray-500 bg-opacity-75 transition-opacity",
4599
4601
  onClick: onCancel
4600
4602
  }
4601
- ), /* @__PURE__ */ React29.createElement("div", { className: "inline-block align-bottom bg-white rounded-lg text-left overflow-hidden shadow-xl transform transition-all sm:my-8 sm:align-middle sm:max-w-lg sm:w-full" }, /* @__PURE__ */ React29.createElement("div", { className: "bg-white px-4 pt-5 pb-4 sm:p-6 sm:pb-4" }, /* @__PURE__ */ React29.createElement("div", { className: "sm:flex sm:items-start" }, /* @__PURE__ */ React29.createElement("div", { className: "mx-auto flex-shrink-0 flex items-center justify-center h-12 w-12 rounded-full bg-red-100 sm:mx-0 sm:h-10 sm:w-10" }, /* @__PURE__ */ React29.createElement(AlertTriangle, { className: "h-6 w-6 text-red-600" })), /* @__PURE__ */ React29.createElement("div", { className: "mt-3 text-center sm:mt-0 sm:ml-4 sm:text-left" }, /* @__PURE__ */ React29.createElement("h3", { className: "text-lg leading-6 font-medium text-gray-900" }, "\u5220\u9664\u914D\u7F6E\u9879"), /* @__PURE__ */ React29.createElement("div", { className: "mt-2" }, /* @__PURE__ */ React29.createElement("p", { className: "text-sm text-gray-500" }, "\u786E\u5B9A\u8981\u5220\u9664\u8FD9\u4E2A\u914D\u7F6E\u9879\u5417\uFF1F\u6B64\u64CD\u4F5C\u4E0D\u53EF\u64A4\u9500\u3002"), /* @__PURE__ */ React29.createElement("p", { className: "mt-2 text-sm font-medium text-gray-900" }, /* @__PURE__ */ React29.createElement("span", { className: "font-mono bg-gray-100 px-2 py-1 rounded" }, item.displayName, " (", item.key, ")")))))), /* @__PURE__ */ React29.createElement("div", { className: "bg-gray-50 px-4 py-3 sm:px-6 sm:flex sm:flex-row-reverse" }, /* @__PURE__ */ React29.createElement(
4603
+ ), /* @__PURE__ */ React23.createElement("div", { className: "inline-block align-bottom bg-white rounded-lg text-left overflow-hidden shadow-xl transform transition-all sm:my-8 sm:align-middle sm:max-w-lg sm:w-full" }, /* @__PURE__ */ React23.createElement("div", { className: "bg-white px-4 pt-5 pb-4 sm:p-6 sm:pb-4" }, /* @__PURE__ */ React23.createElement("div", { className: "sm:flex sm:items-start" }, /* @__PURE__ */ React23.createElement("div", { className: "mx-auto flex-shrink-0 flex items-center justify-center h-12 w-12 rounded-full bg-red-100 sm:mx-0 sm:h-10 sm:w-10" }, /* @__PURE__ */ React23.createElement(AlertTriangle, { className: "h-6 w-6 text-red-600" })), /* @__PURE__ */ React23.createElement("div", { className: "mt-3 text-center sm:mt-0 sm:ml-4 sm:text-left" }, /* @__PURE__ */ React23.createElement("h3", { className: "text-lg leading-6 font-medium text-gray-900" }, "\u5220\u9664\u914D\u7F6E\u9879"), /* @__PURE__ */ React23.createElement("div", { className: "mt-2" }, /* @__PURE__ */ React23.createElement("p", { className: "text-sm text-gray-500" }, "\u786E\u5B9A\u8981\u5220\u9664\u8FD9\u4E2A\u914D\u7F6E\u9879\u5417\uFF1F\u6B64\u64CD\u4F5C\u4E0D\u53EF\u64A4\u9500\u3002"), /* @__PURE__ */ React23.createElement("p", { className: "mt-2 text-sm font-medium text-gray-900" }, /* @__PURE__ */ React23.createElement("span", { className: "font-mono bg-gray-100 px-2 py-1 rounded" }, item.displayName, " (", item.key, ")")))))), /* @__PURE__ */ React23.createElement("div", { className: "bg-gray-50 px-4 py-3 sm:px-6 sm:flex sm:flex-row-reverse" }, /* @__PURE__ */ React23.createElement(
4602
4604
  "button",
4603
4605
  {
4604
4606
  type: "button",
@@ -4606,8 +4608,8 @@ var DeleteConfirmDialog = ({
4606
4608
  disabled: loading,
4607
4609
  className: "w-full inline-flex justify-center rounded-md border border-transparent shadow-sm px-4 py-2 bg-red-600 text-base font-medium text-white hover:bg-red-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-red-500 sm:ml-3 sm:w-auto sm:text-sm disabled:opacity-50 disabled:cursor-not-allowed"
4608
4610
  },
4609
- loading ? /* @__PURE__ */ React29.createElement(React29.Fragment, null, /* @__PURE__ */ React29.createElement(Loader, { className: "w-4 h-4 mr-2 animate-spin" }), "\u5220\u9664\u4E2D...") : "\u5220\u9664"
4610
- ), /* @__PURE__ */ React29.createElement(
4611
+ loading ? /* @__PURE__ */ React23.createElement(React23.Fragment, null, /* @__PURE__ */ React23.createElement(Loader, { className: "w-4 h-4 mr-2 animate-spin" }), "\u5220\u9664\u4E2D...") : "\u5220\u9664"
4612
+ ), /* @__PURE__ */ React23.createElement(
4611
4613
  "button",
4612
4614
  {
4613
4615
  type: "button",
@@ -4622,1042 +4624,6 @@ var DeleteConfirmDialog = ({
4622
4624
  // src/showmasterpiece/ui/web/pages/ShowMasterPiecesPage.tsx
4623
4625
  init_hooks();
4624
4626
  init_CartContext();
4625
- var AuthContext = createContext(void 0);
4626
- function AuthProvider({ children }) {
4627
- const [user, setUser] = useState(null);
4628
- const [loading, setLoading] = useState(true);
4629
- const [isAuthenticated, setIsAuthenticated] = useState(false);
4630
- const isMountedRef = useRef(true);
4631
- const safeSetState = useCallback((updater) => {
4632
- if (isMountedRef.current) {
4633
- updater();
4634
- }
4635
- }, []);
4636
- const validateSession = useCallback(async () => {
4637
- console.log("\u{1F50D} [AuthContext] \u5F00\u59CB\u9A8C\u8BC1\u4F1A\u8BDD...");
4638
- try {
4639
- const response = await fetch("/api/auth/validate");
4640
- console.log("\u{1F4E1} [AuthContext] \u4F1A\u8BDD\u9A8C\u8BC1\u54CD\u5E94\u72B6\u6001:", response.status);
4641
- const data = await response.json();
4642
- console.log("\u{1F4C4} [AuthContext] \u4F1A\u8BDD\u9A8C\u8BC1\u54CD\u5E94\u6570\u636E:", data);
4643
- safeSetState(() => {
4644
- if (data.valid && data.user) {
4645
- console.log("\u2705 [AuthContext] \u4F1A\u8BDD\u9A8C\u8BC1\u6210\u529F, \u7528\u6237:", data.user);
4646
- setUser(data.user);
4647
- setIsAuthenticated(true);
4648
- } else {
4649
- console.log("\u274C [AuthContext] \u4F1A\u8BDD\u9A8C\u8BC1\u5931\u8D25:", data.message);
4650
- setUser(null);
4651
- setIsAuthenticated(false);
4652
- }
4653
- setLoading(false);
4654
- });
4655
- } catch (error) {
4656
- console.error("\u{1F4A5} [AuthContext] \u4F1A\u8BDD\u9A8C\u8BC1\u5F02\u5E38:", error);
4657
- safeSetState(() => {
4658
- setUser(null);
4659
- setIsAuthenticated(false);
4660
- setLoading(false);
4661
- });
4662
- }
4663
- }, [safeSetState]);
4664
- const login = useCallback(async (credentials) => {
4665
- console.log("\u{1F511} [AuthContext] \u5F00\u59CB\u767B\u5F55...");
4666
- console.log("\u{1F4DD} [AuthContext] \u767B\u5F55\u51ED\u636E:", { phone: credentials.phone, password: "***" });
4667
- try {
4668
- console.log("\u{1F4E4} [AuthContext] \u53D1\u9001\u767B\u5F55\u8BF7\u6C42\u5230 /api/auth/login");
4669
- const response = await fetch("/api/auth/login", {
4670
- method: "POST",
4671
- headers: { "Content-Type": "application/json" },
4672
- body: JSON.stringify(credentials)
4673
- });
4674
- console.log("\u{1F4E1} [AuthContext] \u6536\u5230\u54CD\u5E94\uFF0C\u72B6\u6001\u7801:", response.status);
4675
- const data = await response.json();
4676
- console.log("\u{1F4C4} [AuthContext] \u54CD\u5E94\u6570\u636E:", data);
4677
- if (data.success && data.user) {
4678
- console.log("\u2705 [AuthContext] \u767B\u5F55\u6210\u529F, \u5F00\u59CB\u66F4\u65B0\u5168\u5C40\u72B6\u6001");
4679
- console.log("\u{1F464} [AuthContext] \u7528\u6237\u6570\u636E:", data.user);
4680
- console.log("\u{1F4CA} [AuthContext] \u66F4\u65B0\u524D\u72B6\u6001:", {
4681
- currentUser: user ? `${user.name || "\u672A\u8BBE\u7F6E"} (${user.phone})` : null,
4682
- currentIsAuthenticated: isAuthenticated,
4683
- currentLoading: loading
4684
- });
4685
- console.log("\u{1F504} [AuthContext] \u6267\u884C\u5168\u5C40\u72B6\u6001\u66F4\u65B0...");
4686
- safeSetState(() => {
4687
- console.log("\u{1F504} [AuthContext] \u6B63\u5728\u8BBE\u7F6E\u7528\u6237:", data.user);
4688
- setUser(data.user);
4689
- console.log("\u{1F504} [AuthContext] \u6B63\u5728\u8BBE\u7F6E\u8BA4\u8BC1\u72B6\u6001: true");
4690
- setIsAuthenticated(true);
4691
- console.log("\u{1F504} [AuthContext] \u6B63\u5728\u8BBE\u7F6E\u52A0\u8F7D\u72B6\u6001: false");
4692
- setLoading(false);
4693
- console.log("\u2705 [AuthContext] \u5168\u5C40\u72B6\u6001\u66F4\u65B0\u5B8C\u6210");
4694
- });
4695
- setTimeout(() => {
4696
- console.log("\u{1F389} [AuthContext] \u5EF6\u8FDF\u786E\u8BA4 - \u5168\u5C40\u767B\u5F55\u72B6\u6001\u5E94\u8BE5\u5DF2\u66F4\u65B0:", {
4697
- user: data.user,
4698
- isAuthenticated: true
4699
- });
4700
- }, 0);
4701
- console.log("\u{1F680} [AuthContext] \u8FD4\u56DE\u6210\u529F\u7ED3\u679C");
4702
- return { success: true, user: data.user };
4703
- } else {
4704
- console.log("\u274C [AuthContext] \u767B\u5F55\u5931\u8D25:", data.message);
4705
- return { success: false, message: data.message };
4706
- }
4707
- } catch (error) {
4708
- console.error("\u{1F4A5} [AuthContext] \u767B\u5F55\u5F02\u5E38:", error);
4709
- return { success: false, message: "\u767B\u5F55\u5931\u8D25\uFF0C\u8BF7\u7A0D\u540E\u91CD\u8BD5" };
4710
- }
4711
- }, [safeSetState, user, isAuthenticated, loading]);
4712
- const register = useCallback(async (userData) => {
4713
- console.log("\u{1F4DD} [AuthContext] \u5F00\u59CB\u6CE8\u518C...");
4714
- try {
4715
- const response = await fetch("/api/auth/register", {
4716
- method: "POST",
4717
- headers: { "Content-Type": "application/json" },
4718
- body: JSON.stringify(userData)
4719
- });
4720
- const data = await response.json();
4721
- console.log("\u{1F4E1} [AuthContext] \u6CE8\u518C\u54CD\u5E94:", data);
4722
- if (data.success && data.user) {
4723
- console.log("\u2705 [AuthContext] \u6CE8\u518C\u6210\u529F, \u7ACB\u5373\u66F4\u65B0\u5168\u5C40\u72B6\u6001");
4724
- safeSetState(() => {
4725
- setUser(data.user);
4726
- setIsAuthenticated(true);
4727
- setLoading(false);
4728
- });
4729
- console.log("\u{1F680} [AuthContext] \u8FD4\u56DE\u6CE8\u518C\u6210\u529F\u7ED3\u679C");
4730
- return { success: true, user: data.user };
4731
- } else {
4732
- console.log("\u274C [AuthContext] \u6CE8\u518C\u5931\u8D25:", data.message);
4733
- return { success: false, message: data.message };
4734
- }
4735
- } catch (error) {
4736
- console.error("\u{1F4A5} [AuthContext] \u6CE8\u518C\u5F02\u5E38:", error);
4737
- return { success: false, message: "\u6CE8\u518C\u5931\u8D25\uFF0C\u8BF7\u7A0D\u540E\u91CD\u8BD5" };
4738
- }
4739
- }, [safeSetState]);
4740
- const logout = useCallback(async () => {
4741
- console.log("\u{1F6AA} [AuthContext] \u5F00\u59CB\u767B\u51FA...");
4742
- try {
4743
- await fetch("/api/auth/logout", { method: "POST" });
4744
- safeSetState(() => {
4745
- setUser(null);
4746
- setIsAuthenticated(false);
4747
- });
4748
- console.log("\u2705 [AuthContext] \u767B\u51FA\u6210\u529F, \u5168\u5C40\u72B6\u6001\u5DF2\u6E05\u9664");
4749
- } catch (error) {
4750
- console.error("\u{1F4A5} [AuthContext] \u767B\u51FA\u5931\u8D25:", error);
4751
- }
4752
- }, [safeSetState]);
4753
- const refreshUser = useCallback(() => {
4754
- console.log("\u{1F504} [AuthContext] \u5237\u65B0\u7528\u6237\u4FE1\u606F...");
4755
- setLoading(true);
4756
- validateSession();
4757
- }, [validateSession]);
4758
- useEffect(() => {
4759
- isMountedRef.current = true;
4760
- return () => {
4761
- isMountedRef.current = false;
4762
- };
4763
- }, []);
4764
- useEffect(() => {
4765
- console.log("\u{1F680} [AuthContext] \u521D\u59CB\u5316, \u5F00\u59CB\u9A8C\u8BC1\u4F1A\u8BDD");
4766
- validateSession();
4767
- }, [validateSession]);
4768
- useEffect(() => {
4769
- console.log("\u{1F4CA} [AuthContext] \u5168\u5C40\u72B6\u6001\u53D8\u5316:", {
4770
- isAuthenticated,
4771
- user: user ? `${user.name || "\u672A\u8BBE\u7F6E"} (${user.phone})` : null,
4772
- loading
4773
- });
4774
- }, [isAuthenticated, user, loading]);
4775
- const value = {
4776
- user,
4777
- loading,
4778
- isAuthenticated,
4779
- login,
4780
- register,
4781
- logout,
4782
- refreshUser
4783
- };
4784
- return /* @__PURE__ */ React29.createElement(AuthContext.Provider, { value }, children);
4785
- }
4786
- function useAuth() {
4787
- const context = useContext(AuthContext);
4788
- if (context === void 0) {
4789
- throw new Error("useAuth must be used within an AuthProvider");
4790
- }
4791
- return context;
4792
- }
4793
-
4794
- // src/auth/legacy/utils/authUtils.ts
4795
- function validatePhoneNumber(phone) {
4796
- return /^1[3-9]\d{9}$/.test(phone);
4797
- }
4798
- function validatePassword(password) {
4799
- if (!password) {
4800
- return { valid: false, message: "\u5BC6\u7801\u4E0D\u80FD\u4E3A\u7A7A" };
4801
- }
4802
- if (password.length < 6) {
4803
- return { valid: false, message: "\u5BC6\u7801\u957F\u5EA6\u81F3\u5C116\u4F4D" };
4804
- }
4805
- return { valid: true };
4806
- }
4807
- function ForgotPasswordModal({ isOpen, onClose, onSuccess }) {
4808
- const [formData, setFormData] = useState({
4809
- phone: "",
4810
- newPassword: "",
4811
- confirmPassword: "",
4812
- verificationCode: ""
4813
- });
4814
- const [showPassword, setShowPassword] = useState(false);
4815
- const [showConfirmPassword, setShowConfirmPassword] = useState(false);
4816
- const [error, setError] = useState("");
4817
- const [loading, setLoading] = useState(false);
4818
- const [countdown, setCountdown] = useState(0);
4819
- const [mounted, setMounted] = useState(false);
4820
- useEffect(() => {
4821
- setMounted(true);
4822
- }, []);
4823
- const handleInputChange = (e) => {
4824
- const { name, value } = e.target;
4825
- setFormData((prev) => ({ ...prev, [name]: value }));
4826
- if (error) setError("");
4827
- };
4828
- const validateForm = () => {
4829
- if (!formData.phone || !formData.newPassword || !formData.confirmPassword || !formData.verificationCode) {
4830
- setError("\u8BF7\u586B\u5199\u5B8C\u6574\u4FE1\u606F");
4831
- return false;
4832
- }
4833
- if (!validatePhoneNumber(formData.phone)) {
4834
- setError("\u8BF7\u8F93\u5165\u6B63\u786E\u7684\u624B\u673A\u53F7\u683C\u5F0F");
4835
- return false;
4836
- }
4837
- const passwordValidation = validatePassword(formData.newPassword);
4838
- if (!passwordValidation.valid) {
4839
- setError(passwordValidation.message || "\u5BC6\u7801\u683C\u5F0F\u9519\u8BEF");
4840
- return false;
4841
- }
4842
- if (formData.newPassword !== formData.confirmPassword) {
4843
- setError("\u4E24\u6B21\u8F93\u5165\u7684\u5BC6\u7801\u4E0D\u4E00\u81F4");
4844
- return false;
4845
- }
4846
- if (!/^\d{6}$/.test(formData.verificationCode)) {
4847
- setError("\u8BF7\u8F93\u51656\u4F4D\u6570\u5B57\u9A8C\u8BC1\u7801");
4848
- return false;
4849
- }
4850
- return true;
4851
- };
4852
- const handleSendCode = async () => {
4853
- if (!formData.phone) {
4854
- setError("\u8BF7\u8F93\u5165\u624B\u673A\u53F7");
4855
- return;
4856
- }
4857
- if (!validatePhoneNumber(formData.phone)) {
4858
- setError("\u8BF7\u8F93\u5165\u6B63\u786E\u7684\u624B\u673A\u53F7\u683C\u5F0F");
4859
- return;
4860
- }
4861
- try {
4862
- setLoading(true);
4863
- setError("");
4864
- const response = await fetch("/api/auth/send-verification-code", {
4865
- method: "POST",
4866
- headers: { "Content-Type": "application/json" },
4867
- body: JSON.stringify({ phone: formData.phone })
4868
- });
4869
- const data = await response.json();
4870
- if (data.success) {
4871
- setCountdown(60);
4872
- const timer = setInterval(() => {
4873
- setCountdown((prev) => {
4874
- if (prev <= 1) {
4875
- clearInterval(timer);
4876
- return 0;
4877
- }
4878
- return prev - 1;
4879
- });
4880
- }, 1e3);
4881
- console.log("\u2705 \u9A8C\u8BC1\u7801\u53D1\u9001\u6210\u529F");
4882
- } else {
4883
- setError(data.message || "\u53D1\u9001\u9A8C\u8BC1\u7801\u5931\u8D25");
4884
- }
4885
- } catch (error2) {
4886
- console.error("\u53D1\u9001\u9A8C\u8BC1\u7801\u5F02\u5E38:", error2);
4887
- setError("\u53D1\u9001\u9A8C\u8BC1\u7801\u5931\u8D25\uFF0C\u8BF7\u7A0D\u540E\u91CD\u8BD5");
4888
- } finally {
4889
- setLoading(false);
4890
- }
4891
- };
4892
- const handleSubmit = async (e) => {
4893
- e.preventDefault();
4894
- setError("");
4895
- setLoading(true);
4896
- try {
4897
- if (!validateForm()) {
4898
- return;
4899
- }
4900
- const response = await fetch("/api/auth/reset-password", {
4901
- method: "POST",
4902
- headers: { "Content-Type": "application/json" },
4903
- body: JSON.stringify({
4904
- phone: formData.phone,
4905
- newPassword: formData.newPassword,
4906
- verificationCode: formData.verificationCode
4907
- })
4908
- });
4909
- const data = await response.json();
4910
- if (data.success) {
4911
- onSuccess();
4912
- } else {
4913
- setError(data.message || "\u91CD\u7F6E\u5BC6\u7801\u5931\u8D25");
4914
- }
4915
- } catch (error2) {
4916
- setError("\u91CD\u7F6E\u5BC6\u7801\u5931\u8D25\uFF0C\u8BF7\u7A0D\u540E\u91CD\u8BD5");
4917
- } finally {
4918
- setLoading(false);
4919
- }
4920
- };
4921
- const handleOverlayClick = (e) => {
4922
- if (e.target === e.currentTarget) {
4923
- onClose();
4924
- }
4925
- };
4926
- if (!isOpen || !mounted) return null;
4927
- const modalContent = /* @__PURE__ */ React29.createElement(
4928
- "div",
4929
- {
4930
- className: "fixed top-0 left-0 right-0 bottom-0 w-screen h-screen bg-black/50 backdrop-blur-sm flex items-center justify-center z-[9999] p-4",
4931
- style: { margin: 0 },
4932
- onClick: handleOverlayClick
4933
- },
4934
- /* @__PURE__ */ React29.createElement(
4935
- "div",
4936
- {
4937
- className: "bg-white rounded-2xl shadow-xl w-full max-w-[420px] max-h-[90vh] overflow-y-auto relative",
4938
- onClick: (e) => e.stopPropagation()
4939
- },
4940
- /* @__PURE__ */ React29.createElement(
4941
- "button",
4942
- {
4943
- className: "absolute top-5 right-5 bg-transparent border-none text-gray-500 cursor-pointer p-2 rounded-lg transition-all hover:bg-gray-100 hover:text-gray-700 focus:outline-none focus:ring-2 focus:ring-blue-500 focus:ring-offset-2 min-w-9 min-h-9 flex items-center justify-center",
4944
- onClick: onClose
4945
- },
4946
- /* @__PURE__ */ React29.createElement(X, { size: 20 })
4947
- ),
4948
- /* @__PURE__ */ React29.createElement("div", { className: "px-6 pt-6 pb-4 text-center border-b border-gray-100" }, /* @__PURE__ */ React29.createElement("h2", { className: "text-2xl font-semibold text-gray-800 mb-2" }, "\u91CD\u7F6E\u5BC6\u7801"), /* @__PURE__ */ React29.createElement("p", { className: "text-gray-500 text-sm" }, "\u8BF7\u8F93\u5165\u624B\u673A\u53F7\u548C\u9A8C\u8BC1\u7801\u91CD\u7F6E\u5BC6\u7801")),
4949
- /* @__PURE__ */ React29.createElement("form", { onSubmit: handleSubmit, className: "p-6" }, /* @__PURE__ */ React29.createElement("div", { className: "mb-5" }, /* @__PURE__ */ React29.createElement("label", { htmlFor: "phone", className: "block mb-1.5 text-sm font-medium text-gray-700" }, "\u624B\u673A\u53F7"), /* @__PURE__ */ React29.createElement("div", { className: "relative flex items-center" }, /* @__PURE__ */ React29.createElement(Phone, { size: 18, className: "absolute left-4 text-gray-400 z-[1] pointer-events-none" }), /* @__PURE__ */ React29.createElement(
4950
- "input",
4951
- {
4952
- id: "phone",
4953
- name: "phone",
4954
- type: "tel",
4955
- value: formData.phone,
4956
- onChange: handleInputChange,
4957
- placeholder: "\u8BF7\u8F93\u5165\u624B\u673A\u53F7",
4958
- className: "w-full py-3 px-4 pl-12 border-2 border-gray-200 rounded-lg text-base transition-all box-border min-h-12 bg-white focus:outline-none focus:border-blue-500 focus:ring-2 focus:ring-blue-500/10 placeholder:text-gray-400 disabled:bg-gray-50 disabled:text-gray-500 disabled:cursor-not-allowed",
4959
- disabled: loading
4960
- }
4961
- ))), /* @__PURE__ */ React29.createElement("div", { className: "mb-5" }, /* @__PURE__ */ React29.createElement("label", { htmlFor: "verificationCode", className: "block mb-1.5 text-sm font-medium text-gray-700" }, "\u9A8C\u8BC1\u7801"), /* @__PURE__ */ React29.createElement("div", { className: "relative flex items-center" }, /* @__PURE__ */ React29.createElement(
4962
- "input",
4963
- {
4964
- id: "verificationCode",
4965
- name: "verificationCode",
4966
- type: "text",
4967
- value: formData.verificationCode,
4968
- onChange: handleInputChange,
4969
- placeholder: "\u8BF7\u8F93\u5165\u9A8C\u8BC1\u7801",
4970
- className: "w-full py-3 px-4 pr-28 border-2 border-gray-200 rounded-lg text-base transition-all box-border min-h-12 bg-white focus:outline-none focus:border-blue-500 focus:ring-2 focus:ring-blue-500/10 placeholder:text-gray-400 disabled:bg-gray-50 disabled:text-gray-500 disabled:cursor-not-allowed",
4971
- disabled: loading,
4972
- maxLength: 6
4973
- }
4974
- ), /* @__PURE__ */ React29.createElement(
4975
- "button",
4976
- {
4977
- type: "button",
4978
- className: "absolute right-2 top-1/2 -translate-y-1/2 bg-transparent border-none text-blue-500 text-sm font-medium cursor-pointer px-2 py-1 rounded transition-all whitespace-nowrap hover:bg-blue-50 disabled:text-gray-400 disabled:cursor-not-allowed",
4979
- onClick: handleSendCode,
4980
- disabled: loading || countdown > 0
4981
- },
4982
- countdown > 0 ? `${countdown}\u79D2\u540E\u91CD\u8BD5` : "\u53D1\u9001\u9A8C\u8BC1\u7801"
4983
- ))), /* @__PURE__ */ React29.createElement("div", { className: "mb-5" }, /* @__PURE__ */ React29.createElement("label", { htmlFor: "newPassword", className: "block mb-1.5 text-sm font-medium text-gray-700" }, "\u65B0\u5BC6\u7801"), /* @__PURE__ */ React29.createElement("div", { className: "relative flex items-center" }, /* @__PURE__ */ React29.createElement(Lock, { size: 18, className: "absolute left-4 text-gray-400 z-[1] pointer-events-none" }), /* @__PURE__ */ React29.createElement(
4984
- "input",
4985
- {
4986
- id: "newPassword",
4987
- name: "newPassword",
4988
- type: showPassword ? "text" : "password",
4989
- value: formData.newPassword,
4990
- onChange: handleInputChange,
4991
- placeholder: "\u8BF7\u8F93\u5165\u65B0\u5BC6\u7801",
4992
- className: "w-full py-3 px-4 pl-12 pr-12 border-2 border-gray-200 rounded-lg text-base transition-all box-border min-h-12 bg-white focus:outline-none focus:border-blue-500 focus:ring-2 focus:ring-blue-500/10 placeholder:text-gray-400 disabled:bg-gray-50 disabled:text-gray-500 disabled:cursor-not-allowed",
4993
- disabled: loading
4994
- }
4995
- ), /* @__PURE__ */ React29.createElement(
4996
- "button",
4997
- {
4998
- type: "button",
4999
- className: "absolute right-4 bg-transparent border-none text-gray-400 cursor-pointer p-1 rounded transition-all flex items-center justify-center min-w-6 min-h-6 hover:text-gray-600 hover:bg-gray-100 disabled:cursor-not-allowed disabled:opacity-50",
5000
- onClick: () => setShowPassword(!showPassword),
5001
- disabled: loading
5002
- },
5003
- showPassword ? /* @__PURE__ */ React29.createElement(EyeOff, { size: 18 }) : /* @__PURE__ */ React29.createElement(Eye, { size: 18 })
5004
- ))), /* @__PURE__ */ React29.createElement("div", { className: "mb-5" }, /* @__PURE__ */ React29.createElement("label", { htmlFor: "confirmPassword", className: "block mb-1.5 text-sm font-medium text-gray-700" }, "\u786E\u8BA4\u5BC6\u7801"), /* @__PURE__ */ React29.createElement("div", { className: "relative flex items-center" }, /* @__PURE__ */ React29.createElement(Lock, { size: 18, className: "absolute left-4 text-gray-400 z-[1] pointer-events-none" }), /* @__PURE__ */ React29.createElement(
5005
- "input",
5006
- {
5007
- id: "confirmPassword",
5008
- name: "confirmPassword",
5009
- type: showConfirmPassword ? "text" : "password",
5010
- value: formData.confirmPassword,
5011
- onChange: handleInputChange,
5012
- placeholder: "\u8BF7\u518D\u6B21\u8F93\u5165\u65B0\u5BC6\u7801",
5013
- className: "w-full py-3 px-4 pl-12 pr-12 border-2 border-gray-200 rounded-lg text-base transition-all box-border min-h-12 bg-white focus:outline-none focus:border-blue-500 focus:ring-2 focus:ring-blue-500/10 placeholder:text-gray-400 disabled:bg-gray-50 disabled:text-gray-500 disabled:cursor-not-allowed",
5014
- disabled: loading
5015
- }
5016
- ), /* @__PURE__ */ React29.createElement(
5017
- "button",
5018
- {
5019
- type: "button",
5020
- className: "absolute right-4 bg-transparent border-none text-gray-400 cursor-pointer p-1 rounded transition-all flex items-center justify-center min-w-6 min-h-6 hover:text-gray-600 hover:bg-gray-100 disabled:cursor-not-allowed disabled:opacity-50",
5021
- onClick: () => setShowConfirmPassword(!showConfirmPassword),
5022
- disabled: loading
5023
- },
5024
- showConfirmPassword ? /* @__PURE__ */ React29.createElement(EyeOff, { size: 18 }) : /* @__PURE__ */ React29.createElement(Eye, { size: 18 })
5025
- ))), error && /* @__PURE__ */ React29.createElement("div", { className: "text-red-500 text-sm my-4 p-3 bg-red-50 border border-red-200 rounded-lg leading-relaxed" }, error), /* @__PURE__ */ React29.createElement(
5026
- "button",
5027
- {
5028
- type: "submit",
5029
- className: "w-full bg-blue-500 text-white border-none py-3.5 px-6 rounded-lg text-base font-medium cursor-pointer transition-all mt-2 min-h-[52px] hover:bg-blue-600 hover:-translate-y-0.5 hover:shadow-lg hover:shadow-blue-500/30 active:translate-y-0 disabled:bg-gray-400 disabled:cursor-not-allowed disabled:transform-none disabled:shadow-none focus:outline-none focus:ring-2 focus:ring-blue-700 focus:ring-offset-2",
5030
- disabled: loading
5031
- },
5032
- loading ? "\u63D0\u4EA4\u4E2D..." : "\u91CD\u7F6E\u5BC6\u7801"
5033
- ))
5034
- )
5035
- );
5036
- return createPortal(modalContent, document.body);
5037
- }
5038
-
5039
- // src/auth/legacy/components/LoginModal.tsx
5040
- function LoginModal({ isOpen, onClose, onSuccess, onSwitchToRegister }) {
5041
- const { login } = useAuth();
5042
- const [formData, setFormData] = useState({
5043
- phone: "",
5044
- password: ""
5045
- });
5046
- const [showPassword, setShowPassword] = useState(false);
5047
- const [error, setError] = useState("");
5048
- const [loading, setLoading] = useState(false);
5049
- const [showForgotPassword, setShowForgotPassword] = useState(false);
5050
- const [mounted, setMounted] = useState(false);
5051
- useEffect(() => {
5052
- setMounted(true);
5053
- }, []);
5054
- const fillDemoAccount = (type) => {
5055
- if (process.env.NODE_ENV === "development") {
5056
- const accounts = {
5057
- admin: { phone: "13800138000", password: "admin123456" },
5058
- user: { phone: "13900139000", password: "test123456" }
5059
- };
5060
- setFormData(accounts[type]);
5061
- setError("");
5062
- }
5063
- };
5064
- const handleInputChange = (e) => {
5065
- const { name, value } = e.target;
5066
- setFormData((prev) => ({ ...prev, [name]: value }));
5067
- if (error) setError("");
5068
- };
5069
- const handleSubmit = async (e) => {
5070
- e.preventDefault();
5071
- setError("");
5072
- setLoading(true);
5073
- console.log("\u{1F504} [LoginModal] handleSubmit \u5F00\u59CB");
5074
- try {
5075
- if (!formData.phone || !formData.password) {
5076
- console.log("\u274C [LoginModal] \u524D\u7AEF\u9A8C\u8BC1\u5931\u8D25: \u4FE1\u606F\u4E0D\u5B8C\u6574");
5077
- setError("\u8BF7\u586B\u5199\u5B8C\u6574\u4FE1\u606F");
5078
- return;
5079
- }
5080
- if (!validatePhoneNumber(formData.phone)) {
5081
- console.log("\u274C [LoginModal] \u524D\u7AEF\u9A8C\u8BC1\u5931\u8D25: \u624B\u673A\u53F7\u683C\u5F0F\u9519\u8BEF");
5082
- setError("\u8BF7\u8F93\u5165\u6B63\u786E\u7684\u624B\u673A\u53F7");
5083
- return;
5084
- }
5085
- console.log("\u2705 [LoginModal] \u524D\u7AEF\u9A8C\u8BC1\u901A\u8FC7");
5086
- console.log("\u{1F511} [LoginModal] \u63D0\u4EA4\u767B\u5F55\u8868\u5355:", {
5087
- phone: formData.phone,
5088
- password: "***"
5089
- });
5090
- console.log("\u{1F4DE} [LoginModal] \u51C6\u5907\u8C03\u7528 useAuth.login()...");
5091
- const result = await login(formData);
5092
- console.log("\u{1F4E1} [LoginModal] useAuth.login() \u8FD4\u56DE\u7ED3\u679C:", result);
5093
- if (result.success) {
5094
- console.log("\u2705 [LoginModal] \u767B\u5F55\u6210\u529F\uFF0C\u51C6\u5907\u8C03\u7528 onSuccess()");
5095
- console.log("\u{1F464} [LoginModal] \u767B\u5F55\u6210\u529F\u7684\u7528\u6237\u4FE1\u606F:", result.user);
5096
- setTimeout(() => {
5097
- console.log("\u{1F3AF} [LoginModal] \u8C03\u7528 onSuccess \u56DE\u8C03");
5098
- onSuccess();
5099
- console.log("\u{1F3C1} [LoginModal] onSuccess \u8C03\u7528\u5B8C\u6210");
5100
- }, 100);
5101
- } else {
5102
- console.log("\u274C [LoginModal] \u767B\u5F55\u5931\u8D25:", result.message);
5103
- setError(result.message || "\u767B\u5F55\u5931\u8D25");
5104
- }
5105
- } catch (error2) {
5106
- console.error("\u{1F4A5} [LoginModal] \u767B\u5F55\u5F02\u5E38:", error2);
5107
- setError("\u767B\u5F55\u5931\u8D25\uFF0C\u8BF7\u7A0D\u540E\u91CD\u8BD5");
5108
- } finally {
5109
- console.log("\u{1F51A} [LoginModal] handleSubmit \u7ED3\u675F\uFF0C\u8BBE\u7F6E loading = false");
5110
- setLoading(false);
5111
- }
5112
- };
5113
- const handleOverlayClick = (e) => {
5114
- if (e.target === e.currentTarget) {
5115
- onClose();
5116
- }
5117
- };
5118
- if (!isOpen || !mounted) return null;
5119
- const modalContent = /* @__PURE__ */ React29.createElement(React29.Fragment, null, /* @__PURE__ */ React29.createElement(
5120
- "div",
5121
- {
5122
- className: "fixed top-0 left-0 right-0 bottom-0 w-screen h-screen bg-black/50 backdrop-blur-sm flex items-center justify-center z-[9999] p-4",
5123
- style: { margin: 0 },
5124
- onClick: handleOverlayClick
5125
- },
5126
- /* @__PURE__ */ React29.createElement(
5127
- "div",
5128
- {
5129
- className: "bg-white rounded-2xl shadow-xl w-full max-w-[420px] max-h-[90vh] overflow-y-auto relative",
5130
- onClick: (e) => e.stopPropagation()
5131
- },
5132
- /* @__PURE__ */ React29.createElement(
5133
- "button",
5134
- {
5135
- className: "absolute top-5 right-5 bg-transparent border-none text-gray-500 cursor-pointer p-2 rounded-lg transition-all hover:bg-gray-100 hover:text-gray-700 focus:outline-none focus:ring-2 focus:ring-blue-500 focus:ring-offset-2 min-w-9 min-h-9 flex items-center justify-center",
5136
- onClick: onClose
5137
- },
5138
- /* @__PURE__ */ React29.createElement(X, { size: 20 })
5139
- ),
5140
- /* @__PURE__ */ React29.createElement("div", { className: "px-6 pt-6 pb-4 text-center border-b border-gray-100" }, /* @__PURE__ */ React29.createElement("h2", { className: "text-2xl font-semibold text-gray-800 mb-2" }, "\u7528\u6237\u767B\u5F55"), /* @__PURE__ */ React29.createElement("p", { className: "text-gray-500 text-sm" }, "\u8BF7\u8F93\u5165\u60A8\u7684\u624B\u673A\u53F7\u548C\u5BC6\u7801")),
5141
- process.env.NODE_ENV === "development" && /* @__PURE__ */ React29.createElement("div", { className: "px-6 py-4 bg-amber-50 border-b border-gray-100" }, /* @__PURE__ */ React29.createElement("p", { className: "text-xs text-amber-800 font-medium mb-2" }, "\u5F00\u53D1\u73AF\u5883\u5FEB\u6377\u767B\u5F55\uFF1A"), /* @__PURE__ */ React29.createElement("div", { className: "flex gap-2" }, /* @__PURE__ */ React29.createElement(
5142
- "button",
5143
- {
5144
- type: "button",
5145
- onClick: () => fillDemoAccount("admin"),
5146
- className: "px-3 py-1.5 text-xs bg-amber-400 text-amber-900 border-none rounded-md cursor-pointer transition-all font-medium hover:bg-amber-500"
5147
- },
5148
- "\u7BA1\u7406\u5458\u8D26\u53F7"
5149
- ), /* @__PURE__ */ React29.createElement(
5150
- "button",
5151
- {
5152
- type: "button",
5153
- onClick: () => fillDemoAccount("user"),
5154
- className: "px-3 py-1.5 text-xs bg-amber-400 text-amber-900 border-none rounded-md cursor-pointer transition-all font-medium hover:bg-amber-500"
5155
- },
5156
- "\u7528\u6237\u8D26\u53F7"
5157
- ))),
5158
- /* @__PURE__ */ React29.createElement("form", { onSubmit: handleSubmit, className: "p-6" }, /* @__PURE__ */ React29.createElement("div", { className: "mb-5" }, /* @__PURE__ */ React29.createElement("label", { htmlFor: "phone", className: "block mb-1.5 text-sm font-medium text-gray-700" }, "\u624B\u673A\u53F7"), /* @__PURE__ */ React29.createElement("div", { className: "relative flex items-center" }, /* @__PURE__ */ React29.createElement(User, { size: 18, className: "absolute left-4 text-gray-400 z-[1] pointer-events-none" }), /* @__PURE__ */ React29.createElement(
5159
- "input",
5160
- {
5161
- id: "phone",
5162
- name: "phone",
5163
- type: "tel",
5164
- value: formData.phone,
5165
- onChange: handleInputChange,
5166
- placeholder: "\u8BF7\u8F93\u5165\u624B\u673A\u53F7",
5167
- className: "w-full py-3 px-4 pl-12 border-2 border-gray-200 rounded-lg text-base transition-all box-border min-h-12 bg-white focus:outline-none focus:border-blue-500 focus:ring-2 focus:ring-blue-500/10 placeholder:text-gray-400 disabled:bg-gray-50 disabled:text-gray-500 disabled:cursor-not-allowed",
5168
- disabled: loading
5169
- }
5170
- ))), /* @__PURE__ */ React29.createElement("div", { className: "mb-5" }, /* @__PURE__ */ React29.createElement("label", { htmlFor: "password", className: "block mb-1.5 text-sm font-medium text-gray-700" }, "\u5BC6\u7801"), /* @__PURE__ */ React29.createElement("div", { className: "relative flex items-center" }, /* @__PURE__ */ React29.createElement(Lock, { size: 18, className: "absolute left-4 text-gray-400 z-[1] pointer-events-none" }), /* @__PURE__ */ React29.createElement(
5171
- "input",
5172
- {
5173
- id: "password",
5174
- name: "password",
5175
- type: showPassword ? "text" : "password",
5176
- value: formData.password,
5177
- onChange: handleInputChange,
5178
- placeholder: "\u8BF7\u8F93\u5165\u5BC6\u7801",
5179
- className: "w-full py-3 px-4 pl-12 pr-12 border-2 border-gray-200 rounded-lg text-base transition-all box-border min-h-12 bg-white focus:outline-none focus:border-blue-500 focus:ring-2 focus:ring-blue-500/10 placeholder:text-gray-400 disabled:bg-gray-50 disabled:text-gray-500 disabled:cursor-not-allowed",
5180
- disabled: loading
5181
- }
5182
- ), /* @__PURE__ */ React29.createElement(
5183
- "button",
5184
- {
5185
- type: "button",
5186
- className: "absolute right-4 bg-transparent border-none text-gray-400 cursor-pointer p-1 rounded transition-all flex items-center justify-center min-w-6 min-h-6 hover:text-gray-600 hover:bg-gray-100 disabled:cursor-not-allowed disabled:opacity-50",
5187
- onClick: () => setShowPassword(!showPassword),
5188
- disabled: loading
5189
- },
5190
- showPassword ? /* @__PURE__ */ React29.createElement(EyeOff, { size: 18 }) : /* @__PURE__ */ React29.createElement(Eye, { size: 18 })
5191
- ))), /* @__PURE__ */ React29.createElement("div", { className: "text-right -mt-2 mb-4" }, /* @__PURE__ */ React29.createElement(
5192
- "button",
5193
- {
5194
- type: "button",
5195
- onClick: () => setShowForgotPassword(true),
5196
- className: "bg-transparent border-none text-blue-500 cursor-pointer text-sm font-medium underline px-1 py-0.5 rounded transition-all hover:text-blue-600 hover:bg-blue-50 hover:no-underline focus:outline-none focus:ring-2 focus:ring-blue-500 focus:ring-offset-2"
5197
- },
5198
- "\u5FD8\u8BB0\u5BC6\u7801\uFF1F"
5199
- )), error && /* @__PURE__ */ React29.createElement("div", { className: "text-red-500 text-sm my-4 p-3 bg-red-50 border border-red-200 rounded-lg leading-relaxed" }, error), /* @__PURE__ */ React29.createElement(
5200
- "button",
5201
- {
5202
- type: "submit",
5203
- className: "w-full bg-blue-500 text-white border-none py-3.5 px-6 rounded-lg text-base font-medium cursor-pointer transition-all mt-2 min-h-[52px] hover:bg-blue-600 hover:-translate-y-0.5 hover:shadow-lg hover:shadow-blue-500/30 active:translate-y-0 disabled:bg-gray-400 disabled:cursor-not-allowed disabled:transform-none disabled:shadow-none focus:outline-none focus:ring-2 focus:ring-blue-700 focus:ring-offset-2",
5204
- disabled: loading
5205
- },
5206
- loading ? "\u767B\u5F55\u4E2D..." : "\u767B\u5F55"
5207
- ), onSwitchToRegister && /* @__PURE__ */ React29.createElement("div", { className: "text-center mt-5 pt-4 border-t border-gray-100" }, /* @__PURE__ */ React29.createElement("span", { className: "text-gray-500 text-sm mr-1" }, "\u8FD8\u6CA1\u6709\u8D26\u53F7\uFF1F"), /* @__PURE__ */ React29.createElement(
5208
- "button",
5209
- {
5210
- type: "button",
5211
- onClick: onSwitchToRegister,
5212
- className: "bg-transparent border-none text-blue-500 cursor-pointer text-sm font-medium underline px-1 py-0.5 rounded transition-all hover:text-blue-600 hover:bg-blue-50 hover:no-underline focus:outline-none focus:ring-2 focus:ring-blue-500 focus:ring-offset-2"
5213
- },
5214
- "\u7ACB\u5373\u6CE8\u518C"
5215
- )))
5216
- )
5217
- ), /* @__PURE__ */ React29.createElement(
5218
- ForgotPasswordModal,
5219
- {
5220
- isOpen: showForgotPassword,
5221
- onClose: () => setShowForgotPassword(false),
5222
- onSuccess: () => {
5223
- setShowForgotPassword(false);
5224
- onSuccess();
5225
- }
5226
- }
5227
- ));
5228
- return createPortal(modalContent, document.body);
5229
- }
5230
-
5231
- // src/auth/legacy/components/AuthGuard.tsx
5232
- function AuthGuard({
5233
- children,
5234
- fallback,
5235
- requireAuth = true
5236
- }) {
5237
- const { isAuthenticated, loading, refreshUser } = useAuth();
5238
- const [showLoginModal, setShowLoginModal] = useState(false);
5239
- useEffect(() => {
5240
- if (!loading && requireAuth && !isAuthenticated) {
5241
- setShowLoginModal(true);
5242
- }
5243
- }, [loading, requireAuth, isAuthenticated]);
5244
- const handleLoginSuccess = () => {
5245
- refreshUser();
5246
- setShowLoginModal(false);
5247
- };
5248
- if (loading) {
5249
- return /* @__PURE__ */ React29.createElement("div", { style: {
5250
- display: "flex",
5251
- alignItems: "center",
5252
- justifyContent: "center",
5253
- minHeight: "200px",
5254
- color: "#6b7280",
5255
- flexDirection: "column",
5256
- gap: "12px"
5257
- } }, /* @__PURE__ */ React29.createElement("div", { style: {
5258
- width: "32px",
5259
- height: "32px",
5260
- border: "3px solid #e5e7eb",
5261
- borderTop: "3px solid #3b82f6",
5262
- borderRadius: "50%",
5263
- animation: "spin 1s linear infinite"
5264
- } }), /* @__PURE__ */ React29.createElement("div", null, "\u9A8C\u8BC1\u767B\u5F55\u72B6\u6001..."));
5265
- }
5266
- if (requireAuth && !isAuthenticated) {
5267
- return /* @__PURE__ */ React29.createElement(React29.Fragment, null, fallback || /* @__PURE__ */ React29.createElement("div", { style: {
5268
- display: "flex",
5269
- alignItems: "center",
5270
- justifyContent: "center",
5271
- minHeight: "200px",
5272
- color: "#6b7280",
5273
- flexDirection: "column",
5274
- gap: "16px",
5275
- padding: "24px",
5276
- textAlign: "center"
5277
- } }, /* @__PURE__ */ React29.createElement("div", { style: {
5278
- fontSize: "48px",
5279
- opacity: 0.5
5280
- } }, "\u{1F512}"), /* @__PURE__ */ React29.createElement("div", { style: {
5281
- fontSize: "18px",
5282
- fontWeight: "500"
5283
- } }, "\u8BF7\u5148\u767B\u5F55\u4EE5\u8BBF\u95EE\u6B64\u9875\u9762"), /* @__PURE__ */ React29.createElement("div", { style: {
5284
- fontSize: "14px",
5285
- opacity: 0.7
5286
- } }, "\u767B\u5F55\u540E\u5373\u53EF\u67E5\u770B\u76F8\u5173\u5185\u5BB9")), /* @__PURE__ */ React29.createElement(
5287
- LoginModal,
5288
- {
5289
- isOpen: showLoginModal,
5290
- onClose: () => setShowLoginModal(false),
5291
- onSuccess: handleLoginSuccess
5292
- }
5293
- ));
5294
- }
5295
- return /* @__PURE__ */ React29.createElement(React29.Fragment, null, children);
5296
- }
5297
- function RegisterModal({ isOpen, onClose, onSuccess, onSwitchToLogin }) {
5298
- const { register } = useAuth();
5299
- const [formData, setFormData] = useState({
5300
- phone: "",
5301
- password: "",
5302
- confirmPassword: "",
5303
- name: ""
5304
- });
5305
- const [showPassword, setShowPassword] = useState(false);
5306
- const [showConfirmPassword, setShowConfirmPassword] = useState(false);
5307
- const [error, setError] = useState("");
5308
- const [loading, setLoading] = useState(false);
5309
- const [mounted, setMounted] = useState(false);
5310
- useEffect(() => {
5311
- setMounted(true);
5312
- }, []);
5313
- const handleInputChange = (e) => {
5314
- const { name, value } = e.target;
5315
- setFormData((prev) => ({ ...prev, [name]: value }));
5316
- if (error) setError("");
5317
- };
5318
- const validateForm = () => {
5319
- if (!formData.phone || !formData.password || !formData.confirmPassword) {
5320
- setError("\u8BF7\u586B\u5199\u5FC5\u8981\u4FE1\u606F");
5321
- return false;
5322
- }
5323
- if (!validatePhoneNumber(formData.phone)) {
5324
- setError("\u8BF7\u8F93\u5165\u6B63\u786E\u7684\u624B\u673A\u53F7\u683C\u5F0F");
5325
- return false;
5326
- }
5327
- const passwordValidation = validatePassword(formData.password);
5328
- if (!passwordValidation.valid) {
5329
- setError(passwordValidation.message || "\u5BC6\u7801\u683C\u5F0F\u9519\u8BEF");
5330
- return false;
5331
- }
5332
- if (formData.password !== formData.confirmPassword) {
5333
- setError("\u4E24\u6B21\u8F93\u5165\u7684\u5BC6\u7801\u4E0D\u4E00\u81F4");
5334
- return false;
5335
- }
5336
- return true;
5337
- };
5338
- const handleSubmit = async (e) => {
5339
- e.preventDefault();
5340
- setError("");
5341
- setLoading(true);
5342
- try {
5343
- if (!validateForm()) {
5344
- return;
5345
- }
5346
- console.log("\u{1F4DD} [RegisterModal] \u63D0\u4EA4\u6CE8\u518C\u8868\u5355:", {
5347
- phone: formData.phone,
5348
- name: formData.name || "\u672A\u8BBE\u7F6E",
5349
- password: "***"
5350
- });
5351
- const result = await register({
5352
- phone: formData.phone,
5353
- password: formData.password,
5354
- name: formData.name || void 0
5355
- });
5356
- if (result.success) {
5357
- console.log("\u2705 [RegisterModal] \u6CE8\u518C\u6210\u529F");
5358
- onSuccess();
5359
- } else {
5360
- console.log("\u274C [RegisterModal] \u6CE8\u518C\u5931\u8D25:", result.message);
5361
- setError(result.message || "\u6CE8\u518C\u5931\u8D25");
5362
- }
5363
- } catch (error2) {
5364
- console.error("\u{1F4A5} [RegisterModal] \u6CE8\u518C\u5F02\u5E38:", error2);
5365
- setError("\u6CE8\u518C\u5931\u8D25\uFF0C\u8BF7\u7A0D\u540E\u91CD\u8BD5");
5366
- } finally {
5367
- setLoading(false);
5368
- }
5369
- };
5370
- const handleOverlayClick = (e) => {
5371
- if (e.target === e.currentTarget) {
5372
- onClose();
5373
- }
5374
- };
5375
- if (!isOpen || !mounted) return null;
5376
- const modalContent = /* @__PURE__ */ React29.createElement(
5377
- "div",
5378
- {
5379
- className: "fixed top-0 left-0 right-0 bottom-0 w-screen h-screen bg-black/50 backdrop-blur-sm flex items-center justify-center z-[9999] p-4",
5380
- style: { margin: 0 },
5381
- onClick: handleOverlayClick
5382
- },
5383
- /* @__PURE__ */ React29.createElement(
5384
- "div",
5385
- {
5386
- className: "bg-white rounded-2xl shadow-xl w-full max-w-[420px] max-h-[90vh] overflow-y-auto relative",
5387
- onClick: (e) => e.stopPropagation()
5388
- },
5389
- /* @__PURE__ */ React29.createElement(
5390
- "button",
5391
- {
5392
- className: "absolute top-5 right-5 bg-transparent border-none text-gray-500 cursor-pointer p-2 rounded-lg transition-all hover:bg-gray-100 hover:text-gray-700 focus:outline-none focus:ring-2 focus:ring-blue-500 focus:ring-offset-2 min-w-9 min-h-9 flex items-center justify-center",
5393
- onClick: onClose
5394
- },
5395
- /* @__PURE__ */ React29.createElement(X, { size: 20 })
5396
- ),
5397
- /* @__PURE__ */ React29.createElement("div", { className: "px-6 pt-6 pb-4 text-center border-b border-gray-100" }, /* @__PURE__ */ React29.createElement("h2", { className: "text-2xl font-semibold text-gray-800 mb-2" }, "\u7528\u6237\u6CE8\u518C"), /* @__PURE__ */ React29.createElement("p", { className: "text-gray-500 text-sm" }, "\u8BF7\u586B\u5199\u4EE5\u4E0B\u4FE1\u606F\u521B\u5EFA\u8D26\u6237")),
5398
- /* @__PURE__ */ React29.createElement("form", { onSubmit: handleSubmit, className: "p-6" }, /* @__PURE__ */ React29.createElement("div", { className: "mb-5" }, /* @__PURE__ */ React29.createElement("label", { htmlFor: "phone", className: "block mb-1.5 text-sm font-medium text-gray-700" }, "\u624B\u673A\u53F7 *"), /* @__PURE__ */ React29.createElement("div", { className: "relative flex items-center" }, /* @__PURE__ */ React29.createElement(Phone, { size: 18, className: "absolute left-4 text-gray-400 z-[1] pointer-events-none" }), /* @__PURE__ */ React29.createElement(
5399
- "input",
5400
- {
5401
- id: "phone",
5402
- name: "phone",
5403
- type: "tel",
5404
- value: formData.phone,
5405
- onChange: handleInputChange,
5406
- placeholder: "\u8BF7\u8F93\u5165\u624B\u673A\u53F7",
5407
- className: "w-full py-3 px-4 pl-12 border-2 border-gray-200 rounded-lg text-base transition-all box-border min-h-12 bg-white focus:outline-none focus:border-blue-500 focus:ring-2 focus:ring-blue-500/10 placeholder:text-gray-400 disabled:bg-gray-50 disabled:text-gray-500 disabled:cursor-not-allowed",
5408
- disabled: loading
5409
- }
5410
- ))), /* @__PURE__ */ React29.createElement("div", { className: "mb-5" }, /* @__PURE__ */ React29.createElement("label", { htmlFor: "name", className: "block mb-1.5 text-sm font-medium text-gray-700" }, "\u59D3\u540D"), /* @__PURE__ */ React29.createElement("div", { className: "relative flex items-center" }, /* @__PURE__ */ React29.createElement(User, { size: 18, className: "absolute left-4 text-gray-400 z-[1] pointer-events-none" }), /* @__PURE__ */ React29.createElement(
5411
- "input",
5412
- {
5413
- id: "name",
5414
- name: "name",
5415
- type: "text",
5416
- value: formData.name,
5417
- onChange: handleInputChange,
5418
- placeholder: "\u8BF7\u8F93\u5165\u59D3\u540D\uFF08\u53EF\u9009\uFF09",
5419
- className: "w-full py-3 px-4 pl-12 border-2 border-gray-200 rounded-lg text-base transition-all box-border min-h-12 bg-white focus:outline-none focus:border-blue-500 focus:ring-2 focus:ring-blue-500/10 placeholder:text-gray-400 disabled:bg-gray-50 disabled:text-gray-500 disabled:cursor-not-allowed",
5420
- disabled: loading
5421
- }
5422
- ))), /* @__PURE__ */ React29.createElement("div", { className: "mb-5" }, /* @__PURE__ */ React29.createElement("label", { htmlFor: "password", className: "block mb-1.5 text-sm font-medium text-gray-700" }, "\u5BC6\u7801 *"), /* @__PURE__ */ React29.createElement("div", { className: "relative flex items-center" }, /* @__PURE__ */ React29.createElement(Lock, { size: 18, className: "absolute left-4 text-gray-400 z-[1] pointer-events-none" }), /* @__PURE__ */ React29.createElement(
5423
- "input",
5424
- {
5425
- id: "password",
5426
- name: "password",
5427
- type: showPassword ? "text" : "password",
5428
- value: formData.password,
5429
- onChange: handleInputChange,
5430
- placeholder: "\u8BF7\u8F93\u5165\u5BC6\u7801\uFF08\u81F3\u5C116\u4F4D\uFF09",
5431
- className: "w-full py-3 px-4 pl-12 pr-12 border-2 border-gray-200 rounded-lg text-base transition-all box-border min-h-12 bg-white focus:outline-none focus:border-blue-500 focus:ring-2 focus:ring-blue-500/10 placeholder:text-gray-400 disabled:bg-gray-50 disabled:text-gray-500 disabled:cursor-not-allowed",
5432
- disabled: loading
5433
- }
5434
- ), /* @__PURE__ */ React29.createElement(
5435
- "button",
5436
- {
5437
- type: "button",
5438
- className: "absolute right-4 bg-transparent border-none text-gray-400 cursor-pointer p-1 rounded transition-all flex items-center justify-center min-w-6 min-h-6 hover:text-gray-600 hover:bg-gray-100 disabled:cursor-not-allowed disabled:opacity-50",
5439
- onClick: () => setShowPassword(!showPassword),
5440
- disabled: loading
5441
- },
5442
- showPassword ? /* @__PURE__ */ React29.createElement(EyeOff, { size: 18 }) : /* @__PURE__ */ React29.createElement(Eye, { size: 18 })
5443
- ))), /* @__PURE__ */ React29.createElement("div", { className: "mb-5" }, /* @__PURE__ */ React29.createElement("label", { htmlFor: "confirmPassword", className: "block mb-1.5 text-sm font-medium text-gray-700" }, "\u786E\u8BA4\u5BC6\u7801 *"), /* @__PURE__ */ React29.createElement("div", { className: "relative flex items-center" }, /* @__PURE__ */ React29.createElement(Lock, { size: 18, className: "absolute left-4 text-gray-400 z-[1] pointer-events-none" }), /* @__PURE__ */ React29.createElement(
5444
- "input",
5445
- {
5446
- id: "confirmPassword",
5447
- name: "confirmPassword",
5448
- type: showConfirmPassword ? "text" : "password",
5449
- value: formData.confirmPassword,
5450
- onChange: handleInputChange,
5451
- placeholder: "\u8BF7\u518D\u6B21\u8F93\u5165\u5BC6\u7801",
5452
- className: "w-full py-3 px-4 pl-12 pr-12 border-2 border-gray-200 rounded-lg text-base transition-all box-border min-h-12 bg-white focus:outline-none focus:border-blue-500 focus:ring-2 focus:ring-blue-500/10 placeholder:text-gray-400 disabled:bg-gray-50 disabled:text-gray-500 disabled:cursor-not-allowed",
5453
- disabled: loading
5454
- }
5455
- ), /* @__PURE__ */ React29.createElement(
5456
- "button",
5457
- {
5458
- type: "button",
5459
- className: "absolute right-4 bg-transparent border-none text-gray-400 cursor-pointer p-1 rounded transition-all flex items-center justify-center min-w-6 min-h-6 hover:text-gray-600 hover:bg-gray-100 disabled:cursor-not-allowed disabled:opacity-50",
5460
- onClick: () => setShowConfirmPassword(!showConfirmPassword),
5461
- disabled: loading
5462
- },
5463
- showConfirmPassword ? /* @__PURE__ */ React29.createElement(EyeOff, { size: 18 }) : /* @__PURE__ */ React29.createElement(Eye, { size: 18 })
5464
- ))), error && /* @__PURE__ */ React29.createElement("div", { className: "text-red-500 text-sm my-4 p-3 bg-red-50 border border-red-200 rounded-lg leading-relaxed" }, error), /* @__PURE__ */ React29.createElement(
5465
- "button",
5466
- {
5467
- type: "submit",
5468
- className: "w-full bg-blue-500 text-white border-none py-3.5 px-6 rounded-lg text-base font-medium cursor-pointer transition-all mt-2 min-h-[52px] hover:bg-blue-600 hover:-translate-y-0.5 hover:shadow-lg hover:shadow-blue-500/30 active:translate-y-0 disabled:bg-gray-400 disabled:cursor-not-allowed disabled:transform-none disabled:shadow-none focus:outline-none focus:ring-2 focus:ring-blue-700 focus:ring-offset-2",
5469
- disabled: loading
5470
- },
5471
- loading ? "\u6CE8\u518C\u4E2D..." : "\u6CE8\u518C"
5472
- ), onSwitchToLogin && /* @__PURE__ */ React29.createElement("div", { className: "text-center mt-5 pt-4 border-t border-gray-100" }, /* @__PURE__ */ React29.createElement("span", { className: "text-gray-500 text-sm mr-1" }, "\u5DF2\u6709\u8D26\u53F7\uFF1F"), /* @__PURE__ */ React29.createElement(
5473
- "button",
5474
- {
5475
- type: "button",
5476
- onClick: onSwitchToLogin,
5477
- className: "bg-transparent border-none text-blue-500 cursor-pointer text-sm font-medium underline px-1 py-0.5 rounded transition-all hover:text-blue-600 hover:bg-blue-50 hover:no-underline focus:outline-none focus:ring-2 focus:ring-blue-500 focus:ring-offset-2"
5478
- },
5479
- "\u7ACB\u5373\u767B\u5F55"
5480
- )))
5481
- )
5482
- );
5483
- return createPortal(modalContent, document.body);
5484
- }
5485
-
5486
- // src/auth/legacy/components/UserMenu.tsx
5487
- function UserMenu({ customMenuItems = [], className }) {
5488
- const { user, isAuthenticated, logout } = useAuth();
5489
- const [isOpen, setIsOpen] = useState(false);
5490
- const [showLoginModal, setShowLoginModal] = useState(false);
5491
- const [showRegisterModal, setShowRegisterModal] = useState(false);
5492
- const toggleMenu = () => {
5493
- setIsOpen(!isOpen);
5494
- };
5495
- const handleMenuClick = (e) => {
5496
- e.stopPropagation();
5497
- };
5498
- const handleCustomMenuClick = (item) => {
5499
- console.log(`\u{1F527} [UserMenu] \u81EA\u5B9A\u4E49\u83DC\u5355\u9879\u88AB\u70B9\u51FB: ${item.label}`);
5500
- item.onClick();
5501
- setIsOpen(false);
5502
- };
5503
- const handleLogin = () => {
5504
- console.log("\u{1F511} [UserMenu] \u767B\u5F55\u6309\u94AE\u88AB\u70B9\u51FB");
5505
- setShowLoginModal(true);
5506
- setIsOpen(false);
5507
- };
5508
- const handleRegister = () => {
5509
- console.log("\u{1F4DD} [UserMenu] \u6CE8\u518C\u6309\u94AE\u88AB\u70B9\u51FB");
5510
- setShowRegisterModal(true);
5511
- setIsOpen(false);
5512
- };
5513
- const handleLogout = async () => {
5514
- console.log("\u{1F6AA} [UserMenu] \u9000\u51FA\u767B\u5F55\u6309\u94AE\u88AB\u70B9\u51FB");
5515
- try {
5516
- await logout();
5517
- console.log("\u2705 [UserMenu] \u9000\u51FA\u767B\u5F55\u6210\u529F");
5518
- } catch (error) {
5519
- console.error("\u9000\u51FA\u767B\u5F55\u5931\u8D25:", error);
5520
- }
5521
- setIsOpen(false);
5522
- };
5523
- const handleAuthSuccess = () => {
5524
- console.log("\u{1F389} [UserMenu] \u8BA4\u8BC1\u6210\u529F\u56DE\u8C03\u88AB\u8C03\u7528");
5525
- console.log("\u{1F464} [UserMenu] \u5F53\u524DuseAuth\u72B6\u6001:", {
5526
- user: user ? `${user.name || "\u672A\u8BBE\u7F6E"} (${user.phone})` : null,
5527
- isAuthenticated
5528
- });
5529
- setShowLoginModal(false);
5530
- setShowRegisterModal(false);
5531
- console.log("\u2705 [UserMenu] \u8BA4\u8BC1\u6210\u529F\u5904\u7406\u5B8C\u6210 - \u6A21\u6001\u6846\u5DF2\u5173\u95ED");
5532
- setTimeout(() => {
5533
- console.log("\u{1F50D} [UserMenu] \u5EF6\u8FDF\u72B6\u6001\u68C0\u67E5:", {
5534
- user: user ? `${user.name || "\u672A\u8BBE\u7F6E"} (${user.phone})` : null,
5535
- isAuthenticated
5536
- });
5537
- }, 500);
5538
- };
5539
- const handleSwitchToRegister = () => {
5540
- console.log("\u{1F504} [UserMenu] \u4ECE\u767B\u5F55\u5207\u6362\u5230\u6CE8\u518C");
5541
- setShowLoginModal(false);
5542
- setShowRegisterModal(true);
5543
- };
5544
- const handleSwitchToLogin = () => {
5545
- console.log("\u{1F504} [UserMenu] \u4ECE\u6CE8\u518C\u5207\u6362\u5230\u767B\u5F55");
5546
- setShowRegisterModal(false);
5547
- setShowLoginModal(true);
5548
- };
5549
- const getVisibleCustomMenuItems = () => {
5550
- return customMenuItems.filter((item) => {
5551
- if (item.requireAuth === true) {
5552
- return isAuthenticated;
5553
- }
5554
- if (item.requireAuth === false) {
5555
- return !isAuthenticated;
5556
- }
5557
- return true;
5558
- });
5559
- };
5560
- React29.useEffect(() => {
5561
- const handleGlobalClick = () => {
5562
- setIsOpen(false);
5563
- };
5564
- if (isOpen) {
5565
- document.addEventListener("click", handleGlobalClick);
5566
- }
5567
- return () => {
5568
- document.removeEventListener("click", handleGlobalClick);
5569
- };
5570
- }, [isOpen]);
5571
- const visibleCustomMenuItems = getVisibleCustomMenuItems();
5572
- return /* @__PURE__ */ React29.createElement("div", { className: `relative inline-block ${className || ""}` }, /* @__PURE__ */ React29.createElement(
5573
- "button",
5574
- {
5575
- className: "flex items-center gap-2 px-3 py-2 bg-slate-50 text-slate-500 border border-slate-200 rounded-lg cursor-pointer transition-all min-w-11 min-h-11 text-sm font-medium hover:bg-slate-200 hover:text-slate-800 focus:outline-none focus:ring-2 focus:ring-blue-500/10",
5576
- onClick: toggleMenu
5577
- },
5578
- /* @__PURE__ */ React29.createElement(User, { size: 24 }),
5579
- isAuthenticated && user && /* @__PURE__ */ React29.createElement("span", { className: "max-w-[120px] overflow-hidden text-ellipsis whitespace-nowrap" }, user.name || user.phone)
5580
- ), isOpen && /* @__PURE__ */ React29.createElement(
5581
- "div",
5582
- {
5583
- className: "absolute top-[calc(100%+0.5rem)] right-0 z-[1000] min-w-[200px] bg-white border border-slate-200 rounded-xl shadow-lg max-h-[90vh] overflow-y-auto p-2 animate-in slide-in-from-top-2 fade-in duration-200",
5584
- onClick: handleMenuClick
5585
- },
5586
- isAuthenticated && user ? (
5587
- // 已登录状态的菜单
5588
- /* @__PURE__ */ React29.createElement(React29.Fragment, null, /* @__PURE__ */ React29.createElement("div", { className: "p-3 mb-2 bg-slate-50 rounded-lg" }, /* @__PURE__ */ React29.createElement("div", { className: "text-sm font-semibold text-slate-800 mb-1 overflow-hidden text-ellipsis whitespace-nowrap" }, user.name || "\u672A\u8BBE\u7F6E\u540D\u79F0"), /* @__PURE__ */ React29.createElement("div", { className: "text-xs text-slate-500 mb-1 overflow-hidden text-ellipsis whitespace-nowrap" }, user.phone), /* @__PURE__ */ React29.createElement("div", { className: "text-xs text-blue-500 font-medium" }, user.role === "admin" ? "\u7BA1\u7406\u5458" : "\u666E\u901A\u7528\u6237")), visibleCustomMenuItems.length > 0 && /* @__PURE__ */ React29.createElement(React29.Fragment, null, /* @__PURE__ */ React29.createElement("div", { className: "h-px bg-slate-200 my-2" }), visibleCustomMenuItems.map((item) => {
5589
- const IconComponent = item.icon;
5590
- return /* @__PURE__ */ React29.createElement(
5591
- "button",
5592
- {
5593
- key: item.id,
5594
- className: "flex items-center gap-3 w-full p-3 bg-transparent border-none rounded-lg text-gray-700 text-sm font-medium cursor-pointer transition-all text-left min-h-11 hover:bg-slate-100 hover:text-slate-800 focus:outline-none focus:bg-slate-100 focus:ring-2 focus:ring-blue-500/10",
5595
- onClick: () => handleCustomMenuClick(item)
5596
- },
5597
- IconComponent && /* @__PURE__ */ React29.createElement(IconComponent, { size: 16 }),
5598
- /* @__PURE__ */ React29.createElement("span", null, item.label)
5599
- );
5600
- })), /* @__PURE__ */ React29.createElement("div", { className: "h-px bg-slate-200 my-2" }), /* @__PURE__ */ React29.createElement(
5601
- "button",
5602
- {
5603
- className: "flex items-center gap-3 w-full p-3 bg-transparent border-none rounded-lg text-gray-700 text-sm font-medium cursor-pointer transition-all text-left min-h-11 hover:bg-red-50 hover:text-red-600 focus:outline-none focus:bg-red-50 focus:text-red-600 focus:ring-2 focus:ring-red-500/10",
5604
- onClick: handleLogout
5605
- },
5606
- /* @__PURE__ */ React29.createElement(LogOut, { size: 16 }),
5607
- /* @__PURE__ */ React29.createElement("span", null, "\u9000\u51FA\u767B\u5F55")
5608
- ))
5609
- ) : (
5610
- // 未登录状态的菜单
5611
- /* @__PURE__ */ React29.createElement(React29.Fragment, null, /* @__PURE__ */ React29.createElement(
5612
- "button",
5613
- {
5614
- className: "flex items-center gap-3 w-full p-3 bg-transparent border-none rounded-lg text-gray-700 text-sm font-medium cursor-pointer transition-all text-left min-h-11 hover:bg-slate-100 hover:text-slate-800 focus:outline-none focus:bg-slate-100 focus:ring-2 focus:ring-blue-500/10",
5615
- onClick: handleLogin
5616
- },
5617
- /* @__PURE__ */ React29.createElement(LogIn, { size: 16 }),
5618
- /* @__PURE__ */ React29.createElement("span", null, "\u767B\u5F55")
5619
- ), /* @__PURE__ */ React29.createElement(
5620
- "button",
5621
- {
5622
- className: "flex items-center gap-3 w-full p-3 bg-transparent border-none rounded-lg text-gray-700 text-sm font-medium cursor-pointer transition-all text-left min-h-11 hover:bg-slate-100 hover:text-slate-800 focus:outline-none focus:bg-slate-100 focus:ring-2 focus:ring-blue-500/10",
5623
- onClick: handleRegister
5624
- },
5625
- /* @__PURE__ */ React29.createElement(User, { size: 16 }),
5626
- /* @__PURE__ */ React29.createElement("span", null, "\u6CE8\u518C")
5627
- ), visibleCustomMenuItems.length > 0 && /* @__PURE__ */ React29.createElement(React29.Fragment, null, /* @__PURE__ */ React29.createElement("div", { className: "h-px bg-slate-200 my-2" }), visibleCustomMenuItems.map((item) => {
5628
- const IconComponent = item.icon;
5629
- return /* @__PURE__ */ React29.createElement(
5630
- "button",
5631
- {
5632
- key: item.id,
5633
- className: "flex items-center gap-3 w-full p-3 bg-transparent border-none rounded-lg text-gray-700 text-sm font-medium cursor-pointer transition-all text-left min-h-11 hover:bg-slate-100 hover:text-slate-800 focus:outline-none focus:bg-slate-100 focus:ring-2 focus:ring-blue-500/10",
5634
- onClick: () => handleCustomMenuClick(item)
5635
- },
5636
- IconComponent && /* @__PURE__ */ React29.createElement(IconComponent, { size: 16 }),
5637
- /* @__PURE__ */ React29.createElement("span", null, item.label)
5638
- );
5639
- })))
5640
- )
5641
- ), /* @__PURE__ */ React29.createElement(
5642
- LoginModal,
5643
- {
5644
- isOpen: showLoginModal,
5645
- onClose: () => setShowLoginModal(false),
5646
- onSuccess: handleAuthSuccess,
5647
- onSwitchToRegister: handleSwitchToRegister
5648
- }
5649
- ), /* @__PURE__ */ React29.createElement(
5650
- RegisterModal,
5651
- {
5652
- isOpen: showRegisterModal,
5653
- onClose: () => setShowRegisterModal(false),
5654
- onSuccess: handleAuthSuccess,
5655
- onSwitchToLogin: handleSwitchToLogin
5656
- }
5657
- ));
5658
- }
5659
-
5660
- // src/showmasterpiece/ui/web/pages/ShowMasterPiecesPage.tsx
5661
4627
  function ShowMasterPiecesContent() {
5662
4628
  const {
5663
4629
  collections,
@@ -5765,8 +4731,8 @@ function ShowMasterPiecesContent() {
5765
4731
  console.log("\u274C [ShowMasterPieces] \u7528\u6237\u53D6\u6D88\u4E3B\u9875\u5F39\u7A97:", configId);
5766
4732
  cancelPopup(configId);
5767
4733
  };
5768
- const renderLoading = () => /* @__PURE__ */ React29.createElement("div", { className: "min-h-screen bg-gradient-to-br from-white to-prussian-blue-900/5 overflow-x-hidden" }, /* @__PURE__ */ React29.createElement("div", { className: "flex flex-col items-center justify-center min-h-[50vh] gap-4 p-4" }, /* @__PURE__ */ React29.createElement("div", { className: "w-10 h-10 border-4 border-prussian-blue-300 border-t-moonstone rounded-full animate-spin" }), /* @__PURE__ */ React29.createElement("p", { className: "text-prussian-blue-600" }, "\u52A0\u8F7D\u4E2D...")));
5769
- const renderError = () => /* @__PURE__ */ React29.createElement("div", { className: "min-h-screen bg-gradient-to-br from-white to-prussian-blue-900/5 overflow-x-hidden" }, /* @__PURE__ */ React29.createElement("div", { className: "flex flex-col items-center justify-center min-h-[50vh] gap-4 p-4 text-center" }, /* @__PURE__ */ React29.createElement("p", { className: "text-destructive text-lg" }, "\u52A0\u8F7D\u5931\u8D25\uFF1A", error), /* @__PURE__ */ React29.createElement(
4734
+ const renderLoading = () => /* @__PURE__ */ React23.createElement("div", { className: "min-h-screen bg-gradient-to-br from-white to-prussian-blue-900/5 overflow-x-hidden" }, /* @__PURE__ */ React23.createElement("div", { className: "flex flex-col items-center justify-center min-h-[50vh] gap-4 p-4" }, /* @__PURE__ */ React23.createElement("div", { className: "w-10 h-10 border-4 border-prussian-blue-300 border-t-moonstone rounded-full animate-spin" }), /* @__PURE__ */ React23.createElement("p", { className: "text-prussian-blue-600" }, "\u52A0\u8F7D\u4E2D...")));
4735
+ const renderError = () => /* @__PURE__ */ React23.createElement("div", { className: "min-h-screen bg-gradient-to-br from-white to-prussian-blue-900/5 overflow-x-hidden" }, /* @__PURE__ */ React23.createElement("div", { className: "flex flex-col items-center justify-center min-h-[50vh] gap-4 p-4 text-center" }, /* @__PURE__ */ React23.createElement("p", { className: "text-destructive text-lg" }, "\u52A0\u8F7D\u5931\u8D25\uFF1A", error), /* @__PURE__ */ React23.createElement(
5770
4736
  Button,
5771
4737
  {
5772
4738
  onClick: () => window.location.reload(),
@@ -5774,13 +4740,13 @@ function ShowMasterPiecesContent() {
5774
4740
  },
5775
4741
  "\u91CD\u8BD5"
5776
4742
  )));
5777
- const renderEmptyState = () => /* @__PURE__ */ React29.createElement("div", { className: "min-h-screen bg-gradient-to-br from-white to-prussian-blue-900/5 overflow-x-hidden" }, /* @__PURE__ */ React29.createElement("div", { className: "flex flex-col items-center justify-center min-h-[50vh] gap-4 p-4 text-center" }, /* @__PURE__ */ React29.createElement("div", { className: "text-moonstone text-6xl mb-4" }, "\u{1F3A8}"), /* @__PURE__ */ React29.createElement("h3", { className: "text-xl font-semibold mb-2 text-rich-black" }, "\u6682\u65E0\u53EF\u7528\u753B\u96C6"), /* @__PURE__ */ React29.createElement("p", { className: "text-prussian-blue-600 mb-6" }, "\u5F53\u524D\u6CA1\u6709\u53EF\u9884\u8BA2\u7684\u753B\u96C6\uFF0C\u8BF7\u7A0D\u540E\u518D\u8BD5"), hasAdminAccess && /* @__PURE__ */ React29.createElement(
4743
+ const renderEmptyState = () => /* @__PURE__ */ React23.createElement("div", { className: "min-h-screen bg-gradient-to-br from-white to-prussian-blue-900/5 overflow-x-hidden" }, /* @__PURE__ */ React23.createElement("div", { className: "flex flex-col items-center justify-center min-h-[50vh] gap-4 p-4 text-center" }, /* @__PURE__ */ React23.createElement("div", { className: "text-moonstone text-6xl mb-4" }, "\u{1F3A8}"), /* @__PURE__ */ React23.createElement("h3", { className: "text-xl font-semibold mb-2 text-rich-black" }, "\u6682\u65E0\u53EF\u7528\u753B\u96C6"), /* @__PURE__ */ React23.createElement("p", { className: "text-prussian-blue-600 mb-6" }, "\u5F53\u524D\u6CA1\u6709\u53EF\u9884\u8BA2\u7684\u753B\u96C6\uFF0C\u8BF7\u7A0D\u540E\u518D\u8BD5"), hasAdminAccess && /* @__PURE__ */ React23.createElement(
5778
4744
  Button,
5779
4745
  {
5780
4746
  asChild: true,
5781
4747
  className: "bg-gradient-to-r from-moonstone to-cerulean hover:from-cerulean hover:to-moonstone text-white shadow-lg transition-all duration-300"
5782
4748
  },
5783
- /* @__PURE__ */ React29.createElement("a", { href: "/testField/ShowMasterPieces/config", className: "gap-2" }, /* @__PURE__ */ React29.createElement(Settings, { size: 20 }), "\u524D\u5F80\u914D\u7F6E\u9875\u9762")
4749
+ /* @__PURE__ */ React23.createElement("a", { href: "/testField/ShowMasterPieces/config", className: "gap-2" }, /* @__PURE__ */ React23.createElement(Settings, { size: 20 }), "\u524D\u5F80\u914D\u7F6E\u9875\u9762")
5784
4750
  )));
5785
4751
  if (loading) {
5786
4752
  return renderLoading();
@@ -5796,7 +4762,7 @@ function ShowMasterPiecesContent() {
5796
4762
  category: tab.category,
5797
4763
  displayName: tab.description || tab.name || getCategoryDisplayName(tab.category)
5798
4764
  }));
5799
- return /* @__PURE__ */ React29.createElement(CartProvider, { userId }, /* @__PURE__ */ React29.createElement("div", { className: "min-h-screen bg-gradient-to-br from-white to-prussian-blue-900/5 overflow-x-hidden" }, /* @__PURE__ */ React29.createElement("div", { className: "bg-white/95 backdrop-blur supports-[backdrop-filter]:bg-white/80 border-b border-prussian-blue-200/30 sticky top-0 z-50" }, /* @__PURE__ */ React29.createElement("div", { className: "max-w-7xl mx-auto px-3 sm:px-4 py-3 sm:py-4" }, /* @__PURE__ */ React29.createElement("div", { className: "flex items-center justify-between gap-2 sm:gap-4 min-h-[44px]" }, /* @__PURE__ */ React29.createElement("div", { className: "flex items-center gap-4 sm:gap-8 min-w-0 flex-1" }, selectedCollection && /* @__PURE__ */ React29.createElement(
4765
+ return /* @__PURE__ */ React23.createElement(CartProvider, { userId }, /* @__PURE__ */ React23.createElement("div", { className: "min-h-screen bg-gradient-to-br from-white to-prussian-blue-900/5 overflow-x-hidden" }, /* @__PURE__ */ React23.createElement("div", { className: "bg-white/95 backdrop-blur supports-[backdrop-filter]:bg-white/80 border-b border-prussian-blue-200/30 sticky top-0 z-50" }, /* @__PURE__ */ React23.createElement("div", { className: "max-w-7xl mx-auto px-3 sm:px-4 py-3 sm:py-4" }, /* @__PURE__ */ React23.createElement("div", { className: "flex items-center justify-between gap-2 sm:gap-4 min-h-[44px]" }, /* @__PURE__ */ React23.createElement("div", { className: "flex items-center gap-4 sm:gap-8 min-w-0 flex-1" }, selectedCollection && /* @__PURE__ */ React23.createElement(
5800
4766
  Button,
5801
4767
  {
5802
4768
  variant: "ghost",
@@ -5804,25 +4770,25 @@ function ShowMasterPiecesContent() {
5804
4770
  onClick: backToGallery,
5805
4771
  className: "gap-1 sm:gap-2 min-h-[44px] min-w-[44px] flex-shrink-0"
5806
4772
  },
5807
- /* @__PURE__ */ React29.createElement(ArrowLeft, { size: 18, className: "sm:w-5 sm:h-5" }),
5808
- /* @__PURE__ */ React29.createElement("span", { className: "hidden sm:inline" }, "\u8FD4\u56DE")
5809
- ), /* @__PURE__ */ React29.createElement("div", { className: "text-center sm:text-left min-w-0 flex-1" }, /* @__PURE__ */ React29.createElement("div", { className: "flex flex-col sm:flex-row sm:items-center gap-2" }, /* @__PURE__ */ React29.createElement("h1", { className: "text-lg sm:text-xl lg:text-2xl font-bold m-0 truncate text-rich-black" }, config?.heroTitle || "\u827A\u672F\u753B\u96C6\u5C55\u89C8")), /* @__PURE__ */ React29.createElement("p", { className: "text-xs sm:text-sm text-prussian-blue-600 m-0 hidden sm:block truncate" }, config?.heroSubtitle || "\u63A2\u7D22\u7CBE\u7F8E\u7684\u827A\u672F\u4F5C\u54C1\uFF0C\u611F\u53D7\u521B\u4F5C\u7684\u9B45\u529B"))), /* @__PURE__ */ React29.createElement("div", { className: "flex items-center gap-3 sm:gap-4 flex-shrink-0" }, /* @__PURE__ */ React29.createElement(
4773
+ /* @__PURE__ */ React23.createElement(ArrowLeft, { size: 18, className: "sm:w-5 sm:h-5" }),
4774
+ /* @__PURE__ */ React23.createElement("span", { className: "hidden sm:inline" }, "\u8FD4\u56DE")
4775
+ ), /* @__PURE__ */ React23.createElement("div", { className: "text-center sm:text-left min-w-0 flex-1" }, /* @__PURE__ */ React23.createElement("div", { className: "flex flex-col sm:flex-row sm:items-center gap-2" }, /* @__PURE__ */ React23.createElement("h1", { className: "text-lg sm:text-xl lg:text-2xl font-bold m-0 truncate text-rich-black" }, config?.heroTitle || "\u827A\u672F\u753B\u96C6\u5C55\u89C8")), /* @__PURE__ */ React23.createElement("p", { className: "text-xs sm:text-sm text-prussian-blue-600 m-0 hidden sm:block truncate" }, config?.heroSubtitle || "\u63A2\u7D22\u7CBE\u7F8E\u7684\u827A\u672F\u4F5C\u54C1\uFF0C\u611F\u53D7\u521B\u4F5C\u7684\u9B45\u529B"))), /* @__PURE__ */ React23.createElement("div", { className: "flex items-center gap-3 sm:gap-4 flex-shrink-0" }, /* @__PURE__ */ React23.createElement(
5810
4776
  Link,
5811
4777
  {
5812
4778
  href: "/testField/ShowMasterPieces/history",
5813
4779
  className: "flex items-center gap-1 sm:gap-2 text-prussian-blue-600 hover:text-moonstone transition-colors p-1 sm:p-2 rounded-lg min-h-[44px] min-w-[44px] flex-shrink-0",
5814
4780
  title: "\u67E5\u770B\u9884\u8BA2\u5386\u53F2"
5815
4781
  },
5816
- /* @__PURE__ */ React29.createElement(History, { size: 18, className: "sm:w-5 sm:h-5" }),
5817
- /* @__PURE__ */ React29.createElement("span", { className: "hidden sm:inline" }, "\u5386\u53F2\u8BB0\u5F55")
5818
- ), /* @__PURE__ */ React29.createElement(
4782
+ /* @__PURE__ */ React23.createElement(History, { size: 18, className: "sm:w-5 sm:h-5" }),
4783
+ /* @__PURE__ */ React23.createElement("span", { className: "hidden sm:inline" }, "\u5386\u53F2\u8BB0\u5F55")
4784
+ ), /* @__PURE__ */ React23.createElement(
5819
4785
  CartButton,
5820
4786
  {
5821
4787
  onClick: handleCartClick,
5822
4788
  className: "relative p-1 sm:p-2 text-prussian-blue-600 hover:text-moonstone transition-colors",
5823
4789
  userId
5824
4790
  }
5825
- ), /* @__PURE__ */ React29.createElement(
4791
+ ), /* @__PURE__ */ React23.createElement(
5826
4792
  UserMenu,
5827
4793
  {
5828
4794
  customMenuItems: hasAdminAccess ? [
@@ -5837,7 +4803,7 @@ function ShowMasterPiecesContent() {
5837
4803
  }
5838
4804
  ))))), selectedCollection ? (
5839
4805
  /* 手机相册风格的作品浏览视图 */
5840
- /* @__PURE__ */ React29.createElement("div", { className: "fixed inset-0 top-[76px] z-40" }, /* @__PURE__ */ React29.createElement(
4806
+ /* @__PURE__ */ React23.createElement("div", { className: "fixed inset-0 top-[76px] z-40" }, /* @__PURE__ */ React23.createElement(
5841
4807
  MobileAlbumViewer,
5842
4808
  {
5843
4809
  artworks: selectedCollection.pages,
@@ -5850,16 +4816,16 @@ function ShowMasterPiecesContent() {
5850
4816
  canGoPrev
5851
4817
  }
5852
4818
  ))
5853
- ) : /* @__PURE__ */ React29.createElement("div", { className: "max-w-7xl mx-auto p-3 sm:p-4 lg:p-6" }, /* @__PURE__ */ React29.createElement("div", { className: "space-y-6" }, /* @__PURE__ */ React29.createElement(Card, null, /* @__PURE__ */ React29.createElement(CardHeader, null, /* @__PURE__ */ React29.createElement(CardTitle, null, "\u5546\u54C1\u5206\u7C7B"), /* @__PURE__ */ React29.createElement(CardDescription, null, "\u9009\u62E9\u60A8\u611F\u5174\u8DA3\u7684\u5546\u54C1\u7C7B\u578B")), /* @__PURE__ */ React29.createElement(CardContent, null, /* @__PURE__ */ React29.createElement(Tabs, { value: selectedCategory, onValueChange: (value) => setSelectedCategory(value) }, /* @__PURE__ */ React29.createElement(TabsList, { className: "grid grid-cols-3 lg:grid-cols-9 h-auto p-1 bg-moonstone-900/10" }, categoryList.map(({ category, displayName }) => /* @__PURE__ */ React29.createElement(
4819
+ ) : /* @__PURE__ */ React23.createElement("div", { className: "max-w-7xl mx-auto p-3 sm:p-4 lg:p-6" }, /* @__PURE__ */ React23.createElement("div", { className: "space-y-6" }, /* @__PURE__ */ React23.createElement(Card, null, /* @__PURE__ */ React23.createElement(CardHeader, null, /* @__PURE__ */ React23.createElement(CardTitle, null, "\u5546\u54C1\u5206\u7C7B"), /* @__PURE__ */ React23.createElement(CardDescription, null, "\u9009\u62E9\u60A8\u611F\u5174\u8DA3\u7684\u5546\u54C1\u7C7B\u578B")), /* @__PURE__ */ React23.createElement(CardContent, null, /* @__PURE__ */ React23.createElement(Tabs, { value: selectedCategory, onValueChange: (value) => setSelectedCategory(value) }, /* @__PURE__ */ React23.createElement(TabsList, { className: "grid grid-cols-3 lg:grid-cols-9 h-auto p-1 bg-moonstone-900/10" }, categoryList.map(({ category, displayName }) => /* @__PURE__ */ React23.createElement(
5854
4820
  TabsTrigger,
5855
4821
  {
5856
4822
  key: category,
5857
4823
  value: category,
5858
4824
  className: "flex flex-col h-auto py-3 px-2 data-[state=active]:bg-gradient-to-r data-[state=active]:from-moonstone data-[state=active]:to-cerulean data-[state=active]:text-white data-[state=active]:shadow-lg transition-all duration-300"
5859
4825
  },
5860
- /* @__PURE__ */ React29.createElement("span", { className: "font-semibold text-xs" }, displayName),
5861
- /* @__PURE__ */ React29.createElement(Badge, { variant: "outline", className: "mt-1 text-xs border-moonstone/30 text-cerulean bg-moonstone-900/5" }, collections.filter((c) => c.category === category).length)
5862
- )))))), /* @__PURE__ */ React29.createElement("div", { className: "grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4 gap-4 sm:gap-6" }, filteredCollections.map((collection) => /* @__PURE__ */ React29.createElement(
4826
+ /* @__PURE__ */ React23.createElement("span", { className: "font-semibold text-xs" }, displayName),
4827
+ /* @__PURE__ */ React23.createElement(Badge, { variant: "outline", className: "mt-1 text-xs border-moonstone/30 text-cerulean bg-moonstone-900/5" }, collections.filter((c) => c.category === category).length)
4828
+ )))))), /* @__PURE__ */ React23.createElement("div", { className: "grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4 gap-4 sm:gap-6" }, filteredCollections.map((collection) => /* @__PURE__ */ React23.createElement(
5863
4829
  CollectionCard,
5864
4830
  {
5865
4831
  key: collection.id,
@@ -5867,7 +4833,7 @@ function ShowMasterPiecesContent() {
5867
4833
  userId,
5868
4834
  onSelect: selectCollection
5869
4835
  }
5870
- ))), filteredCollections.length === 0 && collections.length > 0 && /* @__PURE__ */ React29.createElement("div", { className: "text-center py-8 sm:py-12 px-4" }, /* @__PURE__ */ React29.createElement("div", { className: "text-prussian-blue-400 text-base sm:text-lg mb-2" }, "\u5F53\u524D\u5206\u7C7B\u6682\u65E0\u5185\u5BB9"), /* @__PURE__ */ React29.createElement("p", { className: "text-prussian-blue-500 text-xs sm:text-sm" }, "\u8BF7\u5C1D\u8BD5\u9009\u62E9\u5176\u4ED6\u5206\u7C7B\u67E5\u770B")))), /* @__PURE__ */ React29.createElement(
4836
+ ))), filteredCollections.length === 0 && collections.length > 0 && /* @__PURE__ */ React23.createElement("div", { className: "text-center py-8 sm:py-12 px-4" }, /* @__PURE__ */ React23.createElement("div", { className: "text-prussian-blue-400 text-base sm:text-lg mb-2" }, "\u5F53\u524D\u5206\u7C7B\u6682\u65E0\u5185\u5BB9"), /* @__PURE__ */ React23.createElement("p", { className: "text-prussian-blue-500 text-xs sm:text-sm" }, "\u8BF7\u5C1D\u8BD5\u9009\u62E9\u5176\u4ED6\u5206\u7C7B\u67E5\u770B")))), /* @__PURE__ */ React23.createElement(
5871
4837
  CartModal,
5872
4838
  {
5873
4839
  isOpen: cartModalOpen,
@@ -5875,7 +4841,7 @@ function ShowMasterPiecesContent() {
5875
4841
  title: "\u8D2D\u7269\u8F66",
5876
4842
  userId
5877
4843
  }
5878
- ), hasPopup && /* @__PURE__ */ React29.createElement(
4844
+ ), hasPopup && /* @__PURE__ */ React23.createElement(
5879
4845
  DeadlinePopupManager,
5880
4846
  {
5881
4847
  configs: popupConfigs,
@@ -5886,7 +4852,7 @@ function ShowMasterPiecesContent() {
5886
4852
  )));
5887
4853
  }
5888
4854
  function ShowMasterPieces(props = {}) {
5889
- return /* @__PURE__ */ React29.createElement(AuthProvider, null, /* @__PURE__ */ React29.createElement(ShowMasterPiecesContent, null));
4855
+ return /* @__PURE__ */ React23.createElement(AuthProvider, null, /* @__PURE__ */ React23.createElement(ShowMasterPiecesContent, null));
5890
4856
  }
5891
4857
 
5892
4858
  // src/showmasterpiece/ui/web/pages/config/page.tsx
@@ -5991,7 +4957,7 @@ function ConfigPageContent() {
5991
4957
  createdTime: "",
5992
4958
  theme: ""
5993
4959
  });
5994
- React29.useEffect(() => {
4960
+ React23.useEffect(() => {
5995
4961
  if (config) {
5996
4962
  setConfigForm({
5997
4963
  siteName: config.siteName,
@@ -6008,7 +4974,7 @@ function ConfigPageContent() {
6008
4974
  });
6009
4975
  }
6010
4976
  }, [config]);
6011
- React29.useEffect(() => {
4977
+ React23.useEffect(() => {
6012
4978
  setCategoryOptions(categories);
6013
4979
  }, [categories]);
6014
4980
  const handleHomeTabMove = (index, direction) => {
@@ -6115,7 +5081,7 @@ function ConfigPageContent() {
6115
5081
  return { ...prev, homeTabConfig: normalizeHomeTabConfig(updated) };
6116
5082
  });
6117
5083
  };
6118
- React29.useEffect(() => {
5084
+ React23.useEffect(() => {
6119
5085
  if (activeTab === "artworks" && collections.length > 0) {
6120
5086
  if (selectedCollection && !collections.find((c) => c.id === selectedCollection)) {
6121
5087
  console.log("\u26A0\uFE0F [\u914D\u7F6E\u9875\u9762] \u5F53\u524D\u9009\u62E9\u7684\u5546\u54C1\u5DF2\u4E0D\u5B58\u5728\uFF0C\u91CD\u7F6E\u9009\u62E9");
@@ -6141,7 +5107,7 @@ function ConfigPageContent() {
6141
5107
  }
6142
5108
  }
6143
5109
  }, [activeTab, collections, selectedCollection]);
6144
- React29.useEffect(() => {
5110
+ React23.useEffect(() => {
6145
5111
  if (activeTab !== "artworks") {
6146
5112
  if (showArtworkOrder || showArtworkForm || editingArtwork) {
6147
5113
  console.log("\u{1F504} [\u914D\u7F6E\u9875\u9762] \u79BB\u5F00\u5546\u54C1\u8BE6\u60C5\u56FE\u7BA1\u7406tab\uFF0C\u91CD\u7F6EUI\u72B6\u6001\u4F46\u4FDD\u7559\u7528\u6237\u9009\u62E9");
@@ -6293,12 +5259,12 @@ function ConfigPageContent() {
6293
5259
  setShowCollectionOrder(!showCollectionOrder);
6294
5260
  };
6295
5261
  if (loading) {
6296
- return /* @__PURE__ */ React29.createElement("div", { className: "min-h-screen bg-gradient-to-br from-slate-50 to-slate-200" }, /* @__PURE__ */ React29.createElement("div", { className: "flex flex-col items-center justify-center min-h-[50vh] gap-4" }, /* @__PURE__ */ React29.createElement("div", { className: "w-10 h-10 border-4 border-slate-200 border-t-blue-500 rounded-full animate-spin" }), /* @__PURE__ */ React29.createElement("p", { className: "text-slate-600" }, "\u52A0\u8F7D\u4E2D...")));
5262
+ return /* @__PURE__ */ React23.createElement("div", { className: "min-h-screen bg-gradient-to-br from-slate-50 to-slate-200" }, /* @__PURE__ */ React23.createElement("div", { className: "flex flex-col items-center justify-center min-h-[50vh] gap-4" }, /* @__PURE__ */ React23.createElement("div", { className: "w-10 h-10 border-4 border-slate-200 border-t-blue-500 rounded-full animate-spin" }), /* @__PURE__ */ React23.createElement("p", { className: "text-slate-600" }, "\u52A0\u8F7D\u4E2D...")));
6297
5263
  }
6298
5264
  if (error) {
6299
- return /* @__PURE__ */ React29.createElement("div", { className: "min-h-screen bg-background" }, /* @__PURE__ */ React29.createElement("div", { className: "flex flex-col items-center justify-center min-h-[50vh] gap-4 p-4" }, /* @__PURE__ */ React29.createElement("p", { className: "text-destructive text-lg" }, "\u52A0\u8F7D\u5931\u8D25\uFF1A", error), /* @__PURE__ */ React29.createElement(Button, { onClick: refreshData }, "\u91CD\u8BD5")));
5265
+ return /* @__PURE__ */ React23.createElement("div", { className: "min-h-screen bg-background" }, /* @__PURE__ */ React23.createElement("div", { className: "flex flex-col items-center justify-center min-h-[50vh] gap-4 p-4" }, /* @__PURE__ */ React23.createElement("p", { className: "text-destructive text-lg" }, "\u52A0\u8F7D\u5931\u8D25\uFF1A", error), /* @__PURE__ */ React23.createElement(Button, { onClick: refreshData }, "\u91CD\u8BD5")));
6300
5266
  }
6301
- return /* @__PURE__ */ React29.createElement("div", { className: "min-h-screen bg-background" }, /* @__PURE__ */ React29.createElement("div", { className: "border-b bg-background/95 backdrop-blur supports-[backdrop-filter]:bg-background/60" }, /* @__PURE__ */ React29.createElement("div", { className: "max-w-7xl mx-auto px-6 py-4" }, /* @__PURE__ */ React29.createElement("div", { className: "flex items-center gap-8" }, /* @__PURE__ */ React29.createElement(
5267
+ return /* @__PURE__ */ React23.createElement("div", { className: "min-h-screen bg-background" }, /* @__PURE__ */ React23.createElement("div", { className: "border-b bg-background/95 backdrop-blur supports-[backdrop-filter]:bg-background/60" }, /* @__PURE__ */ React23.createElement("div", { className: "max-w-7xl mx-auto px-6 py-4" }, /* @__PURE__ */ React23.createElement("div", { className: "flex items-center gap-8" }, /* @__PURE__ */ React23.createElement(
6302
5268
  Button,
6303
5269
  {
6304
5270
  variant: "ghost",
@@ -6306,26 +5272,26 @@ function ConfigPageContent() {
6306
5272
  onClick: () => window.history.back(),
6307
5273
  className: "gap-2"
6308
5274
  },
6309
- /* @__PURE__ */ React29.createElement(ArrowLeft, { size: 20 }),
5275
+ /* @__PURE__ */ React23.createElement(ArrowLeft, { size: 20 }),
6310
5276
  "\u8FD4\u56DE"
6311
- ), /* @__PURE__ */ React29.createElement("div", null, /* @__PURE__ */ React29.createElement("h1", { className: "text-2xl font-bold" }, "\u5546\u54C1\u5C55\u89C8\u914D\u7F6E\u7BA1\u7406"), /* @__PURE__ */ React29.createElement("p", { className: "text-sm text-muted-foreground" }, "\u7BA1\u7406\u5C55\u89C8\u7684\u6240\u6709\u914D\u7F6E\u3001\u5546\u54C1\u548C\u5546\u54C1\u8BE6\u60C5\u56FE"))))), /* @__PURE__ */ React29.createElement("div", { className: "max-w-7xl mx-auto p-6" }, /* @__PURE__ */ React29.createElement(Tabs, { value: activeTab, onValueChange: (value) => setActiveTab(value), className: "space-y-6" }, /* @__PURE__ */ React29.createElement(TabsList, { className: "grid w-full grid-cols-8" }, /* @__PURE__ */ React29.createElement(TabsTrigger, { value: "general", className: "flex items-center gap-2" }, /* @__PURE__ */ React29.createElement(Settings, { size: 16 }), "\u57FA\u7840\u914D\u7F6E"), /* @__PURE__ */ React29.createElement(TabsTrigger, { value: "homeTabs", className: "flex items-center gap-2" }, /* @__PURE__ */ React29.createElement(Settings, { size: 16 }), "\u9996\u9875Tab\u914D\u7F6E"), /* @__PURE__ */ React29.createElement(TabsTrigger, { value: "collections", className: "flex items-center gap-2" }, /* @__PURE__ */ React29.createElement(Database, { size: 16 }), "\u5546\u54C1\u7BA1\u7406"), /* @__PURE__ */ React29.createElement(TabsTrigger, { value: "artworks", className: "flex items-center gap-2" }, /* @__PURE__ */ React29.createElement(Image, { size: 16 }), "\u5546\u54C1\u8BE6\u60C5\u7BA1\u7406"), /* @__PURE__ */ React29.createElement(TabsTrigger, { value: "bookings", className: "flex items-center gap-2" }, /* @__PURE__ */ React29.createElement(Calendar, { size: 16 }), "\u9884\u8BA2\u7BA1\u7406"), /* @__PURE__ */ React29.createElement(TabsTrigger, { value: "popup", className: "flex items-center gap-2" }, /* @__PURE__ */ React29.createElement(Bell, { size: 16 }), "\u5F39\u7A97\u914D\u7F6E"), /* @__PURE__ */ React29.createElement(TabsTrigger, { value: "system", className: "flex items-center gap-2" }, /* @__PURE__ */ React29.createElement(Cog, { size: 16 }), "\u7CFB\u7EDF\u914D\u7F6E")), /* @__PURE__ */ React29.createElement(TabsContent, { value: "general", className: "space-y-6" }, /* @__PURE__ */ React29.createElement(Card, null, /* @__PURE__ */ React29.createElement(CardHeader, null, /* @__PURE__ */ React29.createElement("div", { className: "flex items-center justify-between" }, /* @__PURE__ */ React29.createElement("div", null, /* @__PURE__ */ React29.createElement(CardTitle, null, "\u57FA\u7840\u914D\u7F6E"), /* @__PURE__ */ React29.createElement(CardDescription, null, "\u914D\u7F6E\u7F51\u7AD9\u7684\u57FA\u672C\u4FE1\u606F\u548C\u663E\u793A\u9009\u9879")), /* @__PURE__ */ React29.createElement("div", { className: "flex gap-3" }, /* @__PURE__ */ React29.createElement(
5277
+ ), /* @__PURE__ */ React23.createElement("div", null, /* @__PURE__ */ React23.createElement("h1", { className: "text-2xl font-bold" }, "\u5546\u54C1\u5C55\u89C8\u914D\u7F6E\u7BA1\u7406"), /* @__PURE__ */ React23.createElement("p", { className: "text-sm text-muted-foreground" }, "\u7BA1\u7406\u5C55\u89C8\u7684\u6240\u6709\u914D\u7F6E\u3001\u5546\u54C1\u548C\u5546\u54C1\u8BE6\u60C5\u56FE"))))), /* @__PURE__ */ React23.createElement("div", { className: "max-w-7xl mx-auto p-6" }, /* @__PURE__ */ React23.createElement(Tabs, { value: activeTab, onValueChange: (value) => setActiveTab(value), className: "space-y-6" }, /* @__PURE__ */ React23.createElement(TabsList, { className: "grid w-full grid-cols-8" }, /* @__PURE__ */ React23.createElement(TabsTrigger, { value: "general", className: "flex items-center gap-2" }, /* @__PURE__ */ React23.createElement(Settings, { size: 16 }), "\u57FA\u7840\u914D\u7F6E"), /* @__PURE__ */ React23.createElement(TabsTrigger, { value: "homeTabs", className: "flex items-center gap-2" }, /* @__PURE__ */ React23.createElement(Settings, { size: 16 }), "\u9996\u9875Tab\u914D\u7F6E"), /* @__PURE__ */ React23.createElement(TabsTrigger, { value: "collections", className: "flex items-center gap-2" }, /* @__PURE__ */ React23.createElement(Database, { size: 16 }), "\u5546\u54C1\u7BA1\u7406"), /* @__PURE__ */ React23.createElement(TabsTrigger, { value: "artworks", className: "flex items-center gap-2" }, /* @__PURE__ */ React23.createElement(Image, { size: 16 }), "\u5546\u54C1\u8BE6\u60C5\u7BA1\u7406"), /* @__PURE__ */ React23.createElement(TabsTrigger, { value: "bookings", className: "flex items-center gap-2" }, /* @__PURE__ */ React23.createElement(Calendar, { size: 16 }), "\u9884\u8BA2\u7BA1\u7406"), /* @__PURE__ */ React23.createElement(TabsTrigger, { value: "popup", className: "flex items-center gap-2" }, /* @__PURE__ */ React23.createElement(Bell, { size: 16 }), "\u5F39\u7A97\u914D\u7F6E"), /* @__PURE__ */ React23.createElement(TabsTrigger, { value: "system", className: "flex items-center gap-2" }, /* @__PURE__ */ React23.createElement(Cog, { size: 16 }), "\u7CFB\u7EDF\u914D\u7F6E")), /* @__PURE__ */ React23.createElement(TabsContent, { value: "general", className: "space-y-6" }, /* @__PURE__ */ React23.createElement(Card, null, /* @__PURE__ */ React23.createElement(CardHeader, null, /* @__PURE__ */ React23.createElement("div", { className: "flex items-center justify-between" }, /* @__PURE__ */ React23.createElement("div", null, /* @__PURE__ */ React23.createElement(CardTitle, null, "\u57FA\u7840\u914D\u7F6E"), /* @__PURE__ */ React23.createElement(CardDescription, null, "\u914D\u7F6E\u7F51\u7AD9\u7684\u57FA\u672C\u4FE1\u606F\u548C\u663E\u793A\u9009\u9879")), /* @__PURE__ */ React23.createElement("div", { className: "flex gap-3" }, /* @__PURE__ */ React23.createElement(
6312
5278
  Button,
6313
5279
  {
6314
5280
  variant: "outline",
6315
5281
  onClick: handleResetConfig,
6316
5282
  className: "gap-2"
6317
5283
  },
6318
- /* @__PURE__ */ React29.createElement(RotateCcw, { size: 16 }),
5284
+ /* @__PURE__ */ React23.createElement(RotateCcw, { size: 16 }),
6319
5285
  "\u91CD\u7F6E\u9ED8\u8BA4"
6320
- ), /* @__PURE__ */ React29.createElement(
5286
+ ), /* @__PURE__ */ React23.createElement(
6321
5287
  Button,
6322
5288
  {
6323
5289
  onClick: handleSaveConfig,
6324
5290
  className: "gap-2"
6325
5291
  },
6326
- /* @__PURE__ */ React29.createElement(Save, { size: 16 }),
5292
+ /* @__PURE__ */ React23.createElement(Save, { size: 16 }),
6327
5293
  "\u4FDD\u5B58\u914D\u7F6E"
6328
- )))), /* @__PURE__ */ React29.createElement(CardContent, null, /* @__PURE__ */ React29.createElement("div", { className: "grid grid-cols-1 lg:grid-cols-2 gap-6" }, /* @__PURE__ */ React29.createElement("div", { className: "space-y-2" }, /* @__PURE__ */ React29.createElement(Label, { htmlFor: "siteName" }, "\u7F51\u7AD9\u540D\u79F0"), /* @__PURE__ */ React29.createElement(
5294
+ )))), /* @__PURE__ */ React23.createElement(CardContent, null, /* @__PURE__ */ React23.createElement("div", { className: "grid grid-cols-1 lg:grid-cols-2 gap-6" }, /* @__PURE__ */ React23.createElement("div", { className: "space-y-2" }, /* @__PURE__ */ React23.createElement(Label, { htmlFor: "siteName" }, "\u7F51\u7AD9\u540D\u79F0"), /* @__PURE__ */ React23.createElement(
6329
5295
  Input,
6330
5296
  {
6331
5297
  id: "siteName",
@@ -6334,7 +5300,7 @@ function ConfigPageContent() {
6334
5300
  onChange: (e) => setConfigForm((prev) => ({ ...prev, siteName: e.target.value })),
6335
5301
  placeholder: "\u8F93\u5165\u7F51\u7AD9\u540D\u79F0"
6336
5302
  }
6337
- )), /* @__PURE__ */ React29.createElement("div", { className: "space-y-2" }, /* @__PURE__ */ React29.createElement(Label, { htmlFor: "siteDescription" }, "\u7F51\u7AD9\u63CF\u8FF0"), /* @__PURE__ */ React29.createElement(
5303
+ )), /* @__PURE__ */ React23.createElement("div", { className: "space-y-2" }, /* @__PURE__ */ React23.createElement(Label, { htmlFor: "siteDescription" }, "\u7F51\u7AD9\u63CF\u8FF0"), /* @__PURE__ */ React23.createElement(
6338
5304
  Textarea,
6339
5305
  {
6340
5306
  id: "siteDescription",
@@ -6343,7 +5309,7 @@ function ConfigPageContent() {
6343
5309
  placeholder: "\u8F93\u5165\u7F51\u7AD9\u63CF\u8FF0",
6344
5310
  rows: 2
6345
5311
  }
6346
- )), /* @__PURE__ */ React29.createElement("div", { className: "space-y-2" }, /* @__PURE__ */ React29.createElement(Label, { htmlFor: "heroTitle" }, "\u4E3B\u6807\u9898"), /* @__PURE__ */ React29.createElement(
5312
+ )), /* @__PURE__ */ React23.createElement("div", { className: "space-y-2" }, /* @__PURE__ */ React23.createElement(Label, { htmlFor: "heroTitle" }, "\u4E3B\u6807\u9898"), /* @__PURE__ */ React23.createElement(
6347
5313
  Input,
6348
5314
  {
6349
5315
  id: "heroTitle",
@@ -6352,7 +5318,7 @@ function ConfigPageContent() {
6352
5318
  onChange: (e) => setConfigForm((prev) => ({ ...prev, heroTitle: e.target.value })),
6353
5319
  placeholder: "\u8F93\u5165\u4E3B\u6807\u9898"
6354
5320
  }
6355
- )), /* @__PURE__ */ React29.createElement("div", { className: "space-y-2" }, /* @__PURE__ */ React29.createElement(Label, { htmlFor: "heroSubtitle" }, "\u526F\u6807\u9898"), /* @__PURE__ */ React29.createElement(
5321
+ )), /* @__PURE__ */ React23.createElement("div", { className: "space-y-2" }, /* @__PURE__ */ React23.createElement(Label, { htmlFor: "heroSubtitle" }, "\u526F\u6807\u9898"), /* @__PURE__ */ React23.createElement(
6356
5322
  Textarea,
6357
5323
  {
6358
5324
  id: "heroSubtitle",
@@ -6361,7 +5327,7 @@ function ConfigPageContent() {
6361
5327
  placeholder: "\u8F93\u5165\u526F\u6807\u9898",
6362
5328
  rows: 2
6363
5329
  }
6364
- )), /* @__PURE__ */ React29.createElement("div", { className: "space-y-2" }, /* @__PURE__ */ React29.createElement(Label, { htmlFor: "maxCollections" }, "\u6BCF\u9875\u663E\u793A\u5546\u54C1\u6570\u91CF"), /* @__PURE__ */ React29.createElement(
5330
+ )), /* @__PURE__ */ React23.createElement("div", { className: "space-y-2" }, /* @__PURE__ */ React23.createElement(Label, { htmlFor: "maxCollections" }, "\u6BCF\u9875\u663E\u793A\u5546\u54C1\u6570\u91CF"), /* @__PURE__ */ React23.createElement(
6365
5331
  Input,
6366
5332
  {
6367
5333
  id: "maxCollections",
@@ -6371,23 +5337,23 @@ function ConfigPageContent() {
6371
5337
  min: "1",
6372
5338
  max: "50"
6373
5339
  }
6374
- )), /* @__PURE__ */ React29.createElement("div", { className: "space-y-2" }, /* @__PURE__ */ React29.createElement(Label, { htmlFor: "theme" }, "\u4E3B\u9898"), /* @__PURE__ */ React29.createElement(
5340
+ )), /* @__PURE__ */ React23.createElement("div", { className: "space-y-2" }, /* @__PURE__ */ React23.createElement(Label, { htmlFor: "theme" }, "\u4E3B\u9898"), /* @__PURE__ */ React23.createElement(
6375
5341
  Select,
6376
5342
  {
6377
5343
  value: configForm.theme,
6378
5344
  onValueChange: (value) => setConfigForm((prev) => ({ ...prev, theme: value }))
6379
5345
  },
6380
- /* @__PURE__ */ React29.createElement(SelectTrigger, null, /* @__PURE__ */ React29.createElement(SelectValue, { placeholder: "\u9009\u62E9\u4E3B\u9898" })),
6381
- /* @__PURE__ */ React29.createElement(SelectContent, null, /* @__PURE__ */ React29.createElement(SelectItem, { value: "light" }, "\u6D45\u8272"), /* @__PURE__ */ React29.createElement(SelectItem, { value: "dark" }, "\u6DF1\u8272"), /* @__PURE__ */ React29.createElement(SelectItem, { value: "auto" }, "\u81EA\u52A8"))
6382
- )), /* @__PURE__ */ React29.createElement("div", { className: "space-y-2" }, /* @__PURE__ */ React29.createElement(Label, { htmlFor: "language" }, "\u8BED\u8A00"), /* @__PURE__ */ React29.createElement(
5346
+ /* @__PURE__ */ React23.createElement(SelectTrigger, null, /* @__PURE__ */ React23.createElement(SelectValue, { placeholder: "\u9009\u62E9\u4E3B\u9898" })),
5347
+ /* @__PURE__ */ React23.createElement(SelectContent, null, /* @__PURE__ */ React23.createElement(SelectItem, { value: "light" }, "\u6D45\u8272"), /* @__PURE__ */ React23.createElement(SelectItem, { value: "dark" }, "\u6DF1\u8272"), /* @__PURE__ */ React23.createElement(SelectItem, { value: "auto" }, "\u81EA\u52A8"))
5348
+ )), /* @__PURE__ */ React23.createElement("div", { className: "space-y-2" }, /* @__PURE__ */ React23.createElement(Label, { htmlFor: "language" }, "\u8BED\u8A00"), /* @__PURE__ */ React23.createElement(
6383
5349
  Select,
6384
5350
  {
6385
5351
  value: configForm.language,
6386
5352
  onValueChange: (value) => setConfigForm((prev) => ({ ...prev, language: value }))
6387
5353
  },
6388
- /* @__PURE__ */ React29.createElement(SelectTrigger, null, /* @__PURE__ */ React29.createElement(SelectValue, { placeholder: "\u9009\u62E9\u8BED\u8A00" })),
6389
- /* @__PURE__ */ React29.createElement(SelectContent, null, /* @__PURE__ */ React29.createElement(SelectItem, { value: "zh" }, "\u4E2D\u6587"), /* @__PURE__ */ React29.createElement(SelectItem, { value: "en" }, "English"))
6390
- )), /* @__PURE__ */ React29.createElement("div", { className: "flex items-center space-x-2" }, /* @__PURE__ */ React29.createElement(
5354
+ /* @__PURE__ */ React23.createElement(SelectTrigger, null, /* @__PURE__ */ React23.createElement(SelectValue, { placeholder: "\u9009\u62E9\u8BED\u8A00" })),
5355
+ /* @__PURE__ */ React23.createElement(SelectContent, null, /* @__PURE__ */ React23.createElement(SelectItem, { value: "zh" }, "\u4E2D\u6587"), /* @__PURE__ */ React23.createElement(SelectItem, { value: "en" }, "English"))
5356
+ )), /* @__PURE__ */ React23.createElement("div", { className: "flex items-center space-x-2" }, /* @__PURE__ */ React23.createElement(
6391
5357
  "input",
6392
5358
  {
6393
5359
  id: "enableSearch",
@@ -6396,7 +5362,7 @@ function ConfigPageContent() {
6396
5362
  onChange: (e) => setConfigForm((prev) => ({ ...prev, enableSearch: e.target.checked })),
6397
5363
  className: "h-4 w-4 rounded border-gray-300"
6398
5364
  }
6399
- ), /* @__PURE__ */ React29.createElement(Label, { htmlFor: "enableSearch", className: "text-sm font-medium" }, "\u542F\u7528\u641C\u7D22\u529F\u80FD")), /* @__PURE__ */ React29.createElement("div", { className: "flex items-center space-x-2" }, /* @__PURE__ */ React29.createElement(
5365
+ ), /* @__PURE__ */ React23.createElement(Label, { htmlFor: "enableSearch", className: "text-sm font-medium" }, "\u542F\u7528\u641C\u7D22\u529F\u80FD")), /* @__PURE__ */ React23.createElement("div", { className: "flex items-center space-x-2" }, /* @__PURE__ */ React23.createElement(
6400
5366
  "input",
6401
5367
  {
6402
5368
  id: "enableCategories",
@@ -6405,28 +5371,28 @@ function ConfigPageContent() {
6405
5371
  onChange: (e) => setConfigForm((prev) => ({ ...prev, enableCategories: e.target.checked })),
6406
5372
  className: "h-4 w-4 rounded border-gray-300"
6407
5373
  }
6408
- ), /* @__PURE__ */ React29.createElement(Label, { htmlFor: "enableCategories", className: "text-sm font-medium" }, "\u542F\u7528\u5206\u7C7B\u529F\u80FD")))))), /* @__PURE__ */ React29.createElement(TabsContent, { value: "homeTabs", className: "space-y-6" }, /* @__PURE__ */ React29.createElement(Card, null, /* @__PURE__ */ React29.createElement(CardHeader, null, /* @__PURE__ */ React29.createElement("div", { className: "flex items-center justify-between" }, /* @__PURE__ */ React29.createElement("div", null, /* @__PURE__ */ React29.createElement(CardTitle, null, "\u9996\u9875\u5206\u7C7BTab\u914D\u7F6E"), /* @__PURE__ */ React29.createElement(CardDescription, null, "\u7BA1\u7406\u9996\u9875\u5206\u7C7BTab\u7684\u663E\u793A\u987A\u5E8F\u4E0E\u663E\u793A/\u9690\u85CF")), /* @__PURE__ */ React29.createElement("div", { className: "flex gap-3" }, /* @__PURE__ */ React29.createElement(Button, { variant: "outline", onClick: () => handleSetAllHomeTabsVisible(true) }, "\u5168\u90E8\u663E\u793A"), /* @__PURE__ */ React29.createElement(Button, { variant: "outline", onClick: () => handleSetAllHomeTabsVisible(false) }, "\u5168\u90E8\u9690\u85CF"), /* @__PURE__ */ React29.createElement(Button, { variant: "outline", onClick: handleResetHomeTabs, className: "gap-2" }, /* @__PURE__ */ React29.createElement(RotateCcw, { size: 16 }), "\u91CD\u7F6E\u987A\u5E8F"), /* @__PURE__ */ React29.createElement(Button, { onClick: handleSaveConfig, className: "gap-2" }, /* @__PURE__ */ React29.createElement(Save, { size: 16 }), "\u4FDD\u5B58\u914D\u7F6E")))), /* @__PURE__ */ React29.createElement(CardContent, null, /* @__PURE__ */ React29.createElement("div", { className: "flex flex-col lg:flex-row lg:items-end gap-3 mb-4" }, /* @__PURE__ */ React29.createElement("div", { className: "flex-1 space-y-2" }, /* @__PURE__ */ React29.createElement(Label, null, "\u5206\u7C7B\u540D\u79F0"), /* @__PURE__ */ React29.createElement(
5374
+ ), /* @__PURE__ */ React23.createElement(Label, { htmlFor: "enableCategories", className: "text-sm font-medium" }, "\u542F\u7528\u5206\u7C7B\u529F\u80FD")))))), /* @__PURE__ */ React23.createElement(TabsContent, { value: "homeTabs", className: "space-y-6" }, /* @__PURE__ */ React23.createElement(Card, null, /* @__PURE__ */ React23.createElement(CardHeader, null, /* @__PURE__ */ React23.createElement("div", { className: "flex items-center justify-between" }, /* @__PURE__ */ React23.createElement("div", null, /* @__PURE__ */ React23.createElement(CardTitle, null, "\u9996\u9875\u5206\u7C7BTab\u914D\u7F6E"), /* @__PURE__ */ React23.createElement(CardDescription, null, "\u7BA1\u7406\u9996\u9875\u5206\u7C7BTab\u7684\u663E\u793A\u987A\u5E8F\u4E0E\u663E\u793A/\u9690\u85CF")), /* @__PURE__ */ React23.createElement("div", { className: "flex gap-3" }, /* @__PURE__ */ React23.createElement(Button, { variant: "outline", onClick: () => handleSetAllHomeTabsVisible(true) }, "\u5168\u90E8\u663E\u793A"), /* @__PURE__ */ React23.createElement(Button, { variant: "outline", onClick: () => handleSetAllHomeTabsVisible(false) }, "\u5168\u90E8\u9690\u85CF"), /* @__PURE__ */ React23.createElement(Button, { variant: "outline", onClick: handleResetHomeTabs, className: "gap-2" }, /* @__PURE__ */ React23.createElement(RotateCcw, { size: 16 }), "\u91CD\u7F6E\u987A\u5E8F"), /* @__PURE__ */ React23.createElement(Button, { onClick: handleSaveConfig, className: "gap-2" }, /* @__PURE__ */ React23.createElement(Save, { size: 16 }), "\u4FDD\u5B58\u914D\u7F6E")))), /* @__PURE__ */ React23.createElement(CardContent, null, /* @__PURE__ */ React23.createElement("div", { className: "flex flex-col lg:flex-row lg:items-end gap-3 mb-4" }, /* @__PURE__ */ React23.createElement("div", { className: "flex-1 space-y-2" }, /* @__PURE__ */ React23.createElement(Label, null, "\u5206\u7C7B\u540D\u79F0"), /* @__PURE__ */ React23.createElement(
6409
5375
  Input,
6410
5376
  {
6411
5377
  value: newHomeTabCategory,
6412
5378
  onChange: (e) => setNewHomeTabCategory(e.target.value),
6413
5379
  placeholder: "\u8F93\u5165\u5206\u7C7B\u540D\u79F0"
6414
5380
  }
6415
- ), /* @__PURE__ */ React29.createElement(Label, null, "\u5C55\u793A\u6587\u6848"), /* @__PURE__ */ React29.createElement(
5381
+ ), /* @__PURE__ */ React23.createElement(Label, null, "\u5C55\u793A\u6587\u6848"), /* @__PURE__ */ React23.createElement(
6416
5382
  Input,
6417
5383
  {
6418
5384
  value: newHomeTabDescription,
6419
5385
  onChange: (e) => setNewHomeTabDescription(e.target.value),
6420
5386
  placeholder: "\u8F93\u5165\u5C55\u793A\u6587\u6848"
6421
5387
  }
6422
- )), /* @__PURE__ */ React29.createElement(Button, { onClick: handleAddHomeTab, className: "gap-2" }, /* @__PURE__ */ React29.createElement(Plus, { size: 16 }), "\u65B0\u589ETab")), /* @__PURE__ */ React29.createElement("div", { className: "space-y-2" }, configForm.homeTabConfig.map((item, index) => /* @__PURE__ */ React29.createElement(
5388
+ )), /* @__PURE__ */ React23.createElement(Button, { onClick: handleAddHomeTab, className: "gap-2" }, /* @__PURE__ */ React23.createElement(Plus, { size: 16 }), "\u65B0\u589ETab")), /* @__PURE__ */ React23.createElement("div", { className: "space-y-2" }, configForm.homeTabConfig.map((item, index) => /* @__PURE__ */ React23.createElement(
6423
5389
  "div",
6424
5390
  {
6425
5391
  key: item.category,
6426
5392
  className: "flex flex-col sm:flex-row sm:items-center sm:justify-between gap-3 p-3 border border-slate-200 rounded-lg bg-white"
6427
5393
  },
6428
- /* @__PURE__ */ React29.createElement("div", { className: "flex items-center gap-3" }, /* @__PURE__ */ React29.createElement("div", { className: "flex flex-col" }, /* @__PURE__ */ React29.createElement("span", { className: "text-sm font-semibold text-slate-800" }, item.description || item.name || getCategoryDisplayName(item.category)), item.description ? /* @__PURE__ */ React29.createElement("span", { className: "text-xs text-slate-500" }, item.name || item.category) : null), !item.visible && /* @__PURE__ */ React29.createElement(Badge, { variant: "secondary", className: "text-xs" }, "\u5DF2\u9690\u85CF")),
6429
- /* @__PURE__ */ React29.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ React29.createElement(
5394
+ /* @__PURE__ */ React23.createElement("div", { className: "flex items-center gap-3" }, /* @__PURE__ */ React23.createElement("div", { className: "flex flex-col" }, /* @__PURE__ */ React23.createElement("span", { className: "text-sm font-semibold text-slate-800" }, item.description || item.name || getCategoryDisplayName(item.category)), item.description ? /* @__PURE__ */ React23.createElement("span", { className: "text-xs text-slate-500" }, item.name || item.category) : null), !item.visible && /* @__PURE__ */ React23.createElement(Badge, { variant: "secondary", className: "text-xs" }, "\u5DF2\u9690\u85CF")),
5395
+ /* @__PURE__ */ React23.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ React23.createElement(
6430
5396
  Button,
6431
5397
  {
6432
5398
  variant: "outline",
@@ -6435,7 +5401,7 @@ function ConfigPageContent() {
6435
5401
  disabled: index === 0
6436
5402
  },
6437
5403
  "\u4E0A\u79FB"
6438
- ), /* @__PURE__ */ React29.createElement(
5404
+ ), /* @__PURE__ */ React23.createElement(
6439
5405
  Button,
6440
5406
  {
6441
5407
  variant: "outline",
@@ -6444,7 +5410,7 @@ function ConfigPageContent() {
6444
5410
  disabled: index === configForm.homeTabConfig.length - 1
6445
5411
  },
6446
5412
  "\u4E0B\u79FB"
6447
- ), /* @__PURE__ */ React29.createElement(
5413
+ ), /* @__PURE__ */ React23.createElement(
6448
5414
  Button,
6449
5415
  {
6450
5416
  variant: item.visible ? "secondary" : "default",
@@ -6452,7 +5418,7 @@ function ConfigPageContent() {
6452
5418
  onClick: () => handleHomeTabToggle(item.category)
6453
5419
  },
6454
5420
  item.visible ? "\u9690\u85CF" : "\u663E\u793A"
6455
- ), /* @__PURE__ */ React29.createElement(
5421
+ ), /* @__PURE__ */ React23.createElement(
6456
5422
  Button,
6457
5423
  {
6458
5424
  variant: "outline",
@@ -6462,7 +5428,7 @@ function ConfigPageContent() {
6462
5428
  },
6463
5429
  "\u5220\u9664"
6464
5430
  ))
6465
- )))))), /* @__PURE__ */ React29.createElement(TabsContent, { value: "collections", className: "space-y-6" }, /* @__PURE__ */ React29.createElement(Card, null, /* @__PURE__ */ React29.createElement(CardHeader, null, /* @__PURE__ */ React29.createElement("div", { className: "flex items-center justify-between" }, /* @__PURE__ */ React29.createElement("div", null, /* @__PURE__ */ React29.createElement(CardTitle, null, "\u5546\u54C1\u7BA1\u7406"), /* @__PURE__ */ React29.createElement(CardDescription, null, "\u7BA1\u7406\u5546\u54C1")), /* @__PURE__ */ React29.createElement("div", { className: "flex gap-3" }, /* @__PURE__ */ React29.createElement(
5431
+ )))))), /* @__PURE__ */ React23.createElement(TabsContent, { value: "collections", className: "space-y-6" }, /* @__PURE__ */ React23.createElement(Card, null, /* @__PURE__ */ React23.createElement(CardHeader, null, /* @__PURE__ */ React23.createElement("div", { className: "flex items-center justify-between" }, /* @__PURE__ */ React23.createElement("div", null, /* @__PURE__ */ React23.createElement(CardTitle, null, "\u5546\u54C1\u7BA1\u7406"), /* @__PURE__ */ React23.createElement(CardDescription, null, "\u7BA1\u7406\u5546\u54C1")), /* @__PURE__ */ React23.createElement("div", { className: "flex gap-3" }, /* @__PURE__ */ React23.createElement(
6466
5432
  Button,
6467
5433
  {
6468
5434
  onClick: () => {
@@ -6481,18 +5447,18 @@ function ConfigPageContent() {
6481
5447
  },
6482
5448
  className: "gap-2"
6483
5449
  },
6484
- /* @__PURE__ */ React29.createElement(Plus, { size: 16 }),
5450
+ /* @__PURE__ */ React23.createElement(Plus, { size: 16 }),
6485
5451
  "\u6DFB\u52A0\u5546\u54C1"
6486
- ), /* @__PURE__ */ React29.createElement(
5452
+ ), /* @__PURE__ */ React23.createElement(
6487
5453
  Button,
6488
5454
  {
6489
5455
  variant: "outline",
6490
5456
  onClick: () => handleToggleCollectionOrder(),
6491
5457
  className: "gap-2"
6492
5458
  },
6493
- /* @__PURE__ */ React29.createElement(ArrowUpDown, { size: 16 }),
5459
+ /* @__PURE__ */ React23.createElement(ArrowUpDown, { size: 16 }),
6494
5460
  showCollectionOrder ? "\u5173\u95ED\u6392\u5E8F" : "\u5546\u54C1\u6392\u5E8F"
6495
- )))), /* @__PURE__ */ React29.createElement(CardContent, null, showCollectionOrder && /* @__PURE__ */ React29.createElement("div", { className: "mb-6 p-6 bg-white rounded-lg shadow-sm border border-slate-200" }, /* @__PURE__ */ React29.createElement("div", { className: "mb-4" }, /* @__PURE__ */ React29.createElement("h3", { className: "text-xl font-semibold text-slate-800 mb-2" }, "\u5546\u54C1\u6392\u5E8F\u7BA1\u7406"), /* @__PURE__ */ React29.createElement("p", { className: "text-slate-600" }, "\u62D6\u62FD\u6216\u4F7F\u7528\u6309\u94AE\u8C03\u6574\u5546\u54C1\u5728\u524D\u53F0\u7684\u663E\u793A\u987A\u5E8F")), /* @__PURE__ */ React29.createElement(
5461
+ )))), /* @__PURE__ */ React23.createElement(CardContent, null, showCollectionOrder && /* @__PURE__ */ React23.createElement("div", { className: "mb-6 p-6 bg-white rounded-lg shadow-sm border border-slate-200" }, /* @__PURE__ */ React23.createElement("div", { className: "mb-4" }, /* @__PURE__ */ React23.createElement("h3", { className: "text-xl font-semibold text-slate-800 mb-2" }, "\u5546\u54C1\u6392\u5E8F\u7BA1\u7406"), /* @__PURE__ */ React23.createElement("p", { className: "text-slate-600" }, "\u62D6\u62FD\u6216\u4F7F\u7528\u6309\u94AE\u8C03\u6574\u5546\u54C1\u5728\u524D\u53F0\u7684\u663E\u793A\u987A\u5E8F")), /* @__PURE__ */ React23.createElement(
6496
5462
  CollectionOrderManagerV2,
6497
5463
  {
6498
5464
  moveCollectionUp: moveCollectionUp2,
@@ -6502,22 +5468,22 @@ function ConfigPageContent() {
6502
5468
  console.log("\u{1F504} [\u914D\u7F6E\u9875\u9762] \u5546\u54C1\u987A\u5E8F\u5DF2\u66F4\u65B0\uFF08\u6392\u5E8F\u7EC4\u4EF6\u5185\u90E8\u5DF2\u5904\u7406\u6570\u636E\u66F4\u65B0\uFF09");
6503
5469
  }
6504
5470
  }
6505
- )), !showCollectionOrder && /* @__PURE__ */ React29.createElement("div", null, /* @__PURE__ */ React29.createElement("div", { className: "grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6" }, collections.map((collection) => /* @__PURE__ */ React29.createElement("div", { key: collection.id, className: "bg-white rounded-lg shadow-sm border border-slate-200 overflow-hidden hover:shadow-md transition-shadow" }, /* @__PURE__ */ React29.createElement("div", { className: "h-48 bg-slate-100 overflow-hidden flex items-center justify-center" }, collection.coverImage ? /* @__PURE__ */ React29.createElement(
5471
+ )), !showCollectionOrder && /* @__PURE__ */ React23.createElement("div", null, /* @__PURE__ */ React23.createElement("div", { className: "grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6" }, collections.map((collection) => /* @__PURE__ */ React23.createElement("div", { key: collection.id, className: "bg-white rounded-lg shadow-sm border border-slate-200 overflow-hidden hover:shadow-md transition-shadow" }, /* @__PURE__ */ React23.createElement("div", { className: "h-48 bg-slate-100 overflow-hidden flex items-center justify-center" }, collection.coverImage ? /* @__PURE__ */ React23.createElement(
6506
5472
  "img",
6507
5473
  {
6508
5474
  src: collection.coverImage,
6509
5475
  alt: collection.title,
6510
5476
  className: "w-full h-full object-cover"
6511
5477
  }
6512
- ) : /* @__PURE__ */ React29.createElement("div", { className: "text-slate-400 text-sm" }, "\u6682\u65E0\u5C01\u9762")), /* @__PURE__ */ React29.createElement("div", { className: "p-4" }, /* @__PURE__ */ React29.createElement("h3", { className: "text-lg font-semibold text-slate-800 mb-2" }, collection.title), /* @__PURE__ */ React29.createElement("p", { className: "text-slate-600 text-sm mb-1" }, "\u7F16\u53F7\uFF1A", collection.number), /* @__PURE__ */ React29.createElement("p", { className: "text-slate-600 text-sm mb-1" }, "\u5206\u7C7B\uFF1A", collection.category.displayName), /* @__PURE__ */ React29.createElement("p", { className: "text-slate-600 text-sm mb-1" }, "\u4EF7\u683C\uFF1A", collection.price ? `\xA5${collection.price}` : "\u514D\u8D39"), /* @__PURE__ */ React29.createElement("p", { className: "text-slate-600 text-sm mb-1" }, "\u5546\u54C1\u8BE6\u60C5\u56FE\u6570\u91CF\uFF1A", collection.pages.length), /* @__PURE__ */ React29.createElement("p", { className: "text-slate-600 text-sm mb-3" }, "\u72B6\u6001\uFF1A", collection.isPublished ? "\u5DF2\u53D1\u5E03" : "\u8349\u7A3F"), /* @__PURE__ */ React29.createElement("div", { className: "flex gap-2" }, /* @__PURE__ */ React29.createElement(
5478
+ ) : /* @__PURE__ */ React23.createElement("div", { className: "text-slate-400 text-sm" }, "\u6682\u65E0\u5C01\u9762")), /* @__PURE__ */ React23.createElement("div", { className: "p-4" }, /* @__PURE__ */ React23.createElement("h3", { className: "text-lg font-semibold text-slate-800 mb-2" }, collection.title), /* @__PURE__ */ React23.createElement("p", { className: "text-slate-600 text-sm mb-1" }, "\u7F16\u53F7\uFF1A", collection.number), /* @__PURE__ */ React23.createElement("p", { className: "text-slate-600 text-sm mb-1" }, "\u5206\u7C7B\uFF1A", collection.category.displayName), /* @__PURE__ */ React23.createElement("p", { className: "text-slate-600 text-sm mb-1" }, "\u4EF7\u683C\uFF1A", collection.price ? `\xA5${collection.price}` : "\u514D\u8D39"), /* @__PURE__ */ React23.createElement("p", { className: "text-slate-600 text-sm mb-1" }, "\u5546\u54C1\u8BE6\u60C5\u56FE\u6570\u91CF\uFF1A", collection.pages.length), /* @__PURE__ */ React23.createElement("p", { className: "text-slate-600 text-sm mb-3" }, "\u72B6\u6001\uFF1A", collection.isPublished ? "\u5DF2\u53D1\u5E03" : "\u8349\u7A3F"), /* @__PURE__ */ React23.createElement("div", { className: "flex gap-2" }, /* @__PURE__ */ React23.createElement(
6513
5479
  "button",
6514
5480
  {
6515
5481
  onClick: () => handleEditCollection(collection),
6516
5482
  className: "flex items-center gap-1 px-3 py-1 bg-blue-100 text-blue-700 border border-blue-200 rounded text-sm hover:bg-blue-200 transition-colors"
6517
5483
  },
6518
- /* @__PURE__ */ React29.createElement(Edit, { size: 14 }),
5484
+ /* @__PURE__ */ React23.createElement(Edit, { size: 14 }),
6519
5485
  "\u7F16\u8F91"
6520
- ), /* @__PURE__ */ React29.createElement(
5486
+ ), /* @__PURE__ */ React23.createElement(
6521
5487
  "button",
6522
5488
  {
6523
5489
  onClick: async () => {
@@ -6527,18 +5493,18 @@ function ConfigPageContent() {
6527
5493
  },
6528
5494
  className: "flex items-center gap-1 px-3 py-1 bg-red-100 text-red-700 border border-red-200 rounded text-sm hover:bg-red-200 transition-colors"
6529
5495
  },
6530
- /* @__PURE__ */ React29.createElement(Trash2, { size: 14 }),
5496
+ /* @__PURE__ */ React23.createElement(Trash2, { size: 14 }),
6531
5497
  "\u5220\u9664"
6532
- )))))))))), /* @__PURE__ */ React29.createElement(TabsContent, { value: "artworks", className: "space-y-6" }, /* @__PURE__ */ React29.createElement("div", { className: "flex items-center justify-between mb-6" }, /* @__PURE__ */ React29.createElement("h2", { className: "text-2xl font-bold text-slate-800" }, "\u5546\u54C1\u8BE6\u60C5\u56FE\u7BA1\u7406"), /* @__PURE__ */ React29.createElement("div", { className: "flex gap-3" }, /* @__PURE__ */ React29.createElement(
5498
+ )))))))))), /* @__PURE__ */ React23.createElement(TabsContent, { value: "artworks", className: "space-y-6" }, /* @__PURE__ */ React23.createElement("div", { className: "flex items-center justify-between mb-6" }, /* @__PURE__ */ React23.createElement("h2", { className: "text-2xl font-bold text-slate-800" }, "\u5546\u54C1\u8BE6\u60C5\u56FE\u7BA1\u7406"), /* @__PURE__ */ React23.createElement("div", { className: "flex gap-3" }, /* @__PURE__ */ React23.createElement(
6533
5499
  "select",
6534
5500
  {
6535
5501
  value: selectedCollection || "",
6536
5502
  onChange: (e) => setSelectedCollection(e.target.value ? parseInt(e.target.value) : null),
6537
5503
  className: "px-3 py-2 border border-slate-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-transparent"
6538
5504
  },
6539
- /* @__PURE__ */ React29.createElement("option", { value: "" }, "\u9009\u62E9\u5546\u54C1"),
6540
- collections.map((collection) => /* @__PURE__ */ React29.createElement("option", { key: collection.id, value: collection.id }, collection.title))
6541
- ), selectedCollection && /* @__PURE__ */ React29.createElement(React29.Fragment, null, /* @__PURE__ */ React29.createElement(
5505
+ /* @__PURE__ */ React23.createElement("option", { value: "" }, "\u9009\u62E9\u5546\u54C1"),
5506
+ collections.map((collection) => /* @__PURE__ */ React23.createElement("option", { key: collection.id, value: collection.id }, collection.title))
5507
+ ), selectedCollection && /* @__PURE__ */ React23.createElement(React23.Fragment, null, /* @__PURE__ */ React23.createElement(
6542
5508
  "button",
6543
5509
  {
6544
5510
  onClick: () => {
@@ -6555,17 +5521,17 @@ function ConfigPageContent() {
6555
5521
  },
6556
5522
  className: "flex items-center gap-2 px-4 py-2 bg-blue-600 text-white border border-blue-600 rounded-lg font-medium hover:bg-blue-700 transition-colors"
6557
5523
  },
6558
- /* @__PURE__ */ React29.createElement(Plus, { size: 16 }),
5524
+ /* @__PURE__ */ React23.createElement(Plus, { size: 16 }),
6559
5525
  "\u6DFB\u52A0\u5546\u54C1\u8BE6\u60C5\u56FE"
6560
- ), /* @__PURE__ */ React29.createElement(
5526
+ ), /* @__PURE__ */ React23.createElement(
6561
5527
  "button",
6562
5528
  {
6563
5529
  onClick: handleToggleArtworkOrder,
6564
5530
  className: "flex items-center gap-2 px-4 py-2 bg-slate-100 text-slate-700 border border-slate-300 rounded-lg font-medium hover:bg-slate-200 transition-colors"
6565
5531
  },
6566
- /* @__PURE__ */ React29.createElement(ArrowUpDown, { size: 16 }),
5532
+ /* @__PURE__ */ React23.createElement(ArrowUpDown, { size: 16 }),
6567
5533
  showArtworkOrder ? "\u5173\u95ED\u6392\u5E8F" : "\u5546\u54C1\u8BE6\u60C5\u56FE\u6392\u5E8F"
6568
- )))), selectedCollection && showArtworkOrder && /* @__PURE__ */ React29.createElement("div", { className: "mb-6 p-6 bg-white rounded-lg shadow-sm border border-slate-200" }, /* @__PURE__ */ React29.createElement("div", { className: "mb-4" }, /* @__PURE__ */ React29.createElement("h3", { className: "text-xl font-semibold text-slate-800 mb-2" }, "\u5546\u54C1\u8BE6\u60C5\u56FE\u6392\u5E8F\u7BA1\u7406"), /* @__PURE__ */ React29.createElement("p", { className: "text-slate-600" }, "\u62D6\u62FD\u6216\u4F7F\u7528\u6309\u94AE\u8C03\u6574\u5546\u54C1\u8BE6\u60C5\u56FE\u5728\u5546\u54C1\u4E2D\u7684\u663E\u793A\u987A\u5E8F")), /* @__PURE__ */ React29.createElement(
5534
+ )))), selectedCollection && showArtworkOrder && /* @__PURE__ */ React23.createElement("div", { className: "mb-6 p-6 bg-white rounded-lg shadow-sm border border-slate-200" }, /* @__PURE__ */ React23.createElement("div", { className: "mb-4" }, /* @__PURE__ */ React23.createElement("h3", { className: "text-xl font-semibold text-slate-800 mb-2" }, "\u5546\u54C1\u8BE6\u60C5\u56FE\u6392\u5E8F\u7BA1\u7406"), /* @__PURE__ */ React23.createElement("p", { className: "text-slate-600" }, "\u62D6\u62FD\u6216\u4F7F\u7528\u6309\u94AE\u8C03\u6574\u5546\u54C1\u8BE6\u60C5\u56FE\u5728\u5546\u54C1\u4E2D\u7684\u663E\u793A\u987A\u5E8F")), /* @__PURE__ */ React23.createElement(
6569
5535
  ArtworkOrderManagerV2,
6570
5536
  {
6571
5537
  collectionId: selectedCollection,
@@ -6576,22 +5542,22 @@ function ConfigPageContent() {
6576
5542
  console.log("\u{1F504} [\u914D\u7F6E\u9875\u9762] \u5546\u54C1\u8BE6\u60C5\u56FE\u987A\u5E8F\u5DF2\u66F4\u65B0\uFF08\u6392\u5E8F\u7EC4\u4EF6\u5185\u90E8\u5DF2\u5904\u7406\u6570\u636E\u66F4\u65B0\uFF09");
6577
5543
  }
6578
5544
  }
6579
- )), selectedCollection && !showArtworkOrder && /* @__PURE__ */ React29.createElement("div", { className: "grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6" }, collections.find((c) => c.id === selectedCollection)?.pages.map((artwork) => /* @__PURE__ */ React29.createElement("div", { key: artwork.id, className: "bg-white rounded-lg shadow-sm border border-slate-200 overflow-hidden hover:shadow-md transition-shadow" }, /* @__PURE__ */ React29.createElement("div", { className: "h-48 bg-slate-100 overflow-hidden" }, artwork.image && /* @__PURE__ */ React29.createElement(
5545
+ )), selectedCollection && !showArtworkOrder && /* @__PURE__ */ React23.createElement("div", { className: "grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6" }, collections.find((c) => c.id === selectedCollection)?.pages.map((artwork) => /* @__PURE__ */ React23.createElement("div", { key: artwork.id, className: "bg-white rounded-lg shadow-sm border border-slate-200 overflow-hidden hover:shadow-md transition-shadow" }, /* @__PURE__ */ React23.createElement("div", { className: "h-48 bg-slate-100 overflow-hidden" }, artwork.image && /* @__PURE__ */ React23.createElement(
6580
5546
  "img",
6581
5547
  {
6582
5548
  src: artwork.image,
6583
5549
  alt: artwork.title,
6584
5550
  className: "w-full h-full object-cover"
6585
5551
  }
6586
- )), /* @__PURE__ */ React29.createElement("div", { className: "p-4" }, /* @__PURE__ */ React29.createElement("h4", { className: "text-lg font-semibold text-slate-800 mb-2" }, artwork.title), /* @__PURE__ */ React29.createElement("p", { className: "text-slate-600 text-sm mb-1" }, "\u7F16\u53F7\uFF1A", artwork.number), /* @__PURE__ */ React29.createElement("p", { className: "text-slate-600 text-sm mb-1" }, "\u521B\u4F5C\u65F6\u95F4\uFF1A", artwork.createdTime), /* @__PURE__ */ React29.createElement("p", { className: "text-slate-600 text-sm mb-1" }, "\u4E3B\u9898\uFF1A", artwork.theme), /* @__PURE__ */ React29.createElement("p", { className: "text-slate-600 text-sm mb-3 line-clamp-2" }, artwork.description), /* @__PURE__ */ React29.createElement("div", { className: "flex gap-2" }, /* @__PURE__ */ React29.createElement(
5552
+ )), /* @__PURE__ */ React23.createElement("div", { className: "p-4" }, /* @__PURE__ */ React23.createElement("h4", { className: "text-lg font-semibold text-slate-800 mb-2" }, artwork.title), /* @__PURE__ */ React23.createElement("p", { className: "text-slate-600 text-sm mb-1" }, "\u7F16\u53F7\uFF1A", artwork.number), /* @__PURE__ */ React23.createElement("p", { className: "text-slate-600 text-sm mb-1" }, "\u521B\u4F5C\u65F6\u95F4\uFF1A", artwork.createdTime), /* @__PURE__ */ React23.createElement("p", { className: "text-slate-600 text-sm mb-1" }, "\u4E3B\u9898\uFF1A", artwork.theme), /* @__PURE__ */ React23.createElement("p", { className: "text-slate-600 text-sm mb-3 line-clamp-2" }, artwork.description), /* @__PURE__ */ React23.createElement("div", { className: "flex gap-2" }, /* @__PURE__ */ React23.createElement(
6587
5553
  "button",
6588
5554
  {
6589
5555
  onClick: () => handleEditArtwork(selectedCollection, artwork),
6590
5556
  className: "flex items-center gap-1 px-3 py-1 bg-blue-100 text-blue-700 border border-blue-200 rounded text-sm hover:bg-blue-200 transition-colors"
6591
5557
  },
6592
- /* @__PURE__ */ React29.createElement(Edit, { size: 14 }),
5558
+ /* @__PURE__ */ React23.createElement(Edit, { size: 14 }),
6593
5559
  "\u7F16\u8F91"
6594
- ), /* @__PURE__ */ React29.createElement(
5560
+ ), /* @__PURE__ */ React23.createElement(
6595
5561
  "button",
6596
5562
  {
6597
5563
  onClick: () => {
@@ -6601,18 +5567,18 @@ function ConfigPageContent() {
6601
5567
  },
6602
5568
  className: "flex items-center gap-1 px-3 py-1 bg-red-100 text-red-700 border border-red-200 rounded text-sm hover:bg-red-200 transition-colors"
6603
5569
  },
6604
- /* @__PURE__ */ React29.createElement(Trash2, { size: 14 }),
5570
+ /* @__PURE__ */ React23.createElement(Trash2, { size: 14 }),
6605
5571
  "\u5220\u9664"
6606
- ))))))), /* @__PURE__ */ React29.createElement(TabsContent, { value: "bookings", className: "space-y-6" }, /* @__PURE__ */ React29.createElement("div", { className: "flex items-center justify-between mb-6" }, /* @__PURE__ */ React29.createElement("div", null, /* @__PURE__ */ React29.createElement("h2", { className: "text-2xl font-bold text-slate-800" }, "\u9884\u8BA2\u7BA1\u7406"), /* @__PURE__ */ React29.createElement("p", { className: "text-slate-600" }, "\u67E5\u770B\u6240\u6709\u7528\u6237\u7684\u9884\u8BA2\u4FE1\u606F")), /* @__PURE__ */ React29.createElement("div", { className: "flex gap-2" }, /* @__PURE__ */ React29.createElement(
5572
+ ))))))), /* @__PURE__ */ React23.createElement(TabsContent, { value: "bookings", className: "space-y-6" }, /* @__PURE__ */ React23.createElement("div", { className: "flex items-center justify-between mb-6" }, /* @__PURE__ */ React23.createElement("div", null, /* @__PURE__ */ React23.createElement("h2", { className: "text-2xl font-bold text-slate-800" }, "\u9884\u8BA2\u7BA1\u7406"), /* @__PURE__ */ React23.createElement("p", { className: "text-slate-600" }, "\u67E5\u770B\u6240\u6709\u7528\u6237\u7684\u9884\u8BA2\u4FE1\u606F")), /* @__PURE__ */ React23.createElement("div", { className: "flex gap-2" }, /* @__PURE__ */ React23.createElement(
6607
5573
  "button",
6608
5574
  {
6609
5575
  onClick: refreshBookingData,
6610
5576
  disabled: bookingLoading,
6611
5577
  className: "flex items-center gap-2 px-4 py-2 bg-blue-100 text-blue-700 rounded-lg font-medium hover:bg-blue-200 transition-colors disabled:opacity-50"
6612
5578
  },
6613
- /* @__PURE__ */ React29.createElement(RefreshCw, { size: 16, className: bookingLoading ? "animate-spin" : "" }),
5579
+ /* @__PURE__ */ React23.createElement(RefreshCw, { size: 16, className: bookingLoading ? "animate-spin" : "" }),
6614
5580
  "\u5237\u65B0\u6570\u636E"
6615
- ))), /* @__PURE__ */ React29.createElement(
5581
+ ))), /* @__PURE__ */ React23.createElement(
6616
5582
  BookingAdminPanel,
6617
5583
  {
6618
5584
  bookings,
@@ -6627,14 +5593,14 @@ function ConfigPageContent() {
6627
5593
  onDeleteBooking: deleteBooking3,
6628
5594
  onExportBookings: exportBookings2
6629
5595
  }
6630
- )), /* @__PURE__ */ React29.createElement(TabsContent, { value: "popup", className: "space-y-6" }, /* @__PURE__ */ React29.createElement("div", { className: "mb-6" }, /* @__PURE__ */ React29.createElement("h2", { className: "text-2xl font-bold text-slate-800 mb-2" }, "\u5F39\u7A97\u914D\u7F6E"), /* @__PURE__ */ React29.createElement("p", { className: "text-slate-600" }, "\u7BA1\u7406\u8D2D\u7269\u8F66\u63D0\u4EA4\u65F6\u7684\u9650\u65F6\u63D0\u9192\u5F39\u7A97\u8BBE\u7F6E")), /* @__PURE__ */ React29.createElement(PopupConfigManagement, null)), /* @__PURE__ */ React29.createElement(TabsContent, { value: "system", className: "space-y-6" }, /* @__PURE__ */ React29.createElement("div", { className: "mb-6" }, /* @__PURE__ */ React29.createElement("h2", { className: "text-2xl font-bold text-slate-800 mb-2" }, "\u7CFB\u7EDF\u914D\u7F6E"), /* @__PURE__ */ React29.createElement("p", { className: "text-slate-600" }, "\u7BA1\u7406ShowMasterPieces\u6A21\u5757\u7684\u7CFB\u7EDF\u7EA7\u914D\u7F6E\u9879\uFF0C\u4E3A\u6A21\u5757\u72EC\u7ACB\u5316\u505A\u51C6\u5907"), /* @__PURE__ */ React29.createElement("div", { className: "mt-4 p-4 bg-blue-50 border border-blue-200 rounded-lg" }, /* @__PURE__ */ React29.createElement("div", { className: "flex items-start gap-3" }, /* @__PURE__ */ React29.createElement(Cog, { className: "text-blue-600 mt-0.5", size: 20 }), /* @__PURE__ */ React29.createElement("div", null, /* @__PURE__ */ React29.createElement("h3", { className: "font-semibold text-blue-900" }, "\u914D\u7F6E\u8BF4\u660E"), /* @__PURE__ */ React29.createElement("p", { className: "text-blue-800 text-sm mt-1" }, "\u8FD9\u91CC\u7684\u914D\u7F6E\u9879\u5C06\u7528\u4E8EShowMasterPieces\u6A21\u5757\u7684\u72EC\u7ACB\u8FD0\u884C\u3002 \u65B0\u521B\u5EFA\u7684\u914D\u7F6E\u9879\u4F1A\u81EA\u52A8\u6DFB\u52A0", /* @__PURE__ */ React29.createElement("code", { className: "bg-blue-100 px-1 rounded" }, "SHOWMASTER_"), "\u524D\u7F00\u3002"), /* @__PURE__ */ React29.createElement("p", { className: "text-blue-700 text-xs mt-2" }, "\u{1F4A1} \u63D0\u793A\uFF1A\u8FD9\u4E9B\u914D\u7F6E\u72EC\u7ACB\u4E8E\u5168\u5C40\u914D\u7F6E\uFF0C\u4FBF\u4E8E\u6A21\u5757\u6253\u5305\u548C\u90E8\u7F72\u3002"))))), /* @__PURE__ */ React29.createElement(SystemConfigManager, null)))), showCollectionForm && /* @__PURE__ */ React29.createElement("div", { className: "fixed inset-0 bg-black bg-opacity-50 flex items-center justify-center p-4 z-50" }, /* @__PURE__ */ React29.createElement("div", { className: "bg-white rounded-lg shadow-xl max-w-2xl w-full max-h-[90vh] overflow-hidden" }, /* @__PURE__ */ React29.createElement("div", { className: "flex items-center justify-between p-6 border-b border-slate-200" }, /* @__PURE__ */ React29.createElement("h3", { className: "text-xl font-semibold text-slate-800" }, editingCollection ? "\u7F16\u8F91\u5546\u54C1" : "\u6DFB\u52A0\u5546\u54C1"), /* @__PURE__ */ React29.createElement(
5596
+ )), /* @__PURE__ */ React23.createElement(TabsContent, { value: "popup", className: "space-y-6" }, /* @__PURE__ */ React23.createElement("div", { className: "mb-6" }, /* @__PURE__ */ React23.createElement("h2", { className: "text-2xl font-bold text-slate-800 mb-2" }, "\u5F39\u7A97\u914D\u7F6E"), /* @__PURE__ */ React23.createElement("p", { className: "text-slate-600" }, "\u7BA1\u7406\u8D2D\u7269\u8F66\u63D0\u4EA4\u65F6\u7684\u9650\u65F6\u63D0\u9192\u5F39\u7A97\u8BBE\u7F6E")), /* @__PURE__ */ React23.createElement(PopupConfigManagement, null)), /* @__PURE__ */ React23.createElement(TabsContent, { value: "system", className: "space-y-6" }, /* @__PURE__ */ React23.createElement("div", { className: "mb-6" }, /* @__PURE__ */ React23.createElement("h2", { className: "text-2xl font-bold text-slate-800 mb-2" }, "\u7CFB\u7EDF\u914D\u7F6E"), /* @__PURE__ */ React23.createElement("p", { className: "text-slate-600" }, "\u7BA1\u7406ShowMasterPieces\u6A21\u5757\u7684\u7CFB\u7EDF\u7EA7\u914D\u7F6E\u9879\uFF0C\u4E3A\u6A21\u5757\u72EC\u7ACB\u5316\u505A\u51C6\u5907"), /* @__PURE__ */ React23.createElement("div", { className: "mt-4 p-4 bg-blue-50 border border-blue-200 rounded-lg" }, /* @__PURE__ */ React23.createElement("div", { className: "flex items-start gap-3" }, /* @__PURE__ */ React23.createElement(Cog, { className: "text-blue-600 mt-0.5", size: 20 }), /* @__PURE__ */ React23.createElement("div", null, /* @__PURE__ */ React23.createElement("h3", { className: "font-semibold text-blue-900" }, "\u914D\u7F6E\u8BF4\u660E"), /* @__PURE__ */ React23.createElement("p", { className: "text-blue-800 text-sm mt-1" }, "\u8FD9\u91CC\u7684\u914D\u7F6E\u9879\u5C06\u7528\u4E8EShowMasterPieces\u6A21\u5757\u7684\u72EC\u7ACB\u8FD0\u884C\u3002 \u65B0\u521B\u5EFA\u7684\u914D\u7F6E\u9879\u4F1A\u81EA\u52A8\u6DFB\u52A0", /* @__PURE__ */ React23.createElement("code", { className: "bg-blue-100 px-1 rounded" }, "SHOWMASTER_"), "\u524D\u7F00\u3002"), /* @__PURE__ */ React23.createElement("p", { className: "text-blue-700 text-xs mt-2" }, "\u{1F4A1} \u63D0\u793A\uFF1A\u8FD9\u4E9B\u914D\u7F6E\u72EC\u7ACB\u4E8E\u5168\u5C40\u914D\u7F6E\uFF0C\u4FBF\u4E8E\u6A21\u5757\u6253\u5305\u548C\u90E8\u7F72\u3002"))))), /* @__PURE__ */ React23.createElement(SystemConfigManager, null)))), showCollectionForm && /* @__PURE__ */ React23.createElement("div", { className: "fixed inset-0 bg-black bg-opacity-50 flex items-center justify-center p-4 z-50" }, /* @__PURE__ */ React23.createElement("div", { className: "bg-white rounded-lg shadow-xl max-w-2xl w-full max-h-[90vh] overflow-hidden" }, /* @__PURE__ */ React23.createElement("div", { className: "flex items-center justify-between p-6 border-b border-slate-200" }, /* @__PURE__ */ React23.createElement("h3", { className: "text-xl font-semibold text-slate-800" }, editingCollection ? "\u7F16\u8F91\u5546\u54C1" : "\u6DFB\u52A0\u5546\u54C1"), /* @__PURE__ */ React23.createElement(
6631
5597
  "button",
6632
5598
  {
6633
5599
  onClick: () => setShowCollectionForm(false),
6634
5600
  className: "text-slate-400 hover:text-slate-600 text-2xl font-bold leading-none"
6635
5601
  },
6636
5602
  "\xD7"
6637
- )), /* @__PURE__ */ React29.createElement("div", { className: "p-6 overflow-y-auto max-h-[calc(90vh-140px)]" }, /* @__PURE__ */ React29.createElement("div", { className: "space-y-4" }, /* @__PURE__ */ React29.createElement("div", null, /* @__PURE__ */ React29.createElement("label", { className: "block text-sm font-medium text-slate-700 mb-2" }, "\u6807\u9898"), /* @__PURE__ */ React29.createElement(
5603
+ )), /* @__PURE__ */ React23.createElement("div", { className: "p-6 overflow-y-auto max-h-[calc(90vh-140px)]" }, /* @__PURE__ */ React23.createElement("div", { className: "space-y-4" }, /* @__PURE__ */ React23.createElement("div", null, /* @__PURE__ */ React23.createElement("label", { className: "block text-sm font-medium text-slate-700 mb-2" }, "\u6807\u9898"), /* @__PURE__ */ React23.createElement(
6638
5604
  "input",
6639
5605
  {
6640
5606
  type: "text",
@@ -6643,7 +5609,7 @@ function ConfigPageContent() {
6643
5609
  placeholder: "\u8F93\u5165\u5546\u54C1\u6807\u9898",
6644
5610
  className: "w-full px-3 py-2 border border-slate-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-transparent"
6645
5611
  }
6646
- )), /* @__PURE__ */ React29.createElement("div", null, /* @__PURE__ */ React29.createElement("label", { className: "block text-sm font-medium text-slate-700 mb-2" }, "\u7F16\u53F7"), /* @__PURE__ */ React29.createElement(
5612
+ )), /* @__PURE__ */ React23.createElement("div", null, /* @__PURE__ */ React23.createElement("label", { className: "block text-sm font-medium text-slate-700 mb-2" }, "\u7F16\u53F7"), /* @__PURE__ */ React23.createElement(
6647
5613
  "input",
6648
5614
  {
6649
5615
  type: "text",
@@ -6652,7 +5618,7 @@ function ConfigPageContent() {
6652
5618
  placeholder: "\u8F93\u5165\u7F16\u53F7",
6653
5619
  className: "w-full px-3 py-2 border border-slate-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-transparent"
6654
5620
  }
6655
- )), /* @__PURE__ */ React29.createElement("div", null, /* @__PURE__ */ React29.createElement(
5621
+ )), /* @__PURE__ */ React23.createElement("div", null, /* @__PURE__ */ React23.createElement(
6656
5622
  UniversalImageUpload,
6657
5623
  {
6658
5624
  label: "\u5C01\u9762\u56FE\u7247",
@@ -6666,7 +5632,7 @@ function ConfigPageContent() {
6666
5632
  placeholder: "\u4E0A\u4F20\u5C01\u9762\u56FE\u7247",
6667
5633
  businessType: "cover"
6668
5634
  }
6669
- )), /* @__PURE__ */ React29.createElement("div", null, /* @__PURE__ */ React29.createElement("label", { className: "block text-sm font-medium text-slate-700 mb-2" }, "\u63CF\u8FF0"), /* @__PURE__ */ React29.createElement(
5635
+ )), /* @__PURE__ */ React23.createElement("div", null, /* @__PURE__ */ React23.createElement("label", { className: "block text-sm font-medium text-slate-700 mb-2" }, "\u63CF\u8FF0"), /* @__PURE__ */ React23.createElement(
6670
5636
  "textarea",
6671
5637
  {
6672
5638
  value: collectionForm.description,
@@ -6675,15 +5641,15 @@ function ConfigPageContent() {
6675
5641
  rows: 3,
6676
5642
  className: "w-full px-3 py-2 border border-slate-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-transparent"
6677
5643
  }
6678
- )), /* @__PURE__ */ React29.createElement("div", null, /* @__PURE__ */ React29.createElement("label", { className: "block text-sm font-medium text-slate-700 mb-2" }, "\u5206\u7C7B"), /* @__PURE__ */ React29.createElement(
5644
+ )), /* @__PURE__ */ React23.createElement("div", null, /* @__PURE__ */ React23.createElement("label", { className: "block text-sm font-medium text-slate-700 mb-2" }, "\u5206\u7C7B"), /* @__PURE__ */ React23.createElement(
6679
5645
  "select",
6680
5646
  {
6681
5647
  value: collectionForm.category,
6682
5648
  onChange: (e) => setCollectionForm((prev) => ({ ...prev, category: e.target.value })),
6683
5649
  className: "w-full px-3 py-2 border border-slate-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-transparent"
6684
5650
  },
6685
- categoryOptions.map((category) => /* @__PURE__ */ React29.createElement("option", { key: category.name, value: category.name }, category.description || getCategoryDisplayName(category.name)))
6686
- )), /* @__PURE__ */ React29.createElement("div", null, /* @__PURE__ */ React29.createElement("label", { className: "block text-sm font-medium text-slate-700 mb-2" }, "\u4EF7\u683C\uFF08\u5143\uFF09"), /* @__PURE__ */ React29.createElement(
5651
+ categoryOptions.map((category) => /* @__PURE__ */ React23.createElement("option", { key: category.name, value: category.name }, category.description || getCategoryDisplayName(category.name)))
5652
+ )), /* @__PURE__ */ React23.createElement("div", null, /* @__PURE__ */ React23.createElement("label", { className: "block text-sm font-medium text-slate-700 mb-2" }, "\u4EF7\u683C\uFF08\u5143\uFF09"), /* @__PURE__ */ React23.createElement(
6687
5653
  "input",
6688
5654
  {
6689
5655
  type: "number",
@@ -6697,7 +5663,7 @@ function ConfigPageContent() {
6697
5663
  step: "1",
6698
5664
  className: "w-full px-3 py-2 border border-slate-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-transparent"
6699
5665
  }
6700
- )), /* @__PURE__ */ React29.createElement("div", null, /* @__PURE__ */ React29.createElement("label", { className: "flex items-center gap-2 cursor-pointer" }, /* @__PURE__ */ React29.createElement(
5666
+ )), /* @__PURE__ */ React23.createElement("div", null, /* @__PURE__ */ React23.createElement("label", { className: "flex items-center gap-2 cursor-pointer" }, /* @__PURE__ */ React23.createElement(
6701
5667
  "input",
6702
5668
  {
6703
5669
  type: "checkbox",
@@ -6705,28 +5671,28 @@ function ConfigPageContent() {
6705
5671
  onChange: (e) => setCollectionForm((prev) => ({ ...prev, isPublished: e.target.checked })),
6706
5672
  className: "w-4 h-4 text-blue-600 border-slate-300 rounded focus:ring-blue-500"
6707
5673
  }
6708
- ), /* @__PURE__ */ React29.createElement("span", { className: "text-sm font-medium text-slate-700" }, "\u53D1\u5E03\u5546\u54C1"))))), /* @__PURE__ */ React29.createElement("div", { className: "flex justify-end gap-3 p-6 border-t border-slate-200" }, /* @__PURE__ */ React29.createElement(
5674
+ ), /* @__PURE__ */ React23.createElement("span", { className: "text-sm font-medium text-slate-700" }, "\u53D1\u5E03\u5546\u54C1"))))), /* @__PURE__ */ React23.createElement("div", { className: "flex justify-end gap-3 p-6 border-t border-slate-200" }, /* @__PURE__ */ React23.createElement(
6709
5675
  "button",
6710
5676
  {
6711
5677
  onClick: () => setShowCollectionForm(false),
6712
5678
  className: "px-4 py-2 bg-slate-100 text-slate-700 border border-slate-300 rounded-lg font-medium hover:bg-slate-200 transition-colors"
6713
5679
  },
6714
5680
  "\u53D6\u6D88"
6715
- ), /* @__PURE__ */ React29.createElement(
5681
+ ), /* @__PURE__ */ React23.createElement(
6716
5682
  "button",
6717
5683
  {
6718
5684
  onClick: handleSaveCollection,
6719
5685
  className: "px-4 py-2 bg-blue-600 text-white border border-blue-600 rounded-lg font-medium hover:bg-blue-700 transition-colors"
6720
5686
  },
6721
5687
  "\u4FDD\u5B58"
6722
- )))), showArtworkForm && /* @__PURE__ */ React29.createElement("div", { className: "fixed inset-0 bg-black bg-opacity-50 flex items-center justify-center p-4 z-50" }, /* @__PURE__ */ React29.createElement("div", { className: "bg-white rounded-lg shadow-xl max-w-2xl w-full max-h-[90vh] overflow-hidden" }, /* @__PURE__ */ React29.createElement("div", { className: "flex items-center justify-between p-6 border-b border-slate-200" }, /* @__PURE__ */ React29.createElement("h3", { className: "text-xl font-semibold text-slate-800" }, editingArtwork ? "\u7F16\u8F91\u5546\u54C1\u8BE6\u60C5\u56FE" : "\u6DFB\u52A0\u5546\u54C1\u8BE6\u60C5\u56FE"), /* @__PURE__ */ React29.createElement(
5688
+ )))), showArtworkForm && /* @__PURE__ */ React23.createElement("div", { className: "fixed inset-0 bg-black bg-opacity-50 flex items-center justify-center p-4 z-50" }, /* @__PURE__ */ React23.createElement("div", { className: "bg-white rounded-lg shadow-xl max-w-2xl w-full max-h-[90vh] overflow-hidden" }, /* @__PURE__ */ React23.createElement("div", { className: "flex items-center justify-between p-6 border-b border-slate-200" }, /* @__PURE__ */ React23.createElement("h3", { className: "text-xl font-semibold text-slate-800" }, editingArtwork ? "\u7F16\u8F91\u5546\u54C1\u8BE6\u60C5\u56FE" : "\u6DFB\u52A0\u5546\u54C1\u8BE6\u60C5\u56FE"), /* @__PURE__ */ React23.createElement(
6723
5689
  "button",
6724
5690
  {
6725
5691
  onClick: () => setShowArtworkForm(false),
6726
5692
  className: "text-slate-400 hover:text-slate-600 text-2xl font-bold leading-none"
6727
5693
  },
6728
5694
  "\xD7"
6729
- )), /* @__PURE__ */ React29.createElement("div", { className: "p-6 overflow-y-auto max-h-[calc(90vh-140px)]" }, /* @__PURE__ */ React29.createElement("div", { className: "space-y-4" }, /* @__PURE__ */ React29.createElement("div", null, /* @__PURE__ */ React29.createElement("label", { className: "block text-sm font-medium text-slate-700 mb-2" }, "\u6807\u9898"), /* @__PURE__ */ React29.createElement(
5695
+ )), /* @__PURE__ */ React23.createElement("div", { className: "p-6 overflow-y-auto max-h-[calc(90vh-140px)]" }, /* @__PURE__ */ React23.createElement("div", { className: "space-y-4" }, /* @__PURE__ */ React23.createElement("div", null, /* @__PURE__ */ React23.createElement("label", { className: "block text-sm font-medium text-slate-700 mb-2" }, "\u6807\u9898"), /* @__PURE__ */ React23.createElement(
6730
5696
  "input",
6731
5697
  {
6732
5698
  type: "text",
@@ -6735,7 +5701,7 @@ function ConfigPageContent() {
6735
5701
  placeholder: "\u8F93\u5165\u5546\u54C1\u8BE6\u60C5\u56FE\u6807\u9898",
6736
5702
  className: "w-full px-3 py-2 border border-slate-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-transparent"
6737
5703
  }
6738
- )), /* @__PURE__ */ React29.createElement("div", null, /* @__PURE__ */ React29.createElement("label", { className: "block text-sm font-medium text-slate-700 mb-2" }, "\u7F16\u53F7"), /* @__PURE__ */ React29.createElement(
5704
+ )), /* @__PURE__ */ React23.createElement("div", null, /* @__PURE__ */ React23.createElement("label", { className: "block text-sm font-medium text-slate-700 mb-2" }, "\u7F16\u53F7"), /* @__PURE__ */ React23.createElement(
6739
5705
  "input",
6740
5706
  {
6741
5707
  type: "text",
@@ -6744,7 +5710,7 @@ function ConfigPageContent() {
6744
5710
  placeholder: "\u8F93\u5165\u7F16\u53F7",
6745
5711
  className: "w-full px-3 py-2 border border-slate-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-transparent"
6746
5712
  }
6747
- )), /* @__PURE__ */ React29.createElement("div", null, /* @__PURE__ */ React29.createElement(
5713
+ )), /* @__PURE__ */ React23.createElement("div", null, /* @__PURE__ */ React23.createElement(
6748
5714
  UniversalImageUpload,
6749
5715
  {
6750
5716
  label: "\u5546\u54C1\u8BE6\u60C5\u56FE\u56FE\u7247",
@@ -6758,7 +5724,7 @@ function ConfigPageContent() {
6758
5724
  placeholder: "\u4E0A\u4F20\u5546\u54C1\u8BE6\u60C5\u56FE\u56FE\u7247",
6759
5725
  businessType: "artwork"
6760
5726
  }
6761
- )), /* @__PURE__ */ React29.createElement("div", null, /* @__PURE__ */ React29.createElement("label", { className: "block text-sm font-medium text-slate-700 mb-2" }, "\u63CF\u8FF0"), /* @__PURE__ */ React29.createElement(
5727
+ )), /* @__PURE__ */ React23.createElement("div", null, /* @__PURE__ */ React23.createElement("label", { className: "block text-sm font-medium text-slate-700 mb-2" }, "\u63CF\u8FF0"), /* @__PURE__ */ React23.createElement(
6762
5728
  "textarea",
6763
5729
  {
6764
5730
  value: artworkForm.description,
@@ -6767,7 +5733,7 @@ function ConfigPageContent() {
6767
5733
  rows: 3,
6768
5734
  className: "w-full px-3 py-2 border border-slate-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-transparent"
6769
5735
  }
6770
- )), /* @__PURE__ */ React29.createElement("div", null, /* @__PURE__ */ React29.createElement("label", { className: "block text-sm font-medium text-slate-700 mb-2" }, "\u521B\u4F5C\u65F6\u95F4"), /* @__PURE__ */ React29.createElement(
5736
+ )), /* @__PURE__ */ React23.createElement("div", null, /* @__PURE__ */ React23.createElement("label", { className: "block text-sm font-medium text-slate-700 mb-2" }, "\u521B\u4F5C\u65F6\u95F4"), /* @__PURE__ */ React23.createElement(
6771
5737
  "input",
6772
5738
  {
6773
5739
  type: "text",
@@ -6776,7 +5742,7 @@ function ConfigPageContent() {
6776
5742
  placeholder: "\u8F93\u5165\u521B\u4F5C\u65F6\u95F4",
6777
5743
  className: "w-full px-3 py-2 border border-slate-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-transparent"
6778
5744
  }
6779
- )), /* @__PURE__ */ React29.createElement("div", null, /* @__PURE__ */ React29.createElement("label", { className: "block text-sm font-medium text-slate-700 mb-2" }, "\u4E3B\u9898"), /* @__PURE__ */ React29.createElement(
5745
+ )), /* @__PURE__ */ React23.createElement("div", null, /* @__PURE__ */ React23.createElement("label", { className: "block text-sm font-medium text-slate-700 mb-2" }, "\u4E3B\u9898"), /* @__PURE__ */ React23.createElement(
6780
5746
  "input",
6781
5747
  {
6782
5748
  type: "text",
@@ -6785,14 +5751,14 @@ function ConfigPageContent() {
6785
5751
  placeholder: "\u8F93\u5165\u5546\u54C1\u8BE6\u60C5\u56FE\u4E3B\u9898",
6786
5752
  className: "w-full px-3 py-2 border border-slate-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-transparent"
6787
5753
  }
6788
- )))), /* @__PURE__ */ React29.createElement("div", { className: "flex justify-end gap-3 p-6 border-t border-slate-200" }, /* @__PURE__ */ React29.createElement(
5754
+ )))), /* @__PURE__ */ React23.createElement("div", { className: "flex justify-end gap-3 p-6 border-t border-slate-200" }, /* @__PURE__ */ React23.createElement(
6789
5755
  "button",
6790
5756
  {
6791
5757
  onClick: () => setShowArtworkForm(false),
6792
5758
  className: "px-4 py-2 bg-slate-100 text-slate-700 border border-slate-300 rounded-lg font-medium hover:bg-slate-200 transition-colors"
6793
5759
  },
6794
5760
  "\u53D6\u6D88"
6795
- ), /* @__PURE__ */ React29.createElement(
5761
+ ), /* @__PURE__ */ React23.createElement(
6796
5762
  "button",
6797
5763
  {
6798
5764
  onClick: handleSaveArtwork,
@@ -6802,7 +5768,7 @@ function ConfigPageContent() {
6802
5768
  )))));
6803
5769
  }
6804
5770
  function ConfigPage() {
6805
- return /* @__PURE__ */ React29.createElement(AuthProvider, null, /* @__PURE__ */ React29.createElement(AuthGuard, null, /* @__PURE__ */ React29.createElement(ConfigPageContent, null)));
5771
+ return /* @__PURE__ */ React23.createElement(AuthProvider, null, /* @__PURE__ */ React23.createElement(AuthGuard, null, /* @__PURE__ */ React23.createElement(ConfigPageContent, null)));
6806
5772
  }
6807
5773
  function UserHistoryPage() {
6808
5774
  const [formData, setFormData] = useState({
@@ -6846,15 +5812,15 @@ function UserHistoryPage() {
6846
5812
  setFormData({ qqNumber: "", phoneNumber: "" });
6847
5813
  setFormErrors({});
6848
5814
  };
6849
- return /* @__PURE__ */ React29.createElement("div", { className: "min-h-screen bg-slate-50" }, /* @__PURE__ */ React29.createElement("div", { className: "max-w-6xl mx-auto p-4 sm:p-6" }, /* @__PURE__ */ React29.createElement("div", { className: "mb-6" }, /* @__PURE__ */ React29.createElement(
5815
+ return /* @__PURE__ */ React23.createElement("div", { className: "min-h-screen bg-slate-50" }, /* @__PURE__ */ React23.createElement("div", { className: "max-w-6xl mx-auto p-4 sm:p-6" }, /* @__PURE__ */ React23.createElement("div", { className: "mb-6" }, /* @__PURE__ */ React23.createElement(
6850
5816
  Link,
6851
5817
  {
6852
5818
  href: "/testField/ShowMasterPieces",
6853
5819
  className: "inline-flex items-center gap-2 text-slate-600 hover:text-slate-800 transition-colors"
6854
5820
  },
6855
- /* @__PURE__ */ React29.createElement(ArrowLeft, { size: 20 }),
5821
+ /* @__PURE__ */ React23.createElement(ArrowLeft, { size: 20 }),
6856
5822
  "\u8FD4\u56DE\u753B\u96C6\u5C55\u793A"
6857
- )), !isSubmitted ? /* @__PURE__ */ React29.createElement("div", { className: "max-w-md mx-auto" }, /* @__PURE__ */ React29.createElement("div", { className: "text-center mb-8" }, /* @__PURE__ */ React29.createElement("div", { className: "inline-flex items-center justify-center w-16 h-16 bg-blue-100 rounded-full mb-4" }, /* @__PURE__ */ React29.createElement(User, { size: 32, className: "text-blue-600" })), /* @__PURE__ */ React29.createElement("h1", { className: "text-2xl font-bold text-slate-800 mb-2" }, "\u67E5\u770B\u9884\u8BA2\u5386\u53F2"), /* @__PURE__ */ React29.createElement("p", { className: "text-slate-600" }, "\u8BF7\u8F93\u5165\u60A8\u7684QQ\u53F7\u548C\u624B\u673A\u53F7\u67E5\u770B\u9884\u8BA2\u5386\u53F2\u8BB0\u5F55")), /* @__PURE__ */ React29.createElement("div", { className: "bg-white rounded-lg shadow-sm border border-slate-200 p-6" }, /* @__PURE__ */ React29.createElement("form", { onSubmit: handleSubmit, className: "space-y-4" }, /* @__PURE__ */ React29.createElement("div", null, /* @__PURE__ */ React29.createElement("label", { htmlFor: "qqNumber", className: "block text-sm font-medium text-slate-700 mb-2" }, "QQ\u53F7"), /* @__PURE__ */ React29.createElement(
5823
+ )), !isSubmitted ? /* @__PURE__ */ React23.createElement("div", { className: "max-w-md mx-auto" }, /* @__PURE__ */ React23.createElement("div", { className: "text-center mb-8" }, /* @__PURE__ */ React23.createElement("div", { className: "inline-flex items-center justify-center w-16 h-16 bg-blue-100 rounded-full mb-4" }, /* @__PURE__ */ React23.createElement(User, { size: 32, className: "text-blue-600" })), /* @__PURE__ */ React23.createElement("h1", { className: "text-2xl font-bold text-slate-800 mb-2" }, "\u67E5\u770B\u9884\u8BA2\u5386\u53F2"), /* @__PURE__ */ React23.createElement("p", { className: "text-slate-600" }, "\u8BF7\u8F93\u5165\u60A8\u7684QQ\u53F7\u548C\u624B\u673A\u53F7\u67E5\u770B\u9884\u8BA2\u5386\u53F2\u8BB0\u5F55")), /* @__PURE__ */ React23.createElement("div", { className: "bg-white rounded-lg shadow-sm border border-slate-200 p-6" }, /* @__PURE__ */ React23.createElement("form", { onSubmit: handleSubmit, className: "space-y-4" }, /* @__PURE__ */ React23.createElement("div", null, /* @__PURE__ */ React23.createElement("label", { htmlFor: "qqNumber", className: "block text-sm font-medium text-slate-700 mb-2" }, "QQ\u53F7"), /* @__PURE__ */ React23.createElement(
6858
5824
  "input",
6859
5825
  {
6860
5826
  type: "text",
@@ -6864,7 +5830,7 @@ function UserHistoryPage() {
6864
5830
  className: `w-full px-3 py-2 border rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-500 ${formErrors.qqNumber ? "border-red-300" : "border-slate-300"}`,
6865
5831
  placeholder: "\u8BF7\u8F93\u5165QQ\u53F7"
6866
5832
  }
6867
- ), formErrors.qqNumber && /* @__PURE__ */ React29.createElement("p", { className: "mt-1 text-sm text-red-600" }, formErrors.qqNumber)), /* @__PURE__ */ React29.createElement("div", null, /* @__PURE__ */ React29.createElement("label", { htmlFor: "phoneNumber", className: "block text-sm font-medium text-slate-700 mb-2" }, "\u624B\u673A\u53F7"), /* @__PURE__ */ React29.createElement(
5833
+ ), formErrors.qqNumber && /* @__PURE__ */ React23.createElement("p", { className: "mt-1 text-sm text-red-600" }, formErrors.qqNumber)), /* @__PURE__ */ React23.createElement("div", null, /* @__PURE__ */ React23.createElement("label", { htmlFor: "phoneNumber", className: "block text-sm font-medium text-slate-700 mb-2" }, "\u624B\u673A\u53F7"), /* @__PURE__ */ React23.createElement(
6868
5834
  "input",
6869
5835
  {
6870
5836
  type: "tel",
@@ -6874,23 +5840,23 @@ function UserHistoryPage() {
6874
5840
  className: `w-full px-3 py-2 border rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-500 ${formErrors.phoneNumber ? "border-red-300" : "border-slate-300"}`,
6875
5841
  placeholder: "\u8BF7\u8F93\u5165\u624B\u673A\u53F7"
6876
5842
  }
6877
- ), formErrors.phoneNumber && /* @__PURE__ */ React29.createElement("p", { className: "mt-1 text-sm text-red-600" }, formErrors.phoneNumber)), /* @__PURE__ */ React29.createElement(
5843
+ ), formErrors.phoneNumber && /* @__PURE__ */ React23.createElement("p", { className: "mt-1 text-sm text-red-600" }, formErrors.phoneNumber)), /* @__PURE__ */ React23.createElement(
6878
5844
  "button",
6879
5845
  {
6880
5846
  type: "submit",
6881
5847
  className: "w-full flex items-center justify-center gap-2 bg-blue-600 text-white py-2 px-4 rounded-lg font-medium hover:bg-blue-700 transition-colors"
6882
5848
  },
6883
- /* @__PURE__ */ React29.createElement(Search, { size: 16 }),
5849
+ /* @__PURE__ */ React23.createElement(Search, { size: 16 }),
6884
5850
  "\u67E5\u8BE2\u5386\u53F2\u8BB0\u5F55"
6885
- )), /* @__PURE__ */ React29.createElement("div", { className: "mt-6 p-4 bg-blue-50 rounded-lg" }, /* @__PURE__ */ React29.createElement("h3", { className: "text-sm font-medium text-blue-800 mb-2" }, "\u67E5\u8BE2\u8BF4\u660E"), /* @__PURE__ */ React29.createElement("ul", { className: "text-sm text-blue-700 space-y-1" }, /* @__PURE__ */ React29.createElement("li", null, "\u2022 \u8BF7\u8F93\u5165\u60A8\u9884\u8BA2\u65F6\u4F7F\u7528\u7684QQ\u53F7\u548C\u624B\u673A\u53F7"), /* @__PURE__ */ React29.createElement("li", null, "\u2022 \u7CFB\u7EDF\u5C06\u663E\u793A\u60A8\u6240\u6709\u7684\u9884\u8BA2\u5386\u53F2\u8BB0\u5F55"), /* @__PURE__ */ React29.createElement("li", null, "\u2022 \u60A8\u53EF\u4EE5\u67E5\u770B\u9884\u8BA2\u72B6\u6001\u3001\u5546\u54C1\u8BE6\u60C5\u7B49\u4FE1\u606F"), /* @__PURE__ */ React29.createElement("li", null, "\u2022 \u652F\u6301\u5220\u9664\u5355\u6761\u8BB0\u5F55\u6216\u6E05\u7A7A\u6240\u6709\u8BB0\u5F55"))))) : /* @__PURE__ */ React29.createElement("div", null, /* @__PURE__ */ React29.createElement("div", { className: "mb-6" }, /* @__PURE__ */ React29.createElement(
5851
+ )), /* @__PURE__ */ React23.createElement("div", { className: "mt-6 p-4 bg-blue-50 rounded-lg" }, /* @__PURE__ */ React23.createElement("h3", { className: "text-sm font-medium text-blue-800 mb-2" }, "\u67E5\u8BE2\u8BF4\u660E"), /* @__PURE__ */ React23.createElement("ul", { className: "text-sm text-blue-700 space-y-1" }, /* @__PURE__ */ React23.createElement("li", null, "\u2022 \u8BF7\u8F93\u5165\u60A8\u9884\u8BA2\u65F6\u4F7F\u7528\u7684QQ\u53F7\u548C\u624B\u673A\u53F7"), /* @__PURE__ */ React23.createElement("li", null, "\u2022 \u7CFB\u7EDF\u5C06\u663E\u793A\u60A8\u6240\u6709\u7684\u9884\u8BA2\u5386\u53F2\u8BB0\u5F55"), /* @__PURE__ */ React23.createElement("li", null, "\u2022 \u60A8\u53EF\u4EE5\u67E5\u770B\u9884\u8BA2\u72B6\u6001\u3001\u5546\u54C1\u8BE6\u60C5\u7B49\u4FE1\u606F"), /* @__PURE__ */ React23.createElement("li", null, "\u2022 \u652F\u6301\u5220\u9664\u5355\u6761\u8BB0\u5F55\u6216\u6E05\u7A7A\u6240\u6709\u8BB0\u5F55"))))) : /* @__PURE__ */ React23.createElement("div", null, /* @__PURE__ */ React23.createElement("div", { className: "mb-6" }, /* @__PURE__ */ React23.createElement(
6886
5852
  "button",
6887
5853
  {
6888
5854
  onClick: handleBack,
6889
5855
  className: "inline-flex items-center gap-2 text-slate-600 hover:text-slate-800 transition-colors"
6890
5856
  },
6891
- /* @__PURE__ */ React29.createElement(ArrowLeft, { size: 20 }),
5857
+ /* @__PURE__ */ React23.createElement(ArrowLeft, { size: 20 }),
6892
5858
  "\u8FD4\u56DE\u67E5\u8BE2"
6893
- )), /* @__PURE__ */ React29.createElement(
5859
+ )), /* @__PURE__ */ React23.createElement(
6894
5860
  CartHistoryPage,
6895
5861
  {
6896
5862
  qqNumber: formData.qqNumber,
@@ -6900,5 +5866,5 @@ function UserHistoryPage() {
6900
5866
  }
6901
5867
 
6902
5868
  export { AddConfigItemDialog, AddToCartButton, ArtworkOrderManagerV2, ArtworkViewer, BOOKING_EXPORT_FIELDS, BookingAdminPanel, BookingModal, BookingPage, CartButton, CartHistoryPage, CartModal, CartPage, CollectionCard, CollectionList, CollectionOrderManagerV2, ConfigPage, DEFAULT_BOOKING_EXPORT_CONFIG, DeadlinePopup, DeadlinePopupManager, DeleteConfirmDialog, MobileAlbumViewer, PopupConfigManagement, ShowMasterPieces, SystemConfigManager, ThumbnailSidebar, UniversalImageUpload, UserHistoryPage, clearConfigCache, getArtworkImageUrl, getShowMasterpieceFileConfig, getStorageModeDisplayName, refreshFileServiceConfig, shouldUseUniversalFileService, uploadArtworkImage };
6903
- //# sourceMappingURL=chunk-PONZPO3U.mjs.map
6904
- //# sourceMappingURL=chunk-PONZPO3U.mjs.map
5869
+ //# sourceMappingURL=chunk-UTB72ZJ7.mjs.map
5870
+ //# sourceMappingURL=chunk-UTB72ZJ7.mjs.map