sa2kit 1.6.30 → 1.6.31

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 (237) hide show
  1. package/dist/AliyunOSSProvider-P6TOVKMM.mjs +6 -0
  2. package/dist/{AliyunOSSProvider-KJYRIZES.mjs.map → AliyunOSSProvider-P6TOVKMM.mjs.map} +1 -1
  3. package/dist/AliyunOSSProvider-Z5BRBCG6.js +15 -0
  4. package/dist/{AliyunOSSProvider-FWAKUB2T.js.map → AliyunOSSProvider-Z5BRBCG6.js.map} +1 -1
  5. package/dist/ConfigService-3DIC6C3Q.js +21 -0
  6. package/dist/{ConfigService-7MEZXKJ5.js.map → ConfigService-3DIC6C3Q.js.map} +1 -1
  7. package/dist/ConfigService-V6ZK273Z.mjs +4 -0
  8. package/dist/{ConfigService-BV57YYFW.mjs.map → ConfigService-V6ZK273Z.mjs.map} +1 -1
  9. package/dist/LocalStorageProvider-3RVPCQB3.mjs +6 -0
  10. package/dist/{LocalStorageProvider-RTPMUOZ2.mjs.map → LocalStorageProvider-3RVPCQB3.mjs.map} +1 -1
  11. package/dist/LocalStorageProvider-PP7MA5OT.js +15 -0
  12. package/dist/{LocalStorageProvider-XSRCUXOU.js.map → LocalStorageProvider-PP7MA5OT.js.map} +1 -1
  13. package/dist/PMXParser-2VTA737I.js +13 -0
  14. package/dist/{PMXParser-YBS3B6HM.js.map → PMXParser-2VTA737I.js.map} +1 -1
  15. package/dist/PMXParser-RNVQL76A.mjs +4 -0
  16. package/dist/{PMXParser-L6IWHL4I.mjs.map → PMXParser-RNVQL76A.mjs.map} +1 -1
  17. package/dist/analytics/index.js +46 -45
  18. package/dist/analytics/index.js.map +1 -1
  19. package/dist/analytics/index.mjs +45 -44
  20. package/dist/analytics/index.mjs.map +1 -1
  21. package/dist/analytics/server/index.js +4 -4
  22. package/dist/analytics/server/index.js.map +1 -1
  23. package/dist/analytics/server/index.mjs +4 -4
  24. package/dist/analytics/server/index.mjs.map +1 -1
  25. package/dist/api/index.js +5 -5
  26. package/dist/api/index.js.map +1 -1
  27. package/dist/api/index.mjs +5 -5
  28. package/dist/api/index.mjs.map +1 -1
  29. package/dist/audioDetection/index.js +17 -16
  30. package/dist/audioDetection/index.js.map +1 -1
  31. package/dist/audioDetection/index.mjs +17 -16
  32. package/dist/audioDetection/index.mjs.map +1 -1
  33. package/dist/auth/client/index.js +4 -4
  34. package/dist/auth/client/index.mjs +1 -1
  35. package/dist/auth/components/index.js +3 -3
  36. package/dist/auth/components/index.js.map +1 -1
  37. package/dist/auth/components/index.mjs +3 -3
  38. package/dist/auth/components/index.mjs.map +1 -1
  39. package/dist/auth/index.js +29 -29
  40. package/dist/auth/index.mjs +5 -5
  41. package/dist/auth/middleware/index.js +3 -3
  42. package/dist/auth/middleware/index.mjs +2 -2
  43. package/dist/auth/routes/index.js +14 -14
  44. package/dist/auth/routes/index.mjs +2 -2
  45. package/dist/auth/services/index.js +7 -7
  46. package/dist/auth/services/index.mjs +1 -1
  47. package/dist/calendar/index.js +146 -182
  48. package/dist/calendar/index.js.map +1 -1
  49. package/dist/calendar/index.mjs +139 -175
  50. package/dist/calendar/index.mjs.map +1 -1
  51. package/dist/calendar/routes/index.js +1 -1
  52. package/dist/calendar/routes/index.js.map +1 -1
  53. package/dist/calendar/routes/index.mjs +1 -1
  54. package/dist/calendar/routes/index.mjs.map +1 -1
  55. package/dist/{chunk-5YQ5B7IZ.js → chunk-24HGREE6.js} +5 -5
  56. package/dist/{chunk-5YQ5B7IZ.js.map → chunk-24HGREE6.js.map} +1 -1
  57. package/dist/{chunk-6PRFP5EG.js → chunk-25OFOKNF.js} +6 -6
  58. package/dist/chunk-25OFOKNF.js.map +1 -0
  59. package/dist/{chunk-KQGP6BTS.mjs → chunk-3DXPQ4YV.mjs} +6 -6
  60. package/dist/chunk-3DXPQ4YV.mjs.map +1 -0
  61. package/dist/{chunk-3BGPZN4X.mjs → chunk-3NHAT7D4.mjs} +12 -12
  62. package/dist/chunk-3NHAT7D4.mjs.map +1 -0
  63. package/dist/{chunk-MW4BCIZC.mjs → chunk-4HC6M7FK.mjs} +3 -3
  64. package/dist/chunk-4HC6M7FK.mjs.map +1 -0
  65. package/dist/{chunk-ESRCX5TQ.mjs → chunk-52TN2QSS.mjs} +3 -3
  66. package/dist/{chunk-ESRCX5TQ.mjs.map → chunk-52TN2QSS.mjs.map} +1 -1
  67. package/dist/{chunk-DW2ZTOCV.js → chunk-5A7ERLKK.js} +105 -106
  68. package/dist/chunk-5A7ERLKK.js.map +1 -0
  69. package/dist/{chunk-CNTILN5J.mjs → chunk-5YQ62BKX.mjs} +20 -19
  70. package/dist/chunk-5YQ62BKX.mjs.map +1 -0
  71. package/dist/{chunk-6W5BMXJG.js → chunk-6OWNMJKG.js} +4 -4
  72. package/dist/{chunk-6W5BMXJG.js.map → chunk-6OWNMJKG.js.map} +1 -1
  73. package/dist/{chunk-TV3VKRJK.mjs → chunk-77M5AQG3.mjs} +37 -37
  74. package/dist/chunk-77M5AQG3.mjs.map +1 -0
  75. package/dist/{chunk-DUHZ7VZP.js → chunk-7VRT55ZD.js} +3 -3
  76. package/dist/chunk-7VRT55ZD.js.map +1 -0
  77. package/dist/{chunk-LX4XX6W7.js → chunk-C54W2CMK.js} +16 -16
  78. package/dist/chunk-C54W2CMK.js.map +1 -0
  79. package/dist/{chunk-3WOAPLEG.mjs → chunk-EB4NR623.mjs} +27 -26
  80. package/dist/chunk-EB4NR623.mjs.map +1 -0
  81. package/dist/{chunk-CD77U7LZ.js → chunk-GBPLX42J.js} +9 -9
  82. package/dist/chunk-GBPLX42J.js.map +1 -0
  83. package/dist/{chunk-TFQF2HDO.mjs → chunk-HDEOCX2L.mjs} +12 -12
  84. package/dist/chunk-HDEOCX2L.mjs.map +1 -0
  85. package/dist/{chunk-LFG6FPM5.mjs → chunk-KIP2CERU.mjs} +37 -38
  86. package/dist/chunk-KIP2CERU.mjs.map +1 -0
  87. package/dist/{chunk-6YKMCPQI.mjs → chunk-KZKIH4AS.mjs} +4 -4
  88. package/dist/chunk-KZKIH4AS.mjs.map +1 -0
  89. package/dist/{chunk-6MQUBPKB.mjs → chunk-LJ4CCSSY.mjs} +3 -3
  90. package/dist/{chunk-6MQUBPKB.mjs.map → chunk-LJ4CCSSY.mjs.map} +1 -1
  91. package/dist/{chunk-TOC5FSHP.js → chunk-NJ2SNXBJ.js} +12 -12
  92. package/dist/chunk-NJ2SNXBJ.js.map +1 -0
  93. package/dist/{chunk-OCR5DS4C.mjs → chunk-PE5EAHZK.mjs} +3 -3
  94. package/dist/chunk-PE5EAHZK.mjs.map +1 -0
  95. package/dist/{chunk-LZHMNOED.js → chunk-Q5EDCKQA.js} +26 -26
  96. package/dist/chunk-Q5EDCKQA.js.map +1 -0
  97. package/dist/{chunk-CLKKZSPZ.js → chunk-RBKGYWME.js} +20 -19
  98. package/dist/chunk-RBKGYWME.js.map +1 -0
  99. package/dist/{chunk-VRTRSEEH.mjs → chunk-RSJSZ7QH.mjs} +11 -11
  100. package/dist/chunk-RSJSZ7QH.mjs.map +1 -0
  101. package/dist/{chunk-E7RGBAYJ.js → chunk-TDCDEBGP.js} +30 -29
  102. package/dist/chunk-TDCDEBGP.js.map +1 -0
  103. package/dist/{chunk-T5OZHYVM.mjs → chunk-TVROG2Q4.mjs} +15 -15
  104. package/dist/chunk-TVROG2Q4.mjs.map +1 -0
  105. package/dist/{chunk-JZXJQMVE.js → chunk-UIFFDRTE.js} +11 -11
  106. package/dist/chunk-UIFFDRTE.js.map +1 -0
  107. package/dist/{chunk-UOFTHYIH.js → chunk-UL6XJGUZ.js} +4 -4
  108. package/dist/chunk-UL6XJGUZ.js.map +1 -0
  109. package/dist/{chunk-A3UP56MS.js → chunk-WA67GZSZ.js} +3 -3
  110. package/dist/chunk-WA67GZSZ.js.map +1 -0
  111. package/dist/{chunk-OLHGZXN3.mjs → chunk-WEEXCPSE.mjs} +5 -5
  112. package/dist/chunk-WEEXCPSE.mjs.map +1 -0
  113. package/dist/{chunk-OPPF3326.js → chunk-X3UU7JHT.js} +38 -38
  114. package/dist/chunk-X3UU7JHT.js.map +1 -0
  115. package/dist/{chunk-QU5OT4DF.js → chunk-XJ7ZAGC5.js} +5 -5
  116. package/dist/chunk-XJ7ZAGC5.js.map +1 -0
  117. package/dist/{chunk-ZI25QCHD.mjs → chunk-YOTQG4NP.mjs} +25 -25
  118. package/dist/chunk-YOTQG4NP.mjs.map +1 -0
  119. package/dist/{chunk-QAT2RWAO.mjs → chunk-Z36R3P62.mjs} +7 -7
  120. package/dist/chunk-Z36R3P62.mjs.map +1 -0
  121. package/dist/{chunk-7Z5LLJ3A.js → chunk-ZWQJSZEY.js} +13 -13
  122. package/dist/chunk-ZWQJSZEY.js.map +1 -0
  123. package/dist/config/index.js +6 -6
  124. package/dist/config/index.js.map +1 -1
  125. package/dist/config/index.mjs +6 -6
  126. package/dist/config/index.mjs.map +1 -1
  127. package/dist/config/server/index.js +37 -37
  128. package/dist/config/server/index.js.map +1 -1
  129. package/dist/config/server/index.mjs +37 -37
  130. package/dist/config/server/index.mjs.map +1 -1
  131. package/dist/i18n/index.d.mts +2 -2
  132. package/dist/i18n/index.d.ts +2 -2
  133. package/dist/i18n/index.js +16 -17
  134. package/dist/i18n/index.js.map +1 -1
  135. package/dist/i18n/index.mjs +16 -17
  136. package/dist/i18n/index.mjs.map +1 -1
  137. package/dist/imageCrop/index.js +11 -10
  138. package/dist/imageCrop/index.js.map +1 -1
  139. package/dist/imageCrop/index.mjs +11 -10
  140. package/dist/imageCrop/index.mjs.map +1 -1
  141. package/dist/index.js +221 -246
  142. package/dist/index.js.map +1 -1
  143. package/dist/index.mjs +79 -104
  144. package/dist/index.mjs.map +1 -1
  145. package/dist/logger/index.js +6 -6
  146. package/dist/logger/index.mjs +1 -1
  147. package/dist/mmd/admin/index.js +11 -10
  148. package/dist/mmd/admin/index.js.map +1 -1
  149. package/dist/mmd/admin/index.mjs +11 -10
  150. package/dist/mmd/admin/index.mjs.map +1 -1
  151. package/dist/mmd/index.js +223 -241
  152. package/dist/mmd/index.js.map +1 -1
  153. package/dist/mmd/index.mjs +220 -238
  154. package/dist/mmd/index.mjs.map +1 -1
  155. package/dist/mmd/server/index.js +6 -6
  156. package/dist/mmd/server/index.js.map +1 -1
  157. package/dist/mmd/server/index.mjs +6 -6
  158. package/dist/mmd/server/index.mjs.map +1 -1
  159. package/dist/music/index.js +16 -16
  160. package/dist/music/index.mjs +2 -2
  161. package/dist/music/server/index.js +8 -8
  162. package/dist/music/server/index.mjs +1 -1
  163. package/dist/request/index.js +2 -2
  164. package/dist/request/index.js.map +1 -1
  165. package/dist/request/index.mjs +2 -2
  166. package/dist/request/index.mjs.map +1 -1
  167. package/dist/storage/index.js +11 -11
  168. package/dist/storage/index.mjs +2 -2
  169. package/dist/testYourself/admin/index.js +3 -3
  170. package/dist/testYourself/admin/index.mjs +1 -1
  171. package/dist/testYourself/index.js +22 -22
  172. package/dist/testYourself/index.js.map +1 -1
  173. package/dist/testYourself/index.mjs +14 -14
  174. package/dist/testYourself/index.mjs.map +1 -1
  175. package/dist/testYourself/server/index.js +4 -4
  176. package/dist/testYourself/server/index.mjs +1 -1
  177. package/dist/universalExport/index.d.mts +3 -3
  178. package/dist/universalExport/index.d.ts +3 -3
  179. package/dist/universalExport/index.js +48 -47
  180. package/dist/universalExport/index.js.map +1 -1
  181. package/dist/universalExport/index.mjs +48 -47
  182. package/dist/universalExport/index.mjs.map +1 -1
  183. package/dist/universalExport/server/index.js +29 -29
  184. package/dist/universalExport/server/index.js.map +1 -1
  185. package/dist/universalExport/server/index.mjs +28 -28
  186. package/dist/universalExport/server/index.mjs.map +1 -1
  187. package/dist/universalFile/index.d.mts +3 -3
  188. package/dist/universalFile/index.d.ts +3 -3
  189. package/dist/universalFile/index.js +73 -72
  190. package/dist/universalFile/index.js.map +1 -1
  191. package/dist/universalFile/index.mjs +73 -72
  192. package/dist/universalFile/index.mjs.map +1 -1
  193. package/dist/universalFile/server/index.js +258 -260
  194. package/dist/universalFile/server/index.js.map +1 -1
  195. package/dist/universalFile/server/index.mjs +244 -246
  196. package/dist/universalFile/server/index.mjs.map +1 -1
  197. package/dist/utils/index.js +11 -11
  198. package/dist/utils/index.mjs +2 -2
  199. package/package.json +1 -1
  200. package/dist/AliyunOSSProvider-FWAKUB2T.js +0 -15
  201. package/dist/AliyunOSSProvider-KJYRIZES.mjs +0 -6
  202. package/dist/ConfigService-7MEZXKJ5.js +0 -21
  203. package/dist/ConfigService-BV57YYFW.mjs +0 -4
  204. package/dist/LocalStorageProvider-RTPMUOZ2.mjs +0 -6
  205. package/dist/LocalStorageProvider-XSRCUXOU.js +0 -15
  206. package/dist/PMXParser-L6IWHL4I.mjs +0 -4
  207. package/dist/PMXParser-YBS3B6HM.js +0 -13
  208. package/dist/chunk-3BGPZN4X.mjs.map +0 -1
  209. package/dist/chunk-3WOAPLEG.mjs.map +0 -1
  210. package/dist/chunk-6PRFP5EG.js.map +0 -1
  211. package/dist/chunk-6YKMCPQI.mjs.map +0 -1
  212. package/dist/chunk-7Z5LLJ3A.js.map +0 -1
  213. package/dist/chunk-A3UP56MS.js.map +0 -1
  214. package/dist/chunk-CD77U7LZ.js.map +0 -1
  215. package/dist/chunk-CLKKZSPZ.js.map +0 -1
  216. package/dist/chunk-CNTILN5J.mjs.map +0 -1
  217. package/dist/chunk-DUHZ7VZP.js.map +0 -1
  218. package/dist/chunk-DW2ZTOCV.js.map +0 -1
  219. package/dist/chunk-E7RGBAYJ.js.map +0 -1
  220. package/dist/chunk-JZXJQMVE.js.map +0 -1
  221. package/dist/chunk-KQGP6BTS.mjs.map +0 -1
  222. package/dist/chunk-LFG6FPM5.mjs.map +0 -1
  223. package/dist/chunk-LX4XX6W7.js.map +0 -1
  224. package/dist/chunk-LZHMNOED.js.map +0 -1
  225. package/dist/chunk-MW4BCIZC.mjs.map +0 -1
  226. package/dist/chunk-OCR5DS4C.mjs.map +0 -1
  227. package/dist/chunk-OLHGZXN3.mjs.map +0 -1
  228. package/dist/chunk-OPPF3326.js.map +0 -1
  229. package/dist/chunk-QAT2RWAO.mjs.map +0 -1
  230. package/dist/chunk-QU5OT4DF.js.map +0 -1
  231. package/dist/chunk-T5OZHYVM.mjs.map +0 -1
  232. package/dist/chunk-TFQF2HDO.mjs.map +0 -1
  233. package/dist/chunk-TOC5FSHP.js.map +0 -1
  234. package/dist/chunk-TV3VKRJK.mjs.map +0 -1
  235. package/dist/chunk-UOFTHYIH.js.map +0 -1
  236. package/dist/chunk-VRTRSEEH.mjs.map +0 -1
  237. package/dist/chunk-ZI25QCHD.mjs.map +0 -1
@@ -1,10 +1,11 @@
1
1
  'use strict';
2
2
 
3
- var chunkDW2ZTOCV_js = require('../chunk-DW2ZTOCV.js');
4
- require('../chunk-7Z5LLJ3A.js');
5
- require('../chunk-6PRFP5EG.js');
3
+ var chunk5A7ERLKK_js = require('../chunk-5A7ERLKK.js');
4
+ require('../chunk-ZWQJSZEY.js');
5
+ require('../chunk-25OFOKNF.js');
6
6
  require('../chunk-DGUM43GV.js');
7
7
  var React2 = require('react');
8
+ var clsx = require('clsx');
8
9
  var core = require('@dnd-kit/core');
9
10
 
10
11
  function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
@@ -81,7 +82,7 @@ function formatDate(date) {
81
82
  const year = date.getFullYear();
82
83
  const month = String(date.getMonth() + 1).padStart(2, "0");
83
84
  const day = String(date.getDate()).padStart(2, "0");
84
- return `${year}-${month}-${day}`;
85
+ return year + "-" + month + "-" + day;
85
86
  }
86
87
  function formatTime(date) {
87
88
  return date.toLocaleTimeString("zh-CN", {
@@ -109,7 +110,7 @@ function toLocalISOString(date) {
109
110
  const minutes = String(date.getMinutes()).padStart(2, "0");
110
111
  const seconds = String(date.getSeconds()).padStart(2, "0");
111
112
  const milliseconds = String(date.getMilliseconds()).padStart(3, "0");
112
- return `${year}-${month}-${day}T${hours}:${minutes}:${seconds}.${milliseconds}`;
113
+ return year + "-" + month + "-" + day + "T" + hours + ":" + minutes + ":" + seconds + "." + milliseconds;
113
114
  }
114
115
  function getMonthStart(date) {
115
116
  return new Date(date.getFullYear(), date.getMonth(), 1);
@@ -256,9 +257,9 @@ function getRelativeTime(date, locale = "zh-CN") {
256
257
  } else if (diffInDays === -1) {
257
258
  return "\u6628\u5929";
258
259
  } else if (diffInDays > 1 && diffInDays <= 7) {
259
- return `${diffInDays}\u5929\u540E`;
260
+ return diffInDays + "\u5929\u540E";
260
261
  } else if (diffInDays < -1 && diffInDays >= -7) {
261
- return `${Math.abs(diffInDays)}\u5929\u524D`;
262
+ return Math.abs(diffInDays) + "\u5929\u524D";
262
263
  }
263
264
  return formatDate(date);
264
265
  }
@@ -459,13 +460,13 @@ function EventList({
459
460
  "button",
460
461
  {
461
462
  onClick: () => handleSortChange(field),
462
- className: `flex items-center px-3 py-1.5 text-sm font-medium rounded-lg transition-colors ${isActive ? "bg-blue-100 text-blue-700" : "text-gray-600 hover:bg-gray-100"}`
463
+ className: clsx.clsx("flex items-center px-3 py-1.5 text-sm font-medium rounded-lg transition-colors", isActive ? "bg-blue-100 text-blue-700" : "text-gray-600 hover:bg-gray-100")
463
464
  },
464
465
  label,
465
466
  /* @__PURE__ */ React2__default.default.createElement(
466
467
  "svg",
467
468
  {
468
- className: `ml-1 w-4 h-4 transition-transform ${isActive ? isAsc ? "rotate-180" : "" : "opacity-50"}`,
469
+ className: clsx.clsx("ml-1 w-4 h-4 transition-transform", isActive ? isAsc ? "rotate-180" : "" : "opacity-50"),
469
470
  fill: "none",
470
471
  stroke: "currentColor",
471
472
  viewBox: "0 0 24 24"
@@ -510,10 +511,10 @@ function EventList({
510
511
  "div",
511
512
  {
512
513
  key: event.id,
513
- className: `p-4 rounded-lg border-l-4 cursor-pointer hover:shadow-md transition-all ${getEventColorClass(event.color)} ${isSelected ? "ring-2 ring-blue-500 ring-opacity-50" : ""}`,
514
+ className: clsx.clsx("p-4 rounded-lg border-l-4 cursor-pointer hover:shadow-md transition-all", getEventColorClass(event.color), isSelected ? "ring-2 ring-blue-500 ring-opacity-50" : ""),
514
515
  onClick: () => !isSelectionMode && onEventClick(event)
515
516
  },
516
- /* @__PURE__ */ React2__default.default.createElement("div", { className: "flex items-start justify-between" }, /* @__PURE__ */ React2__default.default.createElement("div", { className: "flex items-start gap-3 flex-1" }, isSelectionMode && /* @__PURE__ */ React2__default.default.createElement("div", { className: "pt-1" }, renderCheckbox(event.id)), /* @__PURE__ */ React2__default.default.createElement("div", { className: "flex-1" }, /* @__PURE__ */ React2__default.default.createElement("div", { className: "flex items-center gap-3 mb-2" }, /* @__PURE__ */ React2__default.default.createElement("h3", { className: "text-lg font-semibold text-gray-900" }, event.title), /* @__PURE__ */ React2__default.default.createElement("span", { className: `px-2 py-1 text-xs font-medium rounded border ${priorityDisplay.color}` }, priorityDisplay.text)), event.description && /* @__PURE__ */ React2__default.default.createElement("p", { className: "text-gray-600 mb-2 line-clamp-2" }, event.description), /* @__PURE__ */ React2__default.default.createElement("div", { className: "flex items-center gap-4 text-sm text-gray-500" }, /* @__PURE__ */ React2__default.default.createElement("div", { className: "flex items-center gap-1" }, /* @__PURE__ */ React2__default.default.createElement("svg", { className: "w-4 h-4", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24" }, /* @__PURE__ */ React2__default.default.createElement("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M8 7V3m8 4V3m-9 8h10M5 21h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v12a2 2 0 002 2z" })), /* @__PURE__ */ React2__default.default.createElement("span", null, event.startTime.toLocaleDateString("zh-CN"), " ", !event.allDay && event.startTime.toLocaleTimeString("zh-CN", { hour: "2-digit", minute: "2-digit" }))), event.location && /* @__PURE__ */ React2__default.default.createElement("div", { className: "flex items-center gap-1" }, /* @__PURE__ */ React2__default.default.createElement("svg", { className: "w-4 h-4", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24" }, /* @__PURE__ */ React2__default.default.createElement("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M17.657 16.657L13.414 20.9a1.998 1.998 0 01-2.827 0l-4.244-4.243a8 8 0 1111.314 0z" }), /* @__PURE__ */ React2__default.default.createElement("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M15 11a3 3 0 11-6 0 3 3 0 016 0z" })), /* @__PURE__ */ React2__default.default.createElement("span", null, event.location))))), !isSelectionMode && /* @__PURE__ */ React2__default.default.createElement("div", { className: "flex items-center gap-2 ml-4" }, /* @__PURE__ */ React2__default.default.createElement(
517
+ /* @__PURE__ */ React2__default.default.createElement("div", { className: "flex items-start justify-between" }, /* @__PURE__ */ React2__default.default.createElement("div", { className: "flex items-start gap-3 flex-1" }, isSelectionMode && /* @__PURE__ */ React2__default.default.createElement("div", { className: "pt-1" }, renderCheckbox(event.id)), /* @__PURE__ */ React2__default.default.createElement("div", { className: "flex-1" }, /* @__PURE__ */ React2__default.default.createElement("div", { className: "flex items-center gap-3 mb-2" }, /* @__PURE__ */ React2__default.default.createElement("h3", { className: "text-lg font-semibold text-gray-900" }, event.title), /* @__PURE__ */ React2__default.default.createElement("span", { className: clsx.clsx("px-2 py-1 text-xs font-medium rounded border", priorityDisplay.color) }, priorityDisplay.text)), event.description && /* @__PURE__ */ React2__default.default.createElement("p", { className: "text-gray-600 mb-2 line-clamp-2" }, event.description), /* @__PURE__ */ React2__default.default.createElement("div", { className: "flex items-center gap-4 text-sm text-gray-500" }, /* @__PURE__ */ React2__default.default.createElement("div", { className: "flex items-center gap-1" }, /* @__PURE__ */ React2__default.default.createElement("svg", { className: "w-4 h-4", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24" }, /* @__PURE__ */ React2__default.default.createElement("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M8 7V3m8 4V3m-9 8h10M5 21h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v12a2 2 0 002 2z" })), /* @__PURE__ */ React2__default.default.createElement("span", null, event.startTime.toLocaleDateString("zh-CN"), " ", !event.allDay && event.startTime.toLocaleTimeString("zh-CN", { hour: "2-digit", minute: "2-digit" }))), event.location && /* @__PURE__ */ React2__default.default.createElement("div", { className: "flex items-center gap-1" }, /* @__PURE__ */ React2__default.default.createElement("svg", { className: "w-4 h-4", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24" }, /* @__PURE__ */ React2__default.default.createElement("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M17.657 16.657L13.414 20.9a1.998 1.998 0 01-2.827 0l-4.244-4.243a8 8 0 1111.314 0z" }), /* @__PURE__ */ React2__default.default.createElement("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M15 11a3 3 0 11-6 0 3 3 0 016 0z" })), /* @__PURE__ */ React2__default.default.createElement("span", null, event.location))))), !isSelectionMode && /* @__PURE__ */ React2__default.default.createElement("div", { className: "flex items-center gap-2 ml-4" }, /* @__PURE__ */ React2__default.default.createElement(
517
518
  "button",
518
519
  {
519
520
  onClick: (e) => {
@@ -545,10 +546,10 @@ function EventList({
545
546
  "div",
546
547
  {
547
548
  key: event.id,
548
- className: `p-4 rounded-lg border cursor-pointer hover:shadow-lg transition-all ${getEventColorClass(event.color)} border-l-4 ${isSelected ? "ring-2 ring-blue-500 ring-opacity-50" : ""}`,
549
+ className: clsx.clsx("p-4 rounded-lg border cursor-pointer hover:shadow-lg transition-all", getEventColorClass(event.color), "border-l-4", isSelected ? "ring-2 ring-blue-500 ring-opacity-50" : ""),
549
550
  onClick: () => !isSelectionMode && onEventClick(event)
550
551
  },
551
- /* @__PURE__ */ React2__default.default.createElement("div", { className: "flex items-start justify-between mb-3" }, isSelectionMode && /* @__PURE__ */ React2__default.default.createElement("div", { className: "pt-1 mr-2" }, renderCheckbox(event.id)), /* @__PURE__ */ React2__default.default.createElement("h3", { className: "text-lg font-semibold text-gray-900 flex-1 pr-2" }, event.title), /* @__PURE__ */ React2__default.default.createElement("span", { className: `px-2 py-1 text-xs font-medium rounded border flex-shrink-0 ${priorityDisplay.color}` }, priorityDisplay.text)),
552
+ /* @__PURE__ */ React2__default.default.createElement("div", { className: "flex items-start justify-between mb-3" }, isSelectionMode && /* @__PURE__ */ React2__default.default.createElement("div", { className: "pt-1 mr-2" }, renderCheckbox(event.id)), /* @__PURE__ */ React2__default.default.createElement("h3", { className: "text-lg font-semibold text-gray-900 flex-1 pr-2" }, event.title), /* @__PURE__ */ React2__default.default.createElement("span", { className: clsx.clsx("px-2 py-1 text-xs font-medium rounded border flex-shrink-0", priorityDisplay.color) }, priorityDisplay.text)),
552
553
  event.description && /* @__PURE__ */ React2__default.default.createElement("p", { className: "text-gray-600 text-sm mb-3 line-clamp-3" }, event.description),
553
554
  /* @__PURE__ */ React2__default.default.createElement("div", { className: "space-y-2 text-sm text-gray-500" }, /* @__PURE__ */ React2__default.default.createElement("div", { className: "flex items-center gap-1" }, /* @__PURE__ */ React2__default.default.createElement("svg", { className: "w-4 h-4 flex-shrink-0", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24" }, /* @__PURE__ */ React2__default.default.createElement("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M8 7V3m8 4V3m-9 8h10M5 21h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v12a2 2 0 002 2z" })), /* @__PURE__ */ React2__default.default.createElement("span", { className: "truncate" }, event.startTime.toLocaleDateString("zh-CN"), " ", !event.allDay && event.startTime.toLocaleTimeString("zh-CN", { hour: "2-digit", minute: "2-digit" }))), event.location && /* @__PURE__ */ React2__default.default.createElement("div", { className: "flex items-center gap-1" }, /* @__PURE__ */ React2__default.default.createElement("svg", { className: "w-4 h-4 flex-shrink-0", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24" }, /* @__PURE__ */ React2__default.default.createElement("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M17.657 16.657L13.414 20.9a1.998 1.998 0 01-2.827 0l-4.244-4.243a8 8 0 1111.314 0z" }), /* @__PURE__ */ React2__default.default.createElement("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M15 11a3 3 0 11-6 0 3 3 0 016 0z" })), /* @__PURE__ */ React2__default.default.createElement("span", { className: "truncate" }, event.location))),
554
555
  !isSelectionMode && /* @__PURE__ */ React2__default.default.createElement("div", { className: "flex items-center justify-end gap-2 mt-4 pt-3 border-t border-gray-200" }, /* @__PURE__ */ React2__default.default.createElement(
@@ -576,8 +577,8 @@ function EventList({
576
577
  ))
577
578
  );
578
579
  }));
579
- return /* @__PURE__ */ React2__default.default.createElement("div", { className: `space-y-6 ${className}` }, /* @__PURE__ */ React2__default.default.createElement("div", { className: "bg-white rounded-lg shadow-sm border border-gray-200 p-4" }, /* @__PURE__ */ React2__default.default.createElement("div", { className: "flex flex-col lg:flex-row lg:items-center lg:justify-between gap-4" }, /* @__PURE__ */ React2__default.default.createElement("div", { className: "flex-1 max-w-md" }, /* @__PURE__ */ React2__default.default.createElement(
580
- chunkDW2ZTOCV_js.SearchBox,
580
+ return /* @__PURE__ */ React2__default.default.createElement("div", { className: clsx.clsx("space-y-6", className) }, /* @__PURE__ */ React2__default.default.createElement("div", { className: "bg-white rounded-lg shadow-sm border border-gray-200 p-4" }, /* @__PURE__ */ React2__default.default.createElement("div", { className: "flex flex-col lg:flex-row lg:items-center lg:justify-between gap-4" }, /* @__PURE__ */ React2__default.default.createElement("div", { className: "flex-1 max-w-md" }, /* @__PURE__ */ React2__default.default.createElement(
581
+ chunk5A7ERLKK_js.SearchBox,
581
582
  {
582
583
  searchQuery: config.filter.searchText || "",
583
584
  onSearchChange: handleSearchChange,
@@ -614,17 +615,17 @@ function EventList({
614
615
  "button",
615
616
  {
616
617
  onClick: () => handleDisplayModeChange("list" /* LIST */),
617
- className: `px-3 py-1.5 text-sm font-medium rounded-md transition-colors ${config.displayMode === "list" /* LIST */ ? "bg-white text-gray-900 shadow-sm" : "text-gray-600 hover:text-gray-900"}`
618
+ className: clsx.clsx("px-3 py-1.5 text-sm font-medium rounded-md transition-colors", config.displayMode === "list" /* LIST */ ? "bg-white text-gray-900 shadow-sm" : "text-gray-600 hover:text-gray-900")
618
619
  },
619
620
  "\u5217\u8868"
620
621
  ), /* @__PURE__ */ React2__default.default.createElement(
621
622
  "button",
622
623
  {
623
624
  onClick: () => handleDisplayModeChange("grid" /* GRID */),
624
- className: `px-3 py-1.5 text-sm font-medium rounded-md transition-colors ${config.displayMode === "grid" /* GRID */ ? "bg-white text-gray-900 shadow-sm" : "text-gray-600 hover:text-gray-900"}`
625
+ className: clsx.clsx("px-3 py-1.5 text-sm font-medium rounded-md transition-colors", config.displayMode === "grid" /* GRID */ ? "bg-white text-gray-900 shadow-sm" : "text-gray-600 hover:text-gray-900")
625
626
  },
626
627
  "\u7F51\u683C"
627
- ))))), isSelectionMode && /* @__PURE__ */ React2__default.default.createElement("div", { className: "flex items-center justify-between mt-4 pt-4 border-t border-gray-200" }, /* @__PURE__ */ React2__default.default.createElement("div", { className: "flex items-center gap-3" }, /* @__PURE__ */ React2__default.default.createElement("label", { className: "flex items-center gap-2 text-sm font-medium text-gray-700" }, renderSelectAllCheckbox(), "\u5168\u9009\u5F53\u524D\u9875"), /* @__PURE__ */ React2__default.default.createElement("span", { className: "text-sm text-gray-600" }, "\u5DF2\u9009\u62E9 ", selectedEventIds.size, " \u4E2A\u4E8B\u4EF6"))), !isSelectionMode && /* @__PURE__ */ React2__default.default.createElement("div", { className: "flex flex-wrap items-center gap-2 mt-4 pt-4 border-t border-gray-200" }, /* @__PURE__ */ React2__default.default.createElement("span", { className: "text-sm text-gray-700 mr-2" }, "\u6392\u5E8F:"), renderSortButton("startTime" /* START_TIME */, "\u65E5\u671F"), renderSortButton("title" /* TITLE */, "\u6807\u9898"), renderSortButton("priority" /* PRIORITY */, "\u4F18\u5148\u7EA7"), renderSortButton("createdAt" /* CREATED_AT */, "\u521B\u5EFA\u65F6\u95F4"), renderSortButton("updatedAt" /* UPDATED_AT */, "\u66F4\u65B0\u65F6\u95F4"))), /* @__PURE__ */ React2__default.default.createElement("div", { className: "flex items-center justify-between" }, /* @__PURE__ */ React2__default.default.createElement("div", { className: "text-sm text-gray-600" }, "\u5171 ", sortedAndFilteredEvents.length, " \u4E2A\u4E8B\u4EF6", config.filter.searchText && ` (\u641C\u7D22: "${config.filter.searchText}")`)), loading && /* @__PURE__ */ React2__default.default.createElement("div", { className: "flex justify-center py-8" }, /* @__PURE__ */ React2__default.default.createElement("div", { className: "animate-spin rounded-full h-8 w-8 border-b-2 border-blue-600" })), !loading && paginatedEvents.length > 0 && /* @__PURE__ */ React2__default.default.createElement(React2__default.default.Fragment, null, config.displayMode === "list" /* LIST */ ? renderListMode() : renderGridMode(), totalPages > 1 && /* @__PURE__ */ React2__default.default.createElement("div", { className: "flex items-center justify-between pt-6" }, /* @__PURE__ */ React2__default.default.createElement("div", { className: "text-sm text-gray-600" }, "\u7B2C ", config.currentPage, " \u9875\uFF0C\u5171 ", totalPages, " \u9875"), /* @__PURE__ */ React2__default.default.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ React2__default.default.createElement(
628
+ ))))), isSelectionMode && /* @__PURE__ */ React2__default.default.createElement("div", { className: "flex items-center justify-between mt-4 pt-4 border-t border-gray-200" }, /* @__PURE__ */ React2__default.default.createElement("div", { className: "flex items-center gap-3" }, /* @__PURE__ */ React2__default.default.createElement("label", { className: "flex items-center gap-2 text-sm font-medium text-gray-700" }, renderSelectAllCheckbox(), "\u5168\u9009\u5F53\u524D\u9875"), /* @__PURE__ */ React2__default.default.createElement("span", { className: "text-sm text-gray-600" }, "\u5DF2\u9009\u62E9 ", selectedEventIds.size, " \u4E2A\u4E8B\u4EF6"))), !isSelectionMode && /* @__PURE__ */ React2__default.default.createElement("div", { className: "flex flex-wrap items-center gap-2 mt-4 pt-4 border-t border-gray-200" }, /* @__PURE__ */ React2__default.default.createElement("span", { className: "text-sm text-gray-700 mr-2" }, "\u6392\u5E8F:"), renderSortButton("startTime" /* START_TIME */, "\u65E5\u671F"), renderSortButton("title" /* TITLE */, "\u6807\u9898"), renderSortButton("priority" /* PRIORITY */, "\u4F18\u5148\u7EA7"), renderSortButton("createdAt" /* CREATED_AT */, "\u521B\u5EFA\u65F6\u95F4"), renderSortButton("updatedAt" /* UPDATED_AT */, "\u66F4\u65B0\u65F6\u95F4"))), /* @__PURE__ */ React2__default.default.createElement("div", { className: "flex items-center justify-between" }, /* @__PURE__ */ React2__default.default.createElement("div", { className: "text-sm text-gray-600" }, "\u5171 ", sortedAndFilteredEvents.length, " \u4E2A\u4E8B\u4EF6", config.filter.searchText && ' (\u641C\u7D22: "' + config.filter.searchText + '")')), loading && /* @__PURE__ */ React2__default.default.createElement("div", { className: "flex justify-center py-8" }, /* @__PURE__ */ React2__default.default.createElement("div", { className: "animate-spin rounded-full h-8 w-8 border-b-2 border-blue-600" })), !loading && paginatedEvents.length > 0 && /* @__PURE__ */ React2__default.default.createElement(React2__default.default.Fragment, null, config.displayMode === "list" /* LIST */ ? renderListMode() : renderGridMode(), totalPages > 1 && /* @__PURE__ */ React2__default.default.createElement("div", { className: "flex items-center justify-between pt-6" }, /* @__PURE__ */ React2__default.default.createElement("div", { className: "text-sm text-gray-600" }, "\u7B2C ", config.currentPage, " \u9875\uFF0C\u5171 ", totalPages, " \u9875"), /* @__PURE__ */ React2__default.default.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ React2__default.default.createElement(
628
629
  "button",
629
630
  {
630
631
  onClick: () => handlePageChange(config.currentPage - 1),
@@ -641,13 +642,13 @@ function EventList({
641
642
  },
642
643
  "\u4E0B\u4E00\u9875"
643
644
  )))), !loading && paginatedEvents.length === 0 && /* @__PURE__ */ React2__default.default.createElement("div", { className: "text-center py-12" }, /* @__PURE__ */ React2__default.default.createElement("svg", { className: "w-16 h-16 mx-auto mb-4 text-gray-300", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24" }, /* @__PURE__ */ React2__default.default.createElement("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M8 7V3m8 4V3m-9 8h10M5 21h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v12a2 2 0 002 2z" })), /* @__PURE__ */ React2__default.default.createElement("h3", { className: "text-lg font-medium text-gray-900 mb-2" }, "\u6682\u65E0\u4E8B\u4EF6"), /* @__PURE__ */ React2__default.default.createElement("p", { className: "text-gray-600" }, config.filter.searchText || config.filter.priority || config.filter.color || config.filter.dateRange ? "\u6CA1\u6709\u627E\u5230\u7B26\u5408\u6761\u4EF6\u7684\u4E8B\u4EF6" : "\u8FD8\u6CA1\u6709\u521B\u5EFA\u4EFB\u4F55\u4E8B\u4EF6")), /* @__PURE__ */ React2__default.default.createElement(
644
- chunkDW2ZTOCV_js.ConfirmModal,
645
+ chunk5A7ERLKK_js.ConfirmModal,
645
646
  {
646
647
  isOpen: showBatchDeleteConfirm,
647
648
  onClose: () => setShowBatchDeleteConfirm(false),
648
649
  onConfirm: handleBatchDelete,
649
650
  title: "\u786E\u8BA4\u6279\u91CF\u5220\u9664",
650
- message: `\u786E\u5B9A\u8981\u5220\u9664\u9009\u4E2D\u7684 ${selectedEventIds.size} \u4E2A\u4E8B\u4EF6\u5417\uFF1F\u6B64\u64CD\u4F5C\u65E0\u6CD5\u64A4\u9500\u3002`,
651
+ message: "\u786E\u5B9A\u8981\u5220\u9664\u9009\u4E2D\u7684 " + selectedEventIds.size + " \u4E2A\u4E8B\u4EF6\u5417\uFF1F\u6B64\u64CD\u4F5C\u65E0\u6CD5\u64A4\u9500\u3002",
651
652
  confirmText: "\u5220\u9664",
652
653
  cancelText: "\u53D6\u6D88",
653
654
  isLoading: batchDeleteLoading
@@ -683,7 +684,7 @@ var EventTypeService = class {
683
684
  case "recurring" /* RECURRING */:
684
685
  return this.generateRecurringEvents(eventData, viewStartDate, viewEndDate, parentEventId);
685
686
  default:
686
- throw new Error(`\u4E0D\u652F\u6301\u7684\u4E8B\u4EF6\u7C7B\u578B: ${eventData.type}`);
687
+ throw new Error("\u4E0D\u652F\u6301\u7684\u4E8B\u4EF6\u7C7B\u578B: " + eventData.type);
687
688
  }
688
689
  }
689
690
  /**
@@ -804,7 +805,7 @@ var EventTypeService = class {
804
805
  nextDate.setFullYear(nextDate.getFullYear() + recurrence.interval);
805
806
  break;
806
807
  default:
807
- throw new Error(`\u4E0D\u652F\u6301\u7684\u91CD\u590D\u6A21\u5F0F: ${recurrence.pattern}`);
808
+ throw new Error("\u4E0D\u652F\u6301\u7684\u91CD\u590D\u6A21\u5F0F: " + recurrence.pattern);
808
809
  }
809
810
  return nextDate;
810
811
  }
@@ -913,28 +914,28 @@ var EventTypeService = class {
913
914
  return "\u5355\u6B21\u4E8B\u4EF6";
914
915
  case "multi_day" /* MULTI_DAY */:
915
916
  const dayCount = Math.ceil((eventData.endDate.getTime() - eventData.startDate.getTime()) / (24 * 60 * 60 * 1e3)) + 1;
916
- return `\u6301\u7EED ${dayCount} \u5929`;
917
+ return "\u6301\u7EED " + dayCount + " \u5929";
917
918
  case "recurring" /* RECURRING */:
918
919
  const { pattern, interval, count, endDate } = eventData.recurrence;
919
920
  let desc = "";
920
921
  switch (pattern) {
921
922
  case "daily" /* DAILY */:
922
- desc = interval === 1 ? "\u6BCF\u5929" : `\u6BCF ${interval} \u5929`;
923
+ desc = interval === 1 ? "\u6BCF\u5929" : "\u6BCF " + interval + " \u5929";
923
924
  break;
924
925
  case "weekly" /* WEEKLY */:
925
- desc = interval === 1 ? "\u6BCF\u5468" : `\u6BCF ${interval} \u5468`;
926
+ desc = interval === 1 ? "\u6BCF\u5468" : "\u6BCF " + interval + " \u5468";
926
927
  break;
927
928
  case "monthly" /* MONTHLY */:
928
- desc = interval === 1 ? "\u6BCF\u6708" : `\u6BCF ${interval} \u4E2A\u6708`;
929
+ desc = interval === 1 ? "\u6BCF\u6708" : "\u6BCF " + interval + " \u4E2A\u6708";
929
930
  break;
930
931
  case "yearly" /* YEARLY */:
931
- desc = interval === 1 ? "\u6BCF\u5E74" : `\u6BCF ${interval} \u5E74`;
932
+ desc = interval === 1 ? "\u6BCF\u5E74" : "\u6BCF " + interval + " \u5E74";
932
933
  break;
933
934
  }
934
935
  if (count) {
935
- desc += `\uFF0C\u5171 ${count} \u6B21`;
936
+ desc += "\uFF0C\u5171 " + count + " \u6B21";
936
937
  } else if (endDate) {
937
- desc += `\uFF0C\u76F4\u5230 ${endDate.toLocaleDateString("zh-CN")}`;
938
+ desc += "\uFF0C\u76F4\u5230 " + endDate.toLocaleDateString("zh-CN");
938
939
  }
939
940
  return desc;
940
941
  default:
@@ -959,9 +960,9 @@ function useEnhancedEvents() {
959
960
  startDate: toLocalISOString(startDate),
960
961
  endDate: toLocalISOString(endDate)
961
962
  });
962
- const response = await fetch(`/api/calendar/events?${params}`);
963
+ const response = await fetch("/api/calendar/events?" + params);
963
964
  if (!response.ok) {
964
- throw new Error(`\u83B7\u53D6\u4E8B\u4EF6\u5931\u8D25: ${response.status}`);
965
+ throw new Error("\u83B7\u53D6\u4E8B\u4EF6\u5931\u8D25: " + response.status);
965
966
  }
966
967
  const data = await response.json();
967
968
  if (!data.success) {
@@ -975,7 +976,7 @@ function useEnhancedEvents() {
975
976
  updatedAt: new Date(event.updatedAt)
976
977
  }));
977
978
  console.log("\u{1F4E5} \u83B7\u53D6\u5230\u7684\u4E8B\u4EF6\u6570\u636E:", {
978
- requestRange: `${formatDate(startDate)} \u5230 ${formatDate(endDate)}`,
979
+ requestRange: formatDate(startDate) + " \u5230 " + formatDate(endDate),
979
980
  eventCount: eventsWithDates.length,
980
981
  eventIds: eventsWithDates.map((e) => e.id)
981
982
  });
@@ -1026,7 +1027,7 @@ function useEnhancedEvents() {
1026
1027
  body: JSON.stringify(createRequest)
1027
1028
  });
1028
1029
  if (!response.ok) {
1029
- throw new Error(`\u521B\u5EFA\u4E8B\u4EF6\u5931\u8D25: ${response.status}`);
1030
+ throw new Error("\u521B\u5EFA\u4E8B\u4EF6\u5931\u8D25: " + response.status);
1030
1031
  }
1031
1032
  const data = await response.json();
1032
1033
  if (!data.success) {
@@ -1138,7 +1139,7 @@ function useEnhancedEvents() {
1138
1139
  );
1139
1140
  break;
1140
1141
  default:
1141
- throw new Error(`\u4E0D\u652F\u6301\u7684\u4E8B\u4EF6\u7C7B\u578B: ${eventData.type}`);
1142
+ throw new Error("\u4E0D\u652F\u6301\u7684\u4E8B\u4EF6\u7C7B\u578B: " + eventData.type);
1142
1143
  }
1143
1144
  const createdEvents = [];
1144
1145
  for (const generatedEvent of generatedEvents) {
@@ -1168,7 +1169,7 @@ function useEnhancedEvents() {
1168
1169
  body: JSON.stringify(createRequest)
1169
1170
  });
1170
1171
  if (!response.ok) {
1171
- throw new Error(`\u521B\u5EFA\u4E8B\u4EF6\u5B9E\u4F8B\u5931\u8D25: ${response.status}`);
1172
+ throw new Error("\u521B\u5EFA\u4E8B\u4EF6\u5B9E\u4F8B\u5931\u8D25: " + response.status);
1172
1173
  }
1173
1174
  const data = await response.json();
1174
1175
  if (!data.success) {
@@ -1206,7 +1207,7 @@ function useEnhancedEvents() {
1206
1207
  if (eventData.allDay !== void 0) updateRequest.allDay = eventData.allDay;
1207
1208
  if (eventData.location !== void 0) updateRequest.location = eventData.location;
1208
1209
  if (eventData.color !== void 0) updateRequest.color = eventData.color;
1209
- const response = await fetch(`/api/calendar/events/${eventId}`, {
1210
+ const response = await fetch("/api/calendar/events/" + eventId, {
1210
1211
  method: "PUT",
1211
1212
  headers: {
1212
1213
  "Content-Type": "application/json"
@@ -1214,7 +1215,7 @@ function useEnhancedEvents() {
1214
1215
  body: JSON.stringify(updateRequest)
1215
1216
  });
1216
1217
  if (!response.ok) {
1217
- throw new Error(`\u66F4\u65B0\u4E8B\u4EF6\u5931\u8D25: ${response.status}`);
1218
+ throw new Error("\u66F4\u65B0\u4E8B\u4EF6\u5931\u8D25: " + response.status);
1218
1219
  }
1219
1220
  const data = await response.json();
1220
1221
  if (!data.success) {
@@ -1244,12 +1245,12 @@ function useEnhancedEvents() {
1244
1245
  setLoading(true);
1245
1246
  setError(void 0);
1246
1247
  try {
1247
- const url = deleteAll ? `/api/calendar/events/${eventId}?deleteAll=true` : `/api/calendar/events/${eventId}`;
1248
+ const url = deleteAll ? "/api/calendar/events/" + eventId + "?deleteAll=true" : "/api/calendar/events/" + eventId;
1248
1249
  const response = await fetch(url, {
1249
1250
  method: "DELETE"
1250
1251
  });
1251
1252
  if (!response.ok) {
1252
- throw new Error(`\u5220\u9664\u4E8B\u4EF6\u5931\u8D25: ${response.status}`);
1253
+ throw new Error("\u5220\u9664\u4E8B\u4EF6\u5931\u8D25: " + response.status);
1253
1254
  }
1254
1255
  const data = await response.json();
1255
1256
  if (!data.success) {
@@ -1277,7 +1278,7 @@ function useEnhancedEvents() {
1277
1278
  body: JSON.stringify({ eventIds })
1278
1279
  });
1279
1280
  if (!response.ok) {
1280
- throw new Error(`\u6279\u91CF\u5220\u9664\u4E8B\u4EF6\u5931\u8D25: ${response.status}`);
1281
+ throw new Error("\u6279\u91CF\u5220\u9664\u4E8B\u4EF6\u5931\u8D25: " + response.status);
1281
1282
  }
1282
1283
  const data = await response.json();
1283
1284
  if (!data.success) {
@@ -1309,7 +1310,7 @@ function useEnhancedEvents() {
1309
1310
  endTime: toLocalISOString(newEndTime)
1310
1311
  };
1311
1312
  console.log("\u{1F4E4} \u53D1\u9001API\u8BF7\u6C42:", updateRequest);
1312
- const response = await fetch(`/api/calendar/events/${eventId}`, {
1313
+ const response = await fetch("/api/calendar/events/" + eventId, {
1313
1314
  method: "PUT",
1314
1315
  headers: {
1315
1316
  "Content-Type": "application/json"
@@ -1317,7 +1318,7 @@ function useEnhancedEvents() {
1317
1318
  body: JSON.stringify(updateRequest)
1318
1319
  });
1319
1320
  if (!response.ok) {
1320
- throw new Error(`\u66F4\u65B0\u4E8B\u4EF6\u65F6\u95F4\u5931\u8D25: ${response.status}`);
1321
+ throw new Error("\u66F4\u65B0\u4E8B\u4EF6\u65F6\u95F4\u5931\u8D25: " + response.status);
1321
1322
  }
1322
1323
  const data = await response.json();
1323
1324
  console.log("\u{1F4E5} API\u54CD\u5E94:", data);
@@ -1473,18 +1474,18 @@ var ImprovedEventModal = ({
1473
1474
  const day = String(date.getDate()).padStart(2, "0");
1474
1475
  const hours = String(date.getHours()).padStart(2, "0");
1475
1476
  const minutes = String(date.getMinutes()).padStart(2, "0");
1476
- return `${year}-${month}-${day}T${hours}:${minutes}`;
1477
+ return year + "-" + month + "-" + day + "T" + hours + ":" + minutes;
1477
1478
  };
1478
1479
  const formatDateOnly = (date) => {
1479
1480
  const year = date.getFullYear();
1480
1481
  const month = String(date.getMonth() + 1).padStart(2, "0");
1481
1482
  const day = String(date.getDate()).padStart(2, "0");
1482
- return `${year}-${month}-${day}`;
1483
+ return year + "-" + month + "-" + day;
1483
1484
  };
1484
1485
  const formatTimeOnly = (date) => {
1485
1486
  const hours = String(date.getHours()).padStart(2, "0");
1486
1487
  const minutes = String(date.getMinutes()).padStart(2, "0");
1487
- return `${hours}:${minutes}`;
1488
+ return hours + ":" + minutes;
1488
1489
  };
1489
1490
  const buildEventData = () => {
1490
1491
  switch (eventType) {
@@ -1534,7 +1535,7 @@ var ImprovedEventModal = ({
1534
1535
  }
1535
1536
  };
1536
1537
  default:
1537
- throw new Error(`\u4E0D\u652F\u6301\u7684\u4E8B\u4EF6\u7C7B\u578B: ${eventType}`);
1538
+ throw new Error("\u4E0D\u652F\u6301\u7684\u4E8B\u4EF6\u7C7B\u578B: " + eventType);
1538
1539
  }
1539
1540
  };
1540
1541
  const validateForm = () => {
@@ -1593,29 +1594,29 @@ var ImprovedEventModal = ({
1593
1594
  {
1594
1595
  type: "button",
1595
1596
  onClick: () => setEventType("single" /* SINGLE */),
1596
- className: `group relative p-4 rounded-xl border-2 transition-all duration-300 transform hover:scale-105 ${eventType === "single" /* SINGLE */ ? "bg-gradient-to-br from-blue-50 to-blue-100 border-blue-300 shadow-lg ring-2 ring-blue-200" : "bg-white border-gray-200 hover:bg-gray-50 hover:border-gray-300 shadow-sm hover:shadow-md"}`
1597
+ className: clsx.clsx("group relative p-4 rounded-xl border-2 transition-all duration-300 transform hover:scale-105", eventType === "single" /* SINGLE */ ? "bg-gradient-to-br from-blue-50 to-blue-100 border-blue-300 shadow-lg ring-2 ring-blue-200" : "bg-white border-gray-200 hover:bg-gray-50 hover:border-gray-300 shadow-sm hover:shadow-md")
1597
1598
  },
1598
- /* @__PURE__ */ React2__default.default.createElement("div", { className: "text-center" }, /* @__PURE__ */ React2__default.default.createElement("div", { className: `text-3xl mb-2 transition-transform duration-300 ${eventType === "single" /* SINGLE */ ? "scale-110" : "group-hover:scale-110"}` }, "\u{1F4C5}"), /* @__PURE__ */ React2__default.default.createElement("div", { className: `font-semibold mb-1 ${eventType === "single" /* SINGLE */ ? "text-blue-700" : "text-gray-900"}` }, "\u5355\u6B21\u4E8B\u4EF6"), /* @__PURE__ */ React2__default.default.createElement("div", { className: "text-xs text-gray-500" }, "\u4E00\u6B21\u6027\u4E8B\u4EF6")),
1599
+ /* @__PURE__ */ React2__default.default.createElement("div", { className: "text-center" }, /* @__PURE__ */ React2__default.default.createElement("div", { className: clsx.clsx("text-3xl mb-2 transition-transform duration-300", eventType === "single" /* SINGLE */ ? "scale-110" : "group-hover:scale-110") }, "\u{1F4C5}"), /* @__PURE__ */ React2__default.default.createElement("div", { className: clsx.clsx("font-semibold mb-1", eventType === "single" /* SINGLE */ ? "text-blue-700" : "text-gray-900") }, "\u5355\u6B21\u4E8B\u4EF6"), /* @__PURE__ */ React2__default.default.createElement("div", { className: "text-xs text-gray-500" }, "\u4E00\u6B21\u6027\u4E8B\u4EF6")),
1599
1600
  eventType === "single" /* SINGLE */ && /* @__PURE__ */ React2__default.default.createElement("div", { className: "absolute top-2 right-2" }, /* @__PURE__ */ React2__default.default.createElement("div", { className: "w-6 h-6 bg-blue-500 rounded-full flex items-center justify-center" }, /* @__PURE__ */ React2__default.default.createElement("span", { className: "text-white text-sm" }, "\u2713")))
1600
1601
  ), /* @__PURE__ */ React2__default.default.createElement(
1601
1602
  "button",
1602
1603
  {
1603
1604
  type: "button",
1604
1605
  onClick: () => setEventType("multi_day" /* MULTI_DAY */),
1605
- className: `group relative p-4 rounded-xl border-2 transition-all duration-300 transform hover:scale-105 ${eventType === "multi_day" /* MULTI_DAY */ ? "bg-gradient-to-br from-green-50 to-green-100 border-green-300 shadow-lg ring-2 ring-green-200" : "bg-white border-gray-200 hover:bg-gray-50 hover:border-gray-300 shadow-sm hover:shadow-md"}`
1606
+ className: clsx.clsx("group relative p-4 rounded-xl border-2 transition-all duration-300 transform hover:scale-105", eventType === "multi_day" /* MULTI_DAY */ ? "bg-gradient-to-br from-green-50 to-green-100 border-green-300 shadow-lg ring-2 ring-green-200" : "bg-white border-gray-200 hover:bg-gray-50 hover:border-gray-300 shadow-sm hover:shadow-md")
1606
1607
  },
1607
- /* @__PURE__ */ React2__default.default.createElement("div", { className: "text-center" }, /* @__PURE__ */ React2__default.default.createElement("div", { className: `text-3xl mb-2 transition-transform duration-300 ${eventType === "multi_day" /* MULTI_DAY */ ? "scale-110" : "group-hover:scale-110"}` }, "\u{1F5D3}\uFE0F"), /* @__PURE__ */ React2__default.default.createElement("div", { className: `font-semibold mb-1 ${eventType === "multi_day" /* MULTI_DAY */ ? "text-green-700" : "text-gray-900"}` }, "\u591A\u5929\u4E8B\u4EF6"), /* @__PURE__ */ React2__default.default.createElement("div", { className: "text-xs text-gray-500" }, "\u8FDE\u7EED\u591A\u5929")),
1608
+ /* @__PURE__ */ React2__default.default.createElement("div", { className: "text-center" }, /* @__PURE__ */ React2__default.default.createElement("div", { className: clsx.clsx("text-3xl mb-2 transition-transform duration-300", eventType === "multi_day" /* MULTI_DAY */ ? "scale-110" : "group-hover:scale-110") }, "\u{1F5D3}\uFE0F"), /* @__PURE__ */ React2__default.default.createElement("div", { className: clsx.clsx("font-semibold mb-1", eventType === "multi_day" /* MULTI_DAY */ ? "text-green-700" : "text-gray-900") }, "\u591A\u5929\u4E8B\u4EF6"), /* @__PURE__ */ React2__default.default.createElement("div", { className: "text-xs text-gray-500" }, "\u8FDE\u7EED\u591A\u5929")),
1608
1609
  eventType === "multi_day" /* MULTI_DAY */ && /* @__PURE__ */ React2__default.default.createElement("div", { className: "absolute top-2 right-2" }, /* @__PURE__ */ React2__default.default.createElement("div", { className: "w-6 h-6 bg-green-500 rounded-full flex items-center justify-center" }, /* @__PURE__ */ React2__default.default.createElement("span", { className: "text-white text-sm" }, "\u2713")))
1609
1610
  ), /* @__PURE__ */ React2__default.default.createElement(
1610
1611
  "button",
1611
1612
  {
1612
1613
  type: "button",
1613
1614
  onClick: () => setEventType("recurring" /* RECURRING */),
1614
- className: `group relative p-4 rounded-xl border-2 transition-all duration-300 transform hover:scale-105 ${eventType === "recurring" /* RECURRING */ ? "bg-gradient-to-br from-purple-50 to-purple-100 border-purple-300 shadow-lg ring-2 ring-purple-200" : "bg-white border-gray-200 hover:bg-gray-50 hover:border-gray-300 shadow-sm hover:shadow-md"}`
1615
+ className: clsx.clsx("group relative p-4 rounded-xl border-2 transition-all duration-300 transform hover:scale-105", eventType === "recurring" /* RECURRING */ ? "bg-gradient-to-br from-purple-50 to-purple-100 border-purple-300 shadow-lg ring-2 ring-purple-200" : "bg-white border-gray-200 hover:bg-gray-50 hover:border-gray-300 shadow-sm hover:shadow-md")
1615
1616
  },
1616
- /* @__PURE__ */ React2__default.default.createElement("div", { className: "text-center" }, /* @__PURE__ */ React2__default.default.createElement("div", { className: `text-3xl mb-2 transition-transform duration-300 ${eventType === "recurring" /* RECURRING */ ? "scale-110" : "group-hover:scale-110"}` }, "\u{1F504}"), /* @__PURE__ */ React2__default.default.createElement("div", { className: `font-semibold mb-1 ${eventType === "recurring" /* RECURRING */ ? "text-purple-700" : "text-gray-900"}` }, "\u91CD\u590D\u4E8B\u4EF6"), /* @__PURE__ */ React2__default.default.createElement("div", { className: "text-xs text-gray-500" }, "\u5468\u671F\u6027\u91CD\u590D")),
1617
+ /* @__PURE__ */ React2__default.default.createElement("div", { className: "text-center" }, /* @__PURE__ */ React2__default.default.createElement("div", { className: clsx.clsx("text-3xl mb-2 transition-transform duration-300", eventType === "recurring" /* RECURRING */ ? "scale-110" : "group-hover:scale-110") }, "\u{1F504}"), /* @__PURE__ */ React2__default.default.createElement("div", { className: clsx.clsx("font-semibold mb-1", eventType === "recurring" /* RECURRING */ ? "text-purple-700" : "text-gray-900") }, "\u91CD\u590D\u4E8B\u4EF6"), /* @__PURE__ */ React2__default.default.createElement("div", { className: "text-xs text-gray-500" }, "\u5468\u671F\u6027\u91CD\u590D")),
1617
1618
  eventType === "recurring" /* RECURRING */ && /* @__PURE__ */ React2__default.default.createElement("div", { className: "absolute top-2 right-2" }, /* @__PURE__ */ React2__default.default.createElement("div", { className: "w-6 h-6 bg-purple-500 rounded-full flex items-center justify-center" }, /* @__PURE__ */ React2__default.default.createElement("span", { className: "text-white text-sm" }, "\u2713")))
1618
- )), /* @__PURE__ */ React2__default.default.createElement("div", { className: `p-4 rounded-lg transition-all duration-300 ${eventType === "single" /* SINGLE */ ? "bg-blue-50 border border-blue-200" : eventType === "multi_day" /* MULTI_DAY */ ? "bg-green-50 border border-green-200" : "bg-purple-50 border border-purple-200"}` }, /* @__PURE__ */ React2__default.default.createElement("div", { className: "flex items-start space-x-3" }, /* @__PURE__ */ React2__default.default.createElement("div", { className: "flex-shrink-0 mt-0.5" }, /* @__PURE__ */ React2__default.default.createElement("span", { className: "text-lg" }, eventType === "single" /* SINGLE */ ? "\u{1F4A1}" : eventType === "multi_day" /* MULTI_DAY */ ? "\u{1F4CB}" : "\u{1F514}")), /* @__PURE__ */ React2__default.default.createElement("div", null, eventType === "single" /* SINGLE */ && /* @__PURE__ */ React2__default.default.createElement(React2__default.default.Fragment, null, /* @__PURE__ */ React2__default.default.createElement("h4", { className: "font-medium text-blue-800 mb-1" }, "\u5355\u6B21\u4E8B\u4EF6"), /* @__PURE__ */ React2__default.default.createElement("p", { className: "text-sm text-blue-700" }, "\u5728\u6307\u5B9A\u7684\u65F6\u95F4\u53D1\u751F\u4E00\u6B21\u7684\u4E8B\u4EF6\uFF0C\u5982\u4F1A\u8BAE\u3001\u7EA6\u4F1A\u3001\u9762\u8BD5\u7B49\u3002\u9002\u5408\u4E00\u6B21\u6027\u7684\u6D3B\u52A8\u5B89\u6392\u3002")), eventType === "multi_day" /* MULTI_DAY */ && /* @__PURE__ */ React2__default.default.createElement(React2__default.default.Fragment, null, /* @__PURE__ */ React2__default.default.createElement("h4", { className: "font-medium text-green-800 mb-1" }, "\u591A\u5929\u4E8B\u4EF6"), /* @__PURE__ */ React2__default.default.createElement("p", { className: "text-sm text-green-700" }, "\u6301\u7EED\u591A\u5929\u7684\u5355\u4E2A\u4E8B\u4EF6\uFF0C\u5982\u57F9\u8BAD\u8BFE\u7A0B\u3001\u4F1A\u8BAE\u3001\u5047\u671F\u7B49\u3002\u4F8B\u5982\uFF1A3\u5929\u7684\u57F9\u8BAD\u8BFE\u7A0B\u62161\u5468\u7684\u5047\u671F\u3002")), eventType === "recurring" /* RECURRING */ && /* @__PURE__ */ React2__default.default.createElement(React2__default.default.Fragment, null, /* @__PURE__ */ React2__default.default.createElement("h4", { className: "font-medium text-purple-800 mb-1" }, "\u91CD\u590D\u4E8B\u4EF6"), /* @__PURE__ */ React2__default.default.createElement("p", { className: "text-sm text-purple-700" }, "\u6309\u7167\u89C4\u5F8B\u91CD\u590D\u53D1\u751F\u7684\u4E8B\u4EF6\uFF0C\u5982\u6BCF\u5929\u7684\u6668\u4F1A\u3001\u6BCF\u5468\u7684\u4F8B\u4F1A\u3001\u6BCF\u6708\u7684\u603B\u7ED3\u7B49\u3002\u7CFB\u7EDF\u4F1A\u81EA\u52A8\u521B\u5EFA\u591A\u4E2A\u4E8B\u4EF6\u5B9E\u4F8B\u3002"))))));
1619
+ )), /* @__PURE__ */ React2__default.default.createElement("div", { className: clsx.clsx("p-4 rounded-lg transition-all duration-300", eventType === "single" /* SINGLE */ ? "bg-blue-50 border border-blue-200" : eventType === "multi_day" /* MULTI_DAY */ ? "bg-green-50 border border-green-200" : "bg-purple-50 border border-purple-200") }, /* @__PURE__ */ React2__default.default.createElement("div", { className: "flex items-start space-x-3" }, /* @__PURE__ */ React2__default.default.createElement("div", { className: "flex-shrink-0 mt-0.5" }, /* @__PURE__ */ React2__default.default.createElement("span", { className: "text-lg" }, eventType === "single" /* SINGLE */ ? "\u{1F4A1}" : eventType === "multi_day" /* MULTI_DAY */ ? "\u{1F4CB}" : "\u{1F514}")), /* @__PURE__ */ React2__default.default.createElement("div", null, eventType === "single" /* SINGLE */ && /* @__PURE__ */ React2__default.default.createElement(React2__default.default.Fragment, null, /* @__PURE__ */ React2__default.default.createElement("h4", { className: "font-medium text-blue-800 mb-1" }, "\u5355\u6B21\u4E8B\u4EF6"), /* @__PURE__ */ React2__default.default.createElement("p", { className: "text-sm text-blue-700" }, "\u5728\u6307\u5B9A\u7684\u65F6\u95F4\u53D1\u751F\u4E00\u6B21\u7684\u4E8B\u4EF6\uFF0C\u5982\u4F1A\u8BAE\u3001\u7EA6\u4F1A\u3001\u9762\u8BD5\u7B49\u3002\u9002\u5408\u4E00\u6B21\u6027\u7684\u6D3B\u52A8\u5B89\u6392\u3002")), eventType === "multi_day" /* MULTI_DAY */ && /* @__PURE__ */ React2__default.default.createElement(React2__default.default.Fragment, null, /* @__PURE__ */ React2__default.default.createElement("h4", { className: "font-medium text-green-800 mb-1" }, "\u591A\u5929\u4E8B\u4EF6"), /* @__PURE__ */ React2__default.default.createElement("p", { className: "text-sm text-green-700" }, "\u6301\u7EED\u591A\u5929\u7684\u5355\u4E2A\u4E8B\u4EF6\uFF0C\u5982\u57F9\u8BAD\u8BFE\u7A0B\u3001\u4F1A\u8BAE\u3001\u5047\u671F\u7B49\u3002\u4F8B\u5982\uFF1A3\u5929\u7684\u57F9\u8BAD\u8BFE\u7A0B\u62161\u5468\u7684\u5047\u671F\u3002")), eventType === "recurring" /* RECURRING */ && /* @__PURE__ */ React2__default.default.createElement(React2__default.default.Fragment, null, /* @__PURE__ */ React2__default.default.createElement("h4", { className: "font-medium text-purple-800 mb-1" }, "\u91CD\u590D\u4E8B\u4EF6"), /* @__PURE__ */ React2__default.default.createElement("p", { className: "text-sm text-purple-700" }, "\u6309\u7167\u89C4\u5F8B\u91CD\u590D\u53D1\u751F\u7684\u4E8B\u4EF6\uFF0C\u5982\u6BCF\u5929\u7684\u6668\u4F1A\u3001\u6BCF\u5468\u7684\u4F8B\u4F1A\u3001\u6BCF\u6708\u7684\u603B\u7ED3\u7B49\u3002\u7CFB\u7EDF\u4F1A\u81EA\u52A8\u521B\u5EFA\u591A\u4E2A\u4E8B\u4EF6\u5B9E\u4F8B\u3002"))))));
1619
1620
  const renderBasicForm = () => /* @__PURE__ */ React2__default.default.createElement("div", { className: "space-y-6" }, /* @__PURE__ */ React2__default.default.createElement("div", { className: "group" }, /* @__PURE__ */ React2__default.default.createElement("label", { className: "flex items-center space-x-2 text-sm font-medium text-gray-900 mb-3" }, /* @__PURE__ */ React2__default.default.createElement("span", { className: "text-lg" }, "\u{1F4DD}"), /* @__PURE__ */ React2__default.default.createElement("span", null, "\u4E8B\u4EF6\u6807\u9898"), /* @__PURE__ */ React2__default.default.createElement("span", { className: "text-red-500" }, "*")), /* @__PURE__ */ React2__default.default.createElement("div", { className: "relative" }, /* @__PURE__ */ React2__default.default.createElement(
1620
1621
  "input",
1621
1622
  {
@@ -1625,7 +1626,7 @@ var ImprovedEventModal = ({
1625
1626
  className: "w-full px-4 py-3 border-2 border-gray-200 rounded-xl focus:ring-2 focus:ring-blue-500 focus:border-blue-500 transition-all duration-200 placeholder-gray-400 text-gray-900 bg-white hover:border-gray-300",
1626
1627
  placeholder: "\u4E3A\u4F60\u7684\u4E8B\u4EF6\u8D77\u4E2A\u540D\u5B57..."
1627
1628
  }
1628
- ), /* @__PURE__ */ React2__default.default.createElement("div", { className: "absolute inset-y-0 right-0 flex items-center pr-3" }, /* @__PURE__ */ React2__default.default.createElement("div", { className: `w-2 h-2 rounded-full transition-colors duration-200 ${formData.title.trim() ? "bg-green-400" : "bg-gray-300"}` }))), errors.title && /* @__PURE__ */ React2__default.default.createElement("div", { className: "flex items-center space-x-2 mt-2" }, /* @__PURE__ */ React2__default.default.createElement("span", { className: "text-red-500 text-sm" }, "\u26A0\uFE0F"), /* @__PURE__ */ React2__default.default.createElement("p", { className: "text-sm text-red-600" }, errors.title))), /* @__PURE__ */ React2__default.default.createElement("div", { className: "group" }, /* @__PURE__ */ React2__default.default.createElement("label", { className: "flex items-center space-x-2 text-sm font-medium text-gray-900 mb-3" }, /* @__PURE__ */ React2__default.default.createElement("span", { className: "text-lg" }, "\u{1F4C4}"), /* @__PURE__ */ React2__default.default.createElement("span", null, "\u4E8B\u4EF6\u63CF\u8FF0")), /* @__PURE__ */ React2__default.default.createElement(
1629
+ ), /* @__PURE__ */ React2__default.default.createElement("div", { className: "absolute inset-y-0 right-0 flex items-center pr-3" }, /* @__PURE__ */ React2__default.default.createElement("div", { className: clsx.clsx("w-2 h-2 rounded-full transition-colors duration-200", formData.title.trim() ? "bg-green-400" : "bg-gray-300") }))), errors.title && /* @__PURE__ */ React2__default.default.createElement("div", { className: "flex items-center space-x-2 mt-2" }, /* @__PURE__ */ React2__default.default.createElement("span", { className: "text-red-500 text-sm" }, "\u26A0\uFE0F"), /* @__PURE__ */ React2__default.default.createElement("p", { className: "text-sm text-red-600" }, errors.title))), /* @__PURE__ */ React2__default.default.createElement("div", { className: "group" }, /* @__PURE__ */ React2__default.default.createElement("label", { className: "flex items-center space-x-2 text-sm font-medium text-gray-900 mb-3" }, /* @__PURE__ */ React2__default.default.createElement("span", { className: "text-lg" }, "\u{1F4C4}"), /* @__PURE__ */ React2__default.default.createElement("span", null, "\u4E8B\u4EF6\u63CF\u8FF0")), /* @__PURE__ */ React2__default.default.createElement(
1629
1630
  "textarea",
1630
1631
  {
1631
1632
  value: formData.description,
@@ -1634,7 +1635,7 @@ var ImprovedEventModal = ({
1634
1635
  className: "w-full px-4 py-3 border-2 border-gray-200 rounded-xl focus:ring-2 focus:ring-blue-500 focus:border-blue-500 transition-all duration-200 placeholder-gray-400 text-gray-900 bg-white hover:border-gray-300 resize-none",
1635
1636
  placeholder: "\u63CF\u8FF0\u4E00\u4E0B\u8FD9\u4E2A\u4E8B\u4EF6\u7684\u8BE6\u7EC6\u4FE1\u606F..."
1636
1637
  }
1637
- ), /* @__PURE__ */ React2__default.default.createElement("div", { className: "flex justify-between items-center mt-2" }, /* @__PURE__ */ React2__default.default.createElement("div", { className: "text-xs text-gray-500" }, formData.description.length > 0 && `\u5DF2\u8F93\u5165 ${formData.description.length} \u4E2A\u5B57\u7B26`))), /* @__PURE__ */ React2__default.default.createElement("div", { className: "group" }, /* @__PURE__ */ React2__default.default.createElement("label", { className: "flex items-center space-x-2 text-sm font-medium text-gray-900 mb-3" }, /* @__PURE__ */ React2__default.default.createElement("span", { className: "text-lg" }, "\u{1F4CD}"), /* @__PURE__ */ React2__default.default.createElement("span", null, "\u5730\u70B9")), /* @__PURE__ */ React2__default.default.createElement("div", { className: "relative" }, /* @__PURE__ */ React2__default.default.createElement(
1638
+ ), /* @__PURE__ */ React2__default.default.createElement("div", { className: "flex justify-between items-center mt-2" }, /* @__PURE__ */ React2__default.default.createElement("div", { className: "text-xs text-gray-500" }, formData.description.length > 0 && "\u5DF2\u8F93\u5165 " + formData.description.length + " \u4E2A\u5B57\u7B26"))), /* @__PURE__ */ React2__default.default.createElement("div", { className: "group" }, /* @__PURE__ */ React2__default.default.createElement("label", { className: "flex items-center space-x-2 text-sm font-medium text-gray-900 mb-3" }, /* @__PURE__ */ React2__default.default.createElement("span", { className: "text-lg" }, "\u{1F4CD}"), /* @__PURE__ */ React2__default.default.createElement("span", null, "\u5730\u70B9")), /* @__PURE__ */ React2__default.default.createElement("div", { className: "relative" }, /* @__PURE__ */ React2__default.default.createElement(
1638
1639
  "input",
1639
1640
  {
1640
1641
  type: "text",
@@ -1643,7 +1644,7 @@ var ImprovedEventModal = ({
1643
1644
  className: "w-full px-4 py-3 border-2 border-gray-200 rounded-xl focus:ring-2 focus:ring-blue-500 focus:border-blue-500 transition-all duration-200 placeholder-gray-400 text-gray-900 bg-white hover:border-gray-300",
1644
1645
  placeholder: "\u4E8B\u4EF6\u4E3E\u529E\u5730\u70B9..."
1645
1646
  }
1646
- ), /* @__PURE__ */ React2__default.default.createElement("div", { className: "absolute inset-y-0 right-0 flex items-center pr-3" }, /* @__PURE__ */ React2__default.default.createElement("div", { className: `w-2 h-2 rounded-full transition-colors duration-200 ${formData.location.trim() ? "bg-green-400" : "bg-gray-300"}` })))), /* @__PURE__ */ React2__default.default.createElement("div", { className: "bg-gray-50 rounded-xl p-4" }, /* @__PURE__ */ React2__default.default.createElement("label", { className: "flex items-center justify-between cursor-pointer group" }, /* @__PURE__ */ React2__default.default.createElement("div", { className: "flex items-center space-x-3" }, /* @__PURE__ */ React2__default.default.createElement("span", { className: "text-lg" }, "\u{1F305}"), /* @__PURE__ */ React2__default.default.createElement("div", null, /* @__PURE__ */ React2__default.default.createElement("div", { className: "text-sm font-medium text-gray-900" }, "\u5168\u5929\u4E8B\u4EF6"), /* @__PURE__ */ React2__default.default.createElement("div", { className: "text-xs text-gray-500" }, "\u4E0D\u8BBE\u7F6E\u5177\u4F53\u65F6\u95F4\uFF0C\u6574\u5929\u6709\u6548"))), /* @__PURE__ */ React2__default.default.createElement("div", { className: "relative" }, /* @__PURE__ */ React2__default.default.createElement(
1647
+ ), /* @__PURE__ */ React2__default.default.createElement("div", { className: "absolute inset-y-0 right-0 flex items-center pr-3" }, /* @__PURE__ */ React2__default.default.createElement("div", { className: clsx.clsx("w-2 h-2 rounded-full transition-colors duration-200", formData.location.trim() ? "bg-green-400" : "bg-gray-300") })))), /* @__PURE__ */ React2__default.default.createElement("div", { className: "bg-gray-50 rounded-xl p-4" }, /* @__PURE__ */ React2__default.default.createElement("label", { className: "flex items-center justify-between cursor-pointer group" }, /* @__PURE__ */ React2__default.default.createElement("div", { className: "flex items-center space-x-3" }, /* @__PURE__ */ React2__default.default.createElement("span", { className: "text-lg" }, "\u{1F305}"), /* @__PURE__ */ React2__default.default.createElement("div", null, /* @__PURE__ */ React2__default.default.createElement("div", { className: "text-sm font-medium text-gray-900" }, "\u5168\u5929\u4E8B\u4EF6"), /* @__PURE__ */ React2__default.default.createElement("div", { className: "text-xs text-gray-500" }, "\u4E0D\u8BBE\u7F6E\u5177\u4F53\u65F6\u95F4\uFF0C\u6574\u5929\u6709\u6548"))), /* @__PURE__ */ React2__default.default.createElement("div", { className: "relative" }, /* @__PURE__ */ React2__default.default.createElement(
1647
1648
  "input",
1648
1649
  {
1649
1650
  type: "checkbox",
@@ -1652,7 +1653,7 @@ var ImprovedEventModal = ({
1652
1653
  onChange: (e) => handleInputChange("allDay", e.target.checked),
1653
1654
  className: "sr-only"
1654
1655
  }
1655
- ), /* @__PURE__ */ React2__default.default.createElement("div", { className: `w-12 h-6 rounded-full transition-colors duration-200 ${formData.allDay ? "bg-blue-500" : "bg-gray-300"}` }, /* @__PURE__ */ React2__default.default.createElement("div", { className: `w-5 h-5 bg-white rounded-full shadow-md transform transition-transform duration-200 ${formData.allDay ? "translate-x-6" : "translate-x-0.5"} translate-y-0.5` }))))), /* @__PURE__ */ React2__default.default.createElement("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-6" }, /* @__PURE__ */ React2__default.default.createElement("div", { className: "group" }, /* @__PURE__ */ React2__default.default.createElement("label", { className: "flex items-center space-x-2 text-sm font-medium text-gray-900 mb-3" }, /* @__PURE__ */ React2__default.default.createElement("span", { className: "text-lg" }, "\u{1F3A8}"), /* @__PURE__ */ React2__default.default.createElement("span", null, "\u4E8B\u4EF6\u989C\u8272")), /* @__PURE__ */ React2__default.default.createElement("div", { className: "space-y-3" }, /* @__PURE__ */ React2__default.default.createElement("div", { className: "flex items-center space-x-3" }, /* @__PURE__ */ React2__default.default.createElement(
1656
+ ), /* @__PURE__ */ React2__default.default.createElement("div", { className: clsx.clsx("w-12 h-6 rounded-full transition-colors duration-200", formData.allDay ? "bg-blue-500" : "bg-gray-300") }, /* @__PURE__ */ React2__default.default.createElement("div", { className: clsx.clsx("w-5 h-5 bg-white rounded-full shadow-md transform transition-transform duration-200", formData.allDay ? "translate-x-6" : "translate-x-0.5", "translate-y-0.5") }))))), /* @__PURE__ */ React2__default.default.createElement("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-6" }, /* @__PURE__ */ React2__default.default.createElement("div", { className: "group" }, /* @__PURE__ */ React2__default.default.createElement("label", { className: "flex items-center space-x-2 text-sm font-medium text-gray-900 mb-3" }, /* @__PURE__ */ React2__default.default.createElement("span", { className: "text-lg" }, "\u{1F3A8}"), /* @__PURE__ */ React2__default.default.createElement("span", null, "\u4E8B\u4EF6\u989C\u8272")), /* @__PURE__ */ React2__default.default.createElement("div", { className: "space-y-3" }, /* @__PURE__ */ React2__default.default.createElement("div", { className: "flex items-center space-x-3" }, /* @__PURE__ */ React2__default.default.createElement(
1656
1657
  "div",
1657
1658
  {
1658
1659
  className: "w-12 h-12 rounded-xl border-2 border-gray-200 flex items-center justify-center cursor-pointer hover:scale-105 transition-transform duration-200 shadow-sm",
@@ -1673,7 +1674,7 @@ var ImprovedEventModal = ({
1673
1674
  key: color,
1674
1675
  type: "button",
1675
1676
  onClick: () => handleInputChange("color", color),
1676
- className: `w-8 h-8 rounded-lg border-2 hover:scale-105 transition-all duration-200 ${formData.color === color ? "border-gray-400 ring-2 ring-gray-200" : "border-gray-200"}`,
1677
+ className: clsx.clsx("w-8 h-8 rounded-lg border-2 hover:scale-105 transition-all duration-200", formData.color === color ? "border-gray-400 ring-2 ring-gray-200" : "border-gray-200"),
1677
1678
  style: { backgroundColor: color }
1678
1679
  }
1679
1680
  ))))), /* @__PURE__ */ React2__default.default.createElement("div", { className: "group" }, /* @__PURE__ */ React2__default.default.createElement("label", { className: "flex items-center space-x-2 text-sm font-medium text-gray-900 mb-3" }, /* @__PURE__ */ React2__default.default.createElement("span", { className: "text-lg" }, "\u2B50"), /* @__PURE__ */ React2__default.default.createElement("span", null, "\u4F18\u5148\u7EA7")), /* @__PURE__ */ React2__default.default.createElement("div", { className: "space-y-2" }, [
@@ -1691,7 +1692,7 @@ var ImprovedEventModal = ({
1691
1692
  onChange: (e) => handleInputChange("priority", e.target.value),
1692
1693
  className: "sr-only"
1693
1694
  }
1694
- ), /* @__PURE__ */ React2__default.default.createElement("div", { className: `flex items-center space-x-3 px-3 py-2 rounded-lg border-2 transition-all duration-200 flex-1 ${formData.priority === priority.value ? priority.color + " ring-2 ring-opacity-20" : "text-gray-600 bg-white border-gray-200 hover:bg-gray-50"}` }, /* @__PURE__ */ React2__default.default.createElement("span", { className: "text-lg" }, priority.icon), /* @__PURE__ */ React2__default.default.createElement("span", { className: "text-sm font-medium" }, priority.label), formData.priority === priority.value && /* @__PURE__ */ React2__default.default.createElement("span", { className: "ml-auto text-sm" }, "\u2713"))))))));
1695
+ ), /* @__PURE__ */ React2__default.default.createElement("div", { className: clsx.clsx("flex items-center space-x-3 px-3 py-2 rounded-lg border-2 transition-all duration-200 flex-1", formData.priority === priority.value ? priority.color + " ring-2 ring-opacity-20" : "text-gray-600 bg-white border-gray-200 hover:bg-gray-50") }, /* @__PURE__ */ React2__default.default.createElement("span", { className: "text-lg" }, priority.icon), /* @__PURE__ */ React2__default.default.createElement("span", { className: "text-sm font-medium" }, priority.label), formData.priority === priority.value && /* @__PURE__ */ React2__default.default.createElement("span", { className: "ml-auto text-sm" }, "\u2713"))))))));
1695
1696
  const renderSingleEventForm = () => /* @__PURE__ */ React2__default.default.createElement("div", { className: "space-y-6" }, !formData.allDay && /* @__PURE__ */ React2__default.default.createElement("div", { className: "bg-blue-50 rounded-xl p-4 border border-blue-200" }, /* @__PURE__ */ React2__default.default.createElement("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-6" }, /* @__PURE__ */ React2__default.default.createElement("div", { className: "group" }, /* @__PURE__ */ React2__default.default.createElement("label", { className: "flex items-center space-x-2 text-sm font-medium text-blue-900 mb-3" }, /* @__PURE__ */ React2__default.default.createElement("span", { className: "text-lg" }, "\u{1F550}"), /* @__PURE__ */ React2__default.default.createElement("span", null, "\u5F00\u59CB\u65F6\u95F4"), /* @__PURE__ */ React2__default.default.createElement("span", { className: "text-red-500" }, "*")), /* @__PURE__ */ React2__default.default.createElement("div", { className: "relative" }, /* @__PURE__ */ React2__default.default.createElement(
1696
1697
  "input",
1697
1698
  {
@@ -1823,7 +1824,7 @@ var ImprovedEventModal = ({
1823
1824
  placeholder: "\u8F93\u5165\u91CD\u590D\u6B21\u6570"
1824
1825
  }
1825
1826
  ))), /* @__PURE__ */ React2__default.default.createElement("div", { className: "p-3 bg-purple-50 rounded-lg text-sm text-purple-700" }, /* @__PURE__ */ React2__default.default.createElement("strong", null, "\u793A\u4F8B"), '\uFF1A\u9009\u62E9"\u6BCF\u5929\u91CD\u590D3\u6B21"\u5C06\u521B\u5EFA3\u4E2A\u72EC\u7ACB\u7684\u4E8B\u4EF6\u5B9E\u4F8B\uFF0C\u5206\u522B\u5728\u8FDE\u7EED\u76843\u5929\u53D1\u751F\u3002'));
1826
- return /* @__PURE__ */ React2__default.default.createElement(React2__default.default.Fragment, null, /* @__PURE__ */ React2__default.default.createElement(chunkDW2ZTOCV_js.Modal, { isOpen, onClose: handleClose, width: "800px", height: "auto" }, /* @__PURE__ */ React2__default.default.createElement("div", { className: "relative" }, /* @__PURE__ */ React2__default.default.createElement("div", { className: "px-6 py-4 border-b border-gray-200 bg-gradient-to-r from-blue-50 to-indigo-50" }, /* @__PURE__ */ React2__default.default.createElement("div", { className: "flex items-center justify-between" }, /* @__PURE__ */ React2__default.default.createElement("div", { className: "flex items-center space-x-3" }, /* @__PURE__ */ React2__default.default.createElement("div", { className: "w-10 h-10 bg-blue-100 rounded-full flex items-center justify-center" }, /* @__PURE__ */ React2__default.default.createElement("span", { className: "text-blue-600 text-lg" }, isEditMode ? "\u270F\uFE0F" : "\u2795")), /* @__PURE__ */ React2__default.default.createElement("div", null, /* @__PURE__ */ React2__default.default.createElement("h2", { className: "text-xl font-semibold text-gray-900" }, isEditMode ? "\u7F16\u8F91\u4E8B\u4EF6" : "\u521B\u5EFA\u65B0\u4E8B\u4EF6"), /* @__PURE__ */ React2__default.default.createElement("p", { className: "text-sm text-gray-600" }, isEditMode ? "\u4FEE\u6539\u4E8B\u4EF6\u4FE1\u606F" : "\u586B\u5199\u4E8B\u4EF6\u8BE6\u7EC6\u4FE1\u606F"))), /* @__PURE__ */ React2__default.default.createElement(
1827
+ return /* @__PURE__ */ React2__default.default.createElement(React2__default.default.Fragment, null, /* @__PURE__ */ React2__default.default.createElement(chunk5A7ERLKK_js.Modal, { isOpen, onClose: handleClose, width: "800px", height: "auto" }, /* @__PURE__ */ React2__default.default.createElement("div", { className: "relative" }, /* @__PURE__ */ React2__default.default.createElement("div", { className: "px-6 py-4 border-b border-gray-200 bg-gradient-to-r from-blue-50 to-indigo-50" }, /* @__PURE__ */ React2__default.default.createElement("div", { className: "flex items-center justify-between" }, /* @__PURE__ */ React2__default.default.createElement("div", { className: "flex items-center space-x-3" }, /* @__PURE__ */ React2__default.default.createElement("div", { className: "w-10 h-10 bg-blue-100 rounded-full flex items-center justify-center" }, /* @__PURE__ */ React2__default.default.createElement("span", { className: "text-blue-600 text-lg" }, isEditMode ? "\u270F\uFE0F" : "\u2795")), /* @__PURE__ */ React2__default.default.createElement("div", null, /* @__PURE__ */ React2__default.default.createElement("h2", { className: "text-xl font-semibold text-gray-900" }, isEditMode ? "\u7F16\u8F91\u4E8B\u4EF6" : "\u521B\u5EFA\u65B0\u4E8B\u4EF6"), /* @__PURE__ */ React2__default.default.createElement("p", { className: "text-sm text-gray-600" }, isEditMode ? "\u4FEE\u6539\u4E8B\u4EF6\u4FE1\u606F" : "\u586B\u5199\u4E8B\u4EF6\u8BE6\u7EC6\u4FE1\u606F"))), /* @__PURE__ */ React2__default.default.createElement(
1827
1828
  "button",
1828
1829
  {
1829
1830
  type: "button",
@@ -1860,7 +1861,7 @@ var ImprovedEventModal = ({
1860
1861
  /* @__PURE__ */ React2__default.default.createElement("span", { className: "mr-2" }, isEditMode ? "\u{1F4BE}" : "\u2728"),
1861
1862
  isLoading ? "\u4FDD\u5B58\u4E2D..." : isEditMode ? "\u66F4\u65B0\u4E8B\u4EF6" : "\u521B\u5EFA\u4E8B\u4EF6"
1862
1863
  )))))), /* @__PURE__ */ React2__default.default.createElement(
1863
- chunkDW2ZTOCV_js.ConfirmModal,
1864
+ chunk5A7ERLKK_js.ConfirmModal,
1864
1865
  {
1865
1866
  isOpen: showDeleteConfirm,
1866
1867
  onClose: () => setShowDeleteConfirm(false),
@@ -1938,7 +1939,7 @@ function useEventDrag(events, onEventUpdate) {
1938
1939
  newStartTime.setHours(originalStart.getHours(), originalStart.getMinutes(), originalStart.getSeconds(), originalStart.getMilliseconds());
1939
1940
  const duration = originalEnd.getTime() - originalStart.getTime();
1940
1941
  const newEndTime = new Date(newStartTime.getTime() + duration);
1941
- const previewTime = dragState.draggedEvent.allDay ? "\u5168\u5929" : `${formatTime2(newStartTime)} - ${formatTime2(newEndTime)}`;
1942
+ const previewTime = dragState.draggedEvent.allDay ? "\u5168\u5929" : formatTime2(newStartTime) + " - " + formatTime2(newEndTime);
1942
1943
  console.log("\u23F0 \u8BA1\u7B97\u65B0\u65F6\u95F4:", {
1943
1944
  originalStart: dragState.draggedEvent.startTime,
1944
1945
  originalEnd: dragState.draggedEvent.endTime,
@@ -2086,9 +2087,9 @@ var DraggableEvent = ({
2086
2087
  // 移动端禁用拖拽
2087
2088
  });
2088
2089
  const style = transform ? {
2089
- transform: `translate3d(${transform.x}px, ${transform.y}px, 0)`
2090
+ transform: "translate3d(" + transform.x + "px, " + transform.y + "px, 0)"
2090
2091
  } : void 0;
2091
- event.allDay ? "\u5168\u5929" : `${formatTime(new Date(event.startTime))} - ${formatTime(new Date(event.endTime))}`;
2092
+ event.allDay ? "\u5168\u5929" : formatTime(new Date(event.startTime)) + " - " + formatTime(new Date(event.endTime));
2092
2093
  const getEventColorClasses = (color) => {
2093
2094
  switch (color) {
2094
2095
  case "red":
@@ -2128,14 +2129,7 @@ var DraggableEvent = ({
2128
2129
  {
2129
2130
  ref: setNodeRef,
2130
2131
  style,
2131
- className: `
2132
- group relative rounded border-l-2 px-1 py-0.5 mb-0.5
2133
- ${dragSupported ? "cursor-grab active:cursor-grabbing" : "cursor-pointer"}
2134
- transition-all duration-150 ease-in-out text-xs
2135
- ${getEventColorClasses(event.color)}
2136
- ${isDragActive || isDragging ? "opacity-60 shadow-md z-[40]" : "opacity-100"}
2137
- ${className}
2138
- `,
2132
+ className: clsx.clsx("group relative rounded border-l-2 px-1 py-0.5 mb-0.5", dragSupported ? "cursor-grab active:cursor-grabbing" : "cursor-pointer", "transition-all duration-150 ease-in-out text-xs", getEventColorClasses(event.color), isDragActive || isDragging ? "opacity-60 shadow-md z-[40]" : "opacity-100", className),
2139
2133
  ...dragSupported ? listeners : {},
2140
2134
  ...dragSupported ? attributes : {},
2141
2135
  onClick
@@ -2173,8 +2167,6 @@ var DraggableEvent = ({
2173
2167
  );
2174
2168
  };
2175
2169
  var DraggableEvent_default = DraggableEvent;
2176
-
2177
- // src/calendar/components/DroppableCalendarCell.tsx
2178
2170
  var DroppableCalendarCell = ({
2179
2171
  date,
2180
2172
  events,
@@ -2187,7 +2179,7 @@ var DroppableCalendarCell = ({
2187
2179
  disableDrop = false
2188
2180
  }) => {
2189
2181
  const dateStr = formatDate(date);
2190
- const dropId = `date-${dateStr}`;
2182
+ const dropId = "date-" + dateStr;
2191
2183
  const {
2192
2184
  isOver,
2193
2185
  setNodeRef
@@ -2238,11 +2230,7 @@ var DroppableCalendarCell = ({
2238
2230
  className: getCellClasses(),
2239
2231
  onClick: () => onDateClick?.(date)
2240
2232
  },
2241
- /* @__PURE__ */ React2__default.default.createElement("div", { className: "flex items-center justify-between mb-2" }, /* @__PURE__ */ React2__default.default.createElement("span", { className: `
2242
- inline-flex items-center justify-center text-sm font-semibold w-6 h-6
2243
- ${!isCurrentMonth ? "text-gray-400" : date.getDay() === 0 || date.getDay() === 6 ? "text-red-600" : "text-gray-900"}
2244
- ${isToday(date) ? "bg-blue-600 text-white rounded-full shadow-md" : ""}
2245
- ` }, date.getDate()), dayEvents.length > 0 && /* @__PURE__ */ React2__default.default.createElement("span", { className: "bg-yellow-500 inline-flex items-center justify-center text-sm font-semibold w-6 h-6 border border-white 'bg-blue-600 text-white rounded-full shadow-md" }, dayEvents.length)),
2233
+ /* @__PURE__ */ React2__default.default.createElement("div", { className: "flex items-center justify-between mb-2" }, /* @__PURE__ */ React2__default.default.createElement("span", { className: clsx.clsx("inline-flex items-center justify-center text-sm font-semibold w-6 h-6", !isCurrentMonth ? "text-gray-400" : date.getDay() === 0 || date.getDay() === 6 ? "text-red-600" : "text-gray-900", isToday(date) ? "bg-blue-600 text-white rounded-full shadow-md" : "") }, date.getDate()), dayEvents.length > 0 && /* @__PURE__ */ React2__default.default.createElement("span", { className: "bg-yellow-500 inline-flex items-center justify-center text-sm font-semibold w-6 h-6 border border-white 'bg-blue-600 text-white rounded-full shadow-md" }, dayEvents.length)),
2246
2234
  /* @__PURE__ */ React2__default.default.createElement("div", { className: "space-y-1" }, dayEvents.slice(0, 3).map((event) => /* @__PURE__ */ React2__default.default.createElement(
2247
2235
  DraggableEvent_default,
2248
2236
  {
@@ -2308,7 +2296,7 @@ var DraggableMonthView = ({
2308
2296
  "th",
2309
2297
  {
2310
2298
  key: day,
2311
- className: `p-2 sm:p-3 text-center text-sm font-bold border-r border-gray-300 last:border-r-0 ${index === 5 || index === 6 ? "text-red-600 bg-red-50" : "text-gray-800"}`
2299
+ className: clsx.clsx("p-2 sm:p-3 text-center text-sm font-bold border-r border-gray-300 last:border-r-0", index === 5 || index === 6 ? "text-red-600 bg-red-50" : "text-gray-800")
2312
2300
  },
2313
2301
  day
2314
2302
  )))), /* @__PURE__ */ React2__default.default.createElement("tbody", null, Array.from({ length: 6 }, (_, weekIndex) => /* @__PURE__ */ React2__default.default.createElement("tr", { key: weekIndex }, Array.from({ length: 7 }, (_2, dayIndex) => {
@@ -2322,7 +2310,7 @@ var DraggableMonthView = ({
2322
2310
  "td",
2323
2311
  {
2324
2312
  key: dayIndex,
2325
- className: `h-24 sm:h-32 border-b border-gray-300 border-r border-gray-300 last:border-r-0 relative ${isWeekend2 ? "bg-red-50" : "bg-white"} hover:bg-blue-50 transition-colors`
2313
+ className: clsx.clsx("h-24 sm:h-32 border-b border-gray-300 border-r border-gray-300 last:border-r-0 relative", isWeekend2 ? "bg-red-50" : "bg-white", "hover:bg-blue-50 transition-colors")
2326
2314
  },
2327
2315
  /* @__PURE__ */ React2__default.default.createElement(
2328
2316
  DroppableCalendarCell_default,
@@ -2340,7 +2328,7 @@ var DraggableMonthView = ({
2340
2328
  )
2341
2329
  );
2342
2330
  }))))));
2343
- return /* @__PURE__ */ React2__default.default.createElement("div", { className: `bg-white rounded-lg shadow-sm ${className}` }, /* @__PURE__ */ React2__default.default.createElement("div", { className: "flex items-center justify-between p-4 border-b" }, /* @__PURE__ */ React2__default.default.createElement("div", { className: "flex items-center space-x-4" }, /* @__PURE__ */ React2__default.default.createElement("h2", { className: "text-lg sm:text-xl font-semibold text-gray-900" }, currentDate.getFullYear(), "\u5E74", getMonthName(currentDate)), /* @__PURE__ */ React2__default.default.createElement(
2331
+ return /* @__PURE__ */ React2__default.default.createElement("div", { className: clsx.clsx("bg-white rounded-lg shadow-sm", className) }, /* @__PURE__ */ React2__default.default.createElement("div", { className: "flex items-center justify-between p-4 border-b" }, /* @__PURE__ */ React2__default.default.createElement("div", { className: "flex items-center space-x-4" }, /* @__PURE__ */ React2__default.default.createElement("h2", { className: "text-lg sm:text-xl font-semibold text-gray-900" }, currentDate.getFullYear(), "\u5E74", getMonthName(currentDate)), /* @__PURE__ */ React2__default.default.createElement(
2344
2332
  "button",
2345
2333
  {
2346
2334
  onClick: goToToday,
@@ -2549,7 +2537,7 @@ function CalendarSettings({ onSettingsChange }) {
2549
2537
  {
2550
2538
  key,
2551
2539
  onClick: () => setActiveTab(key),
2552
- className: `py-4 text-sm font-medium border-b-2 transition-colors ${activeTab === key ? "border-blue-500 text-blue-600" : "border-transparent text-gray-500 hover:text-gray-700 hover:border-gray-300"}`
2540
+ className: clsx.clsx("py-4 text-sm font-medium border-b-2 transition-colors", activeTab === key ? "border-blue-500 text-blue-600" : "border-transparent text-gray-500 hover:text-gray-700 hover:border-gray-300")
2553
2541
  },
2554
2542
  /* @__PURE__ */ React2__default.default.createElement("span", { className: "mr-2" }, icon),
2555
2543
  label
@@ -2558,7 +2546,7 @@ function CalendarSettings({ onSettingsChange }) {
2558
2546
  {
2559
2547
  key,
2560
2548
  onClick: () => updateSettings({ theme: key }),
2561
- className: `p-4 border-2 rounded-lg cursor-pointer transition-all ${settings.theme === key ? "border-blue-500 bg-blue-50" : "border-gray-200 hover:border-gray-300"}`
2549
+ className: clsx.clsx("p-4 border-2 rounded-lg cursor-pointer transition-all", settings.theme === key ? "border-blue-500 bg-blue-50" : "border-gray-200 hover:border-gray-300")
2562
2550
  },
2563
2551
  /* @__PURE__ */ React2__default.default.createElement("div", { className: "flex items-center justify-between mb-3" }, /* @__PURE__ */ React2__default.default.createElement("h4", { className: "font-medium text-gray-900" }, theme.name), settings.theme === key && /* @__PURE__ */ React2__default.default.createElement("svg", { className: "w-5 h-5 text-blue-500", fill: "currentColor", viewBox: "0 0 20 20" }, /* @__PURE__ */ React2__default.default.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" }))),
2564
2552
  /* @__PURE__ */ React2__default.default.createElement("div", { className: "flex space-x-1 mb-3" }, Object.values(theme.colors).slice(0, 6).map((color, index) => /* @__PURE__ */ React2__default.default.createElement(
@@ -2595,7 +2583,7 @@ function CalendarSettings({ onSettingsChange }) {
2595
2583
  style: {
2596
2584
  backgroundColor: index === 3 ? theme.background.today : theme.background.cell,
2597
2585
  color: index === 3 ? theme.text.today : theme.text.primary,
2598
- border: `1px solid ${index === 3 ? theme.border.today : theme.border.cell}`
2586
+ border: "1px solid " + (index === 3 ? theme.border.today : theme.border.cell)
2599
2587
  }
2600
2588
  },
2601
2589
  index + 1
@@ -2797,7 +2785,7 @@ function CalendarPage({
2797
2785
  const viewEnd = viewDates[viewDates.length - 1];
2798
2786
  if (viewStart && viewEnd) {
2799
2787
  console.log("\u{1F4C5} \u52A0\u8F7D\u6708\u89C6\u56FE\u4E8B\u4EF6\u8303\u56F4:", {
2800
- currentMonth: `${currentDate.getFullYear()}-${currentDate.getMonth() + 1}`,
2788
+ currentMonth: currentDate.getFullYear() + "-" + (currentDate.getMonth() + 1),
2801
2789
  viewStart: formatDate(viewStart),
2802
2790
  viewEnd: formatDate(viewEnd),
2803
2791
  totalDays: viewDates.length
@@ -2857,9 +2845,9 @@ function CalendarPage({
2857
2845
  return getMonthName2(currentDate);
2858
2846
  }
2859
2847
  if (weekStart.getMonth() === weekEnd.getMonth()) {
2860
- return `${weekStart.getFullYear()}\u5E74${weekStart.getMonth() + 1}\u6708 \u7B2C${Math.ceil(weekStart.getDate() / 7)}\u5468`;
2848
+ return weekStart.getFullYear() + "\u5E74" + (weekStart.getMonth() + 1) + "\u6708 \u7B2C" + Math.ceil(weekStart.getDate() / 7) + "\u5468";
2861
2849
  } else {
2862
- return `${weekStart.getMonth() + 1}\u6708${weekStart.getDate()}\u65E5 - ${weekEnd.getMonth() + 1}\u6708${weekEnd.getDate()}\u65E5`;
2850
+ return weekStart.getMonth() + 1 + "\u6708" + weekStart.getDate() + "\u65E5 - " + (weekEnd.getMonth() + 1) + "\u6708" + weekEnd.getDate() + "\u65E5";
2863
2851
  }
2864
2852
  case "day" /* DAY */:
2865
2853
  return currentDate.toLocaleDateString("zh-CN", {
@@ -3023,9 +3011,9 @@ function CalendarPage({
3023
3011
  "th",
3024
3012
  {
3025
3013
  key: index,
3026
- className: `p-3 text-center border-b border-gray-200 ${index < 6 ? "border-r border-gray-200" : ""}`
3014
+ className: clsx.clsx("p-3 text-center border-b border-gray-200", index < 6 ? "border-r border-gray-200" : "")
3027
3015
  },
3028
- /* @__PURE__ */ React2__default.default.createElement("div", { className: `text-sm font-medium ${isWeekend2 ? "text-red-600" : "text-gray-700"}` }, getWeekdayName(date, "zh-CN", "short"))
3016
+ /* @__PURE__ */ React2__default.default.createElement("div", { className: clsx.clsx("text-sm font-medium", isWeekend2 ? "text-red-600" : "text-gray-700") }, getWeekdayName(date, "zh-CN", "short"))
3029
3017
  );
3030
3018
  }))), /* @__PURE__ */ React2__default.default.createElement("tbody", null, /* @__PURE__ */ React2__default.default.createElement("tr", null, weekDates.map((date, index) => {
3031
3019
  const dayEvents = getEventsForDate(date);
@@ -3036,24 +3024,14 @@ function CalendarPage({
3036
3024
  {
3037
3025
  key: index,
3038
3026
  onClick: () => handleDateClick(date),
3039
- className: `
3040
- h-56 border-b border-gray-200 relative cursor-pointer
3041
- ${index < 6 ? "border-r border-gray-200" : ""}
3042
- hover:bg-gray-50 transition-colors
3043
- ${isTodayDate ? "bg-blue-50" : "bg-white"}
3044
- `
3027
+ className: clsx.clsx("h-56 border-b border-gray-200 relative cursor-pointer", index < 6 ? "border-r border-gray-200" : "", "hover:bg-gray-50 transition-colors", isTodayDate ? "bg-blue-50" : "bg-white")
3045
3028
  },
3046
- /* @__PURE__ */ React2__default.default.createElement("div", { className: "flex flex-col h-full p-3" }, /* @__PURE__ */ React2__default.default.createElement("div", { className: "flex flex-col items-center mb-3" }, /* @__PURE__ */ React2__default.default.createElement("div", { className: `flex items-center justify-center text-lg font-bold w-10 h-10 rounded-full ${isTodayDate ? "bg-blue-600 text-white shadow-md" : isWeekend2 ? "text-red-600 bg-red-50" : "text-gray-900 hover:bg-gray-100"} transition-colors` }, date.getDate()), (index === 0 || date.getDate() === 1) && /* @__PURE__ */ React2__default.default.createElement("div", { className: "text-xs text-gray-500 mt-1 font-medium" }, date.getMonth() + 1, "\u6708")), /* @__PURE__ */ React2__default.default.createElement("div", { className: "flex-1 flex flex-col" }, dayEvents.length > 0 ? /* @__PURE__ */ React2__default.default.createElement(React2__default.default.Fragment, null, /* @__PURE__ */ React2__default.default.createElement("div", { className: "text-center mb-2" }, /* @__PURE__ */ React2__default.default.createElement("span", { className: `inline-flex items-center justify-center w-6 h-6 text-xs font-bold rounded-full ${dayEvents.length > 5 ? "bg-red-100 text-red-700" : dayEvents.length > 2 ? "bg-yellow-100 text-yellow-700" : "bg-green-100 text-green-700"}` }, dayEvents.length)), /* @__PURE__ */ React2__default.default.createElement("div", { className: "space-y-1 overflow-hidden" }, dayEvents.slice(0, 4).map((event, eventIndex) => /* @__PURE__ */ React2__default.default.createElement(
3029
+ /* @__PURE__ */ React2__default.default.createElement("div", { className: "flex flex-col h-full p-3" }, /* @__PURE__ */ React2__default.default.createElement("div", { className: "flex flex-col items-center mb-3" }, /* @__PURE__ */ React2__default.default.createElement("div", { className: clsx.clsx("flex items-center justify-center text-lg font-bold w-10 h-10 rounded-full", isTodayDate ? "bg-blue-600 text-white shadow-md" : isWeekend2 ? "text-red-600 bg-red-50" : "text-gray-900 hover:bg-gray-100", "transition-colors") }, date.getDate()), (index === 0 || date.getDate() === 1) && /* @__PURE__ */ React2__default.default.createElement("div", { className: "text-xs text-gray-500 mt-1 font-medium" }, date.getMonth() + 1, "\u6708")), /* @__PURE__ */ React2__default.default.createElement("div", { className: "flex-1 flex flex-col" }, dayEvents.length > 0 ? /* @__PURE__ */ React2__default.default.createElement(React2__default.default.Fragment, null, /* @__PURE__ */ React2__default.default.createElement("div", { className: "text-center mb-2" }, /* @__PURE__ */ React2__default.default.createElement("span", { className: clsx.clsx("inline-flex items-center justify-center w-6 h-6 text-xs font-bold rounded-full", dayEvents.length > 5 ? "bg-red-100 text-red-700" : dayEvents.length > 2 ? "bg-yellow-100 text-yellow-700" : "bg-green-100 text-green-700") }, dayEvents.length)), /* @__PURE__ */ React2__default.default.createElement("div", { className: "space-y-1 overflow-hidden" }, dayEvents.slice(0, 4).map((event, eventIndex) => /* @__PURE__ */ React2__default.default.createElement(
3047
3030
  "div",
3048
3031
  {
3049
3032
  key: eventIndex,
3050
3033
  onClick: (e) => event.isRealEvent && event.id ? handleEventClick(events.find((e2) => e2.id === event.id), e) : void 0,
3051
- className: `
3052
- text-xs px-2 py-1 rounded font-medium truncate text-center
3053
- ${event.isRealEvent ? "cursor-pointer hover:opacity-80 hover:shadow-sm" : "cursor-default"}
3054
- transition-all duration-200
3055
- ${getEventColorClass(event.color)}
3056
- `,
3034
+ className: clsx.clsx("text-xs px-2 py-1 rounded font-medium truncate text-center", event.isRealEvent ? "cursor-pointer hover:opacity-80 hover:shadow-sm" : "cursor-default", "transition-all duration-200", getEventColorClass(event.color)),
3057
3035
  title: event.title
3058
3036
  },
3059
3037
  event.title
@@ -3064,7 +3042,7 @@ function CalendarPage({
3064
3042
  const renderDayView = () => {
3065
3043
  const dayEvents = getEventsForDate(currentDate);
3066
3044
  const isTodayDate = isToday(currentDate);
3067
- return /* @__PURE__ */ React2__default.default.createElement("div", { className: "bg-white rounded-lg shadow-sm border border-gray-200 overflow-hidden mb-6" }, /* @__PURE__ */ React2__default.default.createElement("div", { className: "bg-gray-50 p-4 border-b border-gray-200" }, /* @__PURE__ */ React2__default.default.createElement("div", { className: "text-center" }, /* @__PURE__ */ React2__default.default.createElement("div", { className: "text-sm text-gray-600 mb-1" }, currentDate.toLocaleDateString("zh-CN", { weekday: "long" })), /* @__PURE__ */ React2__default.default.createElement("div", { className: `text-2xl font-bold ${isTodayDate ? "text-blue-600" : "text-gray-900"}` }, currentDate.getDate(), "\u65E5"), /* @__PURE__ */ React2__default.default.createElement("div", { className: "text-sm text-gray-600" }, currentDate.toLocaleDateString("zh-CN", { year: "numeric", month: "long" })))), /* @__PURE__ */ React2__default.default.createElement("div", { className: "p-4" }, /* @__PURE__ */ React2__default.default.createElement(
3045
+ return /* @__PURE__ */ React2__default.default.createElement("div", { className: "bg-white rounded-lg shadow-sm border border-gray-200 overflow-hidden mb-6" }, /* @__PURE__ */ React2__default.default.createElement("div", { className: "bg-gray-50 p-4 border-b border-gray-200" }, /* @__PURE__ */ React2__default.default.createElement("div", { className: "text-center" }, /* @__PURE__ */ React2__default.default.createElement("div", { className: "text-sm text-gray-600 mb-1" }, currentDate.toLocaleDateString("zh-CN", { weekday: "long" })), /* @__PURE__ */ React2__default.default.createElement("div", { className: clsx.clsx("text-2xl font-bold", isTodayDate ? "text-blue-600" : "text-gray-900") }, currentDate.getDate(), "\u65E5"), /* @__PURE__ */ React2__default.default.createElement("div", { className: "text-sm text-gray-600" }, currentDate.toLocaleDateString("zh-CN", { year: "numeric", month: "long" })))), /* @__PURE__ */ React2__default.default.createElement("div", { className: "p-4" }, /* @__PURE__ */ React2__default.default.createElement(
3068
3046
  "button",
3069
3047
  {
3070
3048
  onClick: () => handleDateClick(currentDate),
@@ -3076,12 +3054,7 @@ function CalendarPage({
3076
3054
  {
3077
3055
  key: eventIndex,
3078
3056
  onClick: (e) => event.isRealEvent && event.id ? handleEventClick(events.find((e2) => e2.id === event.id), e) : void 0,
3079
- className: `
3080
- p-3 rounded-lg border-l-4 bg-gray-50
3081
- ${event.isRealEvent ? "cursor-pointer hover:shadow-md" : "cursor-default"}
3082
- transition-shadow
3083
- ${getEventColorClass(event.color)}
3084
- `
3057
+ className: clsx.clsx("p-3 rounded-lg border-l-4 bg-gray-50", event.isRealEvent ? "cursor-pointer hover:shadow-md" : "cursor-default", "transition-shadow", getEventColorClass(event.color))
3085
3058
  },
3086
3059
  /* @__PURE__ */ React2__default.default.createElement("div", { className: "font-medium text-sm mb-1" }, event.title),
3087
3060
  event.isRealEvent && event.id && /* @__PURE__ */ React2__default.default.createElement("div", { className: "text-xs text-gray-600" }, "\u70B9\u51FB\u7F16\u8F91\u4E8B\u4EF6")
@@ -3094,7 +3067,7 @@ function CalendarPage({
3094
3067
  setSelectedDate(null);
3095
3068
  const eventCount = createdEvents.length;
3096
3069
  if (eventCount > 1) {
3097
- alert(`\u6210\u529F\u521B\u5EFA ${eventCount} \u4E2A\u4E8B\u4EF6\uFF01`);
3070
+ alert("\u6210\u529F\u521B\u5EFA " + eventCount + " \u4E2A\u4E8B\u4EF6\uFF01");
3098
3071
  } else {
3099
3072
  alert("\u4E8B\u4EF6\u521B\u5EFA\u6210\u529F\uFF01");
3100
3073
  }
@@ -3114,21 +3087,21 @@ function CalendarPage({
3114
3087
  "button",
3115
3088
  {
3116
3089
  onClick: () => setActiveTab("calendar"),
3117
- className: `px-4 py-2 text-sm font-medium rounded-md transition-colors ${activeTab === "calendar" ? "bg-white text-gray-900 shadow-sm" : "text-gray-600 hover:text-gray-900"}`
3090
+ className: clsx.clsx("px-4 py-2 text-sm font-medium rounded-md transition-colors", activeTab === "calendar" ? "bg-white text-gray-900 shadow-sm" : "text-gray-600 hover:text-gray-900")
3118
3091
  },
3119
3092
  "\u{1F4C5} \u65E5\u5386\u89C6\u56FE"
3120
3093
  ), /* @__PURE__ */ React2__default.default.createElement(
3121
3094
  "button",
3122
3095
  {
3123
3096
  onClick: () => setActiveTab("events"),
3124
- className: `px-4 py-2 text-sm font-medium rounded-md transition-colors ${activeTab === "events" ? "bg-white text-gray-900 shadow-sm" : "text-gray-600 hover:text-gray-900"}`
3097
+ className: clsx.clsx("px-4 py-2 text-sm font-medium rounded-md transition-colors", activeTab === "events" ? "bg-white text-gray-900 shadow-sm" : "text-gray-600 hover:text-gray-900")
3125
3098
  },
3126
3099
  "\u{1F4CB} \u4E8B\u4EF6\u5217\u8868"
3127
3100
  ), /* @__PURE__ */ React2__default.default.createElement(
3128
3101
  "button",
3129
3102
  {
3130
3103
  onClick: () => setActiveTab("settings"),
3131
- className: `px-4 py-2 text-sm font-medium rounded-md transition-colors ${activeTab === "settings" ? "bg-white text-gray-900 shadow-sm" : "text-gray-600 hover:text-gray-900"}`
3104
+ className: clsx.clsx("px-4 py-2 text-sm font-medium rounded-md transition-colors", activeTab === "settings" ? "bg-white text-gray-900 shadow-sm" : "text-gray-600 hover:text-gray-900")
3132
3105
  },
3133
3106
  "\u2699\uFE0F \u8BBE\u7F6E"
3134
3107
  ))), error && /* @__PURE__ */ React2__default.default.createElement("div", { className: "bg-red-50 border border-red-200 rounded-lg p-4 mb-6" }, /* @__PURE__ */ React2__default.default.createElement("div", { className: "flex items-start" }, /* @__PURE__ */ React2__default.default.createElement("div", { className: "flex-shrink-0" }, /* @__PURE__ */ React2__default.default.createElement("svg", { className: "h-5 w-5 text-red-400 mt-0.5", viewBox: "0 0 20 20", fill: "currentColor" }, /* @__PURE__ */ React2__default.default.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__ */ React2__default.default.createElement("div", { className: "ml-3" }, /* @__PURE__ */ React2__default.default.createElement("h3", { className: "text-sm font-medium text-red-800" }, "\u64CD\u4F5C\u5931\u8D25"), /* @__PURE__ */ React2__default.default.createElement("p", { className: "mt-1 text-sm text-red-700" }, error), /* @__PURE__ */ React2__default.default.createElement(
@@ -3143,7 +3116,7 @@ function CalendarPage({
3143
3116
  {
3144
3117
  key: view,
3145
3118
  onClick: () => setViewType(CalendarViewType[view.toUpperCase()]),
3146
- className: `px-3 py-1.5 text-sm font-medium rounded-md transition-colors ${viewType === CalendarViewType[view.toUpperCase()] ? "bg-white text-gray-900 shadow-sm" : "text-gray-600 hover:text-gray-900"}`
3119
+ className: clsx.clsx("px-3 py-1.5 text-sm font-medium rounded-md transition-colors", viewType === CalendarViewType[view.toUpperCase()] ? "bg-white text-gray-900 shadow-sm" : "text-gray-600 hover:text-gray-900")
3147
3120
  },
3148
3121
  view === "month" ? "\u6708" : view === "week" ? "\u5468" : "\u65E5"
3149
3122
  )))))), renderCalendarView(), /* @__PURE__ */ React2__default.default.createElement("div", { className: "grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6 mb-6" }, /* @__PURE__ */ React2__default.default.createElement("div", { className: "bg-white rounded-lg shadow-sm border border-gray-200 p-6" }, /* @__PURE__ */ React2__default.default.createElement("div", { className: "flex items-center mb-4" }, /* @__PURE__ */ React2__default.default.createElement("div", { className: "bg-blue-100 p-3 rounded-lg" }, /* @__PURE__ */ React2__default.default.createElement("svg", { className: "w-6 h-6 text-blue-600", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24" }, /* @__PURE__ */ React2__default.default.createElement("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M8 7V3m8 4V3m-9 8h10M5 21h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v12a2 2 0 002 2z" }))), /* @__PURE__ */ React2__default.default.createElement("h3", { className: "ml-3 text-lg font-semibold text-gray-900" }, "\u4E8B\u4EF6\u7BA1\u7406")), /* @__PURE__ */ React2__default.default.createElement("p", { className: "text-gray-600 text-sm mb-4" }, "\u521B\u5EFA\u3001\u7F16\u8F91\u3001\u5220\u9664\u65E5\u5386\u4E8B\u4EF6\uFF0C\u652F\u6301\u62D6\u62FD\u8C03\u6574\u65F6\u95F4\uFF0C\u591A\u79CD\u989C\u8272\u6807\u8BC6\u3002")), /* @__PURE__ */ React2__default.default.createElement("div", { className: "bg-white rounded-lg shadow-sm border border-gray-200 p-6" }, /* @__PURE__ */ React2__default.default.createElement("div", { className: "flex items-center mb-4" }, /* @__PURE__ */ React2__default.default.createElement("div", { className: "bg-green-100 p-3 rounded-lg" }, /* @__PURE__ */ React2__default.default.createElement("svg", { className: "w-6 h-6 text-green-600", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24" }, /* @__PURE__ */ React2__default.default.createElement("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15" }))), /* @__PURE__ */ React2__default.default.createElement("h3", { className: "ml-3 text-lg font-semibold text-gray-900" }, "\u91CD\u590D\u4E8B\u4EF6")), /* @__PURE__ */ React2__default.default.createElement("p", { className: "text-gray-600 text-sm mb-4" }, "\u652F\u6301\u65E5\u3001\u5468\u3001\u6708\u3001\u5E74\u91CD\u590D\u6A21\u5F0F\uFF0C\u7075\u6D3B\u7684\u91CD\u590D\u89C4\u5219\u914D\u7F6E\u3002")), /* @__PURE__ */ React2__default.default.createElement("div", { className: "bg-white rounded-lg shadow-sm border border-gray-200 p-6" }, /* @__PURE__ */ React2__default.default.createElement("div", { className: "flex items-center mb-4" }, /* @__PURE__ */ React2__default.default.createElement("div", { className: "bg-purple-100 p-3 rounded-lg" }, /* @__PURE__ */ React2__default.default.createElement("svg", { className: "w-6 h-6 text-purple-600", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24" }, /* @__PURE__ */ React2__default.default.createElement("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M15 17h5l-5 5v-5zM4 7a2 2 0 012-2h6l2 2h6a2 2 0 012 2v6a2 2 0 01-2 2H6a2 2 0 01-2-2V7z" }))), /* @__PURE__ */ React2__default.default.createElement("h3", { className: "ml-3 text-lg font-semibold text-gray-900" }, "\u667A\u80FD\u63D0\u9192")), /* @__PURE__ */ React2__default.default.createElement("p", { className: "text-gray-600 text-sm mb-4" }, "\u90AE\u4EF6\u3001\u901A\u77E5\u3001\u77ED\u4FE1\u591A\u79CD\u63D0\u9192\u65B9\u5F0F\uFF0C\u81EA\u5B9A\u4E49\u63D0\u9192\u65F6\u95F4\u3002"))), /* @__PURE__ */ React2__default.default.createElement("div", { className: "bg-white rounded-lg shadow-sm border border-gray-200 p-6" }, /* @__PURE__ */ React2__default.default.createElement("h3", { className: "text-lg font-semibold text-gray-900 mb-4" }, "\u6280\u672F\u7279\u6027"), /* @__PURE__ */ React2__default.default.createElement("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-4" }, /* @__PURE__ */ React2__default.default.createElement("div", { className: "flex items-center text-sm text-gray-600" }, /* @__PURE__ */ React2__default.default.createElement("svg", { className: "w-4 h-4 text-green-500 mr-3 flex-shrink-0", fill: "currentColor", viewBox: "0 0 20 20" }, /* @__PURE__ */ React2__default.default.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" })), "\u5B8C\u6574\u7684TypeScript\u7C7B\u578B\u5B9A\u4E49"), /* @__PURE__ */ React2__default.default.createElement("div", { className: "flex items-center text-sm text-gray-600" }, /* @__PURE__ */ React2__default.default.createElement("svg", { className: "w-4 h-4 text-green-500 mr-3 flex-shrink-0", fill: "currentColor", viewBox: "0 0 20 20" }, /* @__PURE__ */ React2__default.default.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" })), "\u54CD\u5E94\u5F0F\u8BBE\u8BA1 (TailwindCSS)")))), activeTab === "events" && /* @__PURE__ */ React2__default.default.createElement(
@@ -3256,7 +3229,7 @@ var EventModal = ({
3256
3229
  const day = String(date.getDate()).padStart(2, "0");
3257
3230
  const hours = String(date.getHours()).padStart(2, "0");
3258
3231
  const minutes = String(date.getMinutes()).padStart(2, "0");
3259
- return `${year}-${month}-${day}T${hours}:${minutes}`;
3232
+ return year + "-" + month + "-" + day + "T" + hours + ":" + minutes;
3260
3233
  };
3261
3234
  const validateForm = () => {
3262
3235
  const newErrors = {};
@@ -3356,7 +3329,7 @@ var EventModal = ({
3356
3329
  onClose();
3357
3330
  };
3358
3331
  return /* @__PURE__ */ React2__default.default.createElement(
3359
- chunkDW2ZTOCV_js.Modal,
3332
+ chunk5A7ERLKK_js.Modal,
3360
3333
  {
3361
3334
  isOpen,
3362
3335
  onClose: handleClose,
@@ -3371,7 +3344,7 @@ var EventModal = ({
3371
3344
  id: "title",
3372
3345
  value: formData.title,
3373
3346
  onChange: (e) => handleInputChange("title", e.target.value),
3374
- className: `w-full px-3 py-2 border rounded-lg focus:ring-2 focus:ring-blue-500 focus:border-blue-500 outline-none ${errors.title ? "border-red-500" : "border-gray-300"}`,
3347
+ className: clsx.clsx("w-full px-3 py-2 border rounded-lg focus:ring-2 focus:ring-blue-500 focus:border-blue-500 outline-none", errors.title ? "border-red-500" : "border-gray-300"),
3375
3348
  placeholder: "\u8F93\u5165\u4E8B\u4EF6\u6807\u9898"
3376
3349
  }
3377
3350
  ), errors.title && /* @__PURE__ */ React2__default.default.createElement("p", { className: "text-red-500 text-sm mt-1" }, errors.title)), /* @__PURE__ */ React2__default.default.createElement("div", { className: "flex items-center" }, /* @__PURE__ */ React2__default.default.createElement(
@@ -3390,10 +3363,10 @@ var EventModal = ({
3390
3363
  id: "startTime",
3391
3364
  value: formData.isAllDay ? formData.startTime.split("T")[0] : formData.startTime,
3392
3365
  onChange: (e) => {
3393
- const value = formData.isAllDay ? `${e.target.value}T00:00` : e.target.value;
3366
+ const value = formData.isAllDay ? e.target.value + "T00:00" : e.target.value;
3394
3367
  handleInputChange("startTime", value);
3395
3368
  },
3396
- className: `w-full px-3 py-2 border rounded-lg focus:ring-2 focus:ring-blue-500 focus:border-blue-500 outline-none ${errors.startTime ? "border-red-500" : "border-gray-300"}`
3369
+ className: clsx.clsx("w-full px-3 py-2 border rounded-lg focus:ring-2 focus:ring-blue-500 focus:border-blue-500 outline-none", errors.startTime ? "border-red-500" : "border-gray-300")
3397
3370
  }
3398
3371
  ), errors.startTime && /* @__PURE__ */ React2__default.default.createElement("p", { className: "text-red-500 text-sm mt-1" }, errors.startTime)), /* @__PURE__ */ React2__default.default.createElement("div", null, /* @__PURE__ */ React2__default.default.createElement("label", { htmlFor: "endTime", className: "block text-sm font-medium text-gray-700 mb-1" }, "\u7ED3\u675F\u65F6\u95F4 *"), /* @__PURE__ */ React2__default.default.createElement(
3399
3372
  "input",
@@ -3402,10 +3375,10 @@ var EventModal = ({
3402
3375
  id: "endTime",
3403
3376
  value: formData.isAllDay ? formData.endTime.split("T")[0] : formData.endTime,
3404
3377
  onChange: (e) => {
3405
- const value = formData.isAllDay ? `${e.target.value}T23:59` : e.target.value;
3378
+ const value = formData.isAllDay ? e.target.value + "T23:59" : e.target.value;
3406
3379
  handleInputChange("endTime", value);
3407
3380
  },
3408
- className: `w-full px-3 py-2 border rounded-lg focus:ring-2 focus:ring-blue-500 focus:border-blue-500 outline-none ${errors.endTime ? "border-red-500" : "border-gray-300"}`
3381
+ className: clsx.clsx("w-full px-3 py-2 border rounded-lg focus:ring-2 focus:ring-blue-500 focus:border-blue-500 outline-none", errors.endTime ? "border-red-500" : "border-gray-300")
3409
3382
  }
3410
3383
  ), errors.endTime && /* @__PURE__ */ React2__default.default.createElement("p", { className: "text-red-500 text-sm mt-1" }, errors.endTime))), /* @__PURE__ */ React2__default.default.createElement("div", null, /* @__PURE__ */ React2__default.default.createElement("label", { htmlFor: "location", className: "block text-sm font-medium text-gray-700 mb-1" }, "\u4F4D\u7F6E"), /* @__PURE__ */ React2__default.default.createElement(
3411
3384
  "input",
@@ -3640,13 +3613,13 @@ var EventModal = ({
3640
3613
  isLoading ? "\u4FDD\u5B58\u4E2D..." : isEditMode ? "\u66F4\u65B0\u4E8B\u4EF6" : "\u521B\u5EFA\u4E8B\u4EF6"
3641
3614
  )))),
3642
3615
  /* @__PURE__ */ React2__default.default.createElement(
3643
- chunkDW2ZTOCV_js.ConfirmModal,
3616
+ chunk5A7ERLKK_js.ConfirmModal,
3644
3617
  {
3645
3618
  isOpen: showDeleteConfirm,
3646
3619
  onClose: () => setShowDeleteConfirm(false),
3647
3620
  onConfirm: handleDelete,
3648
3621
  title: "\u786E\u8BA4\u5220\u9664",
3649
- message: `\u786E\u5B9A\u8981\u5220\u9664\u4E8B\u4EF6"${formData.title}"\u5417\uFF1F\u6B64\u64CD\u4F5C\u65E0\u6CD5\u64A4\u9500\u3002`,
3622
+ message: '\u786E\u5B9A\u8981\u5220\u9664\u4E8B\u4EF6"' + formData.title + '"\u5417\uFF1F\u6B64\u64CD\u4F5C\u65E0\u6CD5\u64A4\u9500\u3002',
3650
3623
  confirmText: "\u5220\u9664",
3651
3624
  cancelText: "\u53D6\u6D88",
3652
3625
  isLoading
@@ -3655,8 +3628,6 @@ var EventModal = ({
3655
3628
  );
3656
3629
  };
3657
3630
  var EventModal_default = EventModal;
3658
-
3659
- // src/calendar/pages/EventDetailPage.tsx
3660
3631
  var EventDetailPage = ({
3661
3632
  eventId,
3662
3633
  onBack,
@@ -3768,7 +3739,7 @@ var EventDetailPage = ({
3768
3739
  )))), /* @__PURE__ */ React2__default.default.createElement("div", { className: "bg-white rounded-lg shadow-md overflow-hidden" }, /* @__PURE__ */ React2__default.default.createElement("div", { className: "px-6 py-4 border-b border-gray-200" }, /* @__PURE__ */ React2__default.default.createElement("div", { className: "flex items-center justify-between" }, /* @__PURE__ */ React2__default.default.createElement("h2", { className: "text-2xl font-semibold text-gray-900" }, event.title), /* @__PURE__ */ React2__default.default.createElement("div", { className: "flex items-center space-x-2" }, /* @__PURE__ */ React2__default.default.createElement(
3769
3740
  "span",
3770
3741
  {
3771
- className: `px-2 py-1 text-xs font-medium rounded-full ${getPriorityColor(event.priority || "normal")}`
3742
+ className: clsx.clsx("px-2 py-1 text-xs font-medium rounded-full", getPriorityColor(event.priority || "normal"))
3772
3743
  },
3773
3744
  getPriorityText(event.priority || "normal")
3774
3745
  ), /* @__PURE__ */ React2__default.default.createElement(
@@ -3786,13 +3757,13 @@ var EventDetailPage = ({
3786
3757
  event
3787
3758
  }
3788
3759
  ), /* @__PURE__ */ React2__default.default.createElement(
3789
- chunkDW2ZTOCV_js.ConfirmModal,
3760
+ chunk5A7ERLKK_js.ConfirmModal,
3790
3761
  {
3791
3762
  isOpen: showDeleteConfirm,
3792
3763
  onClose: () => setShowDeleteConfirm(false),
3793
3764
  onConfirm: handleDelete,
3794
3765
  title: "\u786E\u8BA4\u5220\u9664",
3795
- message: `\u60A8\u786E\u5B9A\u8981\u5220\u9664\u4E8B\u4EF6"${event.title}"\u5417\uFF1F\u6B64\u64CD\u4F5C\u65E0\u6CD5\u64A4\u9500\u3002`,
3766
+ message: '\u60A8\u786E\u5B9A\u8981\u5220\u9664\u4E8B\u4EF6"' + event.title + '"\u5417\uFF1F\u6B64\u64CD\u4F5C\u65E0\u6CD5\u64A4\u9500\u3002',
3796
3767
  confirmText: "\u5220\u9664",
3797
3768
  cancelText: "\u53D6\u6D88",
3798
3769
  isLoading: isDeleting
@@ -3867,7 +3838,7 @@ function EventForm({
3867
3838
  const day = String(date.getDate()).padStart(2, "0");
3868
3839
  const hours = String(date.getHours()).padStart(2, "0");
3869
3840
  const minutes = String(date.getMinutes()).padStart(2, "0");
3870
- return `${year}-${month}-${day}T${hours}:${minutes}`;
3841
+ return year + "-" + month + "-" + day + "T" + hours + ":" + minutes;
3871
3842
  };
3872
3843
  const parseDateTimeLocal = (value) => {
3873
3844
  return new Date(value);
@@ -3896,7 +3867,7 @@ function EventForm({
3896
3867
  id: "title",
3897
3868
  value: formData.title,
3898
3869
  onChange: (e) => handleInputChange("title", e.target.value),
3899
- className: `w-full px-3 py-2 border rounded-lg focus:ring-2 focus:ring-blue-500 focus:border-blue-500 ${errors.title ? "border-red-300" : "border-gray-300"}`,
3870
+ className: clsx.clsx("w-full px-3 py-2 border rounded-lg focus:ring-2 focus:ring-blue-500 focus:border-blue-500", errors.title ? "border-red-300" : "border-gray-300"),
3900
3871
  placeholder: "\u8BF7\u8F93\u5165\u4E8B\u4EF6\u6807\u9898"
3901
3872
  }
3902
3873
  ), errors.title && /* @__PURE__ */ React2__default.default.createElement("p", { className: "mt-1 text-sm text-red-600" }, errors.title)), /* @__PURE__ */ React2__default.default.createElement("div", null, /* @__PURE__ */ React2__default.default.createElement("label", { htmlFor: "description", className: "block text-sm font-medium text-gray-700 mb-1" }, "\u4E8B\u4EF6\u63CF\u8FF0"), /* @__PURE__ */ React2__default.default.createElement(
@@ -3950,7 +3921,7 @@ function EventForm({
3950
3921
  const newDate = formData.allDay ? /* @__PURE__ */ new Date(e.target.value + "T23:59:59") : parseDateTimeLocal(e.target.value);
3951
3922
  handleInputChange("endTime", newDate);
3952
3923
  },
3953
- className: `w-full px-3 py-2 border rounded-lg focus:ring-2 focus:ring-blue-500 focus:border-blue-500 ${errors.endTime ? "border-red-300" : "border-gray-300"}`
3924
+ className: clsx.clsx("w-full px-3 py-2 border rounded-lg focus:ring-2 focus:ring-blue-500 focus:border-blue-500", errors.endTime ? "border-red-300" : "border-gray-300")
3954
3925
  }
3955
3926
  ), errors.endTime && /* @__PURE__ */ React2__default.default.createElement("p", { className: "mt-1 text-sm text-red-600" }, errors.endTime))), /* @__PURE__ */ React2__default.default.createElement("div", { className: "space-y-4" }, /* @__PURE__ */ React2__default.default.createElement("h3", { className: "text-lg font-medium text-gray-900" }, "\u5916\u89C2"), /* @__PURE__ */ React2__default.default.createElement("div", null, /* @__PURE__ */ React2__default.default.createElement("label", { className: "block text-sm font-medium text-gray-700 mb-2" }, "\u4E8B\u4EF6\u989C\u8272"), /* @__PURE__ */ React2__default.default.createElement("div", { className: "flex flex-wrap gap-3" }, colorOptions.map((option) => /* @__PURE__ */ React2__default.default.createElement(
3956
3927
  "button",
@@ -3958,12 +3929,9 @@ function EventForm({
3958
3929
  key: option.value,
3959
3930
  type: "button",
3960
3931
  onClick: () => handleInputChange("color", option.value),
3961
- className: `
3962
- flex items-center px-3 py-2 rounded-lg border-2 transition-all
3963
- ${formData.color === option.value ? "border-blue-500 ring-2 ring-blue-200" : "border-gray-200 hover:border-gray-300"}
3964
- `
3932
+ className: clsx.clsx("flex items-center px-3 py-2 rounded-lg border-2 transition-all", formData.color === option.value ? "border-blue-500 ring-2 ring-blue-200" : "border-gray-200 hover:border-gray-300")
3965
3933
  },
3966
- /* @__PURE__ */ React2__default.default.createElement("div", { className: `w-4 h-4 rounded-full ${option.class} mr-2` }),
3934
+ /* @__PURE__ */ React2__default.default.createElement("div", { className: clsx.clsx("w-4 h-4 rounded-full", option.class, "mr-2") }),
3967
3935
  /* @__PURE__ */ React2__default.default.createElement("span", { className: "text-sm text-gray-700" }, option.label)
3968
3936
  ))))), /* @__PURE__ */ React2__default.default.createElement("div", { className: "flex items-center justify-end gap-3 pt-6 border-t border-gray-200" }, /* @__PURE__ */ React2__default.default.createElement(
3969
3937
  "button",
@@ -4073,7 +4041,7 @@ var EventSearch = ({
4073
4041
  };
4074
4042
  return priorityMap[priority];
4075
4043
  };
4076
- return /* @__PURE__ */ React2__default.default.createElement("div", { className: `bg-white rounded-lg border border-gray-200 ${className}` }, /* @__PURE__ */ React2__default.default.createElement("div", { className: "p-4 border-b border-gray-200" }, /* @__PURE__ */ React2__default.default.createElement("div", { className: "flex items-center space-x-3" }, /* @__PURE__ */ React2__default.default.createElement("div", { className: "flex-1" }, /* @__PURE__ */ React2__default.default.createElement("div", { className: "relative" }, /* @__PURE__ */ React2__default.default.createElement(
4044
+ return /* @__PURE__ */ React2__default.default.createElement("div", { className: clsx.clsx("bg-white rounded-lg border border-gray-200", className) }, /* @__PURE__ */ React2__default.default.createElement("div", { className: "p-4 border-b border-gray-200" }, /* @__PURE__ */ React2__default.default.createElement("div", { className: "flex items-center space-x-3" }, /* @__PURE__ */ React2__default.default.createElement("div", { className: "flex-1" }, /* @__PURE__ */ React2__default.default.createElement("div", { className: "relative" }, /* @__PURE__ */ React2__default.default.createElement(
4077
4045
  "input",
4078
4046
  {
4079
4047
  type: "text",
@@ -4087,12 +4055,12 @@ var EventSearch = ({
4087
4055
  {
4088
4056
  type: "button",
4089
4057
  onClick: () => setIsExpanded(!isExpanded),
4090
- className: `px-3 py-2 text-sm font-medium rounded-lg transition-colors ${hasActiveFilters ? "bg-blue-100 text-blue-700 border border-blue-300" : "bg-gray-100 text-gray-700 border border-gray-300 hover:bg-gray-200"}`
4058
+ className: clsx.clsx("px-3 py-2 text-sm font-medium rounded-lg transition-colors", hasActiveFilters ? "bg-blue-100 text-blue-700 border border-blue-300" : "bg-gray-100 text-gray-700 border border-gray-300 hover:bg-gray-200")
4091
4059
  },
4092
4060
  /* @__PURE__ */ React2__default.default.createElement("div", { className: "flex items-center space-x-2" }, /* @__PURE__ */ React2__default.default.createElement(
4093
4061
  "svg",
4094
4062
  {
4095
- className: `h-4 w-4 transition-transform ${isExpanded ? "rotate-180" : ""}`,
4063
+ className: clsx.clsx("h-4 w-4 transition-transform", isExpanded ? "rotate-180" : ""),
4096
4064
  fill: "none",
4097
4065
  stroke: "currentColor",
4098
4066
  viewBox: "0 0 24 24"
@@ -4140,9 +4108,9 @@ var EventSearch = ({
4140
4108
  const newColors = filters.colorFilter.includes(color) ? filters.colorFilter.filter((c) => c !== color) : [...filters.colorFilter, color];
4141
4109
  handleFilterChange("colorFilter", newColors);
4142
4110
  },
4143
- className: `w-8 h-8 rounded border-2 transition-all ${filters.colorFilter.includes(color) ? "border-gray-800 scale-110" : "border-gray-300 hover:border-gray-500"}`,
4111
+ className: clsx.clsx("w-8 h-8 rounded border-2 transition-all", filters.colorFilter.includes(color) ? "border-gray-800 scale-110" : "border-gray-300 hover:border-gray-500"),
4144
4112
  style: { backgroundColor: color },
4145
- title: `\u989C\u8272: ${color}`
4113
+ title: "\u989C\u8272: " + color
4146
4114
  }
4147
4115
  )))), /* @__PURE__ */ React2__default.default.createElement("div", { className: "md:col-span-2 lg:col-span-3" }, /* @__PURE__ */ React2__default.default.createElement("label", { className: "block text-sm font-medium text-gray-700 mb-2" }, "\u65E5\u671F\u8303\u56F4"), /* @__PURE__ */ React2__default.default.createElement("div", { className: "flex items-center space-x-3" }, /* @__PURE__ */ React2__default.default.createElement(
4148
4116
  "input",
@@ -4184,9 +4152,9 @@ function useEvents2() {
4184
4152
  startDate: toLocalISOString(startDate),
4185
4153
  endDate: toLocalISOString(endDate)
4186
4154
  });
4187
- const response = await fetch(`/api/calendar/events?${params}`);
4155
+ const response = await fetch("/api/calendar/events?" + params);
4188
4156
  if (!response.ok) {
4189
- throw new Error(`\u83B7\u53D6\u4E8B\u4EF6\u5931\u8D25: ${response.status}`);
4157
+ throw new Error("\u83B7\u53D6\u4E8B\u4EF6\u5931\u8D25: " + response.status);
4190
4158
  }
4191
4159
  const data = await response.json();
4192
4160
  if (!data.success) {
@@ -4235,7 +4203,7 @@ function useEvents2() {
4235
4203
  body: JSON.stringify(createRequest)
4236
4204
  });
4237
4205
  if (!response.ok) {
4238
- throw new Error(`\u521B\u5EFA\u4E8B\u4EF6\u5931\u8D25: ${response.status}`);
4206
+ throw new Error("\u521B\u5EFA\u4E8B\u4EF6\u5931\u8D25: " + response.status);
4239
4207
  }
4240
4208
  const data = await response.json();
4241
4209
  if (!data.success) {
@@ -4271,7 +4239,7 @@ function useEvents2() {
4271
4239
  if (eventData.allDay !== void 0) updateRequest.allDay = eventData.allDay;
4272
4240
  if (eventData.location !== void 0) updateRequest.location = eventData.location;
4273
4241
  if (eventData.color !== void 0) updateRequest.color = eventData.color;
4274
- const response = await fetch(`/api/calendar/events/${eventId}`, {
4242
+ const response = await fetch("/api/calendar/events/" + eventId, {
4275
4243
  method: "PUT",
4276
4244
  headers: {
4277
4245
  "Content-Type": "application/json"
@@ -4279,7 +4247,7 @@ function useEvents2() {
4279
4247
  body: JSON.stringify(updateRequest)
4280
4248
  });
4281
4249
  if (!response.ok) {
4282
- throw new Error(`\u66F4\u65B0\u4E8B\u4EF6\u5931\u8D25: ${response.status}`);
4250
+ throw new Error("\u66F4\u65B0\u4E8B\u4EF6\u5931\u8D25: " + response.status);
4283
4251
  }
4284
4252
  const data = await response.json();
4285
4253
  if (!data.success) {
@@ -4309,12 +4277,12 @@ function useEvents2() {
4309
4277
  setLoading(true);
4310
4278
  setError(void 0);
4311
4279
  try {
4312
- const url = deleteAll ? `/api/calendar/events/${eventId}?deleteAll=true` : `/api/calendar/events/${eventId}`;
4280
+ const url = deleteAll ? "/api/calendar/events/" + eventId + "?deleteAll=true" : "/api/calendar/events/" + eventId;
4313
4281
  const response = await fetch(url, {
4314
4282
  method: "DELETE"
4315
4283
  });
4316
4284
  if (!response.ok) {
4317
- throw new Error(`\u5220\u9664\u4E8B\u4EF6\u5931\u8D25: ${response.status}`);
4285
+ throw new Error("\u5220\u9664\u4E8B\u4EF6\u5931\u8D25: " + response.status);
4318
4286
  }
4319
4287
  const data = await response.json();
4320
4288
  if (!data.success) {
@@ -4342,7 +4310,7 @@ function useEvents2() {
4342
4310
  body: JSON.stringify({ eventIds })
4343
4311
  });
4344
4312
  if (!response.ok) {
4345
- throw new Error(`\u6279\u91CF\u5220\u9664\u4E8B\u4EF6\u5931\u8D25: ${response.status}`);
4313
+ throw new Error("\u6279\u91CF\u5220\u9664\u4E8B\u4EF6\u5931\u8D25: " + response.status);
4346
4314
  }
4347
4315
  const data = await response.json();
4348
4316
  if (!data.success) {
@@ -4385,7 +4353,7 @@ var CalendarExportService = class {
4385
4353
  case "csv":
4386
4354
  return this.exportToCSV(events);
4387
4355
  default:
4388
- throw new Error(`\u4E0D\u652F\u6301\u7684\u5BFC\u51FA\u683C\u5F0F: ${options.format}`);
4356
+ throw new Error("\u4E0D\u652F\u6301\u7684\u5BFC\u51FA\u683C\u5F0F: " + options.format);
4389
4357
  }
4390
4358
  }
4391
4359
  /**
@@ -4400,16 +4368,16 @@ var CalendarExportService = class {
4400
4368
  lines.push("METHOD:PUBLISH");
4401
4369
  events.forEach((event) => {
4402
4370
  lines.push("BEGIN:VEVENT");
4403
- lines.push(`UID:${event.id}@profile-v1.calendar`);
4404
- lines.push(`DTSTART:${this.formatDateTimeToICal(new Date(event.startTime))}`);
4405
- lines.push(`DTEND:${this.formatDateTimeToICal(new Date(event.endTime))}`);
4406
- lines.push(`DTSTAMP:${this.formatDateTimeToICal(new Date(event.createdAt))}`);
4407
- lines.push(`SUMMARY:${this.escapeICalText(event.title)}`);
4371
+ lines.push("UID:" + event.id + "@profile-v1.calendar");
4372
+ lines.push("DTSTART:" + this.formatDateTimeToICal(new Date(event.startTime)));
4373
+ lines.push("DTEND:" + this.formatDateTimeToICal(new Date(event.endTime)));
4374
+ lines.push("DTSTAMP:" + this.formatDateTimeToICal(new Date(event.createdAt)));
4375
+ lines.push("SUMMARY:" + this.escapeICalText(event.title));
4408
4376
  if (event.description) {
4409
- lines.push(`DESCRIPTION:${this.escapeICalText(event.description)}`);
4377
+ lines.push("DESCRIPTION:" + this.escapeICalText(event.description));
4410
4378
  }
4411
4379
  if (event.location) {
4412
- lines.push(`LOCATION:${this.escapeICalText(event.location)}`);
4380
+ lines.push("LOCATION:" + this.escapeICalText(event.location));
4413
4381
  }
4414
4382
  if (event.priority) {
4415
4383
  const priorityMap = {
@@ -4417,7 +4385,7 @@ var CalendarExportService = class {
4417
4385
  "normal": "5",
4418
4386
  "high": "1"
4419
4387
  };
4420
- lines.push(`PRIORITY:${priorityMap[event.priority] || "5"}`);
4388
+ lines.push("PRIORITY:" + (priorityMap[event.priority] || "5"));
4421
4389
  }
4422
4390
  if (event.allDay) {
4423
4391
  lines.push("X-MICROSOFT-CDO-ALLDAYEVENT:TRUE");
@@ -4537,7 +4505,7 @@ var CalendarExportService = class {
4537
4505
  */
4538
4506
  static escapeCSVField(field) {
4539
4507
  if (field.includes(",") || field.includes('"') || field.includes("\n")) {
4540
- return `"${field.replace(/"/g, '""')}"`;
4508
+ return '"' + field.replace(/"/g, '""') + '"';
4541
4509
  }
4542
4510
  return field;
4543
4511
  }
@@ -4557,7 +4525,7 @@ var CalendarImportService = class {
4557
4525
  return {
4558
4526
  success: false,
4559
4527
  importedCount: 0,
4560
- errors: [`\u8BFB\u53D6\u6587\u4EF6\u5931\u8D25: ${error instanceof Error ? error.message : "\u672A\u77E5\u9519\u8BEF"}`],
4528
+ errors: ["\u8BFB\u53D6\u6587\u4EF6\u5931\u8D25: " + (error instanceof Error ? error.message : "\u672A\u77E5\u9519\u8BEF")],
4561
4529
  events: []
4562
4530
  };
4563
4531
  }
@@ -4579,7 +4547,7 @@ var CalendarImportService = class {
4579
4547
  events = this.parseCSVContent(content);
4580
4548
  break;
4581
4549
  default:
4582
- throw new Error(`\u4E0D\u652F\u6301\u7684\u5BFC\u5165\u683C\u5F0F: ${options.format}`);
4550
+ throw new Error("\u4E0D\u652F\u6301\u7684\u5BFC\u5165\u683C\u5F0F: " + options.format);
4583
4551
  }
4584
4552
  if (options.validateEvents) {
4585
4553
  events = this.validateAndFilterEvents(events);
@@ -4594,7 +4562,7 @@ var CalendarImportService = class {
4594
4562
  return {
4595
4563
  success: false,
4596
4564
  importedCount: 0,
4597
- errors: [`\u89E3\u6790\u5185\u5BB9\u5931\u8D25: ${error instanceof Error ? error.message : "\u672A\u77E5\u9519\u8BEF"}`],
4565
+ errors: ["\u89E3\u6790\u5185\u5BB9\u5931\u8D25: " + (error instanceof Error ? error.message : "\u672A\u77E5\u9519\u8BEF")],
4598
4566
  events: []
4599
4567
  };
4600
4568
  }
@@ -4821,7 +4789,7 @@ var CalendarImportService = class {
4821
4789
  const hour = dateTime.substring(8, 10);
4822
4790
  const minute = dateTime.substring(10, 12);
4823
4791
  const second = dateTime.substring(12, 14);
4824
- return `${year}-${month}-${day}T${hour}:${minute}:${second}.000Z`;
4792
+ return year + "-" + month + "-" + day + "T" + hour + ":" + minute + ":" + second + ".000Z";
4825
4793
  }
4826
4794
  } else {
4827
4795
  const dateOnly = value.replace(/[^\d]/g, "");
@@ -4829,7 +4797,7 @@ var CalendarImportService = class {
4829
4797
  const year = dateOnly.substring(0, 4);
4830
4798
  const month = dateOnly.substring(4, 6);
4831
4799
  const day = dateOnly.substring(6, 8);
4832
- return `${year}-${month}-${day}T00:00:00.000Z`;
4800
+ return year + "-" + month + "-" + day + "T00:00:00.000Z";
4833
4801
  }
4834
4802
  }
4835
4803
  return (/* @__PURE__ */ new Date()).toISOString();
@@ -4991,22 +4959,22 @@ var RecurrenceService = class {
4991
4959
  let description = "";
4992
4960
  switch (rule.type) {
4993
4961
  case "daily":
4994
- description = rule.interval === 1 ? "\u6BCF\u5929" : `\u6BCF${rule.interval}\u5929`;
4962
+ description = rule.interval === 1 ? "\u6BCF\u5929" : "\u6BCF" + rule.interval + "\u5929";
4995
4963
  break;
4996
4964
  case "weekly":
4997
- description = rule.interval === 1 ? "\u6BCF\u5468" : `\u6BCF${rule.interval}\u5468`;
4965
+ description = rule.interval === 1 ? "\u6BCF\u5468" : "\u6BCF" + rule.interval + "\u5468";
4998
4966
  break;
4999
4967
  case "monthly":
5000
- description = rule.interval === 1 ? "\u6BCF\u6708" : `\u6BCF${rule.interval}\u4E2A\u6708`;
4968
+ description = rule.interval === 1 ? "\u6BCF\u6708" : "\u6BCF" + rule.interval + "\u4E2A\u6708";
5001
4969
  break;
5002
4970
  case "yearly":
5003
- description = rule.interval === 1 ? "\u6BCF\u5E74" : `\u6BCF${rule.interval}\u5E74`;
4971
+ description = rule.interval === 1 ? "\u6BCF\u5E74" : "\u6BCF" + rule.interval + "\u5E74";
5004
4972
  break;
5005
4973
  }
5006
4974
  if (rule.endDate) {
5007
- description += `\uFF0C\u76F4\u5230${rule.endDate}`;
4975
+ description += "\uFF0C\u76F4\u5230" + rule.endDate;
5008
4976
  } else if (rule.count) {
5009
- description += `\uFF0C\u5171${rule.count}\u6B21`;
4977
+ description += "\uFF0C\u5171" + rule.count + "\u6B21";
5010
4978
  }
5011
4979
  return description;
5012
4980
  }
@@ -5030,7 +4998,7 @@ var ReminderService = class {
5030
4998
  * 为事件创建提醒
5031
4999
  */
5032
5000
  static createReminder(event, reminderMinutes, reminderType = "browser") {
5033
- const reminderId = `${event.id}_${Date.now()}`;
5001
+ const reminderId = event.id + "_" + Date.now();
5034
5002
  const eventStart = new Date(event.startTime);
5035
5003
  const reminderTime = new Date(eventStart.getTime() - reminderMinutes * 60 * 1e3);
5036
5004
  const reminder = {
@@ -5112,8 +5080,7 @@ var ReminderService = class {
5112
5080
  }
5113
5081
  const timeText = this.getTimeText(reminder.config.minutes);
5114
5082
  const notification = new Notification(`\u{1F4C5} \u4E8B\u4EF6\u63D0\u9192`, {
5115
- body: `${reminder.eventTitle}
5116
- ${timeText}`,
5083
+ body: reminder.eventTitle + "\n" + timeText,
5117
5084
  icon: "/favicon.ico",
5118
5085
  tag: reminder.id,
5119
5086
  requireInteraction: true
@@ -5166,10 +5133,7 @@ ${timeText}`,
5166
5133
  */
5167
5134
  static showVisualAlert(reminder) {
5168
5135
  const timeText = this.getTimeText(reminder.config.minutes);
5169
- alert(`\u{1F4C5} \u4E8B\u4EF6\u63D0\u9192
5170
-
5171
- ${reminder.eventTitle}
5172
- ${timeText}`);
5136
+ alert("\u{1F4C5} \u4E8B\u4EF6\u63D0\u9192\n\n" + reminder.eventTitle + "\n" + timeText);
5173
5137
  }
5174
5138
  /**
5175
5139
  * 获取时间描述文本
@@ -5178,15 +5142,15 @@ ${timeText}`);
5178
5142
  if (minutes === 0) {
5179
5143
  return "\u4E8B\u4EF6\u5373\u5C06\u5F00\u59CB";
5180
5144
  } else if (minutes < 60) {
5181
- return `${minutes}\u5206\u949F\u540E\u5F00\u59CB`;
5145
+ return minutes + "\u5206\u949F\u540E\u5F00\u59CB";
5182
5146
  } else if (minutes < 1440) {
5183
5147
  const hours = Math.floor(minutes / 60);
5184
5148
  const remainingMinutes = minutes % 60;
5185
- return remainingMinutes > 0 ? `${hours}\u5C0F\u65F6${remainingMinutes}\u5206\u949F\u540E\u5F00\u59CB` : `${hours}\u5C0F\u65F6\u540E\u5F00\u59CB`;
5149
+ return remainingMinutes > 0 ? hours + "\u5C0F\u65F6" + remainingMinutes + "\u5206\u949F\u540E\u5F00\u59CB" : hours + "\u5C0F\u65F6\u540E\u5F00\u59CB";
5186
5150
  } else {
5187
5151
  const days = Math.floor(minutes / 1440);
5188
5152
  const remainingHours = Math.floor(minutes % 1440 / 60);
5189
- return remainingHours > 0 ? `${days}\u5929${remainingHours}\u5C0F\u65F6\u540E\u5F00\u59CB` : `${days}\u5929\u540E\u5F00\u59CB`;
5153
+ return remainingHours > 0 ? days + "\u5929" + remainingHours + "\u5C0F\u65F6\u540E\u5F00\u59CB" : days + "\u5929\u540E\u5F00\u59CB";
5190
5154
  }
5191
5155
  }
5192
5156
  /**