@fangxinyan/lumina 0.5.1 → 0.6.0

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 (363) hide show
  1. package/dist/Accordion.cjs +3 -3
  2. package/dist/Accordion.d.cts +2 -2
  3. package/dist/Accordion.d.ts +2 -2
  4. package/dist/Accordion.js +2 -2
  5. package/dist/Alert.cjs +3 -3
  6. package/dist/Alert.d.cts +2 -2
  7. package/dist/Alert.d.ts +2 -2
  8. package/dist/Alert.js +2 -2
  9. package/dist/AppShell.cjs +5 -5
  10. package/dist/AppShell.d.cts +8 -8
  11. package/dist/AppShell.d.ts +8 -8
  12. package/dist/AppShell.js +1 -1
  13. package/dist/AutoComplete.cjs +4 -4
  14. package/dist/AutoComplete.d.cts +1 -4
  15. package/dist/AutoComplete.d.ts +1 -4
  16. package/dist/AutoComplete.js +3 -3
  17. package/dist/Avatar.cjs +2 -2
  18. package/dist/Avatar.d.cts +1 -1
  19. package/dist/Avatar.d.ts +1 -1
  20. package/dist/Avatar.js +1 -1
  21. package/dist/Button.cjs +4 -4
  22. package/dist/Button.js +2 -2
  23. package/dist/Calendar.cjs +3 -3
  24. package/dist/Calendar.d.cts +2 -2
  25. package/dist/Calendar.d.ts +2 -2
  26. package/dist/Calendar.js +2 -2
  27. package/dist/Cascader.cjs +3 -3
  28. package/dist/Cascader.d.cts +2 -2
  29. package/dist/Cascader.d.ts +2 -2
  30. package/dist/Cascader.js +2 -2
  31. package/dist/Checkbox.cjs +4 -4
  32. package/dist/Checkbox.d.cts +5 -5
  33. package/dist/Checkbox.d.ts +5 -5
  34. package/dist/Checkbox.js +2 -2
  35. package/dist/ColorPicker.cjs +2 -2
  36. package/dist/ColorPicker.d.cts +1 -3
  37. package/dist/ColorPicker.d.ts +1 -3
  38. package/dist/ColorPicker.js +1 -1
  39. package/dist/CommandPalette.cjs +4 -4
  40. package/dist/CommandPalette.d.cts +2 -2
  41. package/dist/CommandPalette.d.ts +2 -2
  42. package/dist/CommandPalette.js +3 -3
  43. package/dist/ContextMenu.cjs +2 -2
  44. package/dist/ContextMenu.d.cts +2 -2
  45. package/dist/ContextMenu.d.ts +2 -2
  46. package/dist/ContextMenu.js +1 -1
  47. package/dist/Divider.cjs +2 -2
  48. package/dist/Divider.d.cts +1 -1
  49. package/dist/Divider.d.ts +1 -1
  50. package/dist/Divider.js +1 -1
  51. package/dist/Drawer.cjs +3 -3
  52. package/dist/Drawer.d.cts +2 -2
  53. package/dist/Drawer.d.ts +2 -2
  54. package/dist/Drawer.js +2 -2
  55. package/dist/Empty.cjs +4 -4
  56. package/dist/Empty.d.cts +6 -6
  57. package/dist/Empty.d.ts +6 -6
  58. package/dist/Empty.js +1 -1
  59. package/dist/Form.cjs +4 -4
  60. package/dist/Form.d.cts +2 -2
  61. package/dist/Form.d.ts +2 -2
  62. package/dist/Form.js +1 -1
  63. package/dist/Icon.cjs +3 -3
  64. package/dist/Icon.d.cts +1 -1
  65. package/dist/Icon.d.ts +1 -1
  66. package/dist/Icon.js +1 -1
  67. package/dist/Image.cjs +4 -4
  68. package/dist/Image.d.cts +4 -4
  69. package/dist/Image.d.ts +4 -4
  70. package/dist/Image.js +2 -2
  71. package/dist/Input.cjs +4 -4
  72. package/dist/Input.js +2 -2
  73. package/dist/InputNumber.cjs +4 -4
  74. package/dist/InputNumber.d.cts +1 -5
  75. package/dist/InputNumber.d.ts +1 -5
  76. package/dist/InputNumber.js +3 -3
  77. package/dist/List.cjs +2 -2
  78. package/dist/List.d.cts +2 -2
  79. package/dist/List.d.ts +2 -2
  80. package/dist/List.js +1 -1
  81. package/dist/Modal.cjs +4 -4
  82. package/dist/Modal.d.cts +2 -2
  83. package/dist/Modal.d.ts +2 -2
  84. package/dist/Modal.js +3 -3
  85. package/dist/Pagination.cjs +5 -5
  86. package/dist/Pagination.d.cts +2 -2
  87. package/dist/Pagination.d.ts +2 -2
  88. package/dist/Pagination.js +4 -4
  89. package/dist/Popover.cjs +2 -2
  90. package/dist/Popover.d.cts +2 -2
  91. package/dist/Popover.d.ts +2 -2
  92. package/dist/Popover.js +1 -1
  93. package/dist/Progress-CHV7DN6Y.css +80 -0
  94. package/dist/Progress.cjs +2 -6
  95. package/dist/Progress.d.cts +5 -13
  96. package/dist/Progress.d.ts +5 -13
  97. package/dist/Progress.js +1 -1
  98. package/dist/Select.cjs +4 -4
  99. package/dist/Select.d.cts +6 -3
  100. package/dist/Select.d.ts +6 -3
  101. package/dist/Select.js +3 -3
  102. package/dist/Splitter.cjs +2 -2
  103. package/dist/Splitter.d.cts +2 -2
  104. package/dist/Splitter.d.ts +2 -2
  105. package/dist/Splitter.js +1 -1
  106. package/dist/StatusBar.cjs +3 -3
  107. package/dist/StatusBar.d.cts +3 -2
  108. package/dist/StatusBar.d.ts +3 -2
  109. package/dist/StatusBar.js +1 -1
  110. package/dist/Switch.cjs +2 -2
  111. package/dist/Switch.d.cts +2 -2
  112. package/dist/Switch.d.ts +2 -2
  113. package/dist/Switch.js +1 -1
  114. package/dist/Table.cjs +8 -8
  115. package/dist/Table.d.cts +4 -3
  116. package/dist/Table.d.ts +4 -3
  117. package/dist/Table.js +6 -6
  118. package/dist/Tabs.cjs +3 -3
  119. package/dist/Tabs.d.cts +5 -5
  120. package/dist/Tabs.d.ts +5 -5
  121. package/dist/Tabs.js +1 -1
  122. package/dist/Tag.cjs +4 -4
  123. package/dist/Tag.d.cts +2 -2
  124. package/dist/Tag.d.ts +2 -2
  125. package/dist/Tag.js +2 -2
  126. package/dist/Timeline.cjs +3 -3
  127. package/dist/Timeline.js +2 -2
  128. package/dist/Toast.cjs +4 -4
  129. package/dist/Toast.d.cts +2 -2
  130. package/dist/Toast.d.ts +2 -2
  131. package/dist/Toast.js +2 -2
  132. package/dist/Tooltip.cjs +2 -2
  133. package/dist/Tooltip.d.cts +2 -2
  134. package/dist/Tooltip.d.ts +2 -2
  135. package/dist/Tooltip.js +1 -1
  136. package/dist/Typography.cjs +7 -7
  137. package/dist/Typography.js +2 -2
  138. package/dist/{chunk-QVFEKGKI.cjs → chunk-2K5HZLXW.cjs} +6 -3
  139. package/dist/chunk-2K5HZLXW.cjs.map +1 -0
  140. package/dist/chunk-2LIX7ZHX.js +29 -0
  141. package/dist/chunk-2LIX7ZHX.js.map +1 -0
  142. package/dist/{chunk-3ES5QPAF.cjs → chunk-2TNJ7TC4.cjs} +22 -12
  143. package/dist/chunk-2TNJ7TC4.cjs.map +1 -0
  144. package/dist/chunk-3EGZ6TBF.cjs +65 -0
  145. package/dist/chunk-3EGZ6TBF.cjs.map +1 -0
  146. package/dist/{chunk-RFU5HN4E.js → chunk-3LJO33HI.js} +25 -7
  147. package/dist/chunk-3LJO33HI.js.map +1 -0
  148. package/dist/{chunk-UQB5OHMO.js → chunk-44AVDO3T.js} +27 -19
  149. package/dist/chunk-44AVDO3T.js.map +1 -0
  150. package/dist/{chunk-TAYFI4RG.cjs → chunk-474MXYO5.cjs} +4 -4
  151. package/dist/{chunk-TAYFI4RG.cjs.map → chunk-474MXYO5.cjs.map} +1 -1
  152. package/dist/{chunk-TMRSI543.js → chunk-4DNHASZU.js} +10 -8
  153. package/dist/chunk-4DNHASZU.js.map +1 -0
  154. package/dist/{chunk-UXABXEWT.js → chunk-4JHFGSNH.js} +24 -13
  155. package/dist/chunk-4JHFGSNH.js.map +1 -0
  156. package/dist/{chunk-E7UQSFKF.js → chunk-4XSP4HHZ.js} +18 -8
  157. package/dist/chunk-4XSP4HHZ.js.map +1 -0
  158. package/dist/{chunk-JQZFOIX6.js → chunk-5VIOJW6M.js} +141 -128
  159. package/dist/chunk-5VIOJW6M.js.map +1 -0
  160. package/dist/{chunk-WBL7LOIH.js → chunk-6CAEGNCK.js} +10 -8
  161. package/dist/chunk-6CAEGNCK.js.map +1 -0
  162. package/dist/{chunk-JELHUUM5.js → chunk-6FSOJLY6.js} +3 -3
  163. package/dist/{chunk-JELHUUM5.js.map → chunk-6FSOJLY6.js.map} +1 -1
  164. package/dist/{chunk-2OBQOEFD.cjs → chunk-6TRVGFFX.cjs} +16 -5
  165. package/dist/chunk-6TRVGFFX.cjs.map +1 -0
  166. package/dist/{chunk-7T2SLRNL.cjs → chunk-74VZZAUT.cjs} +14 -7
  167. package/dist/chunk-74VZZAUT.cjs.map +1 -0
  168. package/dist/{chunk-GR5STMOA.js → chunk-A3IJM7IX.js} +76 -50
  169. package/dist/chunk-A3IJM7IX.js.map +1 -0
  170. package/dist/{chunk-WZ73TWB2.cjs → chunk-AXRABZLY.cjs} +25 -7
  171. package/dist/chunk-AXRABZLY.cjs.map +1 -0
  172. package/dist/{chunk-X3JG3IR6.js → chunk-BSHHQOFY.js} +23 -18
  173. package/dist/chunk-BSHHQOFY.js.map +1 -0
  174. package/dist/{chunk-JSDQVVQB.js → chunk-CVEGVB2C.js} +17 -12
  175. package/dist/chunk-CVEGVB2C.js.map +1 -0
  176. package/dist/{chunk-ILVNMES2.js → chunk-D242UJZO.js} +14 -11
  177. package/dist/chunk-D242UJZO.js.map +1 -0
  178. package/dist/{chunk-RJNGXR5Y.js → chunk-DB5JMXOI.js} +11 -9
  179. package/dist/chunk-DB5JMXOI.js.map +1 -0
  180. package/dist/{chunk-OWNVDXRQ.js → chunk-DCX36FYD.js} +23 -10
  181. package/dist/chunk-DCX36FYD.js.map +1 -0
  182. package/dist/{chunk-3KQKEE5O.cjs → chunk-DH4NYYJP.cjs} +43 -18
  183. package/dist/chunk-DH4NYYJP.cjs.map +1 -0
  184. package/dist/{chunk-P4XPESR2.js → chunk-DUNQNSVK.js} +20 -10
  185. package/dist/chunk-DUNQNSVK.js.map +1 -0
  186. package/dist/{chunk-5PREWYTB.js → chunk-E6K6GYUC.js} +21 -27
  187. package/dist/chunk-E6K6GYUC.js.map +1 -0
  188. package/dist/{chunk-IHACXMOI.js → chunk-EARCKSI7.js} +6 -3
  189. package/dist/chunk-EARCKSI7.js.map +1 -0
  190. package/dist/chunk-EHZXEZI2.cjs +78 -0
  191. package/dist/chunk-EHZXEZI2.cjs.map +1 -0
  192. package/dist/{chunk-S7RFIMA3.cjs → chunk-FBQLNAUI.cjs} +11 -9
  193. package/dist/chunk-FBQLNAUI.cjs.map +1 -0
  194. package/dist/chunk-FCIPCZAK.cjs +53 -0
  195. package/dist/chunk-FCIPCZAK.cjs.map +1 -0
  196. package/dist/{chunk-DLGFIRVW.js → chunk-FSOJHDXH.js} +7 -6
  197. package/dist/chunk-FSOJHDXH.js.map +1 -0
  198. package/dist/{chunk-2D5VCIJZ.cjs → chunk-HHSVGNJA.cjs} +7 -7
  199. package/dist/chunk-HHSVGNJA.cjs.map +1 -0
  200. package/dist/{chunk-ZSR5JSYZ.cjs → chunk-HQO7EZNQ.cjs} +23 -13
  201. package/dist/chunk-HQO7EZNQ.cjs.map +1 -0
  202. package/dist/{chunk-V6466VMN.cjs → chunk-IL523MTN.cjs} +144 -131
  203. package/dist/chunk-IL523MTN.cjs.map +1 -0
  204. package/dist/{chunk-GT45MQAK.cjs → chunk-JAGJQDAV.cjs} +22 -13
  205. package/dist/chunk-JAGJQDAV.cjs.map +1 -0
  206. package/dist/{chunk-U7TAQLPN.cjs → chunk-JF2WNLPF.cjs} +6 -6
  207. package/dist/{chunk-U7TAQLPN.cjs.map → chunk-JF2WNLPF.cjs.map} +1 -1
  208. package/dist/{chunk-S3NIRNWM.js → chunk-JS6U7UQS.js} +3 -3
  209. package/dist/{chunk-S3NIRNWM.js.map → chunk-JS6U7UQS.js.map} +1 -1
  210. package/dist/{chunk-H2QTLV5T.cjs → chunk-KA3XLPQJ.cjs} +34 -9
  211. package/dist/chunk-KA3XLPQJ.cjs.map +1 -0
  212. package/dist/{chunk-NS3C2ZSE.js → chunk-KWE2PXJQ.js} +8 -5
  213. package/dist/chunk-KWE2PXJQ.js.map +1 -0
  214. package/dist/{chunk-TGUDT3GK.js → chunk-LSQD2GFA.js} +4 -4
  215. package/dist/chunk-LSQD2GFA.js.map +1 -0
  216. package/dist/{chunk-D26YHP2Y.cjs → chunk-MU4GGX6C.cjs} +14 -12
  217. package/dist/chunk-MU4GGX6C.cjs.map +1 -0
  218. package/dist/{chunk-3YYOYDKI.js → chunk-MXIWTYNC.js} +16 -6
  219. package/dist/chunk-MXIWTYNC.js.map +1 -0
  220. package/dist/{chunk-5EAVXFFD.cjs → chunk-NRP3X3PE.cjs} +17 -12
  221. package/dist/chunk-NRP3X3PE.cjs.map +1 -0
  222. package/dist/{chunk-DF5K2BZ2.cjs → chunk-P4CGE5C7.cjs} +17 -7
  223. package/dist/chunk-P4CGE5C7.cjs.map +1 -0
  224. package/dist/{chunk-5SJJI3HL.js → chunk-PX5ABNKV.js} +19 -10
  225. package/dist/chunk-PX5ABNKV.js.map +1 -0
  226. package/dist/{chunk-WKNVNN2K.cjs → chunk-QCNHDDSD.cjs} +36 -13
  227. package/dist/chunk-QCNHDDSD.cjs.map +1 -0
  228. package/dist/{chunk-5N7347MI.js → chunk-QRSPBK3X.js} +8 -6
  229. package/dist/chunk-QRSPBK3X.js.map +1 -0
  230. package/dist/{chunk-XT7RXXOE.js → chunk-RHZOBQON.js} +35 -13
  231. package/dist/chunk-RHZOBQON.js.map +1 -0
  232. package/dist/{chunk-P2AV5BD7.cjs → chunk-RNVE2LMJ.cjs} +33 -8
  233. package/dist/chunk-RNVE2LMJ.cjs.map +1 -0
  234. package/dist/{chunk-TQLCIXCK.cjs → chunk-RXL26GSI.cjs} +28 -5
  235. package/dist/chunk-RXL26GSI.cjs.map +1 -0
  236. package/dist/{chunk-UUY7EDVJ.cjs → chunk-S3OSBW7R.cjs} +19 -14
  237. package/dist/chunk-S3OSBW7R.cjs.map +1 -0
  238. package/dist/{chunk-33TIL25B.cjs → chunk-SREMTSVI.cjs} +47 -19
  239. package/dist/chunk-SREMTSVI.cjs.map +1 -0
  240. package/dist/{chunk-6GNFRP2H.js → chunk-SWB57EA2.js} +9 -7
  241. package/dist/chunk-SWB57EA2.js.map +1 -0
  242. package/dist/{chunk-FLPHVK45.js → chunk-T7ZBJJC4.js} +12 -7
  243. package/dist/chunk-T7ZBJJC4.js.map +1 -0
  244. package/dist/chunk-TC5ZL2OS.cjs +165 -0
  245. package/dist/chunk-TC5ZL2OS.cjs.map +1 -0
  246. package/dist/{chunk-I7UJA6RM.cjs → chunk-V24B7KWT.cjs} +12 -10
  247. package/dist/chunk-V24B7KWT.cjs.map +1 -0
  248. package/dist/{chunk-BIXW4ZYW.cjs → chunk-V5KSJITO.cjs} +7 -7
  249. package/dist/{chunk-BIXW4ZYW.cjs.map → chunk-V5KSJITO.cjs.map} +1 -1
  250. package/dist/{chunk-IJIQ4H6C.cjs → chunk-WFFWVQK4.cjs} +7 -7
  251. package/dist/{chunk-IJIQ4H6C.cjs.map → chunk-WFFWVQK4.cjs.map} +1 -1
  252. package/dist/{chunk-LWN2PXW7.js → chunk-WLFMOWUY.js} +3 -3
  253. package/dist/{chunk-LWN2PXW7.js.map → chunk-WLFMOWUY.js.map} +1 -1
  254. package/dist/{chunk-N5W6XJI2.js → chunk-X3QINITU.js} +16 -5
  255. package/dist/chunk-X3QINITU.js.map +1 -0
  256. package/dist/{chunk-AJEF2ZB7.cjs → chunk-XMFVAYBP.cjs} +9 -8
  257. package/dist/chunk-XMFVAYBP.cjs.map +1 -0
  258. package/dist/{chunk-WR3FML2W.cjs → chunk-XMINE4TN.cjs} +28 -17
  259. package/dist/chunk-XMINE4TN.cjs.map +1 -0
  260. package/dist/{chunk-YZ2I7CDF.cjs → chunk-XXE5TQ7I.cjs} +9 -7
  261. package/dist/chunk-XXE5TQ7I.cjs.map +1 -0
  262. package/dist/{chunk-UEHONGPZ.js → chunk-XYGRVPUA.js} +33 -8
  263. package/dist/chunk-XYGRVPUA.js.map +1 -0
  264. package/dist/chunk-Y7BZMMAV.cjs +51 -0
  265. package/dist/chunk-Y7BZMMAV.cjs.map +1 -0
  266. package/dist/{chunk-HHPYY4LH.js → chunk-YRAQRENN.js} +38 -11
  267. package/dist/chunk-YRAQRENN.js.map +1 -0
  268. package/dist/{chunk-BPDWBY6Y.cjs → chunk-YVSZLQTQ.cjs} +19 -9
  269. package/dist/chunk-YVSZLQTQ.cjs.map +1 -0
  270. package/dist/{chunk-TCPTBLDV.cjs → chunk-ZA36BJIY.cjs} +38 -11
  271. package/dist/chunk-ZA36BJIY.cjs.map +1 -0
  272. package/dist/{chunk-47Z4NIU4.js → chunk-ZHCQEJ2Z.js} +14 -7
  273. package/dist/chunk-ZHCQEJ2Z.js.map +1 -0
  274. package/dist/{chunk-D3GZSL2B.cjs → chunk-ZM4P6ELG.cjs} +45 -23
  275. package/dist/chunk-ZM4P6ELG.cjs.map +1 -0
  276. package/dist/{chunk-4ADDAZK3.js → chunk-ZN6VS6SO.js} +18 -13
  277. package/dist/chunk-ZN6VS6SO.js.map +1 -0
  278. package/dist/{chunk-AZRJZM7W.js → chunk-ZPDMAMWC.js} +21 -11
  279. package/dist/chunk-ZPDMAMWC.js.map +1 -0
  280. package/dist/{chunk-GB5NAXBP.js → chunk-ZZXNHPF3.js} +3 -3
  281. package/dist/{chunk-GB5NAXBP.js.map → chunk-ZZXNHPF3.js.map} +1 -1
  282. package/dist/index.cjs +94 -98
  283. package/dist/index.cjs.map +1 -1
  284. package/dist/index.d.cts +2 -2
  285. package/dist/index.d.ts +2 -2
  286. package/dist/index.js +37 -37
  287. package/dist/index.js.map +1 -1
  288. package/dist/styles.css +50 -32
  289. package/docs/llms/appshell.md +36 -0
  290. package/docs/llms/progress.md +10 -18
  291. package/docs/llms.md +7 -5
  292. package/package.json +76 -1
  293. package/dist/Progress-IXRSO5TW.css +0 -63
  294. package/dist/chunk-2D5VCIJZ.cjs.map +0 -1
  295. package/dist/chunk-2OBQOEFD.cjs.map +0 -1
  296. package/dist/chunk-33TIL25B.cjs.map +0 -1
  297. package/dist/chunk-3ES5QPAF.cjs.map +0 -1
  298. package/dist/chunk-3KQKEE5O.cjs.map +0 -1
  299. package/dist/chunk-3YYOYDKI.js.map +0 -1
  300. package/dist/chunk-47Z4NIU4.js.map +0 -1
  301. package/dist/chunk-4ADDAZK3.js.map +0 -1
  302. package/dist/chunk-5BFETKVP.cjs +0 -52
  303. package/dist/chunk-5BFETKVP.cjs.map +0 -1
  304. package/dist/chunk-5EAVXFFD.cjs.map +0 -1
  305. package/dist/chunk-5N7347MI.js.map +0 -1
  306. package/dist/chunk-5PREWYTB.js.map +0 -1
  307. package/dist/chunk-5SJJI3HL.js.map +0 -1
  308. package/dist/chunk-6GNFRP2H.js.map +0 -1
  309. package/dist/chunk-7T2SLRNL.cjs.map +0 -1
  310. package/dist/chunk-7YQWG7HR.cjs +0 -45
  311. package/dist/chunk-7YQWG7HR.cjs.map +0 -1
  312. package/dist/chunk-AJEF2ZB7.cjs.map +0 -1
  313. package/dist/chunk-AZRJZM7W.js.map +0 -1
  314. package/dist/chunk-BPDWBY6Y.cjs.map +0 -1
  315. package/dist/chunk-D26YHP2Y.cjs.map +0 -1
  316. package/dist/chunk-D3GZSL2B.cjs.map +0 -1
  317. package/dist/chunk-DF5K2BZ2.cjs.map +0 -1
  318. package/dist/chunk-DLGFIRVW.js.map +0 -1
  319. package/dist/chunk-E7UQSFKF.js.map +0 -1
  320. package/dist/chunk-FLPHVK45.js.map +0 -1
  321. package/dist/chunk-GR5STMOA.js.map +0 -1
  322. package/dist/chunk-GT45MQAK.cjs.map +0 -1
  323. package/dist/chunk-H2QTLV5T.cjs.map +0 -1
  324. package/dist/chunk-HHPYY4LH.js.map +0 -1
  325. package/dist/chunk-I7UJA6RM.cjs.map +0 -1
  326. package/dist/chunk-IHACXMOI.js.map +0 -1
  327. package/dist/chunk-ILVNMES2.js.map +0 -1
  328. package/dist/chunk-IZDJCEMF.cjs +0 -31
  329. package/dist/chunk-IZDJCEMF.cjs.map +0 -1
  330. package/dist/chunk-JQZFOIX6.js.map +0 -1
  331. package/dist/chunk-JSDQVVQB.js.map +0 -1
  332. package/dist/chunk-N5W6XJI2.js.map +0 -1
  333. package/dist/chunk-NQQWCIE6.cjs +0 -20
  334. package/dist/chunk-NQQWCIE6.cjs.map +0 -1
  335. package/dist/chunk-NS3C2ZSE.js.map +0 -1
  336. package/dist/chunk-OWNVDXRQ.js.map +0 -1
  337. package/dist/chunk-P2AV5BD7.cjs.map +0 -1
  338. package/dist/chunk-P4XPESR2.js.map +0 -1
  339. package/dist/chunk-QVFEKGKI.cjs.map +0 -1
  340. package/dist/chunk-RFU5HN4E.js.map +0 -1
  341. package/dist/chunk-RJNGXR5Y.js.map +0 -1
  342. package/dist/chunk-S7RFIMA3.cjs.map +0 -1
  343. package/dist/chunk-TCPTBLDV.cjs.map +0 -1
  344. package/dist/chunk-TGUDT3GK.js.map +0 -1
  345. package/dist/chunk-TMRSI543.js.map +0 -1
  346. package/dist/chunk-TQLCIXCK.cjs.map +0 -1
  347. package/dist/chunk-UEHONGPZ.js.map +0 -1
  348. package/dist/chunk-UQB5OHMO.js.map +0 -1
  349. package/dist/chunk-UUY7EDVJ.cjs.map +0 -1
  350. package/dist/chunk-UXABXEWT.js.map +0 -1
  351. package/dist/chunk-V6466VMN.cjs.map +0 -1
  352. package/dist/chunk-WBL7LOIH.js.map +0 -1
  353. package/dist/chunk-WDBJVKSR.js +0 -18
  354. package/dist/chunk-WDBJVKSR.js.map +0 -1
  355. package/dist/chunk-WKNVNN2K.cjs.map +0 -1
  356. package/dist/chunk-WR3FML2W.cjs.map +0 -1
  357. package/dist/chunk-WZ73TWB2.cjs.map +0 -1
  358. package/dist/chunk-X3JG3IR6.js.map +0 -1
  359. package/dist/chunk-XT7RXXOE.js.map +0 -1
  360. package/dist/chunk-XUT2Z2L6.cjs +0 -119
  361. package/dist/chunk-XUT2Z2L6.cjs.map +0 -1
  362. package/dist/chunk-YZ2I7CDF.cjs.map +0 -1
  363. package/dist/chunk-ZSR5JSYZ.cjs.map +0 -1
@@ -1 +1 @@
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-U7TAQLPN.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
+ {"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,4 +1,4 @@
1
- import { Spinner } from './chunk-GR5STMOA.js';
1
+ import { Spinner } from './chunk-A3IJM7IX.js';
2
2
  import './tokens-BIIUTPKN.css';
3
3
  import './shared-NJHRNLRH.css';
4
4
  import './Timeline-RHZAZKZ7.css';
@@ -82,5 +82,5 @@ var TimelineItem = ({
82
82
  };
83
83
 
84
84
  export { Timeline };
85
- //# sourceMappingURL=chunk-S3NIRNWM.js.map
86
- //# sourceMappingURL=chunk-S3NIRNWM.js.map
85
+ //# sourceMappingURL=chunk-JS6U7UQS.js.map
86
+ //# sourceMappingURL=chunk-JS6U7UQS.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/Timeline/Timeline.tsx"],"names":[],"mappings":"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","file":"chunk-S3NIRNWM.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
+ {"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,12 +1,33 @@
1
1
  'use strict';
2
2
 
3
- var chunk3KQKEE5O_cjs = require('./chunk-3KQKEE5O.cjs');
3
+ var chunkDH4NYYJP_cjs = require('./chunk-DH4NYYJP.cjs');
4
4
  require('./tokens-BIIUTPKN.css');
5
5
  require('./shared-NJHRNLRH.css');
6
6
  require('./Alert-JJ7GB3UU.css');
7
+ var React = require('react');
7
8
  var jsxRuntime = require('react/jsx-runtime');
8
9
 
9
- var Alert = ({
10
+ function _interopNamespace(e) {
11
+ if (e && e.__esModule) return e;
12
+ var n = Object.create(null);
13
+ if (e) {
14
+ Object.keys(e).forEach(function (k) {
15
+ if (k !== 'default') {
16
+ var d = Object.getOwnPropertyDescriptor(e, k);
17
+ Object.defineProperty(n, k, d.get ? d : {
18
+ enumerable: true,
19
+ get: function () { return e[k]; }
20
+ });
21
+ }
22
+ });
23
+ }
24
+ n.default = e;
25
+ return Object.freeze(n);
26
+ }
27
+
28
+ var React__namespace = /*#__PURE__*/_interopNamespace(React);
29
+
30
+ var Alert = React__namespace.forwardRef(({
10
31
  tone = "info",
11
32
  title,
12
33
  children,
@@ -15,27 +36,31 @@ var Alert = ({
15
36
  closable,
16
37
  onClose,
17
38
  action,
18
- className = ""
19
- }) => {
39
+ className = "",
40
+ ...rest
41
+ }, ref) => {
20
42
  const iconName = icon ?? (tone === "success" ? "check2" : tone === "warning" || tone === "danger" ? "alert" : "info");
21
43
  return /* @__PURE__ */ jsxRuntime.jsxs(
22
44
  "div",
23
45
  {
46
+ ref,
24
47
  className: `alert ${tone} ${title ? "" : "no-title"} ${showIcon ? "" : "no-icon"} ${className}`,
25
48
  role: "alert",
49
+ ...rest,
26
50
  children: [
27
- showIcon && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "alert-ico", children: /* @__PURE__ */ jsxRuntime.jsx(chunk3KQKEE5O_cjs.Icon, { name: iconName, size: 14 }) }),
51
+ showIcon && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "alert-ico", children: /* @__PURE__ */ jsxRuntime.jsx(chunkDH4NYYJP_cjs.Icon, { name: iconName, size: 14 }) }),
28
52
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "alert-body", children: [
29
53
  title && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "alert-title", children: title }),
30
54
  children && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "alert-desc", children })
31
55
  ] }),
32
56
  action && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "alert-action", children: action }),
33
- closable && /* @__PURE__ */ jsxRuntime.jsx("button", { type: "button", className: "alert-close", onClick: onClose, "aria-label": "Dismiss", children: /* @__PURE__ */ jsxRuntime.jsx(chunk3KQKEE5O_cjs.Icon, { name: "x", size: 12 }) })
57
+ closable && /* @__PURE__ */ jsxRuntime.jsx("button", { type: "button", className: "alert-close", onClick: onClose, "aria-label": "Dismiss", children: /* @__PURE__ */ jsxRuntime.jsx(chunkDH4NYYJP_cjs.Icon, { name: "x", size: 12 }) })
34
58
  ]
35
59
  }
36
60
  );
37
- };
61
+ });
62
+ Alert.displayName = "Alert";
38
63
 
39
64
  exports.Alert = Alert;
40
- //# sourceMappingURL=chunk-H2QTLV5T.cjs.map
41
- //# sourceMappingURL=chunk-H2QTLV5T.cjs.map
65
+ //# sourceMappingURL=chunk-KA3XLPQJ.cjs.map
66
+ //# sourceMappingURL=chunk-KA3XLPQJ.cjs.map
@@ -0,0 +1 @@
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,10 +1,11 @@
1
1
  import './tokens-BIIUTPKN.css';
2
2
  import './shared-NJHRNLRH.css';
3
3
  import './Avatar-R5A4AFKZ.css';
4
+ import * as React from 'react';
4
5
  import { jsxs, jsx } from 'react/jsx-runtime';
5
6
 
6
7
  // src/components/Avatar/Avatar.tsx
7
- var Avatar = ({
8
+ var Avatar = React.forwardRef(({
8
9
  src,
9
10
  alt = "",
10
11
  initials,
@@ -14,7 +15,7 @@ var Avatar = ({
14
15
  className = "",
15
16
  style,
16
17
  ...rest
17
- }) => {
18
+ }, ref) => {
18
19
  const sizeCls = typeof size === "string" && size !== "md" ? size : "";
19
20
  const shapeCls = shape === "square" ? "square" : "";
20
21
  const customStyle = typeof size === "number" ? { ["--size"]: `${size}px`, ...style } : style ?? {};
@@ -22,6 +23,7 @@ var Avatar = ({
22
23
  return /* @__PURE__ */ jsxs(
23
24
  "div",
24
25
  {
26
+ ref,
25
27
  className: `avatar ${sizeCls} ${shapeCls} ${className}`.trim().replace(/\s+/g, " "),
26
28
  style: customStyle,
27
29
  ...rest,
@@ -31,8 +33,9 @@ var Avatar = ({
31
33
  ]
32
34
  }
33
35
  );
34
- };
36
+ });
37
+ Avatar.displayName = "Avatar";
35
38
 
36
39
  export { Avatar };
37
- //# sourceMappingURL=chunk-NS3C2ZSE.js.map
38
- //# sourceMappingURL=chunk-NS3C2ZSE.js.map
40
+ //# sourceMappingURL=chunk-KWE2PXJQ.js.map
41
+ //# sourceMappingURL=chunk-KWE2PXJQ.js.map
@@ -0,0 +1 @@
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"]}
@@ -1,5 +1,5 @@
1
- import { Input } from './chunk-GB5NAXBP.js';
2
- import { Icon } from './chunk-X3JG3IR6.js';
1
+ import { Input } from './chunk-ZZXNHPF3.js';
2
+ import { Icon } from './chunk-BSHHQOFY.js';
3
3
  import './tokens-BIIUTPKN.css';
4
4
  import './shared-NJHRNLRH.css';
5
5
  import './InputNumber-VXQIWLQC.css';
@@ -143,5 +143,5 @@ var InputNumber = React.forwardRef(
143
143
  InputNumber.displayName = "InputNumber";
144
144
 
145
145
  export { InputNumber };
146
- //# sourceMappingURL=chunk-TGUDT3GK.js.map
147
- //# sourceMappingURL=chunk-TGUDT3GK.js.map
146
+ //# sourceMappingURL=chunk-LSQD2GFA.js.map
147
+ //# sourceMappingURL=chunk-LSQD2GFA.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/InputNumber/InputNumber.tsx"],"names":[],"mappings":"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","file":"chunk-LSQD2GFA.js","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,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
- var chunkD3GZSL2B_cjs = require('./chunk-D3GZSL2B.cjs');
4
- var chunk3KQKEE5O_cjs = require('./chunk-3KQKEE5O.cjs');
3
+ var chunkZM4P6ELG_cjs = require('./chunk-ZM4P6ELG.cjs');
4
+ var chunkDH4NYYJP_cjs = require('./chunk-DH4NYYJP.cjs');
5
5
  require('./tokens-BIIUTPKN.css');
6
6
  require('./shared-NJHRNLRH.css');
7
7
  require('./Pagination-YIRYJUXP.css');
@@ -29,7 +29,7 @@ function _interopNamespace(e) {
29
29
  var React__namespace = /*#__PURE__*/_interopNamespace(React);
30
30
 
31
31
  var DEFAULT_SIZE_OPTIONS = [10, 20, 50, 100];
32
- var Pagination = ({
32
+ var Pagination = React__namespace.forwardRef(({
33
33
  total,
34
34
  pageSize = 10,
35
35
  page,
@@ -40,8 +40,9 @@ var Pagination = ({
40
40
  showSizeChanger = false,
41
41
  pageSizeOptions = DEFAULT_SIZE_OPTIONS,
42
42
  onShowSizeChange,
43
- className = ""
44
- }) => {
43
+ className = "",
44
+ ...rest
45
+ }, ref) => {
45
46
  const [inner, setInner] = React__namespace.useState(defaultPage);
46
47
  const isControlled = page !== void 0;
47
48
  const cur = isControlled ? page : inner;
@@ -79,7 +80,7 @@ var Pagination = ({
79
80
  if (pages > 1) add(pages);
80
81
  return out;
81
82
  };
82
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: `pagination ${className}`, children: [
83
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { ref, className: `pagination ${className}`, ...rest, children: [
83
84
  /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "pg-info", children: [
84
85
  "\u5171 ",
85
86
  total,
@@ -97,7 +98,7 @@ var Pagination = ({
97
98
  className: `pg ${cur === 1 ? "disabled" : ""}`,
98
99
  onClick: () => cur > 1 && go(cur - 1),
99
100
  "aria-label": "Previous",
100
- children: /* @__PURE__ */ jsxRuntime.jsx(chunk3KQKEE5O_cjs.Icon, { name: "chevLeft", size: 12 })
101
+ children: /* @__PURE__ */ jsxRuntime.jsx(chunkDH4NYYJP_cjs.Icon, { name: "chevLeft", size: 12 })
101
102
  }
102
103
  ),
103
104
  range().map(
@@ -119,11 +120,11 @@ var Pagination = ({
119
120
  className: `pg ${cur === pages ? "disabled" : ""}`,
120
121
  onClick: () => cur < pages && go(cur + 1),
121
122
  "aria-label": "Next",
122
- children: /* @__PURE__ */ jsxRuntime.jsx(chunk3KQKEE5O_cjs.Icon, { name: "chevRight", size: 12 })
123
+ children: /* @__PURE__ */ jsxRuntime.jsx(chunkDH4NYYJP_cjs.Icon, { name: "chevRight", size: 12 })
123
124
  }
124
125
  ),
125
126
  showSizeChanger && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "pg-size-changer", children: /* @__PURE__ */ jsxRuntime.jsx(
126
- chunkD3GZSL2B_cjs.Select,
127
+ chunkZM4P6ELG_cjs.Select,
127
128
  {
128
129
  value: pageSize,
129
130
  size: "sm",
@@ -149,8 +150,9 @@ var Pagination = ({
149
150
  ] })
150
151
  ] })
151
152
  ] });
152
- };
153
+ });
154
+ Pagination.displayName = "Pagination";
153
155
 
154
156
  exports.Pagination = Pagination;
155
- //# sourceMappingURL=chunk-D26YHP2Y.cjs.map
156
- //# sourceMappingURL=chunk-D26YHP2Y.cjs.map
157
+ //# sourceMappingURL=chunk-MU4GGX6C.cjs.map
158
+ //# sourceMappingURL=chunk-MU4GGX6C.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/Pagination/Pagination.tsx"],"names":["React","jsxs","jsx","Icon","Select"],"mappings":"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","file":"chunk-MU4GGX6C.cjs","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,5 +1,5 @@
1
1
  import { useFloating } from './chunk-ANAQER3T.js';
2
- import { Input } from './chunk-GB5NAXBP.js';
2
+ import { Input } from './chunk-ZZXNHPF3.js';
3
3
  import './tokens-BIIUTPKN.css';
4
4
  import './shared-NJHRNLRH.css';
5
5
  import './AutoComplete-P5KZMZO5.css';
@@ -31,7 +31,10 @@ var AutoComplete = React.forwardRef(
31
31
  dropdownClassName = "",
32
32
  matchTriggerWidth = true,
33
33
  id,
34
- name
34
+ name,
35
+ onFocus,
36
+ onKeyDown,
37
+ ...rest
35
38
  }, ref) => {
36
39
  const [inner, setInner] = React.useState(defaultValue ?? "");
37
40
  const isControlled = value !== void 0;
@@ -146,6 +149,7 @@ var AutoComplete = React.forwardRef(
146
149
  Input,
147
150
  {
148
151
  ref,
152
+ ...rest,
149
153
  id,
150
154
  name,
151
155
  size,
@@ -155,8 +159,14 @@ var AutoComplete = React.forwardRef(
155
159
  allowClear,
156
160
  autoFocus,
157
161
  onChange: handleInput,
158
- onFocus: () => !disabled && setOpen(true),
159
- onKeyDown: onKey
162
+ onFocus: (event) => {
163
+ onFocus?.(event);
164
+ if (!disabled) setOpen(true);
165
+ },
166
+ onKeyDown: (event) => {
167
+ onKeyDown?.(event);
168
+ onKey(event);
169
+ }
160
170
  }
161
171
  ),
162
172
  panel
@@ -166,5 +176,5 @@ var AutoComplete = React.forwardRef(
166
176
  AutoComplete.displayName = "AutoComplete";
167
177
 
168
178
  export { AutoComplete };
169
- //# sourceMappingURL=chunk-3YYOYDKI.js.map
170
- //# sourceMappingURL=chunk-3YYOYDKI.js.map
179
+ //# sourceMappingURL=chunk-MXIWTYNC.js.map
180
+ //# sourceMappingURL=chunk-MXIWTYNC.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/AutoComplete/AutoComplete.tsx"],"names":[],"mappings":"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","file":"chunk-MXIWTYNC.js","sourcesContent":["import \"../../styles/tokens.css\";\nimport \"../../styles/shared.css\";\nimport \"./AutoComplete.css\";\nimport * as React from \"react\";\nimport { createPortal } from \"react-dom\";\nimport { Input } from \"../Input\";\nimport { useFloating } from \"../../utils/useFloating\";\n\nexport interface AutoCompleteOption {\n value: string;\n /** Display label. Defaults to `value`. */\n label?: React.ReactNode;\n disabled?: boolean;\n}\n\nexport interface AutoCompleteProps\n extends Omit<\n React.InputHTMLAttributes<HTMLInputElement>,\n \"value\" | \"defaultValue\" | \"onChange\" | \"onSelect\" | \"size\"\n > {\n value?: string;\n defaultValue?: string;\n onChange?: (value: string, option?: AutoCompleteOption) => void;\n /** Fires when a suggestion is selected (click or Enter). */\n onSelect?: (value: string, option: AutoCompleteOption) => void;\n /** Fires on every keystroke — typically used to fetch fresh suggestions. */\n onSearch?: (text: string) => void;\n /** Suggestion list. Empty-string value is filtered out. */\n options: AutoCompleteOption[];\n placeholder?: string;\n disabled?: boolean;\n allowClear?: boolean;\n /** Override the default substring filter. `false` keeps every option. */\n filterOption?: boolean | ((input: string, option: AutoCompleteOption) => boolean);\n /** Content shown when no option matches. */\n notFoundContent?: React.ReactNode;\n size?: \"sm\" | \"md\" | \"lg\";\n className?: string;\n /** Class on the popped-out panel. */\n dropdownClassName?: string;\n /** Force the panel to be as wide as the input. Default true. */\n matchTriggerWidth?: boolean;\n}\n\nconst DEFAULT_FILTER = (input: string, option: AutoCompleteOption) => {\n if (!input) return true;\n const hay = `${option.value} ${typeof option.label === \"string\" ? option.label : \"\"}`.toLowerCase();\n return hay.includes(input.toLowerCase());\n};\n\n/**\n * `AutoComplete` — text input with a filtered suggestion dropdown.\n * Follows antd's API shape (value / onChange / onSelect / options / filterOption).\n *\n * @example\n * ```tsx\n * <AutoComplete\n * options={[{ value: \"light\" }, { value: \"dark\" }]}\n * onSelect={(v) => console.log(v)}\n * placeholder=\"主题\"\n * />\n * ```\n */\nexport const AutoComplete = React.forwardRef<HTMLInputElement, AutoCompleteProps>(\n (\n {\n value,\n defaultValue,\n onChange,\n onSelect,\n onSearch,\n options,\n placeholder,\n disabled,\n allowClear,\n filterOption = true,\n notFoundContent = \"暂无匹配结果\",\n size = \"md\",\n autoFocus,\n className = \"\",\n dropdownClassName = \"\",\n matchTriggerWidth = true,\n id,\n name,\n onFocus,\n onKeyDown,\n ...rest\n },\n ref\n ) => {\n const [inner, setInner] = React.useState(defaultValue ?? \"\");\n const isControlled = value !== undefined;\n const text = isControlled ? (value as string) : inner;\n\n const [open, setOpen] = React.useState(false);\n const [active, setActive] = React.useState(0);\n const panelRef = React.useRef<HTMLDivElement>(null);\n\n const filtered = React.useMemo(() => {\n if (filterOption === false) return options;\n const fn = typeof filterOption === \"function\" ? filterOption : DEFAULT_FILTER;\n return options.filter((o) => fn(text, o));\n }, [options, text, filterOption]);\n\n const { triggerRef, floatingStyle } = useFloating<HTMLDivElement>({\n open,\n placement: \"bottom\",\n matchTriggerWidth,\n panelHeight: Math.min(filtered.length * 36 + 12, 280),\n });\n\n React.useEffect(() => {\n setActive(0);\n }, [filtered.length, open]);\n\n // Close on outside click.\n React.useEffect(() => {\n if (!open) return;\n const onDown = (e: MouseEvent) => {\n if (\n !triggerRef.current?.contains(e.target as Node) &&\n !panelRef.current?.contains(e.target as Node)\n ) {\n setOpen(false);\n }\n };\n window.addEventListener(\"mousedown\", onDown);\n return () => window.removeEventListener(\"mousedown\", onDown);\n }, [open, triggerRef]);\n\n const commit = (next: string, option?: AutoCompleteOption) => {\n if (!isControlled) setInner(next);\n onChange?.(next, option);\n };\n\n const handleInput = (v: string) => {\n commit(v);\n onSearch?.(v);\n setOpen(true);\n };\n\n const pick = (o: AutoCompleteOption) => {\n if (o.disabled) return;\n commit(o.value, o);\n onSelect?.(o.value, o);\n setOpen(false);\n };\n\n const onKey: React.KeyboardEventHandler<HTMLInputElement> = (e) => {\n if (e.key === \"ArrowDown\") {\n e.preventDefault();\n if (!open) { setOpen(true); return; }\n setActive((a) => {\n if (filtered.length === 0) return 0;\n for (let n = 1; n <= filtered.length; n++) {\n const i = (a + n) % filtered.length;\n if (!filtered[i].disabled) return i;\n }\n return a;\n });\n } else if (e.key === \"ArrowUp\") {\n e.preventDefault();\n setActive((a) => {\n if (filtered.length === 0) return 0;\n for (let n = 1; n <= filtered.length; n++) {\n const i = (a - n + filtered.length) % filtered.length;\n if (!filtered[i].disabled) return i;\n }\n return a;\n });\n } else if (e.key === \"Enter\") {\n if (open && filtered[active]) {\n e.preventDefault();\n pick(filtered[active]);\n }\n } else if (e.key === \"Escape\") {\n if (open) { e.preventDefault(); setOpen(false); }\n }\n };\n\n const panel = open && typeof document !== \"undefined\"\n ? createPortal(\n <div\n ref={panelRef}\n className={`autocomplete-panel ${dropdownClassName}`}\n style={floatingStyle}\n onMouseDown={(e) => e.preventDefault()}\n >\n {filtered.length === 0 ? (\n <div className=\"autocomplete-empty\">{notFoundContent}</div>\n ) : (\n filtered.map((o, i) => (\n <button\n key={o.value}\n type=\"button\"\n role=\"option\"\n aria-selected={i === active}\n disabled={o.disabled}\n className={`autocomplete-item ${i === active ? \"active\" : \"\"}`}\n onMouseEnter={() => setActive(i)}\n onClick={() => pick(o)}\n >\n {o.label ?? o.value}\n </button>\n ))\n )}\n </div>,\n document.body\n )\n : null;\n\n return (\n <div ref={triggerRef} className={`autocomplete ${className}`}>\n <Input\n ref={ref}\n {...rest}\n id={id}\n name={name}\n size={size}\n value={text}\n placeholder={placeholder}\n disabled={disabled}\n allowClear={allowClear}\n autoFocus={autoFocus}\n onChange={handleInput}\n onFocus={(event) => {\n onFocus?.(event);\n if (!disabled) setOpen(true);\n }}\n onKeyDown={(event) => {\n onKeyDown?.(event);\n onKey(event);\n }}\n />\n {panel}\n </div>\n );\n }\n);\nAutoComplete.displayName = \"AutoComplete\";\n"]}
@@ -27,15 +27,16 @@ function _interopNamespace(e) {
27
27
  var React__namespace = /*#__PURE__*/_interopNamespace(React);
28
28
 
29
29
  // src/components/Tabs/Tabs.tsx
30
- var Tabs = ({
30
+ var Tabs = React__namespace.forwardRef(({
31
31
  items,
32
32
  activeKey,
33
33
  defaultActiveKey,
34
34
  onChange,
35
35
  variant = "line",
36
36
  centered,
37
- className = ""
38
- }) => {
37
+ className = "",
38
+ ...rest
39
+ }, ref) => {
39
40
  const [inner, setInner] = React__namespace.useState(defaultActiveKey ?? items[0]?.key);
40
41
  const isControlled = activeKey !== void 0;
41
42
  const current = isControlled ? activeKey : inner;
@@ -44,7 +45,7 @@ var Tabs = ({
44
45
  onChange?.(k);
45
46
  };
46
47
  const active = items.find((i) => i.key === current);
47
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: `tabs ${variant} ${centered ? "centered" : ""} ${className}`, children: [
48
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { ref, className: `tabs ${variant} ${centered ? "centered" : ""} ${className}`, ...rest, children: [
48
49
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "tabs-nav", role: "tablist", children: items.map((it) => /* @__PURE__ */ jsxRuntime.jsx(
49
50
  "button",
50
51
  {
@@ -60,15 +61,17 @@ var Tabs = ({
60
61
  )) }),
61
62
  active?.content !== void 0 && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "tabs-content", children: active.content })
62
63
  ] });
63
- };
64
- function Segmented({
64
+ });
65
+ Tabs.displayName = "Tabs";
66
+ var SegmentedInner = ({
65
67
  options,
66
68
  value,
67
69
  defaultValue,
68
70
  onChange,
69
71
  size = "md",
70
- className = ""
71
- }) {
72
+ className = "",
73
+ ...rest
74
+ }, ref) => {
72
75
  const [inner, setInner] = React__namespace.useState(defaultValue ?? options[0]?.value);
73
76
  const isControlled = value !== void 0;
74
77
  const v = isControlled ? value : inner;
@@ -76,7 +79,7 @@ function Segmented({
76
79
  if (!isControlled) setInner(next);
77
80
  onChange?.(next);
78
81
  };
79
- return /* @__PURE__ */ jsxRuntime.jsx("div", { className: `segmented ${size} ${className}`, children: options.map((o) => /* @__PURE__ */ jsxRuntime.jsx(
82
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { ref, className: `segmented ${size} ${className}`, ...rest, children: options.map((o) => /* @__PURE__ */ jsxRuntime.jsx(
80
83
  "button",
81
84
  {
82
85
  type: "button",
@@ -87,9 +90,11 @@ function Segmented({
87
90
  },
88
91
  String(o.value)
89
92
  )) });
90
- }
93
+ };
94
+ var Segmented = React__namespace.forwardRef(SegmentedInner);
95
+ Segmented.displayName = "Segmented";
91
96
 
92
97
  exports.Segmented = Segmented;
93
98
  exports.Tabs = Tabs;
94
- //# sourceMappingURL=chunk-5EAVXFFD.cjs.map
95
- //# sourceMappingURL=chunk-5EAVXFFD.cjs.map
99
+ //# sourceMappingURL=chunk-NRP3X3PE.cjs.map
100
+ //# sourceMappingURL=chunk-NRP3X3PE.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/Tabs/Tabs.tsx"],"names":["React","jsxs","jsx"],"mappings":"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","file":"chunk-NRP3X3PE.cjs","sourcesContent":["import \"../../styles/tokens.css\";\nimport \"../../styles/shared.css\";\nimport \"./Tabs.css\";\nimport * as React from \"react\";\n\nexport interface TabItem {\n key: string;\n label: React.ReactNode;\n disabled?: boolean;\n content?: React.ReactNode;\n}\n\nexport interface TabsProps\n extends Omit<React.HTMLAttributes<HTMLDivElement>, \"onChange\"> {\n items: TabItem[];\n activeKey?: string;\n defaultActiveKey?: string;\n onChange?: (key: string) => void;\n variant?: \"line\" | \"pill\" | \"segmented\";\n /** Center-align the tab bar horizontally. */\n centered?: boolean;\n className?: string;\n}\n\n/** `Tabs` — switchable sections. */\nexport const Tabs = React.forwardRef<HTMLDivElement, TabsProps>(({\n items,\n activeKey,\n defaultActiveKey,\n onChange,\n variant = \"line\",\n centered,\n className = \"\",\n ...rest\n}, ref) => {\n const [inner, setInner] = React.useState(defaultActiveKey ?? items[0]?.key);\n const isControlled = activeKey !== undefined;\n const current = isControlled ? activeKey! : inner;\n\n const select = (k: string) => {\n if (!isControlled) setInner(k);\n onChange?.(k);\n };\n\n const active = items.find((i) => i.key === current);\n\n return (\n <div ref={ref} className={`tabs ${variant} ${centered ? \"centered\" : \"\"} ${className}`} {...rest}>\n <div className=\"tabs-nav\" role=\"tablist\">\n {items.map((it) => (\n <button\n key={it.key}\n type=\"button\"\n role=\"tab\"\n aria-selected={current === it.key}\n disabled={it.disabled}\n className={`tab ${current === it.key ? \"active\" : \"\"}`}\n onClick={() => select(it.key)}\n >\n {it.label}\n </button>\n ))}\n </div>\n {active?.content !== undefined && <div className=\"tabs-content\">{active.content}</div>}\n </div>\n );\n});\nTabs.displayName = \"Tabs\";\n\nexport interface SegmentedProps<T extends string = string>\n extends Omit<React.HTMLAttributes<HTMLDivElement>, \"onChange\" | \"defaultValue\"> {\n options: { value: T; label: React.ReactNode; disabled?: boolean }[];\n value?: T;\n defaultValue?: T;\n onChange?: (value: T) => void;\n size?: \"sm\" | \"md\";\n className?: string;\n}\n\ntype SegmentedComponent = <T extends string = string>(\n props: SegmentedProps<T> & React.RefAttributes<HTMLDivElement>\n) => React.ReactElement | null;\n\nconst SegmentedInner = <T extends string = string>({\n options,\n value,\n defaultValue,\n onChange,\n size = \"md\",\n className = \"\",\n ...rest\n}: SegmentedProps<T>, ref: React.ForwardedRef<HTMLDivElement>) => {\n const [inner, setInner] = React.useState<T | undefined>(defaultValue ?? options[0]?.value);\n const isControlled = value !== undefined;\n const v = isControlled ? value : inner;\n const pick = (next: T) => {\n if (!isControlled) setInner(next);\n onChange?.(next);\n };\n return (\n <div ref={ref} className={`segmented ${size} ${className}`} {...rest}>\n {options.map((o) => (\n <button\n key={String(o.value)}\n type=\"button\"\n disabled={o.disabled}\n className={`seg ${v === o.value ? \"active\" : \"\"}`}\n onClick={() => pick(o.value)}\n >\n {o.label}\n </button>\n ))}\n </div>\n );\n};\n\n/** `Segmented` — exclusive choice chip row. */\nexport const Segmented = React.forwardRef(SegmentedInner) as SegmentedComponent;\n(Segmented as any).displayName = \"Segmented\";\n"]}
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
3
  var chunk3XIDJEYR_cjs = require('./chunk-3XIDJEYR.cjs');
4
- var chunkIJIQ4H6C_cjs = require('./chunk-IJIQ4H6C.cjs');
4
+ var chunkWFFWVQK4_cjs = require('./chunk-WFFWVQK4.cjs');
5
5
  require('./tokens-BIIUTPKN.css');
6
6
  require('./shared-NJHRNLRH.css');
7
7
  require('./AutoComplete-P5KZMZO5.css');
@@ -53,7 +53,10 @@ var AutoComplete = React__namespace.forwardRef(
53
53
  dropdownClassName = "",
54
54
  matchTriggerWidth = true,
55
55
  id,
56
- name
56
+ name,
57
+ onFocus,
58
+ onKeyDown,
59
+ ...rest
57
60
  }, ref) => {
58
61
  const [inner, setInner] = React__namespace.useState(defaultValue ?? "");
59
62
  const isControlled = value !== void 0;
@@ -165,9 +168,10 @@ var AutoComplete = React__namespace.forwardRef(
165
168
  ) : null;
166
169
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { ref: triggerRef, className: `autocomplete ${className}`, children: [
167
170
  /* @__PURE__ */ jsxRuntime.jsx(
168
- chunkIJIQ4H6C_cjs.Input,
171
+ chunkWFFWVQK4_cjs.Input,
169
172
  {
170
173
  ref,
174
+ ...rest,
171
175
  id,
172
176
  name,
173
177
  size,
@@ -177,8 +181,14 @@ var AutoComplete = React__namespace.forwardRef(
177
181
  allowClear,
178
182
  autoFocus,
179
183
  onChange: handleInput,
180
- onFocus: () => !disabled && setOpen(true),
181
- onKeyDown: onKey
184
+ onFocus: (event) => {
185
+ onFocus?.(event);
186
+ if (!disabled) setOpen(true);
187
+ },
188
+ onKeyDown: (event) => {
189
+ onKeyDown?.(event);
190
+ onKey(event);
191
+ }
182
192
  }
183
193
  ),
184
194
  panel
@@ -188,5 +198,5 @@ var AutoComplete = React__namespace.forwardRef(
188
198
  AutoComplete.displayName = "AutoComplete";
189
199
 
190
200
  exports.AutoComplete = AutoComplete;
191
- //# sourceMappingURL=chunk-DF5K2BZ2.cjs.map
192
- //# sourceMappingURL=chunk-DF5K2BZ2.cjs.map
201
+ //# sourceMappingURL=chunk-P4CGE5C7.cjs.map
202
+ //# sourceMappingURL=chunk-P4CGE5C7.cjs.map