sa2kit 1.6.30 → 1.6.32

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 (251) hide show
  1. package/dist/AliyunOSSProvider-4W47OFEK.mjs +6 -0
  2. package/dist/{AliyunOSSProvider-KJYRIZES.mjs.map → AliyunOSSProvider-4W47OFEK.mjs.map} +1 -1
  3. package/dist/AliyunOSSProvider-HCNGDJL7.js +15 -0
  4. package/dist/{AliyunOSSProvider-FWAKUB2T.js.map → AliyunOSSProvider-HCNGDJL7.js.map} +1 -1
  5. package/dist/ConfigService-3DIC6C3Q.js +21 -0
  6. package/dist/{ConfigService-7MEZXKJ5.js.map → ConfigService-3DIC6C3Q.js.map} +1 -1
  7. package/dist/ConfigService-V6ZK273Z.mjs +4 -0
  8. package/dist/{ConfigService-BV57YYFW.mjs.map → ConfigService-V6ZK273Z.mjs.map} +1 -1
  9. package/dist/LocalStorageProvider-3RVPCQB3.mjs +6 -0
  10. package/dist/{LocalStorageProvider-RTPMUOZ2.mjs.map → LocalStorageProvider-3RVPCQB3.mjs.map} +1 -1
  11. package/dist/LocalStorageProvider-PP7MA5OT.js +15 -0
  12. package/dist/{LocalStorageProvider-XSRCUXOU.js.map → LocalStorageProvider-PP7MA5OT.js.map} +1 -1
  13. package/dist/PMXParser-2VTA737I.js +13 -0
  14. package/dist/{PMXParser-YBS3B6HM.js.map → PMXParser-2VTA737I.js.map} +1 -1
  15. package/dist/PMXParser-RNVQL76A.mjs +4 -0
  16. package/dist/{PMXParser-L6IWHL4I.mjs.map → PMXParser-RNVQL76A.mjs.map} +1 -1
  17. package/dist/analytics/index.js +46 -45
  18. package/dist/analytics/index.js.map +1 -1
  19. package/dist/analytics/index.mjs +45 -44
  20. package/dist/analytics/index.mjs.map +1 -1
  21. package/dist/analytics/server/index.js +4 -4
  22. package/dist/analytics/server/index.js.map +1 -1
  23. package/dist/analytics/server/index.mjs +4 -4
  24. package/dist/analytics/server/index.mjs.map +1 -1
  25. package/dist/api/index.js +5 -5
  26. package/dist/api/index.js.map +1 -1
  27. package/dist/api/index.mjs +5 -5
  28. package/dist/api/index.mjs.map +1 -1
  29. package/dist/audioDetection/index.js +17 -16
  30. package/dist/audioDetection/index.js.map +1 -1
  31. package/dist/audioDetection/index.mjs +17 -16
  32. package/dist/audioDetection/index.mjs.map +1 -1
  33. package/dist/auth/client/index.js +4 -4
  34. package/dist/auth/client/index.mjs +1 -1
  35. package/dist/auth/components/index.js +3 -3
  36. package/dist/auth/components/index.js.map +1 -1
  37. package/dist/auth/components/index.mjs +3 -3
  38. package/dist/auth/components/index.mjs.map +1 -1
  39. package/dist/auth/index.js +29 -29
  40. package/dist/auth/index.mjs +5 -5
  41. package/dist/auth/middleware/index.js +3 -3
  42. package/dist/auth/middleware/index.mjs +2 -2
  43. package/dist/auth/routes/index.js +14 -14
  44. package/dist/auth/routes/index.mjs +2 -2
  45. package/dist/auth/services/index.js +7 -7
  46. package/dist/auth/services/index.mjs +1 -1
  47. package/dist/calendar/index.js +146 -182
  48. package/dist/calendar/index.js.map +1 -1
  49. package/dist/calendar/index.mjs +139 -175
  50. package/dist/calendar/index.mjs.map +1 -1
  51. package/dist/calendar/routes/index.js +1 -1
  52. package/dist/calendar/routes/index.js.map +1 -1
  53. package/dist/calendar/routes/index.mjs +1 -1
  54. package/dist/calendar/routes/index.mjs.map +1 -1
  55. package/dist/{chunk-5YQ5B7IZ.js → chunk-24HGREE6.js} +5 -5
  56. package/dist/{chunk-5YQ5B7IZ.js.map → chunk-24HGREE6.js.map} +1 -1
  57. package/dist/{chunk-6PRFP5EG.js → chunk-25OFOKNF.js} +6 -6
  58. package/dist/chunk-25OFOKNF.js.map +1 -0
  59. package/dist/{chunk-KQGP6BTS.mjs → chunk-3DXPQ4YV.mjs} +6 -6
  60. package/dist/chunk-3DXPQ4YV.mjs.map +1 -0
  61. package/dist/{chunk-3BGPZN4X.mjs → chunk-3NHAT7D4.mjs} +12 -12
  62. package/dist/chunk-3NHAT7D4.mjs.map +1 -0
  63. package/dist/{chunk-MW4BCIZC.mjs → chunk-4HC6M7FK.mjs} +3 -3
  64. package/dist/chunk-4HC6M7FK.mjs.map +1 -0
  65. package/dist/{chunk-ESRCX5TQ.mjs → chunk-52TN2QSS.mjs} +3 -3
  66. package/dist/{chunk-ESRCX5TQ.mjs.map → chunk-52TN2QSS.mjs.map} +1 -1
  67. package/dist/{chunk-CNTILN5J.mjs → chunk-5YQ62BKX.mjs} +20 -19
  68. package/dist/chunk-5YQ62BKX.mjs.map +1 -0
  69. package/dist/{chunk-6W5BMXJG.js → chunk-6OWNMJKG.js} +4 -4
  70. package/dist/{chunk-6W5BMXJG.js.map → chunk-6OWNMJKG.js.map} +1 -1
  71. package/dist/{chunk-DUHZ7VZP.js → chunk-7VRT55ZD.js} +3 -3
  72. package/dist/chunk-7VRT55ZD.js.map +1 -0
  73. package/dist/{chunk-3WOAPLEG.mjs → chunk-EB4NR623.mjs} +27 -26
  74. package/dist/chunk-EB4NR623.mjs.map +1 -0
  75. package/dist/chunk-EI27JKND.mjs +1988 -0
  76. package/dist/chunk-EI27JKND.mjs.map +1 -0
  77. package/dist/{chunk-CD77U7LZ.js → chunk-GBPLX42J.js} +9 -9
  78. package/dist/chunk-GBPLX42J.js.map +1 -0
  79. package/dist/{chunk-TFQF2HDO.mjs → chunk-HDEOCX2L.mjs} +12 -12
  80. package/dist/chunk-HDEOCX2L.mjs.map +1 -0
  81. package/dist/{chunk-TV3VKRJK.mjs → chunk-HDMIOOZY.mjs} +38 -68
  82. package/dist/chunk-HDMIOOZY.mjs.map +1 -0
  83. package/dist/{chunk-OPPF3326.js → chunk-HJ6MH7J7.js} +39 -69
  84. package/dist/chunk-HJ6MH7J7.js.map +1 -0
  85. package/dist/chunk-KO73EBUT.js +80 -0
  86. package/dist/chunk-KO73EBUT.js.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-LX4XX6W7.js → chunk-L47ZOYHL.js} +15 -89
  90. package/dist/chunk-L47ZOYHL.js.map +1 -0
  91. package/dist/{chunk-6MQUBPKB.mjs → chunk-LJ4CCSSY.mjs} +3 -3
  92. package/dist/{chunk-6MQUBPKB.mjs.map → chunk-LJ4CCSSY.mjs.map} +1 -1
  93. package/dist/{chunk-TOC5FSHP.js → chunk-NJ2SNXBJ.js} +12 -12
  94. package/dist/chunk-NJ2SNXBJ.js.map +1 -0
  95. package/dist/{chunk-OCR5DS4C.mjs → chunk-PE5EAHZK.mjs} +3 -3
  96. package/dist/chunk-PE5EAHZK.mjs.map +1 -0
  97. package/dist/{chunk-LZHMNOED.js → chunk-Q5EDCKQA.js} +26 -26
  98. package/dist/chunk-Q5EDCKQA.js.map +1 -0
  99. package/dist/{chunk-CLKKZSPZ.js → chunk-RBKGYWME.js} +20 -19
  100. package/dist/chunk-RBKGYWME.js.map +1 -0
  101. package/dist/{chunk-VRTRSEEH.mjs → chunk-RSJSZ7QH.mjs} +11 -11
  102. package/dist/chunk-RSJSZ7QH.mjs.map +1 -0
  103. package/dist/{chunk-E7RGBAYJ.js → chunk-TDCDEBGP.js} +30 -29
  104. package/dist/chunk-TDCDEBGP.js.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-T5OZHYVM.mjs → chunk-UKT3PLON.mjs} +13 -85
  108. package/dist/chunk-UKT3PLON.mjs.map +1 -0
  109. package/dist/{chunk-UOFTHYIH.js → chunk-UL6XJGUZ.js} +4 -4
  110. package/dist/chunk-UL6XJGUZ.js.map +1 -0
  111. package/dist/chunk-VVWQTO4Y.mjs +77 -0
  112. package/dist/chunk-VVWQTO4Y.mjs.map +1 -0
  113. package/dist/{chunk-A3UP56MS.js → chunk-WA67GZSZ.js} +3 -3
  114. package/dist/chunk-WA67GZSZ.js.map +1 -0
  115. package/dist/{chunk-OLHGZXN3.mjs → chunk-WEEXCPSE.mjs} +5 -5
  116. package/dist/chunk-WEEXCPSE.mjs.map +1 -0
  117. package/dist/chunk-XGBE4SUV.js +2093 -0
  118. package/dist/chunk-XGBE4SUV.js.map +1 -0
  119. package/dist/{chunk-QU5OT4DF.js → chunk-XJ7ZAGC5.js} +5 -5
  120. package/dist/chunk-XJ7ZAGC5.js.map +1 -0
  121. package/dist/{chunk-ZI25QCHD.mjs → chunk-YOTQG4NP.mjs} +25 -25
  122. package/dist/chunk-YOTQG4NP.mjs.map +1 -0
  123. package/dist/{chunk-QAT2RWAO.mjs → chunk-Z36R3P62.mjs} +7 -7
  124. package/dist/chunk-Z36R3P62.mjs.map +1 -0
  125. package/dist/{chunk-7Z5LLJ3A.js → chunk-ZWQJSZEY.js} +13 -13
  126. package/dist/chunk-ZWQJSZEY.js.map +1 -0
  127. package/dist/config/index.js +6 -6
  128. package/dist/config/index.js.map +1 -1
  129. package/dist/config/index.mjs +6 -6
  130. package/dist/config/index.mjs.map +1 -1
  131. package/dist/config/server/index.js +37 -37
  132. package/dist/config/server/index.js.map +1 -1
  133. package/dist/config/server/index.mjs +37 -37
  134. package/dist/config/server/index.mjs.map +1 -1
  135. package/dist/i18n/index.d.mts +2 -2
  136. package/dist/i18n/index.d.ts +2 -2
  137. package/dist/i18n/index.js +16 -17
  138. package/dist/i18n/index.js.map +1 -1
  139. package/dist/i18n/index.mjs +16 -17
  140. package/dist/i18n/index.mjs.map +1 -1
  141. package/dist/imageCrop/index.js +11 -10
  142. package/dist/imageCrop/index.js.map +1 -1
  143. package/dist/imageCrop/index.mjs +11 -10
  144. package/dist/imageCrop/index.mjs.map +1 -1
  145. package/dist/index.d.mts +185 -100
  146. package/dist/index.d.ts +185 -100
  147. package/dist/index.js +225 -249
  148. package/dist/index.js.map +1 -1
  149. package/dist/index.mjs +80 -104
  150. package/dist/index.mjs.map +1 -1
  151. package/dist/logger/index.js +6 -6
  152. package/dist/logger/index.mjs +1 -1
  153. package/dist/mikuFusionGame/index.d.mts +112 -0
  154. package/dist/mikuFusionGame/index.d.ts +112 -0
  155. package/dist/mikuFusionGame/index.js +680 -0
  156. package/dist/mikuFusionGame/index.js.map +1 -0
  157. package/dist/mikuFusionGame/index.mjs +667 -0
  158. package/dist/mikuFusionGame/index.mjs.map +1 -0
  159. package/dist/mmd/admin/index.js +11 -10
  160. package/dist/mmd/admin/index.js.map +1 -1
  161. package/dist/mmd/admin/index.mjs +11 -10
  162. package/dist/mmd/admin/index.mjs.map +1 -1
  163. package/dist/mmd/index.js +223 -241
  164. package/dist/mmd/index.js.map +1 -1
  165. package/dist/mmd/index.mjs +220 -238
  166. package/dist/mmd/index.mjs.map +1 -1
  167. package/dist/mmd/server/index.js +6 -6
  168. package/dist/mmd/server/index.js.map +1 -1
  169. package/dist/mmd/server/index.mjs +6 -6
  170. package/dist/mmd/server/index.mjs.map +1 -1
  171. package/dist/music/index.js +16 -16
  172. package/dist/music/index.mjs +2 -2
  173. package/dist/music/server/index.js +8 -8
  174. package/dist/music/server/index.mjs +1 -1
  175. package/dist/request/index.js +2 -2
  176. package/dist/request/index.js.map +1 -1
  177. package/dist/request/index.mjs +2 -2
  178. package/dist/request/index.mjs.map +1 -1
  179. package/dist/storage/index.js +15 -14
  180. package/dist/storage/index.mjs +3 -2
  181. package/dist/testYourself/admin/index.js +3 -3
  182. package/dist/testYourself/admin/index.mjs +1 -1
  183. package/dist/testYourself/index.js +22 -22
  184. package/dist/testYourself/index.js.map +1 -1
  185. package/dist/testYourself/index.mjs +14 -14
  186. package/dist/testYourself/index.mjs.map +1 -1
  187. package/dist/testYourself/server/index.js +4 -4
  188. package/dist/testYourself/server/index.mjs +1 -1
  189. package/dist/universalExport/index.d.mts +3 -3
  190. package/dist/universalExport/index.d.ts +3 -3
  191. package/dist/universalExport/index.js +48 -47
  192. package/dist/universalExport/index.js.map +1 -1
  193. package/dist/universalExport/index.mjs +48 -47
  194. package/dist/universalExport/index.mjs.map +1 -1
  195. package/dist/universalExport/server/index.js +29 -29
  196. package/dist/universalExport/server/index.js.map +1 -1
  197. package/dist/universalExport/server/index.mjs +28 -28
  198. package/dist/universalExport/server/index.mjs.map +1 -1
  199. package/dist/universalFile/index.d.mts +3 -3
  200. package/dist/universalFile/index.d.ts +3 -3
  201. package/dist/universalFile/index.js +73 -72
  202. package/dist/universalFile/index.js.map +1 -1
  203. package/dist/universalFile/index.mjs +73 -72
  204. package/dist/universalFile/index.mjs.map +1 -1
  205. package/dist/universalFile/server/index.js +258 -260
  206. package/dist/universalFile/server/index.js.map +1 -1
  207. package/dist/universalFile/server/index.mjs +244 -246
  208. package/dist/universalFile/server/index.mjs.map +1 -1
  209. package/dist/utils/index.js +11 -11
  210. package/dist/utils/index.mjs +2 -2
  211. package/package.json +25 -31
  212. package/dist/AliyunOSSProvider-FWAKUB2T.js +0 -15
  213. package/dist/AliyunOSSProvider-KJYRIZES.mjs +0 -6
  214. package/dist/ConfigService-7MEZXKJ5.js +0 -21
  215. package/dist/ConfigService-BV57YYFW.mjs +0 -4
  216. package/dist/LocalStorageProvider-RTPMUOZ2.mjs +0 -6
  217. package/dist/LocalStorageProvider-XSRCUXOU.js +0 -15
  218. package/dist/PMXParser-L6IWHL4I.mjs +0 -4
  219. package/dist/PMXParser-YBS3B6HM.js +0 -13
  220. package/dist/chunk-3BGPZN4X.mjs.map +0 -1
  221. package/dist/chunk-3WOAPLEG.mjs.map +0 -1
  222. package/dist/chunk-6PRFP5EG.js.map +0 -1
  223. package/dist/chunk-6YKMCPQI.mjs.map +0 -1
  224. package/dist/chunk-7Z5LLJ3A.js.map +0 -1
  225. package/dist/chunk-A3UP56MS.js.map +0 -1
  226. package/dist/chunk-CD77U7LZ.js.map +0 -1
  227. package/dist/chunk-CLKKZSPZ.js.map +0 -1
  228. package/dist/chunk-CNTILN5J.mjs.map +0 -1
  229. package/dist/chunk-DUHZ7VZP.js.map +0 -1
  230. package/dist/chunk-DW2ZTOCV.js +0 -1727
  231. package/dist/chunk-DW2ZTOCV.js.map +0 -1
  232. package/dist/chunk-E7RGBAYJ.js.map +0 -1
  233. package/dist/chunk-JZXJQMVE.js.map +0 -1
  234. package/dist/chunk-KQGP6BTS.mjs.map +0 -1
  235. package/dist/chunk-LFG6FPM5.mjs +0 -1597
  236. package/dist/chunk-LFG6FPM5.mjs.map +0 -1
  237. package/dist/chunk-LX4XX6W7.js.map +0 -1
  238. package/dist/chunk-LZHMNOED.js.map +0 -1
  239. package/dist/chunk-MW4BCIZC.mjs.map +0 -1
  240. package/dist/chunk-OCR5DS4C.mjs.map +0 -1
  241. package/dist/chunk-OLHGZXN3.mjs.map +0 -1
  242. package/dist/chunk-OPPF3326.js.map +0 -1
  243. package/dist/chunk-QAT2RWAO.mjs.map +0 -1
  244. package/dist/chunk-QU5OT4DF.js.map +0 -1
  245. package/dist/chunk-T5OZHYVM.mjs.map +0 -1
  246. package/dist/chunk-TFQF2HDO.mjs.map +0 -1
  247. package/dist/chunk-TOC5FSHP.js.map +0 -1
  248. package/dist/chunk-TV3VKRJK.mjs.map +0 -1
  249. package/dist/chunk-UOFTHYIH.js.map +0 -1
  250. package/dist/chunk-VRTRSEEH.mjs.map +0 -1
  251. package/dist/chunk-ZI25QCHD.mjs.map +0 -1
@@ -1,1727 +0,0 @@
1
- 'use strict';
2
-
3
- var chunk7Z5LLJ3A_js = require('./chunk-7Z5LLJ3A.js');
4
- var React23 = require('react');
5
- var reactSlot = require('@radix-ui/react-slot');
6
- var classVarianceAuthority = require('class-variance-authority');
7
- var LabelPrimitive = require('@radix-ui/react-label');
8
- var TabsPrimitive = require('@radix-ui/react-tabs');
9
- var DialogPrimitive = require('@radix-ui/react-dialog');
10
- var lucideReact = require('lucide-react');
11
- var AlertDialogPrimitive = require('@radix-ui/react-alert-dialog');
12
- var DropdownMenuPrimitive = require('@radix-ui/react-dropdown-menu');
13
- var PopoverPrimitive = require('@radix-ui/react-popover');
14
- var ProgressPrimitive = require('@radix-ui/react-progress');
15
- var ScrollAreaPrimitive = require('@radix-ui/react-scroll-area');
16
- var SelectPrimitive = require('@radix-ui/react-select');
17
- var SeparatorPrimitive = require('@radix-ui/react-separator');
18
- var TooltipPrimitive = require('@radix-ui/react-tooltip');
19
- var AvatarPrimitive = require('@radix-ui/react-avatar');
20
- var navigation = require('next/navigation');
21
-
22
- function _interopNamespace(e) {
23
- if (e && e.__esModule) return e;
24
- var n = Object.create(null);
25
- if (e) {
26
- Object.keys(e).forEach(function (k) {
27
- if (k !== 'default') {
28
- var d = Object.getOwnPropertyDescriptor(e, k);
29
- Object.defineProperty(n, k, d.get ? d : {
30
- enumerable: true,
31
- get: function () { return e[k]; }
32
- });
33
- }
34
- });
35
- }
36
- n.default = e;
37
- return Object.freeze(n);
38
- }
39
-
40
- var React23__namespace = /*#__PURE__*/_interopNamespace(React23);
41
- var LabelPrimitive__namespace = /*#__PURE__*/_interopNamespace(LabelPrimitive);
42
- var TabsPrimitive__namespace = /*#__PURE__*/_interopNamespace(TabsPrimitive);
43
- var DialogPrimitive__namespace = /*#__PURE__*/_interopNamespace(DialogPrimitive);
44
- var AlertDialogPrimitive__namespace = /*#__PURE__*/_interopNamespace(AlertDialogPrimitive);
45
- var DropdownMenuPrimitive__namespace = /*#__PURE__*/_interopNamespace(DropdownMenuPrimitive);
46
- var PopoverPrimitive__namespace = /*#__PURE__*/_interopNamespace(PopoverPrimitive);
47
- var ProgressPrimitive__namespace = /*#__PURE__*/_interopNamespace(ProgressPrimitive);
48
- var ScrollAreaPrimitive__namespace = /*#__PURE__*/_interopNamespace(ScrollAreaPrimitive);
49
- var SelectPrimitive__namespace = /*#__PURE__*/_interopNamespace(SelectPrimitive);
50
- var SeparatorPrimitive__namespace = /*#__PURE__*/_interopNamespace(SeparatorPrimitive);
51
- var TooltipPrimitive__namespace = /*#__PURE__*/_interopNamespace(TooltipPrimitive);
52
- var AvatarPrimitive__namespace = /*#__PURE__*/_interopNamespace(AvatarPrimitive);
53
-
54
- var buttonVariants = classVarianceAuthority.cva(
55
- "inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",
56
- {
57
- variants: {
58
- variant: {
59
- default: "bg-primary text-primary-foreground shadow hover:bg-primary/90",
60
- destructive: "bg-destructive text-destructive-foreground shadow-sm hover:bg-destructive/90",
61
- outline: "border border-input bg-background shadow-sm hover:bg-accent hover:text-accent-foreground",
62
- secondary: "bg-secondary text-secondary-foreground shadow-sm hover:bg-secondary/80",
63
- ghost: "hover:bg-accent hover:text-accent-foreground",
64
- link: "text-primary underline-offset-4 hover:underline"
65
- },
66
- size: {
67
- default: "h-9 px-4 py-2",
68
- sm: "h-8 rounded-md px-3 text-xs",
69
- lg: "h-10 rounded-md px-8",
70
- icon: "h-9 w-9"
71
- }
72
- },
73
- defaultVariants: {
74
- variant: "default",
75
- size: "default"
76
- }
77
- }
78
- );
79
- var Button = React23__namespace.forwardRef(
80
- ({ className, variant = "default", size = "default", asChild = false, ...props }, ref) => {
81
- const Comp = asChild ? reactSlot.Slot : "button";
82
- return /* @__PURE__ */ React23__namespace.createElement(
83
- Comp,
84
- {
85
- className: chunk7Z5LLJ3A_js.cn(buttonVariants({ variant, size, className })),
86
- ref,
87
- ...props
88
- }
89
- );
90
- }
91
- );
92
- Button.displayName = "Button";
93
- var Card = React23__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React23__namespace.createElement(
94
- "div",
95
- {
96
- ref,
97
- className: chunk7Z5LLJ3A_js.cn(
98
- "rounded-xl border bg-card text-card-foreground shadow",
99
- className
100
- ),
101
- ...props
102
- }
103
- ));
104
- Card.displayName = "Card";
105
- var CardHeader = React23__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React23__namespace.createElement(
106
- "div",
107
- {
108
- ref,
109
- className: chunk7Z5LLJ3A_js.cn("flex flex-col space-y-1.5 p-6", className),
110
- ...props
111
- }
112
- ));
113
- CardHeader.displayName = "CardHeader";
114
- var CardTitle = React23__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React23__namespace.createElement(
115
- "div",
116
- {
117
- ref,
118
- className: chunk7Z5LLJ3A_js.cn("font-semibold leading-none tracking-tight", className),
119
- ...props
120
- }
121
- ));
122
- CardTitle.displayName = "CardTitle";
123
- var CardDescription = React23__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React23__namespace.createElement(
124
- "div",
125
- {
126
- ref,
127
- className: chunk7Z5LLJ3A_js.cn("text-sm text-muted-foreground", className),
128
- ...props
129
- }
130
- ));
131
- CardDescription.displayName = "CardDescription";
132
- var CardContent = React23__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React23__namespace.createElement("div", { ref, className: chunk7Z5LLJ3A_js.cn("p-6 pt-0", className), ...props }));
133
- CardContent.displayName = "CardContent";
134
- var CardFooter = React23__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React23__namespace.createElement(
135
- "div",
136
- {
137
- ref,
138
- className: chunk7Z5LLJ3A_js.cn("flex items-center p-6 pt-0", className),
139
- ...props
140
- }
141
- ));
142
- CardFooter.displayName = "CardFooter";
143
- var badgeVariants = classVarianceAuthority.cva(
144
- "inline-flex items-center rounded-md border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2",
145
- {
146
- variants: {
147
- variant: {
148
- default: "border-transparent bg-primary text-primary-foreground shadow hover:bg-primary/80",
149
- secondary: "border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80",
150
- destructive: "border-transparent bg-destructive text-destructive-foreground shadow hover:bg-destructive/80",
151
- outline: "text-foreground"
152
- }
153
- },
154
- defaultVariants: {
155
- variant: "default"
156
- }
157
- }
158
- );
159
- function Badge({ className, variant, ...props }) {
160
- return /* @__PURE__ */ React23__namespace.createElement("div", { className: chunk7Z5LLJ3A_js.cn(badgeVariants({ variant }), className), ...props });
161
- }
162
- var Input = React23__namespace.forwardRef(
163
- ({ className, type, ...props }, ref) => {
164
- return /* @__PURE__ */ React23__namespace.createElement(
165
- "input",
166
- {
167
- type,
168
- className: chunk7Z5LLJ3A_js.cn(
169
- "flex h-9 w-full rounded-md border border-input bg-transparent px-3 py-1 text-base shadow-sm transition-colors file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 md:text-sm",
170
- className
171
- ),
172
- ref,
173
- ...props
174
- }
175
- );
176
- }
177
- );
178
- Input.displayName = "Input";
179
- var labelVariants = classVarianceAuthority.cva(
180
- "text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70"
181
- );
182
- var Label = React23__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React23__namespace.createElement(
183
- LabelPrimitive__namespace.Root,
184
- {
185
- ref,
186
- className: chunk7Z5LLJ3A_js.cn(labelVariants(), className),
187
- ...props
188
- }
189
- ));
190
- Label.displayName = LabelPrimitive__namespace.Root.displayName;
191
- var Tabs = TabsPrimitive__namespace.Root;
192
- var TabsList = React23__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React23__namespace.createElement(
193
- TabsPrimitive__namespace.List,
194
- {
195
- ref,
196
- className: chunk7Z5LLJ3A_js.cn(
197
- "inline-flex h-9 items-center justify-center rounded-lg bg-muted p-1 text-muted-foreground",
198
- className
199
- ),
200
- ...props
201
- }
202
- ));
203
- TabsList.displayName = TabsPrimitive__namespace.List.displayName;
204
- var TabsTrigger = React23__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React23__namespace.createElement(
205
- TabsPrimitive__namespace.Trigger,
206
- {
207
- ref,
208
- className: chunk7Z5LLJ3A_js.cn(
209
- "inline-flex items-center justify-center whitespace-nowrap rounded-md px-3 py-1 text-sm font-medium ring-offset-background transition-all focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:bg-background data-[state=active]:text-foreground data-[state=active]:shadow",
210
- className
211
- ),
212
- ...props
213
- }
214
- ));
215
- TabsTrigger.displayName = TabsPrimitive__namespace.Trigger.displayName;
216
- var TabsContent = React23__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React23__namespace.createElement(
217
- TabsPrimitive__namespace.Content,
218
- {
219
- ref,
220
- className: chunk7Z5LLJ3A_js.cn(
221
- "mt-2 ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2",
222
- className
223
- ),
224
- ...props
225
- }
226
- ));
227
- TabsContent.displayName = TabsPrimitive__namespace.Content.displayName;
228
- var Dialog = DialogPrimitive__namespace.Root;
229
- var DialogTrigger = DialogPrimitive__namespace.Trigger;
230
- var DialogPortal = DialogPrimitive__namespace.Portal;
231
- var DialogClose = DialogPrimitive__namespace.Close;
232
- var DialogOverlay = React23__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React23__namespace.createElement(
233
- DialogPrimitive__namespace.Overlay,
234
- {
235
- ref,
236
- className: chunk7Z5LLJ3A_js.cn(
237
- "fixed inset-0 z-[9999] bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",
238
- className
239
- ),
240
- ...props
241
- }
242
- ));
243
- DialogOverlay.displayName = DialogPrimitive__namespace.Overlay.displayName;
244
- var DialogContent = React23__namespace.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ React23__namespace.createElement(DialogPortal, null, /* @__PURE__ */ React23__namespace.createElement(DialogOverlay, null), /* @__PURE__ */ React23__namespace.createElement(
245
- DialogPrimitive__namespace.Content,
246
- {
247
- ref,
248
- className: chunk7Z5LLJ3A_js.cn(
249
- "fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg",
250
- className
251
- ),
252
- ...props
253
- },
254
- children,
255
- /* @__PURE__ */ React23__namespace.createElement(DialogPrimitive__namespace.Close, { className: "absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground" }, /* @__PURE__ */ React23__namespace.createElement(lucideReact.X, { className: "h-4 w-4" }), /* @__PURE__ */ React23__namespace.createElement("span", { className: "sr-only" }, "Close"))
256
- )));
257
- DialogContent.displayName = DialogPrimitive__namespace.Content.displayName;
258
- var DialogHeader = ({
259
- className,
260
- ...props
261
- }) => /* @__PURE__ */ React23__namespace.createElement(
262
- "div",
263
- {
264
- className: chunk7Z5LLJ3A_js.cn(
265
- "flex flex-col space-y-1.5 text-center sm:text-left",
266
- className
267
- ),
268
- ...props
269
- }
270
- );
271
- DialogHeader.displayName = "DialogHeader";
272
- var DialogFooter = ({
273
- className,
274
- ...props
275
- }) => /* @__PURE__ */ React23__namespace.createElement(
276
- "div",
277
- {
278
- className: chunk7Z5LLJ3A_js.cn(
279
- "flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2",
280
- className
281
- ),
282
- ...props
283
- }
284
- );
285
- DialogFooter.displayName = "DialogFooter";
286
- var DialogTitle = React23__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React23__namespace.createElement(
287
- DialogPrimitive__namespace.Title,
288
- {
289
- ref,
290
- className: chunk7Z5LLJ3A_js.cn(
291
- "text-lg font-semibold leading-none tracking-tight",
292
- className
293
- ),
294
- ...props
295
- }
296
- ));
297
- DialogTitle.displayName = DialogPrimitive__namespace.Title.displayName;
298
- var DialogDescription = React23__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React23__namespace.createElement(
299
- DialogPrimitive__namespace.Description,
300
- {
301
- ref,
302
- className: chunk7Z5LLJ3A_js.cn("text-sm text-muted-foreground", className),
303
- ...props
304
- }
305
- ));
306
- DialogDescription.displayName = DialogPrimitive__namespace.Description.displayName;
307
- var AlertDialog = AlertDialogPrimitive__namespace.Root;
308
- var AlertDialogTrigger = AlertDialogPrimitive__namespace.Trigger;
309
- var AlertDialogPortal = AlertDialogPrimitive__namespace.Portal;
310
- var AlertDialogOverlay = React23__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React23__namespace.createElement(
311
- AlertDialogPrimitive__namespace.Overlay,
312
- {
313
- className: chunk7Z5LLJ3A_js.cn(
314
- "fixed inset-0 z-[50] bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",
315
- className
316
- ),
317
- ...props,
318
- ref
319
- }
320
- ));
321
- AlertDialogOverlay.displayName = AlertDialogPrimitive__namespace.Overlay.displayName;
322
- var AlertDialogContent = React23__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React23__namespace.createElement(AlertDialogPortal, null, /* @__PURE__ */ React23__namespace.createElement(AlertDialogOverlay, null), /* @__PURE__ */ React23__namespace.createElement(
323
- AlertDialogPrimitive__namespace.Content,
324
- {
325
- ref,
326
- className: chunk7Z5LLJ3A_js.cn(
327
- "fixed left-[50%] top-[50%] z-[9999] grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg",
328
- className
329
- ),
330
- ...props
331
- }
332
- )));
333
- AlertDialogContent.displayName = AlertDialogPrimitive__namespace.Content.displayName;
334
- var AlertDialogHeader = ({
335
- className,
336
- ...props
337
- }) => /* @__PURE__ */ React23__namespace.createElement(
338
- "div",
339
- {
340
- className: chunk7Z5LLJ3A_js.cn(
341
- "flex flex-col space-y-2 text-center sm:text-left",
342
- className
343
- ),
344
- ...props
345
- }
346
- );
347
- AlertDialogHeader.displayName = "AlertDialogHeader";
348
- var AlertDialogFooter = ({
349
- className,
350
- ...props
351
- }) => /* @__PURE__ */ React23__namespace.createElement(
352
- "div",
353
- {
354
- className: chunk7Z5LLJ3A_js.cn(
355
- "flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2",
356
- className
357
- ),
358
- ...props
359
- }
360
- );
361
- AlertDialogFooter.displayName = "AlertDialogFooter";
362
- var AlertDialogTitle = React23__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React23__namespace.createElement(
363
- AlertDialogPrimitive__namespace.Title,
364
- {
365
- ref,
366
- className: chunk7Z5LLJ3A_js.cn("text-lg font-semibold", className),
367
- ...props
368
- }
369
- ));
370
- AlertDialogTitle.displayName = AlertDialogPrimitive__namespace.Title.displayName;
371
- var AlertDialogDescription = React23__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React23__namespace.createElement(
372
- AlertDialogPrimitive__namespace.Description,
373
- {
374
- ref,
375
- className: chunk7Z5LLJ3A_js.cn("text-sm text-muted-foreground", className),
376
- ...props
377
- }
378
- ));
379
- AlertDialogDescription.displayName = AlertDialogPrimitive__namespace.Description.displayName;
380
- var AlertDialogAction = React23__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React23__namespace.createElement(
381
- AlertDialogPrimitive__namespace.Action,
382
- {
383
- ref,
384
- className: chunk7Z5LLJ3A_js.cn(buttonVariants(), className),
385
- ...props
386
- }
387
- ));
388
- AlertDialogAction.displayName = AlertDialogPrimitive__namespace.Action.displayName;
389
- var AlertDialogCancel = React23__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React23__namespace.createElement(
390
- AlertDialogPrimitive__namespace.Cancel,
391
- {
392
- ref,
393
- className: chunk7Z5LLJ3A_js.cn(
394
- buttonVariants({ variant: "outline" }),
395
- "mt-2 sm:mt-0",
396
- className
397
- ),
398
- ...props
399
- }
400
- ));
401
- AlertDialogCancel.displayName = AlertDialogPrimitive__namespace.Cancel.displayName;
402
- var DropdownMenu = DropdownMenuPrimitive__namespace.Root;
403
- var DropdownMenuTrigger = DropdownMenuPrimitive__namespace.Trigger;
404
- var DropdownMenuGroup = DropdownMenuPrimitive__namespace.Group;
405
- var DropdownMenuPortal = DropdownMenuPrimitive__namespace.Portal;
406
- var DropdownMenuSub = DropdownMenuPrimitive__namespace.Sub;
407
- var DropdownMenuRadioGroup = DropdownMenuPrimitive__namespace.RadioGroup;
408
- var DropdownMenuSubTrigger = React23__namespace.forwardRef(({ className, inset, children, ...props }, ref) => /* @__PURE__ */ React23__namespace.createElement(
409
- DropdownMenuPrimitive__namespace.SubTrigger,
410
- {
411
- ref,
412
- className: chunk7Z5LLJ3A_js.cn(
413
- "flex cursor-default select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent data-[state=open]:bg-accent [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",
414
- inset && "pl-8",
415
- className
416
- ),
417
- ...props
418
- },
419
- children,
420
- /* @__PURE__ */ React23__namespace.createElement(lucideReact.ChevronRight, { className: "ml-auto" })
421
- ));
422
- DropdownMenuSubTrigger.displayName = DropdownMenuPrimitive__namespace.SubTrigger.displayName;
423
- var DropdownMenuSubContent = React23__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React23__namespace.createElement(
424
- DropdownMenuPrimitive__namespace.SubContent,
425
- {
426
- ref,
427
- className: chunk7Z5LLJ3A_js.cn(
428
- "z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-lg data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-[--radix-dropdown-menu-content-transform-origin]",
429
- className
430
- ),
431
- ...props
432
- }
433
- ));
434
- DropdownMenuSubContent.displayName = DropdownMenuPrimitive__namespace.SubContent.displayName;
435
- var DropdownMenuContent = React23__namespace.forwardRef(({ className, sideOffset = 4, ...props }, ref) => /* @__PURE__ */ React23__namespace.createElement(DropdownMenuPrimitive__namespace.Portal, null, /* @__PURE__ */ React23__namespace.createElement(
436
- DropdownMenuPrimitive__namespace.Content,
437
- {
438
- ref,
439
- sideOffset,
440
- className: chunk7Z5LLJ3A_js.cn(
441
- "z-50 max-h-[var(--radix-dropdown-menu-content-available-height)] min-w-[8rem] overflow-y-auto overflow-x-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md",
442
- "data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-[--radix-dropdown-menu-content-transform-origin]",
443
- className
444
- ),
445
- ...props
446
- }
447
- )));
448
- DropdownMenuContent.displayName = DropdownMenuPrimitive__namespace.Content.displayName;
449
- var DropdownMenuItem = React23__namespace.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ React23__namespace.createElement(
450
- DropdownMenuPrimitive__namespace.Item,
451
- {
452
- ref,
453
- className: chunk7Z5LLJ3A_js.cn(
454
- "relative flex cursor-default select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&>svg]:size-4 [&>svg]:shrink-0",
455
- inset && "pl-8",
456
- className
457
- ),
458
- ...props
459
- }
460
- ));
461
- DropdownMenuItem.displayName = DropdownMenuPrimitive__namespace.Item.displayName;
462
- var DropdownMenuCheckboxItem = React23__namespace.forwardRef(({ className, children, checked, ...props }, ref) => /* @__PURE__ */ React23__namespace.createElement(
463
- DropdownMenuPrimitive__namespace.CheckboxItem,
464
- {
465
- ref,
466
- className: chunk7Z5LLJ3A_js.cn(
467
- "relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
468
- className
469
- ),
470
- checked,
471
- ...props
472
- },
473
- /* @__PURE__ */ React23__namespace.createElement("span", { className: "absolute left-2 flex h-3.5 w-3.5 items-center justify-center" }, /* @__PURE__ */ React23__namespace.createElement(DropdownMenuPrimitive__namespace.ItemIndicator, null, /* @__PURE__ */ React23__namespace.createElement(lucideReact.Check, { className: "h-4 w-4" }))),
474
- children
475
- ));
476
- DropdownMenuCheckboxItem.displayName = DropdownMenuPrimitive__namespace.CheckboxItem.displayName;
477
- var DropdownMenuRadioItem = React23__namespace.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ React23__namespace.createElement(
478
- DropdownMenuPrimitive__namespace.RadioItem,
479
- {
480
- ref,
481
- className: chunk7Z5LLJ3A_js.cn(
482
- "relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
483
- className
484
- ),
485
- ...props
486
- },
487
- /* @__PURE__ */ React23__namespace.createElement("span", { className: "absolute left-2 flex h-3.5 w-3.5 items-center justify-center" }, /* @__PURE__ */ React23__namespace.createElement(DropdownMenuPrimitive__namespace.ItemIndicator, null, /* @__PURE__ */ React23__namespace.createElement(lucideReact.Circle, { className: "h-2 w-2 fill-current" }))),
488
- children
489
- ));
490
- DropdownMenuRadioItem.displayName = DropdownMenuPrimitive__namespace.RadioItem.displayName;
491
- var DropdownMenuLabel = React23__namespace.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ React23__namespace.createElement(
492
- DropdownMenuPrimitive__namespace.Label,
493
- {
494
- ref,
495
- className: chunk7Z5LLJ3A_js.cn(
496
- "px-2 py-1.5 text-sm font-semibold",
497
- inset && "pl-8",
498
- className
499
- ),
500
- ...props
501
- }
502
- ));
503
- DropdownMenuLabel.displayName = DropdownMenuPrimitive__namespace.Label.displayName;
504
- var DropdownMenuSeparator = React23__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React23__namespace.createElement(
505
- DropdownMenuPrimitive__namespace.Separator,
506
- {
507
- ref,
508
- className: chunk7Z5LLJ3A_js.cn("-mx-1 my-1 h-px bg-muted", className),
509
- ...props
510
- }
511
- ));
512
- DropdownMenuSeparator.displayName = DropdownMenuPrimitive__namespace.Separator.displayName;
513
- var DropdownMenuShortcut = ({
514
- className,
515
- ...props
516
- }) => {
517
- return /* @__PURE__ */ React23__namespace.createElement(
518
- "span",
519
- {
520
- className: chunk7Z5LLJ3A_js.cn("ml-auto text-xs tracking-widest opacity-60", className),
521
- ...props
522
- }
523
- );
524
- };
525
- DropdownMenuShortcut.displayName = "DropdownMenuShortcut";
526
- var Popover = PopoverPrimitive__namespace.Root;
527
- var PopoverTrigger = PopoverPrimitive__namespace.Trigger;
528
- var PopoverAnchor = PopoverPrimitive__namespace.Anchor;
529
- var PopoverContent = React23__namespace.forwardRef(({ className, align = "center", sideOffset = 4, ...props }, ref) => /* @__PURE__ */ React23__namespace.createElement(PopoverPrimitive__namespace.Portal, null, /* @__PURE__ */ React23__namespace.createElement(
530
- PopoverPrimitive__namespace.Content,
531
- {
532
- ref,
533
- align,
534
- sideOffset,
535
- className: chunk7Z5LLJ3A_js.cn(
536
- "z-50 w-72 rounded-md border bg-popover p-4 text-popover-foreground shadow-md outline-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-[--radix-popover-content-transform-origin]",
537
- className
538
- ),
539
- ...props
540
- }
541
- )));
542
- PopoverContent.displayName = PopoverPrimitive__namespace.Content.displayName;
543
- var Progress = React23__namespace.forwardRef(({ className, value, ...props }, ref) => /* @__PURE__ */ React23__namespace.createElement(
544
- ProgressPrimitive__namespace.Root,
545
- {
546
- ref,
547
- className: chunk7Z5LLJ3A_js.cn(
548
- "relative h-2 w-full overflow-hidden rounded-full bg-primary/20",
549
- className
550
- ),
551
- ...props
552
- },
553
- /* @__PURE__ */ React23__namespace.createElement(
554
- ProgressPrimitive__namespace.Indicator,
555
- {
556
- className: "h-full w-full flex-1 bg-primary transition-all",
557
- style: { transform: `translateX(-${100 - (value || 0)}%)` }
558
- }
559
- )
560
- ));
561
- Progress.displayName = ProgressPrimitive__namespace.Root.displayName;
562
- var ScrollArea = React23__namespace.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ React23__namespace.createElement(
563
- ScrollAreaPrimitive__namespace.Root,
564
- {
565
- ref,
566
- className: chunk7Z5LLJ3A_js.cn("relative overflow-hidden", className),
567
- ...props
568
- },
569
- /* @__PURE__ */ React23__namespace.createElement(ScrollAreaPrimitive__namespace.Viewport, { className: "h-full w-full rounded-[inherit]" }, children),
570
- /* @__PURE__ */ React23__namespace.createElement(ScrollBar, null),
571
- /* @__PURE__ */ React23__namespace.createElement(ScrollAreaPrimitive__namespace.Corner, null)
572
- ));
573
- ScrollArea.displayName = ScrollAreaPrimitive__namespace.Root.displayName;
574
- var ScrollBar = React23__namespace.forwardRef(({ className, orientation = "vertical", ...props }, ref) => /* @__PURE__ */ React23__namespace.createElement(
575
- ScrollAreaPrimitive__namespace.ScrollAreaScrollbar,
576
- {
577
- ref,
578
- orientation,
579
- className: chunk7Z5LLJ3A_js.cn(
580
- "flex touch-none select-none transition-colors",
581
- orientation === "vertical" && "h-full w-2.5 border-l border-l-transparent p-[1px]",
582
- orientation === "horizontal" && "h-2.5 flex-col border-t border-t-transparent p-[1px]",
583
- className
584
- ),
585
- ...props
586
- },
587
- /* @__PURE__ */ React23__namespace.createElement(ScrollAreaPrimitive__namespace.ScrollAreaThumb, { className: "relative flex-1 rounded-full bg-border" })
588
- ));
589
- ScrollBar.displayName = ScrollAreaPrimitive__namespace.ScrollAreaScrollbar.displayName;
590
- var Select = SelectPrimitive__namespace.Root;
591
- var SelectGroup = SelectPrimitive__namespace.Group;
592
- var SelectValue = SelectPrimitive__namespace.Value;
593
- var SelectTrigger = React23__namespace.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ React23__namespace.createElement(
594
- SelectPrimitive__namespace.Trigger,
595
- {
596
- ref,
597
- className: chunk7Z5LLJ3A_js.cn(
598
- "flex h-9 w-full items-center justify-between whitespace-nowrap rounded-md border border-input bg-transparent px-3 py-2 text-sm shadow-sm ring-offset-background data-[placeholder]:text-muted-foreground focus:outline-none focus:ring-1 focus:ring-ring disabled:cursor-not-allowed disabled:opacity-50 [&>span]:line-clamp-1",
599
- className
600
- ),
601
- ...props
602
- },
603
- children,
604
- /* @__PURE__ */ React23__namespace.createElement(SelectPrimitive__namespace.Icon, { asChild: true }, /* @__PURE__ */ React23__namespace.createElement(lucideReact.ChevronDown, { className: "h-4 w-4 opacity-50" }))
605
- ));
606
- SelectTrigger.displayName = SelectPrimitive__namespace.Trigger.displayName;
607
- var SelectScrollUpButton = React23__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React23__namespace.createElement(
608
- SelectPrimitive__namespace.ScrollUpButton,
609
- {
610
- ref,
611
- className: chunk7Z5LLJ3A_js.cn(
612
- "flex cursor-default items-center justify-center py-1",
613
- className
614
- ),
615
- ...props
616
- },
617
- /* @__PURE__ */ React23__namespace.createElement(lucideReact.ChevronUp, { className: "h-4 w-4" })
618
- ));
619
- SelectScrollUpButton.displayName = SelectPrimitive__namespace.ScrollUpButton.displayName;
620
- var SelectScrollDownButton = React23__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React23__namespace.createElement(
621
- SelectPrimitive__namespace.ScrollDownButton,
622
- {
623
- ref,
624
- className: chunk7Z5LLJ3A_js.cn(
625
- "flex cursor-default items-center justify-center py-1",
626
- className
627
- ),
628
- ...props
629
- },
630
- /* @__PURE__ */ React23__namespace.createElement(lucideReact.ChevronDown, { className: "h-4 w-4" })
631
- ));
632
- SelectScrollDownButton.displayName = SelectPrimitive__namespace.ScrollDownButton.displayName;
633
- var SelectContent = React23__namespace.forwardRef(({ className, children, position = "popper", ...props }, ref) => /* @__PURE__ */ React23__namespace.createElement(SelectPrimitive__namespace.Portal, null, /* @__PURE__ */ React23__namespace.createElement(
634
- SelectPrimitive__namespace.Content,
635
- {
636
- ref,
637
- className: chunk7Z5LLJ3A_js.cn(
638
- "relative z-50 max-h-[--radix-select-content-available-height] min-w-[8rem] overflow-y-auto overflow-x-hidden rounded-md border bg-popover text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-[--radix-select-content-transform-origin]",
639
- position === "popper" && "data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1",
640
- className
641
- ),
642
- position,
643
- ...props
644
- },
645
- /* @__PURE__ */ React23__namespace.createElement(SelectScrollUpButton, null),
646
- /* @__PURE__ */ React23__namespace.createElement(
647
- SelectPrimitive__namespace.Viewport,
648
- {
649
- className: chunk7Z5LLJ3A_js.cn(
650
- "p-1",
651
- position === "popper" && "h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)]"
652
- )
653
- },
654
- children
655
- ),
656
- /* @__PURE__ */ React23__namespace.createElement(SelectScrollDownButton, null)
657
- )));
658
- SelectContent.displayName = SelectPrimitive__namespace.Content.displayName;
659
- var SelectLabel = React23__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React23__namespace.createElement(
660
- SelectPrimitive__namespace.Label,
661
- {
662
- ref,
663
- className: chunk7Z5LLJ3A_js.cn("px-2 py-1.5 text-sm font-semibold", className),
664
- ...props
665
- }
666
- ));
667
- SelectLabel.displayName = SelectPrimitive__namespace.Label.displayName;
668
- var SelectItem = React23__namespace.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ React23__namespace.createElement(
669
- SelectPrimitive__namespace.Item,
670
- {
671
- ref,
672
- className: chunk7Z5LLJ3A_js.cn(
673
- "relative flex w-full cursor-default select-none items-center rounded-sm py-1.5 pl-2 pr-8 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
674
- className
675
- ),
676
- ...props
677
- },
678
- /* @__PURE__ */ React23__namespace.createElement("span", { className: "absolute right-2 flex h-3.5 w-3.5 items-center justify-center" }, /* @__PURE__ */ React23__namespace.createElement(SelectPrimitive__namespace.ItemIndicator, null, /* @__PURE__ */ React23__namespace.createElement(lucideReact.Check, { className: "h-4 w-4" }))),
679
- /* @__PURE__ */ React23__namespace.createElement(SelectPrimitive__namespace.ItemText, null, children)
680
- ));
681
- SelectItem.displayName = SelectPrimitive__namespace.Item.displayName;
682
- var SelectSeparator = React23__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React23__namespace.createElement(
683
- SelectPrimitive__namespace.Separator,
684
- {
685
- ref,
686
- className: chunk7Z5LLJ3A_js.cn("-mx-1 my-1 h-px bg-muted", className),
687
- ...props
688
- }
689
- ));
690
- SelectSeparator.displayName = SelectPrimitive__namespace.Separator.displayName;
691
- var Separator3 = React23__namespace.forwardRef(
692
- ({ className, orientation = "horizontal", decorative = true, ...props }, ref) => /* @__PURE__ */ React23__namespace.createElement(
693
- SeparatorPrimitive__namespace.Root,
694
- {
695
- ref,
696
- decorative,
697
- orientation,
698
- className: chunk7Z5LLJ3A_js.cn(
699
- "shrink-0 bg-border",
700
- orientation === "horizontal" ? "h-[1px] w-full" : "h-full w-[1px]",
701
- className
702
- ),
703
- ...props
704
- }
705
- )
706
- );
707
- Separator3.displayName = SeparatorPrimitive__namespace.Root.displayName;
708
- var Sheet = DialogPrimitive__namespace.Root;
709
- var SheetTrigger = DialogPrimitive__namespace.Trigger;
710
- var SheetClose = DialogPrimitive__namespace.Close;
711
- var SheetPortal = DialogPrimitive__namespace.Portal;
712
- var SheetOverlay = React23__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React23__namespace.createElement(
713
- DialogPrimitive__namespace.Overlay,
714
- {
715
- className: chunk7Z5LLJ3A_js.cn(
716
- "fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",
717
- className
718
- ),
719
- ...props,
720
- ref
721
- }
722
- ));
723
- SheetOverlay.displayName = DialogPrimitive__namespace.Overlay.displayName;
724
- var sheetVariants = classVarianceAuthority.cva(
725
- "fixed z-50 gap-4 bg-background p-6 shadow-lg transition ease-in-out data-[state=closed]:duration-300 data-[state=open]:duration-500 data-[state=open]:animate-in data-[state=closed]:animate-out",
726
- {
727
- variants: {
728
- side: {
729
- top: "inset-x-0 top-0 border-b data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top",
730
- bottom: "inset-x-0 bottom-0 border-t data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom",
731
- left: "inset-y-0 left-0 h-full w-3/4 border-r data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left sm:max-w-sm",
732
- right: "inset-y-0 right-0 h-full w-3/4 border-l data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right sm:max-w-sm"
733
- }
734
- },
735
- defaultVariants: {
736
- side: "right"
737
- }
738
- }
739
- );
740
- var SheetContent = React23__namespace.forwardRef(({ side = "right", className, children, ...props }, ref) => /* @__PURE__ */ React23__namespace.createElement(SheetPortal, null, /* @__PURE__ */ React23__namespace.createElement(SheetOverlay, null), /* @__PURE__ */ React23__namespace.createElement(
741
- DialogPrimitive__namespace.Content,
742
- {
743
- ref,
744
- className: chunk7Z5LLJ3A_js.cn(sheetVariants({ side }), className),
745
- ...props
746
- },
747
- /* @__PURE__ */ React23__namespace.createElement(DialogPrimitive__namespace.Close, { className: "absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-secondary" }, /* @__PURE__ */ React23__namespace.createElement(lucideReact.X, { className: "h-4 w-4" }), /* @__PURE__ */ React23__namespace.createElement("span", { className: "sr-only" }, "Close")),
748
- children
749
- )));
750
- SheetContent.displayName = DialogPrimitive__namespace.Content.displayName;
751
- var SheetHeader = ({
752
- className,
753
- ...props
754
- }) => /* @__PURE__ */ React23__namespace.createElement(
755
- "div",
756
- {
757
- className: chunk7Z5LLJ3A_js.cn(
758
- "flex flex-col space-y-2 text-center sm:text-left",
759
- className
760
- ),
761
- ...props
762
- }
763
- );
764
- SheetHeader.displayName = "SheetHeader";
765
- var SheetFooter = ({
766
- className,
767
- ...props
768
- }) => /* @__PURE__ */ React23__namespace.createElement(
769
- "div",
770
- {
771
- className: chunk7Z5LLJ3A_js.cn(
772
- "flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2",
773
- className
774
- ),
775
- ...props
776
- }
777
- );
778
- SheetFooter.displayName = "SheetFooter";
779
- var SheetTitle = React23__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React23__namespace.createElement(
780
- DialogPrimitive__namespace.Title,
781
- {
782
- ref,
783
- className: chunk7Z5LLJ3A_js.cn("text-lg font-semibold text-foreground", className),
784
- ...props
785
- }
786
- ));
787
- SheetTitle.displayName = DialogPrimitive__namespace.Title.displayName;
788
- var SheetDescription = React23__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React23__namespace.createElement(
789
- DialogPrimitive__namespace.Description,
790
- {
791
- ref,
792
- className: chunk7Z5LLJ3A_js.cn("text-sm text-muted-foreground", className),
793
- ...props
794
- }
795
- ));
796
- SheetDescription.displayName = DialogPrimitive__namespace.Description.displayName;
797
- var Textarea = React23__namespace.forwardRef(({ className, ...props }, ref) => {
798
- return /* @__PURE__ */ React23__namespace.createElement(
799
- "textarea",
800
- {
801
- className: chunk7Z5LLJ3A_js.cn(
802
- "flex min-h-[60px] w-full rounded-md border border-input bg-transparent px-3 py-2 text-base shadow-sm placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 md:text-sm",
803
- className
804
- ),
805
- ref,
806
- ...props
807
- }
808
- );
809
- });
810
- Textarea.displayName = "Textarea";
811
- var TooltipProvider = TooltipPrimitive__namespace.Provider;
812
- var Tooltip = TooltipPrimitive__namespace.Root;
813
- var TooltipTrigger = TooltipPrimitive__namespace.Trigger;
814
- var TooltipContent = React23__namespace.forwardRef(({ className, sideOffset = 4, ...props }, ref) => /* @__PURE__ */ React23__namespace.createElement(TooltipPrimitive__namespace.Portal, null, /* @__PURE__ */ React23__namespace.createElement(
815
- TooltipPrimitive__namespace.Content,
816
- {
817
- ref,
818
- sideOffset,
819
- className: chunk7Z5LLJ3A_js.cn(
820
- "z-50 overflow-hidden rounded-md bg-primary px-3 py-1.5 text-xs text-primary-foreground animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-[--radix-tooltip-content-transform-origin]",
821
- className
822
- ),
823
- ...props
824
- }
825
- )));
826
- TooltipContent.displayName = TooltipPrimitive__namespace.Content.displayName;
827
- var Avatar = React23__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React23__namespace.createElement(
828
- AvatarPrimitive__namespace.Root,
829
- {
830
- ref,
831
- className: chunk7Z5LLJ3A_js.cn(
832
- "relative flex h-10 w-10 shrink-0 overflow-hidden rounded-full",
833
- className
834
- ),
835
- ...props
836
- }
837
- ));
838
- Avatar.displayName = AvatarPrimitive__namespace.Root.displayName;
839
- var AvatarImage = React23__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React23__namespace.createElement(
840
- AvatarPrimitive__namespace.Image,
841
- {
842
- ref,
843
- className: chunk7Z5LLJ3A_js.cn("aspect-square h-full w-full", className),
844
- ...props
845
- }
846
- ));
847
- AvatarImage.displayName = AvatarPrimitive__namespace.Image.displayName;
848
- var AvatarFallback = React23__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React23__namespace.createElement(
849
- AvatarPrimitive__namespace.Fallback,
850
- {
851
- ref,
852
- className: chunk7Z5LLJ3A_js.cn(
853
- "flex h-full w-full items-center justify-center rounded-full bg-muted",
854
- className
855
- ),
856
- ...props
857
- }
858
- ));
859
- AvatarFallback.displayName = AvatarPrimitive__namespace.Fallback.displayName;
860
- function buildGridColsClasses(columns) {
861
- return [
862
- "grid-cols-1",
863
- // 默认单列
864
- columns.sm ? `sm:grid-cols-${columns.sm}` : "",
865
- columns.md ? `md:grid-cols-${columns.md}` : "md:grid-cols-2",
866
- columns.lg ? `lg:grid-cols-${columns.lg}` : "lg:grid-cols-3",
867
- columns.xl ? `xl:grid-cols-${columns.xl}` : ""
868
- ].filter(Boolean).join(" ");
869
- }
870
- function getGapClassName(gap) {
871
- const gapClasses = {
872
- sm: "gap-3",
873
- md: "gap-6",
874
- lg: "gap-8",
875
- xl: "gap-10"
876
- };
877
- return gapClasses[gap];
878
- }
879
- function Grid({
880
- items,
881
- renderItem,
882
- columns = { md: 2, lg: 3 },
883
- gap = "md",
884
- className = "",
885
- style
886
- }) {
887
- const gridColsClasses = buildGridColsClasses(columns);
888
- const gapClass = getGapClassName(gap);
889
- return /* @__PURE__ */ React23__namespace.default.createElement(
890
- "div",
891
- {
892
- className: `grid ${gridColsClasses} ${gapClass} ${className}`.trim(),
893
- style
894
- },
895
- items.map((item, index) => /* @__PURE__ */ React23__namespace.default.createElement("div", { key: item.id }, renderItem(item, index)))
896
- );
897
- }
898
- var SearchBox = ({
899
- searchQuery,
900
- onSearchChange,
901
- placeholder = "\u641C\u7D22\u5B9E\u9A8C\u9879\u76EE\u7684\u6807\u9898\u3001\u63CF\u8FF0\u6216\u6807\u7B7E...",
902
- size = "large"
903
- }) => {
904
- const getSizeStyles = () => {
905
- switch (size) {
906
- case "small":
907
- return {
908
- container: "h-10",
909
- input: "pl-10 pr-10 text-sm",
910
- icon: "w-4 h-4",
911
- iconPosition: "left-3",
912
- clearButton: "right-2 w-6 h-6",
913
- clearIcon: "w-3 h-3"
914
- };
915
- case "medium":
916
- return {
917
- container: "h-12",
918
- input: "pl-12 pr-12 text-base",
919
- icon: "w-5 h-5",
920
- iconPosition: "left-3",
921
- clearButton: "right-3 w-7 h-7",
922
- clearIcon: "w-4 h-4"
923
- };
924
- case "large":
925
- default:
926
- return {
927
- container: "h-16",
928
- input: "pl-6 pr-16 text-lg",
929
- icon: "w-6 h-6",
930
- iconPosition: "left-6",
931
- clearButton: "right-4 w-8 h-8",
932
- clearIcon: "w-4 h-4"
933
- };
934
- }
935
- };
936
- const styles = getSizeStyles();
937
- const isLarge = size === "large";
938
- return /* @__PURE__ */ React23__namespace.default.createElement("div", { className: "relative group w-full" }, /* @__PURE__ */ React23__namespace.default.createElement(
939
- "input",
940
- {
941
- type: "text",
942
- placeholder,
943
- value: searchQuery,
944
- onChange: (e) => onSearchChange(e.target.value),
945
- className: `
946
- w-full ${styles.container} ${styles.input}
947
- ${isLarge ? "border-2 border-gray-200 rounded-2xl shadow-lg" : "border border-gray-300 rounded-lg shadow-sm"}
948
- bg-white
949
- focus:ring-2 focus:ring-blue-500/20 focus:border-blue-500
950
- hover:border-gray-400 ${isLarge ? "hover:shadow-xl" : "hover:shadow-md"}
951
- transition-all duration-300 ease-out
952
- text-gray-800 placeholder-gray-500
953
- ${isLarge ? "font-medium" : "font-normal"}
954
- `
955
- }
956
- ), searchQuery && /* @__PURE__ */ React23__namespace.default.createElement(
957
- "button",
958
- {
959
- onClick: () => onSearchChange(""),
960
- className: `
961
- absolute top-1/2 ${styles.clearButton} transform -translate-y-1/2
962
- z-10 group/clear
963
- `
964
- },
965
- /* @__PURE__ */ React23__namespace.default.createElement("div", { className: `
966
- ${styles.clearButton} flex items-center justify-center
967
- rounded-full
968
- bg-gray-100 hover:bg-gray-200
969
- transition-all duration-200
970
- group-hover/clear:scale-105
971
- ` }, /* @__PURE__ */ React23__namespace.default.createElement(
972
- "svg",
973
- {
974
- className: `${styles.clearIcon} text-gray-500 group-hover/clear:text-gray-700`,
975
- fill: "none",
976
- stroke: "currentColor",
977
- viewBox: "0 0 24 24"
978
- },
979
- /* @__PURE__ */ React23__namespace.default.createElement(
980
- "path",
981
- {
982
- strokeLinecap: "round",
983
- strokeLinejoin: "round",
984
- strokeWidth: 2,
985
- d: "M6 18L18 6M6 6l12 12"
986
- }
987
- )
988
- ))
989
- ));
990
- };
991
- var Timeline = ({ items = [] }) => {
992
- if (!items || items.length === 0) {
993
- return null;
994
- }
995
- return /* @__PURE__ */ React23__namespace.default.createElement("div", { className: "relative" }, /* @__PURE__ */ React23__namespace.default.createElement("div", { className: "absolute left-4 top-0 bottom-0 w-0.5 bg-gray-200" }), items.map((item, index) => /* @__PURE__ */ React23__namespace.default.createElement("div", { key: index, className: "relative pl-12 pb-8" }, /* @__PURE__ */ React23__namespace.default.createElement("div", { className: "absolute left-0 w-8 h-8 rounded-full bg-blue-500 border-4 border-white shadow-md flex items-center justify-center" }, /* @__PURE__ */ React23__namespace.default.createElement("div", { className: "w-2 h-2 rounded-full bg-white" })), /* @__PURE__ */ React23__namespace.default.createElement("div", { className: "bg-white rounded-lg p-4 shadow-md" }, /* @__PURE__ */ React23__namespace.default.createElement("div", { className: "text-sm text-gray-500 mb-2" }, item.date), /* @__PURE__ */ React23__namespace.default.createElement("h4", { className: "text-lg font-semibold mb-2" }, item.title), /* @__PURE__ */ React23__namespace.default.createElement("p", { className: "text-gray-600" }, item.description)))));
996
- };
997
- var CollisionBalls = ({
998
- collisionBallsConfig: {
999
- balls,
1000
- width,
1001
- height
1002
- }
1003
- }) => {
1004
- const canvasRef = React23.useRef(null);
1005
- const containerRef = React23.useRef(null);
1006
- const ballsRef = React23.useRef([]);
1007
- const [isShaking, setIsShaking] = React23.useState(false);
1008
- const [draggedBall, setDraggedBall] = React23.useState(null);
1009
- const [mousePos, setMousePos] = React23.useState({ x: 0, y: 0 });
1010
- const animationRef = React23.useRef(null);
1011
- const updateCanvasSize = () => {
1012
- const container = containerRef.current;
1013
- const canvas = canvasRef.current;
1014
- if (!container || !canvas) {
1015
- console.error("Container or canvas not found");
1016
- return;
1017
- }
1018
- const containerWidth = container.clientWidth;
1019
- const containerHeight = container.clientHeight;
1020
- console.log("Container size:", { containerWidth, containerHeight });
1021
- canvas.width = containerWidth;
1022
- canvas.height = containerHeight;
1023
- canvas.style.width = `${containerWidth}px`;
1024
- canvas.style.height = `${containerHeight}px`;
1025
- console.log("Canvas size updated:", {
1026
- width: canvas.width,
1027
- height: canvas.height,
1028
- containerWidth,
1029
- containerHeight
1030
- });
1031
- };
1032
- const initBalls = () => {
1033
- const canvas = canvasRef.current;
1034
- if (!canvas) {
1035
- console.error("Canvas not found during ball initialization");
1036
- return [];
1037
- }
1038
- console.log("Initializing balls with canvas size:", {
1039
- width: canvas.width,
1040
- height: canvas.height
1041
- });
1042
- return balls.map((ballConfig) => ({
1043
- x: Math.random() * (canvas.width - 100) + 50,
1044
- y: Math.random() * (canvas.height - 100) + 50,
1045
- vx: (Math.random() - 0.5) * 4,
1046
- vy: (Math.random() - 0.5) * 4,
1047
- radius: ballConfig.size,
1048
- color: ballConfig.color,
1049
- text: ballConfig.label,
1050
- isDragging: false
1051
- }));
1052
- };
1053
- React23.useEffect(() => {
1054
- const handleResize = () => {
1055
- console.log("Window resized");
1056
- updateCanvasSize();
1057
- };
1058
- if (typeof window !== "undefined") {
1059
- window.addEventListener("resize", handleResize);
1060
- updateCanvasSize();
1061
- }
1062
- return () => {
1063
- if (typeof window !== "undefined") {
1064
- window.removeEventListener("resize", handleResize);
1065
- }
1066
- };
1067
- }, []);
1068
- React23.useEffect(() => {
1069
- const canvas = canvasRef.current;
1070
- if (!canvas) {
1071
- console.error("Canvas element not found");
1072
- return;
1073
- }
1074
- const ctx = canvas.getContext("2d");
1075
- if (!ctx) {
1076
- console.error("Failed to get canvas context");
1077
- return;
1078
- }
1079
- console.log("Starting animation setup...");
1080
- updateCanvasSize();
1081
- ballsRef.current = initBalls();
1082
- console.log("Balls initialized:", ballsRef.current);
1083
- let lastTime = performance.now();
1084
- let frameCount = 0;
1085
- const animate = (currentTime) => {
1086
- try {
1087
- frameCount++;
1088
- if (currentTime - lastTime >= 1e3) {
1089
- console.log(`FPS: ${frameCount}`);
1090
- frameCount = 0;
1091
- lastTime = currentTime;
1092
- }
1093
- ctx.clearRect(0, 0, canvas.width, canvas.height);
1094
- ballsRef.current.forEach((ball) => {
1095
- if (!ball.isDragging) {
1096
- updatePosition(ball, canvas.width, canvas.height);
1097
- }
1098
- for (let i = 0; i < ballsRef.current.length; i++) {
1099
- for (let j = i + 1; j < ballsRef.current.length; j++) {
1100
- const ball1 = ballsRef.current[i];
1101
- const ball2 = ballsRef.current[j];
1102
- if (ball1 && ball2) {
1103
- checkCollision(ball1, ball2);
1104
- }
1105
- }
1106
- }
1107
- draw(ctx, ball);
1108
- });
1109
- animationRef.current = requestAnimationFrame(animate);
1110
- } catch (error) {
1111
- console.error("Animation error:", error);
1112
- }
1113
- };
1114
- console.log("Starting animation loop...");
1115
- animationRef.current = requestAnimationFrame(animate);
1116
- return () => {
1117
- console.log("Cleaning up animation...");
1118
- if (animationRef.current) {
1119
- cancelAnimationFrame(animationRef.current);
1120
- animationRef.current = null;
1121
- }
1122
- };
1123
- }, []);
1124
- const shake = () => {
1125
- setIsShaking(true);
1126
- ballsRef.current.forEach((ball) => {
1127
- ball.vx = (Math.random() - 0.5) * 10;
1128
- ball.vy = (Math.random() - 0.5) * 10;
1129
- });
1130
- setTimeout(() => setIsShaking(false), 200);
1131
- };
1132
- const slowdown = () => {
1133
- setIsShaking(true);
1134
- ballsRef.current.forEach((ball) => {
1135
- ball.vx = ball.vx * 0.5;
1136
- ball.vy = ball.vy * 0.5;
1137
- });
1138
- setTimeout(() => setIsShaking(false), 200);
1139
- };
1140
- const checkCollision = (ball1, ball2) => {
1141
- const dx = ball2.x - ball1.x;
1142
- const dy = ball2.y - ball1.y;
1143
- const distance = Math.sqrt(dx * dx + dy * dy);
1144
- if (distance < ball1.radius + ball2.radius) {
1145
- const angle = Math.atan2(dy, dx);
1146
- const overlap = (ball1.radius + ball2.radius - distance) / 2;
1147
- if (ball1.isDragging || ball2.isDragging) {
1148
- const draggedBall2 = ball1.isDragging ? ball1 : ball2;
1149
- const otherBall = ball1.isDragging ? ball2 : ball1;
1150
- otherBall.x += (draggedBall2 === ball1 ? 1 : -1) * overlap * Math.cos(angle);
1151
- otherBall.y += (draggedBall2 === ball1 ? 1 : -1) * overlap * Math.sin(angle);
1152
- const pushForce = 2;
1153
- otherBall.vx = (draggedBall2 === ball1 ? -1 : 1) * Math.cos(angle) * pushForce;
1154
- otherBall.vy = (draggedBall2 === ball1 ? -1 : 1) * Math.sin(angle) * pushForce;
1155
- return;
1156
- }
1157
- const sin = Math.sin(angle);
1158
- const cos = Math.cos(angle);
1159
- const vx1 = ball1.vx * cos + ball1.vy * sin;
1160
- const vy1 = ball1.vy * cos - ball1.vx * sin;
1161
- const vx2 = ball2.vx * cos + ball2.vy * sin;
1162
- const vy2 = ball2.vy * cos - ball2.vx * sin;
1163
- const newVx1 = vx2;
1164
- const newVx2 = vx1;
1165
- ball1.vx = newVx1 * cos - vy1 * sin;
1166
- ball1.vy = vy1 * cos + newVx1 * sin;
1167
- ball2.vx = newVx2 * cos - vy2 * sin;
1168
- ball2.vy = vy2 * cos + newVx2 * sin;
1169
- ball1.x -= overlap * Math.cos(angle);
1170
- ball1.y -= overlap * Math.sin(angle);
1171
- ball2.x += overlap * Math.cos(angle);
1172
- ball2.y += overlap * Math.sin(angle);
1173
- }
1174
- };
1175
- const updatePosition = (ball, width2, height2) => {
1176
- const handleBoundaryCollision = (velocity, position, boundary, radius) => {
1177
- let newVelocity = velocity;
1178
- let newPosition = position;
1179
- if (position - radius < 0) {
1180
- newPosition = radius;
1181
- newVelocity = Math.abs(velocity);
1182
- } else if (position + radius > boundary) {
1183
- newPosition = boundary - radius;
1184
- newVelocity = -Math.abs(velocity);
1185
- }
1186
- return [newVelocity, newPosition];
1187
- };
1188
- const [newVx, newX] = handleBoundaryCollision(
1189
- ball.vx,
1190
- ball.x,
1191
- width2,
1192
- ball.radius
1193
- );
1194
- const [newVy, newY] = handleBoundaryCollision(
1195
- ball.vy,
1196
- ball.y,
1197
- height2,
1198
- ball.radius
1199
- );
1200
- ball.vx = newVx;
1201
- ball.vy = newVy;
1202
- ball.x = newX;
1203
- ball.y = newY;
1204
- };
1205
- const draw = (ctx, ball) => {
1206
- ctx.beginPath();
1207
- ctx.arc(ball.x, ball.y, ball.radius, 0, Math.PI * 2);
1208
- ctx.fillStyle = ball.color;
1209
- ctx.fill();
1210
- ctx.closePath();
1211
- if (ball.text) {
1212
- ctx.font = "14px Arial";
1213
- ctx.fillStyle = "#fff";
1214
- ctx.textAlign = "center";
1215
- ctx.textBaseline = "middle";
1216
- ctx.fillText(ball.text, ball.x, ball.y);
1217
- }
1218
- };
1219
- const handleMouseDown = (event) => {
1220
- const mousePos2 = getMousePos(event);
1221
- const ball = ballsRef.current.find((b) => {
1222
- const dx = b.x - mousePos2.x;
1223
- const dy = b.y - mousePos2.y;
1224
- return Math.sqrt(dx * dx + dy * dy) < b.radius;
1225
- });
1226
- if (ball) {
1227
- ball.isDragging = true;
1228
- setDraggedBall(ball);
1229
- }
1230
- };
1231
- const handleMouseMove = (event) => {
1232
- const mousePos2 = getMousePos(event);
1233
- setMousePos(mousePos2);
1234
- if (draggedBall) {
1235
- draggedBall.x = mousePos2.x;
1236
- draggedBall.y = mousePos2.y;
1237
- draggedBall.vx = 0;
1238
- draggedBall.vy = 0;
1239
- }
1240
- };
1241
- const handleMouseUp = () => {
1242
- if (draggedBall) {
1243
- draggedBall.isDragging = false;
1244
- setDraggedBall(null);
1245
- }
1246
- };
1247
- const getMousePos = (event) => {
1248
- const canvas = canvasRef.current;
1249
- if (!canvas) return { x: 0, y: 0 };
1250
- const rect = canvas.getBoundingClientRect();
1251
- const scaleX = canvas.width / rect.width;
1252
- const scaleY = canvas.height / rect.height;
1253
- return {
1254
- x: (event.clientX - rect.left) * scaleX,
1255
- y: (event.clientY - rect.top) * scaleY
1256
- };
1257
- };
1258
- return /* @__PURE__ */ React23__namespace.default.createElement("div", { style: { width: "100%", height: "100%", position: "relative", backgroundColor: "#f9fafb", borderRadius: "0.5rem" } }, /* @__PURE__ */ React23__namespace.default.createElement("div", { ref: containerRef, style: { width: "100%", height: "100%", position: "absolute", top: 0, left: 0 } }, /* @__PURE__ */ React23__namespace.default.createElement(
1259
- "canvas",
1260
- {
1261
- ref: canvasRef,
1262
- style: {
1263
- width: "100%",
1264
- height: "100%",
1265
- display: "block"
1266
- // 确保canvas正确显示
1267
- },
1268
- onMouseDown: handleMouseDown,
1269
- onMouseMove: handleMouseMove,
1270
- onMouseUp: handleMouseUp,
1271
- onMouseLeave: handleMouseUp
1272
- }
1273
- )), /* @__PURE__ */ React23__namespace.default.createElement("div", { className: "absolute bottom-4 right-4 flex gap-2" }, /* @__PURE__ */ React23__namespace.default.createElement(
1274
- "button",
1275
- {
1276
- onClick: shake,
1277
- className: `px-4 py-2 bg-blue-500 text-white rounded-lg hover:bg-blue-600 transition-colors ${isShaking ? "animate-pulse" : ""}`
1278
- },
1279
- "\u6447\u4E00\u6447"
1280
- ), /* @__PURE__ */ React23__namespace.default.createElement(
1281
- "button",
1282
- {
1283
- onClick: slowdown,
1284
- className: `px-4 py-2 bg-green-500 text-white rounded-lg hover:bg-green-600 transition-colors ${isShaking ? "animate-pulse" : ""}`
1285
- },
1286
- "\u51CF\u901F"
1287
- )));
1288
- };
1289
- function GenericOrderManager({
1290
- operations,
1291
- renderItem,
1292
- className = "",
1293
- title = "\u987A\u5E8F\u7BA1\u7406",
1294
- description = "\u62D6\u62FD\u6216\u4F7F\u7528\u6309\u94AE\u8C03\u6574\u663E\u793A\u987A\u5E8F",
1295
- onOrderChanged,
1296
- emptyMessage = "\u6682\u65E0\u6570\u636E",
1297
- loadingMessage = "\u52A0\u8F7D\u6570\u636E..."
1298
- }) {
1299
- const [items, setItems] = React23.useState([]);
1300
- const [originalOrder, setOriginalOrder] = React23.useState([]);
1301
- const [loading, setLoading] = React23.useState(true);
1302
- const [saving, setSaving] = React23.useState(false);
1303
- const [error, setError] = React23.useState(null);
1304
- const [hasChanges, setHasChanges] = React23.useState(false);
1305
- const [draggedItem, setDraggedItem] = React23.useState(null);
1306
- const loadItems = React23.useCallback(async () => {
1307
- try {
1308
- setLoading(true);
1309
- setError(null);
1310
- const data = await operations.loadItems();
1311
- setItems(data);
1312
- setOriginalOrder([...data]);
1313
- setHasChanges(false);
1314
- } catch (err) {
1315
- console.error("\u274C [\u901A\u7528\u6392\u5E8F] \u52A0\u8F7D\u6570\u636E\u9519\u8BEF:", err);
1316
- setError(err instanceof Error ? err.message : "\u52A0\u8F7D\u6570\u636E\u5931\u8D25");
1317
- } finally {
1318
- setLoading(false);
1319
- }
1320
- }, [operations]);
1321
- React23.useEffect(() => {
1322
- loadItems();
1323
- }, [loadItems]);
1324
- React23.useEffect(() => {
1325
- const hasOrderChanged = items.some(
1326
- (item, index) => originalOrder[index]?.id !== item.id
1327
- );
1328
- setHasChanges(hasOrderChanged);
1329
- }, [items, originalOrder]);
1330
- const handleMoveUp = async (itemId) => {
1331
- try {
1332
- setError(null);
1333
- const currentIndex = items.findIndex((item) => item.id === itemId);
1334
- if (currentIndex === -1) {
1335
- setError("\u9879\u76EE\u4E0D\u5B58\u5728");
1336
- return;
1337
- }
1338
- if (currentIndex === 0) {
1339
- setError("\u9879\u76EE\u5DF2\u7ECF\u5728\u6700\u524D\u9762\uFF0C\u65E0\u6CD5\u4E0A\u79FB");
1340
- return;
1341
- }
1342
- await operations.moveItemUp(itemId);
1343
- await loadItems();
1344
- onOrderChanged?.();
1345
- } catch (err) {
1346
- console.error("\u274C [\u901A\u7528\u6392\u5E8F] \u4E0A\u79FB\u9879\u76EE\u9519\u8BEF:", err);
1347
- setError(err instanceof Error ? err.message : "\u4E0A\u79FB\u5931\u8D25");
1348
- }
1349
- };
1350
- const handleMoveDown = async (itemId) => {
1351
- try {
1352
- setError(null);
1353
- const currentIndex = items.findIndex((item) => item.id === itemId);
1354
- if (currentIndex === -1) {
1355
- setError("\u9879\u76EE\u4E0D\u5B58\u5728");
1356
- return;
1357
- }
1358
- if (currentIndex === items.length - 1) {
1359
- setError("\u9879\u76EE\u5DF2\u7ECF\u5728\u6700\u540E\u9762\uFF0C\u65E0\u6CD5\u4E0B\u79FB");
1360
- return;
1361
- }
1362
- await operations.moveItemDown(itemId);
1363
- await loadItems();
1364
- onOrderChanged?.();
1365
- } catch (err) {
1366
- console.error("\u274C [\u901A\u7528\u6392\u5E8F] \u4E0B\u79FB\u9879\u76EE\u9519\u8BEF:", err);
1367
- setError(err instanceof Error ? err.message : "\u4E0B\u79FB\u5931\u8D25");
1368
- }
1369
- };
1370
- const handleDragStart = (e, index) => {
1371
- setDraggedItem(index);
1372
- e.dataTransfer.effectAllowed = "move";
1373
- };
1374
- const handleDragOver = (e, _index) => {
1375
- e.preventDefault();
1376
- e.dataTransfer.dropEffect = "move";
1377
- };
1378
- const handleDrop = async (e, dropIndex) => {
1379
- e.preventDefault();
1380
- if (draggedItem === null || draggedItem === dropIndex) {
1381
- setDraggedItem(null);
1382
- return;
1383
- }
1384
- try {
1385
- setError(null);
1386
- const newItems = [...items];
1387
- const draggedItemData = newItems[draggedItem];
1388
- if (!draggedItemData) return;
1389
- newItems.splice(draggedItem, 1);
1390
- newItems.splice(dropIndex, 0, draggedItemData);
1391
- const itemOrders = newItems.map((item, index) => ({
1392
- id: item.id,
1393
- order: index
1394
- }));
1395
- await operations.updateItemOrder(itemOrders);
1396
- await loadItems();
1397
- onOrderChanged?.();
1398
- } catch (err) {
1399
- console.error("\u274C [\u901A\u7528\u6392\u5E8F] \u62D6\u62FD\u6392\u5E8F\u9519\u8BEF:", err);
1400
- setError(err instanceof Error ? err.message : "\u6392\u5E8F\u5931\u8D25");
1401
- } finally {
1402
- setDraggedItem(null);
1403
- }
1404
- };
1405
- const handleSaveOrder = async () => {
1406
- try {
1407
- setSaving(true);
1408
- setError(null);
1409
- const itemOrders = items.map((item, index) => ({
1410
- id: item.id,
1411
- order: index
1412
- }));
1413
- await operations.updateItemOrder(itemOrders);
1414
- setOriginalOrder([...items]);
1415
- setHasChanges(false);
1416
- onOrderChanged?.();
1417
- } catch (err) {
1418
- console.error("\u274C [\u901A\u7528\u6392\u5E8F] \u4FDD\u5B58\u987A\u5E8F\u9519\u8BEF:", err);
1419
- setError(err instanceof Error ? err.message : "\u4FDD\u5B58\u5931\u8D25");
1420
- await loadItems();
1421
- } finally {
1422
- setSaving(false);
1423
- }
1424
- };
1425
- const handleResetOrder = () => {
1426
- setItems([...originalOrder]);
1427
- };
1428
- if (loading) {
1429
- return /* @__PURE__ */ React23__namespace.default.createElement("div", { className: chunk7Z5LLJ3A_js.cn("flex flex-col items-center justify-center p-12 text-gray-500", className) }, /* @__PURE__ */ React23__namespace.default.createElement("div", { className: "w-6 h-6 border-2 border-gray-200 border-t-blue-500 rounded-full animate-spin mb-2" }), /* @__PURE__ */ React23__namespace.default.createElement("span", null, loadingMessage));
1430
- }
1431
- return /* @__PURE__ */ React23__namespace.default.createElement("div", { className: chunk7Z5LLJ3A_js.cn("bg-white rounded-xl p-6 shadow-md border-2 border-gray-100", className) }, /* @__PURE__ */ React23__namespace.default.createElement("div", { className: "flex items-center justify-between mb-4 pb-3 border-b border-gray-100 sm:flex-row flex-col sm:items-center items-start gap-4" }, /* @__PURE__ */ React23__namespace.default.createElement("h3", { className: "m-0 text-gray-900 text-lg font-semibold" }, title), /* @__PURE__ */ React23__namespace.default.createElement("div", { className: "flex gap-3 w-full sm:w-auto" }, hasChanges && /* @__PURE__ */ React23__namespace.default.createElement(React23__namespace.default.Fragment, null, /* @__PURE__ */ React23__namespace.default.createElement(
1432
- "button",
1433
- {
1434
- onClick: handleResetOrder,
1435
- className: "flex items-center gap-2 bg-amber-500 hover:bg-amber-600 text-white px-4 py-2 rounded-lg font-medium transition-colors",
1436
- title: "\u91CD\u7F6E\u4E3A\u539F\u59CB\u987A\u5E8F"
1437
- },
1438
- /* @__PURE__ */ React23__namespace.default.createElement(lucideReact.RotateCcw, { size: 16 }),
1439
- "\u91CD\u7F6E"
1440
- ), /* @__PURE__ */ React23__namespace.default.createElement(
1441
- "button",
1442
- {
1443
- onClick: handleSaveOrder,
1444
- disabled: saving,
1445
- className: "flex items-center gap-2 bg-blue-500 hover:bg-blue-600 disabled:opacity-50 disabled:cursor-not-allowed text-white px-4 py-2 rounded-lg font-medium transition-colors",
1446
- title: "\u4FDD\u5B58\u65B0\u987A\u5E8F"
1447
- },
1448
- /* @__PURE__ */ React23__namespace.default.createElement(lucideReact.Save, { size: 16 }),
1449
- saving ? "\u4FDD\u5B58\u4E2D..." : "\u4FDD\u5B58\u987A\u5E8F"
1450
- )))), error && /* @__PURE__ */ React23__namespace.default.createElement("div", { className: "flex items-center gap-2 bg-red-50 text-red-600 p-3 rounded-lg mb-4 border border-red-200" }, /* @__PURE__ */ React23__namespace.default.createElement(lucideReact.AlertCircle, { size: 16 }), /* @__PURE__ */ React23__namespace.default.createElement("span", null, error)), /* @__PURE__ */ React23__namespace.default.createElement("div", { className: "bg-slate-50 border border-slate-200 rounded-lg p-4 mb-6" }, /* @__PURE__ */ React23__namespace.default.createElement("p", { className: "m-0 mb-2 color-slate-500 text-sm" }, description), /* @__PURE__ */ React23__namespace.default.createElement("ul", { className: "m-0 pl-6 color-slate-500 text-sm list-disc" }, /* @__PURE__ */ React23__namespace.default.createElement("li", { className: "mb-1" }, "\u4F7F\u7528\u62D6\u62FD\uFF1A\u70B9\u51FB\u5E76\u62D6\u52A8 ", /* @__PURE__ */ React23__namespace.default.createElement(lucideReact.GripVertical, { size: 14, className: "inline-block align-middle text-gray-500" }), " \u56FE\u6807"), /* @__PURE__ */ React23__namespace.default.createElement("li", { className: "mb-1" }, "\u4F7F\u7528\u6309\u94AE\uFF1A\u70B9\u51FB ", /* @__PURE__ */ React23__namespace.default.createElement(lucideReact.ChevronUp, { size: 14, className: "inline-block align-middle text-gray-500" }), " \u6216 ", /* @__PURE__ */ React23__namespace.default.createElement(lucideReact.ChevronDown, { size: 14, className: "inline-block align-middle text-gray-500" }), " \u6309\u94AE"), /* @__PURE__ */ React23__namespace.default.createElement("li", null, '\u5B8C\u6210\u8C03\u6574\u540E\uFF0C\u70B9\u51FB"\u4FDD\u5B58\u987A\u5E8F"\u6309\u94AE\u4FDD\u5B58\u66F4\u6539'))), /* @__PURE__ */ React23__namespace.default.createElement("div", { className: "flex flex-col gap-3" }, items.map((item, index) => /* @__PURE__ */ React23__namespace.default.createElement(
1451
- "div",
1452
- {
1453
- key: item.id,
1454
- className: chunk7Z5LLJ3A_js.cn(
1455
- "flex items-center gap-3 p-4 bg-gray-50 border-2 border-gray-200 rounded-lg transition-all hover:border-gray-300 hover:shadow-sm",
1456
- draggedItem === index && "opacity-50 rotate-2 border-blue-500"
1457
- ),
1458
- draggable: true,
1459
- onDragStart: (e) => handleDragStart(e, index),
1460
- onDragOver: (e) => handleDragOver(e),
1461
- onDrop: (e) => handleDrop(e, index)
1462
- },
1463
- /* @__PURE__ */ React23__namespace.default.createElement("div", { className: "flex items-center cursor-grab active:cursor-grabbing text-gray-400 p-1 rounded hover:text-gray-500 hover:bg-gray-100 transition-colors" }, /* @__PURE__ */ React23__namespace.default.createElement(lucideReact.GripVertical, { size: 20 })),
1464
- /* @__PURE__ */ React23__namespace.default.createElement("div", { className: "flex-1 min-w-0" }, renderItem(item, index, index === 0, index === items.length - 1)),
1465
- /* @__PURE__ */ React23__namespace.default.createElement("div", { className: "flex items-center mx-3" }, /* @__PURE__ */ React23__namespace.default.createElement("span", { className: "flex items-center justify-center w-8 h-8 bg-blue-500 text-white text-sm font-semibold rounded-full sm:w-8 sm:h-8 w-7 h-7 sm:text-sm text-xs" }, "#", index + 1)),
1466
- /* @__PURE__ */ React23__namespace.default.createElement("div", { className: "flex flex-col gap-1 sm:flex-col flex-row" }, /* @__PURE__ */ React23__namespace.default.createElement(
1467
- "button",
1468
- {
1469
- onClick: () => handleMoveUp(item.id),
1470
- disabled: index === 0,
1471
- className: "flex items-center justify-center w-8 h-8 p-0 border border-gray-300 bg-white text-gray-500 rounded cursor-pointer transition-all hover:bg-gray-100 hover:border-gray-400 hover:text-gray-700 disabled:opacity-40 disabled:cursor-not-allowed disabled:bg-gray-50 sm:w-8 sm:h-8 w-7 h-7",
1472
- title: "\u4E0A\u79FB"
1473
- },
1474
- /* @__PURE__ */ React23__namespace.default.createElement(lucideReact.ChevronUp, { size: 18 })
1475
- ), /* @__PURE__ */ React23__namespace.default.createElement(
1476
- "button",
1477
- {
1478
- onClick: () => handleMoveDown(item.id),
1479
- disabled: index === items.length - 1,
1480
- className: "flex items-center justify-center w-8 h-8 p-0 border border-gray-300 bg-white text-gray-500 rounded cursor-pointer transition-all hover:bg-gray-100 hover:border-gray-400 hover:text-gray-700 disabled:opacity-40 disabled:cursor-not-allowed disabled:bg-gray-50 sm:w-8 sm:h-8 w-7 h-7",
1481
- title: "\u4E0B\u79FB"
1482
- },
1483
- /* @__PURE__ */ React23__namespace.default.createElement(lucideReact.ChevronDown, { size: 18 })
1484
- ))
1485
- ))), items.length === 0 && /* @__PURE__ */ React23__namespace.default.createElement("div", { className: "text-center p-12 text-gray-400 italic" }, /* @__PURE__ */ React23__namespace.default.createElement("p", { className: "m-0" }, emptyMessage)));
1486
- }
1487
- var BackButton = ({ href, className = "" }) => {
1488
- const router = navigation.useRouter();
1489
- const handleClick = () => {
1490
- if (href) {
1491
- router.push(href);
1492
- } else {
1493
- router.back();
1494
- }
1495
- };
1496
- return /* @__PURE__ */ React23__namespace.default.createElement(
1497
- "button",
1498
- {
1499
- onClick: handleClick,
1500
- className: chunk7Z5LLJ3A_js.cn(
1501
- "inline-flex items-center px-4 py-2 text-sm font-medium text-gray-700 bg-white border border-gray-300 rounded-md hover:bg-gray-50 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-blue-500 transition-colors",
1502
- className
1503
- )
1504
- },
1505
- /* @__PURE__ */ React23__namespace.default.createElement(
1506
- "svg",
1507
- {
1508
- className: "w-5 h-5 mr-2",
1509
- fill: "none",
1510
- stroke: "currentColor",
1511
- viewBox: "0 0 24 24"
1512
- },
1513
- /* @__PURE__ */ React23__namespace.default.createElement(
1514
- "path",
1515
- {
1516
- strokeLinecap: "round",
1517
- strokeLinejoin: "round",
1518
- strokeWidth: 2,
1519
- d: "M10 19l-7-7m0 0l7-7m-7 7h18"
1520
- }
1521
- )
1522
- ),
1523
- "\u8FD4\u56DE"
1524
- );
1525
- };
1526
- function getColorValue(bgClass) {
1527
- const colorMap = {
1528
- "bg-blue-500": "#3b82f6",
1529
- "bg-green-500": "#10b981",
1530
- "bg-red-500": "#ef4444",
1531
- "bg-purple-500": "#8b5cf6",
1532
- "bg-slate-500": "#64748b",
1533
- "bg-emerald-500": "#10b981",
1534
- "bg-orange-500": "#f97316"
1535
- };
1536
- return colorMap[bgClass] || "#3b82f6";
1537
- }
1538
- function FilterButtonGroup({
1539
- label,
1540
- value,
1541
- options,
1542
- onChange,
1543
- className
1544
- }) {
1545
- return /* @__PURE__ */ React23__namespace.default.createElement("div", { className: chunk7Z5LLJ3A_js.cn("space-y-4", className) }, /* @__PURE__ */ React23__namespace.default.createElement("h3", { className: "text-lg font-semibold text-gray-800" }, label), /* @__PURE__ */ React23__namespace.default.createElement("div", { className: "flex gap-3" }, options.map((option) => {
1546
- const isActive = value === option.value;
1547
- return /* @__PURE__ */ React23__namespace.default.createElement(
1548
- "button",
1549
- {
1550
- key: option.value,
1551
- onClick: () => onChange(option.value),
1552
- style: isActive ? { backgroundColor: getColorValue(option.activeColor.bg) } : void 0,
1553
- className: chunk7Z5LLJ3A_js.cn(
1554
- "flex-1 h-12 rounded-lg font-medium text-sm transition-all duration-200 ease-out focus:outline-none focus:ring-2 focus:ring-opacity-50 border",
1555
- isActive ? "text-white border-transparent shadow-md focus:ring-white" : "bg-white text-gray-700 border-gray-200 shadow-sm hover:bg-gray-50 hover:border-gray-300 hover:shadow focus:ring-blue-300"
1556
- )
1557
- },
1558
- /* @__PURE__ */ React23__namespace.default.createElement("div", { className: "flex items-center justify-center space-x-2" }, /* @__PURE__ */ React23__namespace.default.createElement("span", { className: "text-lg" }, option.icon), /* @__PURE__ */ React23__namespace.default.createElement("span", null, option.label), option.showCount && option.count !== void 0 && /* @__PURE__ */ React23__namespace.default.createElement("span", { className: chunk7Z5LLJ3A_js.cn(
1559
- "text-xs font-semibold px-2 py-0.5 rounded-full min-w-[1.25rem] text-center",
1560
- isActive ? "bg-white/20 text-white" : "bg-gray-100 text-gray-600"
1561
- ) }, option.count))
1562
- );
1563
- })));
1564
- }
1565
- function SearchResultHint({ searchQuery, resultCount, className }) {
1566
- if (!searchQuery) return null;
1567
- return /* @__PURE__ */ React23__namespace.default.createElement("div", { className: chunk7Z5LLJ3A_js.cn("mb-6 p-4 bg-blue-50 border border-blue-200 rounded-lg", className) }, /* @__PURE__ */ React23__namespace.default.createElement("p", { className: "text-sm text-blue-700" }, '\u641C\u7D22 "', /* @__PURE__ */ React23__namespace.default.createElement("span", { className: "font-medium" }, searchQuery), '" \u627E\u5230 ', resultCount, " \u4E2A\u7ED3\u679C"));
1568
- }
1569
- var Modal = ({
1570
- isOpen,
1571
- onClose,
1572
- title,
1573
- width,
1574
- className,
1575
- maskClosable = true,
1576
- children,
1577
- zIndex = 50
1578
- }) => {
1579
- return /* @__PURE__ */ React23__namespace.default.createElement(Dialog, { open: isOpen, onOpenChange: (open) => {
1580
- if (!open) {
1581
- if (maskClosable) {
1582
- onClose();
1583
- }
1584
- }
1585
- } }, /* @__PURE__ */ React23__namespace.default.createElement(
1586
- DialogContent,
1587
- {
1588
- className: chunk7Z5LLJ3A_js.cn("sm:max-w-[425px]", className) + ` z-[${zIndex}]`,
1589
- onPointerDownOutside: (e) => {
1590
- if (!maskClosable) e.preventDefault();
1591
- },
1592
- onEscapeKeyDown: (e) => {
1593
- if (!maskClosable) e.preventDefault();
1594
- },
1595
- style: width ? { maxWidth: typeof width === "number" ? `${width}px` : width } : void 0
1596
- },
1597
- title ? /* @__PURE__ */ React23__namespace.default.createElement(DialogHeader, null, /* @__PURE__ */ React23__namespace.default.createElement(DialogTitle, null, title)) : (
1598
- // 无障碍性:始终需要 DialogTitle,使用 sr-only 对视觉隐藏但对屏幕阅读器可见
1599
- /* @__PURE__ */ React23__namespace.default.createElement(DialogTitle, { className: "sr-only" }, "\u5F39\u7A97")
1600
- ),
1601
- /* @__PURE__ */ React23__namespace.default.createElement("div", { className: "py-4" }, children)
1602
- ));
1603
- };
1604
- var ConfirmModal = ({
1605
- isOpen,
1606
- onClose,
1607
- onConfirm,
1608
- title = "\u786E\u8BA4\u64CD\u4F5C",
1609
- message,
1610
- confirmText = "\u786E\u8BA4",
1611
- cancelText = "\u53D6\u6D88",
1612
- isLoading = false
1613
- }) => {
1614
- return /* @__PURE__ */ React23__namespace.default.createElement(AlertDialog, { open: isOpen, onOpenChange: (open) => !open && onClose() }, /* @__PURE__ */ React23__namespace.default.createElement(AlertDialogContent, null, /* @__PURE__ */ React23__namespace.default.createElement(AlertDialogHeader, null, /* @__PURE__ */ React23__namespace.default.createElement(AlertDialogTitle, null, title), /* @__PURE__ */ React23__namespace.default.createElement(AlertDialogDescription, null, message)), /* @__PURE__ */ React23__namespace.default.createElement(AlertDialogFooter, null, /* @__PURE__ */ React23__namespace.default.createElement(AlertDialogCancel, { disabled: isLoading }, cancelText), /* @__PURE__ */ React23__namespace.default.createElement(
1615
- AlertDialogAction,
1616
- {
1617
- onClick: (e) => {
1618
- e.preventDefault();
1619
- onConfirm();
1620
- },
1621
- disabled: isLoading,
1622
- className: "bg-destructive text-destructive-foreground hover:bg-destructive/90"
1623
- },
1624
- isLoading ? "\u5904\u7406\u4E2D..." : confirmText
1625
- ))));
1626
- };
1627
-
1628
- exports.AlertDialog = AlertDialog;
1629
- exports.AlertDialogAction = AlertDialogAction;
1630
- exports.AlertDialogCancel = AlertDialogCancel;
1631
- exports.AlertDialogContent = AlertDialogContent;
1632
- exports.AlertDialogDescription = AlertDialogDescription;
1633
- exports.AlertDialogFooter = AlertDialogFooter;
1634
- exports.AlertDialogHeader = AlertDialogHeader;
1635
- exports.AlertDialogOverlay = AlertDialogOverlay;
1636
- exports.AlertDialogPortal = AlertDialogPortal;
1637
- exports.AlertDialogTitle = AlertDialogTitle;
1638
- exports.AlertDialogTrigger = AlertDialogTrigger;
1639
- exports.Avatar = Avatar;
1640
- exports.AvatarFallback = AvatarFallback;
1641
- exports.AvatarImage = AvatarImage;
1642
- exports.BackButton = BackButton;
1643
- exports.Badge = Badge;
1644
- exports.Button = Button;
1645
- exports.Card = Card;
1646
- exports.CardContent = CardContent;
1647
- exports.CardDescription = CardDescription;
1648
- exports.CardFooter = CardFooter;
1649
- exports.CardHeader = CardHeader;
1650
- exports.CardTitle = CardTitle;
1651
- exports.CollisionBalls = CollisionBalls;
1652
- exports.ConfirmModal = ConfirmModal;
1653
- exports.Dialog = Dialog;
1654
- exports.DialogClose = DialogClose;
1655
- exports.DialogContent = DialogContent;
1656
- exports.DialogDescription = DialogDescription;
1657
- exports.DialogFooter = DialogFooter;
1658
- exports.DialogHeader = DialogHeader;
1659
- exports.DialogOverlay = DialogOverlay;
1660
- exports.DialogPortal = DialogPortal;
1661
- exports.DialogTitle = DialogTitle;
1662
- exports.DialogTrigger = DialogTrigger;
1663
- exports.DropdownMenu = DropdownMenu;
1664
- exports.DropdownMenuCheckboxItem = DropdownMenuCheckboxItem;
1665
- exports.DropdownMenuContent = DropdownMenuContent;
1666
- exports.DropdownMenuGroup = DropdownMenuGroup;
1667
- exports.DropdownMenuItem = DropdownMenuItem;
1668
- exports.DropdownMenuLabel = DropdownMenuLabel;
1669
- exports.DropdownMenuPortal = DropdownMenuPortal;
1670
- exports.DropdownMenuRadioGroup = DropdownMenuRadioGroup;
1671
- exports.DropdownMenuRadioItem = DropdownMenuRadioItem;
1672
- exports.DropdownMenuSeparator = DropdownMenuSeparator;
1673
- exports.DropdownMenuShortcut = DropdownMenuShortcut;
1674
- exports.DropdownMenuSub = DropdownMenuSub;
1675
- exports.DropdownMenuSubContent = DropdownMenuSubContent;
1676
- exports.DropdownMenuSubTrigger = DropdownMenuSubTrigger;
1677
- exports.DropdownMenuTrigger = DropdownMenuTrigger;
1678
- exports.FilterButtonGroup = FilterButtonGroup;
1679
- exports.GenericOrderManager = GenericOrderManager;
1680
- exports.Grid = Grid;
1681
- exports.Input = Input;
1682
- exports.Label = Label;
1683
- exports.Modal = Modal;
1684
- exports.Popover = Popover;
1685
- exports.PopoverAnchor = PopoverAnchor;
1686
- exports.PopoverContent = PopoverContent;
1687
- exports.PopoverTrigger = PopoverTrigger;
1688
- exports.Progress = Progress;
1689
- exports.ScrollArea = ScrollArea;
1690
- exports.ScrollBar = ScrollBar;
1691
- exports.SearchBox = SearchBox;
1692
- exports.SearchResultHint = SearchResultHint;
1693
- exports.Select = Select;
1694
- exports.SelectContent = SelectContent;
1695
- exports.SelectGroup = SelectGroup;
1696
- exports.SelectItem = SelectItem;
1697
- exports.SelectLabel = SelectLabel;
1698
- exports.SelectScrollDownButton = SelectScrollDownButton;
1699
- exports.SelectScrollUpButton = SelectScrollUpButton;
1700
- exports.SelectSeparator = SelectSeparator;
1701
- exports.SelectTrigger = SelectTrigger;
1702
- exports.SelectValue = SelectValue;
1703
- exports.Separator = Separator3;
1704
- exports.Sheet = Sheet;
1705
- exports.SheetClose = SheetClose;
1706
- exports.SheetContent = SheetContent;
1707
- exports.SheetDescription = SheetDescription;
1708
- exports.SheetFooter = SheetFooter;
1709
- exports.SheetHeader = SheetHeader;
1710
- exports.SheetOverlay = SheetOverlay;
1711
- exports.SheetPortal = SheetPortal;
1712
- exports.SheetTitle = SheetTitle;
1713
- exports.SheetTrigger = SheetTrigger;
1714
- exports.Tabs = Tabs;
1715
- exports.TabsContent = TabsContent;
1716
- exports.TabsList = TabsList;
1717
- exports.TabsTrigger = TabsTrigger;
1718
- exports.Textarea = Textarea;
1719
- exports.Timeline = Timeline;
1720
- exports.Tooltip = Tooltip;
1721
- exports.TooltipContent = TooltipContent;
1722
- exports.TooltipProvider = TooltipProvider;
1723
- exports.TooltipTrigger = TooltipTrigger;
1724
- exports.badgeVariants = badgeVariants;
1725
- exports.buttonVariants = buttonVariants;
1726
- //# sourceMappingURL=chunk-DW2ZTOCV.js.map
1727
- //# sourceMappingURL=chunk-DW2ZTOCV.js.map