sa2kit 1.6.29 → 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-I7I5YGLB.mjs.map → AliyunOSSProvider-P6TOVKMM.mjs.map} +1 -1
  3. package/dist/AliyunOSSProvider-Z5BRBCG6.js +15 -0
  4. package/dist/{AliyunOSSProvider-L7JWMKS4.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-FVLLHBHO.mjs.map → LocalStorageProvider-3RVPCQB3.mjs.map} +1 -1
  11. package/dist/LocalStorageProvider-PP7MA5OT.js +15 -0
  12. package/dist/{LocalStorageProvider-NBNHHWLY.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-WSNM4EU5.mjs → chunk-77M5AQG3.mjs} +37 -41
  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-TKCYPDWU.js → chunk-Q5EDCKQA.js} +27 -29
  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-5GCHAXY5.js → chunk-X3UU7JHT.js} +38 -42
  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-GSTLV3MB.mjs → chunk-YOTQG4NP.mjs} +26 -28
  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-I7I5YGLB.mjs +0 -6
  201. package/dist/AliyunOSSProvider-L7JWMKS4.js +0 -15
  202. package/dist/ConfigService-7MEZXKJ5.js +0 -21
  203. package/dist/ConfigService-BV57YYFW.mjs +0 -4
  204. package/dist/LocalStorageProvider-FVLLHBHO.mjs +0 -6
  205. package/dist/LocalStorageProvider-NBNHHWLY.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-5GCHAXY5.js.map +0 -1
  211. package/dist/chunk-6PRFP5EG.js.map +0 -1
  212. package/dist/chunk-6YKMCPQI.mjs.map +0 -1
  213. package/dist/chunk-7Z5LLJ3A.js.map +0 -1
  214. package/dist/chunk-A3UP56MS.js.map +0 -1
  215. package/dist/chunk-CD77U7LZ.js.map +0 -1
  216. package/dist/chunk-CLKKZSPZ.js.map +0 -1
  217. package/dist/chunk-CNTILN5J.mjs.map +0 -1
  218. package/dist/chunk-DUHZ7VZP.js.map +0 -1
  219. package/dist/chunk-DW2ZTOCV.js.map +0 -1
  220. package/dist/chunk-E7RGBAYJ.js.map +0 -1
  221. package/dist/chunk-GSTLV3MB.mjs.map +0 -1
  222. package/dist/chunk-JZXJQMVE.js.map +0 -1
  223. package/dist/chunk-KQGP6BTS.mjs.map +0 -1
  224. package/dist/chunk-LFG6FPM5.mjs.map +0 -1
  225. package/dist/chunk-LX4XX6W7.js.map +0 -1
  226. package/dist/chunk-MW4BCIZC.mjs.map +0 -1
  227. package/dist/chunk-OCR5DS4C.mjs.map +0 -1
  228. package/dist/chunk-OLHGZXN3.mjs.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-TKCYPDWU.js.map +0 -1
  234. package/dist/chunk-TOC5FSHP.js.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-WSNM4EU5.mjs.map +0 -1
@@ -1,8 +1,9 @@
1
- import { SearchBox, ConfirmModal, Modal } from '../chunk-LFG6FPM5.mjs';
2
- import '../chunk-3BGPZN4X.mjs';
3
- import '../chunk-KQGP6BTS.mjs';
1
+ import { SearchBox, ConfirmModal, Modal } from '../chunk-KIP2CERU.mjs';
2
+ import '../chunk-3NHAT7D4.mjs';
3
+ import '../chunk-3DXPQ4YV.mjs';
4
4
  import '../chunk-BJTO5JO5.mjs';
5
5
  import React2, { useState, useMemo, useCallback, useEffect } from 'react';
6
+ import { clsx } from 'clsx';
6
7
  import { useDraggable, useDroppable, DndContext, DragOverlay } from '@dnd-kit/core';
7
8
 
8
9
  // src/calendar/types/index.ts
@@ -75,7 +76,7 @@ function formatDate(date) {
75
76
  const year = date.getFullYear();
76
77
  const month = String(date.getMonth() + 1).padStart(2, "0");
77
78
  const day = String(date.getDate()).padStart(2, "0");
78
- return `${year}-${month}-${day}`;
79
+ return year + "-" + month + "-" + day;
79
80
  }
80
81
  function formatTime(date) {
81
82
  return date.toLocaleTimeString("zh-CN", {
@@ -103,7 +104,7 @@ function toLocalISOString(date) {
103
104
  const minutes = String(date.getMinutes()).padStart(2, "0");
104
105
  const seconds = String(date.getSeconds()).padStart(2, "0");
105
106
  const milliseconds = String(date.getMilliseconds()).padStart(3, "0");
106
- return `${year}-${month}-${day}T${hours}:${minutes}:${seconds}.${milliseconds}`;
107
+ return year + "-" + month + "-" + day + "T" + hours + ":" + minutes + ":" + seconds + "." + milliseconds;
107
108
  }
108
109
  function getMonthStart(date) {
109
110
  return new Date(date.getFullYear(), date.getMonth(), 1);
@@ -250,9 +251,9 @@ function getRelativeTime(date, locale = "zh-CN") {
250
251
  } else if (diffInDays === -1) {
251
252
  return "\u6628\u5929";
252
253
  } else if (diffInDays > 1 && diffInDays <= 7) {
253
- return `${diffInDays}\u5929\u540E`;
254
+ return diffInDays + "\u5929\u540E";
254
255
  } else if (diffInDays < -1 && diffInDays >= -7) {
255
- return `${Math.abs(diffInDays)}\u5929\u524D`;
256
+ return Math.abs(diffInDays) + "\u5929\u524D";
256
257
  }
257
258
  return formatDate(date);
258
259
  }
@@ -453,13 +454,13 @@ function EventList({
453
454
  "button",
454
455
  {
455
456
  onClick: () => handleSortChange(field),
456
- 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"}`
457
+ className: 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")
457
458
  },
458
459
  label,
459
460
  /* @__PURE__ */ React2.createElement(
460
461
  "svg",
461
462
  {
462
- className: `ml-1 w-4 h-4 transition-transform ${isActive ? isAsc ? "rotate-180" : "" : "opacity-50"}`,
463
+ className: clsx("ml-1 w-4 h-4 transition-transform", isActive ? isAsc ? "rotate-180" : "" : "opacity-50"),
463
464
  fill: "none",
464
465
  stroke: "currentColor",
465
466
  viewBox: "0 0 24 24"
@@ -504,10 +505,10 @@ function EventList({
504
505
  "div",
505
506
  {
506
507
  key: event.id,
507
- 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" : ""}`,
508
+ className: 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" : ""),
508
509
  onClick: () => !isSelectionMode && onEventClick(event)
509
510
  },
510
- /* @__PURE__ */ React2.createElement("div", { className: "flex items-start justify-between" }, /* @__PURE__ */ React2.createElement("div", { className: "flex items-start gap-3 flex-1" }, isSelectionMode && /* @__PURE__ */ React2.createElement("div", { className: "pt-1" }, renderCheckbox(event.id)), /* @__PURE__ */ React2.createElement("div", { className: "flex-1" }, /* @__PURE__ */ React2.createElement("div", { className: "flex items-center gap-3 mb-2" }, /* @__PURE__ */ React2.createElement("h3", { className: "text-lg font-semibold text-gray-900" }, event.title), /* @__PURE__ */ React2.createElement("span", { className: `px-2 py-1 text-xs font-medium rounded border ${priorityDisplay.color}` }, priorityDisplay.text)), event.description && /* @__PURE__ */ React2.createElement("p", { className: "text-gray-600 mb-2 line-clamp-2" }, event.description), /* @__PURE__ */ React2.createElement("div", { className: "flex items-center gap-4 text-sm text-gray-500" }, /* @__PURE__ */ React2.createElement("div", { className: "flex items-center gap-1" }, /* @__PURE__ */ React2.createElement("svg", { className: "w-4 h-4", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24" }, /* @__PURE__ */ React2.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.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.createElement("div", { className: "flex items-center gap-1" }, /* @__PURE__ */ React2.createElement("svg", { className: "w-4 h-4", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24" }, /* @__PURE__ */ React2.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.createElement("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M15 11a3 3 0 11-6 0 3 3 0 016 0z" })), /* @__PURE__ */ React2.createElement("span", null, event.location))))), !isSelectionMode && /* @__PURE__ */ React2.createElement("div", { className: "flex items-center gap-2 ml-4" }, /* @__PURE__ */ React2.createElement(
511
+ /* @__PURE__ */ React2.createElement("div", { className: "flex items-start justify-between" }, /* @__PURE__ */ React2.createElement("div", { className: "flex items-start gap-3 flex-1" }, isSelectionMode && /* @__PURE__ */ React2.createElement("div", { className: "pt-1" }, renderCheckbox(event.id)), /* @__PURE__ */ React2.createElement("div", { className: "flex-1" }, /* @__PURE__ */ React2.createElement("div", { className: "flex items-center gap-3 mb-2" }, /* @__PURE__ */ React2.createElement("h3", { className: "text-lg font-semibold text-gray-900" }, event.title), /* @__PURE__ */ React2.createElement("span", { className: clsx("px-2 py-1 text-xs font-medium rounded border", priorityDisplay.color) }, priorityDisplay.text)), event.description && /* @__PURE__ */ React2.createElement("p", { className: "text-gray-600 mb-2 line-clamp-2" }, event.description), /* @__PURE__ */ React2.createElement("div", { className: "flex items-center gap-4 text-sm text-gray-500" }, /* @__PURE__ */ React2.createElement("div", { className: "flex items-center gap-1" }, /* @__PURE__ */ React2.createElement("svg", { className: "w-4 h-4", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24" }, /* @__PURE__ */ React2.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.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.createElement("div", { className: "flex items-center gap-1" }, /* @__PURE__ */ React2.createElement("svg", { className: "w-4 h-4", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24" }, /* @__PURE__ */ React2.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.createElement("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M15 11a3 3 0 11-6 0 3 3 0 016 0z" })), /* @__PURE__ */ React2.createElement("span", null, event.location))))), !isSelectionMode && /* @__PURE__ */ React2.createElement("div", { className: "flex items-center gap-2 ml-4" }, /* @__PURE__ */ React2.createElement(
511
512
  "button",
512
513
  {
513
514
  onClick: (e) => {
@@ -539,10 +540,10 @@ function EventList({
539
540
  "div",
540
541
  {
541
542
  key: event.id,
542
- 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" : ""}`,
543
+ className: 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" : ""),
543
544
  onClick: () => !isSelectionMode && onEventClick(event)
544
545
  },
545
- /* @__PURE__ */ React2.createElement("div", { className: "flex items-start justify-between mb-3" }, isSelectionMode && /* @__PURE__ */ React2.createElement("div", { className: "pt-1 mr-2" }, renderCheckbox(event.id)), /* @__PURE__ */ React2.createElement("h3", { className: "text-lg font-semibold text-gray-900 flex-1 pr-2" }, event.title), /* @__PURE__ */ React2.createElement("span", { className: `px-2 py-1 text-xs font-medium rounded border flex-shrink-0 ${priorityDisplay.color}` }, priorityDisplay.text)),
546
+ /* @__PURE__ */ React2.createElement("div", { className: "flex items-start justify-between mb-3" }, isSelectionMode && /* @__PURE__ */ React2.createElement("div", { className: "pt-1 mr-2" }, renderCheckbox(event.id)), /* @__PURE__ */ React2.createElement("h3", { className: "text-lg font-semibold text-gray-900 flex-1 pr-2" }, event.title), /* @__PURE__ */ React2.createElement("span", { className: clsx("px-2 py-1 text-xs font-medium rounded border flex-shrink-0", priorityDisplay.color) }, priorityDisplay.text)),
546
547
  event.description && /* @__PURE__ */ React2.createElement("p", { className: "text-gray-600 text-sm mb-3 line-clamp-3" }, event.description),
547
548
  /* @__PURE__ */ React2.createElement("div", { className: "space-y-2 text-sm text-gray-500" }, /* @__PURE__ */ React2.createElement("div", { className: "flex items-center gap-1" }, /* @__PURE__ */ React2.createElement("svg", { className: "w-4 h-4 flex-shrink-0", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24" }, /* @__PURE__ */ React2.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.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.createElement("div", { className: "flex items-center gap-1" }, /* @__PURE__ */ React2.createElement("svg", { className: "w-4 h-4 flex-shrink-0", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24" }, /* @__PURE__ */ React2.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.createElement("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M15 11a3 3 0 11-6 0 3 3 0 016 0z" })), /* @__PURE__ */ React2.createElement("span", { className: "truncate" }, event.location))),
548
549
  !isSelectionMode && /* @__PURE__ */ React2.createElement("div", { className: "flex items-center justify-end gap-2 mt-4 pt-3 border-t border-gray-200" }, /* @__PURE__ */ React2.createElement(
@@ -570,7 +571,7 @@ function EventList({
570
571
  ))
571
572
  );
572
573
  }));
573
- return /* @__PURE__ */ React2.createElement("div", { className: `space-y-6 ${className}` }, /* @__PURE__ */ React2.createElement("div", { className: "bg-white rounded-lg shadow-sm border border-gray-200 p-4" }, /* @__PURE__ */ React2.createElement("div", { className: "flex flex-col lg:flex-row lg:items-center lg:justify-between gap-4" }, /* @__PURE__ */ React2.createElement("div", { className: "flex-1 max-w-md" }, /* @__PURE__ */ React2.createElement(
574
+ return /* @__PURE__ */ React2.createElement("div", { className: clsx("space-y-6", className) }, /* @__PURE__ */ React2.createElement("div", { className: "bg-white rounded-lg shadow-sm border border-gray-200 p-4" }, /* @__PURE__ */ React2.createElement("div", { className: "flex flex-col lg:flex-row lg:items-center lg:justify-between gap-4" }, /* @__PURE__ */ React2.createElement("div", { className: "flex-1 max-w-md" }, /* @__PURE__ */ React2.createElement(
574
575
  SearchBox,
575
576
  {
576
577
  searchQuery: config.filter.searchText || "",
@@ -608,17 +609,17 @@ function EventList({
608
609
  "button",
609
610
  {
610
611
  onClick: () => handleDisplayModeChange("list" /* LIST */),
611
- 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"}`
612
+ className: 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")
612
613
  },
613
614
  "\u5217\u8868"
614
615
  ), /* @__PURE__ */ React2.createElement(
615
616
  "button",
616
617
  {
617
618
  onClick: () => handleDisplayModeChange("grid" /* GRID */),
618
- 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"}`
619
+ className: 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")
619
620
  },
620
621
  "\u7F51\u683C"
621
- ))))), isSelectionMode && /* @__PURE__ */ React2.createElement("div", { className: "flex items-center justify-between mt-4 pt-4 border-t border-gray-200" }, /* @__PURE__ */ React2.createElement("div", { className: "flex items-center gap-3" }, /* @__PURE__ */ React2.createElement("label", { className: "flex items-center gap-2 text-sm font-medium text-gray-700" }, renderSelectAllCheckbox(), "\u5168\u9009\u5F53\u524D\u9875"), /* @__PURE__ */ React2.createElement("span", { className: "text-sm text-gray-600" }, "\u5DF2\u9009\u62E9 ", selectedEventIds.size, " \u4E2A\u4E8B\u4EF6"))), !isSelectionMode && /* @__PURE__ */ React2.createElement("div", { className: "flex flex-wrap items-center gap-2 mt-4 pt-4 border-t border-gray-200" }, /* @__PURE__ */ React2.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.createElement("div", { className: "flex items-center justify-between" }, /* @__PURE__ */ React2.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.createElement("div", { className: "flex justify-center py-8" }, /* @__PURE__ */ React2.createElement("div", { className: "animate-spin rounded-full h-8 w-8 border-b-2 border-blue-600" })), !loading && paginatedEvents.length > 0 && /* @__PURE__ */ React2.createElement(React2.Fragment, null, config.displayMode === "list" /* LIST */ ? renderListMode() : renderGridMode(), totalPages > 1 && /* @__PURE__ */ React2.createElement("div", { className: "flex items-center justify-between pt-6" }, /* @__PURE__ */ React2.createElement("div", { className: "text-sm text-gray-600" }, "\u7B2C ", config.currentPage, " \u9875\uFF0C\u5171 ", totalPages, " \u9875"), /* @__PURE__ */ React2.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ React2.createElement(
622
+ ))))), isSelectionMode && /* @__PURE__ */ React2.createElement("div", { className: "flex items-center justify-between mt-4 pt-4 border-t border-gray-200" }, /* @__PURE__ */ React2.createElement("div", { className: "flex items-center gap-3" }, /* @__PURE__ */ React2.createElement("label", { className: "flex items-center gap-2 text-sm font-medium text-gray-700" }, renderSelectAllCheckbox(), "\u5168\u9009\u5F53\u524D\u9875"), /* @__PURE__ */ React2.createElement("span", { className: "text-sm text-gray-600" }, "\u5DF2\u9009\u62E9 ", selectedEventIds.size, " \u4E2A\u4E8B\u4EF6"))), !isSelectionMode && /* @__PURE__ */ React2.createElement("div", { className: "flex flex-wrap items-center gap-2 mt-4 pt-4 border-t border-gray-200" }, /* @__PURE__ */ React2.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.createElement("div", { className: "flex items-center justify-between" }, /* @__PURE__ */ React2.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.createElement("div", { className: "flex justify-center py-8" }, /* @__PURE__ */ React2.createElement("div", { className: "animate-spin rounded-full h-8 w-8 border-b-2 border-blue-600" })), !loading && paginatedEvents.length > 0 && /* @__PURE__ */ React2.createElement(React2.Fragment, null, config.displayMode === "list" /* LIST */ ? renderListMode() : renderGridMode(), totalPages > 1 && /* @__PURE__ */ React2.createElement("div", { className: "flex items-center justify-between pt-6" }, /* @__PURE__ */ React2.createElement("div", { className: "text-sm text-gray-600" }, "\u7B2C ", config.currentPage, " \u9875\uFF0C\u5171 ", totalPages, " \u9875"), /* @__PURE__ */ React2.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ React2.createElement(
622
623
  "button",
623
624
  {
624
625
  onClick: () => handlePageChange(config.currentPage - 1),
@@ -641,7 +642,7 @@ function EventList({
641
642
  onClose: () => setShowBatchDeleteConfirm(false),
642
643
  onConfirm: handleBatchDelete,
643
644
  title: "\u786E\u8BA4\u6279\u91CF\u5220\u9664",
644
- message: `\u786E\u5B9A\u8981\u5220\u9664\u9009\u4E2D\u7684 ${selectedEventIds.size} \u4E2A\u4E8B\u4EF6\u5417\uFF1F\u6B64\u64CD\u4F5C\u65E0\u6CD5\u64A4\u9500\u3002`,
645
+ message: "\u786E\u5B9A\u8981\u5220\u9664\u9009\u4E2D\u7684 " + selectedEventIds.size + " \u4E2A\u4E8B\u4EF6\u5417\uFF1F\u6B64\u64CD\u4F5C\u65E0\u6CD5\u64A4\u9500\u3002",
645
646
  confirmText: "\u5220\u9664",
646
647
  cancelText: "\u53D6\u6D88",
647
648
  isLoading: batchDeleteLoading
@@ -677,7 +678,7 @@ var EventTypeService = class {
677
678
  case "recurring" /* RECURRING */:
678
679
  return this.generateRecurringEvents(eventData, viewStartDate, viewEndDate, parentEventId);
679
680
  default:
680
- throw new Error(`\u4E0D\u652F\u6301\u7684\u4E8B\u4EF6\u7C7B\u578B: ${eventData.type}`);
681
+ throw new Error("\u4E0D\u652F\u6301\u7684\u4E8B\u4EF6\u7C7B\u578B: " + eventData.type);
681
682
  }
682
683
  }
683
684
  /**
@@ -798,7 +799,7 @@ var EventTypeService = class {
798
799
  nextDate.setFullYear(nextDate.getFullYear() + recurrence.interval);
799
800
  break;
800
801
  default:
801
- throw new Error(`\u4E0D\u652F\u6301\u7684\u91CD\u590D\u6A21\u5F0F: ${recurrence.pattern}`);
802
+ throw new Error("\u4E0D\u652F\u6301\u7684\u91CD\u590D\u6A21\u5F0F: " + recurrence.pattern);
802
803
  }
803
804
  return nextDate;
804
805
  }
@@ -907,28 +908,28 @@ var EventTypeService = class {
907
908
  return "\u5355\u6B21\u4E8B\u4EF6";
908
909
  case "multi_day" /* MULTI_DAY */:
909
910
  const dayCount = Math.ceil((eventData.endDate.getTime() - eventData.startDate.getTime()) / (24 * 60 * 60 * 1e3)) + 1;
910
- return `\u6301\u7EED ${dayCount} \u5929`;
911
+ return "\u6301\u7EED " + dayCount + " \u5929";
911
912
  case "recurring" /* RECURRING */:
912
913
  const { pattern, interval, count, endDate } = eventData.recurrence;
913
914
  let desc = "";
914
915
  switch (pattern) {
915
916
  case "daily" /* DAILY */:
916
- desc = interval === 1 ? "\u6BCF\u5929" : `\u6BCF ${interval} \u5929`;
917
+ desc = interval === 1 ? "\u6BCF\u5929" : "\u6BCF " + interval + " \u5929";
917
918
  break;
918
919
  case "weekly" /* WEEKLY */:
919
- desc = interval === 1 ? "\u6BCF\u5468" : `\u6BCF ${interval} \u5468`;
920
+ desc = interval === 1 ? "\u6BCF\u5468" : "\u6BCF " + interval + " \u5468";
920
921
  break;
921
922
  case "monthly" /* MONTHLY */:
922
- desc = interval === 1 ? "\u6BCF\u6708" : `\u6BCF ${interval} \u4E2A\u6708`;
923
+ desc = interval === 1 ? "\u6BCF\u6708" : "\u6BCF " + interval + " \u4E2A\u6708";
923
924
  break;
924
925
  case "yearly" /* YEARLY */:
925
- desc = interval === 1 ? "\u6BCF\u5E74" : `\u6BCF ${interval} \u5E74`;
926
+ desc = interval === 1 ? "\u6BCF\u5E74" : "\u6BCF " + interval + " \u5E74";
926
927
  break;
927
928
  }
928
929
  if (count) {
929
- desc += `\uFF0C\u5171 ${count} \u6B21`;
930
+ desc += "\uFF0C\u5171 " + count + " \u6B21";
930
931
  } else if (endDate) {
931
- desc += `\uFF0C\u76F4\u5230 ${endDate.toLocaleDateString("zh-CN")}`;
932
+ desc += "\uFF0C\u76F4\u5230 " + endDate.toLocaleDateString("zh-CN");
932
933
  }
933
934
  return desc;
934
935
  default:
@@ -953,9 +954,9 @@ function useEnhancedEvents() {
953
954
  startDate: toLocalISOString(startDate),
954
955
  endDate: toLocalISOString(endDate)
955
956
  });
956
- const response = await fetch(`/api/calendar/events?${params}`);
957
+ const response = await fetch("/api/calendar/events?" + params);
957
958
  if (!response.ok) {
958
- throw new Error(`\u83B7\u53D6\u4E8B\u4EF6\u5931\u8D25: ${response.status}`);
959
+ throw new Error("\u83B7\u53D6\u4E8B\u4EF6\u5931\u8D25: " + response.status);
959
960
  }
960
961
  const data = await response.json();
961
962
  if (!data.success) {
@@ -969,7 +970,7 @@ function useEnhancedEvents() {
969
970
  updatedAt: new Date(event.updatedAt)
970
971
  }));
971
972
  console.log("\u{1F4E5} \u83B7\u53D6\u5230\u7684\u4E8B\u4EF6\u6570\u636E:", {
972
- requestRange: `${formatDate(startDate)} \u5230 ${formatDate(endDate)}`,
973
+ requestRange: formatDate(startDate) + " \u5230 " + formatDate(endDate),
973
974
  eventCount: eventsWithDates.length,
974
975
  eventIds: eventsWithDates.map((e) => e.id)
975
976
  });
@@ -1020,7 +1021,7 @@ function useEnhancedEvents() {
1020
1021
  body: JSON.stringify(createRequest)
1021
1022
  });
1022
1023
  if (!response.ok) {
1023
- throw new Error(`\u521B\u5EFA\u4E8B\u4EF6\u5931\u8D25: ${response.status}`);
1024
+ throw new Error("\u521B\u5EFA\u4E8B\u4EF6\u5931\u8D25: " + response.status);
1024
1025
  }
1025
1026
  const data = await response.json();
1026
1027
  if (!data.success) {
@@ -1132,7 +1133,7 @@ function useEnhancedEvents() {
1132
1133
  );
1133
1134
  break;
1134
1135
  default:
1135
- throw new Error(`\u4E0D\u652F\u6301\u7684\u4E8B\u4EF6\u7C7B\u578B: ${eventData.type}`);
1136
+ throw new Error("\u4E0D\u652F\u6301\u7684\u4E8B\u4EF6\u7C7B\u578B: " + eventData.type);
1136
1137
  }
1137
1138
  const createdEvents = [];
1138
1139
  for (const generatedEvent of generatedEvents) {
@@ -1162,7 +1163,7 @@ function useEnhancedEvents() {
1162
1163
  body: JSON.stringify(createRequest)
1163
1164
  });
1164
1165
  if (!response.ok) {
1165
- throw new Error(`\u521B\u5EFA\u4E8B\u4EF6\u5B9E\u4F8B\u5931\u8D25: ${response.status}`);
1166
+ throw new Error("\u521B\u5EFA\u4E8B\u4EF6\u5B9E\u4F8B\u5931\u8D25: " + response.status);
1166
1167
  }
1167
1168
  const data = await response.json();
1168
1169
  if (!data.success) {
@@ -1200,7 +1201,7 @@ function useEnhancedEvents() {
1200
1201
  if (eventData.allDay !== void 0) updateRequest.allDay = eventData.allDay;
1201
1202
  if (eventData.location !== void 0) updateRequest.location = eventData.location;
1202
1203
  if (eventData.color !== void 0) updateRequest.color = eventData.color;
1203
- const response = await fetch(`/api/calendar/events/${eventId}`, {
1204
+ const response = await fetch("/api/calendar/events/" + eventId, {
1204
1205
  method: "PUT",
1205
1206
  headers: {
1206
1207
  "Content-Type": "application/json"
@@ -1208,7 +1209,7 @@ function useEnhancedEvents() {
1208
1209
  body: JSON.stringify(updateRequest)
1209
1210
  });
1210
1211
  if (!response.ok) {
1211
- throw new Error(`\u66F4\u65B0\u4E8B\u4EF6\u5931\u8D25: ${response.status}`);
1212
+ throw new Error("\u66F4\u65B0\u4E8B\u4EF6\u5931\u8D25: " + response.status);
1212
1213
  }
1213
1214
  const data = await response.json();
1214
1215
  if (!data.success) {
@@ -1238,12 +1239,12 @@ function useEnhancedEvents() {
1238
1239
  setLoading(true);
1239
1240
  setError(void 0);
1240
1241
  try {
1241
- const url = deleteAll ? `/api/calendar/events/${eventId}?deleteAll=true` : `/api/calendar/events/${eventId}`;
1242
+ const url = deleteAll ? "/api/calendar/events/" + eventId + "?deleteAll=true" : "/api/calendar/events/" + eventId;
1242
1243
  const response = await fetch(url, {
1243
1244
  method: "DELETE"
1244
1245
  });
1245
1246
  if (!response.ok) {
1246
- throw new Error(`\u5220\u9664\u4E8B\u4EF6\u5931\u8D25: ${response.status}`);
1247
+ throw new Error("\u5220\u9664\u4E8B\u4EF6\u5931\u8D25: " + response.status);
1247
1248
  }
1248
1249
  const data = await response.json();
1249
1250
  if (!data.success) {
@@ -1271,7 +1272,7 @@ function useEnhancedEvents() {
1271
1272
  body: JSON.stringify({ eventIds })
1272
1273
  });
1273
1274
  if (!response.ok) {
1274
- throw new Error(`\u6279\u91CF\u5220\u9664\u4E8B\u4EF6\u5931\u8D25: ${response.status}`);
1275
+ throw new Error("\u6279\u91CF\u5220\u9664\u4E8B\u4EF6\u5931\u8D25: " + response.status);
1275
1276
  }
1276
1277
  const data = await response.json();
1277
1278
  if (!data.success) {
@@ -1303,7 +1304,7 @@ function useEnhancedEvents() {
1303
1304
  endTime: toLocalISOString(newEndTime)
1304
1305
  };
1305
1306
  console.log("\u{1F4E4} \u53D1\u9001API\u8BF7\u6C42:", updateRequest);
1306
- const response = await fetch(`/api/calendar/events/${eventId}`, {
1307
+ const response = await fetch("/api/calendar/events/" + eventId, {
1307
1308
  method: "PUT",
1308
1309
  headers: {
1309
1310
  "Content-Type": "application/json"
@@ -1311,7 +1312,7 @@ function useEnhancedEvents() {
1311
1312
  body: JSON.stringify(updateRequest)
1312
1313
  });
1313
1314
  if (!response.ok) {
1314
- throw new Error(`\u66F4\u65B0\u4E8B\u4EF6\u65F6\u95F4\u5931\u8D25: ${response.status}`);
1315
+ throw new Error("\u66F4\u65B0\u4E8B\u4EF6\u65F6\u95F4\u5931\u8D25: " + response.status);
1315
1316
  }
1316
1317
  const data = await response.json();
1317
1318
  console.log("\u{1F4E5} API\u54CD\u5E94:", data);
@@ -1467,18 +1468,18 @@ var ImprovedEventModal = ({
1467
1468
  const day = String(date.getDate()).padStart(2, "0");
1468
1469
  const hours = String(date.getHours()).padStart(2, "0");
1469
1470
  const minutes = String(date.getMinutes()).padStart(2, "0");
1470
- return `${year}-${month}-${day}T${hours}:${minutes}`;
1471
+ return year + "-" + month + "-" + day + "T" + hours + ":" + minutes;
1471
1472
  };
1472
1473
  const formatDateOnly = (date) => {
1473
1474
  const year = date.getFullYear();
1474
1475
  const month = String(date.getMonth() + 1).padStart(2, "0");
1475
1476
  const day = String(date.getDate()).padStart(2, "0");
1476
- return `${year}-${month}-${day}`;
1477
+ return year + "-" + month + "-" + day;
1477
1478
  };
1478
1479
  const formatTimeOnly = (date) => {
1479
1480
  const hours = String(date.getHours()).padStart(2, "0");
1480
1481
  const minutes = String(date.getMinutes()).padStart(2, "0");
1481
- return `${hours}:${minutes}`;
1482
+ return hours + ":" + minutes;
1482
1483
  };
1483
1484
  const buildEventData = () => {
1484
1485
  switch (eventType) {
@@ -1528,7 +1529,7 @@ var ImprovedEventModal = ({
1528
1529
  }
1529
1530
  };
1530
1531
  default:
1531
- throw new Error(`\u4E0D\u652F\u6301\u7684\u4E8B\u4EF6\u7C7B\u578B: ${eventType}`);
1532
+ throw new Error("\u4E0D\u652F\u6301\u7684\u4E8B\u4EF6\u7C7B\u578B: " + eventType);
1532
1533
  }
1533
1534
  };
1534
1535
  const validateForm = () => {
@@ -1587,29 +1588,29 @@ var ImprovedEventModal = ({
1587
1588
  {
1588
1589
  type: "button",
1589
1590
  onClick: () => setEventType("single" /* SINGLE */),
1590
- 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"}`
1591
+ className: 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")
1591
1592
  },
1592
- /* @__PURE__ */ React2.createElement("div", { className: "text-center" }, /* @__PURE__ */ React2.createElement("div", { className: `text-3xl mb-2 transition-transform duration-300 ${eventType === "single" /* SINGLE */ ? "scale-110" : "group-hover:scale-110"}` }, "\u{1F4C5}"), /* @__PURE__ */ React2.createElement("div", { className: `font-semibold mb-1 ${eventType === "single" /* SINGLE */ ? "text-blue-700" : "text-gray-900"}` }, "\u5355\u6B21\u4E8B\u4EF6"), /* @__PURE__ */ React2.createElement("div", { className: "text-xs text-gray-500" }, "\u4E00\u6B21\u6027\u4E8B\u4EF6")),
1593
+ /* @__PURE__ */ React2.createElement("div", { className: "text-center" }, /* @__PURE__ */ React2.createElement("div", { className: clsx("text-3xl mb-2 transition-transform duration-300", eventType === "single" /* SINGLE */ ? "scale-110" : "group-hover:scale-110") }, "\u{1F4C5}"), /* @__PURE__ */ React2.createElement("div", { className: clsx("font-semibold mb-1", eventType === "single" /* SINGLE */ ? "text-blue-700" : "text-gray-900") }, "\u5355\u6B21\u4E8B\u4EF6"), /* @__PURE__ */ React2.createElement("div", { className: "text-xs text-gray-500" }, "\u4E00\u6B21\u6027\u4E8B\u4EF6")),
1593
1594
  eventType === "single" /* SINGLE */ && /* @__PURE__ */ React2.createElement("div", { className: "absolute top-2 right-2" }, /* @__PURE__ */ React2.createElement("div", { className: "w-6 h-6 bg-blue-500 rounded-full flex items-center justify-center" }, /* @__PURE__ */ React2.createElement("span", { className: "text-white text-sm" }, "\u2713")))
1594
1595
  ), /* @__PURE__ */ React2.createElement(
1595
1596
  "button",
1596
1597
  {
1597
1598
  type: "button",
1598
1599
  onClick: () => setEventType("multi_day" /* MULTI_DAY */),
1599
- 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"}`
1600
+ className: 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")
1600
1601
  },
1601
- /* @__PURE__ */ React2.createElement("div", { className: "text-center" }, /* @__PURE__ */ React2.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.createElement("div", { className: `font-semibold mb-1 ${eventType === "multi_day" /* MULTI_DAY */ ? "text-green-700" : "text-gray-900"}` }, "\u591A\u5929\u4E8B\u4EF6"), /* @__PURE__ */ React2.createElement("div", { className: "text-xs text-gray-500" }, "\u8FDE\u7EED\u591A\u5929")),
1602
+ /* @__PURE__ */ React2.createElement("div", { className: "text-center" }, /* @__PURE__ */ React2.createElement("div", { className: 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.createElement("div", { className: clsx("font-semibold mb-1", eventType === "multi_day" /* MULTI_DAY */ ? "text-green-700" : "text-gray-900") }, "\u591A\u5929\u4E8B\u4EF6"), /* @__PURE__ */ React2.createElement("div", { className: "text-xs text-gray-500" }, "\u8FDE\u7EED\u591A\u5929")),
1602
1603
  eventType === "multi_day" /* MULTI_DAY */ && /* @__PURE__ */ React2.createElement("div", { className: "absolute top-2 right-2" }, /* @__PURE__ */ React2.createElement("div", { className: "w-6 h-6 bg-green-500 rounded-full flex items-center justify-center" }, /* @__PURE__ */ React2.createElement("span", { className: "text-white text-sm" }, "\u2713")))
1603
1604
  ), /* @__PURE__ */ React2.createElement(
1604
1605
  "button",
1605
1606
  {
1606
1607
  type: "button",
1607
1608
  onClick: () => setEventType("recurring" /* RECURRING */),
1608
- 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"}`
1609
+ className: 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")
1609
1610
  },
1610
- /* @__PURE__ */ React2.createElement("div", { className: "text-center" }, /* @__PURE__ */ React2.createElement("div", { className: `text-3xl mb-2 transition-transform duration-300 ${eventType === "recurring" /* RECURRING */ ? "scale-110" : "group-hover:scale-110"}` }, "\u{1F504}"), /* @__PURE__ */ React2.createElement("div", { className: `font-semibold mb-1 ${eventType === "recurring" /* RECURRING */ ? "text-purple-700" : "text-gray-900"}` }, "\u91CD\u590D\u4E8B\u4EF6"), /* @__PURE__ */ React2.createElement("div", { className: "text-xs text-gray-500" }, "\u5468\u671F\u6027\u91CD\u590D")),
1611
+ /* @__PURE__ */ React2.createElement("div", { className: "text-center" }, /* @__PURE__ */ React2.createElement("div", { className: clsx("text-3xl mb-2 transition-transform duration-300", eventType === "recurring" /* RECURRING */ ? "scale-110" : "group-hover:scale-110") }, "\u{1F504}"), /* @__PURE__ */ React2.createElement("div", { className: clsx("font-semibold mb-1", eventType === "recurring" /* RECURRING */ ? "text-purple-700" : "text-gray-900") }, "\u91CD\u590D\u4E8B\u4EF6"), /* @__PURE__ */ React2.createElement("div", { className: "text-xs text-gray-500" }, "\u5468\u671F\u6027\u91CD\u590D")),
1611
1612
  eventType === "recurring" /* RECURRING */ && /* @__PURE__ */ React2.createElement("div", { className: "absolute top-2 right-2" }, /* @__PURE__ */ React2.createElement("div", { className: "w-6 h-6 bg-purple-500 rounded-full flex items-center justify-center" }, /* @__PURE__ */ React2.createElement("span", { className: "text-white text-sm" }, "\u2713")))
1612
- )), /* @__PURE__ */ React2.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.createElement("div", { className: "flex items-start space-x-3" }, /* @__PURE__ */ React2.createElement("div", { className: "flex-shrink-0 mt-0.5" }, /* @__PURE__ */ React2.createElement("span", { className: "text-lg" }, eventType === "single" /* SINGLE */ ? "\u{1F4A1}" : eventType === "multi_day" /* MULTI_DAY */ ? "\u{1F4CB}" : "\u{1F514}")), /* @__PURE__ */ React2.createElement("div", null, eventType === "single" /* SINGLE */ && /* @__PURE__ */ React2.createElement(React2.Fragment, null, /* @__PURE__ */ React2.createElement("h4", { className: "font-medium text-blue-800 mb-1" }, "\u5355\u6B21\u4E8B\u4EF6"), /* @__PURE__ */ React2.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.createElement(React2.Fragment, null, /* @__PURE__ */ React2.createElement("h4", { className: "font-medium text-green-800 mb-1" }, "\u591A\u5929\u4E8B\u4EF6"), /* @__PURE__ */ React2.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.createElement(React2.Fragment, null, /* @__PURE__ */ React2.createElement("h4", { className: "font-medium text-purple-800 mb-1" }, "\u91CD\u590D\u4E8B\u4EF6"), /* @__PURE__ */ React2.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"))))));
1613
+ )), /* @__PURE__ */ React2.createElement("div", { className: 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.createElement("div", { className: "flex items-start space-x-3" }, /* @__PURE__ */ React2.createElement("div", { className: "flex-shrink-0 mt-0.5" }, /* @__PURE__ */ React2.createElement("span", { className: "text-lg" }, eventType === "single" /* SINGLE */ ? "\u{1F4A1}" : eventType === "multi_day" /* MULTI_DAY */ ? "\u{1F4CB}" : "\u{1F514}")), /* @__PURE__ */ React2.createElement("div", null, eventType === "single" /* SINGLE */ && /* @__PURE__ */ React2.createElement(React2.Fragment, null, /* @__PURE__ */ React2.createElement("h4", { className: "font-medium text-blue-800 mb-1" }, "\u5355\u6B21\u4E8B\u4EF6"), /* @__PURE__ */ React2.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.createElement(React2.Fragment, null, /* @__PURE__ */ React2.createElement("h4", { className: "font-medium text-green-800 mb-1" }, "\u591A\u5929\u4E8B\u4EF6"), /* @__PURE__ */ React2.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.createElement(React2.Fragment, null, /* @__PURE__ */ React2.createElement("h4", { className: "font-medium text-purple-800 mb-1" }, "\u91CD\u590D\u4E8B\u4EF6"), /* @__PURE__ */ React2.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"))))));
1613
1614
  const renderBasicForm = () => /* @__PURE__ */ React2.createElement("div", { className: "space-y-6" }, /* @__PURE__ */ React2.createElement("div", { className: "group" }, /* @__PURE__ */ React2.createElement("label", { className: "flex items-center space-x-2 text-sm font-medium text-gray-900 mb-3" }, /* @__PURE__ */ React2.createElement("span", { className: "text-lg" }, "\u{1F4DD}"), /* @__PURE__ */ React2.createElement("span", null, "\u4E8B\u4EF6\u6807\u9898"), /* @__PURE__ */ React2.createElement("span", { className: "text-red-500" }, "*")), /* @__PURE__ */ React2.createElement("div", { className: "relative" }, /* @__PURE__ */ React2.createElement(
1614
1615
  "input",
1615
1616
  {
@@ -1619,7 +1620,7 @@ var ImprovedEventModal = ({
1619
1620
  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",
1620
1621
  placeholder: "\u4E3A\u4F60\u7684\u4E8B\u4EF6\u8D77\u4E2A\u540D\u5B57..."
1621
1622
  }
1622
- ), /* @__PURE__ */ React2.createElement("div", { className: "absolute inset-y-0 right-0 flex items-center pr-3" }, /* @__PURE__ */ React2.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.createElement("div", { className: "flex items-center space-x-2 mt-2" }, /* @__PURE__ */ React2.createElement("span", { className: "text-red-500 text-sm" }, "\u26A0\uFE0F"), /* @__PURE__ */ React2.createElement("p", { className: "text-sm text-red-600" }, errors.title))), /* @__PURE__ */ React2.createElement("div", { className: "group" }, /* @__PURE__ */ React2.createElement("label", { className: "flex items-center space-x-2 text-sm font-medium text-gray-900 mb-3" }, /* @__PURE__ */ React2.createElement("span", { className: "text-lg" }, "\u{1F4C4}"), /* @__PURE__ */ React2.createElement("span", null, "\u4E8B\u4EF6\u63CF\u8FF0")), /* @__PURE__ */ React2.createElement(
1623
+ ), /* @__PURE__ */ React2.createElement("div", { className: "absolute inset-y-0 right-0 flex items-center pr-3" }, /* @__PURE__ */ React2.createElement("div", { className: clsx("w-2 h-2 rounded-full transition-colors duration-200", formData.title.trim() ? "bg-green-400" : "bg-gray-300") }))), errors.title && /* @__PURE__ */ React2.createElement("div", { className: "flex items-center space-x-2 mt-2" }, /* @__PURE__ */ React2.createElement("span", { className: "text-red-500 text-sm" }, "\u26A0\uFE0F"), /* @__PURE__ */ React2.createElement("p", { className: "text-sm text-red-600" }, errors.title))), /* @__PURE__ */ React2.createElement("div", { className: "group" }, /* @__PURE__ */ React2.createElement("label", { className: "flex items-center space-x-2 text-sm font-medium text-gray-900 mb-3" }, /* @__PURE__ */ React2.createElement("span", { className: "text-lg" }, "\u{1F4C4}"), /* @__PURE__ */ React2.createElement("span", null, "\u4E8B\u4EF6\u63CF\u8FF0")), /* @__PURE__ */ React2.createElement(
1623
1624
  "textarea",
1624
1625
  {
1625
1626
  value: formData.description,
@@ -1628,7 +1629,7 @@ var ImprovedEventModal = ({
1628
1629
  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",
1629
1630
  placeholder: "\u63CF\u8FF0\u4E00\u4E0B\u8FD9\u4E2A\u4E8B\u4EF6\u7684\u8BE6\u7EC6\u4FE1\u606F..."
1630
1631
  }
1631
- ), /* @__PURE__ */ React2.createElement("div", { className: "flex justify-between items-center mt-2" }, /* @__PURE__ */ React2.createElement("div", { className: "text-xs text-gray-500" }, formData.description.length > 0 && `\u5DF2\u8F93\u5165 ${formData.description.length} \u4E2A\u5B57\u7B26`))), /* @__PURE__ */ React2.createElement("div", { className: "group" }, /* @__PURE__ */ React2.createElement("label", { className: "flex items-center space-x-2 text-sm font-medium text-gray-900 mb-3" }, /* @__PURE__ */ React2.createElement("span", { className: "text-lg" }, "\u{1F4CD}"), /* @__PURE__ */ React2.createElement("span", null, "\u5730\u70B9")), /* @__PURE__ */ React2.createElement("div", { className: "relative" }, /* @__PURE__ */ React2.createElement(
1632
+ ), /* @__PURE__ */ React2.createElement("div", { className: "flex justify-between items-center mt-2" }, /* @__PURE__ */ React2.createElement("div", { className: "text-xs text-gray-500" }, formData.description.length > 0 && "\u5DF2\u8F93\u5165 " + formData.description.length + " \u4E2A\u5B57\u7B26"))), /* @__PURE__ */ React2.createElement("div", { className: "group" }, /* @__PURE__ */ React2.createElement("label", { className: "flex items-center space-x-2 text-sm font-medium text-gray-900 mb-3" }, /* @__PURE__ */ React2.createElement("span", { className: "text-lg" }, "\u{1F4CD}"), /* @__PURE__ */ React2.createElement("span", null, "\u5730\u70B9")), /* @__PURE__ */ React2.createElement("div", { className: "relative" }, /* @__PURE__ */ React2.createElement(
1632
1633
  "input",
1633
1634
  {
1634
1635
  type: "text",
@@ -1637,7 +1638,7 @@ var ImprovedEventModal = ({
1637
1638
  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",
1638
1639
  placeholder: "\u4E8B\u4EF6\u4E3E\u529E\u5730\u70B9..."
1639
1640
  }
1640
- ), /* @__PURE__ */ React2.createElement("div", { className: "absolute inset-y-0 right-0 flex items-center pr-3" }, /* @__PURE__ */ React2.createElement("div", { className: `w-2 h-2 rounded-full transition-colors duration-200 ${formData.location.trim() ? "bg-green-400" : "bg-gray-300"}` })))), /* @__PURE__ */ React2.createElement("div", { className: "bg-gray-50 rounded-xl p-4" }, /* @__PURE__ */ React2.createElement("label", { className: "flex items-center justify-between cursor-pointer group" }, /* @__PURE__ */ React2.createElement("div", { className: "flex items-center space-x-3" }, /* @__PURE__ */ React2.createElement("span", { className: "text-lg" }, "\u{1F305}"), /* @__PURE__ */ React2.createElement("div", null, /* @__PURE__ */ React2.createElement("div", { className: "text-sm font-medium text-gray-900" }, "\u5168\u5929\u4E8B\u4EF6"), /* @__PURE__ */ React2.createElement("div", { className: "text-xs text-gray-500" }, "\u4E0D\u8BBE\u7F6E\u5177\u4F53\u65F6\u95F4\uFF0C\u6574\u5929\u6709\u6548"))), /* @__PURE__ */ React2.createElement("div", { className: "relative" }, /* @__PURE__ */ React2.createElement(
1641
+ ), /* @__PURE__ */ React2.createElement("div", { className: "absolute inset-y-0 right-0 flex items-center pr-3" }, /* @__PURE__ */ React2.createElement("div", { className: clsx("w-2 h-2 rounded-full transition-colors duration-200", formData.location.trim() ? "bg-green-400" : "bg-gray-300") })))), /* @__PURE__ */ React2.createElement("div", { className: "bg-gray-50 rounded-xl p-4" }, /* @__PURE__ */ React2.createElement("label", { className: "flex items-center justify-between cursor-pointer group" }, /* @__PURE__ */ React2.createElement("div", { className: "flex items-center space-x-3" }, /* @__PURE__ */ React2.createElement("span", { className: "text-lg" }, "\u{1F305}"), /* @__PURE__ */ React2.createElement("div", null, /* @__PURE__ */ React2.createElement("div", { className: "text-sm font-medium text-gray-900" }, "\u5168\u5929\u4E8B\u4EF6"), /* @__PURE__ */ React2.createElement("div", { className: "text-xs text-gray-500" }, "\u4E0D\u8BBE\u7F6E\u5177\u4F53\u65F6\u95F4\uFF0C\u6574\u5929\u6709\u6548"))), /* @__PURE__ */ React2.createElement("div", { className: "relative" }, /* @__PURE__ */ React2.createElement(
1641
1642
  "input",
1642
1643
  {
1643
1644
  type: "checkbox",
@@ -1646,7 +1647,7 @@ var ImprovedEventModal = ({
1646
1647
  onChange: (e) => handleInputChange("allDay", e.target.checked),
1647
1648
  className: "sr-only"
1648
1649
  }
1649
- ), /* @__PURE__ */ React2.createElement("div", { className: `w-12 h-6 rounded-full transition-colors duration-200 ${formData.allDay ? "bg-blue-500" : "bg-gray-300"}` }, /* @__PURE__ */ React2.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.createElement("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-6" }, /* @__PURE__ */ React2.createElement("div", { className: "group" }, /* @__PURE__ */ React2.createElement("label", { className: "flex items-center space-x-2 text-sm font-medium text-gray-900 mb-3" }, /* @__PURE__ */ React2.createElement("span", { className: "text-lg" }, "\u{1F3A8}"), /* @__PURE__ */ React2.createElement("span", null, "\u4E8B\u4EF6\u989C\u8272")), /* @__PURE__ */ React2.createElement("div", { className: "space-y-3" }, /* @__PURE__ */ React2.createElement("div", { className: "flex items-center space-x-3" }, /* @__PURE__ */ React2.createElement(
1650
+ ), /* @__PURE__ */ React2.createElement("div", { className: clsx("w-12 h-6 rounded-full transition-colors duration-200", formData.allDay ? "bg-blue-500" : "bg-gray-300") }, /* @__PURE__ */ React2.createElement("div", { className: 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.createElement("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-6" }, /* @__PURE__ */ React2.createElement("div", { className: "group" }, /* @__PURE__ */ React2.createElement("label", { className: "flex items-center space-x-2 text-sm font-medium text-gray-900 mb-3" }, /* @__PURE__ */ React2.createElement("span", { className: "text-lg" }, "\u{1F3A8}"), /* @__PURE__ */ React2.createElement("span", null, "\u4E8B\u4EF6\u989C\u8272")), /* @__PURE__ */ React2.createElement("div", { className: "space-y-3" }, /* @__PURE__ */ React2.createElement("div", { className: "flex items-center space-x-3" }, /* @__PURE__ */ React2.createElement(
1650
1651
  "div",
1651
1652
  {
1652
1653
  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",
@@ -1667,7 +1668,7 @@ var ImprovedEventModal = ({
1667
1668
  key: color,
1668
1669
  type: "button",
1669
1670
  onClick: () => handleInputChange("color", color),
1670
- 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"}`,
1671
+ className: 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"),
1671
1672
  style: { backgroundColor: color }
1672
1673
  }
1673
1674
  ))))), /* @__PURE__ */ React2.createElement("div", { className: "group" }, /* @__PURE__ */ React2.createElement("label", { className: "flex items-center space-x-2 text-sm font-medium text-gray-900 mb-3" }, /* @__PURE__ */ React2.createElement("span", { className: "text-lg" }, "\u2B50"), /* @__PURE__ */ React2.createElement("span", null, "\u4F18\u5148\u7EA7")), /* @__PURE__ */ React2.createElement("div", { className: "space-y-2" }, [
@@ -1685,7 +1686,7 @@ var ImprovedEventModal = ({
1685
1686
  onChange: (e) => handleInputChange("priority", e.target.value),
1686
1687
  className: "sr-only"
1687
1688
  }
1688
- ), /* @__PURE__ */ React2.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.createElement("span", { className: "text-lg" }, priority.icon), /* @__PURE__ */ React2.createElement("span", { className: "text-sm font-medium" }, priority.label), formData.priority === priority.value && /* @__PURE__ */ React2.createElement("span", { className: "ml-auto text-sm" }, "\u2713"))))))));
1689
+ ), /* @__PURE__ */ React2.createElement("div", { className: 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.createElement("span", { className: "text-lg" }, priority.icon), /* @__PURE__ */ React2.createElement("span", { className: "text-sm font-medium" }, priority.label), formData.priority === priority.value && /* @__PURE__ */ React2.createElement("span", { className: "ml-auto text-sm" }, "\u2713"))))))));
1689
1690
  const renderSingleEventForm = () => /* @__PURE__ */ React2.createElement("div", { className: "space-y-6" }, !formData.allDay && /* @__PURE__ */ React2.createElement("div", { className: "bg-blue-50 rounded-xl p-4 border border-blue-200" }, /* @__PURE__ */ React2.createElement("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-6" }, /* @__PURE__ */ React2.createElement("div", { className: "group" }, /* @__PURE__ */ React2.createElement("label", { className: "flex items-center space-x-2 text-sm font-medium text-blue-900 mb-3" }, /* @__PURE__ */ React2.createElement("span", { className: "text-lg" }, "\u{1F550}"), /* @__PURE__ */ React2.createElement("span", null, "\u5F00\u59CB\u65F6\u95F4"), /* @__PURE__ */ React2.createElement("span", { className: "text-red-500" }, "*")), /* @__PURE__ */ React2.createElement("div", { className: "relative" }, /* @__PURE__ */ React2.createElement(
1690
1691
  "input",
1691
1692
  {
@@ -1932,7 +1933,7 @@ function useEventDrag(events, onEventUpdate) {
1932
1933
  newStartTime.setHours(originalStart.getHours(), originalStart.getMinutes(), originalStart.getSeconds(), originalStart.getMilliseconds());
1933
1934
  const duration = originalEnd.getTime() - originalStart.getTime();
1934
1935
  const newEndTime = new Date(newStartTime.getTime() + duration);
1935
- const previewTime = dragState.draggedEvent.allDay ? "\u5168\u5929" : `${formatTime2(newStartTime)} - ${formatTime2(newEndTime)}`;
1936
+ const previewTime = dragState.draggedEvent.allDay ? "\u5168\u5929" : formatTime2(newStartTime) + " - " + formatTime2(newEndTime);
1936
1937
  console.log("\u23F0 \u8BA1\u7B97\u65B0\u65F6\u95F4:", {
1937
1938
  originalStart: dragState.draggedEvent.startTime,
1938
1939
  originalEnd: dragState.draggedEvent.endTime,
@@ -2080,9 +2081,9 @@ var DraggableEvent = ({
2080
2081
  // 移动端禁用拖拽
2081
2082
  });
2082
2083
  const style = transform ? {
2083
- transform: `translate3d(${transform.x}px, ${transform.y}px, 0)`
2084
+ transform: "translate3d(" + transform.x + "px, " + transform.y + "px, 0)"
2084
2085
  } : void 0;
2085
- event.allDay ? "\u5168\u5929" : `${formatTime(new Date(event.startTime))} - ${formatTime(new Date(event.endTime))}`;
2086
+ event.allDay ? "\u5168\u5929" : formatTime(new Date(event.startTime)) + " - " + formatTime(new Date(event.endTime));
2086
2087
  const getEventColorClasses = (color) => {
2087
2088
  switch (color) {
2088
2089
  case "red":
@@ -2122,14 +2123,7 @@ var DraggableEvent = ({
2122
2123
  {
2123
2124
  ref: setNodeRef,
2124
2125
  style,
2125
- className: `
2126
- group relative rounded border-l-2 px-1 py-0.5 mb-0.5
2127
- ${dragSupported ? "cursor-grab active:cursor-grabbing" : "cursor-pointer"}
2128
- transition-all duration-150 ease-in-out text-xs
2129
- ${getEventColorClasses(event.color)}
2130
- ${isDragActive || isDragging ? "opacity-60 shadow-md z-[40]" : "opacity-100"}
2131
- ${className}
2132
- `,
2126
+ className: 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),
2133
2127
  ...dragSupported ? listeners : {},
2134
2128
  ...dragSupported ? attributes : {},
2135
2129
  onClick
@@ -2167,8 +2161,6 @@ var DraggableEvent = ({
2167
2161
  );
2168
2162
  };
2169
2163
  var DraggableEvent_default = DraggableEvent;
2170
-
2171
- // src/calendar/components/DroppableCalendarCell.tsx
2172
2164
  var DroppableCalendarCell = ({
2173
2165
  date,
2174
2166
  events,
@@ -2181,7 +2173,7 @@ var DroppableCalendarCell = ({
2181
2173
  disableDrop = false
2182
2174
  }) => {
2183
2175
  const dateStr = formatDate(date);
2184
- const dropId = `date-${dateStr}`;
2176
+ const dropId = "date-" + dateStr;
2185
2177
  const {
2186
2178
  isOver,
2187
2179
  setNodeRef
@@ -2232,11 +2224,7 @@ var DroppableCalendarCell = ({
2232
2224
  className: getCellClasses(),
2233
2225
  onClick: () => onDateClick?.(date)
2234
2226
  },
2235
- /* @__PURE__ */ React2.createElement("div", { className: "flex items-center justify-between mb-2" }, /* @__PURE__ */ React2.createElement("span", { className: `
2236
- inline-flex items-center justify-center text-sm font-semibold w-6 h-6
2237
- ${!isCurrentMonth ? "text-gray-400" : date.getDay() === 0 || date.getDay() === 6 ? "text-red-600" : "text-gray-900"}
2238
- ${isToday(date) ? "bg-blue-600 text-white rounded-full shadow-md" : ""}
2239
- ` }, date.getDate()), dayEvents.length > 0 && /* @__PURE__ */ React2.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)),
2227
+ /* @__PURE__ */ React2.createElement("div", { className: "flex items-center justify-between mb-2" }, /* @__PURE__ */ React2.createElement("span", { className: 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.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)),
2240
2228
  /* @__PURE__ */ React2.createElement("div", { className: "space-y-1" }, dayEvents.slice(0, 3).map((event) => /* @__PURE__ */ React2.createElement(
2241
2229
  DraggableEvent_default,
2242
2230
  {
@@ -2302,7 +2290,7 @@ var DraggableMonthView = ({
2302
2290
  "th",
2303
2291
  {
2304
2292
  key: day,
2305
- 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"}`
2293
+ className: 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")
2306
2294
  },
2307
2295
  day
2308
2296
  )))), /* @__PURE__ */ React2.createElement("tbody", null, Array.from({ length: 6 }, (_, weekIndex) => /* @__PURE__ */ React2.createElement("tr", { key: weekIndex }, Array.from({ length: 7 }, (_2, dayIndex) => {
@@ -2316,7 +2304,7 @@ var DraggableMonthView = ({
2316
2304
  "td",
2317
2305
  {
2318
2306
  key: dayIndex,
2319
- 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`
2307
+ className: 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")
2320
2308
  },
2321
2309
  /* @__PURE__ */ React2.createElement(
2322
2310
  DroppableCalendarCell_default,
@@ -2334,7 +2322,7 @@ var DraggableMonthView = ({
2334
2322
  )
2335
2323
  );
2336
2324
  }))))));
2337
- return /* @__PURE__ */ React2.createElement("div", { className: `bg-white rounded-lg shadow-sm ${className}` }, /* @__PURE__ */ React2.createElement("div", { className: "flex items-center justify-between p-4 border-b" }, /* @__PURE__ */ React2.createElement("div", { className: "flex items-center space-x-4" }, /* @__PURE__ */ React2.createElement("h2", { className: "text-lg sm:text-xl font-semibold text-gray-900" }, currentDate.getFullYear(), "\u5E74", getMonthName(currentDate)), /* @__PURE__ */ React2.createElement(
2325
+ return /* @__PURE__ */ React2.createElement("div", { className: clsx("bg-white rounded-lg shadow-sm", className) }, /* @__PURE__ */ React2.createElement("div", { className: "flex items-center justify-between p-4 border-b" }, /* @__PURE__ */ React2.createElement("div", { className: "flex items-center space-x-4" }, /* @__PURE__ */ React2.createElement("h2", { className: "text-lg sm:text-xl font-semibold text-gray-900" }, currentDate.getFullYear(), "\u5E74", getMonthName(currentDate)), /* @__PURE__ */ React2.createElement(
2338
2326
  "button",
2339
2327
  {
2340
2328
  onClick: goToToday,
@@ -2543,7 +2531,7 @@ function CalendarSettings({ onSettingsChange }) {
2543
2531
  {
2544
2532
  key,
2545
2533
  onClick: () => setActiveTab(key),
2546
- 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"}`
2534
+ className: 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")
2547
2535
  },
2548
2536
  /* @__PURE__ */ React2.createElement("span", { className: "mr-2" }, icon),
2549
2537
  label
@@ -2552,7 +2540,7 @@ function CalendarSettings({ onSettingsChange }) {
2552
2540
  {
2553
2541
  key,
2554
2542
  onClick: () => updateSettings({ theme: key }),
2555
- 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"}`
2543
+ className: 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")
2556
2544
  },
2557
2545
  /* @__PURE__ */ React2.createElement("div", { className: "flex items-center justify-between mb-3" }, /* @__PURE__ */ React2.createElement("h4", { className: "font-medium text-gray-900" }, theme.name), settings.theme === key && /* @__PURE__ */ React2.createElement("svg", { className: "w-5 h-5 text-blue-500", fill: "currentColor", viewBox: "0 0 20 20" }, /* @__PURE__ */ React2.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" }))),
2558
2546
  /* @__PURE__ */ React2.createElement("div", { className: "flex space-x-1 mb-3" }, Object.values(theme.colors).slice(0, 6).map((color, index) => /* @__PURE__ */ React2.createElement(
@@ -2589,7 +2577,7 @@ function CalendarSettings({ onSettingsChange }) {
2589
2577
  style: {
2590
2578
  backgroundColor: index === 3 ? theme.background.today : theme.background.cell,
2591
2579
  color: index === 3 ? theme.text.today : theme.text.primary,
2592
- border: `1px solid ${index === 3 ? theme.border.today : theme.border.cell}`
2580
+ border: "1px solid " + (index === 3 ? theme.border.today : theme.border.cell)
2593
2581
  }
2594
2582
  },
2595
2583
  index + 1
@@ -2791,7 +2779,7 @@ function CalendarPage({
2791
2779
  const viewEnd = viewDates[viewDates.length - 1];
2792
2780
  if (viewStart && viewEnd) {
2793
2781
  console.log("\u{1F4C5} \u52A0\u8F7D\u6708\u89C6\u56FE\u4E8B\u4EF6\u8303\u56F4:", {
2794
- currentMonth: `${currentDate.getFullYear()}-${currentDate.getMonth() + 1}`,
2782
+ currentMonth: currentDate.getFullYear() + "-" + (currentDate.getMonth() + 1),
2795
2783
  viewStart: formatDate(viewStart),
2796
2784
  viewEnd: formatDate(viewEnd),
2797
2785
  totalDays: viewDates.length
@@ -2851,9 +2839,9 @@ function CalendarPage({
2851
2839
  return getMonthName2(currentDate);
2852
2840
  }
2853
2841
  if (weekStart.getMonth() === weekEnd.getMonth()) {
2854
- return `${weekStart.getFullYear()}\u5E74${weekStart.getMonth() + 1}\u6708 \u7B2C${Math.ceil(weekStart.getDate() / 7)}\u5468`;
2842
+ return weekStart.getFullYear() + "\u5E74" + (weekStart.getMonth() + 1) + "\u6708 \u7B2C" + Math.ceil(weekStart.getDate() / 7) + "\u5468";
2855
2843
  } else {
2856
- return `${weekStart.getMonth() + 1}\u6708${weekStart.getDate()}\u65E5 - ${weekEnd.getMonth() + 1}\u6708${weekEnd.getDate()}\u65E5`;
2844
+ return weekStart.getMonth() + 1 + "\u6708" + weekStart.getDate() + "\u65E5 - " + (weekEnd.getMonth() + 1) + "\u6708" + weekEnd.getDate() + "\u65E5";
2857
2845
  }
2858
2846
  case "day" /* DAY */:
2859
2847
  return currentDate.toLocaleDateString("zh-CN", {
@@ -3017,9 +3005,9 @@ function CalendarPage({
3017
3005
  "th",
3018
3006
  {
3019
3007
  key: index,
3020
- className: `p-3 text-center border-b border-gray-200 ${index < 6 ? "border-r border-gray-200" : ""}`
3008
+ className: clsx("p-3 text-center border-b border-gray-200", index < 6 ? "border-r border-gray-200" : "")
3021
3009
  },
3022
- /* @__PURE__ */ React2.createElement("div", { className: `text-sm font-medium ${isWeekend2 ? "text-red-600" : "text-gray-700"}` }, getWeekdayName(date, "zh-CN", "short"))
3010
+ /* @__PURE__ */ React2.createElement("div", { className: clsx("text-sm font-medium", isWeekend2 ? "text-red-600" : "text-gray-700") }, getWeekdayName(date, "zh-CN", "short"))
3023
3011
  );
3024
3012
  }))), /* @__PURE__ */ React2.createElement("tbody", null, /* @__PURE__ */ React2.createElement("tr", null, weekDates.map((date, index) => {
3025
3013
  const dayEvents = getEventsForDate(date);
@@ -3030,24 +3018,14 @@ function CalendarPage({
3030
3018
  {
3031
3019
  key: index,
3032
3020
  onClick: () => handleDateClick(date),
3033
- className: `
3034
- h-56 border-b border-gray-200 relative cursor-pointer
3035
- ${index < 6 ? "border-r border-gray-200" : ""}
3036
- hover:bg-gray-50 transition-colors
3037
- ${isTodayDate ? "bg-blue-50" : "bg-white"}
3038
- `
3021
+ className: 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")
3039
3022
  },
3040
- /* @__PURE__ */ React2.createElement("div", { className: "flex flex-col h-full p-3" }, /* @__PURE__ */ React2.createElement("div", { className: "flex flex-col items-center mb-3" }, /* @__PURE__ */ React2.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.createElement("div", { className: "text-xs text-gray-500 mt-1 font-medium" }, date.getMonth() + 1, "\u6708")), /* @__PURE__ */ React2.createElement("div", { className: "flex-1 flex flex-col" }, dayEvents.length > 0 ? /* @__PURE__ */ React2.createElement(React2.Fragment, null, /* @__PURE__ */ React2.createElement("div", { className: "text-center mb-2" }, /* @__PURE__ */ React2.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.createElement("div", { className: "space-y-1 overflow-hidden" }, dayEvents.slice(0, 4).map((event, eventIndex) => /* @__PURE__ */ React2.createElement(
3023
+ /* @__PURE__ */ React2.createElement("div", { className: "flex flex-col h-full p-3" }, /* @__PURE__ */ React2.createElement("div", { className: "flex flex-col items-center mb-3" }, /* @__PURE__ */ React2.createElement("div", { className: 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.createElement("div", { className: "text-xs text-gray-500 mt-1 font-medium" }, date.getMonth() + 1, "\u6708")), /* @__PURE__ */ React2.createElement("div", { className: "flex-1 flex flex-col" }, dayEvents.length > 0 ? /* @__PURE__ */ React2.createElement(React2.Fragment, null, /* @__PURE__ */ React2.createElement("div", { className: "text-center mb-2" }, /* @__PURE__ */ React2.createElement("span", { className: 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.createElement("div", { className: "space-y-1 overflow-hidden" }, dayEvents.slice(0, 4).map((event, eventIndex) => /* @__PURE__ */ React2.createElement(
3041
3024
  "div",
3042
3025
  {
3043
3026
  key: eventIndex,
3044
3027
  onClick: (e) => event.isRealEvent && event.id ? handleEventClick(events.find((e2) => e2.id === event.id), e) : void 0,
3045
- className: `
3046
- text-xs px-2 py-1 rounded font-medium truncate text-center
3047
- ${event.isRealEvent ? "cursor-pointer hover:opacity-80 hover:shadow-sm" : "cursor-default"}
3048
- transition-all duration-200
3049
- ${getEventColorClass(event.color)}
3050
- `,
3028
+ className: 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)),
3051
3029
  title: event.title
3052
3030
  },
3053
3031
  event.title
@@ -3058,7 +3036,7 @@ function CalendarPage({
3058
3036
  const renderDayView = () => {
3059
3037
  const dayEvents = getEventsForDate(currentDate);
3060
3038
  const isTodayDate = isToday(currentDate);
3061
- return /* @__PURE__ */ React2.createElement("div", { className: "bg-white rounded-lg shadow-sm border border-gray-200 overflow-hidden mb-6" }, /* @__PURE__ */ React2.createElement("div", { className: "bg-gray-50 p-4 border-b border-gray-200" }, /* @__PURE__ */ React2.createElement("div", { className: "text-center" }, /* @__PURE__ */ React2.createElement("div", { className: "text-sm text-gray-600 mb-1" }, currentDate.toLocaleDateString("zh-CN", { weekday: "long" })), /* @__PURE__ */ React2.createElement("div", { className: `text-2xl font-bold ${isTodayDate ? "text-blue-600" : "text-gray-900"}` }, currentDate.getDate(), "\u65E5"), /* @__PURE__ */ React2.createElement("div", { className: "text-sm text-gray-600" }, currentDate.toLocaleDateString("zh-CN", { year: "numeric", month: "long" })))), /* @__PURE__ */ React2.createElement("div", { className: "p-4" }, /* @__PURE__ */ React2.createElement(
3039
+ return /* @__PURE__ */ React2.createElement("div", { className: "bg-white rounded-lg shadow-sm border border-gray-200 overflow-hidden mb-6" }, /* @__PURE__ */ React2.createElement("div", { className: "bg-gray-50 p-4 border-b border-gray-200" }, /* @__PURE__ */ React2.createElement("div", { className: "text-center" }, /* @__PURE__ */ React2.createElement("div", { className: "text-sm text-gray-600 mb-1" }, currentDate.toLocaleDateString("zh-CN", { weekday: "long" })), /* @__PURE__ */ React2.createElement("div", { className: clsx("text-2xl font-bold", isTodayDate ? "text-blue-600" : "text-gray-900") }, currentDate.getDate(), "\u65E5"), /* @__PURE__ */ React2.createElement("div", { className: "text-sm text-gray-600" }, currentDate.toLocaleDateString("zh-CN", { year: "numeric", month: "long" })))), /* @__PURE__ */ React2.createElement("div", { className: "p-4" }, /* @__PURE__ */ React2.createElement(
3062
3040
  "button",
3063
3041
  {
3064
3042
  onClick: () => handleDateClick(currentDate),
@@ -3070,12 +3048,7 @@ function CalendarPage({
3070
3048
  {
3071
3049
  key: eventIndex,
3072
3050
  onClick: (e) => event.isRealEvent && event.id ? handleEventClick(events.find((e2) => e2.id === event.id), e) : void 0,
3073
- className: `
3074
- p-3 rounded-lg border-l-4 bg-gray-50
3075
- ${event.isRealEvent ? "cursor-pointer hover:shadow-md" : "cursor-default"}
3076
- transition-shadow
3077
- ${getEventColorClass(event.color)}
3078
- `
3051
+ className: 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))
3079
3052
  },
3080
3053
  /* @__PURE__ */ React2.createElement("div", { className: "font-medium text-sm mb-1" }, event.title),
3081
3054
  event.isRealEvent && event.id && /* @__PURE__ */ React2.createElement("div", { className: "text-xs text-gray-600" }, "\u70B9\u51FB\u7F16\u8F91\u4E8B\u4EF6")
@@ -3088,7 +3061,7 @@ function CalendarPage({
3088
3061
  setSelectedDate(null);
3089
3062
  const eventCount = createdEvents.length;
3090
3063
  if (eventCount > 1) {
3091
- alert(`\u6210\u529F\u521B\u5EFA ${eventCount} \u4E2A\u4E8B\u4EF6\uFF01`);
3064
+ alert("\u6210\u529F\u521B\u5EFA " + eventCount + " \u4E2A\u4E8B\u4EF6\uFF01");
3092
3065
  } else {
3093
3066
  alert("\u4E8B\u4EF6\u521B\u5EFA\u6210\u529F\uFF01");
3094
3067
  }
@@ -3108,21 +3081,21 @@ function CalendarPage({
3108
3081
  "button",
3109
3082
  {
3110
3083
  onClick: () => setActiveTab("calendar"),
3111
- 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"}`
3084
+ className: 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")
3112
3085
  },
3113
3086
  "\u{1F4C5} \u65E5\u5386\u89C6\u56FE"
3114
3087
  ), /* @__PURE__ */ React2.createElement(
3115
3088
  "button",
3116
3089
  {
3117
3090
  onClick: () => setActiveTab("events"),
3118
- 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"}`
3091
+ className: 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")
3119
3092
  },
3120
3093
  "\u{1F4CB} \u4E8B\u4EF6\u5217\u8868"
3121
3094
  ), /* @__PURE__ */ React2.createElement(
3122
3095
  "button",
3123
3096
  {
3124
3097
  onClick: () => setActiveTab("settings"),
3125
- 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"}`
3098
+ className: 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")
3126
3099
  },
3127
3100
  "\u2699\uFE0F \u8BBE\u7F6E"
3128
3101
  ))), error && /* @__PURE__ */ React2.createElement("div", { className: "bg-red-50 border border-red-200 rounded-lg p-4 mb-6" }, /* @__PURE__ */ React2.createElement("div", { className: "flex items-start" }, /* @__PURE__ */ React2.createElement("div", { className: "flex-shrink-0" }, /* @__PURE__ */ React2.createElement("svg", { className: "h-5 w-5 text-red-400 mt-0.5", viewBox: "0 0 20 20", fill: "currentColor" }, /* @__PURE__ */ React2.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.createElement("div", { className: "ml-3" }, /* @__PURE__ */ React2.createElement("h3", { className: "text-sm font-medium text-red-800" }, "\u64CD\u4F5C\u5931\u8D25"), /* @__PURE__ */ React2.createElement("p", { className: "mt-1 text-sm text-red-700" }, error), /* @__PURE__ */ React2.createElement(
@@ -3137,7 +3110,7 @@ function CalendarPage({
3137
3110
  {
3138
3111
  key: view,
3139
3112
  onClick: () => setViewType(CalendarViewType[view.toUpperCase()]),
3140
- 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"}`
3113
+ className: 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")
3141
3114
  },
3142
3115
  view === "month" ? "\u6708" : view === "week" ? "\u5468" : "\u65E5"
3143
3116
  )))))), renderCalendarView(), /* @__PURE__ */ React2.createElement("div", { className: "grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6 mb-6" }, /* @__PURE__ */ React2.createElement("div", { className: "bg-white rounded-lg shadow-sm border border-gray-200 p-6" }, /* @__PURE__ */ React2.createElement("div", { className: "flex items-center mb-4" }, /* @__PURE__ */ React2.createElement("div", { className: "bg-blue-100 p-3 rounded-lg" }, /* @__PURE__ */ React2.createElement("svg", { className: "w-6 h-6 text-blue-600", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24" }, /* @__PURE__ */ React2.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.createElement("h3", { className: "ml-3 text-lg font-semibold text-gray-900" }, "\u4E8B\u4EF6\u7BA1\u7406")), /* @__PURE__ */ React2.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.createElement("div", { className: "bg-white rounded-lg shadow-sm border border-gray-200 p-6" }, /* @__PURE__ */ React2.createElement("div", { className: "flex items-center mb-4" }, /* @__PURE__ */ React2.createElement("div", { className: "bg-green-100 p-3 rounded-lg" }, /* @__PURE__ */ React2.createElement("svg", { className: "w-6 h-6 text-green-600", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24" }, /* @__PURE__ */ React2.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.createElement("h3", { className: "ml-3 text-lg font-semibold text-gray-900" }, "\u91CD\u590D\u4E8B\u4EF6")), /* @__PURE__ */ React2.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.createElement("div", { className: "bg-white rounded-lg shadow-sm border border-gray-200 p-6" }, /* @__PURE__ */ React2.createElement("div", { className: "flex items-center mb-4" }, /* @__PURE__ */ React2.createElement("div", { className: "bg-purple-100 p-3 rounded-lg" }, /* @__PURE__ */ React2.createElement("svg", { className: "w-6 h-6 text-purple-600", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24" }, /* @__PURE__ */ React2.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.createElement("h3", { className: "ml-3 text-lg font-semibold text-gray-900" }, "\u667A\u80FD\u63D0\u9192")), /* @__PURE__ */ React2.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.createElement("div", { className: "bg-white rounded-lg shadow-sm border border-gray-200 p-6" }, /* @__PURE__ */ React2.createElement("h3", { className: "text-lg font-semibold text-gray-900 mb-4" }, "\u6280\u672F\u7279\u6027"), /* @__PURE__ */ React2.createElement("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-4" }, /* @__PURE__ */ React2.createElement("div", { className: "flex items-center text-sm text-gray-600" }, /* @__PURE__ */ React2.createElement("svg", { className: "w-4 h-4 text-green-500 mr-3 flex-shrink-0", fill: "currentColor", viewBox: "0 0 20 20" }, /* @__PURE__ */ React2.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.createElement("div", { className: "flex items-center text-sm text-gray-600" }, /* @__PURE__ */ React2.createElement("svg", { className: "w-4 h-4 text-green-500 mr-3 flex-shrink-0", fill: "currentColor", viewBox: "0 0 20 20" }, /* @__PURE__ */ React2.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.createElement(
@@ -3250,7 +3223,7 @@ var EventModal = ({
3250
3223
  const day = String(date.getDate()).padStart(2, "0");
3251
3224
  const hours = String(date.getHours()).padStart(2, "0");
3252
3225
  const minutes = String(date.getMinutes()).padStart(2, "0");
3253
- return `${year}-${month}-${day}T${hours}:${minutes}`;
3226
+ return year + "-" + month + "-" + day + "T" + hours + ":" + minutes;
3254
3227
  };
3255
3228
  const validateForm = () => {
3256
3229
  const newErrors = {};
@@ -3365,7 +3338,7 @@ var EventModal = ({
3365
3338
  id: "title",
3366
3339
  value: formData.title,
3367
3340
  onChange: (e) => handleInputChange("title", e.target.value),
3368
- 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"}`,
3341
+ className: 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"),
3369
3342
  placeholder: "\u8F93\u5165\u4E8B\u4EF6\u6807\u9898"
3370
3343
  }
3371
3344
  ), errors.title && /* @__PURE__ */ React2.createElement("p", { className: "text-red-500 text-sm mt-1" }, errors.title)), /* @__PURE__ */ React2.createElement("div", { className: "flex items-center" }, /* @__PURE__ */ React2.createElement(
@@ -3384,10 +3357,10 @@ var EventModal = ({
3384
3357
  id: "startTime",
3385
3358
  value: formData.isAllDay ? formData.startTime.split("T")[0] : formData.startTime,
3386
3359
  onChange: (e) => {
3387
- const value = formData.isAllDay ? `${e.target.value}T00:00` : e.target.value;
3360
+ const value = formData.isAllDay ? e.target.value + "T00:00" : e.target.value;
3388
3361
  handleInputChange("startTime", value);
3389
3362
  },
3390
- 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"}`
3363
+ className: 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")
3391
3364
  }
3392
3365
  ), errors.startTime && /* @__PURE__ */ React2.createElement("p", { className: "text-red-500 text-sm mt-1" }, errors.startTime)), /* @__PURE__ */ React2.createElement("div", null, /* @__PURE__ */ React2.createElement("label", { htmlFor: "endTime", className: "block text-sm font-medium text-gray-700 mb-1" }, "\u7ED3\u675F\u65F6\u95F4 *"), /* @__PURE__ */ React2.createElement(
3393
3366
  "input",
@@ -3396,10 +3369,10 @@ var EventModal = ({
3396
3369
  id: "endTime",
3397
3370
  value: formData.isAllDay ? formData.endTime.split("T")[0] : formData.endTime,
3398
3371
  onChange: (e) => {
3399
- const value = formData.isAllDay ? `${e.target.value}T23:59` : e.target.value;
3372
+ const value = formData.isAllDay ? e.target.value + "T23:59" : e.target.value;
3400
3373
  handleInputChange("endTime", value);
3401
3374
  },
3402
- 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"}`
3375
+ className: 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")
3403
3376
  }
3404
3377
  ), errors.endTime && /* @__PURE__ */ React2.createElement("p", { className: "text-red-500 text-sm mt-1" }, errors.endTime))), /* @__PURE__ */ React2.createElement("div", null, /* @__PURE__ */ React2.createElement("label", { htmlFor: "location", className: "block text-sm font-medium text-gray-700 mb-1" }, "\u4F4D\u7F6E"), /* @__PURE__ */ React2.createElement(
3405
3378
  "input",
@@ -3640,7 +3613,7 @@ var EventModal = ({
3640
3613
  onClose: () => setShowDeleteConfirm(false),
3641
3614
  onConfirm: handleDelete,
3642
3615
  title: "\u786E\u8BA4\u5220\u9664",
3643
- message: `\u786E\u5B9A\u8981\u5220\u9664\u4E8B\u4EF6"${formData.title}"\u5417\uFF1F\u6B64\u64CD\u4F5C\u65E0\u6CD5\u64A4\u9500\u3002`,
3616
+ message: '\u786E\u5B9A\u8981\u5220\u9664\u4E8B\u4EF6"' + formData.title + '"\u5417\uFF1F\u6B64\u64CD\u4F5C\u65E0\u6CD5\u64A4\u9500\u3002',
3644
3617
  confirmText: "\u5220\u9664",
3645
3618
  cancelText: "\u53D6\u6D88",
3646
3619
  isLoading
@@ -3649,8 +3622,6 @@ var EventModal = ({
3649
3622
  );
3650
3623
  };
3651
3624
  var EventModal_default = EventModal;
3652
-
3653
- // src/calendar/pages/EventDetailPage.tsx
3654
3625
  var EventDetailPage = ({
3655
3626
  eventId,
3656
3627
  onBack,
@@ -3762,7 +3733,7 @@ var EventDetailPage = ({
3762
3733
  )))), /* @__PURE__ */ React2.createElement("div", { className: "bg-white rounded-lg shadow-md overflow-hidden" }, /* @__PURE__ */ React2.createElement("div", { className: "px-6 py-4 border-b border-gray-200" }, /* @__PURE__ */ React2.createElement("div", { className: "flex items-center justify-between" }, /* @__PURE__ */ React2.createElement("h2", { className: "text-2xl font-semibold text-gray-900" }, event.title), /* @__PURE__ */ React2.createElement("div", { className: "flex items-center space-x-2" }, /* @__PURE__ */ React2.createElement(
3763
3734
  "span",
3764
3735
  {
3765
- className: `px-2 py-1 text-xs font-medium rounded-full ${getPriorityColor(event.priority || "normal")}`
3736
+ className: clsx("px-2 py-1 text-xs font-medium rounded-full", getPriorityColor(event.priority || "normal"))
3766
3737
  },
3767
3738
  getPriorityText(event.priority || "normal")
3768
3739
  ), /* @__PURE__ */ React2.createElement(
@@ -3786,7 +3757,7 @@ var EventDetailPage = ({
3786
3757
  onClose: () => setShowDeleteConfirm(false),
3787
3758
  onConfirm: handleDelete,
3788
3759
  title: "\u786E\u8BA4\u5220\u9664",
3789
- message: `\u60A8\u786E\u5B9A\u8981\u5220\u9664\u4E8B\u4EF6"${event.title}"\u5417\uFF1F\u6B64\u64CD\u4F5C\u65E0\u6CD5\u64A4\u9500\u3002`,
3760
+ message: '\u60A8\u786E\u5B9A\u8981\u5220\u9664\u4E8B\u4EF6"' + event.title + '"\u5417\uFF1F\u6B64\u64CD\u4F5C\u65E0\u6CD5\u64A4\u9500\u3002',
3790
3761
  confirmText: "\u5220\u9664",
3791
3762
  cancelText: "\u53D6\u6D88",
3792
3763
  isLoading: isDeleting
@@ -3861,7 +3832,7 @@ function EventForm({
3861
3832
  const day = String(date.getDate()).padStart(2, "0");
3862
3833
  const hours = String(date.getHours()).padStart(2, "0");
3863
3834
  const minutes = String(date.getMinutes()).padStart(2, "0");
3864
- return `${year}-${month}-${day}T${hours}:${minutes}`;
3835
+ return year + "-" + month + "-" + day + "T" + hours + ":" + minutes;
3865
3836
  };
3866
3837
  const parseDateTimeLocal = (value) => {
3867
3838
  return new Date(value);
@@ -3890,7 +3861,7 @@ function EventForm({
3890
3861
  id: "title",
3891
3862
  value: formData.title,
3892
3863
  onChange: (e) => handleInputChange("title", e.target.value),
3893
- 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"}`,
3864
+ className: 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"),
3894
3865
  placeholder: "\u8BF7\u8F93\u5165\u4E8B\u4EF6\u6807\u9898"
3895
3866
  }
3896
3867
  ), errors.title && /* @__PURE__ */ React2.createElement("p", { className: "mt-1 text-sm text-red-600" }, errors.title)), /* @__PURE__ */ React2.createElement("div", null, /* @__PURE__ */ React2.createElement("label", { htmlFor: "description", className: "block text-sm font-medium text-gray-700 mb-1" }, "\u4E8B\u4EF6\u63CF\u8FF0"), /* @__PURE__ */ React2.createElement(
@@ -3944,7 +3915,7 @@ function EventForm({
3944
3915
  const newDate = formData.allDay ? /* @__PURE__ */ new Date(e.target.value + "T23:59:59") : parseDateTimeLocal(e.target.value);
3945
3916
  handleInputChange("endTime", newDate);
3946
3917
  },
3947
- 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"}`
3918
+ className: 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")
3948
3919
  }
3949
3920
  ), errors.endTime && /* @__PURE__ */ React2.createElement("p", { className: "mt-1 text-sm text-red-600" }, errors.endTime))), /* @__PURE__ */ React2.createElement("div", { className: "space-y-4" }, /* @__PURE__ */ React2.createElement("h3", { className: "text-lg font-medium text-gray-900" }, "\u5916\u89C2"), /* @__PURE__ */ React2.createElement("div", null, /* @__PURE__ */ React2.createElement("label", { className: "block text-sm font-medium text-gray-700 mb-2" }, "\u4E8B\u4EF6\u989C\u8272"), /* @__PURE__ */ React2.createElement("div", { className: "flex flex-wrap gap-3" }, colorOptions.map((option) => /* @__PURE__ */ React2.createElement(
3950
3921
  "button",
@@ -3952,12 +3923,9 @@ function EventForm({
3952
3923
  key: option.value,
3953
3924
  type: "button",
3954
3925
  onClick: () => handleInputChange("color", option.value),
3955
- className: `
3956
- flex items-center px-3 py-2 rounded-lg border-2 transition-all
3957
- ${formData.color === option.value ? "border-blue-500 ring-2 ring-blue-200" : "border-gray-200 hover:border-gray-300"}
3958
- `
3926
+ className: 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")
3959
3927
  },
3960
- /* @__PURE__ */ React2.createElement("div", { className: `w-4 h-4 rounded-full ${option.class} mr-2` }),
3928
+ /* @__PURE__ */ React2.createElement("div", { className: clsx("w-4 h-4 rounded-full", option.class, "mr-2") }),
3961
3929
  /* @__PURE__ */ React2.createElement("span", { className: "text-sm text-gray-700" }, option.label)
3962
3930
  ))))), /* @__PURE__ */ React2.createElement("div", { className: "flex items-center justify-end gap-3 pt-6 border-t border-gray-200" }, /* @__PURE__ */ React2.createElement(
3963
3931
  "button",
@@ -4067,7 +4035,7 @@ var EventSearch = ({
4067
4035
  };
4068
4036
  return priorityMap[priority];
4069
4037
  };
4070
- return /* @__PURE__ */ React2.createElement("div", { className: `bg-white rounded-lg border border-gray-200 ${className}` }, /* @__PURE__ */ React2.createElement("div", { className: "p-4 border-b border-gray-200" }, /* @__PURE__ */ React2.createElement("div", { className: "flex items-center space-x-3" }, /* @__PURE__ */ React2.createElement("div", { className: "flex-1" }, /* @__PURE__ */ React2.createElement("div", { className: "relative" }, /* @__PURE__ */ React2.createElement(
4038
+ return /* @__PURE__ */ React2.createElement("div", { className: clsx("bg-white rounded-lg border border-gray-200", className) }, /* @__PURE__ */ React2.createElement("div", { className: "p-4 border-b border-gray-200" }, /* @__PURE__ */ React2.createElement("div", { className: "flex items-center space-x-3" }, /* @__PURE__ */ React2.createElement("div", { className: "flex-1" }, /* @__PURE__ */ React2.createElement("div", { className: "relative" }, /* @__PURE__ */ React2.createElement(
4071
4039
  "input",
4072
4040
  {
4073
4041
  type: "text",
@@ -4081,12 +4049,12 @@ var EventSearch = ({
4081
4049
  {
4082
4050
  type: "button",
4083
4051
  onClick: () => setIsExpanded(!isExpanded),
4084
- 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"}`
4052
+ className: 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")
4085
4053
  },
4086
4054
  /* @__PURE__ */ React2.createElement("div", { className: "flex items-center space-x-2" }, /* @__PURE__ */ React2.createElement(
4087
4055
  "svg",
4088
4056
  {
4089
- className: `h-4 w-4 transition-transform ${isExpanded ? "rotate-180" : ""}`,
4057
+ className: clsx("h-4 w-4 transition-transform", isExpanded ? "rotate-180" : ""),
4090
4058
  fill: "none",
4091
4059
  stroke: "currentColor",
4092
4060
  viewBox: "0 0 24 24"
@@ -4134,9 +4102,9 @@ var EventSearch = ({
4134
4102
  const newColors = filters.colorFilter.includes(color) ? filters.colorFilter.filter((c) => c !== color) : [...filters.colorFilter, color];
4135
4103
  handleFilterChange("colorFilter", newColors);
4136
4104
  },
4137
- 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"}`,
4105
+ className: 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"),
4138
4106
  style: { backgroundColor: color },
4139
- title: `\u989C\u8272: ${color}`
4107
+ title: "\u989C\u8272: " + color
4140
4108
  }
4141
4109
  )))), /* @__PURE__ */ React2.createElement("div", { className: "md:col-span-2 lg:col-span-3" }, /* @__PURE__ */ React2.createElement("label", { className: "block text-sm font-medium text-gray-700 mb-2" }, "\u65E5\u671F\u8303\u56F4"), /* @__PURE__ */ React2.createElement("div", { className: "flex items-center space-x-3" }, /* @__PURE__ */ React2.createElement(
4142
4110
  "input",
@@ -4178,9 +4146,9 @@ function useEvents2() {
4178
4146
  startDate: toLocalISOString(startDate),
4179
4147
  endDate: toLocalISOString(endDate)
4180
4148
  });
4181
- const response = await fetch(`/api/calendar/events?${params}`);
4149
+ const response = await fetch("/api/calendar/events?" + params);
4182
4150
  if (!response.ok) {
4183
- throw new Error(`\u83B7\u53D6\u4E8B\u4EF6\u5931\u8D25: ${response.status}`);
4151
+ throw new Error("\u83B7\u53D6\u4E8B\u4EF6\u5931\u8D25: " + response.status);
4184
4152
  }
4185
4153
  const data = await response.json();
4186
4154
  if (!data.success) {
@@ -4229,7 +4197,7 @@ function useEvents2() {
4229
4197
  body: JSON.stringify(createRequest)
4230
4198
  });
4231
4199
  if (!response.ok) {
4232
- throw new Error(`\u521B\u5EFA\u4E8B\u4EF6\u5931\u8D25: ${response.status}`);
4200
+ throw new Error("\u521B\u5EFA\u4E8B\u4EF6\u5931\u8D25: " + response.status);
4233
4201
  }
4234
4202
  const data = await response.json();
4235
4203
  if (!data.success) {
@@ -4265,7 +4233,7 @@ function useEvents2() {
4265
4233
  if (eventData.allDay !== void 0) updateRequest.allDay = eventData.allDay;
4266
4234
  if (eventData.location !== void 0) updateRequest.location = eventData.location;
4267
4235
  if (eventData.color !== void 0) updateRequest.color = eventData.color;
4268
- const response = await fetch(`/api/calendar/events/${eventId}`, {
4236
+ const response = await fetch("/api/calendar/events/" + eventId, {
4269
4237
  method: "PUT",
4270
4238
  headers: {
4271
4239
  "Content-Type": "application/json"
@@ -4273,7 +4241,7 @@ function useEvents2() {
4273
4241
  body: JSON.stringify(updateRequest)
4274
4242
  });
4275
4243
  if (!response.ok) {
4276
- throw new Error(`\u66F4\u65B0\u4E8B\u4EF6\u5931\u8D25: ${response.status}`);
4244
+ throw new Error("\u66F4\u65B0\u4E8B\u4EF6\u5931\u8D25: " + response.status);
4277
4245
  }
4278
4246
  const data = await response.json();
4279
4247
  if (!data.success) {
@@ -4303,12 +4271,12 @@ function useEvents2() {
4303
4271
  setLoading(true);
4304
4272
  setError(void 0);
4305
4273
  try {
4306
- const url = deleteAll ? `/api/calendar/events/${eventId}?deleteAll=true` : `/api/calendar/events/${eventId}`;
4274
+ const url = deleteAll ? "/api/calendar/events/" + eventId + "?deleteAll=true" : "/api/calendar/events/" + eventId;
4307
4275
  const response = await fetch(url, {
4308
4276
  method: "DELETE"
4309
4277
  });
4310
4278
  if (!response.ok) {
4311
- throw new Error(`\u5220\u9664\u4E8B\u4EF6\u5931\u8D25: ${response.status}`);
4279
+ throw new Error("\u5220\u9664\u4E8B\u4EF6\u5931\u8D25: " + response.status);
4312
4280
  }
4313
4281
  const data = await response.json();
4314
4282
  if (!data.success) {
@@ -4336,7 +4304,7 @@ function useEvents2() {
4336
4304
  body: JSON.stringify({ eventIds })
4337
4305
  });
4338
4306
  if (!response.ok) {
4339
- throw new Error(`\u6279\u91CF\u5220\u9664\u4E8B\u4EF6\u5931\u8D25: ${response.status}`);
4307
+ throw new Error("\u6279\u91CF\u5220\u9664\u4E8B\u4EF6\u5931\u8D25: " + response.status);
4340
4308
  }
4341
4309
  const data = await response.json();
4342
4310
  if (!data.success) {
@@ -4379,7 +4347,7 @@ var CalendarExportService = class {
4379
4347
  case "csv":
4380
4348
  return this.exportToCSV(events);
4381
4349
  default:
4382
- throw new Error(`\u4E0D\u652F\u6301\u7684\u5BFC\u51FA\u683C\u5F0F: ${options.format}`);
4350
+ throw new Error("\u4E0D\u652F\u6301\u7684\u5BFC\u51FA\u683C\u5F0F: " + options.format);
4383
4351
  }
4384
4352
  }
4385
4353
  /**
@@ -4394,16 +4362,16 @@ var CalendarExportService = class {
4394
4362
  lines.push("METHOD:PUBLISH");
4395
4363
  events.forEach((event) => {
4396
4364
  lines.push("BEGIN:VEVENT");
4397
- lines.push(`UID:${event.id}@profile-v1.calendar`);
4398
- lines.push(`DTSTART:${this.formatDateTimeToICal(new Date(event.startTime))}`);
4399
- lines.push(`DTEND:${this.formatDateTimeToICal(new Date(event.endTime))}`);
4400
- lines.push(`DTSTAMP:${this.formatDateTimeToICal(new Date(event.createdAt))}`);
4401
- lines.push(`SUMMARY:${this.escapeICalText(event.title)}`);
4365
+ lines.push("UID:" + event.id + "@profile-v1.calendar");
4366
+ lines.push("DTSTART:" + this.formatDateTimeToICal(new Date(event.startTime)));
4367
+ lines.push("DTEND:" + this.formatDateTimeToICal(new Date(event.endTime)));
4368
+ lines.push("DTSTAMP:" + this.formatDateTimeToICal(new Date(event.createdAt)));
4369
+ lines.push("SUMMARY:" + this.escapeICalText(event.title));
4402
4370
  if (event.description) {
4403
- lines.push(`DESCRIPTION:${this.escapeICalText(event.description)}`);
4371
+ lines.push("DESCRIPTION:" + this.escapeICalText(event.description));
4404
4372
  }
4405
4373
  if (event.location) {
4406
- lines.push(`LOCATION:${this.escapeICalText(event.location)}`);
4374
+ lines.push("LOCATION:" + this.escapeICalText(event.location));
4407
4375
  }
4408
4376
  if (event.priority) {
4409
4377
  const priorityMap = {
@@ -4411,7 +4379,7 @@ var CalendarExportService = class {
4411
4379
  "normal": "5",
4412
4380
  "high": "1"
4413
4381
  };
4414
- lines.push(`PRIORITY:${priorityMap[event.priority] || "5"}`);
4382
+ lines.push("PRIORITY:" + (priorityMap[event.priority] || "5"));
4415
4383
  }
4416
4384
  if (event.allDay) {
4417
4385
  lines.push("X-MICROSOFT-CDO-ALLDAYEVENT:TRUE");
@@ -4531,7 +4499,7 @@ var CalendarExportService = class {
4531
4499
  */
4532
4500
  static escapeCSVField(field) {
4533
4501
  if (field.includes(",") || field.includes('"') || field.includes("\n")) {
4534
- return `"${field.replace(/"/g, '""')}"`;
4502
+ return '"' + field.replace(/"/g, '""') + '"';
4535
4503
  }
4536
4504
  return field;
4537
4505
  }
@@ -4551,7 +4519,7 @@ var CalendarImportService = class {
4551
4519
  return {
4552
4520
  success: false,
4553
4521
  importedCount: 0,
4554
- errors: [`\u8BFB\u53D6\u6587\u4EF6\u5931\u8D25: ${error instanceof Error ? error.message : "\u672A\u77E5\u9519\u8BEF"}`],
4522
+ errors: ["\u8BFB\u53D6\u6587\u4EF6\u5931\u8D25: " + (error instanceof Error ? error.message : "\u672A\u77E5\u9519\u8BEF")],
4555
4523
  events: []
4556
4524
  };
4557
4525
  }
@@ -4573,7 +4541,7 @@ var CalendarImportService = class {
4573
4541
  events = this.parseCSVContent(content);
4574
4542
  break;
4575
4543
  default:
4576
- throw new Error(`\u4E0D\u652F\u6301\u7684\u5BFC\u5165\u683C\u5F0F: ${options.format}`);
4544
+ throw new Error("\u4E0D\u652F\u6301\u7684\u5BFC\u5165\u683C\u5F0F: " + options.format);
4577
4545
  }
4578
4546
  if (options.validateEvents) {
4579
4547
  events = this.validateAndFilterEvents(events);
@@ -4588,7 +4556,7 @@ var CalendarImportService = class {
4588
4556
  return {
4589
4557
  success: false,
4590
4558
  importedCount: 0,
4591
- errors: [`\u89E3\u6790\u5185\u5BB9\u5931\u8D25: ${error instanceof Error ? error.message : "\u672A\u77E5\u9519\u8BEF"}`],
4559
+ errors: ["\u89E3\u6790\u5185\u5BB9\u5931\u8D25: " + (error instanceof Error ? error.message : "\u672A\u77E5\u9519\u8BEF")],
4592
4560
  events: []
4593
4561
  };
4594
4562
  }
@@ -4815,7 +4783,7 @@ var CalendarImportService = class {
4815
4783
  const hour = dateTime.substring(8, 10);
4816
4784
  const minute = dateTime.substring(10, 12);
4817
4785
  const second = dateTime.substring(12, 14);
4818
- return `${year}-${month}-${day}T${hour}:${minute}:${second}.000Z`;
4786
+ return year + "-" + month + "-" + day + "T" + hour + ":" + minute + ":" + second + ".000Z";
4819
4787
  }
4820
4788
  } else {
4821
4789
  const dateOnly = value.replace(/[^\d]/g, "");
@@ -4823,7 +4791,7 @@ var CalendarImportService = class {
4823
4791
  const year = dateOnly.substring(0, 4);
4824
4792
  const month = dateOnly.substring(4, 6);
4825
4793
  const day = dateOnly.substring(6, 8);
4826
- return `${year}-${month}-${day}T00:00:00.000Z`;
4794
+ return year + "-" + month + "-" + day + "T00:00:00.000Z";
4827
4795
  }
4828
4796
  }
4829
4797
  return (/* @__PURE__ */ new Date()).toISOString();
@@ -4985,22 +4953,22 @@ var RecurrenceService = class {
4985
4953
  let description = "";
4986
4954
  switch (rule.type) {
4987
4955
  case "daily":
4988
- description = rule.interval === 1 ? "\u6BCF\u5929" : `\u6BCF${rule.interval}\u5929`;
4956
+ description = rule.interval === 1 ? "\u6BCF\u5929" : "\u6BCF" + rule.interval + "\u5929";
4989
4957
  break;
4990
4958
  case "weekly":
4991
- description = rule.interval === 1 ? "\u6BCF\u5468" : `\u6BCF${rule.interval}\u5468`;
4959
+ description = rule.interval === 1 ? "\u6BCF\u5468" : "\u6BCF" + rule.interval + "\u5468";
4992
4960
  break;
4993
4961
  case "monthly":
4994
- description = rule.interval === 1 ? "\u6BCF\u6708" : `\u6BCF${rule.interval}\u4E2A\u6708`;
4962
+ description = rule.interval === 1 ? "\u6BCF\u6708" : "\u6BCF" + rule.interval + "\u4E2A\u6708";
4995
4963
  break;
4996
4964
  case "yearly":
4997
- description = rule.interval === 1 ? "\u6BCF\u5E74" : `\u6BCF${rule.interval}\u5E74`;
4965
+ description = rule.interval === 1 ? "\u6BCF\u5E74" : "\u6BCF" + rule.interval + "\u5E74";
4998
4966
  break;
4999
4967
  }
5000
4968
  if (rule.endDate) {
5001
- description += `\uFF0C\u76F4\u5230${rule.endDate}`;
4969
+ description += "\uFF0C\u76F4\u5230" + rule.endDate;
5002
4970
  } else if (rule.count) {
5003
- description += `\uFF0C\u5171${rule.count}\u6B21`;
4971
+ description += "\uFF0C\u5171" + rule.count + "\u6B21";
5004
4972
  }
5005
4973
  return description;
5006
4974
  }
@@ -5024,7 +4992,7 @@ var ReminderService = class {
5024
4992
  * 为事件创建提醒
5025
4993
  */
5026
4994
  static createReminder(event, reminderMinutes, reminderType = "browser") {
5027
- const reminderId = `${event.id}_${Date.now()}`;
4995
+ const reminderId = event.id + "_" + Date.now();
5028
4996
  const eventStart = new Date(event.startTime);
5029
4997
  const reminderTime = new Date(eventStart.getTime() - reminderMinutes * 60 * 1e3);
5030
4998
  const reminder = {
@@ -5106,8 +5074,7 @@ var ReminderService = class {
5106
5074
  }
5107
5075
  const timeText = this.getTimeText(reminder.config.minutes);
5108
5076
  const notification = new Notification(`\u{1F4C5} \u4E8B\u4EF6\u63D0\u9192`, {
5109
- body: `${reminder.eventTitle}
5110
- ${timeText}`,
5077
+ body: reminder.eventTitle + "\n" + timeText,
5111
5078
  icon: "/favicon.ico",
5112
5079
  tag: reminder.id,
5113
5080
  requireInteraction: true
@@ -5160,10 +5127,7 @@ ${timeText}`,
5160
5127
  */
5161
5128
  static showVisualAlert(reminder) {
5162
5129
  const timeText = this.getTimeText(reminder.config.minutes);
5163
- alert(`\u{1F4C5} \u4E8B\u4EF6\u63D0\u9192
5164
-
5165
- ${reminder.eventTitle}
5166
- ${timeText}`);
5130
+ alert("\u{1F4C5} \u4E8B\u4EF6\u63D0\u9192\n\n" + reminder.eventTitle + "\n" + timeText);
5167
5131
  }
5168
5132
  /**
5169
5133
  * 获取时间描述文本
@@ -5172,15 +5136,15 @@ ${timeText}`);
5172
5136
  if (minutes === 0) {
5173
5137
  return "\u4E8B\u4EF6\u5373\u5C06\u5F00\u59CB";
5174
5138
  } else if (minutes < 60) {
5175
- return `${minutes}\u5206\u949F\u540E\u5F00\u59CB`;
5139
+ return minutes + "\u5206\u949F\u540E\u5F00\u59CB";
5176
5140
  } else if (minutes < 1440) {
5177
5141
  const hours = Math.floor(minutes / 60);
5178
5142
  const remainingMinutes = minutes % 60;
5179
- return remainingMinutes > 0 ? `${hours}\u5C0F\u65F6${remainingMinutes}\u5206\u949F\u540E\u5F00\u59CB` : `${hours}\u5C0F\u65F6\u540E\u5F00\u59CB`;
5143
+ return remainingMinutes > 0 ? hours + "\u5C0F\u65F6" + remainingMinutes + "\u5206\u949F\u540E\u5F00\u59CB" : hours + "\u5C0F\u65F6\u540E\u5F00\u59CB";
5180
5144
  } else {
5181
5145
  const days = Math.floor(minutes / 1440);
5182
5146
  const remainingHours = Math.floor(minutes % 1440 / 60);
5183
- return remainingHours > 0 ? `${days}\u5929${remainingHours}\u5C0F\u65F6\u540E\u5F00\u59CB` : `${days}\u5929\u540E\u5F00\u59CB`;
5147
+ return remainingHours > 0 ? days + "\u5929" + remainingHours + "\u5C0F\u65F6\u540E\u5F00\u59CB" : days + "\u5929\u540E\u5F00\u59CB";
5184
5148
  }
5185
5149
  }
5186
5150
  /**