@fangxinyan/lumina 0.6.0 → 0.6.1

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 (324) hide show
  1. package/dist/Accordion.cjs +3 -5
  2. package/dist/Accordion.js +2 -4
  3. package/dist/Alert.cjs +3 -5
  4. package/dist/Alert.js +2 -4
  5. package/dist/AppShell.cjs +5 -7
  6. package/dist/AppShell.js +1 -3
  7. package/dist/AutoComplete.cjs +5 -7
  8. package/dist/AutoComplete.js +4 -6
  9. package/dist/Avatar.cjs +2 -4
  10. package/dist/Avatar.js +1 -3
  11. package/dist/Button.cjs +4 -6
  12. package/dist/Button.js +2 -4
  13. package/dist/Calendar.cjs +3 -5
  14. package/dist/Calendar.js +2 -4
  15. package/dist/Card.cjs +3 -5
  16. package/dist/Card.js +1 -3
  17. package/dist/Cascader.cjs +4 -6
  18. package/dist/Cascader.js +3 -5
  19. package/dist/Checkbox.cjs +4 -6
  20. package/dist/Checkbox.js +2 -4
  21. package/dist/ColorPicker.cjs +3 -5
  22. package/dist/ColorPicker.js +2 -4
  23. package/dist/CommandPalette.cjs +4 -6
  24. package/dist/CommandPalette.js +3 -5
  25. package/dist/ContextMenu.cjs +2 -4
  26. package/dist/ContextMenu.js +1 -3
  27. package/dist/Divider.cjs +2 -4
  28. package/dist/Divider.js +1 -3
  29. package/dist/Drawer.cjs +3 -5
  30. package/dist/Drawer.js +2 -4
  31. package/dist/Empty.cjs +4 -6
  32. package/dist/Empty.js +1 -3
  33. package/dist/Form.cjs +4 -6
  34. package/dist/Form.js +1 -3
  35. package/dist/Icon.cjs +3 -5
  36. package/dist/Icon.js +1 -3
  37. package/dist/Image.cjs +4 -6
  38. package/dist/Image.js +2 -4
  39. package/dist/Input.cjs +4 -6
  40. package/dist/Input.js +2 -4
  41. package/dist/InputNumber.cjs +4 -6
  42. package/dist/InputNumber.js +3 -5
  43. package/dist/List.cjs +2 -4
  44. package/dist/List.js +1 -3
  45. package/dist/Modal.cjs +4 -6
  46. package/dist/Modal.js +3 -5
  47. package/dist/Pagination.cjs +6 -8
  48. package/dist/Pagination.js +5 -7
  49. package/dist/Popover.cjs +3 -5
  50. package/dist/Popover.js +2 -4
  51. package/dist/Progress.cjs +2 -4
  52. package/dist/Progress.js +1 -3
  53. package/dist/Select.cjs +5 -7
  54. package/dist/Select.js +4 -6
  55. package/dist/Slider.cjs +2 -4
  56. package/dist/Slider.js +1 -3
  57. package/dist/Splitter.cjs +2 -4
  58. package/dist/Splitter.js +1 -3
  59. package/dist/StatusBar.cjs +3 -5
  60. package/dist/StatusBar.js +1 -3
  61. package/dist/Switch.cjs +2 -4
  62. package/dist/Switch.js +1 -3
  63. package/dist/Table.cjs +9 -11
  64. package/dist/Table.js +7 -9
  65. package/dist/Tabs.cjs +3 -5
  66. package/dist/Tabs.js +1 -3
  67. package/dist/Tag.cjs +4 -6
  68. package/dist/Tag.js +2 -4
  69. package/dist/Theme.cjs +10 -12
  70. package/dist/Theme.js +1 -3
  71. package/dist/Timeline.cjs +3 -5
  72. package/dist/Timeline.js +2 -4
  73. package/dist/Toast.cjs +4 -6
  74. package/dist/Toast.js +2 -4
  75. package/dist/Tooltip.cjs +3 -5
  76. package/dist/Tooltip.js +2 -4
  77. package/dist/Typography.cjs +7 -9
  78. package/dist/Typography.js +2 -4
  79. package/dist/{chunk-DH4NYYJP.cjs → chunk-2MNAZRWE.cjs} +2 -2
  80. package/dist/{chunk-74VZZAUT.cjs → chunk-2TL37AP5.cjs} +0 -2
  81. package/dist/{chunk-WFFWVQK4.cjs → chunk-32HBMXXV.cjs} +5 -7
  82. package/dist/{chunk-JS6U7UQS.js → chunk-3D77MQHO.js} +1 -3
  83. package/dist/{chunk-HHSVGNJA.cjs → chunk-3TWNBJFI.cjs} +5 -7
  84. package/dist/{chunk-4SCDDSXY.js → chunk-3XTHKAEY.js} +0 -2
  85. package/dist/{chunk-XYGRVPUA.js → chunk-4WRE4HQP.js} +1 -3
  86. package/dist/{chunk-4XSP4HHZ.js → chunk-54YLXXS2.js} +1 -3
  87. package/dist/{chunk-A3IJM7IX.js → chunk-5A3RT4KD.js} +0 -2
  88. package/dist/{chunk-3LJO33HI.js → chunk-5C2AI2SD.js} +0 -2
  89. package/dist/{chunk-FCIPCZAK.cjs → chunk-5JSDQ6QQ.cjs} +0 -2
  90. package/dist/{chunk-4JHFGSNH.js → chunk-5M26OVVY.js} +1 -3
  91. package/dist/{chunk-JF2WNLPF.cjs → chunk-62GU4OHH.cjs} +4 -6
  92. package/dist/{chunk-E6K6GYUC.js → chunk-65FIH5A3.js} +0 -2
  93. package/dist/{chunk-DCX36FYD.js → chunk-6BWELOCT.js} +0 -2
  94. package/dist/{chunk-V5KSJITO.cjs → chunk-6ODY6MGL.cjs} +5 -7
  95. package/dist/{chunk-4DNHASZU.js → chunk-6Y5WRCPW.js} +1 -3
  96. package/dist/{chunk-2LIX7ZHX.js → chunk-6YQTMI55.js} +0 -2
  97. package/dist/{chunk-MXIWTYNC.js → chunk-73RQBWWW.js} +2 -4
  98. package/dist/{chunk-SREMTSVI.cjs → chunk-7ABFUIOB.cjs} +0 -2
  99. package/dist/{chunk-2TZ2R7L2.js → chunk-7JN6FJ55.js} +0 -2
  100. package/dist/{chunk-Y7BZMMAV.cjs → chunk-7PNJI5UE.cjs} +0 -2
  101. package/dist/{chunk-KWE2PXJQ.js → chunk-7PQJCLIR.js} +0 -2
  102. package/dist/{chunk-T7ZBJJC4.js → chunk-D46EM4EN.js} +1 -3
  103. package/dist/{chunk-PX5ABNKV.js → chunk-DOMYUGJY.js} +2 -4
  104. package/dist/{chunk-ZZXNHPF3.js → chunk-DPNDHNKK.js} +1 -3
  105. package/dist/{chunk-ANAQER3T.js → chunk-DUFRASGO.js} +0 -2
  106. package/dist/{chunk-MU4GGX6C.cjs → chunk-EBNRZRWY.cjs} +5 -7
  107. package/dist/{chunk-EARCKSI7.js → chunk-EC4WGEAJ.js} +0 -2
  108. package/dist/{chunk-474MXYO5.cjs → chunk-EEMWQX3C.cjs} +2 -4
  109. package/dist/{chunk-ZM4P6ELG.cjs → chunk-FIO65XYG.cjs} +14 -16
  110. package/dist/{chunk-RNVE2LMJ.cjs → chunk-G2K6ETP4.cjs} +2 -4
  111. package/dist/{chunk-XMINE4TN.cjs → chunk-G2XK57I7.cjs} +5 -7
  112. package/dist/{chunk-AXRABZLY.cjs → chunk-GNEZD7KE.cjs} +0 -2
  113. package/dist/{chunk-YVSZLQTQ.cjs → chunk-GOBWKQCX.cjs} +2 -4
  114. package/dist/{chunk-TC5ZL2OS.cjs → chunk-GY3BSHHS.cjs} +0 -2
  115. package/dist/{chunk-FSOJHDXH.js → chunk-HBWO3QKW.js} +1 -3
  116. package/dist/{chunk-YRAQRENN.js → chunk-IW5LW6XS.js} +1 -3
  117. package/dist/{chunk-N6ZLZUBF.cjs → chunk-IZOHYJUQ.cjs} +0 -2
  118. package/dist/{chunk-DUNQNSVK.js → chunk-JVS5ZALZ.js} +2 -4
  119. package/dist/{chunk-X3QINITU.js → chunk-K6F25JXT.js} +1 -3
  120. package/dist/{chunk-ZHCQEJ2Z.js → chunk-KLEKKZ73.js} +0 -2
  121. package/dist/{chunk-P4CGE5C7.cjs → chunk-KYEY2LIB.cjs} +4 -6
  122. package/dist/{chunk-FBQLNAUI.cjs → chunk-LIGHV4RC.cjs} +2 -4
  123. package/dist/{chunk-QRSPBK3X.js → chunk-LKK2AA7W.js} +0 -2
  124. package/dist/{chunk-QCNHDDSD.cjs → chunk-LZU33BX6.cjs} +3 -5
  125. package/dist/{chunk-6CAEGNCK.js → chunk-MCTIA6RZ.js} +1 -3
  126. package/dist/{chunk-S3OSBW7R.cjs → chunk-N57NXCNC.cjs} +2 -4
  127. package/dist/{chunk-HQO7EZNQ.cjs → chunk-NC4YUEXM.cjs} +6 -8
  128. package/dist/{chunk-BSHHQOFY.js → chunk-NJ6B22YJ.js} +2 -2
  129. package/dist/{chunk-W6I67HQQ.js → chunk-NN25YMOL.js} +0 -2
  130. package/dist/{chunk-6TRVGFFX.cjs → chunk-OF7JIYBY.cjs} +2 -4
  131. package/dist/{chunk-V24B7KWT.cjs → chunk-OFGDUCT7.cjs} +3 -5
  132. package/dist/{chunk-LSQD2GFA.js → chunk-OI3CWXT3.js} +2 -4
  133. package/dist/{chunk-2TNJ7TC4.cjs → chunk-OVZTG5CP.cjs} +2 -4
  134. package/dist/{chunk-3EGZ6TBF.cjs → chunk-PL6DRFUO.cjs} +0 -2
  135. package/dist/{chunk-NRP3X3PE.cjs → chunk-PWW64ZWO.cjs} +0 -2
  136. package/dist/{chunk-KA3XLPQJ.cjs → chunk-Q2KG6SQK.cjs} +3 -5
  137. package/dist/{chunk-SWB57EA2.js → chunk-QCILPZWP.js} +0 -2
  138. package/dist/{chunk-5VIOJW6M.js → chunk-R6BIF3FF.js} +4 -6
  139. package/dist/{chunk-Q7CDWNM6.cjs → chunk-RF2EY5JS.cjs} +0 -2
  140. package/dist/{chunk-RHZOBQON.js → chunk-RPFMQZA5.js} +3 -5
  141. package/dist/{chunk-2K5HZLXW.cjs → chunk-S3VXH5L4.cjs} +0 -2
  142. package/dist/{chunk-RXL26GSI.cjs → chunk-SWBWZIL4.cjs} +0 -2
  143. package/dist/{chunk-ZN6VS6SO.js → chunk-TGHBKKSS.js} +1 -3
  144. package/dist/{chunk-D242UJZO.js → chunk-TWGQZX2R.js} +1 -3
  145. package/dist/{chunk-WLFMOWUY.js → chunk-ULOJ5UEY.js} +1 -3
  146. package/dist/{chunk-DB5JMXOI.js → chunk-UXH5PH3S.js} +2 -4
  147. package/dist/{chunk-MUFMJPRT.cjs → chunk-W64ARHLJ.cjs} +0 -2
  148. package/dist/{chunk-CVEGVB2C.js → chunk-WBK6XIDJ.js} +0 -2
  149. package/dist/{chunk-XXE5TQ7I.cjs → chunk-WNM5RVXR.cjs} +0 -2
  150. package/dist/{chunk-ZPDMAMWC.js → chunk-WRDKOSSM.js} +1 -3
  151. package/dist/{chunk-ZA36BJIY.cjs → chunk-X2U7EKCS.cjs} +2 -4
  152. package/dist/{chunk-44AVDO3T.js → chunk-XRR3CYQL.js} +0 -2
  153. package/dist/{chunk-IL523MTN.cjs → chunk-Y3ZSG3SJ.cjs} +12 -14
  154. package/dist/{chunk-JAGJQDAV.cjs → chunk-Y47YTYQ3.cjs} +5 -7
  155. package/dist/{chunk-3XIDJEYR.cjs → chunk-YB3IWIOJ.cjs} +0 -2
  156. package/dist/{chunk-EHZXEZI2.cjs → chunk-YLIQ37KY.cjs} +0 -2
  157. package/dist/{chunk-6FSOJLY6.js → chunk-YRZGXXWA.js} +1 -3
  158. package/dist/{chunk-XMFVAYBP.cjs → chunk-ZFW6OYAO.cjs} +3 -5
  159. package/dist/index.cjs +110 -112
  160. package/dist/index.d.cts +1 -1
  161. package/dist/index.d.ts +1 -1
  162. package/dist/index.js +41 -43
  163. package/docs/llms.md +1 -1
  164. package/package.json +3 -2
  165. package/dist/Accordion.cjs.map +0 -1
  166. package/dist/Accordion.js.map +0 -1
  167. package/dist/Alert.cjs.map +0 -1
  168. package/dist/Alert.js.map +0 -1
  169. package/dist/AppShell.cjs.map +0 -1
  170. package/dist/AppShell.js.map +0 -1
  171. package/dist/AutoComplete.cjs.map +0 -1
  172. package/dist/AutoComplete.js.map +0 -1
  173. package/dist/Avatar.cjs.map +0 -1
  174. package/dist/Avatar.js.map +0 -1
  175. package/dist/Button.cjs.map +0 -1
  176. package/dist/Button.js.map +0 -1
  177. package/dist/Calendar.cjs.map +0 -1
  178. package/dist/Calendar.js.map +0 -1
  179. package/dist/Card.cjs.map +0 -1
  180. package/dist/Card.js.map +0 -1
  181. package/dist/Cascader.cjs.map +0 -1
  182. package/dist/Cascader.js.map +0 -1
  183. package/dist/Checkbox.cjs.map +0 -1
  184. package/dist/Checkbox.js.map +0 -1
  185. package/dist/ColorPicker.cjs.map +0 -1
  186. package/dist/ColorPicker.js.map +0 -1
  187. package/dist/CommandPalette.cjs.map +0 -1
  188. package/dist/CommandPalette.js.map +0 -1
  189. package/dist/ContextMenu.cjs.map +0 -1
  190. package/dist/ContextMenu.js.map +0 -1
  191. package/dist/Divider.cjs.map +0 -1
  192. package/dist/Divider.js.map +0 -1
  193. package/dist/Drawer.cjs.map +0 -1
  194. package/dist/Drawer.js.map +0 -1
  195. package/dist/Empty.cjs.map +0 -1
  196. package/dist/Empty.js.map +0 -1
  197. package/dist/Form.cjs.map +0 -1
  198. package/dist/Form.js.map +0 -1
  199. package/dist/Icon.cjs.map +0 -1
  200. package/dist/Icon.js.map +0 -1
  201. package/dist/Image.cjs.map +0 -1
  202. package/dist/Image.js.map +0 -1
  203. package/dist/Input.cjs.map +0 -1
  204. package/dist/Input.js.map +0 -1
  205. package/dist/InputNumber.cjs.map +0 -1
  206. package/dist/InputNumber.js.map +0 -1
  207. package/dist/List.cjs.map +0 -1
  208. package/dist/List.js.map +0 -1
  209. package/dist/Modal.cjs.map +0 -1
  210. package/dist/Modal.js.map +0 -1
  211. package/dist/Pagination.cjs.map +0 -1
  212. package/dist/Pagination.js.map +0 -1
  213. package/dist/Popover.cjs.map +0 -1
  214. package/dist/Popover.js.map +0 -1
  215. package/dist/Progress.cjs.map +0 -1
  216. package/dist/Progress.js.map +0 -1
  217. package/dist/Select.cjs.map +0 -1
  218. package/dist/Select.js.map +0 -1
  219. package/dist/Slider.cjs.map +0 -1
  220. package/dist/Slider.js.map +0 -1
  221. package/dist/Splitter.cjs.map +0 -1
  222. package/dist/Splitter.js.map +0 -1
  223. package/dist/StatusBar.cjs.map +0 -1
  224. package/dist/StatusBar.js.map +0 -1
  225. package/dist/Switch.cjs.map +0 -1
  226. package/dist/Switch.js.map +0 -1
  227. package/dist/Table.cjs.map +0 -1
  228. package/dist/Table.js.map +0 -1
  229. package/dist/Tabs.cjs.map +0 -1
  230. package/dist/Tabs.js.map +0 -1
  231. package/dist/Tag.cjs.map +0 -1
  232. package/dist/Tag.js.map +0 -1
  233. package/dist/Theme.cjs.map +0 -1
  234. package/dist/Theme.js.map +0 -1
  235. package/dist/Timeline.cjs.map +0 -1
  236. package/dist/Timeline.js.map +0 -1
  237. package/dist/Toast.cjs.map +0 -1
  238. package/dist/Toast.js.map +0 -1
  239. package/dist/Tooltip.cjs.map +0 -1
  240. package/dist/Tooltip.js.map +0 -1
  241. package/dist/Typography.cjs.map +0 -1
  242. package/dist/Typography.js.map +0 -1
  243. package/dist/chunk-2K5HZLXW.cjs.map +0 -1
  244. package/dist/chunk-2LIX7ZHX.js.map +0 -1
  245. package/dist/chunk-2TNJ7TC4.cjs.map +0 -1
  246. package/dist/chunk-2TZ2R7L2.js.map +0 -1
  247. package/dist/chunk-3EGZ6TBF.cjs.map +0 -1
  248. package/dist/chunk-3LJO33HI.js.map +0 -1
  249. package/dist/chunk-3XIDJEYR.cjs.map +0 -1
  250. package/dist/chunk-44AVDO3T.js.map +0 -1
  251. package/dist/chunk-474MXYO5.cjs.map +0 -1
  252. package/dist/chunk-4DNHASZU.js.map +0 -1
  253. package/dist/chunk-4JHFGSNH.js.map +0 -1
  254. package/dist/chunk-4SCDDSXY.js.map +0 -1
  255. package/dist/chunk-4XSP4HHZ.js.map +0 -1
  256. package/dist/chunk-5VIOJW6M.js.map +0 -1
  257. package/dist/chunk-6CAEGNCK.js.map +0 -1
  258. package/dist/chunk-6FSOJLY6.js.map +0 -1
  259. package/dist/chunk-6TRVGFFX.cjs.map +0 -1
  260. package/dist/chunk-74VZZAUT.cjs.map +0 -1
  261. package/dist/chunk-A3IJM7IX.js.map +0 -1
  262. package/dist/chunk-ANAQER3T.js.map +0 -1
  263. package/dist/chunk-AXRABZLY.cjs.map +0 -1
  264. package/dist/chunk-BSHHQOFY.js.map +0 -1
  265. package/dist/chunk-CVEGVB2C.js.map +0 -1
  266. package/dist/chunk-D242UJZO.js.map +0 -1
  267. package/dist/chunk-DB5JMXOI.js.map +0 -1
  268. package/dist/chunk-DCX36FYD.js.map +0 -1
  269. package/dist/chunk-DH4NYYJP.cjs.map +0 -1
  270. package/dist/chunk-DUNQNSVK.js.map +0 -1
  271. package/dist/chunk-E6K6GYUC.js.map +0 -1
  272. package/dist/chunk-EARCKSI7.js.map +0 -1
  273. package/dist/chunk-EHZXEZI2.cjs.map +0 -1
  274. package/dist/chunk-FBQLNAUI.cjs.map +0 -1
  275. package/dist/chunk-FCIPCZAK.cjs.map +0 -1
  276. package/dist/chunk-FSOJHDXH.js.map +0 -1
  277. package/dist/chunk-HHSVGNJA.cjs.map +0 -1
  278. package/dist/chunk-HQO7EZNQ.cjs.map +0 -1
  279. package/dist/chunk-IL523MTN.cjs.map +0 -1
  280. package/dist/chunk-JAGJQDAV.cjs.map +0 -1
  281. package/dist/chunk-JF2WNLPF.cjs.map +0 -1
  282. package/dist/chunk-JS6U7UQS.js.map +0 -1
  283. package/dist/chunk-KA3XLPQJ.cjs.map +0 -1
  284. package/dist/chunk-KWE2PXJQ.js.map +0 -1
  285. package/dist/chunk-LSQD2GFA.js.map +0 -1
  286. package/dist/chunk-MU4GGX6C.cjs.map +0 -1
  287. package/dist/chunk-MUFMJPRT.cjs.map +0 -1
  288. package/dist/chunk-MXIWTYNC.js.map +0 -1
  289. package/dist/chunk-N6ZLZUBF.cjs.map +0 -1
  290. package/dist/chunk-NRP3X3PE.cjs.map +0 -1
  291. package/dist/chunk-P4CGE5C7.cjs.map +0 -1
  292. package/dist/chunk-PX5ABNKV.js.map +0 -1
  293. package/dist/chunk-Q7CDWNM6.cjs.map +0 -1
  294. package/dist/chunk-QCNHDDSD.cjs.map +0 -1
  295. package/dist/chunk-QRSPBK3X.js.map +0 -1
  296. package/dist/chunk-RHZOBQON.js.map +0 -1
  297. package/dist/chunk-RNVE2LMJ.cjs.map +0 -1
  298. package/dist/chunk-RXL26GSI.cjs.map +0 -1
  299. package/dist/chunk-S3OSBW7R.cjs.map +0 -1
  300. package/dist/chunk-SREMTSVI.cjs.map +0 -1
  301. package/dist/chunk-SWB57EA2.js.map +0 -1
  302. package/dist/chunk-T7ZBJJC4.js.map +0 -1
  303. package/dist/chunk-TC5ZL2OS.cjs.map +0 -1
  304. package/dist/chunk-V24B7KWT.cjs.map +0 -1
  305. package/dist/chunk-V5KSJITO.cjs.map +0 -1
  306. package/dist/chunk-W6I67HQQ.js.map +0 -1
  307. package/dist/chunk-WFFWVQK4.cjs.map +0 -1
  308. package/dist/chunk-WLFMOWUY.js.map +0 -1
  309. package/dist/chunk-X3QINITU.js.map +0 -1
  310. package/dist/chunk-XMFVAYBP.cjs.map +0 -1
  311. package/dist/chunk-XMINE4TN.cjs.map +0 -1
  312. package/dist/chunk-XXE5TQ7I.cjs.map +0 -1
  313. package/dist/chunk-XYGRVPUA.js.map +0 -1
  314. package/dist/chunk-Y7BZMMAV.cjs.map +0 -1
  315. package/dist/chunk-YRAQRENN.js.map +0 -1
  316. package/dist/chunk-YVSZLQTQ.cjs.map +0 -1
  317. package/dist/chunk-ZA36BJIY.cjs.map +0 -1
  318. package/dist/chunk-ZHCQEJ2Z.js.map +0 -1
  319. package/dist/chunk-ZM4P6ELG.cjs.map +0 -1
  320. package/dist/chunk-ZN6VS6SO.js.map +0 -1
  321. package/dist/chunk-ZPDMAMWC.js.map +0 -1
  322. package/dist/chunk-ZZXNHPF3.js.map +0 -1
  323. package/dist/index.cjs.map +0 -1
  324. package/dist/index.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/Tag/Tag.tsx"],"names":[],"mappings":";;;;;;;AAwBO,IAAM,GAAA,GAAY,iBAAsC,CAAC;AAAA,EAC9D,IAAA,GAAO,SAAA;AAAA,EACP,KAAA;AAAA,EACA,GAAA;AAAA,EACA,IAAA;AAAA,EACA,SAAA;AAAA,EACA,QAAA;AAAA,EACA,QAAA,GAAW,IAAA;AAAA,EACX,SAAA,GAAY,EAAA;AAAA,EACZ,QAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAG,GAAA,KAAQ;AACT,EAAA,MAAM,GAAA,GAAM;AAAA,IACV,KAAA;AAAA,IACA,IAAA;AAAA,IACA,KAAA,IAAS,OAAA;AAAA,IACT,CAAC,QAAA,IAAY,CAAC,KAAA,IAAS,YAAA;AAAA,IACvB;AAAA,GACF,CACG,MAAA,CAAO,OAAO,CAAA,CACd,KAAK,GAAG,CAAA;AACX,EAAA,4BACG,MAAA,EAAA,EAAK,GAAA,EAAU,SAAA,EAAW,GAAA,EAAM,GAAG,IAAA,EACjC,QAAA,EAAA;AAAA,IAAA,GAAA,oBAAO,GAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,KAAA,EAAM,CAAA;AAAA,IAC7B,IAAA,wBAAS,IAAA,EAAA,EAAK,IAAA,EAAM,MAAM,IAAA,EAAM,EAAA,EAAI,WAAU,SAAA,EAAU,CAAA;AAAA,IACxD,QAAA;AAAA,IACA,SAAA,oBACC,GAAA;AAAA,MAAC,MAAA;AAAA,MAAA;AAAA,QACC,SAAA,EAAU,GAAA;AAAA,QACV,IAAA,EAAK,QAAA;AAAA,QACL,YAAA,EAAW,QAAA;AAAA,QACX,OAAA,EAAS,CAAC,CAAA,KAAM;AACd,UAAA,CAAA,CAAE,eAAA,EAAgB;AAClB,UAAA,QAAA,IAAW;AAAA,QACb,CAAA;AAAA,QAEA,QAAA,kBAAA,GAAA,CAAC,IAAA,EAAA,EAAK,IAAA,EAAK,GAAA,EAAI,MAAM,EAAA,EAAI;AAAA;AAAA;AAC3B,GAAA,EAEJ,CAAA;AAEJ,CAAC;AACD,GAAA,CAAI,WAAA,GAAc,KAAA;AAYX,IAAM,KAAA,GAAc,iBAAwC,CAAC;AAAA,EAClE,KAAA;AAAA,EACA,GAAA;AAAA,EACA,IAAA,GAAO,QAAA;AAAA,EACP,QAAA;AAAA,EACA,SAAA,GAAY,EAAA;AAAA,EACZ,GAAG;AACL,CAAA,EAAG,GAAA,KAAQ;AACT,EAAA,MAAM,IAAA,GAAO,GAAA,IAAQ,OAAO,KAAA,KAAU,YAAY,KAAA,GAAQ,CAAA;AAC1D,EAAA,uBACE,IAAA,CAAC,UAAK,GAAA,EAAU,SAAA,EAAW,cAAc,SAAS,CAAA,CAAA,EAAK,GAAG,IAAA,EACvD,QAAA,EAAA;AAAA,IAAA,QAAA;AAAA,IACA,wBACC,GAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAW,CAAA,MAAA,EAAS,IAAI,CAAA,CAAA,EAAI,GAAA,GAAM,KAAA,GAAQ,EAAE,IAC/C,QAAA,EAAA,CAAC,GAAA,KAAQ,KAAA,GAAS,EAAA,GAAK,QAAQ,KAAA,CAAA,EAClC;AAAA,GAAA,EAEJ,CAAA;AAEJ,CAAC;AACD,KAAA,CAAM,WAAA,GAAc,OAAA","file":"chunk-D242UJZO.js","sourcesContent":["import \"../../styles/tokens.css\";\nimport \"../../styles/shared.css\";\nimport \"./Tag.css\";\nimport * as React from \"react\";\nimport { Icon, type IconName } from \"../Icon\";\n\nexport type TagTone = \"neutral\" | \"accent\" | \"info\" | \"success\" | \"warning\" | \"danger\";\n\nexport interface TagProps extends React.HTMLAttributes<HTMLSpanElement> {\n tone?: TagTone;\n solid?: boolean;\n /** Render a leading colored dot. */\n dot?: boolean;\n /** Leading icon (uses the built-in `Icon` component). */\n icon?: IconName;\n /** Show a close button. */\n removable?: boolean;\n onRemove?: () => void;\n /** Whether to render the tag outline/flat shadow. Defaults to `true`. */\n bordered?: boolean;\n children?: React.ReactNode;\n}\n\n/** `Tag` — small label/pill. */\nexport const Tag = React.forwardRef<HTMLSpanElement, TagProps>(({\n tone = \"neutral\",\n solid,\n dot,\n icon,\n removable,\n onRemove,\n bordered = true,\n className = \"\",\n children,\n ...rest\n}, ref) => {\n const cls = [\n \"tag\",\n tone,\n solid && \"solid\",\n !bordered && !solid && \"borderless\",\n className,\n ]\n .filter(Boolean)\n .join(\" \");\n return (\n <span ref={ref} className={cls} {...rest}>\n {dot && <span className=\"dot\" />}\n {icon && <Icon name={icon} size={11} className=\"tag-ico\" />}\n {children}\n {removable && (\n <span\n className=\"x\"\n role=\"button\"\n aria-label=\"Remove\"\n onClick={(e) => {\n e.stopPropagation();\n onRemove?.();\n }}\n >\n <Icon name=\"x\" size={11} />\n </span>\n )}\n </span>\n );\n});\nTag.displayName = \"Tag\";\n\nexport interface BadgeProps extends React.HTMLAttributes<HTMLSpanElement> {\n /** Numeric count — renders as \"99+\" if > 99. */\n count?: number;\n /** Show a tiny dot instead of a number. */\n dot?: boolean;\n tone?: TagTone;\n children?: React.ReactNode;\n}\n\n/** `Badge` — notification dot / count. Wrap around another element. */\nexport const Badge = React.forwardRef<HTMLSpanElement, BadgeProps>(({\n count,\n dot,\n tone = \"danger\",\n children,\n className = \"\",\n ...rest\n}, ref) => {\n const show = dot || (typeof count === \"number\" && count > 0);\n return (\n <span ref={ref} className={`badge-wrap ${className}`} {...rest}>\n {children}\n {show && (\n <span className={`badge ${tone} ${dot ? \"dot\" : \"\"}`}>\n {!dot && (count! > 99 ? \"99+\" : count)}\n </span>\n )}\n </span>\n );\n});\nBadge.displayName = \"Badge\";\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/Pagination/Pagination.tsx"],"names":[],"mappings":"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","file":"chunk-DB5JMXOI.js","sourcesContent":["import \"../../styles/tokens.css\";\nimport \"../../styles/shared.css\";\nimport \"./Pagination.css\";\nimport * as React from \"react\";\nimport { Icon } from \"../Icon\";\nimport { Select } from \"../Select\";\n\nexport interface PaginationProps\n extends Omit<React.HTMLAttributes<HTMLDivElement>, \"onChange\"> {\n /** Total number of items. */\n total: number;\n /** Items per page. */\n pageSize?: number;\n /** Current page (1-indexed). */\n page?: number;\n defaultPage?: number;\n onChange?: (page: number) => void;\n /** Max visible page buttons (before ellipsis logic). */\n siblings?: number;\n /**\n * Render a \"跳至 N 页\" input to the right of the page buttons. Enter key commits\n * and clamps to `1..totalPages`.\n */\n showQuickJumper?: boolean;\n /**\n * Render a Select to let the user switch the page size. Resetting the size sends the\n * user back to page 1 and calls both `onShowSizeChange` and `onChange(1)`.\n */\n showSizeChanger?: boolean;\n /** Page size choices for `showSizeChanger`. Defaults to `[10, 20, 50, 100]`. */\n pageSizeOptions?: number[];\n /** Fires when the user picks a new page size via the size changer. */\n onShowSizeChange?: (current: number, size: number) => void;\n className?: string;\n}\n\nconst DEFAULT_SIZE_OPTIONS = [10, 20, 50, 100];\n\n/** `Pagination` — page number controls. */\nexport const Pagination = React.forwardRef<HTMLDivElement, PaginationProps>(({\n total,\n pageSize = 10,\n page,\n defaultPage = 1,\n onChange,\n siblings = 1,\n showQuickJumper = false,\n showSizeChanger = false,\n pageSizeOptions = DEFAULT_SIZE_OPTIONS,\n onShowSizeChange,\n className = \"\",\n ...rest\n}, ref) => {\n const [inner, setInner] = React.useState(defaultPage);\n const isControlled = page !== undefined;\n const cur = isControlled ? page! : inner;\n const pages = Math.max(1, Math.ceil(total / pageSize));\n const [jumpDraft, setJumpDraft] = React.useState(\"\");\n\n const go = (p: number) => {\n const next = Math.min(pages, Math.max(1, p));\n if (!isControlled) setInner(next);\n onChange?.(next);\n };\n\n const handleJump = (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (e.key !== \"Enter\") return;\n const n = Number(jumpDraft);\n if (!Number.isFinite(n) || n < 1) {\n setJumpDraft(\"\");\n return;\n }\n go(Math.trunc(n));\n setJumpDraft(\"\");\n };\n\n const handleSizeChange = (size: number) => {\n onShowSizeChange?.(cur, size);\n // reset to page 1 — Ant Design parity\n if (!isControlled) setInner(1);\n onChange?.(1);\n };\n\n const range = (): (number | \"...\")[] => {\n const out: (number | \"...\")[] = [];\n const add = (n: number | \"...\") => out.push(n);\n const s = Math.max(2, cur - siblings);\n const e = Math.min(pages - 1, cur + siblings);\n add(1);\n if (s > 2) add(\"...\");\n for (let i = s; i <= e; i++) add(i);\n if (e < pages - 1) add(\"...\");\n if (pages > 1) add(pages);\n return out;\n };\n\n return (\n <div ref={ref} className={`pagination ${className}`} {...rest}>\n <span className=\"pg-info\">\n 共 {total} 条 · 第 {cur} / {pages} 页\n </span>\n <div className=\"pg-controls\">\n <button\n type=\"button\"\n className={`pg ${cur === 1 ? \"disabled\" : \"\"}`}\n onClick={() => cur > 1 && go(cur - 1)}\n aria-label=\"Previous\"\n >\n <Icon name=\"chevLeft\" size={12} />\n </button>\n {range().map((p, i) =>\n p === \"...\" ? (\n <span key={`e${i}`} className=\"ellipsis\">…</span>\n ) : (\n <button\n key={p}\n type=\"button\"\n className={`pg ${p === cur ? \"active\" : \"\"}`}\n onClick={() => go(p)}\n >\n {p}\n </button>\n )\n )}\n <button\n type=\"button\"\n className={`pg ${cur === pages ? \"disabled\" : \"\"}`}\n onClick={() => cur < pages && go(cur + 1)}\n aria-label=\"Next\"\n >\n <Icon name=\"chevRight\" size={12} />\n </button>\n {showSizeChanger && (\n <div className=\"pg-size-changer\">\n <Select<number>\n value={pageSize}\n size=\"sm\"\n options={pageSizeOptions.map((n) => ({ value: n, label: `${n} 条/页` }))}\n onChange={handleSizeChange}\n />\n </div>\n )}\n {showQuickJumper && (\n <label className=\"pg-jumper\">\n <span className=\"pg-jumper-label\">跳至</span>\n <input\n type=\"text\"\n inputMode=\"numeric\"\n className=\"pg-jumper-input\"\n value={jumpDraft}\n onChange={(e) => setJumpDraft(e.target.value.replace(/[^\\d]/g, \"\"))}\n onKeyDown={handleJump}\n aria-label=\"跳转到指定页\"\n />\n <span className=\"pg-jumper-label\">页</span>\n </label>\n )}\n </div>\n </div>\n );\n});\nPagination.displayName = \"Pagination\";\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/StatusBar/StatusBar.tsx"],"names":[],"mappings":";;;;;;;AAgBO,IAAM,aAAA,GAAsB,iBAA4C,CAAC;AAAA,EAC9E,IAAA;AAAA,EACA,IAAA,GAAO,SAAA;AAAA,EACP,OAAA;AAAA,EACA,SAAA,GAAY,EAAA;AAAA,EACZ,QAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAG,GAAA,KAAQ;AACT,EAAA,MAAM,0BACJ,IAAA,CAAA,QAAA,EAAA,EACG,QAAA,EAAA;AAAA,IAAA,IAAA,oBAAQ,GAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,qBAAA,EAAuB,QAAA,EAAA,IAAA,EAAK,CAAA;AAAA,IACpD,YAAY,IAAA,oBAAQ,GAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,wBAAwB,QAAA,EAAS;AAAA,GAAA,EACxE,CAAA;AAEF,EAAA,MAAM,GAAA,GAAM,uBAAuB,IAAI,CAAA,CAAA,EAAI,UAAU,WAAA,GAAc,EAAE,IAAI,SAAS,CAAA,CAAA;AAClF,EAAA,IAAI,OAAA,EAAS;AACX,IAAA,uBACE,GAAA;AAAA,MAAC,QAAA;AAAA,MAAA;AAAA,QACC,GAAA;AAAA,QACA,IAAA,EAAK,QAAA;AAAA,QACL,SAAA,EAAW,GAAA;AAAA,QACX,OAAA;AAAA,QAEC,QAAA,EAAA;AAAA;AAAA,KACH;AAAA,EAEJ;AACA,EAAA,2BACG,KAAA,EAAA,EAAI,GAAA,EAAgD,WAAW,GAAA,EAAM,GAAG,MACtE,QAAA,EAAA,OAAA,EACH,CAAA;AAEJ,CAAC;AACD,aAAA,CAAc,WAAA,GAAc,eAAA;AAwB5B,IAAM,aAAA,GAAsB,iBAA2C,CAAC;AAAA,EACtE,IAAA;AAAA,EACA,MAAA;AAAA,EACA,KAAA;AAAA,EACA,SAAA,GAAY,EAAA;AAAA,EACZ,QAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAG,GAAA,qBACD,IAAA,CAAC,KAAA,EAAA,EAAI,GAAA,EAAU,SAAA,EAAW,CAAA,UAAA,EAAa,SAAS,CAAA,CAAA,EAAI,IAAA,EAAK,QAAA,EAAU,GAAG,IAAA,EACnE,QAAA,EAAA;AAAA,EAAA,IAAA,IAAQ,IAAA,oBAAQ,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,0BAA0B,QAAA,EAAA,IAAA,EAAK,CAAA;AAAA,EAC9D,UAAU,IAAA,oBAAQ,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,4BAA4B,QAAA,EAAA,MAAA,EAAO,CAAA;AAAA,EACpE,QAAA;AAAA,EACA,SAAS,IAAA,oBAAQ,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,2BAA2B,QAAA,EAAA,KAAA,EAAM;AAAA,CAAA,EACpE,CACD,CAAA;AACD,aAAA,CAAc,WAAA,GAAc,WAAA;AAErB,IAAM,SAAA,GAAY;AAEzB,SAAA,CAAU,IAAA,GAAO,aAAA","file":"chunk-DCX36FYD.js","sourcesContent":["import \"../../styles/tokens.css\";\nimport \"../../styles/shared.css\";\nimport \"./StatusBar.css\";\nimport * as React from \"react\";\n\nexport interface StatusBarItemProps extends Omit<React.HTMLAttributes<HTMLDivElement>, \"children\"> {\n /** Optional leading node (usually an `<Icon />`). */\n icon?: React.ReactNode;\n /** Visual tone — shifts color only. */\n tone?: \"default\" | \"muted\" | \"accent\" | \"success\" | \"warning\" | \"danger\";\n /** Makes the item clickable (also renders as `<button>` when `onClick` is set). */\n onClick?: (e: React.MouseEvent<HTMLDivElement | HTMLButtonElement>) => void;\n children?: React.ReactNode;\n}\n\n/** `StatusBar.Item` — one inline slot. Put icon + text inside. */\nexport const StatusBarItem = React.forwardRef<HTMLElement, StatusBarItemProps>(({\n icon,\n tone = \"default\",\n onClick,\n className = \"\",\n children,\n ...rest\n}, ref) => {\n const content = (\n <>\n {icon && <span className=\"statusbar-item-icon\">{icon}</span>}\n {children != null && <span className=\"statusbar-item-label\">{children}</span>}\n </>\n );\n const cls = `statusbar-item tone-${tone} ${onClick ? \"clickable\" : \"\"} ${className}`;\n if (onClick) {\n return (\n <button\n ref={ref as React.ForwardedRef<HTMLButtonElement>}\n type=\"button\"\n className={cls}\n onClick={onClick as React.MouseEventHandler<HTMLButtonElement>}\n >\n {content}\n </button>\n );\n }\n return (\n <div ref={ref as React.ForwardedRef<HTMLDivElement>} className={cls} {...rest}>\n {content}\n </div>\n );\n});\nStatusBarItem.displayName = \"StatusBarItem\";\n\nexport interface StatusBarProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Left-aligned slot. */\n left?: React.ReactNode;\n /** Center slot — absolutely positioned, stays centered regardless of side widths. */\n center?: React.ReactNode;\n /** Right-aligned slot. */\n right?: React.ReactNode;\n children?: React.ReactNode;\n}\n\n/**\n * `StatusBar` — thin bottom bar for app state (branch, line/col, sync, etc.).\n * Pair with `TitleBar` to bracket the window chrome.\n *\n * @example\n * ```tsx\n * <StatusBar\n * left={<StatusBar.Item icon={<Icon name=\"check\" size={12} />} tone=\"success\">Ready</StatusBar.Item>}\n * right={<StatusBar.Item tone=\"muted\">UTF-8</StatusBar.Item>}\n * />\n * ```\n */\nconst StatusBarBase = React.forwardRef<HTMLDivElement, StatusBarProps>(({\n left,\n center,\n right,\n className = \"\",\n children,\n ...rest\n}, ref) => (\n <div ref={ref} className={`statusbar ${className}`} role=\"status\" {...rest}>\n {left != null && <div className=\"statusbar-section left\">{left}</div>}\n {center != null && <div className=\"statusbar-section center\">{center}</div>}\n {children}\n {right != null && <div className=\"statusbar-section right\">{right}</div>}\n </div>\n));\nStatusBarBase.displayName = \"StatusBar\";\n\nexport const StatusBar = StatusBarBase as typeof StatusBarBase & { Item: typeof StatusBarItem };\n\nStatusBar.Item = StatusBarItem;\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/Icon/Icon.tsx"],"names":["jsxs","Fragment","jsx","React"],"mappings":"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","file":"chunk-DH4NYYJP.cjs","sourcesContent":["import * as React from \"react\";\n\n/**\n * Name of a built-in icon. To add your own, pass `children` (raw SVG paths) instead.\n */\nexport type IconName =\n | \"search\"\n | \"plus\"\n | \"minus\"\n | \"check\"\n | \"x\"\n | \"chevDown\"\n | \"chevRight\"\n | \"chevLeft\"\n | \"chevUp\"\n | \"arrowRight\"\n | \"settings\"\n | \"user\"\n | \"bell\"\n | \"mail\"\n | \"heart\"\n | \"star\"\n | \"home\"\n | \"folder\"\n | \"file\"\n | \"image\"\n | \"play\"\n | \"pause\"\n | \"volume\"\n | \"trash\"\n | \"edit\"\n | \"copy\"\n | \"download\"\n | \"upload\"\n | \"info\"\n | \"alert\"\n | \"check2\"\n | \"eye\"\n | \"eyeOff\"\n | \"sparkle\"\n | \"moon\"\n | \"sun\"\n | \"palette\"\n | \"layers\"\n | \"grid\"\n | \"list\"\n | \"zap\"\n | \"filter\"\n | \"mic\"\n | \"send\"\n | \"calendar\"\n | \"clock\"\n | \"menu\"\n | \"more\"\n | \"sliders\"\n | \"aim\"\n | \"swap\"\n | \"camera\"\n | \"qq\"\n | \"code\";\n\nexport interface IconProps extends Omit<React.SVGAttributes<SVGSVGElement>, \"stroke\"> {\n name: IconName;\n size?: number;\n stroke?: number;\n}\n\nconst paths: Record<IconName, React.ReactNode> = {\nsearch: <><circle cx=\"11\" cy=\"11\" r=\"7\"/><path d=\"m20 20-3.5-3.5\"/></>,\n plus: <><path d=\"M12 5v14M5 12h14\"/></>,\n minus: <><path d=\"M5 12h14\"/></>,\n check: <><path d=\"m4 12 5 5L20 6\"/></>,\n x: <><path d=\"M6 6l12 12M18 6 6 18\"/></>,\n chevDown: <><path d=\"m6 9 6 6 6-6\"/></>,\n chevRight: <><path d=\"m9 6 6 6-6 6\"/></>,\n chevLeft: <><path d=\"m15 6-6 6 6 6\"/></>,\n chevUp: <><path d=\"m6 15 6-6 6 6\"/></>,\n arrowRight:<><path d=\"M5 12h14M13 6l6 6-6 6\"/></>,\n settings: <><path d=\"M12.22 2h-.44a2 2 0 0 0-2 2v.18a2 2 0 0 1-1 1.73l-.43.25a2 2 0 0 1-2 0l-.15-.08a2 2 0 0 0-2.73.73l-.22.38a2 2 0 0 0 .73 2.73l.15.1a2 2 0 0 1 1 1.72v.51a2 2 0 0 1-1 1.74l-.15.09a2 2 0 0 0-.73 2.73l.22.38a2 2 0 0 0 2.73.73l.15-.08a2 2 0 0 1 2 0l.43.25a2 2 0 0 1 1 1.73V20a2 2 0 0 0 2 2h.44a2 2 0 0 0 2-2v-.18a2 2 0 0 1 1-1.73l.43-.25a2 2 0 0 1 2 0l.15.08a2 2 0 0 0 2.73-.73l.22-.39a2 2 0 0 0-.73-2.73l-.15-.08a2 2 0 0 1-1-1.74v-.5a2 2 0 0 1 1-1.74l.15-.09a2 2 0 0 0 .73-2.73l-.22-.38a2 2 0 0 0-2.73-.73l-.15.08a2 2 0 0 1-2 0l-.43-.25a2 2 0 0 1-1-1.73V4a2 2 0 0 0-2-2z\"/><circle cx=\"12\" cy=\"12\" r=\"3\"/></>,\n user: <><circle cx=\"12\" cy=\"8\" r=\"4\"/><path d=\"M4 21a8 8 0 0 1 16 0\"/></>,\n bell: <><path d=\"M6 8a6 6 0 0 1 12 0c0 7 3 9 3 9H3s3-2 3-9\"/><path d=\"M10.3 21a1.94 1.94 0 0 0 3.4 0\"/></>,\n mail: <><rect x=\"3\" y=\"5\" width=\"18\" height=\"14\" rx=\"2\"/><path d=\"m3 7 9 6 9-6\"/></>,\n heart: <><path d=\"M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z\"/></>,\n star: <><path d=\"m12 2 3.09 6.26L22 9.27l-5 4.87 1.18 6.88L12 17.77l-6.18 3.25L7 14.14 2 9.27l6.91-1.01L12 2z\"/></>,\n home: <><path d=\"m3 10 9-7 9 7v10a2 2 0 0 1-2 2h-4v-7h-6v7H5a2 2 0 0 1-2-2z\"/></>,\n folder: <><path d=\"M3 7a2 2 0 0 1 2-2h4l2 3h8a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z\"/></>,\n file: <><path d=\"M14 3H6a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V9z\"/><path d=\"M14 3v6h6\"/></>,\n image: <><rect x=\"3\" y=\"3\" width=\"18\" height=\"18\" rx=\"2\"/><circle cx=\"9\" cy=\"9\" r=\"2\"/><path d=\"m21 15-5-5L5 21\"/></>,\n play: <><path d=\"M7 5v14l11-7z\" fill=\"currentColor\" stroke=\"none\"/></>,\n pause: <><path d=\"M6 4h4v16H6zM14 4h4v16h-4z\" fill=\"currentColor\" stroke=\"none\"/></>,\n volume: <><path d=\"M11 5 6 9H3v6h3l5 4z\"/><path d=\"M17 8a5 5 0 0 1 0 8M20 5a9 9 0 0 1 0 14\"/></>,\n trash: <><path d=\"M3 6h18M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2M5 6l1 14a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2l1-14\"/></>,\n edit: <><path d=\"M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7\"/><path d=\"M18.5 2.5a2.12 2.12 0 0 1 3 3L12 15l-4 1 1-4z\"/></>,\n copy: <><rect x=\"9\" y=\"9\" width=\"13\" height=\"13\" rx=\"2\"/><path d=\"M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1\"/></>,\n download: <><path d=\"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4M7 10l5 5 5-5M12 15V3\"/></>,\n upload: <><path d=\"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4M17 8l-5-5-5 5M12 3v12\"/></>,\n info: <><circle cx=\"12\" cy=\"12\" r=\"10\"/><path d=\"M12 16v-4M12 8h.01\"/></>,\n alert: <><path d=\"M10.29 3.86 1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0zM12 9v4M12 17h.01\"/></>,\n check2: <><circle cx=\"12\" cy=\"12\" r=\"10\"/><path d=\"m9 12 2 2 4-4\"/></>,\n eye: <><path d=\"M2 12s3.5-7 10-7 10 7 10 7-3.5 7-10 7-10-7-10-7z\"/><circle cx=\"12\" cy=\"12\" r=\"3\"/></>,\n eyeOff: <><path d=\"M17.94 17.94A10.07 10.07 0 0 1 12 20c-7 0-10-8-10-8a19 19 0 0 1 5.17-6M9.9 4.24A9.12 9.12 0 0 1 12 4c7 0 10 8 10 8a19 19 0 0 1-2.16 3.19M14.12 14.12a3 3 0 1 1-4.24-4.24M1 1l22 22\"/></>,\n sparkle: <><path d=\"M12 3v4M12 17v4M3 12h4M17 12h4M5.6 5.6l2.8 2.8M15.6 15.6l2.8 2.8M5.6 18.4l2.8-2.8M15.6 8.4l2.8-2.8\"/></>,\n moon: <><path d=\"M21 12.8A9 9 0 1 1 11.2 3a7 7 0 0 0 9.8 9.8z\"/></>,\n sun: <><circle cx=\"12\" cy=\"12\" r=\"4\"/><path d=\"M12 2v2M12 20v2M4.93 4.93l1.41 1.41M17.66 17.66l1.41 1.41M2 12h2M20 12h2M4.93 19.07l1.41-1.41M17.66 6.34l1.41-1.41\"/></>,\n palette: <><circle cx=\"13.5\" cy=\"6.5\" r=\"1\"/><circle cx=\"17.5\" cy=\"10.5\" r=\"1\"/><circle cx=\"8.5\" cy=\"7.5\" r=\"1\"/><circle cx=\"6.5\" cy=\"12.5\" r=\"1\"/><path d=\"M12 2a10 10 0 1 0 0 20 3 3 0 0 0 0-6h-1a2 2 0 0 1 0-4h4a5 5 0 0 0 5-5 10 10 0 0 0-8-5z\"/></>,\n layers: <><path d=\"m12 2 10 6-10 6L2 8z\"/><path d=\"m2 17 10 6 10-6M2 12l10 6 10-6\"/></>,\n grid: <><rect x=\"3\" y=\"3\" width=\"7\" height=\"7\"/><rect x=\"14\" y=\"3\" width=\"7\" height=\"7\"/><rect x=\"3\" y=\"14\" width=\"7\" height=\"7\"/><rect x=\"14\" y=\"14\" width=\"7\" height=\"7\"/></>,\n list: <><path d=\"M8 6h13M8 12h13M8 18h13M3 6h.01M3 12h.01M3 18h.01\"/></>,\n zap: <><path d=\"M13 2 3 14h9l-1 8 10-12h-9z\"/></>,\n filter: <><path d=\"M22 3H2l8 9.46V19l4 2v-8.54z\"/></>,\n mic: <><rect x=\"9\" y=\"2\" width=\"6\" height=\"12\" rx=\"3\"/><path d=\"M19 10v1a7 7 0 0 1-14 0v-1M12 18v4M8 22h8\"/></>,\n send: <><path d=\"m22 2-7 20-4-9-9-4zM22 2 11 13\"/></>,\n calendar: <><rect x=\"3\" y=\"4\" width=\"18\" height=\"18\" rx=\"2\"/><path d=\"M16 2v4M8 2v4M3 10h18\"/></>,\n clock: <><circle cx=\"12\" cy=\"12\" r=\"10\"/><path d=\"M12 6v6l4 2\"/></>,\n menu: <><path d=\"M3 6h18M3 12h18M3 18h18\"/></>,\n more: <><circle cx=\"5\" cy=\"12\" r=\"1\"/><circle cx=\"12\" cy=\"12\" r=\"1\"/><circle cx=\"19\" cy=\"12\" r=\"1\"/></>,\n sliders: <><path d=\"M4 21v-7M4 10V3M12 21v-9M12 8V3M20 21v-5M20 12V3M1 14h6M9 8h6M17 16h6\"/></>,\n aim: <><circle cx=\"12\" cy=\"12\" r=\"10\"/><line x1=\"12\" y1=\"2\" x2=\"12\" y2=\"6\"/><line x1=\"12\" y1=\"18\" x2=\"12\" y2=\"22\"/><line x1=\"2\" y1=\"12\" x2=\"6\" y2=\"12\"/><line x1=\"18\" y1=\"12\" x2=\"22\" y2=\"12\"/><circle cx=\"12\" cy=\"12\" r=\"2\"/></>,\n swap: <><path d=\"M3 8h18M17 4l4 4-4 4M21 16H3M7 20l-4-4 4-4\"/></>,\n camera: <><path d=\"M3 7h4l2-3h6l2 3h4a1 1 0 0 1 1 1v11a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V8a1 1 0 0 1 1-1z\"/><circle cx=\"12\" cy=\"13\" r=\"4\"/></>,\n qq: <><path d=\"M12 2c-3 0-5 2.1-5 5 0 1.3.4 2.6.9 3.6-1.8 1-3.4 3-3.4 5.9 0 .8.7 1.5 1.5 1.5 0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2 .8 0 1.5-.7 1.5-1.5 0-2.9-1.6-4.9-3.4-5.9.5-1 .9-2.3.9-3.6 0-2.9-2-5-5-5z\"/><circle cx=\"10\" cy=\"9\" r=\"0.8\" fill=\"currentColor\" stroke=\"none\"/><circle cx=\"14\" cy=\"9\" r=\"0.8\" fill=\"currentColor\" stroke=\"none\"/></>,\n code: <><path d=\"m16 18 6-6-6-6M8 6l-6 6 6 6\"/></>,\n};\n\n/**\n * `Icon` — stroked line icon set, sized in pixels, inherits `currentColor`.\n *\n * @example\n * <Icon name=\"plus\" size={18} />\n */\nexport const Icon = React.forwardRef<SVGSVGElement, IconProps>(\n ({ name, size = 16, stroke = 2, style, ...rest }, ref) => (\n <svg\n ref={ref}\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={stroke}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n overflow=\"visible\"\n style={style}\n {...rest}\n >\n {paths[name]}\n </svg>\n )\n);\nIcon.displayName = \"Icon\";\n\nexport const ICON_NAMES: IconName[] = [\"search\", \"plus\", \"minus\", \"check\", \"x\", \"chevDown\", \"chevRight\", \"chevLeft\", \"chevUp\", \"arrowRight\", \"settings\", \"user\", \"bell\", \"mail\", \"heart\", \"star\", \"home\", \"folder\", \"file\", \"image\", \"play\", \"pause\", \"volume\", \"trash\", \"edit\", \"copy\", \"download\", \"upload\", \"info\", \"alert\", \"check2\", \"eye\", \"eyeOff\", \"sparkle\", \"moon\", \"sun\", \"palette\", \"layers\", \"grid\", \"list\", \"zap\", \"filter\", \"mic\", \"send\", \"calendar\", \"clock\", \"menu\", \"more\", \"sliders\", \"aim\", \"swap\", \"camera\", \"qq\", \"code\"];\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/Cascader/Cascader.tsx"],"names":[],"mappings":"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","file":"chunk-DUNQNSVK.js","sourcesContent":["import \"../../styles/tokens.css\";\nimport \"../../styles/shared.css\";\nimport \"./Cascader.css\";\nimport * as React from \"react\";\nimport { createPortal } from \"react-dom\";\nimport { Icon, type IconName } from \"../Icon\";\nimport { useFloating } from \"../../utils/useFloating\";\n\nexport interface CascaderOption {\n value: string;\n label: React.ReactNode;\n icon?: IconName;\n children?: CascaderOption[];\n disabled?: boolean;\n}\n\nexport interface CascaderProps\n extends Omit<React.HTMLAttributes<HTMLDivElement>, \"onChange\" | \"defaultValue\"> {\n options: CascaderOption[];\n value?: string[];\n defaultValue?: string[];\n onChange?: (path: string[]) => void;\n placeholder?: string;\n disabled?: boolean;\n className?: string;\n}\n\n/** `Cascader` — multi-column hierarchical selector. */\nexport const Cascader = React.forwardRef<HTMLDivElement, CascaderProps>(({\n options,\n value,\n defaultValue = [],\n onChange,\n placeholder = \"请选择\",\n disabled,\n className = \"\",\n ...rest\n}, ref) => {\n const [inner, setInner] = React.useState<string[]>(defaultValue);\n const isControlled = value !== undefined;\n const cur = isControlled ? value! : inner;\n const [open, setOpen] = React.useState(false);\n const [path, setPath] = React.useState<string[]>(cur);\n const panelRef = React.useRef<HTMLDivElement>(null);\n\n const { triggerRef, floatingStyle } = useFloating<HTMLDivElement>({\n open,\n placement: \"bottom\",\n panelWidth: 520,\n panelHeight: 260,\n });\n\n const setTriggerRef = React.useCallback(\n (node: HTMLDivElement | null) => {\n (triggerRef as React.MutableRefObject<HTMLDivElement | null>).current = node;\n if (typeof ref === \"function\") ref(node);\n else if (ref) ref.current = node;\n },\n [ref, triggerRef]\n );\n\n React.useEffect(() => {\n const h = (e: MouseEvent) => {\n const t = e.target as Node;\n if (triggerRef.current?.contains(t)) return;\n if (panelRef.current?.contains(t)) return;\n setOpen(false);\n };\n document.addEventListener(\"mousedown\", h);\n return () => document.removeEventListener(\"mousedown\", h);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n React.useEffect(() => {\n if (open) setPath(cur);\n }, [open, cur]);\n\n const columns: CascaderOption[][] = [options];\n let cursor: CascaderOption[] = options;\n for (const v of path) {\n const match: CascaderOption | undefined = cursor.find((o) => o.value === v);\n if (match && match.children) {\n cursor = match.children;\n columns.push(cursor);\n } else break;\n }\n\n const pick = (depth: number, val: string, hasChildren: boolean) => {\n const np = [...path.slice(0, depth), val];\n setPath(np);\n if (!hasChildren) {\n if (!isControlled) setInner(np);\n onChange?.(np);\n setOpen(false);\n }\n };\n\n const labels: React.ReactNode[] = [];\n let list: CascaderOption[] = options;\n for (const v of cur) {\n const m: CascaderOption | undefined = list.find((o) => o.value === v);\n if (!m) break;\n labels.push(m.label);\n if (!m.children) break;\n list = m.children;\n }\n\n return (\n <div ref={setTriggerRef} className={`cascader ${open ? \"open\" : \"\"} ${className}`} {...rest}>\n <button\n type=\"button\"\n className={`cascader-trigger ${labels.length === 0 ? \"placeholder\" : \"\"}`}\n disabled={disabled}\n onClick={() => !disabled && setOpen((o) => !o)}\n >\n <span style={{ flex: 1 }}>\n {labels.length ? labels.map((l, i) => <span key={i}>{i > 0 && \" / \"}{l}</span>) : placeholder}\n </span>\n <span style={{ position: \"absolute\", right: 12, color: \"var(--fg-subtle)\" }}>\n <Icon name=\"chevDown\" size={14} />\n </span>\n </button>\n {open && typeof document !== \"undefined\" &&\n createPortal(\n <div ref={panelRef} className=\"cascader-panel\" style={floatingStyle}>\n {columns.map((col, depth) => (\n <div key={depth} className=\"cascader-col\">\n {col.map((o) => {\n const isActive = path[depth] === o.value;\n const hasChildren = !!(o.children && o.children.length);\n return (\n <button\n key={o.value}\n type=\"button\"\n className={`cascader-item ${isActive ? \"active\" : \"\"}`}\n disabled={o.disabled}\n onClick={() => pick(depth, o.value, hasChildren)}\n >\n {o.icon && <Icon name={o.icon} size={13} />}\n <span>{o.label}</span>\n {hasChildren && (\n <span className=\"chev\">\n <Icon name=\"chevRight\" size={12} />\n </span>\n )}\n </button>\n );\n })}\n </div>\n ))}\n </div>,\n document.body\n )}\n </div>\n );\n});\nCascader.displayName = \"Cascader\";\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/Progress/Progress.tsx"],"names":[],"mappings":";;;;;;;AAmBO,IAAM,QAAA,GAAiB,iBAA0C,CAAC;AAAA,EACvE,KAAA;AAAA,EACA,GAAA,GAAM,GAAA;AAAA,EACN,KAAA;AAAA,EACA,SAAA;AAAA,EACA,IAAA,GAAO,QAAA;AAAA,EACP,KAAA;AAAA,EACA,IAAA,GAAO,IAAA;AAAA,EACP,SAAA,GAAY,EAAA;AAAA,EACZ,KAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAG,GAAA,KAAQ;AACT,EAAA,MAAM,GAAA,GAAM,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,IAAA,CAAK,IAAI,GAAA,EAAM,KAAA,GAAQ,GAAA,GAAO,GAAG,CAAC,CAAA;AAC1D,EAAA,MAAM,SAAA,GAAiC;AAAA,IACrC,GAAI,KAAA,GACA;AAAA,MACE,CAAC,iBAA0B,GAAG,KAAA;AAAA,MAC9B,CAAC,sBAA+B,GAAG,CAAA,oBAAA,EAAuB,KAAK,CAAA,kBAAA;AAAA,KACjE,GACA,IAAA;AAAA,IACJ,GAAG;AAAA,GACL;AACA,EAAA,uBACE,IAAA,CAAC,KAAA,EAAA,EAAI,GAAA,EAAU,SAAA,EAAW,YAAY,IAAI,CAAA,CAAA,EAAI,IAAI,CAAA,CAAA,EAAI,SAAS,CAAA,CAAA,EAAI,KAAA,EAAO,SAAA,EAAY,GAAG,IAAA,EACrF,QAAA,EAAA;AAAA,IAAA,CAAA,KAAA,IAAS,SAAA,qBACT,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,gBAAA,EACZ,QAAA,EAAA;AAAA,MAAA,KAAA,mBAAQ,GAAA,CAAC,MAAA,EAAA,EAAM,QAAA,EAAA,KAAA,EAAM,CAAA,uBAAW,MAAA,EAAA,EAAK,CAAA;AAAA,MACrC,SAAA,oBAAa,IAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,GAAA,EAAK,QAAA,EAAA;AAAA,QAAA,IAAA,CAAK,MAAM,GAAG,CAAA;AAAA,QAAE;AAAA,OAAA,EAAC;AAAA,KAAA,EACtD,CAAA;AAAA,oBAEF,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,gBAAA,EACb,8BAAC,KAAA,EAAA,EAAI,SAAA,EAAU,cAAA,EAAe,KAAA,EAAO,EAAE,KAAA,EAAO,CAAA,EAAG,GAAG,CAAA,CAAA,CAAA,IAAO,CAAA,EAC7D;AAAA,GAAA,EACF,CAAA;AAEJ,CAAC;AACD,QAAA,CAAS,WAAA,GAAc,UAAA","file":"chunk-E6K6GYUC.js","sourcesContent":["import \"../../styles/tokens.css\";\nimport \"../../styles/shared.css\";\nimport \"./Progress.css\";\nimport * as React from \"react\";\n\nexport interface ProgressProps extends React.HTMLAttributes<HTMLDivElement> {\n /** 0–100 */\n value: number;\n max?: number;\n label?: React.ReactNode;\n showValue?: boolean;\n tone?: \"accent\" | \"success\" | \"warning\" | \"danger\";\n /** Custom fill color. Overrides `tone`. */\n color?: string;\n size?: \"sm\" | \"md\" | \"lg\";\n className?: string;\n}\n\n/** `Progress` — horizontal progress bar with neumorphic track. */\nexport const Progress = React.forwardRef<HTMLDivElement, ProgressProps>(({\n value,\n max = 100,\n label,\n showValue,\n tone = \"accent\",\n color,\n size = \"md\",\n className = \"\",\n style,\n ...rest\n}, ref) => {\n const pct = Math.max(0, Math.min(100, (value / max) * 100));\n const rootStyle: React.CSSProperties = {\n ...(color\n ? {\n [\"--progress-fill\" as never]: color,\n [\"--progress-fill-glow\" as never]: `color-mix(in oklch, ${color} 35%, transparent)`,\n }\n : null),\n ...style,\n };\n return (\n <div ref={ref} className={`progress ${size} ${tone} ${className}`} style={rootStyle} {...rest}>\n {(label || showValue) && (\n <div className=\"progress-label\">\n {label ? <span>{label}</span> : <span />}\n {showValue && <span className=\"v\">{Math.round(pct)}%</span>}\n </div>\n )}\n <div className=\"progress-track\">\n <div className=\"progress-bar\" style={{ width: `${pct}%` }} />\n </div>\n </div>\n );\n});\nProgress.displayName = \"Progress\";\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/Form/Form.tsx"],"names":["store"],"mappings":"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","file":"chunk-EARCKSI7.js","sourcesContent":["import \"../../styles/tokens.css\";\nimport \"../../styles/shared.css\";\nimport \"./Form.css\";\nimport * as React from \"react\";\n\n/* ============================================================================\n * Form — minimal antd-compatible form with validation + field binding.\n *\n * Scope:\n * - useForm() → [FormInstance]\n * - <Form form={} layout initialValues onFinish onFinishFailed onValuesChange>\n * - <Form.Item name label rules noStyle valuePropName trigger initialValue help>\n * - Rules: required / message / pattern / min / max / len / validator / type\n *\n * Not supported (to keep v1 tight):\n * - nested field names (\"user.name\" dotted paths)\n * - Form.List\n * - dependencies / shouldUpdate\n * - labelCol / wrapperCol layout grid\n * ========================================================================== */\n\nexport type FormLayout = \"horizontal\" | \"vertical\" | \"inline\";\n\nexport type Rule = {\n required?: boolean;\n message?: string;\n pattern?: RegExp;\n min?: number;\n max?: number;\n len?: number;\n type?: \"string\" | \"number\" | \"email\" | \"url\" | \"array\";\n whitespace?: boolean;\n validator?: (rule: Rule, value: unknown) => Promise<void> | void;\n};\n\nexport interface ErrorField {\n name: string;\n errors: string[];\n}\n\nexport interface FormInstance<V extends Record<string, unknown> = Record<string, unknown>> {\n getFieldValue: <T = unknown>(name: string) => T;\n getFieldsValue: (names?: string[]) => V;\n setFieldValue: (name: string, value: unknown) => void;\n setFieldsValue: (values: Partial<V>) => void;\n resetFields: (names?: string[]) => void;\n validateFields: (names?: string[]) => Promise<V>;\n isFieldTouched: (name: string) => boolean;\n getFieldError: (name: string) => string[];\n /** Programmatic submit — runs validate then onFinish/onFinishFailed. */\n submit: () => void;\n}\n\ninterface FieldEntry {\n rules: Rule[];\n initial?: unknown;\n}\n\ninterface InternalStore {\n values: Record<string, unknown>;\n errors: Record<string, string[]>;\n touched: Set<string>;\n initial: Record<string, unknown>;\n fields: Map<string, FieldEntry>;\n fieldSubs: Map<string, Set<() => void>>;\n formSubs: Set<() => void>;\n onSubmit?: () => void;\n onValuesChange?: (changed: Record<string, unknown>, all: Record<string, unknown>) => void;\n}\n\nfunction makeStore(): InternalStore {\n return {\n values: {},\n errors: {},\n touched: new Set(),\n initial: {},\n fields: new Map(),\n fieldSubs: new Map(),\n formSubs: new Set(),\n };\n}\n\nconst EMAIL_RE = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/;\nconst URL_RE = /^https?:\\/\\/.+/i;\n\nasync function validateSingle(rule: Rule, value: unknown): Promise<string | null> {\n const msg = rule.message;\n const isEmpty = value == null || value === \"\" || (Array.isArray(value) && value.length === 0);\n\n if (rule.required && isEmpty) return msg ?? \"必填项\";\n if (rule.whitespace && typeof value === \"string\" && value.trim() === \"\") return msg ?? \"不能为空\";\n\n // Only run remaining checks when value is present.\n if (isEmpty) return null;\n\n if (rule.type === \"email\" && typeof value === \"string\" && !EMAIL_RE.test(value)) return msg ?? \"邮箱格式不正确\";\n if (rule.type === \"url\" && typeof value === \"string\" && !URL_RE.test(value)) return msg ?? \"链接格式不正确\";\n if (rule.type === \"number\" && typeof value !== \"number\" && isNaN(Number(value))) return msg ?? \"必须是数字\";\n if (rule.type === \"array\" && !Array.isArray(value)) return msg ?? \"必须是数组\";\n\n if (rule.pattern && typeof value === \"string\" && !rule.pattern.test(value)) return msg ?? \"格式不正确\";\n\n const strLen = typeof value === \"string\" ? value.length : Array.isArray(value) ? value.length : undefined;\n if (rule.len != null && strLen != null && strLen !== rule.len) return msg ?? `长度必须是 ${rule.len}`;\n if (rule.min != null && strLen != null && strLen < rule.min) return msg ?? `至少 ${rule.min} 个字符`;\n if (rule.max != null && strLen != null && strLen > rule.max) return msg ?? `最多 ${rule.max} 个字符`;\n if (rule.min != null && typeof value === \"number\" && value < rule.min) return msg ?? `不能小于 ${rule.min}`;\n if (rule.max != null && typeof value === \"number\" && value > rule.max) return msg ?? `不能大于 ${rule.max}`;\n\n if (rule.validator) {\n try {\n await rule.validator(rule, value);\n } catch (err) {\n if (typeof err === \"string\") return err;\n if (err instanceof Error) return err.message;\n return msg ?? \"校验未通过\";\n }\n }\n\n return null;\n}\n\nasync function validateField(store: InternalStore, name: string): Promise<string[]> {\n const entry = store.fields.get(name);\n if (!entry) return [];\n const value = store.values[name];\n const errs: string[] = [];\n for (const rule of entry.rules) {\n const err = await validateSingle(rule, value);\n if (err) errs.push(err);\n }\n store.errors[name] = errs;\n return errs;\n}\n\nfunction notifyField(store: InternalStore, name: string) {\n store.fieldSubs.get(name)?.forEach((fn) => fn());\n}\nfunction notifyAll(store: InternalStore) {\n store.formSubs.forEach((fn) => fn());\n}\n\nfunction buildInstance<V extends Record<string, unknown>>(store: InternalStore): FormInstance<V> {\n return {\n getFieldValue: <T,>(name: string) => store.values[name] as T,\n getFieldsValue: (names) => {\n if (!names) return { ...store.values } as V;\n const out: Record<string, unknown> = {};\n for (const n of names) out[n] = store.values[n];\n return out as V;\n },\n setFieldValue: (name, value) => {\n const prev = store.values[name];\n store.values[name] = value;\n store.touched.add(name);\n if (store.fields.has(name)) {\n void validateField(store, name).then(() => notifyField(store, name));\n }\n notifyField(store, name);\n notifyAll(store);\n if (prev !== value) store.onValuesChange?.({ [name]: value }, { ...store.values });\n },\n setFieldsValue: (values) => {\n const changed: Record<string, unknown> = {};\n for (const [k, v] of Object.entries(values)) {\n if (store.values[k] !== v) changed[k] = v;\n store.values[k] = v;\n store.touched.add(k);\n notifyField(store, k);\n }\n notifyAll(store);\n if (Object.keys(changed).length > 0) store.onValuesChange?.(changed, { ...store.values });\n },\n resetFields: (names) => {\n const keys = names ?? Array.from(store.fields.keys());\n for (const k of keys) {\n store.values[k] = store.initial[k];\n store.errors[k] = [];\n store.touched.delete(k);\n notifyField(store, k);\n }\n notifyAll(store);\n },\n validateFields: async (names) => {\n const keys = names ?? Array.from(store.fields.keys());\n const errorFields: ErrorField[] = [];\n for (const k of keys) {\n const errs = await validateField(store, k);\n notifyField(store, k);\n if (errs.length > 0) errorFields.push({ name: k, errors: errs });\n }\n notifyAll(store);\n if (errorFields.length > 0) {\n const err = new Error(\"Validation failed\") as Error & {\n errorFields: ErrorField[];\n values: Record<string, unknown>;\n };\n err.errorFields = errorFields;\n err.values = { ...store.values };\n throw err;\n }\n const out: Record<string, unknown> = {};\n for (const k of keys) out[k] = store.values[k];\n return out as V;\n },\n isFieldTouched: (name) => store.touched.has(name),\n getFieldError: (name) => store.errors[name] ?? [],\n submit: () => store.onSubmit?.(),\n };\n}\n\nconst STORE_SYMBOL = Symbol.for(\"lumina.form.store\");\n\ntype InstanceWithStore<V extends Record<string, unknown>> = FormInstance<V> & {\n [STORE_SYMBOL]: InternalStore;\n};\n\n/** `Form.useForm()` — create a form instance. Same shape as antd's hook. */\nexport function useForm<V extends Record<string, unknown> = Record<string, unknown>>(): [FormInstance<V>] {\n const ref = React.useRef<InstanceWithStore<V>>();\n if (!ref.current) {\n const store = makeStore();\n const instance = buildInstance<V>(store) as InstanceWithStore<V>;\n (instance as InstanceWithStore<V>)[STORE_SYMBOL] = store;\n ref.current = instance;\n }\n return [ref.current];\n}\n\nfunction getStore<V extends Record<string, unknown>>(instance: FormInstance<V>): InternalStore {\n return (instance as unknown as InstanceWithStore<V>)[STORE_SYMBOL];\n}\n\n/* ---------------------------- Context ---------------------------- */\n\ninterface FormCtxValue {\n store: InternalStore;\n layout: FormLayout;\n requiredMark: boolean;\n disabled: boolean;\n}\n\nconst FormCtx = React.createContext<FormCtxValue | null>(null);\n\n/* ---------------------------- Form Root ---------------------------- */\n\nexport interface FormProps<V extends Record<string, unknown> = Record<string, unknown>>\n extends Omit<React.FormHTMLAttributes<HTMLFormElement>, \"onChange\" | \"onSubmit\"> {\n form?: FormInstance<V>;\n layout?: FormLayout;\n initialValues?: Partial<V>;\n onFinish?: (values: V) => void;\n onFinishFailed?: (info: { values: Partial<V>; errorFields: ErrorField[] }) => void;\n onValuesChange?: (changed: Partial<V>, all: V) => void;\n /** Show the `*` mark before required field labels. Default true. */\n requiredMark?: boolean;\n /** Disable all fields inside. */\n disabled?: boolean;\n children?: React.ReactNode;\n className?: string;\n}\n\ntype FormRootComponent = <V extends Record<string, unknown> = Record<string, unknown>>(\n props: FormProps<V> & React.RefAttributes<HTMLFormElement>\n) => React.ReactElement | null;\n\nconst FormRootInner = <V extends Record<string, unknown> = Record<string, unknown>>(\n props: FormProps<V>,\n ref: React.ForwardedRef<HTMLFormElement>\n) => {\n const {\n form: externalForm,\n layout = \"horizontal\",\n initialValues,\n onFinish,\n onFinishFailed,\n onValuesChange,\n requiredMark = true,\n disabled = false,\n children,\n className = \"\",\n ...rest\n } = props;\n\n const [internalForm] = useForm<V>();\n const form = externalForm ?? internalForm;\n const store = getStore(form);\n\n // Apply initial values + wire callbacks on first render only.\n const initRef = React.useRef(false);\n if (!initRef.current) {\n if (initialValues) {\n for (const [k, v] of Object.entries(initialValues)) {\n store.initial[k] = v;\n if (store.values[k] === undefined) store.values[k] = v;\n }\n }\n initRef.current = true;\n }\n\n store.onValuesChange = onValuesChange\n ? (changed, all) => onValuesChange(changed as Partial<V>, all as V)\n : undefined;\n\n const doSubmit = React.useCallback(() => {\n form\n .validateFields()\n .then((values) => onFinish?.(values))\n .catch((err: Error & { errorFields?: ErrorField[]; values?: Partial<V> }) => {\n if (err?.errorFields) {\n onFinishFailed?.({\n values: (err.values ?? {}) as Partial<V>,\n errorFields: err.errorFields,\n });\n }\n });\n }, [form, onFinish, onFinishFailed]);\n\n store.onSubmit = doSubmit;\n\n const ctxValue = React.useMemo<FormCtxValue>(\n () => ({ store, layout, requiredMark, disabled }),\n [store, layout, requiredMark, disabled]\n );\n\n return (\n <FormCtx.Provider value={ctxValue}>\n <form\n ref={ref}\n className={`lumina-form layout-${layout} ${className}`}\n onSubmit={(e) => {\n e.preventDefault();\n doSubmit();\n }}\n {...rest}\n >\n {children}\n </form>\n </FormCtx.Provider>\n );\n};\n\nconst FormRoot = React.forwardRef(FormRootInner) as FormRootComponent;\n(FormRoot as any).displayName = \"Form\";\n\n/* ---------------------------- Form.Item ---------------------------- */\n\nexport interface FormItemProps {\n /** Field key. Omit for layout-only wrappers (no value binding). */\n name?: string;\n label?: React.ReactNode;\n rules?: Rule[];\n /** Render no wrapper — emit only the (bound) child. */\n noStyle?: boolean;\n /** Inject value into this prop name on the child. Default `\"value\"`. */\n valuePropName?: string;\n /** Listen for changes on this event name. Default `\"onChange\"`. */\n trigger?: string;\n /** Event names that trigger validation. Default `[\"onChange\"]`. */\n validateTrigger?: string | string[];\n /** Initial value (used when the form instance has no value yet). */\n initialValue?: unknown;\n /** Extra help text shown under the field. Hidden when an error is shown. */\n help?: React.ReactNode;\n /** Supplementary description below the help line. */\n extra?: React.ReactNode;\n /** Explicitly mark the field as required (cosmetic). */\n required?: boolean;\n /** Hide the entire item (still keeps the field in the form). */\n hidden?: boolean;\n children?: React.ReactNode;\n className?: string;\n style?: React.CSSProperties;\n}\n\nconst extractValue = (valuePropName: string, args: unknown[]) => {\n const first = args[0];\n if (first && typeof first === \"object\") {\n const anyFirst = first as { target?: { value?: unknown; checked?: unknown } };\n if (anyFirst.target && \"value\" in anyFirst.target) {\n return valuePropName === \"checked\" ? anyFirst.target.checked : anyFirst.target.value;\n }\n }\n return first;\n};\n\nexport const FormItem: React.FC<FormItemProps> = ({\n name,\n label,\n rules,\n noStyle,\n valuePropName = \"value\",\n trigger = \"onChange\",\n initialValue,\n help,\n extra,\n required,\n hidden,\n children,\n className = \"\",\n style,\n}) => {\n const ctx = React.useContext(FormCtx);\n const [, tick] = React.useReducer((n: number) => n + 1, 0);\n\n // Register field + subscribe to its changes.\n React.useEffect(() => {\n if (!ctx || !name) return;\n const store = ctx.store;\n if (initialValue !== undefined) {\n if (store.initial[name] === undefined) store.initial[name] = initialValue;\n if (store.values[name] === undefined) store.values[name] = initialValue;\n }\n store.fields.set(name, { rules: rules ?? [], initial: initialValue });\n let subs = store.fieldSubs.get(name);\n if (!subs) {\n subs = new Set();\n store.fieldSubs.set(name, subs);\n }\n subs.add(tick);\n return () => {\n subs!.delete(tick);\n store.fields.delete(name);\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [ctx, name]);\n\n // Keep rules fresh across re-renders.\n React.useEffect(() => {\n if (!ctx || !name) return;\n const entry = ctx.store.fields.get(name);\n if (entry) entry.rules = rules ?? [];\n }, [ctx, name, rules]);\n\n if (hidden) return null;\n\n const hasName = !!name;\n const isRequired =\n required === true || (rules?.some((r) => r.required) ?? false);\n\n // Unbound mode (no name) — render children as-is.\n if (!hasName) {\n const content = children as React.ReactNode;\n if (noStyle) return <>{content}</>;\n return (\n <div className={`form-item ${className}`} style={style}>\n {label && <div className=\"form-item-label\">{label}</div>}\n <div className=\"form-item-control\">{content}</div>\n {help && <div className=\"form-item-help\">{help}</div>}\n {extra && <div className=\"form-item-extra\">{extra}</div>}\n </div>\n );\n }\n\n const store = ctx?.store;\n const value = store?.values[name!];\n const errors = store?.errors[name!] ?? [];\n const hasError = errors.length > 0;\n\n const bound = React.isValidElement(children)\n ? React.cloneElement(children as React.ReactElement, {\n [valuePropName]: value ?? (valuePropName === \"checked\" ? false : \"\"),\n [trigger]: (...args: unknown[]) => {\n const next = extractValue(valuePropName, args);\n store?.values && (store.values[name!] = next);\n store?.touched.add(name!);\n if (store) {\n void validateField(store, name!).then(() => notifyField(store, name!));\n notifyField(store, name!);\n notifyAll(store);\n store.onValuesChange?.({ [name!]: next }, { ...store.values });\n }\n const childTrigger = (children as React.ReactElement).props?.[trigger];\n if (typeof childTrigger === \"function\") childTrigger(...args);\n },\n disabled:\n (children as React.ReactElement).props?.disabled ?? ctx?.disabled,\n ...(hasError ? { invalid: true } : {}),\n })\n : children;\n\n if (noStyle) return <>{bound}</>;\n\n return (\n <div className={`form-item ${hasError ? \"has-error\" : \"\"} ${className}`} style={style}>\n {label && (\n <div className=\"form-item-label\">\n {isRequired && ctx?.requiredMark !== false && (\n <span className=\"form-item-required\" aria-hidden>*</span>\n )}\n {label}\n </div>\n )}\n <div className=\"form-item-control\">{bound}</div>\n {hasError ? (\n <div className=\"form-item-error\">{errors[0]}</div>\n ) : help ? (\n <div className=\"form-item-help\">{help}</div>\n ) : null}\n {extra && <div className=\"form-item-extra\">{extra}</div>}\n </div>\n );\n};\n\n/* ---------------------------- Assembly ---------------------------- */\n\nexport const Form = FormRoot as typeof FormRoot & {\n Item: typeof FormItem;\n useForm: typeof useForm;\n};\nForm.Item = FormItem;\nForm.useForm = useForm;\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/StatusBar/StatusBar.tsx"],"names":["React","jsxs","Fragment","jsx"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgBO,IAAM,aAAA,GAAsBA,4BAA4C,CAAC;AAAA,EAC9E,IAAA;AAAA,EACA,IAAA,GAAO,SAAA;AAAA,EACP,OAAA;AAAA,EACA,SAAA,GAAY,EAAA;AAAA,EACZ,QAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAG,GAAA,KAAQ;AACT,EAAA,MAAM,0BACJC,eAAA,CAAAC,mBAAA,EAAA,EACG,QAAA,EAAA;AAAA,IAAA,IAAA,oBAAQC,cAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,qBAAA,EAAuB,QAAA,EAAA,IAAA,EAAK,CAAA;AAAA,IACpD,YAAY,IAAA,oBAAQA,cAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,wBAAwB,QAAA,EAAS;AAAA,GAAA,EACxE,CAAA;AAEF,EAAA,MAAM,GAAA,GAAM,uBAAuB,IAAI,CAAA,CAAA,EAAI,UAAU,WAAA,GAAc,EAAE,IAAI,SAAS,CAAA,CAAA;AAClF,EAAA,IAAI,OAAA,EAAS;AACX,IAAA,uBACEA,cAAA;AAAA,MAAC,QAAA;AAAA,MAAA;AAAA,QACC,GAAA;AAAA,QACA,IAAA,EAAK,QAAA;AAAA,QACL,SAAA,EAAW,GAAA;AAAA,QACX,OAAA;AAAA,QAEC,QAAA,EAAA;AAAA;AAAA,KACH;AAAA,EAEJ;AACA,EAAA,sCACG,KAAA,EAAA,EAAI,GAAA,EAAgD,WAAW,GAAA,EAAM,GAAG,MACtE,QAAA,EAAA,OAAA,EACH,CAAA;AAEJ,CAAC;AACD,aAAA,CAAc,WAAA,GAAc,eAAA;AAwB5B,IAAM,aAAA,GAAsBH,4BAA2C,CAAC;AAAA,EACtE,IAAA;AAAA,EACA,MAAA;AAAA,EACA,KAAA;AAAA,EACA,SAAA,GAAY,EAAA;AAAA,EACZ,QAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAG,GAAA,qBACDC,eAAA,CAAC,KAAA,EAAA,EAAI,GAAA,EAAU,SAAA,EAAW,CAAA,UAAA,EAAa,SAAS,CAAA,CAAA,EAAI,IAAA,EAAK,QAAA,EAAU,GAAG,IAAA,EACnE,QAAA,EAAA;AAAA,EAAA,IAAA,IAAQ,IAAA,oBAAQE,cAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,0BAA0B,QAAA,EAAA,IAAA,EAAK,CAAA;AAAA,EAC9D,UAAU,IAAA,oBAAQA,cAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,4BAA4B,QAAA,EAAA,MAAA,EAAO,CAAA;AAAA,EACpE,QAAA;AAAA,EACA,SAAS,IAAA,oBAAQA,cAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,2BAA2B,QAAA,EAAA,KAAA,EAAM;AAAA,CAAA,EACpE,CACD,CAAA;AACD,aAAA,CAAc,WAAA,GAAc,WAAA;AAErB,IAAM,SAAA,GAAY;AAEzB,SAAA,CAAU,IAAA,GAAO,aAAA","file":"chunk-EHZXEZI2.cjs","sourcesContent":["import \"../../styles/tokens.css\";\nimport \"../../styles/shared.css\";\nimport \"./StatusBar.css\";\nimport * as React from \"react\";\n\nexport interface StatusBarItemProps extends Omit<React.HTMLAttributes<HTMLDivElement>, \"children\"> {\n /** Optional leading node (usually an `<Icon />`). */\n icon?: React.ReactNode;\n /** Visual tone — shifts color only. */\n tone?: \"default\" | \"muted\" | \"accent\" | \"success\" | \"warning\" | \"danger\";\n /** Makes the item clickable (also renders as `<button>` when `onClick` is set). */\n onClick?: (e: React.MouseEvent<HTMLDivElement | HTMLButtonElement>) => void;\n children?: React.ReactNode;\n}\n\n/** `StatusBar.Item` — one inline slot. Put icon + text inside. */\nexport const StatusBarItem = React.forwardRef<HTMLElement, StatusBarItemProps>(({\n icon,\n tone = \"default\",\n onClick,\n className = \"\",\n children,\n ...rest\n}, ref) => {\n const content = (\n <>\n {icon && <span className=\"statusbar-item-icon\">{icon}</span>}\n {children != null && <span className=\"statusbar-item-label\">{children}</span>}\n </>\n );\n const cls = `statusbar-item tone-${tone} ${onClick ? \"clickable\" : \"\"} ${className}`;\n if (onClick) {\n return (\n <button\n ref={ref as React.ForwardedRef<HTMLButtonElement>}\n type=\"button\"\n className={cls}\n onClick={onClick as React.MouseEventHandler<HTMLButtonElement>}\n >\n {content}\n </button>\n );\n }\n return (\n <div ref={ref as React.ForwardedRef<HTMLDivElement>} className={cls} {...rest}>\n {content}\n </div>\n );\n});\nStatusBarItem.displayName = \"StatusBarItem\";\n\nexport interface StatusBarProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Left-aligned slot. */\n left?: React.ReactNode;\n /** Center slot — absolutely positioned, stays centered regardless of side widths. */\n center?: React.ReactNode;\n /** Right-aligned slot. */\n right?: React.ReactNode;\n children?: React.ReactNode;\n}\n\n/**\n * `StatusBar` — thin bottom bar for app state (branch, line/col, sync, etc.).\n * Pair with `TitleBar` to bracket the window chrome.\n *\n * @example\n * ```tsx\n * <StatusBar\n * left={<StatusBar.Item icon={<Icon name=\"check\" size={12} />} tone=\"success\">Ready</StatusBar.Item>}\n * right={<StatusBar.Item tone=\"muted\">UTF-8</StatusBar.Item>}\n * />\n * ```\n */\nconst StatusBarBase = React.forwardRef<HTMLDivElement, StatusBarProps>(({\n left,\n center,\n right,\n className = \"\",\n children,\n ...rest\n}, ref) => (\n <div ref={ref} className={`statusbar ${className}`} role=\"status\" {...rest}>\n {left != null && <div className=\"statusbar-section left\">{left}</div>}\n {center != null && <div className=\"statusbar-section center\">{center}</div>}\n {children}\n {right != null && <div className=\"statusbar-section right\">{right}</div>}\n </div>\n));\nStatusBarBase.displayName = \"StatusBar\";\n\nexport const StatusBar = StatusBarBase as typeof StatusBarBase & { Item: typeof StatusBarItem };\n\nStatusBar.Item = StatusBarItem;\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/Accordion/Accordion.tsx"],"names":["React","jsx","jsxs","Icon"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoCA,IAAM,cAAA,GAAyE,CAAC,EAAE,IAAA,EAAM,UAAS,KAAM;AACrG,EAAA,MAAM,QAAA,GAAiBA,wBAAuB,IAAI,CAAA;AAClD,EAAA,MAAM,CAAC,CAAA,EAAG,IAAI,CAAA,GAAUA,0BAAS,CAAC,CAAA;AAClC,EAAA,MAAM,CAAC,QAAA,EAAU,WAAW,CAAA,GAAUA,0BAAS,KAAK,CAAA;AAEpD,EAAMA,iCAAgB,MAAM;AAC1B,IAAA,MAAM,KAAK,QAAA,CAAS,OAAA;AACpB,IAAA,IAAI,CAAC,EAAA,EAAI;AACT,IAAA,IAAA,CAAK,GAAG,YAAY,CAAA;AACpB,IAAA,MAAM,KAAK,IAAI,cAAA,CAAe,MAAM,IAAA,CAAK,EAAA,CAAG,YAAY,CAAC,CAAA;AACzD,IAAA,EAAA,CAAG,QAAQ,EAAE,CAAA;AACb,IAAA,OAAO,MAAM,GAAG,UAAA,EAAW;AAAA,EAC7B,CAAA,EAAG,EAAE,CAAA;AAEL,EAAMA,2BAAU,MAAM;AACpB,IAAA,MAAM,EAAA,GAAK,qBAAA,CAAsB,MAAM,WAAA,CAAY,IAAI,CAAC,CAAA;AACxD,IAAA,OAAO,MAAM,qBAAqB,EAAE,CAAA;AAAA,EACtC,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,uBACEC,cAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAU,gBAAA;AAAA,MACV,KAAA,EAAO,EAAE,SAAA,EAAW,IAAA,GAAO,IAAI,CAAA,EAAG,UAAA,EAAY,QAAA,GAAW,MAAA,GAAY,MAAA,EAAO;AAAA,MAC5E,eAAa,CAAC,IAAA;AAAA,MAEd,yCAAC,KAAA,EAAA,EAAI,GAAA,EAAK,QAAA,EAAU,SAAA,EAAU,wBAAwB,QAAA,EAAS;AAAA;AAAA,GACjE;AAEJ,CAAA;AAGO,IAAM,SAAA,GAAkBD,4BAA2C,CAAC;AAAA,EACzE,KAAA;AAAA,EACA,QAAA,GAAW,KAAA;AAAA,EACX,SAAA,GAAY,KAAA;AAAA,EACZ,WAAA,GAAc,QAAA;AAAA,EACd,UAAA;AAAA,EACA,oBAAoB,EAAC;AAAA,EACrB,QAAA;AAAA,EACA,SAAA,GAAY,EAAA;AAAA,EACZ,GAAG;AACL,CAAA,EAAG,GAAA,KAAQ;AACT,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAUA,0BAAmB,iBAAiB,CAAA;AACpE,EAAA,MAAM,eAAe,UAAA,KAAe,MAAA;AACpC,EAAA,MAAM,IAAA,GAAO,eAAe,UAAA,GAAc,KAAA;AAG1C,EAAA,MAAM,UAAA,GAAa,aAAa,CAAC,QAAA;AAEjC,EAAA,MAAM,MAAA,GAAS,CAAC,CAAA,EAAW,YAAA,KAA2B;AACpD,IAAA,IAAI,WAAA,KAAgB,cAAc,YAAA,EAAc;AAChD,IAAA,MAAM,OAAO,IAAA,CAAK,QAAA,CAAS,CAAC,CAAA,GACxB,IAAA,CAAK,OAAO,CAAC,CAAA,KAAM,MAAM,CAAC,CAAA,GAC1B,aACA,CAAC,CAAC,IACF,CAAC,GAAG,MAAM,CAAC,CAAA;AACf,IAAA,IAAI,CAAC,YAAA,EAAc,QAAA,CAAS,IAAI,CAAA;AAChC,IAAA,QAAA,GAAW,IAAI,CAAA;AAAA,EACjB,CAAA;AAEA,EAAA,uBACEC,cAAA,CAAC,KAAA,EAAA,EAAI,GAAA,EAAU,SAAA,EAAW,CAAA,UAAA,EAAa,SAAS,CAAA,CAAA,EAAK,GAAG,IAAA,EACrD,QAAA,EAAA,KAAA,CAAM,GAAA,CAAI,CAAC,EAAA,KAAO;AACjB,IAAA,MAAM,IAAA,GAAO,IAAA,CAAK,QAAA,CAAS,EAAA,CAAG,GAAG,CAAA;AACjC,IAAA,MAAM,UAAA,GAAa,EAAA,CAAG,QAAA,IAAY,WAAA,KAAgB,UAAA;AAClD,IAAA,MAAM,eAAA,GAAkB,WAAA,KAAgB,QAAA,IAAY,CAAC,UAAA;AACrD,IAAA,uBACEC,eAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QAEC,SAAA,EAAW,CAAA,eAAA,EAAkB,IAAA,GAAO,MAAA,GAAS,EAAE,CAAA,CAAA,EAAI,UAAA,GAAa,UAAA,GAAa,EAAE,CAAA,CAAA,EAAI,WAAA,KAAgB,MAAA,GAAS,cAAc,EAAE,CAAA,CAAA;AAAA,QAE5H,QAAA,EAAA;AAAA,0BAAAA,eAAA;AAAA,YAAC,QAAA;AAAA,YAAA;AAAA,cACC,IAAA,EAAK,QAAA;AAAA,cACL,SAAA,EAAU,gBAAA;AAAA,cACV,QAAA,EAAU,UAAA;AAAA,cACV,SAAS,MAAM,eAAA,IAAmB,OAAO,EAAA,CAAG,GAAA,EAAK,GAAG,QAAQ,CAAA;AAAA,cAC5D,eAAA,EAAe,IAAA;AAAA,cAEf,QAAA,EAAA;AAAA,gCAAAD,cAAA,CAAC,MAAA,EAAA,EAAM,aAAG,KAAA,EAAM,CAAA;AAAA,gCAChBA,cAAA;AAAA,kBAAC,MAAA;AAAA,kBAAA;AAAA,oBACC,SAAA,EAAW,CAAA,cAAA,EAAiB,WAAA,KAAgB,MAAA,GAAS,eAAe,EAAE,CAAA,CAAA;AAAA,oBACtE,OAAA,EAAS,CAAC,CAAA,KAAM;AACd,sBAAA,IAAI,WAAA,KAAgB,MAAA,IAAU,CAAC,UAAA,EAAY;AACzC,wBAAA,CAAA,CAAE,eAAA,EAAgB;AAClB,wBAAA,MAAA,CAAO,EAAA,CAAG,GAAA,EAAK,EAAA,CAAG,QAAQ,CAAA;AAAA,sBAC5B;AAAA,oBACF,CAAA;AAAA,oBAEA,QAAA,kBAAAA,cAAA,CAACE,sBAAA,EAAA,EAAK,IAAA,EAAK,UAAA,EAAW,MAAM,EAAA,EAAI;AAAA;AAAA;AAClC;AAAA;AAAA,WACF;AAAA,0BACAF,cAAA,CAAC,cAAA,EAAA,EAAe,IAAA,EAAa,QAAA,EAAA,EAAA,CAAG,OAAA,EAAQ;AAAA;AAAA,OAAA;AAAA,MAvBnC,EAAA,CAAG;AAAA,KAwBV;AAAA,EAEJ,CAAC,CAAA,EACH,CAAA;AAEJ,CAAC;AACD,SAAA,CAAU,WAAA,GAAc,WAAA","file":"chunk-FBQLNAUI.cjs","sourcesContent":["import \"../../styles/tokens.css\";\nimport \"../../styles/shared.css\";\nimport \"./Accordion.css\";\nimport * as React from \"react\";\nimport { Icon } from \"../Icon\";\n\nexport interface AccordionItem {\n key: string;\n title: React.ReactNode;\n content: React.ReactNode;\n disabled?: boolean;\n}\n\nexport interface AccordionProps\n extends Omit<React.HTMLAttributes<HTMLDivElement>, \"onChange\"> {\n items: AccordionItem[];\n /** If true, multiple sections can be open at once. */\n multiple?: boolean;\n /**\n * Accordion mode — at most one item open at a time. Takes precedence over `multiple`\n * when both are set.\n */\n accordion?: boolean;\n /**\n * What triggers expansion.\n * - `\"header\"` (default): clicking anywhere on the header toggles.\n * - `\"icon\"`: only the chevron icon is clickable.\n * - `\"disabled\"`: the panel cannot be toggled.\n */\n collapsible?: \"header\" | \"icon\" | \"disabled\";\n activeKeys?: string[];\n defaultActiveKeys?: string[];\n onChange?: (keys: string[]) => void;\n className?: string;\n}\n\nconst AccordionPanel: React.FC<{ open: boolean; children: React.ReactNode }> = ({ open, children }) => {\n const innerRef = React.useRef<HTMLDivElement>(null);\n const [h, setH] = React.useState(0);\n const [animated, setAnimated] = React.useState(false);\n\n React.useLayoutEffect(() => {\n const el = innerRef.current;\n if (!el) return;\n setH(el.scrollHeight);\n const ro = new ResizeObserver(() => setH(el.scrollHeight));\n ro.observe(el);\n return () => ro.disconnect();\n }, []);\n\n React.useEffect(() => {\n const id = requestAnimationFrame(() => setAnimated(true));\n return () => cancelAnimationFrame(id);\n }, []);\n\n return (\n <div\n className=\"accordion-body\"\n style={{ maxHeight: open ? h : 0, transition: animated ? undefined : \"none\" }}\n aria-hidden={!open}\n >\n <div ref={innerRef} className=\"accordion-body-inner\">{children}</div>\n </div>\n );\n};\n\n/** `Accordion` — collapsible sections. */\nexport const Accordion = React.forwardRef<HTMLDivElement, AccordionProps>(({\n items,\n multiple = false,\n accordion = false,\n collapsible = \"header\",\n activeKeys,\n defaultActiveKeys = [],\n onChange,\n className = \"\",\n ...rest\n}, ref) => {\n const [inner, setInner] = React.useState<string[]>(defaultActiveKeys);\n const isControlled = activeKeys !== undefined;\n const keys = isControlled ? activeKeys! : inner;\n\n // accordion takes precedence over multiple\n const singleOpen = accordion || !multiple;\n\n const toggle = (k: string, itemDisabled?: boolean) => {\n if (collapsible === \"disabled\" || itemDisabled) return;\n const next = keys.includes(k)\n ? keys.filter((x) => x !== k)\n : singleOpen\n ? [k]\n : [...keys, k];\n if (!isControlled) setInner(next);\n onChange?.(next);\n };\n\n return (\n <div ref={ref} className={`accordion ${className}`} {...rest}>\n {items.map((it) => {\n const open = keys.includes(it.key);\n const isDisabled = it.disabled || collapsible === \"disabled\";\n const headerClickable = collapsible === \"header\" && !isDisabled;\n return (\n <div\n key={it.key}\n className={`accordion-item ${open ? \"open\" : \"\"} ${isDisabled ? \"disabled\" : \"\"} ${collapsible === \"icon\" ? \"icon-only\" : \"\"}`}\n >\n <button\n type=\"button\"\n className=\"accordion-head\"\n disabled={isDisabled}\n onClick={() => headerClickable && toggle(it.key, it.disabled)}\n aria-expanded={open}\n >\n <span>{it.title}</span>\n <span\n className={`accordion-chev${collapsible === \"icon\" ? \" clickable\" : \"\"}`}\n onClick={(e) => {\n if (collapsible === \"icon\" && !isDisabled) {\n e.stopPropagation();\n toggle(it.key, it.disabled);\n }\n }}\n >\n <Icon name=\"chevDown\" size={16} />\n </span>\n </button>\n <AccordionPanel open={open}>{it.content}</AccordionPanel>\n </div>\n );\n })}\n </div>\n );\n});\nAccordion.displayName = \"Accordion\";\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/Divider/Divider.tsx"],"names":["React","jsx"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoBO,IAAM,OAAA,GAAgBA,4BAAyC,CAAC;AAAA,EACrE,SAAA,GAAY,YAAA;AAAA,EACZ,KAAA;AAAA,EACA,MAAA;AAAA,EACA,MAAA;AAAA,EACA,WAAA,GAAc,QAAA;AAAA,EACd,SAAA,GAAY,EAAA;AAAA,EACZ,GAAG;AACL,CAAA,EAAG,GAAA,KAAQ;AACT,EAAA,MAAM,GAAA,GAAM;AAAA,IACV,SAAA;AAAA,IACA,SAAA;AAAA,IACA,MAAA,IAAU,QAAA;AAAA,IACV,MAAA,IAAU,QAAA;AAAA,IACV,KAAA,IAAS,SAAA,KAAc,YAAA,IAAgB,CAAA,OAAA,EAAU,WAAW,CAAA,CAAA;AAAA,IAC5D;AAAA,GACF,CACG,MAAA,CAAO,OAAO,CAAA,CACd,KAAK,GAAG,CAAA;AACX,EAAA,uBACEC,cAAA,CAAC,KAAA,EAAA,EAAI,GAAA,EAAU,SAAA,EAAW,KAAK,IAAA,EAAK,WAAA,EAAa,GAAG,IAAA,EACjD,mCAASA,cAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,eAAA,EAAiB,iBAAM,CAAA,EACnD,CAAA;AAEJ,CAAC;AACD,OAAA,CAAQ,WAAA,GAAc,SAAA","file":"chunk-FCIPCZAK.cjs","sourcesContent":["import \"../../styles/tokens.css\";\nimport \"../../styles/shared.css\";\nimport \"./Divider.css\";\nimport * as React from \"react\";\n\nexport interface DividerProps extends React.HTMLAttributes<HTMLDivElement> {\n direction?: \"horizontal\" | \"vertical\";\n label?: React.ReactNode;\n /** Use recessed groove styling. */\n sunken?: boolean;\n /** Render as dashed lines instead of solid. */\n dashed?: boolean;\n /**\n * Label position for horizontal dividers. Defaults to `\"center\"`.\n * Ignored when there is no `label`.\n */\n orientation?: \"left\" | \"center\" | \"right\";\n}\n\n/** `Divider` — visual separator, horizontal or vertical. */\nexport const Divider = React.forwardRef<HTMLDivElement, DividerProps>(({\n direction = \"horizontal\",\n label,\n sunken,\n dashed,\n orientation = \"center\",\n className = \"\",\n ...rest\n}, ref) => {\n const cls = [\n \"divider\",\n direction,\n sunken && \"sunken\",\n dashed && \"dashed\",\n label && direction === \"horizontal\" && `orient-${orientation}`,\n className,\n ]\n .filter(Boolean)\n .join(\" \");\n return (\n <div ref={ref} className={cls} role=\"separator\" {...rest}>\n {label && <span className=\"divider-label\">{label}</span>}\n </div>\n );\n});\nDivider.displayName = \"Divider\";\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/Toast/Toast.tsx"],"names":[],"mappings":"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","file":"chunk-FSOJHDXH.js","sourcesContent":["import \"../../styles/tokens.css\";\nimport \"../../styles/shared.css\";\nimport \"./Toast.css\";\nimport * as React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport { Icon } from \"../Icon\";\n\nexport type ToastType = \"info\" | \"success\" | \"warning\" | \"danger\";\n\nexport interface ToastItem {\n id: number;\n type: ToastType;\n title?: React.ReactNode;\n message?: React.ReactNode;\n duration?: number;\n}\n\ntype ListenerState = ToastItem[];\nconst listeners = new Set<(s: ListenerState) => void>();\nlet items: ListenerState = [];\nlet uid = 0;\nlet autoMounted = false;\n\nfunction emit() {\n if (listeners.size === 0 && !autoMounted && typeof document !== \"undefined\") {\n autoMounted = true;\n const div = document.createElement(\"div\");\n document.body.appendChild(div);\n const root = (ReactDOM as any).createRoot\n ? (ReactDOM as any).createRoot(div)\n : null;\n if (root) {\n root.render(React.createElement(ToastContainer));\n }\n }\n listeners.forEach((l) => l(items));\n}\n\nexport const toast = {\n show(t: Omit<ToastItem, \"id\">) {\n const id = ++uid;\n items = [...items, { ...t, id, duration: t.duration ?? 3200 }];\n emit();\n if (items[items.length - 1].duration! > 0) {\n setTimeout(() => toast.dismiss(id), items[items.length - 1].duration);\n }\n return id;\n },\n info: (message: React.ReactNode, title?: React.ReactNode) => toast.show({ type: \"info\", message, title }),\n success: (message: React.ReactNode, title?: React.ReactNode) => toast.show({ type: \"success\", message, title }),\n warn: (message: React.ReactNode, title?: React.ReactNode) => toast.show({ type: \"warning\", message, title }),\n error: (message: React.ReactNode, title?: React.ReactNode) => toast.show({ type: \"danger\", message, title }),\n dismiss(id: number) {\n items = items.filter((i) => i.id !== id);\n emit();\n },\n clear() {\n items = [];\n emit();\n },\n};\n\nexport interface ToastContainerProps extends React.HTMLAttributes<HTMLDivElement> {\n placement?: \"top-right\" | \"top-left\" | \"bottom-right\" | \"bottom-left\" | \"top-center\";\n}\n\n/** `ToastContainer` — mount once at your app root; subscribes to `toast.*` calls. */\nexport const ToastContainer = React.forwardRef<HTMLDivElement, ToastContainerProps>(({ placement = \"top-right\", className = \"\", ...rest }, ref) => {\n const [list, setList] = React.useState<ListenerState>(items);\n React.useEffect(() => {\n listeners.add(setList);\n return () => {\n listeners.delete(setList);\n };\n }, []);\n if (typeof document === \"undefined\") return null;\n return ReactDOM.createPortal(\n <div ref={ref} className={`toast-container ${placement} ${className}`} {...rest}>\n {list.map((t) => {\n const iconName =\n t.type === \"success\" ? \"check2\" : t.type === \"warning\" ? \"alert\" : t.type === \"danger\" ? \"alert\" : \"info\";\n return (\n <div key={t.id} className={`toast ${t.type}`} role=\"status\">\n <Icon name={iconName} size={18} className=\"toast-icon\" />\n <div className=\"toast-body\">\n {t.title && <div className=\"toast-title\">{t.title}</div>}\n {t.message && <div className=\"toast-msg\">{t.message}</div>}\n </div>\n <button type=\"button\" className=\"toast-close\" onClick={() => toast.dismiss(t.id)} aria-label=\"Dismiss\">\n <Icon name=\"x\" size={14} />\n </button>\n </div>\n );\n })}\n </div>,\n document.body\n );\n});\nToastContainer.displayName = \"ToastContainer\";\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/InputNumber/InputNumber.tsx"],"names":["React","jsxs","jsx","Icon","Fragment","Input"],"mappings":"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","file":"chunk-HHSVGNJA.cjs","sourcesContent":["import \"../../styles/tokens.css\";\nimport \"../../styles/shared.css\";\nimport \"./InputNumber.css\";\nimport * as React from \"react\";\nimport { Input } from \"../Input\";\nimport { Icon } from \"../Icon\";\n\nexport interface InputNumberProps\n extends Omit<\n React.InputHTMLAttributes<HTMLInputElement>,\n \"value\" | \"defaultValue\" | \"onChange\" | \"size\" | \"prefix\" | \"suffix\" | \"type\"\n > {\n /** Controlled value. `null` = empty field. */\n value?: number | null;\n /** Uncontrolled initial value. */\n defaultValue?: number;\n /** Fires with the parsed number (or `null` when the input is emptied). */\n onChange?: (value: number | null) => void;\n onBlur?: React.FocusEventHandler<HTMLInputElement>;\n onFocus?: React.FocusEventHandler<HTMLInputElement>;\n /** Fires when the Enter key is pressed (matches antd's `onPressEnter`). */\n onPressEnter?: React.KeyboardEventHandler<HTMLInputElement>;\n min?: number;\n max?: number;\n /** Step for up/down buttons + arrow keys. Default 1. */\n step?: number;\n /** Number of decimal places to round to. Omit for no rounding. */\n precision?: number;\n size?: \"sm\" | \"md\" | \"lg\";\n disabled?: boolean;\n readOnly?: boolean;\n placeholder?: string;\n /** Show the up/down stepper buttons. Default true. */\n controls?: boolean;\n invalid?: boolean;\n className?: string;\n prefix?: React.ReactNode;\n suffix?: React.ReactNode;\n}\n\n/**\n * `InputNumber` — numeric input with up/down stepper buttons. Arrow-key\n * and mouse-wheel increments; min / max clamping; optional rounding.\n *\n * @example\n * ```tsx\n * <InputNumber min={0} max={100} step={1} defaultValue={10} onChange={...} />\n * ```\n */\nexport const InputNumber = React.forwardRef<HTMLInputElement, InputNumberProps>(\n (\n {\n value,\n defaultValue,\n onChange,\n onBlur,\n onFocus,\n onPressEnter,\n min = -Infinity,\n max = Infinity,\n step = 1,\n precision,\n size = \"md\",\n disabled,\n readOnly,\n placeholder,\n controls = true,\n invalid,\n className = \"\",\n prefix,\n suffix,\n autoFocus,\n id,\n name,\n },\n ref\n ) => {\n const [inner, setInner] = React.useState<number | null>(defaultValue ?? null);\n const isControlled = value !== undefined;\n const current = isControlled ? (value as number | null) : inner;\n\n const [text, setText] = React.useState<string>(current == null ? \"\" : String(current));\n\n React.useEffect(() => {\n if (isControlled) setText(value == null ? \"\" : String(value));\n }, [value, isControlled]);\n\n const clamp = React.useCallback(\n (n: number) => Math.max(min, Math.min(max, n)),\n [min, max]\n );\n const round = React.useCallback(\n (n: number) => (precision != null ? Number(n.toFixed(precision)) : n),\n [precision]\n );\n\n const commit = (next: number | null) => {\n if (!isControlled) setInner(next);\n onChange?.(next);\n };\n\n const handleInput = (v: string) => {\n setText(v);\n if (v === \"\" || v === \"-\") {\n commit(null);\n return;\n }\n const parsed = Number(v);\n if (!Number.isNaN(parsed)) commit(clamp(round(parsed)));\n };\n\n const handleBlur: React.FocusEventHandler<HTMLInputElement> = (e) => {\n // Normalize displayed text to the committed numeric value.\n if (current == null) setText(\"\");\n else setText(String(current));\n onBlur?.(e);\n };\n\n const increment = (delta: number) => {\n if (disabled || readOnly) return;\n const base = current ?? 0;\n const next = clamp(round(base + delta));\n if (!isControlled) setInner(next);\n setText(String(next));\n onChange?.(next);\n };\n\n const handleKeyDown: React.KeyboardEventHandler<HTMLInputElement> = (e) => {\n if (e.key === \"ArrowUp\") { e.preventDefault(); increment(step); }\n if (e.key === \"ArrowDown\") { e.preventDefault(); increment(-step); }\n if (e.key === \"Enter\") onPressEnter?.(e);\n };\n\n const upDisabled = disabled || readOnly || (current != null && current >= max);\n const downDisabled = disabled || readOnly || (current != null && current <= min);\n\n const stepperSuffix = controls ? (\n <span className=\"ipn-steppers\" aria-hidden>\n <button\n type=\"button\"\n className=\"ipn-step up\"\n tabIndex={-1}\n disabled={upDisabled}\n onMouseDown={(e) => e.preventDefault()}\n onClick={() => increment(step)}\n >\n <Icon name=\"chevUp\" size={10} stroke={2.5} />\n </button>\n <button\n type=\"button\"\n className=\"ipn-step down\"\n tabIndex={-1}\n disabled={downDisabled}\n onMouseDown={(e) => e.preventDefault()}\n onClick={() => increment(-step)}\n >\n <Icon name=\"chevDown\" size={10} stroke={2.5} />\n </button>\n </span>\n ) : null;\n\n const finalSuffix =\n stepperSuffix && suffix\n ? (<>{suffix}{stepperSuffix}</>)\n : stepperSuffix ?? suffix;\n\n return (\n <Input\n ref={ref}\n id={id}\n name={name}\n size={size}\n value={text}\n placeholder={placeholder}\n disabled={disabled}\n readOnly={readOnly}\n invalid={invalid}\n autoFocus={autoFocus}\n prefix={prefix}\n suffix={finalSuffix}\n className={`input-number ${className}`}\n inputMode=\"decimal\"\n onChange={handleInput}\n onKeyDown={handleKeyDown}\n onBlur={handleBlur}\n onFocus={onFocus}\n />\n );\n }\n);\nInputNumber.displayName = \"InputNumber\";\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/Cascader/Cascader.tsx"],"names":["React","useFloating","jsxs","jsx","Icon","createPortal"],"mappings":"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","file":"chunk-HQO7EZNQ.cjs","sourcesContent":["import \"../../styles/tokens.css\";\nimport \"../../styles/shared.css\";\nimport \"./Cascader.css\";\nimport * as React from \"react\";\nimport { createPortal } from \"react-dom\";\nimport { Icon, type IconName } from \"../Icon\";\nimport { useFloating } from \"../../utils/useFloating\";\n\nexport interface CascaderOption {\n value: string;\n label: React.ReactNode;\n icon?: IconName;\n children?: CascaderOption[];\n disabled?: boolean;\n}\n\nexport interface CascaderProps\n extends Omit<React.HTMLAttributes<HTMLDivElement>, \"onChange\" | \"defaultValue\"> {\n options: CascaderOption[];\n value?: string[];\n defaultValue?: string[];\n onChange?: (path: string[]) => void;\n placeholder?: string;\n disabled?: boolean;\n className?: string;\n}\n\n/** `Cascader` — multi-column hierarchical selector. */\nexport const Cascader = React.forwardRef<HTMLDivElement, CascaderProps>(({\n options,\n value,\n defaultValue = [],\n onChange,\n placeholder = \"请选择\",\n disabled,\n className = \"\",\n ...rest\n}, ref) => {\n const [inner, setInner] = React.useState<string[]>(defaultValue);\n const isControlled = value !== undefined;\n const cur = isControlled ? value! : inner;\n const [open, setOpen] = React.useState(false);\n const [path, setPath] = React.useState<string[]>(cur);\n const panelRef = React.useRef<HTMLDivElement>(null);\n\n const { triggerRef, floatingStyle } = useFloating<HTMLDivElement>({\n open,\n placement: \"bottom\",\n panelWidth: 520,\n panelHeight: 260,\n });\n\n const setTriggerRef = React.useCallback(\n (node: HTMLDivElement | null) => {\n (triggerRef as React.MutableRefObject<HTMLDivElement | null>).current = node;\n if (typeof ref === \"function\") ref(node);\n else if (ref) ref.current = node;\n },\n [ref, triggerRef]\n );\n\n React.useEffect(() => {\n const h = (e: MouseEvent) => {\n const t = e.target as Node;\n if (triggerRef.current?.contains(t)) return;\n if (panelRef.current?.contains(t)) return;\n setOpen(false);\n };\n document.addEventListener(\"mousedown\", h);\n return () => document.removeEventListener(\"mousedown\", h);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n React.useEffect(() => {\n if (open) setPath(cur);\n }, [open, cur]);\n\n const columns: CascaderOption[][] = [options];\n let cursor: CascaderOption[] = options;\n for (const v of path) {\n const match: CascaderOption | undefined = cursor.find((o) => o.value === v);\n if (match && match.children) {\n cursor = match.children;\n columns.push(cursor);\n } else break;\n }\n\n const pick = (depth: number, val: string, hasChildren: boolean) => {\n const np = [...path.slice(0, depth), val];\n setPath(np);\n if (!hasChildren) {\n if (!isControlled) setInner(np);\n onChange?.(np);\n setOpen(false);\n }\n };\n\n const labels: React.ReactNode[] = [];\n let list: CascaderOption[] = options;\n for (const v of cur) {\n const m: CascaderOption | undefined = list.find((o) => o.value === v);\n if (!m) break;\n labels.push(m.label);\n if (!m.children) break;\n list = m.children;\n }\n\n return (\n <div ref={setTriggerRef} className={`cascader ${open ? \"open\" : \"\"} ${className}`} {...rest}>\n <button\n type=\"button\"\n className={`cascader-trigger ${labels.length === 0 ? \"placeholder\" : \"\"}`}\n disabled={disabled}\n onClick={() => !disabled && setOpen((o) => !o)}\n >\n <span style={{ flex: 1 }}>\n {labels.length ? labels.map((l, i) => <span key={i}>{i > 0 && \" / \"}{l}</span>) : placeholder}\n </span>\n <span style={{ position: \"absolute\", right: 12, color: \"var(--fg-subtle)\" }}>\n <Icon name=\"chevDown\" size={14} />\n </span>\n </button>\n {open && typeof document !== \"undefined\" &&\n createPortal(\n <div ref={panelRef} className=\"cascader-panel\" style={floatingStyle}>\n {columns.map((col, depth) => (\n <div key={depth} className=\"cascader-col\">\n {col.map((o) => {\n const isActive = path[depth] === o.value;\n const hasChildren = !!(o.children && o.children.length);\n return (\n <button\n key={o.value}\n type=\"button\"\n className={`cascader-item ${isActive ? \"active\" : \"\"}`}\n disabled={o.disabled}\n onClick={() => pick(depth, o.value, hasChildren)}\n >\n {o.icon && <Icon name={o.icon} size={13} />}\n <span>{o.label}</span>\n {hasChildren && (\n <span className=\"chev\">\n <Icon name=\"chevRight\" size={12} />\n </span>\n )}\n </button>\n );\n })}\n </div>\n ))}\n </div>,\n document.body\n )}\n </div>\n );\n});\nCascader.displayName = \"Cascader\";\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/Table/Table.tsx"],"names":["React","v","jsxs","Fragment","jsx","Checkbox","Icon","Pagination","useFloating","createPortal"],"mappings":"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","file":"chunk-IL523MTN.cjs","sourcesContent":["import \"../../styles/tokens.css\";\nimport \"../../styles/shared.css\";\nimport \"./Table.css\";\nimport * as React from \"react\";\nimport { createPortal } from \"react-dom\";\nimport { Icon } from \"../Icon\";\nimport { Checkbox } from \"../Checkbox\";\nimport { Pagination } from \"../Pagination\";\nimport { useFloating } from \"../../utils/useFloating\";\n\nexport type RowKey = string | number;\n\nexport interface TableColumnFilterItem {\n text: React.ReactNode;\n value: string | number;\n}\n\nexport interface TableColumn<Row = any> {\n key: string;\n title: React.ReactNode;\n /** Data key to read from row, or custom render. */\n dataIndex?: keyof Row;\n render?: (value: any, row: Row, index: number) => React.ReactNode;\n width?: number | string;\n align?: \"left\" | \"center\" | \"right\";\n sortable?: boolean;\n /** Filter options shown in header dropdown. Requires `onFilter` (or data index match). */\n filters?: TableColumnFilterItem[];\n /**\n * Predicate to decide whether a row matches a given filter value.\n * If omitted, falls back to strict equality on `row[dataIndex]`.\n */\n onFilter?: (value: string | number, row: Row) => boolean;\n /**\n * Default active filter values. When `filteredValue` is controlled externally via\n * `Table.filteredValue`, prefer managing it at the table level.\n */\n defaultFilteredValue?: (string | number)[];\n /** Controlled filter selection — when provided, makes the column's filter controlled. */\n filteredValue?: (string | number)[];\n}\n\nexport type TableVariant = \"default\" | \"striped\" | \"embossed\" | \"cards\";\n\nexport interface PaginationConfig {\n /** Current page (1-indexed). Makes pagination controlled. */\n current?: number;\n /** Uncontrolled initial page. */\n defaultCurrent?: number;\n /** Items per page. */\n pageSize?: number;\n /** Default items per page (uncontrolled). */\n defaultPageSize?: number;\n /** Total item count. Defaults to `data.length` when omitted. */\n total?: number;\n /** Fired when user picks a page or changes page size. */\n onChange?: (page: number, pageSize: number) => void;\n /** Reserved for future: jump-to-page input. */\n showQuickJumper?: boolean;\n /** Reserved for future: page size dropdown. */\n showSizeChanger?: boolean;\n /** Reserved for future: selectable page sizes. */\n pageSizeOptions?: number[];\n}\n\nexport interface RowSelectionConfig<Row = any> {\n /** \"checkbox\" (default) allows multi-select; \"radio\" allows only one row at a time. */\n type?: \"checkbox\" | \"radio\";\n /** Controlled list of selected row keys. */\n selectedRowKeys?: RowKey[];\n /** Uncontrolled initial selection. */\n defaultSelectedRowKeys?: RowKey[];\n /** Fired on selection change; receives the new keys and matching rows. */\n onChange?: (selectedRowKeys: RowKey[], selectedRows: Row[]) => void;\n /** Per-row switch toggling checkbox disabled state. */\n getCheckboxProps?: (row: Row) => { disabled?: boolean };\n}\n\nexport interface ExpandableConfig<Row = any> {\n /** Controlled expanded row keys. */\n expandedRowKeys?: RowKey[];\n /** Uncontrolled initial expanded row keys. */\n defaultExpandedRowKeys?: RowKey[];\n /** Fired when a row expands / collapses. */\n onExpand?: (expanded: boolean, row: Row) => void;\n /** Render function for the expanded panel. When omitted, no expand UI renders. */\n expandedRowRender?: (row: Row, index: number) => React.ReactNode;\n /** Decide whether a given row can be expanded. */\n rowExpandable?: (row: Row) => boolean;\n}\n\nexport interface TableScrollConfig {\n /** Horizontal scroll: min-width of the inner table. */\n x?: number | string;\n /** Vertical scroll: max body height (with sticky header). */\n y?: number | string;\n}\n\nexport interface TableProps<Row = any>\n extends Omit<React.HTMLAttributes<HTMLDivElement>, \"onSelect\"> {\n columns: TableColumn<Row>[];\n data: Row[];\n rowKey?: keyof Row | ((row: Row) => RowKey);\n /** Visual variant. */\n variant?: TableVariant;\n /** Hoverable rows. */\n hoverable?: boolean;\n /** Striped rows (shortcut for variant=\"striped\"). */\n striped?: boolean;\n\n /** Sort state — controlled. */\n sortKey?: string;\n sortDir?: \"asc\" | \"desc\";\n onSort?: (key: string) => void;\n\n /**\n * Row selection config — preferred API (antd-style).\n * When provided, takes precedence over `selectable` / `selected` / `onSelect`.\n */\n rowSelection?: RowSelectionConfig<Row>;\n\n /**\n * @deprecated Use `rowSelection` instead. Kept for backwards compatibility.\n */\n selectable?: boolean;\n /**\n * @deprecated Use `rowSelection.selectedRowKeys` instead.\n */\n selected?: RowKey[];\n /**\n * @deprecated Use `rowSelection.onChange` instead.\n */\n onSelect?: (keys: RowKey[]) => void;\n\n /** Expandable row config. */\n expandable?: ExpandableConfig<Row>;\n\n /**\n * Pagination config — `false` disables pagination; otherwise renders a bottom\n * pagination bar and slices the data accordingly.\n */\n pagination?: false | PaginationConfig;\n\n /** Horizontal / vertical scroll config. */\n scroll?: TableScrollConfig;\n\n /** Called when user clicks a row. */\n onRowClick?: (row: Row, index: number) => void;\n /** Empty state. */\n empty?: React.ReactNode;\n className?: string;\n}\n\ntype TableComponent = <Row extends Record<string, any> = any>(\n props: TableProps<Row> & React.RefAttributes<HTMLDivElement>\n) => React.ReactElement | null;\n\nconst TableInner = <Row extends Record<string, any> = any>({\n columns,\n data,\n rowKey,\n variant,\n hoverable = true,\n striped,\n sortKey,\n sortDir = \"asc\",\n onSort,\n rowSelection,\n selectable,\n selected = [],\n onSelect,\n expandable,\n pagination,\n scroll,\n onRowClick,\n empty = \"暂无数据\",\n className = \"\",\n style,\n ...rest\n}: TableProps<Row>, ref: React.ForwardedRef<HTMLDivElement>) => {\n const keyOf = React.useCallback(\n (row: Row, i: number): RowKey => {\n if (typeof rowKey === \"function\") return rowKey(row);\n if (rowKey) return row[rowKey] as any;\n return i;\n },\n [rowKey]\n );\n\n // ---------- Selection (rowSelection OR legacy selectable) ----------\n const selectionMode = rowSelection ? \"new\" : selectable ? \"legacy\" : \"off\";\n const selectionType = rowSelection?.type ?? \"checkbox\";\n\n const [innerSel, setInnerSel] = React.useState<RowKey[]>(\n rowSelection?.defaultSelectedRowKeys ?? []\n );\n const selControlledNew = rowSelection?.selectedRowKeys !== undefined;\n const selectedKeys: RowKey[] =\n selectionMode === \"new\"\n ? selControlledNew\n ? rowSelection!.selectedRowKeys!\n : innerSel\n : selectionMode === \"legacy\"\n ? selected\n : [];\n\n const commitSelected = (next: RowKey[], rows: Row[]) => {\n if (selectionMode === \"new\") {\n if (!selControlledNew) setInnerSel(next);\n rowSelection!.onChange?.(next, rows);\n } else if (selectionMode === \"legacy\") {\n onSelect?.(next);\n }\n };\n\n // ---------- Filters ----------\n // Per-column active filter values (internal state for uncontrolled columns).\n const [innerFilters, setInnerFilters] = React.useState<Record<string, (string | number)[]>>(\n () => {\n const out: Record<string, (string | number)[]> = {};\n for (const c of columns) {\n if (c.defaultFilteredValue && c.defaultFilteredValue.length) {\n out[c.key] = c.defaultFilteredValue;\n }\n }\n return out;\n }\n );\n const activeFilters: Record<string, (string | number)[]> = React.useMemo(() => {\n const out: Record<string, (string | number)[]> = {};\n for (const c of columns) {\n if (!c.filters?.length) continue;\n if (c.filteredValue !== undefined) {\n if (c.filteredValue.length) out[c.key] = c.filteredValue;\n } else if (innerFilters[c.key]?.length) {\n out[c.key] = innerFilters[c.key];\n }\n }\n return out;\n }, [columns, innerFilters]);\n\n const setColumnFilter = (col: TableColumn<Row>, values: (string | number)[]) => {\n if (col.filteredValue !== undefined) return; // controlled — parent must handle\n setInnerFilters((prev) => {\n const next = { ...prev };\n if (values.length === 0) delete next[col.key];\n else next[col.key] = values;\n return next;\n });\n };\n\n const filteredData = React.useMemo(() => {\n const entries = Object.entries(activeFilters);\n if (entries.length === 0) return data;\n return data.filter((row) => {\n for (const [colKey, vals] of entries) {\n const col = columns.find((c) => c.key === colKey);\n if (!col) continue;\n const match = vals.some((v) => {\n if (col.onFilter) return col.onFilter(v, row);\n if (col.dataIndex != null) {\n const cell = (row as any)[col.dataIndex];\n return cell === v || String(cell) === String(v);\n }\n return false;\n });\n if (!match) return false;\n }\n return true;\n });\n }, [data, columns, activeFilters]);\n\n // ---------- Pagination ----------\n const pagEnabled = pagination !== false && pagination !== undefined;\n const pagCfg: PaginationConfig = pagEnabled ? pagination! : {};\n const [innerPage, setInnerPage] = React.useState<number>(\n pagCfg.defaultCurrent ?? 1\n );\n const [innerPageSize, setInnerPageSize] = React.useState<number>(\n pagCfg.defaultPageSize ?? pagCfg.pageSize ?? 10\n );\n const pageControlled = pagCfg.current !== undefined;\n const curPage = pageControlled ? pagCfg.current! : innerPage;\n const curPageSize = pagCfg.pageSize ?? innerPageSize;\n const totalCount = pagCfg.total ?? filteredData.length;\n // Keep internal state in sync when caller changes pageSize uncontrolled->new.\n React.useEffect(() => {\n if (pagCfg.pageSize !== undefined && pagCfg.pageSize !== innerPageSize) {\n setInnerPageSize(pagCfg.pageSize);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [pagCfg.pageSize]);\n\n // Reset to page 1 if filters pushed us past the last page\n React.useEffect(() => {\n if (!pagEnabled) return;\n const pages = Math.max(1, Math.ceil(filteredData.length / curPageSize));\n if (!pageControlled && curPage > pages) setInnerPage(pages);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [filteredData.length, curPageSize, pagEnabled]);\n\n const pagedData = React.useMemo(() => {\n if (!pagEnabled) return filteredData;\n // If caller passes a pre-sliced page (total != data length and current is\n // controlled), trust them and don't re-slice.\n if (pagCfg.total !== undefined && pageControlled) {\n return filteredData;\n }\n const start = (curPage - 1) * curPageSize;\n return filteredData.slice(start, start + curPageSize);\n }, [pagEnabled, filteredData, curPage, curPageSize, pagCfg.total, pageControlled]);\n\n const onPageChange = (p: number) => {\n if (!pageControlled) setInnerPage(p);\n pagCfg.onChange?.(p, curPageSize);\n };\n\n // ---------- Expandable ----------\n const [innerExpanded, setInnerExpanded] = React.useState<RowKey[]>(\n expandable?.defaultExpandedRowKeys ?? []\n );\n const expandControlled = expandable?.expandedRowKeys !== undefined;\n const expandedKeys: RowKey[] = expandControlled\n ? expandable!.expandedRowKeys!\n : innerExpanded;\n const hasExpandable = !!expandable?.expandedRowRender;\n\n const toggleExpand = (row: Row, k: RowKey) => {\n const isOpen = expandedKeys.includes(k);\n const next = isOpen ? expandedKeys.filter((x) => x !== k) : [...expandedKeys, k];\n if (!expandControlled) setInnerExpanded(next);\n expandable?.onExpand?.(!isOpen, row);\n };\n\n // ---------- Derived bits ----------\n const v: TableVariant = variant ?? (striped ? \"striped\" : \"default\");\n const rowsToRender = pagedData;\n\n const selectableKeysOnPage = rowsToRender\n .map((r, i) => ({ row: r, k: keyOf(r, i) }))\n .filter(({ row }) => {\n if (selectionMode !== \"new\") return true;\n const props = rowSelection?.getCheckboxProps?.(row);\n return !props?.disabled;\n });\n\n const allSelectedOnPage =\n selectionMode !== \"off\" &&\n selectableKeysOnPage.length > 0 &&\n selectableKeysOnPage.every(({ k }) => selectedKeys.includes(k));\n const someSelectedOnPage =\n selectionMode !== \"off\" &&\n selectableKeysOnPage.some(({ k }) => selectedKeys.includes(k)) &&\n !allSelectedOnPage;\n\n const toggleRow = (row: Row, k: RowKey) => {\n if (selectionMode === \"new\") {\n const props = rowSelection?.getCheckboxProps?.(row);\n if (props?.disabled) return;\n let next: RowKey[];\n if (selectionType === \"radio\") {\n next = [k];\n } else {\n next = selectedKeys.includes(k)\n ? selectedKeys.filter((x) => x !== k)\n : [...selectedKeys, k];\n }\n const nextRows = data.filter((r, i) => next.includes(keyOf(r, i)));\n commitSelected(next, nextRows);\n } else if (selectionMode === \"legacy\") {\n const next = selectedKeys.includes(k)\n ? selectedKeys.filter((x) => x !== k)\n : [...selectedKeys, k];\n commitSelected(next, []);\n }\n };\n const toggleAll = () => {\n if (selectionMode === \"off\") return;\n if (selectionType === \"radio\") return; // radio doesn't support bulk toggle\n if (allSelectedOnPage) {\n // Deselect keys that appear on the current page\n const pageKeys = new Set(selectableKeysOnPage.map(({ k }) => k));\n const next = selectedKeys.filter((k) => !pageKeys.has(k));\n const nextRows = data.filter((r, i) => next.includes(keyOf(r, i)));\n commitSelected(next, nextRows);\n } else {\n // Select union of existing selection + page's selectable keys\n const set = new Set(selectedKeys);\n selectableKeysOnPage.forEach(({ k }) => set.add(k));\n const next = Array.from(set);\n const nextRows = data.filter((r, i) => next.includes(keyOf(r, i)));\n commitSelected(next, nextRows);\n }\n };\n\n const showSelCol = selectionMode !== \"off\";\n const showExpandCol = hasExpandable;\n const extraColCount = (showSelCol ? 1 : 0) + (showExpandCol ? 1 : 0);\n const totalColCount = columns.length + extraColCount;\n\n // ---------- Wrapper styling for scroll ----------\n const wrapStyle: React.CSSProperties = {};\n const innerTableStyle: React.CSSProperties = {};\n let wrapClass = \"table-wrap\";\n if (scroll?.y != null) {\n wrapStyle.maxHeight = scroll.y;\n wrapStyle.overflowY = \"auto\";\n wrapClass += \" scroll-y\";\n }\n if (scroll?.x != null) {\n wrapStyle.overflowX = \"auto\";\n innerTableStyle.minWidth = scroll.x;\n wrapClass += \" scroll-x\";\n }\n\n // ---------- Render ----------\n return (\n <>\n <div\n ref={ref}\n className={`${wrapClass} ${className}`}\n style={{ ...wrapStyle, ...style }}\n {...rest}\n >\n <table\n className={`table ${v} ${hoverable ? \"hoverable\" : \"\"} ${scroll?.y != null ? \"sticky-head\" : \"\"}`}\n style={innerTableStyle}\n >\n <thead>\n <tr>\n {showExpandCol && <th className=\"row-expand\" style={{ width: 40 }} />}\n {showSelCol && (\n <th className=\"row-check\" style={{ width: 44 }}>\n {selectionType === \"checkbox\" && (\n <Checkbox\n checked={allSelectedOnPage}\n indeterminate={someSelectedOnPage}\n onChange={toggleAll}\n />\n )}\n </th>\n )}\n {columns.map((c) => {\n const sorted = sortKey === c.key;\n const hasFilters = !!c.filters?.length;\n const filterActive = !!activeFilters[c.key]?.length;\n return (\n <th\n key={c.key}\n className={`${c.sortable ? \"sortable\" : \"\"} ${sorted ? \"sorted\" : \"\"} ${hasFilters ? \"filterable\" : \"\"}`}\n style={{ width: c.width, textAlign: c.align ?? \"left\" }}\n onClick={() => c.sortable && onSort?.(c.key)}\n >\n <span className=\"th-label\">{c.title}</span>\n {c.sortable && (\n <span className=\"sort-ind\">\n <Icon\n name={sorted ? (sortDir === \"asc\" ? \"chevUp\" : \"chevDown\") : \"chevDown\"}\n size={10}\n />\n </span>\n )}\n {hasFilters && (\n <ColumnFilterButton\n column={c}\n activeValues={activeFilters[c.key] ?? []}\n onApply={(values) => setColumnFilter(c, values)}\n active={filterActive}\n />\n )}\n </th>\n );\n })}\n </tr>\n </thead>\n <tbody>\n {rowsToRender.length === 0 ? (\n <tr>\n <td colSpan={totalColCount} className=\"table-empty\">\n {empty}\n </td>\n </tr>\n ) : (\n rowsToRender.map((row, i) => {\n const k = keyOf(row, i);\n const isSel = selectedKeys.includes(k);\n const selProps = rowSelection?.getCheckboxProps?.(row);\n const canExpand =\n hasExpandable && (expandable?.rowExpandable?.(row) ?? true);\n const isExpanded = canExpand && expandedKeys.includes(k);\n return (\n <React.Fragment key={k}>\n <tr\n className={`${onRowClick ? \"clickable\" : \"\"} ${isSel ? \"selected\" : \"\"}`}\n onClick={onRowClick ? () => onRowClick(row, i) : undefined}\n >\n {showExpandCol && (\n <td\n className=\"row-expand\"\n onClick={(e) => {\n e.stopPropagation();\n if (canExpand) toggleExpand(row, k);\n }}\n >\n {canExpand && (\n <button\n type=\"button\"\n className={`expand-btn ${isExpanded ? \"open\" : \"\"}`}\n aria-expanded={isExpanded}\n aria-label={isExpanded ? \"Collapse row\" : \"Expand row\"}\n onClick={(e) => {\n e.stopPropagation();\n toggleExpand(row, k);\n }}\n >\n <Icon name=\"chevRight\" size={12} />\n </button>\n )}\n </td>\n )}\n {showSelCol && (\n <td\n className=\"row-check\"\n onClick={(e) => {\n e.stopPropagation();\n toggleRow(row, k);\n }}\n >\n {selectionType === \"radio\" ? (\n <button\n type=\"button\"\n role=\"radio\"\n aria-checked={isSel}\n disabled={selProps?.disabled}\n className={`radio-dot ${isSel ? \"checked\" : \"\"}`}\n onClick={(e) => {\n e.stopPropagation();\n toggleRow(row, k);\n }}\n />\n ) : (\n <Checkbox\n checked={isSel}\n disabled={selProps?.disabled}\n onChange={() => toggleRow(row, k)}\n />\n )}\n </td>\n )}\n {columns.map((c) => {\n const val = c.dataIndex ? row[c.dataIndex] : undefined;\n return (\n <td key={c.key} style={{ textAlign: c.align ?? \"left\" }}>\n {c.render ? c.render(val, row, i) : (val as React.ReactNode)}\n </td>\n );\n })}\n </tr>\n {isExpanded && expandable?.expandedRowRender && (\n <tr className=\"expanded-row\">\n <td colSpan={totalColCount}>\n <div className=\"expanded-panel\">\n {expandable.expandedRowRender(row, i)}\n </div>\n </td>\n </tr>\n )}\n </React.Fragment>\n );\n })\n )}\n </tbody>\n </table>\n </div>\n {pagEnabled && (\n <div className=\"table-pagination\">\n <Pagination\n total={totalCount}\n pageSize={curPageSize}\n page={curPage}\n onChange={onPageChange}\n />\n </div>\n )}\n </>\n );\n};\n\n/** `Table` — neumorphic data table with sorting, selection and visual variants. */\nexport const Table = React.forwardRef(TableInner) as TableComponent;\n(Table as any).displayName = \"Table\";\n\n/* ============ Column filter button (header popover) ============ */\n\ninterface ColumnFilterButtonProps<Row> {\n column: TableColumn<Row>;\n activeValues: (string | number)[];\n onApply: (values: (string | number)[]) => void;\n active: boolean;\n}\n\nfunction ColumnFilterButton<Row>({\n column,\n activeValues,\n onApply,\n active,\n}: ColumnFilterButtonProps<Row>) {\n const [open, setOpen] = React.useState(false);\n const [draft, setDraft] = React.useState<(string | number)[]>(activeValues);\n const panelRef = React.useRef<HTMLDivElement>(null);\n\n const { triggerRef, floatingStyle } = useFloating<HTMLButtonElement>({\n open,\n placement: \"bottom\",\n panelWidth: 200,\n panelHeight: Math.min(260, (column.filters?.length ?? 0) * 32 + 80),\n alignCross: \"end\",\n });\n\n React.useEffect(() => {\n if (open) setDraft(activeValues);\n }, [open, activeValues]);\n\n React.useEffect(() => {\n if (!open) return;\n const h = (e: MouseEvent) => {\n const t = e.target as Node;\n if (triggerRef.current?.contains(t)) return;\n if (panelRef.current?.contains(t)) return;\n setOpen(false);\n };\n document.addEventListener(\"mousedown\", h);\n return () => document.removeEventListener(\"mousedown\", h);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [open]);\n\n const toggle = (v: string | number) =>\n setDraft((d) => (d.includes(v) ? d.filter((x) => x !== v) : [...d, v]));\n\n return (\n <>\n <button\n ref={triggerRef}\n type=\"button\"\n className={`filter-ind ${active ? \"active\" : \"\"}`}\n aria-label=\"Filter column\"\n onClick={(e) => {\n e.stopPropagation();\n setOpen((o) => !o);\n }}\n >\n <Icon name=\"filter\" size={10} />\n </button>\n {open &&\n typeof document !== \"undefined\" &&\n createPortal(\n <div\n ref={panelRef}\n className=\"table-filter-panel\"\n style={floatingStyle}\n onClick={(e) => e.stopPropagation()}\n >\n <div className=\"table-filter-options\">\n {(column.filters ?? []).map((f) => (\n <label key={String(f.value)} className=\"table-filter-item\">\n <Checkbox\n checked={draft.includes(f.value)}\n onChange={() => toggle(f.value)}\n />\n <span>{f.text}</span>\n </label>\n ))}\n </div>\n <div className=\"table-filter-actions\">\n <button\n type=\"button\"\n className=\"tf-btn ghost\"\n onClick={() => {\n setDraft([]);\n onApply([]);\n setOpen(false);\n }}\n >\n 重置\n </button>\n <button\n type=\"button\"\n className=\"tf-btn primary\"\n onClick={() => {\n onApply(draft);\n setOpen(false);\n }}\n >\n 确定\n </button>\n </div>\n </div>,\n document.body\n )}\n </>\n );\n}\n\n/* ============ TablePro ============ */\n\nexport interface TableProProps<Row = any> extends Omit<TableProps<Row>, \"title\"> {\n /** Toolbar slot — search input, filter, etc. */\n toolbar?: React.ReactNode;\n /** Right-aligned actions slot in toolbar. */\n actions?: React.ReactNode;\n /** Footer slot — usually <Pagination />. Optional now that `pagination` is built-in. */\n footer?: React.ReactNode;\n /** Title shown above the toolbar. */\n title?: React.ReactNode;\n}\n\n/**\n * `TablePro` — full-featured table card with toolbar, sortable/selectable rows,\n * variants, and a footer slot for pagination.\n *\n * Prefer the built-in `pagination` prop over rendering a `<Pagination />` in the\n * `footer` slot; `footer` still works for custom footers.\n */\nexport function TablePro<Row extends Record<string, any> = any>({\n toolbar,\n actions,\n footer,\n title,\n className = \"\",\n ...tableProps\n}: TableProProps<Row>) {\n return (\n <div className={`table-card ${className}`}>\n {(title || toolbar || actions) && (\n <div className=\"table-toolbar\">\n {title && <div className=\"table-title\">{title}</div>}\n <div className=\"table-toolbar-main\">{toolbar}</div>\n {actions && <div className=\"table-toolbar-actions\">{actions}</div>}\n </div>\n )}\n <Table {...tableProps} className=\"joined\" />\n {footer && <div className=\"table-footer\">{footer}</div>}\n </div>\n );\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/Modal/Modal.tsx"],"names":["React","jsxs","Fragment","jsx","Button","ReactDOM","Icon"],"mappings":"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","file":"chunk-JAGJQDAV.cjs","sourcesContent":["import \"../../styles/tokens.css\";\nimport \"../../styles/shared.css\";\nimport \"./Modal.css\";\nimport * as React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport { Icon } from \"../Icon\";\nimport { Button, type ButtonProps } from \"../Button\";\n\nexport interface ModalProps\n extends Omit<React.HTMLAttributes<HTMLDivElement>, \"title\" | \"children\" | \"onClose\"> {\n /** Whether the modal is visible. */\n open: boolean;\n /** Fired by mask click / close button / Esc. Also the fallback for cancel. */\n onClose?: () => void;\n /** Dedicated Cancel callback. Falls back to `onClose` when omitted. */\n onCancel?: () => void;\n /** Fired when the default OK button is clicked. */\n onOk?: () => void;\n title?: React.ReactNode;\n description?: React.ReactNode;\n /**\n * Footer content. Pass `null` to hide the footer, or a custom node to\n * replace the default OK / Cancel buttons.\n */\n footer?: React.ReactNode;\n children?: React.ReactNode;\n width?: number | string;\n /** Show the close (×) button. Default true. */\n closable?: boolean;\n /** Override the close icon node. */\n closeIcon?: React.ReactNode;\n /** Close when clicking the mask. Default true. */\n maskClosable?: boolean;\n /** Close on Escape key. Default true. */\n escClosable?: boolean;\n /** Label for the default OK button. */\n okText?: React.ReactNode;\n /** Label for the default Cancel button. */\n cancelText?: React.ReactNode;\n /** Extra props forwarded to the default OK button. */\n okButtonProps?: Partial<ButtonProps>;\n /** Extra props forwarded to the default Cancel button. */\n cancelButtonProps?: Partial<ButtonProps>;\n /** Show a spinner on the OK button (e.g. while an async submit is running). */\n confirmLoading?: boolean;\n /**\n * When true the modal's children are unmounted every time it closes.\n * Default `false` — children stay mounted so internal state survives\n * reopens, matching antd's default.\n */\n destroyOnClose?: boolean;\n /** Fires after the open/close animation finishes. */\n afterOpenChange?: (open: boolean) => void;\n /** Override the z-index of the overlay. */\n zIndex?: number;\n className?: string;\n}\n\nconst ANIM_MS = 280;\n\n/** `Modal` — centered dialog with mask. Renders into `document.body`. */\nexport const Modal = React.forwardRef<HTMLDivElement, ModalProps>(({\n open,\n onClose,\n onCancel,\n onOk,\n title,\n description,\n footer,\n children,\n width = 440,\n closable = true,\n closeIcon,\n maskClosable = true,\n escClosable = true,\n okText = \"确定\",\n cancelText = \"取消\",\n okButtonProps,\n cancelButtonProps,\n confirmLoading,\n destroyOnClose = false,\n afterOpenChange,\n zIndex,\n className = \"\",\n style,\n onClick,\n ...rest\n}, ref) => {\n const [hasOpenedOnce, setHasOpenedOnce] = React.useState(open);\n React.useEffect(() => {\n if (open) setHasOpenedOnce(true);\n }, [open]);\n\n const handleCancel = React.useCallback(() => {\n if (onCancel) onCancel();\n else onClose?.();\n }, [onCancel, onClose]);\n\n React.useEffect(() => {\n if (!open || !escClosable) return;\n const h = (e: KeyboardEvent) => {\n if (e.key === \"Escape\") handleCancel();\n };\n window.addEventListener(\"keydown\", h);\n return () => window.removeEventListener(\"keydown\", h);\n }, [open, escClosable, handleCancel]);\n\n const prevOpen = React.useRef(open);\n React.useEffect(() => {\n if (prevOpen.current !== open) {\n prevOpen.current = open;\n if (afterOpenChange) {\n const id = window.setTimeout(() => afterOpenChange(open), ANIM_MS);\n return () => window.clearTimeout(id);\n }\n }\n }, [open, afterOpenChange]);\n\n if (typeof document === \"undefined\") return null;\n if (!hasOpenedOnce) return null;\n if (!open && destroyOnClose) return null;\n\n const overlayStyle: React.CSSProperties | undefined =\n zIndex != null ? { zIndex } : undefined;\n\n const defaultFooter = (\n <>\n <Button variant=\"ghost\" onClick={handleCancel} {...cancelButtonProps}>\n {cancelText}\n </Button>\n <Button\n variant=\"primary\"\n loading={confirmLoading}\n onClick={() => onOk?.()}\n {...okButtonProps}\n >\n {okText}\n </Button>\n </>\n );\n\n return ReactDOM.createPortal(\n <div\n className={`modal-overlay ${open ? \"\" : \"hidden\"} ${className}`}\n style={overlayStyle}\n onClick={() => maskClosable && handleCancel()}\n role=\"presentation\"\n >\n <div\n ref={ref}\n className=\"modal\"\n style={{ width, ...style }}\n onClick={(e) => {\n onClick?.(e);\n e.stopPropagation();\n }}\n role=\"dialog\"\n aria-modal\n aria-hidden={!open}\n {...rest}\n >\n {(title || description || closable) && (\n <div className=\"modal-head\">\n <div className=\"modal-titles\">\n {title && <div className=\"modal-title\">{title}</div>}\n {description && <div className=\"modal-desc\">{description}</div>}\n </div>\n {closable && (\n <button\n type=\"button\"\n className=\"modal-close\"\n onClick={handleCancel}\n aria-label=\"Close\"\n >\n {closeIcon ?? <Icon name=\"x\" size={16} />}\n </button>\n )}\n </div>\n )}\n <div className=\"modal-body\">{children}</div>\n {footer === null ? null : (\n <div className=\"modal-foot\">{footer ?? defaultFooter}</div>\n )}\n </div>\n </div>,\n document.body\n );\n});\nModal.displayName = \"Modal\";\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/Button/Button.tsx"],"names":["React","jsxs","jsx","Icon"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAsCO,IAAM,MAAA,GAAeA,gBAAA,CAAA,UAAA;AAAA,EAC1B,CACE;AAAA,IACE,QAAA;AAAA,IACA,OAAA,GAAU,SAAA;AAAA,IACV,IAAA,GAAO,IAAA;AAAA,IACP,IAAA;AAAA,IACA,YAAA;AAAA,IACA,OAAA;AAAA,IACA,KAAA;AAAA,IACA,QAAA;AAAA,IACA,SAAA,GAAY,EAAA;AAAA,IACZ,IAAA,GAAO,QAAA;AAAA,IACP,GAAG;AAAA,KAEL,GAAA,KACG;AACH,IAAA,MAAM,GAAA,GAAM;AAAA,MACV,KAAA;AAAA,MACA,OAAA;AAAA,MACA,SAAS,IAAA,IAAQ,IAAA;AAAA,MACjB,OAAA,IAAW,SAAA;AAAA,MACX,KAAA,IAAS,OAAA;AAAA,MACT,QAAA,IAAY,UAAA;AAAA,MACZ;AAAA,KACF,CACG,MAAA,CAAO,OAAO,CAAA,CACd,KAAK,GAAG,CAAA;AAEX,IAAA,uBACEC,eAAA;AAAA,MAAC,QAAA;AAAA,MAAA;AAAA,QACC,GAAA;AAAA,QACA,IAAA;AAAA,QACA,SAAA,EAAW,GAAA;AAAA,QACX,UAAU,QAAA,IAAY,OAAA;AAAA,QACrB,GAAG,IAAA;AAAA,QAEH,QAAA,EAAA;AAAA,UAAA,OAAA,mBACCC,cAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,SAAA,EAAU,eAAW,IAAA,EAAC,CAAA,GACpC,IAAA,mBACFA,cAAA,CAACC,sBAAA,EAAA,EAAK,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,IAAI,CAAA,GAC1B,IAAA;AAAA,UACH,QAAA;AAAA,UACA,gCAAgBD,cAAA,CAACC,sBAAA,EAAA,EAAK,IAAA,EAAM,YAAA,EAAc,MAAM,EAAA,EAAI;AAAA;AAAA;AAAA,KACvD;AAAA,EAEJ;AACF;AACA,MAAA,CAAO,WAAA,GAAc,QAAA;AAYd,IAAM,UAAA,GAAmBH,gBAAA,CAAA,UAAA;AAAA,EAC9B,CAAC,EAAE,IAAA,EAAM,GAAA,EAAK,YAAY,EAAA,EAAI,GAAG,IAAA,EAAK,EAAG,GAAA,qBACvCE,cAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,SAAA,EAAW,QAAQ,SAAS,CAAA,CAAA;AAAA,MAC5B,YAAA,EAAY,GAAA,IAAO,IAAA,CAAK,YAAY,CAAA,IAAK,IAAA;AAAA,MACzC,KAAA,EAAO,GAAA;AAAA,MACN,GAAG,IAAA;AAAA,MAEJ,QAAA,kBAAAA,cAAA,CAACC,sBAAA,EAAA,EAAK,IAAA,EAAM,IAAA,EAAM,MAAM,EAAA,EAAI;AAAA;AAAA;AAGlC;AACA,UAAA,CAAW,WAAA,GAAc,YAAA","file":"chunk-JF2WNLPF.cjs","sourcesContent":["import \"../../styles/tokens.css\";\nimport \"../../styles/shared.css\";\nimport \"./Button.css\";\nimport * as React from \"react\";\nimport type { IconName } from \"../Icon\";\nimport { Icon } from \"../Icon\";\n\nexport type ButtonVariant = \"default\" | \"primary\" | \"ghost\" | \"danger\";\nexport type ButtonSize = \"sm\" | \"md\" | \"lg\";\n\nexport interface ButtonProps\n extends Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, \"type\"> {\n /** Visual variant. `primary` uses the accent color; `ghost` is borderless; `danger` is red. */\n variant?: ButtonVariant;\n /** Control height preset. */\n size?: ButtonSize;\n /** Leading icon. */\n icon?: IconName;\n /** Trailing icon. */\n trailingIcon?: IconName;\n /** Show spinner + disable interaction. */\n loading?: boolean;\n /** Make the button fill the container's width. */\n block?: boolean;\n /** Button type attribute. Defaults to \"button\" to avoid accidental form submits. */\n type?: \"button\" | \"submit\" | \"reset\";\n /** Extra class names. */\n className?: string;\n children?: React.ReactNode;\n}\n\n/**\n * `Button` — the primary action surface.\n *\n * @example\n * <Button variant=\"primary\" icon=\"plus\">新建</Button>\n * <Button variant=\"ghost\" loading>保存</Button>\n */\nexport const Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n (\n {\n children,\n variant = \"default\",\n size = \"md\",\n icon,\n trailingIcon,\n loading,\n block,\n disabled,\n className = \"\",\n type = \"button\",\n ...rest\n },\n ref\n ) => {\n const cls = [\n \"btn\",\n variant,\n size !== \"md\" && size,\n loading && \"loading\",\n block && \"block\",\n disabled && \"disabled\",\n className,\n ]\n .filter(Boolean)\n .join(\" \");\n\n return (\n <button\n ref={ref}\n type={type}\n className={cls}\n disabled={disabled || loading}\n {...rest}\n >\n {loading ? (\n <span className=\"spinner\" aria-hidden />\n ) : icon ? (\n <Icon name={icon} size={15} />\n ) : null}\n {children}\n {trailingIcon && <Icon name={trailingIcon} size={15} />}\n </button>\n );\n }\n);\nButton.displayName = \"Button\";\n\nexport interface IconButtonProps\n extends Omit<ButtonProps, \"icon\" | \"children\"> {\n icon: IconName;\n tip?: string;\n \"aria-label\"?: string;\n}\n\n/**\n * `IconButton` — square button containing just an icon. Pair with a tooltip.\n */\nexport const IconButton = React.forwardRef<HTMLButtonElement, IconButtonProps>(\n ({ icon, tip, className = \"\", ...rest }, ref) => (\n <Button\n ref={ref}\n className={`icon ${className}`}\n aria-label={tip || rest[\"aria-label\"] || icon}\n title={tip}\n {...rest}\n >\n <Icon name={icon} size={16} />\n </Button>\n )\n);\nIconButton.displayName = \"IconButton\";\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/Timeline/Timeline.tsx"],"names":[],"mappings":"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","file":"chunk-JS6U7UQS.js","sourcesContent":["import \"../../styles/tokens.css\";\nimport \"../../styles/shared.css\";\nimport \"./Timeline.css\";\nimport * as React from \"react\";\nimport { Spinner } from \"../Empty\";\n\nexport interface TimelineItemConfig {\n /** Unique key for the item */\n key?: string;\n /** Content displayed on the right (or main side) */\n children?: React.ReactNode;\n /** Label displayed on the opposite side (alternate/label mode) */\n label?: React.ReactNode;\n /** Dot color */\n color?: \"accent\" | \"success\" | \"warning\" | \"danger\" | \"info\" | \"muted\";\n /** Custom dot content (replaces default dot) */\n dot?: React.ReactNode;\n}\n\nexport interface TimelineProps\n extends Omit<React.HTMLAttributes<HTMLDivElement>, \"children\"> {\n /** Timeline items */\n items: TimelineItemConfig[];\n /**\n * Show a pending (loading) item at the end.\n * `true` renders a default spinner; a ReactNode renders custom content.\n */\n pending?: boolean | React.ReactNode;\n /** Text shown as the pending item's content */\n pendingContent?: React.ReactNode;\n /** Layout mode */\n mode?: \"left\" | \"right\" | \"alternate\";\n /** Reverse the order of items */\n reverse?: boolean;\n}\n\n/**\n * `Timeline` — vertical timeline with pending/loading state.\n *\n * @example\n * <Timeline items={[{ children: \"Created\" }, { children: \"In Progress\" }]} pending />\n */\nexport const Timeline = React.forwardRef<HTMLDivElement, TimelineProps>(\n (\n {\n items,\n pending = false,\n pendingContent = \"加载中...\",\n mode = \"left\",\n reverse = false,\n className = \"\",\n ...rest\n },\n ref\n ) => {\n const displayItems = [...items];\n if (reverse) displayItems.reverse();\n\n const hasPending = pending !== false;\n\n return (\n <div\n ref={ref}\n className={`timeline timeline-${mode} ${className}`}\n {...rest}\n >\n {displayItems.map((item, i) => (\n <TimelineItem\n key={item.key ?? i}\n item={item}\n isLast={!hasPending && i === displayItems.length - 1}\n position={getPosition(mode, i)}\n />\n ))}\n {hasPending && (\n <TimelineItem\n item={{\n children: pendingContent,\n dot: typeof pending === \"boolean\" ? undefined : pending,\n color: \"muted\",\n }}\n isLast\n isPending\n position={getPosition(mode, displayItems.length)}\n />\n )}\n </div>\n );\n }\n);\nTimeline.displayName = \"Timeline\";\n\nfunction getPosition(\n mode: \"left\" | \"right\" | \"alternate\",\n index: number\n): \"left\" | \"right\" {\n if (mode === \"left\") return \"left\";\n if (mode === \"right\") return \"right\";\n return index % 2 === 0 ? \"left\" : \"right\";\n}\n\ninterface TimelineItemInternalProps {\n item: TimelineItemConfig;\n isLast: boolean;\n isPending?: boolean;\n position: \"left\" | \"right\";\n}\n\nconst TimelineItem: React.FC<TimelineItemInternalProps> = ({\n item,\n isLast,\n isPending,\n position,\n}) => {\n const color = item.color ?? \"accent\";\n const cls = [\n \"timeline-item\",\n `timeline-item-${position}`,\n isLast ? \"timeline-item-last\" : \"\",\n isPending ? \"timeline-item-pending\" : \"\",\n ]\n .filter(Boolean)\n .join(\" \");\n\n return (\n <div className={cls}>\n <div className=\"timeline-item-label\">{item.label}</div>\n <div className=\"timeline-item-head\">\n <div className={`timeline-item-dot ${color} ${isPending ? \"pending\" : \"\"}`}>\n {item.dot ?? (isPending && <Spinner size={14} />)}\n </div>\n {!isLast && <div className=\"timeline-item-tail\" />}\n </div>\n <div className=\"timeline-item-content\">{item.children}</div>\n </div>\n );\n};\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/Alert/Alert.tsx"],"names":["React","jsxs","jsx","Icon"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAwBO,IAAM,KAAA,GAAcA,4BAAuC,CAAC;AAAA,EACjE,IAAA,GAAO,MAAA;AAAA,EACP,KAAA;AAAA,EACA,QAAA;AAAA,EACA,IAAA;AAAA,EACA,QAAA,GAAW,IAAA;AAAA,EACX,QAAA;AAAA,EACA,OAAA;AAAA,EACA,MAAA;AAAA,EACA,SAAA,GAAY,EAAA;AAAA,EACZ,GAAG;AACL,CAAA,EAAG,GAAA,KAAQ;AACT,EAAA,MAAM,QAAA,GACJ,SAAS,IAAA,KAAS,SAAA,GAAY,WAAW,IAAA,KAAS,SAAA,IAAa,IAAA,KAAS,QAAA,GAAW,OAAA,GAAU,MAAA,CAAA;AAC/F,EAAA,uBACEC,eAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,SAAA,EAAW,CAAA,MAAA,EAAS,IAAI,CAAA,CAAA,EAAI,KAAA,GAAQ,EAAA,GAAK,UAAU,CAAA,CAAA,EAAI,QAAA,GAAW,EAAA,GAAK,SAAS,CAAA,CAAA,EAAI,SAAS,CAAA,CAAA;AAAA,MAC7F,IAAA,EAAK,OAAA;AAAA,MACJ,GAAG,IAAA;AAAA,MAEH,QAAA,EAAA;AAAA,QAAA,QAAA,oBACCC,cAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,WAAA,EACd,QAAA,kBAAAA,cAAA,CAACC,0BAAK,IAAA,EAAM,QAAA,EAAU,IAAA,EAAM,EAAA,EAAI,CAAA,EAClC,CAAA;AAAA,wBAEFF,eAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,YAAA,EACZ,QAAA,EAAA;AAAA,UAAA,KAAA,oBAASC,cAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,aAAA,EAAe,QAAA,EAAA,KAAA,EAAM,CAAA;AAAA,UAC7C,QAAA,oBAAYA,cAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,cAAc,QAAA,EAAS;AAAA,SAAA,EACrD,CAAA;AAAA,QACC,MAAA,oBAAUA,cAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,gBAAgB,QAAA,EAAA,MAAA,EAAO,CAAA;AAAA,QAChD,4BACCA,cAAA,CAAC,QAAA,EAAA,EAAO,IAAA,EAAK,QAAA,EAAS,WAAU,aAAA,EAAc,OAAA,EAAS,OAAA,EAAS,YAAA,EAAW,WACzE,QAAA,kBAAAA,cAAA,CAACC,sBAAA,EAAA,EAAK,MAAK,GAAA,EAAI,IAAA,EAAM,IAAI,CAAA,EAC3B;AAAA;AAAA;AAAA,GAEJ;AAEJ,CAAC;AACD,KAAA,CAAM,WAAA,GAAc,OAAA","file":"chunk-KA3XLPQJ.cjs","sourcesContent":["import \"../../styles/tokens.css\";\nimport \"../../styles/shared.css\";\nimport \"./Alert.css\";\nimport * as React from \"react\";\nimport { Icon, type IconName } from \"../Icon\";\n\nexport type AlertTone = \"info\" | \"success\" | \"warning\" | \"danger\";\n\nexport interface AlertProps\n extends Omit<React.HTMLAttributes<HTMLDivElement>, \"title\" | \"children\"> {\n tone?: AlertTone;\n title?: React.ReactNode;\n children?: React.ReactNode;\n icon?: IconName;\n /** Controls the leading semantic icon. Defaults to `true`. */\n showIcon?: boolean;\n closable?: boolean;\n onClose?: () => void;\n /** Right-side action area, rendered after the content and before the close button. */\n action?: React.ReactNode;\n className?: string;\n}\n\n/** `Alert` — inline contextual message. */\nexport const Alert = React.forwardRef<HTMLDivElement, AlertProps>(({\n tone = \"info\",\n title,\n children,\n icon,\n showIcon = true,\n closable,\n onClose,\n action,\n className = \"\",\n ...rest\n}, ref) => {\n const iconName: IconName =\n icon ?? (tone === \"success\" ? \"check2\" : tone === \"warning\" || tone === \"danger\" ? \"alert\" : \"info\");\n return (\n <div\n ref={ref}\n className={`alert ${tone} ${title ? \"\" : \"no-title\"} ${showIcon ? \"\" : \"no-icon\"} ${className}`}\n role=\"alert\"\n {...rest}\n >\n {showIcon && (\n <span className=\"alert-ico\">\n <Icon name={iconName} size={14} />\n </span>\n )}\n <div className=\"alert-body\">\n {title && <div className=\"alert-title\">{title}</div>}\n {children && <div className=\"alert-desc\">{children}</div>}\n </div>\n {action && <div className=\"alert-action\">{action}</div>}\n {closable && (\n <button type=\"button\" className=\"alert-close\" onClick={onClose} aria-label=\"Dismiss\">\n <Icon name=\"x\" size={12} />\n </button>\n )}\n </div>\n );\n});\nAlert.displayName = \"Alert\";\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/Avatar/Avatar.tsx"],"names":[],"mappings":";;;;;;;AAkBO,IAAM,MAAA,GAAe,iBAAwC,CAAC;AAAA,EACnE,GAAA;AAAA,EACA,GAAA,GAAM,EAAA;AAAA,EACN,QAAA;AAAA,EACA,IAAA,GAAO,IAAA;AAAA,EACP,KAAA,GAAQ,QAAA;AAAA,EACR,MAAA;AAAA,EACA,SAAA,GAAY,EAAA;AAAA,EACZ,KAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAG,GAAA,KAAQ;AACT,EAAA,MAAM,UAAU,OAAO,IAAA,KAAS,QAAA,IAAY,IAAA,KAAS,OAAO,IAAA,GAAO,EAAA;AACnE,EAAA,MAAM,QAAA,GAAW,KAAA,KAAU,QAAA,GAAW,QAAA,GAAW,EAAA;AACjD,EAAA,MAAM,WAAA,GACJ,OAAO,IAAA,KAAS,QAAA,GAAW,EAAE,CAAC,QAAiB,GAAG,CAAA,EAAG,IAAI,CAAA,EAAA,CAAA,EAAM,GAAG,KAAA,EAAM,GAAI,SAAS,EAAC;AACxF,EAAA,MAAM,QAAQ,QAAA,IAAY,GAAA,CAAI,MAAM,CAAA,EAAG,CAAC,EAAE,WAAA,EAAY;AACtD,EAAA,uBACE,IAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,SAAA,EAAW,CAAA,OAAA,EAAU,OAAO,CAAA,CAAA,EAAI,QAAQ,CAAA,CAAA,EAAI,SAAS,CAAA,CAAA,CAAG,IAAA,EAAK,CAAE,OAAA,CAAQ,MAAA,EAAQ,GAAG,CAAA;AAAA,MAClF,KAAA,EAAO,WAAA;AAAA,MACN,GAAG,IAAA;AAAA,MAEH,QAAA,EAAA;AAAA,QAAA,GAAA,uBAAO,KAAA,EAAA,EAAI,GAAA,EAAU,KAAU,CAAA,mBAAK,GAAA,CAAC,UAAM,QAAA,EAAA,KAAA,EAAM,CAAA;AAAA,QACjD,0BAAU,GAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAW,CAAA,cAAA,EAAiB,MAAM,CAAA,CAAA,EAAI;AAAA;AAAA;AAAA,GACzD;AAEJ,CAAC;AACD,MAAA,CAAO,WAAA,GAAc,QAAA","file":"chunk-KWE2PXJQ.js","sourcesContent":["import \"../../styles/tokens.css\";\nimport \"../../styles/shared.css\";\nimport \"./Avatar.css\";\nimport * as React from \"react\";\n\nexport interface AvatarProps extends Omit<React.HTMLAttributes<HTMLDivElement>, \"children\"> {\n src?: string;\n alt?: string;\n /** Initials if no image. Auto-derived from `alt` if omitted. */\n initials?: string;\n size?: number | \"sm\" | \"md\" | \"lg\" | \"xl\";\n /** Shape — circular (default) or rounded-square. */\n shape?: \"circle\" | \"square\";\n /** Status dot. */\n status?: \"online\" | \"busy\" | \"away\" | \"offline\";\n}\n\n/** `Avatar` — user image or initials chip. */\nexport const Avatar = React.forwardRef<HTMLDivElement, AvatarProps>(({\n src,\n alt = \"\",\n initials,\n size = \"md\",\n shape = \"circle\",\n status,\n className = \"\",\n style,\n ...rest\n}, ref) => {\n const sizeCls = typeof size === \"string\" && size !== \"md\" ? size : \"\";\n const shapeCls = shape === \"square\" ? \"square\" : \"\";\n const customStyle: React.CSSProperties =\n typeof size === \"number\" ? { [\"--size\" as never]: `${size}px`, ...style } : style ?? {};\n const shown = initials ?? alt.slice(0, 2).toUpperCase();\n return (\n <div\n ref={ref}\n className={`avatar ${sizeCls} ${shapeCls} ${className}`.trim().replace(/\\s+/g, \" \")}\n style={customStyle}\n {...rest}\n >\n {src ? <img src={src} alt={alt} /> : <span>{shown}</span>}\n {status && <span className={`avatar-status ${status}`} />}\n </div>\n );\n});\nAvatar.displayName = \"Avatar\";\n"]}