@expcat/tigercat-react 0.2.27 → 0.3.69

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 (359) hide show
  1. package/dist/{chunk-6ZC7H22S.mjs → chunk-24U2DQRP.mjs} +1 -1
  2. package/dist/{chunk-324UKFG2.mjs → chunk-2DW3WFZI.mjs} +96 -46
  3. package/dist/{chunk-6MGEGOYJ.js → chunk-2GKTVAAB.js} +24 -18
  4. package/dist/{chunk-5XKYWZZZ.mjs → chunk-3577FW3I.mjs} +59 -89
  5. package/dist/{chunk-GY6D4XS3.js → chunk-3GW3UAKB.js} +40 -98
  6. package/dist/{chunk-VD3IK5XT.mjs → chunk-3M2IG6IN.mjs} +2 -3
  7. package/dist/{chunk-T3GSXTDU.js → chunk-3NE6VZRY.js} +2 -3
  8. package/dist/chunk-3PV2MDST.mjs +95 -0
  9. package/dist/{chunk-36RRHNZD.js → chunk-3T7L3MHX.js} +33 -15
  10. package/dist/{chunk-IY4LEJYF.js → chunk-4PPTEEDI.js} +29 -30
  11. package/dist/{chunk-Z4Z3I74Q.mjs → chunk-4Y7YH32A.mjs} +37 -46
  12. package/dist/chunk-56KTCMRE.mjs +77 -0
  13. package/dist/chunk-5P5M656V.mjs +75 -0
  14. package/dist/{chunk-Z6G4HABF.js → chunk-67FVBKBC.js} +58 -95
  15. package/dist/{chunk-KAEHFMTQ.mjs → chunk-6IH5QPTR.mjs} +121 -144
  16. package/dist/{chunk-C52ZCGYG.mjs → chunk-6PXNWGR5.mjs} +49 -65
  17. package/dist/{chunk-P273E6XE.js → chunk-72MWKUBC.js} +66 -43
  18. package/dist/{chunk-RKBNIEGF.mjs → chunk-763M6U5U.mjs} +106 -66
  19. package/dist/{chunk-RTQNWZN4.mjs → chunk-77PE7OFK.mjs} +3 -5
  20. package/dist/{chunk-KPZTGRNA.js → chunk-7Z64GEMN.js} +51 -55
  21. package/dist/{chunk-3WPKVV4N.js → chunk-A3PYG3D6.js} +6 -39
  22. package/dist/chunk-AQ72JVUG.js +41 -0
  23. package/dist/{chunk-P4EFJIXU.mjs → chunk-AUP3PMDD.mjs} +18 -41
  24. package/dist/{chunk-PUDU34R4.mjs → chunk-AVUXDQYO.mjs} +26 -20
  25. package/dist/{chunk-HUZVBDHV.js → chunk-AY5Z3NIW.js} +15 -20
  26. package/dist/{chunk-67EK62HG.mjs → chunk-B3LRUKXM.mjs} +1 -1
  27. package/dist/chunk-C7UKFKVY.js +137 -0
  28. package/dist/{chunk-TZ26HQAW.js → chunk-CI2WHAT2.js} +18 -38
  29. package/dist/{chunk-2WLSB7K2.mjs → chunk-CYZLGYY4.mjs} +113 -60
  30. package/dist/{chunk-NSGDRTSQ.mjs → chunk-D5KYIQWB.mjs} +6 -39
  31. package/dist/chunk-DQNA57CA.js +57 -0
  32. package/dist/{chunk-6575DOCV.mjs → chunk-DTQZPZSJ.mjs} +3 -3
  33. package/dist/{chunk-7P6PHSFM.js → chunk-DXXYPVJJ.js} +32 -35
  34. package/dist/{chunk-UFAXJVMD.js → chunk-EFLIFXZH.js} +3 -3
  35. package/dist/{chunk-JI7SFMUT.mjs → chunk-EIMAQHCQ.mjs} +29 -80
  36. package/dist/chunk-ENSLMM3L.mjs +68 -0
  37. package/dist/chunk-F24IF2QL.js +74 -0
  38. package/dist/{chunk-KKHKQP6Z.js → chunk-F4Q5QMX2.js} +172 -95
  39. package/dist/{chunk-V2HVHLBY.mjs → chunk-FE7PEZTI.mjs} +19 -39
  40. package/dist/chunk-FLYJVZED.mjs +30 -0
  41. package/dist/chunk-FMF2G6BJ.js +179 -0
  42. package/dist/{chunk-YIF5VX7K.mjs → chunk-FNDPGSEW.mjs} +14 -13
  43. package/dist/{chunk-HQLZL3XQ.mjs → chunk-FPNT7FV5.mjs} +3 -7
  44. package/dist/{chunk-YE2M2HNM.js → chunk-FSDZJD7M.js} +36 -45
  45. package/dist/{chunk-ZYF5GI2Q.js → chunk-GASFXURT.js} +94 -44
  46. package/dist/chunk-GB5G2CJY.js +96 -0
  47. package/dist/{chunk-LXA2YBAO.js → chunk-GJEWBALW.js} +2 -2
  48. package/dist/{chunk-GXTBCX3M.js → chunk-H5MZ54PM.js} +16 -39
  49. package/dist/{chunk-LIJLFLYE.js → chunk-HB2UYJBY.js} +33 -18
  50. package/dist/{chunk-5HUYCSA4.mjs → chunk-HPXLUJFJ.mjs} +22 -19
  51. package/dist/chunk-HQ3QOT7H.js +33 -0
  52. package/dist/chunk-I5TCE5E7.js +32 -0
  53. package/dist/{chunk-QFVE7GKD.js → chunk-IBYIPXIO.js} +5 -26
  54. package/dist/{chunk-3XXXM4OB.mjs → chunk-IGE44BIS.mjs} +67 -23
  55. package/dist/{chunk-XRFK2IXM.js → chunk-IHH2O7YK.js} +6 -7
  56. package/dist/chunk-IP3MAJSH.mjs +55 -0
  57. package/dist/chunk-IRH2ZVD3.js +197 -0
  58. package/dist/chunk-IVGKPD2L.mjs +39 -0
  59. package/dist/{chunk-CJJ56NVL.mjs → chunk-IXJMMM26.mjs} +16 -60
  60. package/dist/chunk-J3HKED4B.js +110 -0
  61. package/dist/{chunk-MF3H7WWW.mjs → chunk-JNLX47UL.mjs} +33 -15
  62. package/dist/{chunk-7SOL3UJ2.js → chunk-JQNKI2ZZ.js} +80 -32
  63. package/dist/{chunk-X4F6NSI5.mjs → chunk-JUWFVIDP.mjs} +2 -2
  64. package/dist/{chunk-LADCWARG.mjs → chunk-JVTAKNRO.mjs} +17 -15
  65. package/dist/{chunk-2Y327ZU4.js → chunk-KAWE5LQZ.js} +80 -83
  66. package/dist/{chunk-TR246HQP.mjs → chunk-KMTERPME.mjs} +14 -18
  67. package/dist/chunk-LIV33O73.mjs +26 -0
  68. package/dist/chunk-LL6B4BHF.mjs +189 -0
  69. package/dist/chunk-LXQOQJMU.js +79 -0
  70. package/dist/chunk-M46L73HR.js +264 -0
  71. package/dist/{chunk-NMDNLB3C.mjs → chunk-MDZDPGRK.mjs} +30 -27
  72. package/dist/chunk-MTL2QUM3.mjs +107 -0
  73. package/dist/chunk-MWH6FCSE.js +97 -0
  74. package/dist/{chunk-5QKBBGIA.mjs → chunk-N4EMXCRQ.mjs} +173 -96
  75. package/dist/{chunk-LWW2LXCP.js → chunk-NEP3CS6S.js} +112 -59
  76. package/dist/chunk-NJCKTIWB.mjs +255 -0
  77. package/dist/{chunk-IIVRVCCP.mjs → chunk-NKKIJQMV.mjs} +53 -57
  78. package/dist/{chunk-MQXBU5YX.mjs → chunk-NQFHS4W2.mjs} +29 -21
  79. package/dist/chunk-NTODO3Q3.mjs +94 -0
  80. package/dist/{chunk-NDOYQK2R.mjs → chunk-NZLOLMT2.mjs} +41 -99
  81. package/dist/chunk-O3W3OZ6V.js +37 -0
  82. package/dist/{chunk-IFY46RWU.js → chunk-OESNOOOT.js} +1 -2
  83. package/dist/{chunk-IWENGARY.mjs → chunk-OFBK35TK.mjs} +1 -1
  84. package/dist/{chunk-R7TOQU3U.js → chunk-OIUIR5ZR.js} +15 -59
  85. package/dist/{chunk-QEAC4MIG.mjs → chunk-OUAZM7NY.mjs} +12 -59
  86. package/dist/chunk-OXT5RN55.mjs +261 -0
  87. package/dist/{chunk-CIL2AC3F.js → chunk-OYCMGKQ7.js} +15 -23
  88. package/dist/{chunk-IQINYCU6.js → chunk-PR3PQUKM.js} +17 -15
  89. package/dist/chunk-PTEDJ6MA.js +29 -0
  90. package/dist/{chunk-D3I2SY7X.js → chunk-PWZB45Z7.js} +13 -60
  91. package/dist/{chunk-GZPMLPRW.js → chunk-PXPUPQRO.js} +2 -2
  92. package/dist/{chunk-OZLGNWET.js → chunk-Q57BYUUW.js} +12 -28
  93. package/dist/chunk-QAO5KANE.mjs +36 -0
  94. package/dist/{chunk-AFFSBNYB.mjs → chunk-QGCQAJGL.mjs} +82 -34
  95. package/dist/{chunk-JOHKSMJM.mjs → chunk-QLHFXYWA.mjs} +59 -96
  96. package/dist/{chunk-C5EFBJBR.js → chunk-QM4GOQDT.js} +119 -142
  97. package/dist/{chunk-OD2NNQD2.js → chunk-QNRAM3CM.js} +2 -2
  98. package/dist/{chunk-Z5DDULTA.js → chunk-RARHRSPQ.js} +2 -2
  99. package/dist/{chunk-5QKMQRCW.js → chunk-RDIEZKV2.js} +28 -20
  100. package/dist/{chunk-GIYBVWR4.mjs → chunk-RGFSY3S2.mjs} +67 -44
  101. package/dist/chunk-RGZYYVQF.mjs +134 -0
  102. package/dist/{chunk-3GD3LOII.mjs → chunk-RITTIFCJ.mjs} +1 -2
  103. package/dist/{chunk-Y2JOJ4D6.js → chunk-RKB2VUQO.js} +8 -10
  104. package/dist/{chunk-7SLNHUGJ.js → chunk-RNEL4XIO.js} +28 -79
  105. package/dist/{chunk-6ZTCBQJ7.mjs → chunk-RPTLVIBF.mjs} +17 -25
  106. package/dist/{chunk-5ZVSFIZD.js → chunk-RYWGELJ7.js} +2 -6
  107. package/dist/chunk-S4GNTA7V.mjs +176 -0
  108. package/dist/{chunk-VSF4DF7N.js → chunk-SAZ6V6DX.js} +21 -18
  109. package/dist/{chunk-Q3DPJHNM.js → chunk-SFALTVPS.js} +3 -5
  110. package/dist/{chunk-E6GLWHRL.mjs → chunk-SH6O6LDJ.mjs} +73 -31
  111. package/dist/{chunk-67WZRMD6.js → chunk-SM7RDJFB.js} +105 -65
  112. package/dist/{chunk-DGBYGBLR.js → chunk-SOC74QA2.js} +32 -52
  113. package/dist/{chunk-KOLLAGRK.mjs → chunk-SQ7OL2X5.mjs} +2 -3
  114. package/dist/{chunk-VO4WDK4K.js → chunk-SSQOCZ6O.js} +1 -2
  115. package/dist/{chunk-KV4LLPAY.mjs → chunk-SW4I4X6E.mjs} +8 -10
  116. package/dist/{chunk-GQMYCYZ4.js → chunk-TDRINUMH.js} +31 -28
  117. package/dist/{chunk-DIZNY6N4.mjs → chunk-TGKNEMD4.mjs} +8 -8
  118. package/dist/{chunk-BAPR7UUR.mjs → chunk-TGPQ4KET.mjs} +13 -29
  119. package/dist/{chunk-3XKBDV2Q.mjs → chunk-TUA5PDRX.mjs} +7 -8
  120. package/dist/{chunk-CES6LGQ7.mjs → chunk-UE234MW4.mjs} +34 -37
  121. package/dist/{chunk-U4ZVEPYD.js → chunk-URM7QDHH.js} +14 -18
  122. package/dist/chunk-UZ7SBFQV.mjs +35 -0
  123. package/dist/{chunk-HGF2EL25.mjs → chunk-V5NIFF2F.mjs} +34 -54
  124. package/dist/{chunk-672SCJWZ.mjs → chunk-VCNZEQEB.mjs} +10 -10
  125. package/dist/{chunk-R7MS42PL.js → chunk-VCOBBJLP.js} +9 -9
  126. package/dist/{chunk-2TS6X5RA.js → chunk-VCULFIZ5.js} +7 -7
  127. package/dist/{chunk-2VXA4YOP.js → chunk-W4TFISRK.js} +71 -29
  128. package/dist/{chunk-4MMT4EJJ.mjs → chunk-WAIXKROS.mjs} +17 -22
  129. package/dist/{chunk-7IKJBQQV.mjs → chunk-WGRYO5HX.mjs} +35 -20
  130. package/dist/{chunk-ZPWDDAFE.js → chunk-XID6T65A.js} +14 -13
  131. package/dist/chunk-XJ7U2W7S.mjs +27 -0
  132. package/dist/chunk-XKDWDANG.js +192 -0
  133. package/dist/{chunk-EI2GHMQS.js → chunk-XLVEI7GS.js} +15 -13
  134. package/dist/chunk-XWNVBCJA.js +258 -0
  135. package/dist/{chunk-JW64IJP2.js → chunk-XWRJVNB6.js} +67 -23
  136. package/dist/{chunk-HDDBBZQH.js → chunk-YV6Y7C43.js} +48 -64
  137. package/dist/{chunk-XS5JP2KO.mjs → chunk-ZFHTSHXS.mjs} +82 -85
  138. package/dist/chunk-ZGQOYCQT.mjs +194 -0
  139. package/dist/{chunk-WDAMDVLU.mjs → chunk-ZIUOENTL.mjs} +6 -27
  140. package/dist/{chunk-HRYBEBZC.js → chunk-ZTVATZB6.js} +59 -89
  141. package/dist/components/ActivityFeed.d.mts +10 -0
  142. package/dist/components/ActivityFeed.d.ts +10 -0
  143. package/dist/components/ActivityFeed.js +23 -0
  144. package/dist/components/ActivityFeed.mjs +8 -0
  145. package/dist/components/Alert.js +3 -2
  146. package/dist/components/Alert.mjs +2 -1
  147. package/dist/components/Anchor.js +4 -4
  148. package/dist/components/Anchor.mjs +1 -1
  149. package/dist/components/AnchorLink.js +4 -4
  150. package/dist/components/AnchorLink.mjs +2 -2
  151. package/dist/components/AreaChart.d.mts +3 -0
  152. package/dist/components/AreaChart.d.ts +3 -0
  153. package/dist/components/AreaChart.js +4 -4
  154. package/dist/components/AreaChart.mjs +2 -2
  155. package/dist/components/Avatar.d.mts +1 -1
  156. package/dist/components/Avatar.d.ts +1 -1
  157. package/dist/components/Avatar.js +2 -2
  158. package/dist/components/Avatar.mjs +1 -1
  159. package/dist/components/BackTop.js +3 -3
  160. package/dist/components/BackTop.mjs +1 -1
  161. package/dist/components/Badge.d.mts +0 -3
  162. package/dist/components/Badge.d.ts +0 -3
  163. package/dist/components/Badge.js +2 -2
  164. package/dist/components/Badge.mjs +1 -1
  165. package/dist/components/BarChart.js +4 -4
  166. package/dist/components/BarChart.mjs +2 -2
  167. package/dist/components/Breadcrumb.d.mts +0 -1
  168. package/dist/components/Breadcrumb.d.ts +0 -1
  169. package/dist/components/BreadcrumbItem.js +2 -2
  170. package/dist/components/BreadcrumbItem.mjs +1 -1
  171. package/dist/components/Button.js +2 -2
  172. package/dist/components/Button.mjs +1 -1
  173. package/dist/components/Card.js +2 -2
  174. package/dist/components/Card.mjs +1 -1
  175. package/dist/components/Carousel.js +2 -2
  176. package/dist/components/Carousel.mjs +1 -1
  177. package/dist/components/ChatWindow.d.mts +12 -0
  178. package/dist/components/ChatWindow.d.ts +12 -0
  179. package/dist/components/ChatWindow.js +20 -0
  180. package/dist/components/ChatWindow.mjs +5 -0
  181. package/dist/components/Checkbox.js +2 -2
  182. package/dist/components/Checkbox.mjs +1 -1
  183. package/dist/components/Col.js +3 -3
  184. package/dist/components/Col.mjs +2 -2
  185. package/dist/components/CollapsePanel.js +3 -3
  186. package/dist/components/CollapsePanel.mjs +1 -1
  187. package/dist/components/CommentThread.d.mts +8 -0
  188. package/dist/components/CommentThread.d.ts +8 -0
  189. package/dist/components/CommentThread.js +21 -0
  190. package/dist/components/CommentThread.mjs +6 -0
  191. package/dist/components/DataTableWithToolbar.d.mts +51 -0
  192. package/dist/components/DataTableWithToolbar.d.ts +51 -0
  193. package/dist/components/DataTableWithToolbar.js +21 -0
  194. package/dist/components/DataTableWithToolbar.mjs +6 -0
  195. package/dist/components/DatePicker.js +2 -2
  196. package/dist/components/DatePicker.mjs +1 -1
  197. package/dist/components/Descriptions.js +3 -3
  198. package/dist/components/Descriptions.mjs +1 -1
  199. package/dist/components/Divider.d.mts +1 -3
  200. package/dist/components/Divider.d.ts +1 -3
  201. package/dist/components/Divider.js +2 -2
  202. package/dist/components/Divider.mjs +1 -1
  203. package/dist/components/DonutChart.d.mts +6 -0
  204. package/dist/components/DonutChart.d.ts +6 -0
  205. package/dist/components/DonutChart.js +5 -5
  206. package/dist/components/DonutChart.mjs +3 -3
  207. package/dist/components/Drawer.js +2 -2
  208. package/dist/components/Drawer.mjs +1 -1
  209. package/dist/components/Dropdown.d.mts +1 -15
  210. package/dist/components/Dropdown.d.ts +1 -15
  211. package/dist/components/Dropdown.js +4 -4
  212. package/dist/components/Dropdown.mjs +2 -2
  213. package/dist/components/DropdownItem.js +4 -4
  214. package/dist/components/DropdownItem.mjs +3 -3
  215. package/dist/components/Form.d.mts +1 -0
  216. package/dist/components/Form.d.ts +1 -0
  217. package/dist/components/Form.js +3 -3
  218. package/dist/components/Form.mjs +1 -1
  219. package/dist/components/FormItem.js +3 -3
  220. package/dist/components/FormItem.mjs +2 -2
  221. package/dist/components/FormWizard.d.mts +10 -0
  222. package/dist/components/FormWizard.d.ts +10 -0
  223. package/dist/components/FormWizard.js +19 -0
  224. package/dist/components/FormWizard.mjs +4 -0
  225. package/dist/components/Icon.js +2 -2
  226. package/dist/components/Icon.mjs +1 -1
  227. package/dist/components/Input.d.mts +4 -7
  228. package/dist/components/Input.d.ts +4 -7
  229. package/dist/components/Input.js +2 -2
  230. package/dist/components/Input.mjs +1 -1
  231. package/dist/components/LineChart.js +4 -4
  232. package/dist/components/LineChart.mjs +2 -2
  233. package/dist/components/Link.js +2 -2
  234. package/dist/components/Link.mjs +1 -1
  235. package/dist/components/List.js +2 -4
  236. package/dist/components/List.mjs +1 -3
  237. package/dist/components/Loading.js +2 -2
  238. package/dist/components/Loading.mjs +1 -1
  239. package/dist/components/Menu.js +3 -3
  240. package/dist/components/Menu.mjs +1 -1
  241. package/dist/components/MenuItem.js +3 -3
  242. package/dist/components/MenuItem.mjs +2 -2
  243. package/dist/components/MenuItemGroup.js +4 -4
  244. package/dist/components/MenuItemGroup.mjs +3 -3
  245. package/dist/components/Message.d.mts +0 -18
  246. package/dist/components/Message.d.ts +0 -18
  247. package/dist/components/Message.js +5 -4
  248. package/dist/components/Message.mjs +2 -1
  249. package/dist/components/Modal.d.mts +15 -0
  250. package/dist/components/Modal.d.ts +15 -0
  251. package/dist/components/Modal.js +3 -2
  252. package/dist/components/Modal.mjs +2 -1
  253. package/dist/components/Notification.d.mts +0 -15
  254. package/dist/components/Notification.d.ts +0 -15
  255. package/dist/components/Notification.js +5 -4
  256. package/dist/components/Notification.mjs +2 -1
  257. package/dist/components/NotificationCenter.d.mts +8 -0
  258. package/dist/components/NotificationCenter.d.ts +8 -0
  259. package/dist/components/NotificationCenter.js +22 -0
  260. package/dist/components/NotificationCenter.mjs +7 -0
  261. package/dist/components/Pagination.js +3 -3
  262. package/dist/components/Pagination.mjs +1 -1
  263. package/dist/components/PieChart.js +4 -4
  264. package/dist/components/PieChart.mjs +2 -2
  265. package/dist/components/Popconfirm.d.mts +0 -26
  266. package/dist/components/Popconfirm.d.ts +0 -26
  267. package/dist/components/Popconfirm.js +3 -2
  268. package/dist/components/Popconfirm.mjs +2 -1
  269. package/dist/components/Popover.d.mts +0 -8
  270. package/dist/components/Popover.d.ts +0 -8
  271. package/dist/components/Popover.js +3 -2
  272. package/dist/components/Popover.mjs +2 -1
  273. package/dist/components/Progress.js +2 -2
  274. package/dist/components/Progress.mjs +1 -1
  275. package/dist/components/RadarChart.d.mts +8 -0
  276. package/dist/components/RadarChart.d.ts +8 -0
  277. package/dist/components/RadarChart.js +5 -4
  278. package/dist/components/RadarChart.mjs +3 -2
  279. package/dist/components/Radio.js +3 -3
  280. package/dist/components/Radio.mjs +2 -2
  281. package/dist/components/RadioGroup.js +3 -3
  282. package/dist/components/RadioGroup.mjs +1 -1
  283. package/dist/components/Row.js +3 -3
  284. package/dist/components/Row.mjs +1 -1
  285. package/dist/components/ScatterChart.js +4 -4
  286. package/dist/components/ScatterChart.mjs +2 -2
  287. package/dist/components/Select.js +2 -2
  288. package/dist/components/Select.mjs +1 -1
  289. package/dist/components/Sidebar.js +2 -2
  290. package/dist/components/Sidebar.mjs +1 -1
  291. package/dist/components/Skeleton.js +2 -2
  292. package/dist/components/Skeleton.mjs +1 -1
  293. package/dist/components/Slider.js +2 -2
  294. package/dist/components/Slider.mjs +1 -1
  295. package/dist/components/Space.js +2 -2
  296. package/dist/components/Space.mjs +1 -1
  297. package/dist/components/Steps.js +3 -3
  298. package/dist/components/Steps.mjs +1 -1
  299. package/dist/components/StepsItem.js +2 -2
  300. package/dist/components/StepsItem.mjs +1 -1
  301. package/dist/components/SubMenu.js +5 -5
  302. package/dist/components/SubMenu.mjs +4 -4
  303. package/dist/components/TabPane.d.mts +18 -3
  304. package/dist/components/TabPane.d.ts +18 -3
  305. package/dist/components/TabPane.js +2 -2
  306. package/dist/components/TabPane.mjs +1 -1
  307. package/dist/components/Table.d.mts +1 -1
  308. package/dist/components/Table.d.ts +1 -1
  309. package/dist/components/Table.js +2 -2
  310. package/dist/components/Table.mjs +1 -1
  311. package/dist/components/Tabs.d.mts +44 -2
  312. package/dist/components/Tabs.d.ts +44 -2
  313. package/dist/components/Tabs.js +3 -3
  314. package/dist/components/Tabs.mjs +1 -1
  315. package/dist/components/Tag.js +2 -2
  316. package/dist/components/Tag.mjs +1 -1
  317. package/dist/components/Text.js +2 -2
  318. package/dist/components/Text.mjs +1 -1
  319. package/dist/components/Textarea.js +2 -2
  320. package/dist/components/Textarea.mjs +1 -1
  321. package/dist/components/TimePicker.js +2 -2
  322. package/dist/components/TimePicker.mjs +1 -1
  323. package/dist/components/Timeline.js +2 -2
  324. package/dist/components/Timeline.mjs +1 -1
  325. package/dist/components/Tooltip.d.mts +1 -11
  326. package/dist/components/Tooltip.d.ts +1 -11
  327. package/dist/components/Tooltip.js +3 -2
  328. package/dist/components/Tooltip.mjs +2 -1
  329. package/dist/components/Tree.js +3 -3
  330. package/dist/components/Tree.mjs +1 -1
  331. package/dist/components/Upload.js +2 -2
  332. package/dist/components/Upload.mjs +1 -1
  333. package/dist/index.d.mts +6 -0
  334. package/dist/index.d.ts +6 -0
  335. package/dist/index.js +241 -209
  336. package/dist/index.mjs +76 -68
  337. package/package.json +2 -2
  338. package/dist/chunk-2UVQIL26.mjs +0 -99
  339. package/dist/chunk-3OF7XPIQ.js +0 -90
  340. package/dist/chunk-427CM2U6.mjs +0 -76
  341. package/dist/chunk-6YDIBMCM.mjs +0 -33
  342. package/dist/chunk-A3DJSVTE.js +0 -68
  343. package/dist/chunk-AGUPZEUL.mjs +0 -35
  344. package/dist/chunk-CKUSQR2H.mjs +0 -41
  345. package/dist/chunk-CR4QK2AB.mjs +0 -88
  346. package/dist/chunk-EB6EDLJZ.mjs +0 -50
  347. package/dist/chunk-GW4EWT2K.mjs +0 -125
  348. package/dist/chunk-KELLYJZY.mjs +0 -148
  349. package/dist/chunk-KUCFT2OA.js +0 -43
  350. package/dist/chunk-QY6I7LU5.js +0 -127
  351. package/dist/chunk-STEIWBMF.mjs +0 -66
  352. package/dist/chunk-T4TJJMLM.mjs +0 -34
  353. package/dist/chunk-VR5OP4MO.js +0 -102
  354. package/dist/chunk-YESS6YKC.js +0 -37
  355. package/dist/chunk-YYGTJKP5.js +0 -39
  356. package/dist/chunk-ZPFZMXA6.js +0 -150
  357. package/dist/chunk-ZREFCRX3.js +0 -52
  358. package/dist/{chunk-MKWXJZ3T.js → chunk-QYYAXM5F.js} +1 -1
  359. package/dist/{chunk-WSJO2PIE.mjs → chunk-XZVQ3PJS.mjs} +1 -1
@@ -1,8 +1,23 @@
1
- import { useFormContext } from './chunk-3XXXM4OB.mjs';
2
- import React, { useState, useId, useMemo, useCallback, useEffect } from 'react';
3
- import { getFieldError, classNames } from '@expcat/tigercat-core';
1
+ import { useFormContext } from './chunk-IGE44BIS.mjs';
2
+ import React, { useState, useRef, useId, useMemo, useEffect, useCallback } from 'react';
3
+ import { getFormItemFieldClasses, getFormItemAsteriskClasses, getFieldError, classNames, getFormItemClasses, getFormItemLabelClasses, getFormItemErrorClasses, getFormItemContentClasses } from '@expcat/tigercat-core';
4
4
  import { jsxs, jsx } from 'react/jsx-runtime';
5
5
 
6
+ function hasRequiredRule(maybeRules) {
7
+ if (!maybeRules) return false;
8
+ const ruleArr = Array.isArray(maybeRules) ? maybeRules : [maybeRules];
9
+ return ruleArr.some((rule) => !!rule && typeof rule === "object" && !!rule.required);
10
+ }
11
+ function mergeAriaDescribedBy(existing, next) {
12
+ if (!existing) return next;
13
+ if (!next) return existing;
14
+ const parts = new Set(
15
+ `${existing} ${next}`.split(" ").map((s) => s.trim()).filter(Boolean)
16
+ );
17
+ return Array.from(parts).join(" ");
18
+ }
19
+ var FIELD_CLASSES = getFormItemFieldClasses();
20
+ var ASTERISK_CLASSES = getFormItemAsteriskClasses();
6
21
  var FormItem = ({
7
22
  name,
8
23
  label,
@@ -17,26 +32,13 @@ var FormItem = ({
17
32
  }) => {
18
33
  const formContext = useFormContext();
19
34
  const [errorMessage, setErrorMessage] = useState("");
35
+ const [shakeTrigger, setShakeTrigger] = useState(0);
36
+ const prevFormErrorRef = useRef("");
20
37
  const reactId = useId();
21
- const baseId = useMemo(() => `tiger-form-item-${reactId}`, [reactId]);
38
+ const baseId = `tiger-form-item-${reactId}`;
22
39
  const labelId = `${baseId}-label`;
23
40
  const fieldId = `${baseId}-field`;
24
41
  const errorId = `${baseId}-error`;
25
- const mergeAriaDescribedBy = useCallback(
26
- (existing, next) => {
27
- if (!existing) {
28
- return next;
29
- }
30
- if (!next) {
31
- return existing;
32
- }
33
- const parts = new Set(
34
- `${existing} ${next}`.split(" ").map((s) => s.trim()).filter(Boolean)
35
- );
36
- return Array.from(parts).join(" ");
37
- },
38
- []
39
- );
40
42
  const actualSize = size || formContext?.size || "md";
41
43
  const labelPosition = formContext?.labelPosition || "right";
42
44
  const labelAlign = formContext?.labelAlign || "right";
@@ -52,14 +54,12 @@ var FormItem = ({
52
54
  return required;
53
55
  }
54
56
  if (rules) {
55
- const ruleArray = Array.isArray(rules) ? rules : [rules];
56
- return ruleArray.some((rule) => rule.required);
57
+ return hasRequiredRule(rules);
57
58
  }
58
59
  if (name && formContext?.rules) {
59
60
  const fieldRules = formContext.rules[name];
60
61
  if (fieldRules) {
61
- const ruleArray = Array.isArray(fieldRules) ? fieldRules : [fieldRules];
62
- return ruleArray.some((rule) => rule.required);
62
+ return hasRequiredRule(fieldRules);
63
63
  }
64
64
  }
65
65
  return false;
@@ -70,8 +70,12 @@ var FormItem = ({
70
70
  );
71
71
  useEffect(() => {
72
72
  if (name && formContext?.errors) {
73
- const error = getFieldError(name, formContext.errors);
74
- setErrorMessage(error || "");
73
+ const error = getFieldError(name, formContext.errors) || "";
74
+ setErrorMessage(error);
75
+ if (error && error !== prevFormErrorRef.current) {
76
+ setShakeTrigger((prev) => prev + 1);
77
+ }
78
+ prevFormErrorRef.current = error;
75
79
  }
76
80
  }, [name, formContext?.errors]);
77
81
  useEffect(() => {
@@ -100,7 +104,7 @@ var FormItem = ({
100
104
  formContext.validateField(name, rules, "change");
101
105
  }
102
106
  }, [name, formContext, rules]);
103
- const hasError = useMemo(() => !!errorMessage, [errorMessage]);
107
+ const hasError = !!errorMessage;
104
108
  const describedById = useMemo(
105
109
  () => showMessage && hasError ? errorId : void 0,
106
110
  [showMessage, hasError, errorId]
@@ -113,6 +117,7 @@ var FormItem = ({
113
117
  return React.Children.toArray(children)[0] ?? null;
114
118
  }, [children]);
115
119
  const isClonableChild = React.isValidElement(onlyChild);
120
+ const isNativeElement = isClonableChild && typeof onlyChild.type === "string";
116
121
  const childId = isClonableChild ? onlyChild.props.id : void 0;
117
122
  const effectiveFieldId = childId ?? fieldId;
118
123
  const enhancedChild = useMemo(() => {
@@ -121,6 +126,9 @@ var FormItem = ({
121
126
  }
122
127
  const nextProps = {
123
128
  id: effectiveFieldId,
129
+ status: !isNativeElement && hasError ? "error" : onlyChild.props.status,
130
+ errorMessage: !isNativeElement && hasError && !showMessage ? errorMessage : onlyChild.props.errorMessage,
131
+ _shakeTrigger: !isNativeElement && hasError ? shakeTrigger : void 0,
124
132
  "aria-invalid": hasError ? true : onlyChild.props["aria-invalid"],
125
133
  "aria-required": isRequired ? true : onlyChild.props["aria-required"],
126
134
  "aria-describedby": mergeAriaDescribedBy(onlyChild.props["aria-describedby"], describedById),
@@ -140,30 +148,35 @@ var FormItem = ({
140
148
  onlyChild,
141
149
  effectiveFieldId,
142
150
  hasError,
151
+ errorMessage,
152
+ showMessage,
153
+ shakeTrigger,
143
154
  isRequired,
144
- mergeAriaDescribedBy,
155
+ isNativeElement,
145
156
  describedById,
146
157
  handleBlur,
147
158
  handleChange
148
159
  ]);
149
160
  const formItemClasses = useMemo(
150
161
  () => classNames(
151
- "tiger-form-item",
152
- `tiger-form-item--${actualSize}`,
153
- `tiger-form-item--label-${labelPosition}`,
154
- hasError && "tiger-form-item--error",
155
- formContext?.disabled && "tiger-form-item--disabled",
162
+ getFormItemClasses({
163
+ size: actualSize,
164
+ labelPosition,
165
+ hasError,
166
+ disabled: formContext?.disabled
167
+ }),
156
168
  className
157
169
  ),
158
170
  [actualSize, labelPosition, hasError, formContext?.disabled, className]
159
171
  );
160
172
  const labelClasses = useMemo(
161
- () => classNames(
162
- "tiger-form-item__label",
163
- `tiger-form-item__label--${labelAlign}`,
164
- isRequired && "tiger-form-item__label--required"
165
- ),
166
- [labelAlign, isRequired]
173
+ () => getFormItemLabelClasses({
174
+ size: actualSize,
175
+ labelAlign,
176
+ labelPosition,
177
+ isRequired
178
+ }),
179
+ [actualSize, labelAlign, labelPosition, isRequired]
167
180
  );
168
181
  const labelStyles = useMemo(() => {
169
182
  if (labelPosition === "top") {
@@ -172,9 +185,10 @@ var FormItem = ({
172
185
  return actualLabelWidth ? { width: actualLabelWidth } : {};
173
186
  }, [labelPosition, actualLabelWidth]);
174
187
  const errorClasses = useMemo(
175
- () => classNames("tiger-form-item__error", hasError && "tiger-form-item__error--show"),
176
- [hasError]
188
+ () => classNames(getFormItemErrorClasses(actualSize), hasError && "opacity-100"),
189
+ [actualSize, hasError]
177
190
  );
191
+ const contentClasses = useMemo(() => getFormItemContentClasses(labelPosition), [labelPosition]);
178
192
  return /* @__PURE__ */ jsxs("div", { className: formItemClasses, children: [
179
193
  label && /* @__PURE__ */ jsxs(
180
194
  "label",
@@ -184,16 +198,16 @@ var FormItem = ({
184
198
  style: labelStyles,
185
199
  htmlFor: isClonableChild ? effectiveFieldId : void 0,
186
200
  children: [
187
- isRequired && /* @__PURE__ */ jsx("span", { className: "tiger-form-item__asterisk", children: "*" }),
201
+ isRequired && /* @__PURE__ */ jsx("span", { className: ASTERISK_CLASSES, children: "*" }),
188
202
  label
189
203
  ]
190
204
  }
191
205
  ),
192
- /* @__PURE__ */ jsxs("div", { className: "tiger-form-item__content", children: [
206
+ /* @__PURE__ */ jsxs("div", { className: contentClasses, children: [
193
207
  /* @__PURE__ */ jsx(
194
208
  "div",
195
209
  {
196
- className: "tiger-form-item__field",
210
+ className: FIELD_CLASSES,
197
211
  role: "group",
198
212
  "aria-labelledby": label ? labelId : void 0,
199
213
  "aria-describedby": describedById,
@@ -204,7 +218,16 @@ var FormItem = ({
204
218
  children: enhancedChild
205
219
  }
206
220
  ),
207
- showMessage && hasError && /* @__PURE__ */ jsx("div", { id: errorId, role: "alert", className: errorClasses, children: errorMessage })
221
+ showMessage && /* @__PURE__ */ jsx(
222
+ "div",
223
+ {
224
+ id: hasError ? errorId : void 0,
225
+ role: hasError ? "alert" : void 0,
226
+ className: errorClasses,
227
+ "aria-hidden": hasError ? void 0 : true,
228
+ children: hasError ? errorMessage : ""
229
+ }
230
+ )
208
231
  ] })
209
232
  ] });
210
233
  };
@@ -0,0 +1,134 @@
1
+ import { StepsItem, Steps } from './chunk-AUP3PMDD.mjs';
2
+ import { useTigerConfig } from './chunk-VEGBO77D.mjs';
3
+ import { Button } from './chunk-ENSLMM3L.mjs';
4
+ import { useMemo, useState, useEffect, useCallback } from 'react';
5
+ import { mergeTigerLocale, getFormWizardLabels, classNames, resolveLocaleText } from '@expcat/tigercat-core';
6
+ import { jsx, jsxs } from 'react/jsx-runtime';
7
+
8
+ var FormWizard = ({
9
+ steps = [],
10
+ current,
11
+ defaultCurrent = 0,
12
+ clickable = false,
13
+ direction = "horizontal",
14
+ size = "default",
15
+ simple = false,
16
+ showSteps = true,
17
+ showActions = true,
18
+ prevText,
19
+ nextText,
20
+ finishText,
21
+ locale,
22
+ beforeNext,
23
+ onChange,
24
+ onFinish,
25
+ renderStep,
26
+ className,
27
+ style,
28
+ ...props
29
+ }) => {
30
+ const config = useTigerConfig();
31
+ const mergedLocale = useMemo(
32
+ () => mergeTigerLocale(config.locale, locale),
33
+ [config.locale, locale]
34
+ );
35
+ const labels = useMemo(() => getFormWizardLabels(mergedLocale), [mergedLocale]);
36
+ const [innerCurrent, setInnerCurrent] = useState(defaultCurrent);
37
+ useEffect(() => {
38
+ if (current !== void 0) setInnerCurrent(current);
39
+ }, [current]);
40
+ const totalCount = steps.length;
41
+ const currentIndex = current ?? innerCurrent;
42
+ const currentStep = steps[currentIndex];
43
+ const isFirst = currentIndex <= 0;
44
+ const isLast = currentIndex >= totalCount - 1;
45
+ const wrapperClasses = classNames(
46
+ "tiger-form-wizard w-full rounded-lg border border-[var(--tiger-border,#e5e7eb)] bg-[var(--tiger-surface,#ffffff)] shadow-sm overflow-hidden",
47
+ className
48
+ );
49
+ const setCurrent = useCallback(
50
+ (next) => {
51
+ const max = Math.max(totalCount - 1, 0);
52
+ const clamped = Math.min(Math.max(next, 0), max);
53
+ if (current === void 0) {
54
+ setInnerCurrent(clamped);
55
+ }
56
+ onChange?.(clamped, currentIndex);
57
+ },
58
+ [current, currentIndex, onChange, totalCount]
59
+ );
60
+ const runBeforeNext = useCallback(async () => {
61
+ if (!beforeNext || !currentStep) {
62
+ return true;
63
+ }
64
+ const result = await beforeNext(currentIndex, currentStep, steps);
65
+ return result === true;
66
+ }, [beforeNext, currentIndex, currentStep, steps]);
67
+ const handlePrev = useCallback(() => {
68
+ if (currentIndex <= 0 || steps[currentIndex - 1]?.disabled) return;
69
+ setCurrent(currentIndex - 1);
70
+ }, [currentIndex, setCurrent, steps]);
71
+ const handleNext = useCallback(async () => {
72
+ if (totalCount === 0) return;
73
+ const ok = await runBeforeNext();
74
+ if (!ok) return;
75
+ if (isLast) {
76
+ onFinish?.(currentIndex, steps);
77
+ return;
78
+ }
79
+ if (steps[currentIndex + 1]?.disabled) return;
80
+ setCurrent(currentIndex + 1);
81
+ }, [currentIndex, totalCount, isLast, onFinish, runBeforeNext, setCurrent, steps]);
82
+ const handleStepChange = useCallback(
83
+ async (nextIndex) => {
84
+ if (nextIndex === currentIndex || steps[nextIndex]?.disabled) return;
85
+ if (nextIndex > currentIndex) {
86
+ const ok = await runBeforeNext();
87
+ if (!ok) return;
88
+ }
89
+ setCurrent(nextIndex);
90
+ },
91
+ [currentIndex, runBeforeNext, setCurrent, steps]
92
+ );
93
+ const contentNode = useMemo(() => {
94
+ if (!currentStep) return null;
95
+ if (renderStep) return renderStep(currentStep, currentIndex);
96
+ return currentStep.content ?? null;
97
+ }, [currentIndex, currentStep, renderStep]);
98
+ const stepsNodes = useMemo(
99
+ () => steps.map((step, index) => /* @__PURE__ */ jsx(
100
+ StepsItem,
101
+ {
102
+ title: step.title,
103
+ description: step.description,
104
+ status: step.status,
105
+ icon: step.icon,
106
+ disabled: step.disabled
107
+ },
108
+ step.key ?? index
109
+ )),
110
+ [steps]
111
+ );
112
+ return /* @__PURE__ */ jsxs("div", { className: wrapperClasses, style, "data-tiger-form-wizard": true, ...props, children: [
113
+ showSteps && steps.length > 0 && /* @__PURE__ */ jsx("div", { className: "px-6 py-5 bg-[var(--tiger-surface-muted,#f9fafb)]", children: /* @__PURE__ */ jsx(
114
+ Steps,
115
+ {
116
+ current: currentIndex,
117
+ direction,
118
+ size,
119
+ simple,
120
+ clickable,
121
+ onChange: handleStepChange,
122
+ children: stepsNodes
123
+ }
124
+ ) }),
125
+ /* @__PURE__ */ jsx("div", { className: "px-6 py-4 flex flex-col items-center", children: contentNode }),
126
+ showActions && /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-center gap-3 px-6 py-2 border-t border-[var(--tiger-border,#e5e7eb)] bg-[var(--tiger-surface-muted,#f9fafb)]", children: [
127
+ /* @__PURE__ */ jsx(Button, { type: "button", variant: "secondary", disabled: isFirst, onClick: handlePrev, children: resolveLocaleText(labels.prevText, prevText) }),
128
+ /* @__PURE__ */ jsx(Button, { type: "button", variant: "primary", onClick: handleNext, children: isLast ? resolveLocaleText(labels.finishText, finishText) : resolveLocaleText(labels.nextText, nextText) })
129
+ ] })
130
+ ] });
131
+ };
132
+ var FormWizard_default = FormWizard;
133
+
134
+ export { FormWizard, FormWizard_default };
@@ -14,8 +14,7 @@ var Sidebar = ({
14
14
  const sidebarStyle = {
15
15
  ...style,
16
16
  width: collapsed ? "0px" : width,
17
- minWidth: collapsed ? "0px" : width,
18
- overflow: "hidden"
17
+ minWidth: collapsed ? "0px" : width
19
18
  };
20
19
  return /* @__PURE__ */ jsx("aside", { className: sidebarClasses, style: sidebarStyle, ...props, children: !collapsed && children });
21
20
  };
@@ -103,15 +103,13 @@ var Drawer = ({
103
103
  locale?.common?.closeText
104
104
  );
105
105
  React.useEffect(() => {
106
- if (!visible) return;
107
- previousActiveElementRef.current = tigercatCore.captureActiveElement();
108
- const timer = window.setTimeout(() => {
109
- tigercatCore.focusFirst([closeButtonRef.current, dialogRef.current]);
110
- }, 0);
111
- return () => window.clearTimeout(timer);
112
- }, [visible]);
113
- React.useEffect(() => {
114
- if (visible) return;
106
+ if (visible) {
107
+ previousActiveElementRef.current = tigercatCore.captureActiveElement();
108
+ const timer = window.setTimeout(() => {
109
+ tigercatCore.focusFirst([closeButtonRef.current, dialogRef.current]);
110
+ }, 0);
111
+ return () => window.clearTimeout(timer);
112
+ }
115
113
  tigercatCore.restoreFocus(previousActiveElementRef.current);
116
114
  }, [visible]);
117
115
  const handleKeyDown = React.useCallback((event) => {
@@ -125,7 +123,7 @@ var Drawer = ({
125
123
  }
126
124
  }, []);
127
125
  const containerClasses = tigercatCore.classNames(
128
- tigercatCore.getDrawerContainerClasses(zIndex),
126
+ tigercatCore.getDrawerContainerClasses(),
129
127
  !visible && "pointer-events-none"
130
128
  );
131
129
  const maskClasses = tigercatCore.getDrawerMaskClasses(visible);
@@ -1,11 +1,11 @@
1
1
  'use strict';
2
2
 
3
+ var chunkHQ3QOT7H_js = require('./chunk-HQ3QOT7H.js');
3
4
  var react = require('react');
4
5
  var client = require('react-dom/client');
5
6
  var tigercatCore = require('@expcat/tigercat-core');
6
7
  var jsxRuntime = require('react/jsx-runtime');
7
8
 
8
- // src/components/Notification.tsx
9
9
  var NOTIFICATION_CONTAINER_ID_PREFIX = "tiger-notification-container";
10
10
  var notificationInstancesByPosition = {
11
11
  "top-left": [],
@@ -29,35 +29,12 @@ var updateCallbacks = {
29
29
  function getNextInstanceId() {
30
30
  return ++instanceIdCounter;
31
31
  }
32
- var Icon = ({ path, className }) => {
33
- return /* @__PURE__ */ jsxRuntime.jsx(
34
- "svg",
35
- {
36
- className,
37
- xmlns: "http://www.w3.org/2000/svg",
38
- fill: "none",
39
- viewBox: tigercatCore.icon24ViewBox,
40
- stroke: "currentColor",
41
- strokeWidth: tigercatCore.icon24StrokeWidth,
42
- "aria-hidden": "true",
43
- focusable: "false",
44
- children: /* @__PURE__ */ jsxRuntime.jsx(
45
- "path",
46
- {
47
- strokeLinecap: tigercatCore.icon24PathStrokeLinecap,
48
- strokeLinejoin: tigercatCore.icon24PathStrokeLinejoin,
49
- d: path
50
- }
51
- )
52
- }
53
- );
54
- };
55
32
  var NotificationItem = ({ notification: notification2, onClose }) => {
56
33
  const [isVisible, setIsVisible] = react.useState(false);
57
34
  react.useEffect(() => {
58
35
  setTimeout(() => setIsVisible(true), 10);
59
36
  }, []);
60
- const colorScheme = tigercatCore.getNotificationTypeClasses(notification2.type, tigercatCore.defaultNotificationThemeColors);
37
+ const colorScheme = tigercatCore.getNotificationTypeClasses(notification2.type);
61
38
  const notificationClasses = tigercatCore.classNames(
62
39
  tigercatCore.notificationBaseClasses,
63
40
  colorScheme.bg,
@@ -94,7 +71,7 @@ var NotificationItem = ({ notification: notification2, onClose }) => {
94
71
  "data-tiger-notification-type": notification2.type,
95
72
  "data-tiger-notification-id": String(notification2.id),
96
73
  children: [
97
- /* @__PURE__ */ jsxRuntime.jsx(Icon, { path: iconPath, className: iconClass }),
74
+ /* @__PURE__ */ jsxRuntime.jsx(chunkHQ3QOT7H_js.StatusIcon, { path: iconPath, className: iconClass, "aria-hidden": "true", focusable: "false" }),
98
75
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: tigercatCore.notificationContentClasses, children: [
99
76
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: tigercatCore.classNames(tigercatCore.notificationTitleClasses, colorScheme.titleText), children: notification2.title }),
100
77
  notification2.description && /* @__PURE__ */ jsxRuntime.jsx("div", { className: tigercatCore.classNames(tigercatCore.notificationDescriptionClasses, colorScheme.descriptionText), children: notification2.description })
@@ -109,7 +86,7 @@ var NotificationItem = ({ notification: notification2, onClose }) => {
109
86
  },
110
87
  "aria-label": "Close notification",
111
88
  type: "button",
112
- children: /* @__PURE__ */ jsxRuntime.jsx(Icon, { path: tigercatCore.notificationCloseIconPath, className: tigercatCore.notificationCloseIconClasses })
89
+ children: /* @__PURE__ */ jsxRuntime.jsx(chunkHQ3QOT7H_js.StatusIcon, { path: tigercatCore.notificationCloseIconPath, className: tigercatCore.notificationCloseIconClasses })
113
90
  }
114
91
  )
115
92
  ]
@@ -134,16 +111,7 @@ var NotificationContainer = ({
134
111
  tigercatCore.notificationPositionClasses[position]
135
112
  );
136
113
  const handleRemove = (id) => {
137
- const instances = notificationInstancesByPosition[position];
138
- const index = instances.findIndex((notif) => notif.id === id);
139
- if (index !== -1) {
140
- const instance = instances[index];
141
- instances.splice(index, 1);
142
- if (instance.onClose) {
143
- instance.onClose();
144
- }
145
- updateCallbacks[position]?.();
146
- }
114
+ removeNotification(id, position);
147
115
  };
148
116
  return /* @__PURE__ */ jsxRuntime.jsx(
149
117
  "div",
@@ -169,8 +137,7 @@ function ensureContainer(position) {
169
137
  if (!tigercatCore.isBrowser()) {
170
138
  return;
171
139
  }
172
- const containerId = `${NOTIFICATION_CONTAINER_ID_PREFIX}-${position}`;
173
- const rootId = `${containerId}-root`;
140
+ const rootId = `${NOTIFICATION_CONTAINER_ID_PREFIX}-${position}-root`;
174
141
  const existingRootEl = document.getElementById(rootId);
175
142
  if (containerRoots[position] && !existingRootEl) {
176
143
  containerRoots[position] = null;
@@ -188,6 +155,17 @@ function ensureContainer(position) {
188
155
  containerRoots[position] = client.createRoot(rootEl);
189
156
  containerRoots[position].render(/* @__PURE__ */ jsxRuntime.jsx(NotificationContainer, { position }));
190
157
  }
158
+ function destroyContainer(position) {
159
+ const rootId = `${NOTIFICATION_CONTAINER_ID_PREFIX}-${position}-root`;
160
+ if (containerRoots[position]) {
161
+ containerRoots[position].unmount();
162
+ containerRoots[position] = null;
163
+ }
164
+ updateCallbacks[position] = null;
165
+ if (tigercatCore.isBrowser()) {
166
+ document.getElementById(rootId)?.remove();
167
+ }
168
+ }
191
169
  function addNotification(config) {
192
170
  const position = config.position || "top-right";
193
171
  ensureContainer(position);
@@ -206,9 +184,7 @@ function addNotification(config) {
206
184
  position
207
185
  };
208
186
  notificationInstancesByPosition[position].push(instance);
209
- if (updateCallbacks[position]) {
210
- updateCallbacks[position]();
211
- }
187
+ updateCallbacks[position]?.();
212
188
  if (instance.duration > 0) {
213
189
  setTimeout(() => {
214
190
  removeNotification(id, position);
@@ -222,78 +198,51 @@ function removeNotification(id, position) {
222
198
  if (index !== -1) {
223
199
  const instance = instances[index];
224
200
  instances.splice(index, 1);
225
- if (instance.onClose) {
226
- instance.onClose();
227
- }
228
- if (updateCallbacks[position]) {
229
- updateCallbacks[position]();
230
- }
201
+ instance.onClose?.();
202
+ updateCallbacks[position]?.();
203
+ }
204
+ if (notificationInstancesByPosition[position].length === 0) {
205
+ destroyContainer(position);
231
206
  }
232
207
  }
233
208
  function clearAll(position) {
234
209
  if (position) {
235
210
  notificationInstancesByPosition[position].forEach((instance) => {
236
- if (instance.onClose) {
237
- instance.onClose();
238
- }
211
+ instance.onClose?.();
239
212
  });
240
213
  notificationInstancesByPosition[position] = [];
241
- if (updateCallbacks[position]) {
242
- updateCallbacks[position]();
243
- }
214
+ destroyContainer(position);
244
215
  } else {
245
216
  Object.keys(notificationInstancesByPosition).forEach((pos) => {
246
217
  const p = pos;
247
218
  notificationInstancesByPosition[p].forEach((instance) => {
248
- if (instance.onClose) {
249
- instance.onClose();
250
- }
219
+ instance.onClose?.();
251
220
  });
252
221
  notificationInstancesByPosition[p] = [];
253
- if (updateCallbacks[p]) {
254
- updateCallbacks[p]();
255
- }
222
+ destroyContainer(p);
256
223
  });
257
224
  }
258
225
  }
259
226
  function normalizeOptions(options) {
260
- if (typeof options === "string") {
261
- return { title: options };
262
- }
263
- return options;
227
+ return tigercatCore.normalizeStringOption(options, "title");
264
228
  }
265
229
  var notification = {
266
- /**
267
- * Show an info notification
268
- */
269
230
  info(options) {
270
231
  const config = normalizeOptions(options);
271
232
  return addNotification({ ...config, type: "info" });
272
233
  },
273
- /**
274
- * Show a success notification
275
- */
276
234
  success(options) {
277
235
  const config = normalizeOptions(options);
278
236
  return addNotification({ ...config, type: "success" });
279
237
  },
280
- /**
281
- * Show a warning notification
282
- */
283
238
  warning(options) {
284
239
  const config = normalizeOptions(options);
285
240
  return addNotification({ ...config, type: "warning" });
286
241
  },
287
- /**
288
- * Show an error notification
289
- */
290
242
  error(options) {
291
243
  const config = normalizeOptions(options);
292
244
  return addNotification({ ...config, type: "error" });
293
245
  },
294
- /**
295
- * Clear all notifications
296
- */
297
246
  clear(position) {
298
247
  clearAll(position);
299
248
  }
@@ -1,5 +1,5 @@
1
- import { useState, useRef, useEffect } from 'react';
2
- import { injectShakeStyle, getInputClasses, classNames, getInputAffixClasses, getInputErrorClasses, getInputWrapperClasses, SHAKE_CLASS } from '@expcat/tigercat-core';
1
+ import { useRef, useState, useEffect, useCallback } from 'react';
2
+ import { injectShakeStyle, SHAKE_CLASS, getInputClasses, classNames, getInputAffixClasses, getInputErrorClasses, getInputWrapperClasses, parseInputValue } from '@expcat/tigercat-core';
3
3
  import { jsxs, jsx } from 'react/jsx-runtime';
4
4
 
5
5
  // src/components/Input.tsx
@@ -8,6 +8,7 @@ var Input = ({
8
8
  type = "text",
9
9
  status = "default",
10
10
  errorMessage,
11
+ _shakeTrigger,
11
12
  prefix,
12
13
  suffix,
13
14
  value,
@@ -31,39 +32,30 @@ var Input = ({
31
32
  ...props
32
33
  }) => {
33
34
  injectShakeStyle();
34
- const [isShaking, setIsShaking] = useState(false);
35
- const inputRef = useRef(null);
35
+ const wrapperRef = useRef(null);
36
36
  const [internalValue, setInternalValue] = useState(defaultValue ?? "");
37
37
  useEffect(() => {
38
- if (status === "error") {
39
- setIsShaking(true);
38
+ if (status === "error" && wrapperRef.current) {
39
+ const el = wrapperRef.current;
40
+ el.classList.remove(SHAKE_CLASS);
41
+ void el.offsetWidth;
42
+ el.classList.add(SHAKE_CLASS);
40
43
  }
41
- }, [status]);
42
- const handleAnimationEnd = () => {
43
- setIsShaking(false);
44
- };
44
+ }, [status, _shakeTrigger]);
45
+ const handleAnimationEnd = useCallback(() => {
46
+ wrapperRef.current?.classList.remove(SHAKE_CLASS);
47
+ }, []);
45
48
  const isControlled = value !== void 0;
46
49
  const inputValue = isControlled ? value : internalValue;
47
- useEffect(() => {
48
- if (autoFocus && inputRef.current) {
49
- inputRef.current.focus();
50
- }
51
- }, [autoFocus]);
52
- const getNextValue = (target) => {
53
- if (type === "number") {
54
- return Number.isNaN(target.valueAsNumber) ? target.value : target.valueAsNumber;
55
- }
56
- return target.value;
57
- };
58
50
  const handleInput = (event) => {
59
51
  if (!isControlled) {
60
- setInternalValue(getNextValue(event.currentTarget));
52
+ setInternalValue(parseInputValue(event.currentTarget, type));
61
53
  }
62
54
  onInput?.(event);
63
55
  };
64
56
  const handleChange = (event) => {
65
57
  if (!isControlled) {
66
- setInternalValue(getNextValue(event.currentTarget));
58
+ setInternalValue(parseInputValue(event.currentTarget, type));
67
59
  }
68
60
  onChange?.(event);
69
61
  };
@@ -79,7 +71,8 @@ var Input = ({
79
71
  return /* @__PURE__ */ jsxs(
80
72
  "div",
81
73
  {
82
- className: classNames(getInputWrapperClasses(), className, isShaking && SHAKE_CLASS),
74
+ ref: wrapperRef,
75
+ className: classNames(getInputWrapperClasses(), className),
83
76
  style,
84
77
  onAnimationEnd: handleAnimationEnd,
85
78
  children: [
@@ -88,7 +81,6 @@ var Input = ({
88
81
  "input",
89
82
  {
90
83
  ...props,
91
- ref: inputRef,
92
84
  className: inputClasses,
93
85
  type,
94
86
  value: inputValue,