@expcat/tigercat-react 1.4.0 → 1.5.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 (352) hide show
  1. package/dist/{chunk-WV5XHYW6.js → chunk-23XPDNCA.js} +6 -4
  2. package/dist/{chunk-UAM3RQY4.js → chunk-24NDLFPK.js} +22 -28
  3. package/dist/{chunk-NMKFR435.js → chunk-2LKX6CE7.js} +7 -4
  4. package/dist/{chunk-BEZO5IE4.js → chunk-2PV3F47T.js} +2 -2
  5. package/dist/{chunk-ANN5P7TJ.js → chunk-2ZA4MUO2.js} +72 -29
  6. package/dist/{chunk-H4AR4GXH.js → chunk-3NVMKDMH.js} +1 -8
  7. package/dist/{chunk-7CHTTM6D.js → chunk-3RQ3FHJ7.js} +2 -2
  8. package/dist/{chunk-ELRZ2ZHM.mjs → chunk-4DRJA5ZK.mjs} +15 -17
  9. package/dist/{chunk-J3N24I7A.mjs → chunk-4F3UTDFE.mjs} +24 -6
  10. package/dist/{chunk-56CTXEJS.mjs → chunk-4HMMH4XS.mjs} +24 -11
  11. package/dist/{chunk-ZQSMJS2Q.mjs → chunk-4MREOFVE.mjs} +3 -3
  12. package/dist/{chunk-EEF26RBA.mjs → chunk-4SU6D2E7.mjs} +15 -3
  13. package/dist/{chunk-ZZAR4IDS.js → chunk-4TPRBVW7.js} +19 -2
  14. package/dist/{chunk-NSEO2B74.mjs → chunk-4V5RL25M.mjs} +8 -5
  15. package/dist/{chunk-AUW7DCXL.js → chunk-5JYVN65W.js} +24 -6
  16. package/dist/{chunk-YRVAF2ID.js → chunk-5QLSTNA3.js} +7 -1
  17. package/dist/chunk-5SX2M3LU.mjs +319 -0
  18. package/dist/{chunk-FI53LYZ6.js → chunk-5UREMEDS.js} +24 -8
  19. package/dist/chunk-6LGCAGNG.js +312 -0
  20. package/dist/{chunk-KED5S2WG.mjs → chunk-6REMGSLS.mjs} +22 -11
  21. package/dist/{chunk-PNAWOJ32.js → chunk-6S5QOTXZ.js} +14 -2
  22. package/dist/{chunk-4AMSYFYC.js → chunk-6SG2N4WF.js} +7 -7
  23. package/dist/{chunk-YSGM22AH.mjs → chunk-6UIVNRAR.mjs} +7 -4
  24. package/dist/{chunk-IZGXDHPB.mjs → chunk-7RI5W465.mjs} +19 -25
  25. package/dist/{chunk-DCKBVRLI.js → chunk-7UZ7O7KX.js} +63 -16
  26. package/dist/{chunk-WZUADPYB.js → chunk-7YI5TAPT.js} +2 -5
  27. package/dist/chunk-AI4V7L6K.mjs +230 -0
  28. package/dist/chunk-AQOXANET.mjs +222 -0
  29. package/dist/{chunk-HHMYERHY.mjs → chunk-ATSI3UKS.mjs} +2 -1
  30. package/dist/{chunk-ZRHDNGWO.js → chunk-BR3WLDH7.js} +16 -2
  31. package/dist/{chunk-2Y5NIPHB.mjs → chunk-BRPOEVRT.mjs} +32 -3
  32. package/dist/{chunk-I7FEGKX2.mjs → chunk-CR4QBH46.mjs} +36 -11
  33. package/dist/{chunk-7U6VWD4H.mjs → chunk-CSJGNEHR.mjs} +2 -2
  34. package/dist/{chunk-ANBNSUSR.js → chunk-CXXOZLP4.js} +31 -21
  35. package/dist/{chunk-DVEK5SO6.mjs → chunk-D4X3NBAI.mjs} +8 -3
  36. package/dist/{chunk-QIL24WZD.mjs → chunk-DEQZZKY5.mjs} +12 -7
  37. package/dist/{chunk-TEYL5X56.js → chunk-DH4B2COV.js} +105 -36
  38. package/dist/{chunk-BONUUJU3.mjs → chunk-DJOFM2VO.mjs} +1 -8
  39. package/dist/{chunk-SQTOVSDU.mjs → chunk-DO3MVZZN.mjs} +12 -6
  40. package/dist/{chunk-SDZKL3IB.mjs → chunk-E355NVP7.mjs} +35 -14
  41. package/dist/{chunk-CNNEUJR2.js → chunk-ENJMHEQU.js} +44 -19
  42. package/dist/{chunk-BRA3PO53.js → chunk-FBIBHTBG.js} +2 -2
  43. package/dist/{chunk-P36GX65N.js → chunk-FCCHM2B4.js} +40 -4
  44. package/dist/{chunk-4LIDROT4.js → chunk-FFDK6PEP.js} +7 -4
  45. package/dist/{chunk-R2KUNFDN.mjs → chunk-GA4YOE57.mjs} +2 -2
  46. package/dist/{chunk-3E76U2RG.js → chunk-GADCSCH2.js} +33 -5
  47. package/dist/{chunk-JOB47R6Q.mjs → chunk-GCOA4AO6.mjs} +72 -29
  48. package/dist/{chunk-M6YXUNOU.mjs → chunk-GOUSXJEY.mjs} +2 -2
  49. package/dist/{chunk-GDPU5MYA.js → chunk-GPAY5F7D.js} +11 -6
  50. package/dist/{chunk-TNTOSFGN.mjs → chunk-GQPKHMHA.mjs} +1 -1
  51. package/dist/{chunk-NKSYX4R7.mjs → chunk-GTDLZF7K.mjs} +2 -2
  52. package/dist/{chunk-OXQOKKTP.mjs → chunk-H7D7UBDC.mjs} +2 -2
  53. package/dist/{chunk-KYNWNTGO.js → chunk-HFGTJEQW.js} +82 -29
  54. package/dist/{chunk-J6OZWT3P.js → chunk-HVAG26CK.js} +3 -3
  55. package/dist/{chunk-SLEXEH7R.mjs → chunk-HWZSMV2M.mjs} +3 -11
  56. package/dist/{chunk-EJKOUI26.js → chunk-I5UB4FN3.js} +3 -3
  57. package/dist/{chunk-NVI2P7VH.js → chunk-I6VHGILW.js} +21 -9
  58. package/dist/{chunk-EOU6WZTS.js → chunk-I7OSNH5T.js} +34 -5
  59. package/dist/{chunk-L24PPXLV.js → chunk-IFB3OECJ.js} +1 -0
  60. package/dist/{chunk-376X7SDZ.mjs → chunk-IXAPFTTD.mjs} +7 -6
  61. package/dist/{chunk-EHIXCFD7.js → chunk-JHRFG5PG.js} +57 -12
  62. package/dist/{chunk-3EB42WFR.mjs → chunk-KCPGFO5R.mjs} +2 -2
  63. package/dist/{chunk-G3PBQ4B4.mjs → chunk-KQ4ZKXXN.mjs} +52 -2
  64. package/dist/{chunk-MC26ORSN.js → chunk-KSXGH3FO.js} +7 -7
  65. package/dist/{chunk-X7JAYXPY.js → chunk-KVWSVDAJ.js} +4 -4
  66. package/dist/{chunk-OFRKYQOZ.mjs → chunk-LACDTZTE.mjs} +4 -4
  67. package/dist/{chunk-YH57D4AV.mjs → chunk-LAKPYMBZ.mjs} +1 -0
  68. package/dist/{chunk-6GU5NH5F.mjs → chunk-LBXNMCXN.mjs} +33 -5
  69. package/dist/{chunk-KGMVRIYC.mjs → chunk-LOM6NNQK.mjs} +29 -16
  70. package/dist/{chunk-WFWEMXO7.mjs → chunk-LUABLBKS.mjs} +83 -30
  71. package/dist/{chunk-K2TXT5HQ.js → chunk-M577W3TS.js} +101 -85
  72. package/dist/{chunk-3EDASNTG.js → chunk-MOYZF62V.js} +29 -16
  73. package/dist/{chunk-ZDNQGS4O.js → chunk-MQIVMK24.js} +4 -4
  74. package/dist/{chunk-WMPCN7OF.mjs → chunk-MZCGQED3.mjs} +15 -3
  75. package/dist/{chunk-KDXKF6B2.mjs → chunk-MZPKFMQC.mjs} +1 -1
  76. package/dist/{chunk-AG4HRAW2.mjs → chunk-NEHSCSQP.mjs} +2 -2
  77. package/dist/chunk-NG3OBMKV.js +319 -0
  78. package/dist/{chunk-RFHPG4KN.js → chunk-NGSJGXUZ.js} +15 -17
  79. package/dist/{chunk-WIWTY74F.mjs → chunk-NJHZQBA7.mjs} +16 -2
  80. package/dist/{chunk-EQD2U4KM.js → chunk-O2N7ITWQ.js} +63 -16
  81. package/dist/{chunk-NASC6XHN.mjs → chunk-O6YIPNXX.mjs} +24 -15
  82. package/dist/{chunk-VHGCWZ6V.mjs → chunk-OTRPN5ZG.mjs} +58 -13
  83. package/dist/{chunk-QIKR5EFI.js → chunk-OVJO5NYW.js} +4 -4
  84. package/dist/{chunk-KXT2TP6A.mjs → chunk-P2WQIVXD.mjs} +22 -10
  85. package/dist/{chunk-PT5T5F4H.js → chunk-PQF5VLNX.js} +22 -11
  86. package/dist/chunk-PQOUWJAT.mjs +211 -0
  87. package/dist/{chunk-OS6M3IZF.js → chunk-PSCPLUGP.js} +5 -13
  88. package/dist/{chunk-ULWT6W6M.mjs → chunk-PZB24FST.mjs} +10 -5
  89. package/dist/{chunk-BO45CU4Q.js → chunk-PZWI4YNN.js} +6 -4
  90. package/dist/{chunk-PFYK2V3E.js → chunk-Q2OXQNWU.js} +73 -9
  91. package/dist/{chunk-VM4ZQHT5.mjs → chunk-QANWBRNU.mjs} +59 -12
  92. package/dist/{chunk-XBM76P27.mjs → chunk-QFUIGOOM.mjs} +4 -2
  93. package/dist/{chunk-BN4ZKCAI.mjs → chunk-QKNORS26.mjs} +49 -36
  94. package/dist/{chunk-LROHXQWX.js → chunk-R4PMBWU3.js} +2 -2
  95. package/dist/chunk-R56UOY6C.js +222 -0
  96. package/dist/chunk-RNHC7BON.js +230 -0
  97. package/dist/{chunk-7PXALKLM.js → chunk-RRO752KE.js} +11 -10
  98. package/dist/{chunk-RVLV63SI.mjs → chunk-S4NGDDAM.mjs} +105 -36
  99. package/dist/{chunk-D5MQBUP2.js → chunk-SA3N2LUB.js} +22 -17
  100. package/dist/{chunk-BROIZ266.js → chunk-SFBSI3J7.js} +6 -3
  101. package/dist/{chunk-RVO6R37N.mjs → chunk-SHDQJ5BJ.mjs} +1 -1
  102. package/dist/{chunk-N2JYU4JI.js → chunk-SHU7L4NM.js} +52 -2
  103. package/dist/{chunk-M3MOSUZO.mjs → chunk-SI3P3V75.mjs} +16 -6
  104. package/dist/{chunk-UVMQJOTX.js → chunk-SK7PXSVE.js} +23 -14
  105. package/dist/{chunk-U356F7GU.js → chunk-SO2ADQTB.js} +52 -11
  106. package/dist/{chunk-NKKIJQMV.mjs → chunk-SPIPFOGD.mjs} +4 -2
  107. package/dist/{chunk-NQNHM4OL.mjs → chunk-SRC7JHME.mjs} +1 -1
  108. package/dist/{chunk-2RBHQBSG.js → chunk-SXTMVZ4W.js} +25 -12
  109. package/dist/{chunk-BEM7XG2L.js → chunk-SYJJKI7U.js} +35 -14
  110. package/dist/{chunk-RYNLPRUM.mjs → chunk-SYVMCKPR.mjs} +1 -1
  111. package/dist/{chunk-SY23FAXK.mjs → chunk-T6HNFCOW.mjs} +24 -8
  112. package/dist/{chunk-ZITBUGBH.mjs → chunk-TBMDIAZI.mjs} +59 -12
  113. package/dist/{chunk-B63GEB2Y.js → chunk-TIDVBSXR.js} +47 -34
  114. package/dist/{chunk-ZJI2VLIL.js → chunk-TLDTBCT6.js} +15 -3
  115. package/dist/{chunk-XFPJYKBQ.js → chunk-TN7GMDME.js} +13 -9
  116. package/dist/{chunk-M3FVPPMM.js → chunk-TO4SSBAJ.js} +17 -12
  117. package/dist/{chunk-XTQUPDRI.js → chunk-TPU6S7G7.js} +2 -2
  118. package/dist/{chunk-NEZ445D4.mjs → chunk-TRXNHYWB.mjs} +3 -3
  119. package/dist/{chunk-H6NC6SBX.js → chunk-TVEO2CFD.js} +2 -2
  120. package/dist/{chunk-6QQBMZQ6.mjs → chunk-U2ZXZ2KQ.mjs} +74 -10
  121. package/dist/{chunk-AVLIUHOS.mjs → chunk-U337RHJB.mjs} +4 -4
  122. package/dist/{chunk-VC26SAXB.js → chunk-UQZ4RLTI.js} +12 -6
  123. package/dist/{chunk-PXO2F2CS.mjs → chunk-V23KR23W.mjs} +47 -4
  124. package/dist/{chunk-BA6TJQZL.js → chunk-V3QEV3TL.js} +6 -6
  125. package/dist/{chunk-GG72T6JK.js → chunk-VOSN3IQC.js} +47 -4
  126. package/dist/{chunk-J4OQ2VRH.mjs → chunk-W6T3CG7U.mjs} +45 -4
  127. package/dist/{chunk-OTEM4FVX.mjs → chunk-WGKNAOW7.mjs} +11 -7
  128. package/dist/chunk-WLFLQB4R.mjs +312 -0
  129. package/dist/{chunk-W6AWN7BC.js → chunk-WLORVPTR.js} +4 -4
  130. package/dist/{chunk-J5N5OQWB.mjs → chunk-WOEX4S6J.mjs} +5 -2
  131. package/dist/{chunk-CAQPYJFA.mjs → chunk-WT72F56O.mjs} +1 -1
  132. package/dist/{chunk-7Z64GEMN.js → chunk-WTASPL6V.js} +3 -1
  133. package/dist/{chunk-2LYV6NBJ.mjs → chunk-WTIEJCRV.mjs} +7 -1
  134. package/dist/{chunk-L6KSO66F.mjs → chunk-WYPTAUCX.mjs} +2 -5
  135. package/dist/{chunk-CC5GFX6F.js → chunk-XKMZ5AMS.js} +2 -1
  136. package/dist/{chunk-WCTNQYXO.js → chunk-XMD7CQQ2.js} +12 -7
  137. package/dist/{chunk-7DUHHRAU.mjs → chunk-Y5X3G2LD.mjs} +41 -5
  138. package/dist/{chunk-ZA5EFHET.mjs → chunk-Z6BDNV3S.mjs} +18 -1
  139. package/dist/{chunk-UBP7HZSU.mjs → chunk-ZG2W4HS5.mjs} +6 -4
  140. package/dist/{chunk-UIIOZEUP.js → chunk-ZLCVJXGL.js} +4 -4
  141. package/dist/{chunk-CME2IFUT.mjs → chunk-ZLP4XEAO.mjs} +21 -16
  142. package/dist/{chunk-YID7J6ZK.js → chunk-ZXVLZKLT.js} +1 -1
  143. package/dist/components/ActivityFeed.js +6 -6
  144. package/dist/components/ActivityFeed.mjs +5 -5
  145. package/dist/components/AreaChart.js +4 -4
  146. package/dist/components/AreaChart.mjs +3 -3
  147. package/dist/components/AutoComplete.js +3 -2
  148. package/dist/components/AutoComplete.mjs +2 -1
  149. package/dist/components/BackTop.js +2 -2
  150. package/dist/components/BackTop.mjs +1 -1
  151. package/dist/components/Badge.js +3 -2
  152. package/dist/components/Badge.mjs +2 -1
  153. package/dist/components/BarChart.js +4 -4
  154. package/dist/components/BarChart.mjs +3 -3
  155. package/dist/components/Breadcrumb.d.mts +1 -1
  156. package/dist/components/Breadcrumb.d.ts +1 -1
  157. package/dist/components/Calendar.d.mts +2 -10
  158. package/dist/components/Calendar.d.ts +2 -10
  159. package/dist/components/Calendar.js +3 -2
  160. package/dist/components/Calendar.mjs +2 -1
  161. package/dist/components/Cascader.js +2 -2
  162. package/dist/components/Cascader.mjs +1 -1
  163. package/dist/components/ChartAxis.d.mts +1 -2
  164. package/dist/components/ChartAxis.d.ts +1 -2
  165. package/dist/components/ChartGrid.d.mts +1 -2
  166. package/dist/components/ChartGrid.d.ts +1 -2
  167. package/dist/components/ChartLegend.js +2 -2
  168. package/dist/components/ChartLegend.mjs +1 -1
  169. package/dist/components/ChartSeries.d.mts +1 -2
  170. package/dist/components/ChartSeries.d.ts +1 -2
  171. package/dist/components/ChartTooltip.js +2 -2
  172. package/dist/components/ChartTooltip.mjs +1 -1
  173. package/dist/components/ChatWindow.js +8 -6
  174. package/dist/components/ChatWindow.mjs +7 -5
  175. package/dist/components/CodeEditor.js +2 -2
  176. package/dist/components/CodeEditor.mjs +1 -1
  177. package/dist/components/CommentThread.js +6 -4
  178. package/dist/components/CommentThread.mjs +5 -3
  179. package/dist/components/CropUpload.d.mts +6 -2
  180. package/dist/components/CropUpload.d.ts +6 -2
  181. package/dist/components/CropUpload.js +4 -4
  182. package/dist/components/CropUpload.mjs +3 -3
  183. package/dist/components/DataTableWithToolbar.d.mts +1 -2
  184. package/dist/components/DataTableWithToolbar.d.ts +1 -2
  185. package/dist/components/DataTableWithToolbar.js +7 -6
  186. package/dist/components/DataTableWithToolbar.mjs +6 -5
  187. package/dist/components/DatePicker.js +3 -2
  188. package/dist/components/DatePicker.mjs +2 -1
  189. package/dist/components/DonutChart.js +5 -5
  190. package/dist/components/DonutChart.mjs +4 -4
  191. package/dist/components/Empty.js +3 -2
  192. package/dist/components/Empty.mjs +2 -1
  193. package/dist/components/FileManager.d.mts +3 -23
  194. package/dist/components/FileManager.d.ts +3 -23
  195. package/dist/components/FileManager.js +2 -2
  196. package/dist/components/FileManager.mjs +1 -1
  197. package/dist/components/FloatButton.js +2 -2
  198. package/dist/components/FloatButton.mjs +1 -1
  199. package/dist/components/Form.js +2 -2
  200. package/dist/components/Form.mjs +1 -1
  201. package/dist/components/FormItem.js +3 -3
  202. package/dist/components/FormItem.mjs +2 -2
  203. package/dist/components/FormWizard.js +3 -3
  204. package/dist/components/FormWizard.mjs +2 -2
  205. package/dist/components/FunnelChart.js +4 -4
  206. package/dist/components/FunnelChart.mjs +3 -3
  207. package/dist/components/GaugeChart.js +3 -2
  208. package/dist/components/GaugeChart.mjs +2 -1
  209. package/dist/components/HeatmapChart.js +3 -3
  210. package/dist/components/HeatmapChart.mjs +2 -2
  211. package/dist/components/Image.js +5 -4
  212. package/dist/components/Image.mjs +4 -3
  213. package/dist/components/ImageAnnotation.d.mts +1 -1
  214. package/dist/components/ImageAnnotation.d.ts +1 -1
  215. package/dist/components/ImageAnnotation.js +3 -2
  216. package/dist/components/ImageAnnotation.mjs +2 -1
  217. package/dist/components/ImageCropper.js +3 -2
  218. package/dist/components/ImageCropper.mjs +2 -1
  219. package/dist/components/ImageGroup.js +4 -3
  220. package/dist/components/ImageGroup.mjs +3 -2
  221. package/dist/components/ImagePreview.js +3 -2
  222. package/dist/components/ImagePreview.mjs +2 -1
  223. package/dist/components/ImageViewer.d.mts +2 -0
  224. package/dist/components/ImageViewer.d.ts +2 -0
  225. package/dist/components/ImageViewer.js +3 -2
  226. package/dist/components/ImageViewer.mjs +2 -1
  227. package/dist/components/InfiniteScroll.js +2 -2
  228. package/dist/components/InfiniteScroll.mjs +1 -1
  229. package/dist/components/Input.js +3 -2
  230. package/dist/components/Input.mjs +2 -1
  231. package/dist/components/InputNumber.js +3 -2
  232. package/dist/components/InputNumber.mjs +2 -1
  233. package/dist/components/Kanban.d.mts +5 -1
  234. package/dist/components/Kanban.d.ts +5 -1
  235. package/dist/components/Kanban.js +3 -3
  236. package/dist/components/Kanban.mjs +2 -2
  237. package/dist/components/LineChart.js +4 -4
  238. package/dist/components/LineChart.mjs +3 -3
  239. package/dist/components/List.d.mts +1 -2
  240. package/dist/components/List.d.ts +1 -2
  241. package/dist/components/List.js +3 -3
  242. package/dist/components/List.mjs +2 -2
  243. package/dist/components/Loading.js +2 -2
  244. package/dist/components/Loading.mjs +1 -1
  245. package/dist/components/MarkdownEditor.js +2 -2
  246. package/dist/components/MarkdownEditor.mjs +1 -1
  247. package/dist/components/Menu.d.mts +2 -2
  248. package/dist/components/Menu.d.ts +2 -2
  249. package/dist/components/MenuItem.d.mts +1 -1
  250. package/dist/components/MenuItem.d.ts +1 -1
  251. package/dist/components/MenuItemGroup.d.mts +1 -1
  252. package/dist/components/MenuItemGroup.d.ts +1 -1
  253. package/dist/components/Message.d.mts +2 -1
  254. package/dist/components/Message.d.ts +2 -1
  255. package/dist/components/Message.js +2 -2
  256. package/dist/components/Message.mjs +1 -1
  257. package/dist/components/Modal.js +2 -2
  258. package/dist/components/Modal.mjs +1 -1
  259. package/dist/components/NotificationCenter.js +6 -6
  260. package/dist/components/NotificationCenter.mjs +5 -5
  261. package/dist/components/PieChart.js +4 -4
  262. package/dist/components/PieChart.mjs +3 -3
  263. package/dist/components/QRCode.d.mts +2 -1
  264. package/dist/components/QRCode.d.ts +2 -1
  265. package/dist/components/QRCode.js +3 -2
  266. package/dist/components/QRCode.mjs +2 -1
  267. package/dist/components/RadarChart.js +4 -4
  268. package/dist/components/RadarChart.mjs +3 -3
  269. package/dist/components/Rate.js +2 -2
  270. package/dist/components/Rate.mjs +1 -1
  271. package/dist/components/Resizable.js +2 -2
  272. package/dist/components/Resizable.mjs +1 -1
  273. package/dist/components/Result.js +2 -2
  274. package/dist/components/Result.mjs +1 -1
  275. package/dist/components/RichTextEditor.js +2 -2
  276. package/dist/components/RichTextEditor.mjs +1 -1
  277. package/dist/components/ScatterChart.js +4 -4
  278. package/dist/components/ScatterChart.mjs +3 -3
  279. package/dist/components/Segmented.d.mts +1 -1
  280. package/dist/components/Segmented.d.ts +1 -1
  281. package/dist/components/Segmented.js +2 -2
  282. package/dist/components/Segmented.mjs +1 -1
  283. package/dist/components/Select.js +2 -2
  284. package/dist/components/Select.mjs +1 -1
  285. package/dist/components/Slider.js +2 -2
  286. package/dist/components/Slider.mjs +1 -1
  287. package/dist/components/Splitter.js +2 -2
  288. package/dist/components/Splitter.mjs +1 -1
  289. package/dist/components/Steps.js +2 -2
  290. package/dist/components/Steps.mjs +1 -1
  291. package/dist/components/StepsItem.js +2 -2
  292. package/dist/components/StepsItem.mjs +1 -1
  293. package/dist/components/SubMenu.d.mts +1 -1
  294. package/dist/components/SubMenu.d.ts +1 -1
  295. package/dist/components/SunburstChart.js +4 -4
  296. package/dist/components/SunburstChart.mjs +3 -3
  297. package/dist/components/TabPane.js +2 -2
  298. package/dist/components/TabPane.mjs +1 -1
  299. package/dist/components/Table.d.mts +2 -2
  300. package/dist/components/Table.d.ts +2 -2
  301. package/dist/components/Table.js +4 -4
  302. package/dist/components/Table.mjs +3 -3
  303. package/dist/components/Tabs.d.mts +0 -4
  304. package/dist/components/Tabs.d.ts +0 -4
  305. package/dist/components/Tabs.js +2 -2
  306. package/dist/components/Tabs.mjs +1 -1
  307. package/dist/components/Tag.js +3 -2
  308. package/dist/components/Tag.mjs +2 -1
  309. package/dist/components/TaskBoard.d.mts +3 -1
  310. package/dist/components/TaskBoard.d.ts +3 -1
  311. package/dist/components/TaskBoard.js +2 -2
  312. package/dist/components/TaskBoard.mjs +1 -1
  313. package/dist/components/Textarea.js +3 -2
  314. package/dist/components/Textarea.mjs +2 -1
  315. package/dist/components/TimePicker.js +2 -2
  316. package/dist/components/TimePicker.mjs +1 -1
  317. package/dist/components/Timeline.d.mts +5 -1
  318. package/dist/components/Timeline.d.ts +5 -1
  319. package/dist/components/Timeline.js +3 -2
  320. package/dist/components/Timeline.mjs +2 -1
  321. package/dist/components/Tour.js +4 -3
  322. package/dist/components/Tour.mjs +3 -2
  323. package/dist/components/Transfer.js +2 -2
  324. package/dist/components/Transfer.mjs +1 -1
  325. package/dist/components/Tree.js +3 -3
  326. package/dist/components/Tree.mjs +2 -2
  327. package/dist/components/TreeMapChart.js +4 -4
  328. package/dist/components/TreeMapChart.mjs +3 -3
  329. package/dist/components/Upload.js +2 -2
  330. package/dist/components/Upload.mjs +1 -1
  331. package/dist/components/VirtualList.js +2 -2
  332. package/dist/components/VirtualList.mjs +1 -1
  333. package/dist/components/VirtualTable.d.mts +7 -2
  334. package/dist/components/VirtualTable.d.ts +7 -2
  335. package/dist/components/VirtualTable.js +2 -2
  336. package/dist/components/VirtualTable.mjs +1 -1
  337. package/dist/index.d.mts +52 -53
  338. package/dist/index.d.ts +52 -53
  339. package/dist/index.js +81 -81
  340. package/dist/index.mjs +80 -80
  341. package/dist/{types-DaC4a0Ny.d.ts → types-CcgZY0mv.d.mts} +2 -2
  342. package/dist/{types-DaC4a0Ny.d.mts → types-CcgZY0mv.d.ts} +2 -2
  343. package/package.json +6 -6
  344. package/dist/chunk-5EVHVZG5.js +0 -131
  345. package/dist/chunk-AF2AEZKM.js +0 -165
  346. package/dist/chunk-CDRQSKXT.mjs +0 -195
  347. package/dist/chunk-EPJ6W4VI.mjs +0 -165
  348. package/dist/chunk-GYQ2DN6Z.mjs +0 -174
  349. package/dist/chunk-MTIGGMHG.mjs +0 -180
  350. package/dist/chunk-NDGA3N6H.js +0 -180
  351. package/dist/chunk-S5Y6UHAK.mjs +0 -131
  352. package/dist/chunk-T7KO6EVK.js +0 -174
@@ -60,6 +60,34 @@ var Rate = ({
60
60
  setHoverValue(0);
61
61
  onHoverChange?.(0);
62
62
  }, [disabled, onHoverChange]);
63
+ const step = allowHalf ? 0.5 : 1;
64
+ const handleKeyDown = useCallback(
65
+ (e) => {
66
+ if (disabled) return;
67
+ let next = value;
68
+ switch (e.key) {
69
+ case "ArrowRight":
70
+ case "ArrowUp":
71
+ next = Math.min(count, value + step);
72
+ break;
73
+ case "ArrowLeft":
74
+ case "ArrowDown":
75
+ next = Math.max(0, value - step);
76
+ break;
77
+ case "Home":
78
+ next = 0;
79
+ break;
80
+ case "End":
81
+ next = count;
82
+ break;
83
+ default:
84
+ return;
85
+ }
86
+ e.preventDefault();
87
+ if (next !== value) onChange?.(next);
88
+ },
89
+ [disabled, value, count, step, onChange]
90
+ );
63
91
  const starIcon = useMemo(
64
92
  () => /* @__PURE__ */ jsx("svg", { viewBox: starViewBox, fill: "currentColor", className: "w-full h-full", children: /* @__PURE__ */ jsx("path", { d: starPathD }) }),
65
93
  []
@@ -90,9 +118,7 @@ var Rate = ({
90
118
  "span",
91
119
  {
92
120
  className: getRateStarClasses(size, isChar, disabled),
93
- role: "radio",
94
- "aria-checked": full || half,
95
- "aria-label": `${i + 1} star${i + 1 > 1 ? "s" : ""}`,
121
+ "aria-hidden": "true",
96
122
  onClick: (e) => handleClick(i, e),
97
123
  onMouseMove: (e) => handleMouseMove(i, e),
98
124
  onMouseLeave: handleMouseLeave,
@@ -117,7 +143,24 @@ var Rate = ({
117
143
  handleMouseMove,
118
144
  handleMouseLeave
119
145
  ]);
120
- return /* @__PURE__ */ jsx("div", { className: classNames(rateBaseClasses, className), role: "radiogroup", "aria-label": "Rating", children: stars });
146
+ const valueText = `${value} star${value === 1 ? "" : "s"}`;
147
+ return /* @__PURE__ */ jsx(
148
+ "div",
149
+ {
150
+ className: classNames(rateBaseClasses, className),
151
+ role: "slider",
152
+ "aria-label": "Rating",
153
+ "aria-valuemin": 0,
154
+ "aria-valuemax": count,
155
+ "aria-valuenow": value,
156
+ "aria-valuetext": valueText,
157
+ "aria-disabled": disabled || void 0,
158
+ "aria-orientation": "horizontal",
159
+ tabIndex: disabled ? -1 : 0,
160
+ onKeyDown: handleKeyDown,
161
+ children: stars
162
+ }
163
+ );
121
164
  };
122
165
 
123
166
  export {
@@ -1,15 +1,15 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
2
2
 
3
- var _chunkTEYL5X56js = require('./chunk-TEYL5X56.js');
3
+ var _chunkDH4B2COVjs = require('./chunk-DH4B2COV.js');
4
4
 
5
5
 
6
- var _chunkKYNWNTGOjs = require('./chunk-KYNWNTGO.js');
6
+ var _chunkHFGTJEQWjs = require('./chunk-HFGTJEQW.js');
7
7
 
8
8
 
9
9
  var _chunkWOSKRZOOjs = require('./chunk-WOSKRZOO.js');
10
10
 
11
11
 
12
- var _chunkM3FVPPMMjs = require('./chunk-M3FVPPMM.js');
12
+ var _chunkTO4SSBAJjs = require('./chunk-TO4SSBAJ.js');
13
13
 
14
14
 
15
15
  var _chunkLZG24TDBjs = require('./chunk-LZG24TDB.js');
@@ -310,7 +310,7 @@ var DataTableWithToolbar = ({
310
310
  ),
311
311
  children: [
312
312
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
313
- _chunkM3FVPPMMjs.Input,
313
+ _chunkTO4SSBAJjs.Input,
314
314
  {
315
315
  type: "search",
316
316
  size: "sm",
@@ -383,7 +383,7 @@ var DataTableWithToolbar = ({
383
383
  className: _nullishCoalesce(filter.itemClass, () => ( "w-full sm:w-auto sm:min-w-[120px] sm:max-w-[180px]")),
384
384
  style: filter.itemStyle,
385
385
  children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
386
- _chunkKYNWNTGOjs.Select,
386
+ _chunkHFGTJEQWjs.Select,
387
387
  {
388
388
  size: "sm",
389
389
  options: (_nullishCoalesce(filter.options, () => ( []))).map((opt) => ({
@@ -435,7 +435,7 @@ var DataTableWithToolbar = ({
435
435
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: wrapperClasses, "data-tiger-data-table-with-toolbar": true, children: [
436
436
  renderToolbar(),
437
437
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
438
- _chunkTEYL5X56js.Table,
438
+ _chunkDH4B2COVjs.Table,
439
439
  {
440
440
  ...remainingTableProps,
441
441
  locale,
@@ -60,6 +60,34 @@ var Rate = ({
60
60
  setHoverValue(0);
61
61
  _optionalChain([onHoverChange, 'optionalCall', _3 => _3(0)]);
62
62
  }, [disabled, onHoverChange]);
63
+ const step = allowHalf ? 0.5 : 1;
64
+ const handleKeyDown = _react.useCallback.call(void 0,
65
+ (e) => {
66
+ if (disabled) return;
67
+ let next = value;
68
+ switch (e.key) {
69
+ case "ArrowRight":
70
+ case "ArrowUp":
71
+ next = Math.min(count, value + step);
72
+ break;
73
+ case "ArrowLeft":
74
+ case "ArrowDown":
75
+ next = Math.max(0, value - step);
76
+ break;
77
+ case "Home":
78
+ next = 0;
79
+ break;
80
+ case "End":
81
+ next = count;
82
+ break;
83
+ default:
84
+ return;
85
+ }
86
+ e.preventDefault();
87
+ if (next !== value) _optionalChain([onChange, 'optionalCall', _4 => _4(next)]);
88
+ },
89
+ [disabled, value, count, step, onChange]
90
+ );
63
91
  const starIcon = _react.useMemo.call(void 0,
64
92
  () => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "svg", { viewBox: _tigercatcore.starViewBox, fill: "currentColor", className: "w-full h-full", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "path", { d: _tigercatcore.starPathD }) }),
65
93
  []
@@ -90,9 +118,7 @@ var Rate = ({
90
118
  "span",
91
119
  {
92
120
  className: _tigercatcore.getRateStarClasses.call(void 0, size, isChar, disabled),
93
- role: "radio",
94
- "aria-checked": full || half,
95
- "aria-label": `${i + 1} star${i + 1 > 1 ? "s" : ""}`,
121
+ "aria-hidden": "true",
96
122
  onClick: (e) => handleClick(i, e),
97
123
  onMouseMove: (e) => handleMouseMove(i, e),
98
124
  onMouseLeave: handleMouseLeave,
@@ -117,7 +143,24 @@ var Rate = ({
117
143
  handleMouseMove,
118
144
  handleMouseLeave
119
145
  ]);
120
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: _tigercatcore.classNames.call(void 0, _tigercatcore.rateBaseClasses, className), role: "radiogroup", "aria-label": "Rating", children: stars });
146
+ const valueText = `${value} star${value === 1 ? "" : "s"}`;
147
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
148
+ "div",
149
+ {
150
+ className: _tigercatcore.classNames.call(void 0, _tigercatcore.rateBaseClasses, className),
151
+ role: "slider",
152
+ "aria-label": "Rating",
153
+ "aria-valuemin": 0,
154
+ "aria-valuemax": count,
155
+ "aria-valuenow": value,
156
+ "aria-valuetext": valueText,
157
+ "aria-disabled": disabled || void 0,
158
+ "aria-orientation": "horizontal",
159
+ tabIndex: disabled ? -1 : 0,
160
+ onKeyDown: handleKeyDown,
161
+ children: stars
162
+ }
163
+ );
121
164
  };
122
165
 
123
166
 
@@ -1,3 +1,7 @@
1
+ import {
2
+ useTigerConfig
3
+ } from "./chunk-QAIBQHIO.mjs";
4
+
1
5
  // src/components/AutoComplete.tsx
2
6
  import { useState, useRef, useEffect, useId, useMemo } from "react";
3
7
  import {
@@ -14,6 +18,8 @@ import {
14
18
  getPickerOptionAria,
15
19
  getPickerOptionId,
16
20
  classNames,
21
+ resolveLocaleText,
22
+ mergeTigerLocale,
17
23
  icon20ViewBox,
18
24
  closeSolidIcon20PathD
19
25
  } from "@expcat/tigercat-core";
@@ -29,6 +35,7 @@ var AUTOCOMPLETE_KEYS = /* @__PURE__ */ new Set([
29
35
  "filterOption",
30
36
  "defaultActiveFirstOption",
31
37
  "allowFreeInput",
38
+ "locale",
32
39
  "onChange",
33
40
  "onSelect",
34
41
  "onSearch"
@@ -41,15 +48,27 @@ var AutoComplete = (props) => {
41
48
  size = "md",
42
49
  disabled = false,
43
50
  clearable = false,
44
- notFoundText = "No matches found",
51
+ notFoundText,
45
52
  filterOption = true,
46
53
  defaultActiveFirstOption = true,
54
+ allowFreeInput = true,
55
+ locale,
47
56
  className,
48
57
  onChange,
49
58
  onSelect,
50
59
  onSearch,
51
60
  ...rest
52
61
  } = props;
62
+ const config = useTigerConfig();
63
+ const mergedLocale = useMemo(
64
+ () => mergeTigerLocale(config.locale, locale),
65
+ [config.locale, locale]
66
+ );
67
+ const resolvedNotFoundText = resolveLocaleText(
68
+ "No matches found",
69
+ notFoundText,
70
+ mergedLocale?.common?.emptyText
71
+ );
53
72
  const divProps = {};
54
73
  for (const key of Object.keys(rest)) {
55
74
  if (!AUTOCOMPLETE_KEYS.has(key)) {
@@ -80,6 +99,23 @@ var AutoComplete = (props) => {
80
99
  setIsOpen(false);
81
100
  setActiveIndex(-1);
82
101
  }
102
+ function constrainToOption() {
103
+ if (allowFreeInput) return;
104
+ const match = options.find((o) => !o.disabled && o.label === inputValue);
105
+ if (match) {
106
+ if (String(match.value) !== String(value)) {
107
+ onChange?.(match.value);
108
+ onSelect?.(match.value, match);
109
+ }
110
+ return;
111
+ }
112
+ const current = options.find((o) => String(o.value) === String(value));
113
+ const revertLabel = current ? current.label : "";
114
+ if (revertLabel !== inputValue) {
115
+ setInputValue(revertLabel);
116
+ onChange?.(current ? current.value : "");
117
+ }
118
+ }
83
119
  function handleInput(e) {
84
120
  const val = e.target.value;
85
121
  setInputValue(val);
@@ -126,6 +162,9 @@ var AutoComplete = (props) => {
126
162
  e.preventDefault();
127
163
  if (activeIndex >= 0 && activeIndex < filteredOptions.length) {
128
164
  handleSelect(filteredOptions[activeIndex]);
165
+ } else {
166
+ constrainToOption();
167
+ closeDropdown();
129
168
  }
130
169
  break;
131
170
  case "Escape":
@@ -159,7 +198,8 @@ var AutoComplete = (props) => {
159
198
  autoComplete: "off",
160
199
  onChange: handleInput,
161
200
  onFocus: openDropdown,
162
- onKeyDown: handleKeyDown
201
+ onKeyDown: handleKeyDown,
202
+ onBlur: constrainToOption
163
203
  }
164
204
  ),
165
205
  showClearButton && /* @__PURE__ */ jsx(
@@ -167,7 +207,7 @@ var AutoComplete = (props) => {
167
207
  {
168
208
  type: "button",
169
209
  className: "absolute right-2 top-1/2 -translate-y-1/2 text-[var(--tiger-autocomplete-clear,var(--tiger-text-muted,#9ca3af))] hover:text-[var(--tiger-autocomplete-clear-hover,var(--tiger-text,#111827))] transition-colors",
170
- "aria-label": "Clear",
210
+ "aria-label": resolveLocaleText("Clear", mergedLocale?.common?.clearText),
171
211
  onClick: handleClear,
172
212
  children: /* @__PURE__ */ jsx(
173
213
  "svg",
@@ -194,13 +234,14 @@ var AutoComplete = (props) => {
194
234
  !!option.disabled,
195
235
  size
196
236
  ),
237
+ onMouseDown: (e) => e.preventDefault(),
197
238
  onClick: () => handleSelect(option),
198
239
  onMouseEnter: () => setActiveIndex(index),
199
240
  children: option.label
200
241
  },
201
242
  String(option.value)
202
243
  )) }),
203
- isOpen && inputValue && filteredOptions.length === 0 && /* @__PURE__ */ jsx("div", { className: classNames(autoCompleteDropdownClasses, autoCompleteEmptyStateClasses), children: notFoundText })
244
+ isOpen && inputValue && filteredOptions.length === 0 && /* @__PURE__ */ jsx("div", { className: classNames(autoCompleteDropdownClasses, autoCompleteEmptyStateClasses), children: resolvedNotFoundText })
204
245
  ] });
205
246
  };
206
247
 
@@ -1,5 +1,5 @@
1
1
  // src/components/FloatButton.tsx
2
- import { useState, useMemo, useCallback } from "react";
2
+ import { createContext, useContext, useState, useMemo, useCallback } from "react";
3
3
  import ReactDOM from "react-dom";
4
4
  import {
5
5
  classNames,
@@ -12,8 +12,9 @@ import {
12
12
  floatButtonGroupClasses
13
13
  } from "@expcat/tigercat-core";
14
14
  import { jsx, jsxs } from "react/jsx-runtime";
15
+ var FloatButtonGroupContext = createContext(null);
15
16
  var FloatButton = ({
16
- shape = "circle",
17
+ shape,
17
18
  size = "md",
18
19
  type = "primary",
19
20
  tooltip,
@@ -24,16 +25,18 @@ var FloatButton = ({
24
25
  onClick,
25
26
  ...props
26
27
  }) => {
28
+ const group = useContext(FloatButtonGroupContext);
29
+ const resolvedShape = shape ?? group?.shape ?? "circle";
27
30
  const classes = useMemo(
28
31
  () => classNames(
29
32
  floatButtonBaseClasses,
30
- floatButtonShapeClasses[shape],
33
+ floatButtonShapeClasses[resolvedShape],
31
34
  floatButtonSizeClasses[size],
32
35
  floatButtonTypeClasses[type],
33
36
  disabled && floatButtonDisabledClasses,
34
37
  className
35
38
  ),
36
- [shape, size, type, disabled, className]
39
+ [resolvedShape, size, type, disabled, className]
37
40
  );
38
41
  return /* @__PURE__ */ jsx(
39
42
  "button",
@@ -50,7 +53,7 @@ var FloatButton = ({
50
53
  );
51
54
  };
52
55
  var FloatButtonGroup = ({
53
- shape: _shape = "circle",
56
+ shape: groupShape,
54
57
  trigger = "click",
55
58
  open: controlledOpen,
56
59
  triggerNode,
@@ -59,6 +62,7 @@ var FloatButtonGroup = ({
59
62
  onOpenChange,
60
63
  ...props
61
64
  }) => {
65
+ const groupContextValue = useMemo(() => ({ shape: groupShape }), [groupShape]);
62
66
  const [internalOpen, setInternalOpen] = useState(false);
63
67
  const isOpen = controlledOpen ?? internalOpen;
64
68
  const toggle = useCallback(() => {
@@ -76,7 +80,7 @@ var FloatButtonGroup = ({
76
80
  }, [onOpenChange]);
77
81
  const groupClasses = useMemo(() => classNames(floatButtonGroupClasses, className), [className]);
78
82
  if (!isBrowser()) return null;
79
- const content = /* @__PURE__ */ jsxs(
83
+ const content = /* @__PURE__ */ jsx(FloatButtonGroupContext.Provider, { value: groupContextValue, children: /* @__PURE__ */ jsxs(
80
84
  "div",
81
85
  {
82
86
  className: groupClasses,
@@ -88,7 +92,7 @@ var FloatButtonGroup = ({
88
92
  isOpen && children
89
93
  ]
90
94
  }
91
- );
95
+ ) });
92
96
  return ReactDOM.createPortal(content, document.body);
93
97
  };
94
98
 
@@ -0,0 +1,312 @@
1
+ import {
2
+ useTigerConfig
3
+ } from "./chunk-QAIBQHIO.mjs";
4
+
5
+ // src/components/Calendar.tsx
6
+ import { useState, useMemo, useCallback, useRef, useEffect } from "react";
7
+ import { classNames } from "@expcat/tigercat-core";
8
+ import {
9
+ getCalendarContainerClasses,
10
+ calendarHeaderClasses,
11
+ calendarNavButtonClasses,
12
+ calendarTitleClasses,
13
+ calendarWeekdayClasses,
14
+ getCalendarDayClasses,
15
+ getCalendarMonthClasses,
16
+ isSameDay,
17
+ getMonthDays,
18
+ getShortDayNames,
19
+ getShortMonthNames,
20
+ formatMonthYear,
21
+ formatDate,
22
+ parseDate,
23
+ addDays,
24
+ getCalendarLabels,
25
+ mergeTigerLocale
26
+ } from "@expcat/tigercat-core";
27
+ import { jsx, jsxs } from "react/jsx-runtime";
28
+ var Calendar = ({
29
+ value,
30
+ mode = "month",
31
+ fullscreen = false,
32
+ disabledDate,
33
+ locale,
34
+ onChange,
35
+ onPanelChange,
36
+ className
37
+ }) => {
38
+ const config = useTigerConfig();
39
+ const mergedLocale = useMemo(
40
+ () => mergeTigerLocale(config.locale, locale),
41
+ [config.locale, locale]
42
+ );
43
+ const localeCode = mergedLocale?.locale;
44
+ const labels = useMemo(() => getCalendarLabels(mergedLocale), [mergedLocale]);
45
+ const weekdayNames = useMemo(() => getShortDayNames(localeCode), [localeCode]);
46
+ const monthNames = useMemo(() => getShortMonthNames(localeCode), [localeCode]);
47
+ const today = /* @__PURE__ */ new Date();
48
+ const [viewYear, setViewYear] = useState(value?.getFullYear() ?? today.getFullYear());
49
+ const [viewMonth, setViewMonth] = useState(value?.getMonth() ?? today.getMonth());
50
+ const days = useMemo(() => getMonthDays(viewYear, viewMonth), [viewYear, viewMonth]);
51
+ const weeks = useMemo(() => {
52
+ const out = [];
53
+ for (let i = 0; i < days.length; i += 7) out.push(days.slice(i, i + 7));
54
+ return out;
55
+ }, [days]);
56
+ const monthRows = useMemo(() => {
57
+ const out = [];
58
+ for (let i = 0; i < monthNames.length; i += 3) out.push(monthNames.slice(i, i + 3));
59
+ return out;
60
+ }, [monthNames]);
61
+ const navigate = useCallback(
62
+ (newYear, newMonth) => {
63
+ setViewYear(newYear);
64
+ setViewMonth(newMonth);
65
+ onPanelChange?.(new Date(newYear, newMonth, 1), mode);
66
+ },
67
+ [mode, onPanelChange]
68
+ );
69
+ const prevMonth = useCallback(() => {
70
+ if (viewMonth === 0) navigate(viewYear - 1, 11);
71
+ else navigate(viewYear, viewMonth - 1);
72
+ }, [viewYear, viewMonth, navigate]);
73
+ const nextMonth = useCallback(() => {
74
+ if (viewMonth === 11) navigate(viewYear + 1, 0);
75
+ else navigate(viewYear, viewMonth + 1);
76
+ }, [viewYear, viewMonth, navigate]);
77
+ const prevYear = useCallback(
78
+ () => navigate(viewYear - 1, viewMonth),
79
+ [viewYear, viewMonth, navigate]
80
+ );
81
+ const nextYear = useCallback(
82
+ () => navigate(viewYear + 1, viewMonth),
83
+ [viewYear, viewMonth, navigate]
84
+ );
85
+ const selectDay = useCallback(
86
+ (date) => {
87
+ if (disabledDate?.(date)) return;
88
+ onChange?.(date);
89
+ },
90
+ [disabledDate, onChange]
91
+ );
92
+ const selectMonth = useCallback(
93
+ (monthIdx) => {
94
+ setViewMonth(monthIdx);
95
+ onPanelChange?.(new Date(viewYear, monthIdx, 1), mode);
96
+ },
97
+ [viewYear, mode, onPanelChange]
98
+ );
99
+ const dayGridRef = useRef(null);
100
+ const pendingFocusIsoRef = useRef(null);
101
+ const [activeIso, setActiveIso] = useState(null);
102
+ const toIso = (d) => formatDate(d, "yyyy-MM-dd");
103
+ const defaultDayIso = (() => {
104
+ if (value && value.getFullYear() === viewYear && value.getMonth() === viewMonth)
105
+ return toIso(value);
106
+ if (today.getFullYear() === viewYear && today.getMonth() === viewMonth) return toIso(today);
107
+ return toIso(new Date(viewYear, viewMonth, 1));
108
+ })();
109
+ const rovingDayIso = activeIso ?? defaultDayIso;
110
+ const focusDayIso = (iso) => {
111
+ const el = dayGridRef.current?.querySelector(`button[data-date="${iso}"]`);
112
+ if (el && !el.disabled) {
113
+ el.focus();
114
+ setActiveIso(iso);
115
+ return true;
116
+ }
117
+ return false;
118
+ };
119
+ const moveDayFocus = (deltaDays) => {
120
+ const activeEl = document.activeElement;
121
+ const currentIso = activeEl?.getAttribute("data-date") ?? rovingDayIso;
122
+ const base = parseDate(currentIso);
123
+ if (!base) return;
124
+ let candidate = addDays(base, deltaDays);
125
+ for (let attempts = 0; attempts < 42; attempts++) {
126
+ const iso = toIso(candidate);
127
+ const el = dayGridRef.current?.querySelector(`button[data-date="${iso}"]`);
128
+ if (el && !el.disabled) {
129
+ el.focus();
130
+ setActiveIso(iso);
131
+ return;
132
+ }
133
+ if (!el) {
134
+ pendingFocusIsoRef.current = iso;
135
+ setActiveIso(iso);
136
+ navigate(candidate.getFullYear(), candidate.getMonth());
137
+ return;
138
+ }
139
+ candidate = addDays(candidate, deltaDays);
140
+ }
141
+ };
142
+ useEffect(() => {
143
+ const iso = pendingFocusIsoRef.current;
144
+ if (!iso) return;
145
+ const el = dayGridRef.current?.querySelector(`button[data-date="${iso}"]`);
146
+ if (el) {
147
+ el.focus();
148
+ pendingFocusIsoRef.current = null;
149
+ }
150
+ }, [days]);
151
+ const handleDayGridKeyDown = (e) => {
152
+ switch (e.key) {
153
+ case "ArrowLeft":
154
+ e.preventDefault();
155
+ moveDayFocus(-1);
156
+ break;
157
+ case "ArrowRight":
158
+ e.preventDefault();
159
+ moveDayFocus(1);
160
+ break;
161
+ case "ArrowUp":
162
+ e.preventDefault();
163
+ moveDayFocus(-7);
164
+ break;
165
+ case "ArrowDown":
166
+ e.preventDefault();
167
+ moveDayFocus(7);
168
+ break;
169
+ case "Home":
170
+ e.preventDefault();
171
+ focusDayIso(toIso(new Date(viewYear, viewMonth, 1)));
172
+ break;
173
+ case "End":
174
+ e.preventDefault();
175
+ focusDayIso(toIso(new Date(viewYear, viewMonth + 1, 0)));
176
+ break;
177
+ case "Enter":
178
+ case " ": {
179
+ const activeEl = document.activeElement;
180
+ const iso = activeEl?.getAttribute("data-date");
181
+ if (iso) {
182
+ e.preventDefault();
183
+ const d = parseDate(iso);
184
+ if (d) selectDay(d);
185
+ }
186
+ break;
187
+ }
188
+ default:
189
+ break;
190
+ }
191
+ };
192
+ const [activeMonthIdx, setActiveMonthIdx] = useState(null);
193
+ const rovingMonthIdx = activeMonthIdx ?? viewMonth;
194
+ const monthGridRef = useRef(null);
195
+ const focusMonthIdx = (idx) => {
196
+ const els = monthGridRef.current?.querySelectorAll('button[role="gridcell"]');
197
+ els?.[idx]?.focus();
198
+ setActiveMonthIdx(idx);
199
+ };
200
+ const handleMonthKeyDown = (e, idx) => {
201
+ let target = idx;
202
+ switch (e.key) {
203
+ case "ArrowRight":
204
+ target = Math.min(11, idx + 1);
205
+ break;
206
+ case "ArrowLeft":
207
+ target = Math.max(0, idx - 1);
208
+ break;
209
+ case "ArrowDown":
210
+ target = Math.min(11, idx + 3);
211
+ break;
212
+ case "ArrowUp":
213
+ target = Math.max(0, idx - 3);
214
+ break;
215
+ case "Home":
216
+ target = 0;
217
+ break;
218
+ case "End":
219
+ target = 11;
220
+ break;
221
+ case "Enter":
222
+ case " ":
223
+ e.preventDefault();
224
+ selectMonth(idx);
225
+ return;
226
+ default:
227
+ return;
228
+ }
229
+ e.preventDefault();
230
+ focusMonthIdx(target);
231
+ };
232
+ const containerClass = classNames(getCalendarContainerClasses(fullscreen), className);
233
+ return /* @__PURE__ */ jsxs("div", { className: containerClass, role: "group", children: [
234
+ /* @__PURE__ */ jsxs("div", { className: calendarHeaderClasses, children: [
235
+ /* @__PURE__ */ jsx(
236
+ "button",
237
+ {
238
+ type: "button",
239
+ className: calendarNavButtonClasses,
240
+ "aria-label": mode === "month" ? labels.previousMonth : labels.previousYear,
241
+ onClick: mode === "month" ? prevMonth : prevYear,
242
+ children: "\u2039"
243
+ }
244
+ ),
245
+ /* @__PURE__ */ jsx("span", { className: calendarTitleClasses, children: mode === "month" ? formatMonthYear(viewYear, viewMonth, localeCode) : `${viewYear}` }),
246
+ /* @__PURE__ */ jsx(
247
+ "button",
248
+ {
249
+ type: "button",
250
+ className: calendarNavButtonClasses,
251
+ "aria-label": mode === "month" ? labels.nextMonth : labels.nextYear,
252
+ onClick: mode === "month" ? nextMonth : nextYear,
253
+ children: "\u203A"
254
+ }
255
+ )
256
+ ] }),
257
+ mode === "year" ? /* @__PURE__ */ jsx("div", { className: "grid grid-cols-1 gap-2", role: "grid", ref: monthGridRef, children: monthRows.map((row, ri) => /* @__PURE__ */ jsx("div", { className: "grid grid-cols-3 gap-2", role: "row", children: row.map((m, ci) => {
258
+ const i = ri * 3 + ci;
259
+ return /* @__PURE__ */ jsx(
260
+ "button",
261
+ {
262
+ type: "button",
263
+ role: "gridcell",
264
+ "aria-selected": viewMonth === i,
265
+ tabIndex: rovingMonthIdx === i ? 0 : -1,
266
+ className: getCalendarMonthClasses(viewMonth === i),
267
+ onClick: () => selectMonth(i),
268
+ onFocus: () => setActiveMonthIdx(i),
269
+ onKeyDown: (e) => handleMonthKeyDown(e, i),
270
+ children: m
271
+ },
272
+ i
273
+ );
274
+ }) }, ri)) }) : /* @__PURE__ */ jsxs("div", { role: "grid", "aria-rowcount": 7, "aria-colcount": 7, ref: dayGridRef, children: [
275
+ /* @__PURE__ */ jsx("div", { className: "grid grid-cols-7", role: "row", children: weekdayNames.map((wd) => /* @__PURE__ */ jsx("div", { className: calendarWeekdayClasses, role: "columnheader", children: wd }, wd)) }),
276
+ weeks.map((week, wi) => /* @__PURE__ */ jsx("div", { className: "grid grid-cols-7", role: "row", onKeyDown: handleDayGridKeyDown, children: week.map((date) => {
277
+ const isCurrentMonth = date.getMonth() === viewMonth;
278
+ const isSelected = value ? isSameDay(date, value) : false;
279
+ const isTodayDate = isSameDay(date, today);
280
+ const isDisabled = !!disabledDate?.(date);
281
+ const iso = toIso(date);
282
+ return /* @__PURE__ */ jsx(
283
+ "button",
284
+ {
285
+ type: "button",
286
+ role: "gridcell",
287
+ "data-date": iso,
288
+ "aria-label": iso,
289
+ "aria-selected": isSelected,
290
+ "aria-current": isTodayDate ? "date" : void 0,
291
+ disabled: isDisabled,
292
+ tabIndex: rovingDayIso === iso && !isDisabled ? 0 : -1,
293
+ className: classNames(
294
+ getCalendarDayClasses(isSelected, isTodayDate, isCurrentMonth, isDisabled),
295
+ "justify-self-center my-0.5"
296
+ ),
297
+ onClick: () => selectDay(date),
298
+ onFocus: () => setActiveIso(iso),
299
+ children: date.getDate()
300
+ },
301
+ iso
302
+ );
303
+ }) }, wi))
304
+ ] })
305
+ ] });
306
+ };
307
+ var Calendar_default = Calendar;
308
+
309
+ export {
310
+ Calendar,
311
+ Calendar_default
312
+ };