@mdigital_ui/ui 0.4.2 → 0.4.4

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 (591) hide show
  1. package/README.md +45 -5
  2. package/dist/accordion/index.d.ts.map +1 -1
  3. package/dist/accordion/index.js +3 -3
  4. package/dist/accordion/types.d.ts +2 -42
  5. package/dist/accordion/types.d.ts.map +1 -1
  6. package/dist/alert/index.d.ts +6 -0
  7. package/dist/alert/index.d.ts.map +1 -0
  8. package/dist/alert/index.js +5 -0
  9. package/dist/alert/types.d.ts +24 -0
  10. package/dist/alert/types.d.ts.map +1 -0
  11. package/dist/anchor/index.d.ts +6 -0
  12. package/dist/anchor/index.d.ts.map +1 -0
  13. package/dist/anchor/types.d.ts +26 -0
  14. package/dist/anchor/types.d.ts.map +1 -0
  15. package/dist/autocomplete/index.d.ts +6 -0
  16. package/dist/autocomplete/index.d.ts.map +1 -0
  17. package/dist/autocomplete/types.d.ts +39 -0
  18. package/dist/autocomplete/types.d.ts.map +1 -0
  19. package/dist/avatar/index.d.ts +0 -6
  20. package/dist/avatar/index.d.ts.map +1 -1
  21. package/dist/avatar/index.js +3 -2
  22. package/dist/avatar/types.d.ts +0 -48
  23. package/dist/avatar/types.d.ts.map +1 -1
  24. package/dist/badge/index.d.ts +1 -23
  25. package/dist/badge/index.d.ts.map +1 -1
  26. package/dist/badge/index.js +3 -3
  27. package/dist/badge/types.d.ts +1 -20
  28. package/dist/badge/types.d.ts.map +1 -1
  29. package/dist/breadcrumbs/index.d.ts.map +1 -1
  30. package/dist/breadcrumbs/index.js +7 -6
  31. package/dist/breadcrumbs/types.d.ts +3 -38
  32. package/dist/breadcrumbs/types.d.ts.map +1 -1
  33. package/dist/button/index.d.ts +1 -1
  34. package/dist/button/index.d.ts.map +1 -1
  35. package/dist/button/index.js +5 -5
  36. package/dist/button/types.d.ts +2 -8
  37. package/dist/button/types.d.ts.map +1 -1
  38. package/dist/button-group/index.d.ts +0 -28
  39. package/dist/button-group/index.d.ts.map +1 -1
  40. package/dist/button-group/index.js +2 -2
  41. package/dist/button-group/types.d.ts +0 -19
  42. package/dist/button-group/types.d.ts.map +1 -1
  43. package/dist/calendar/index.d.ts +6 -0
  44. package/dist/calendar/index.d.ts.map +1 -0
  45. package/dist/calendar/types.d.ts +29 -0
  46. package/dist/calendar/types.d.ts.map +1 -0
  47. package/dist/card/index.d.ts +1 -41
  48. package/dist/card/index.d.ts.map +1 -1
  49. package/dist/card/index.js +3 -3
  50. package/dist/card/types.d.ts +3 -29
  51. package/dist/card/types.d.ts.map +1 -1
  52. package/dist/carousel/carousel-navigation.d.ts.map +1 -1
  53. package/dist/carousel/index.d.ts +5 -2
  54. package/dist/carousel/index.d.ts.map +1 -1
  55. package/dist/carousel/index.js +2 -2
  56. package/dist/carousel/styles.d.ts +12 -0
  57. package/dist/carousel/styles.d.ts.map +1 -0
  58. package/dist/cascader/CascaderMenu.d.ts +41 -0
  59. package/dist/cascader/CascaderMenu.d.ts.map +1 -0
  60. package/dist/cascader/index.d.ts +0 -21
  61. package/dist/cascader/index.d.ts.map +1 -1
  62. package/dist/cascader/index.js +3 -3
  63. package/dist/cascader/types.d.ts +3 -89
  64. package/dist/cascader/types.d.ts.map +1 -1
  65. package/dist/checkbox/index.d.ts.map +1 -1
  66. package/dist/checkbox/index.js +3 -3
  67. package/dist/checkbox/types.d.ts +2 -2
  68. package/dist/checkbox/types.d.ts.map +1 -1
  69. package/dist/checkbox-group/index.d.ts.map +1 -1
  70. package/dist/checkbox-group/index.js +2 -2
  71. package/dist/checkbox-group/types.d.ts +0 -24
  72. package/dist/checkbox-group/types.d.ts.map +1 -1
  73. package/dist/{chunk-HCOTO5WX.js → chunk-253JZOYG.js} +8 -9
  74. package/dist/chunk-253JZOYG.js.map +1 -0
  75. package/dist/{chunk-FZSCLZF6.js → chunk-3D77IPKB.js} +68 -113
  76. package/dist/chunk-3D77IPKB.js.map +1 -0
  77. package/dist/{chunk-GJPZOMFE.js → chunk-3XOHSE3X.js} +71 -34
  78. package/dist/chunk-3XOHSE3X.js.map +1 -0
  79. package/dist/{chunk-ROA7BYGB.js → chunk-3YP7HY3Y.js} +7 -5
  80. package/dist/chunk-3YP7HY3Y.js.map +1 -0
  81. package/dist/chunk-4HKPDSA6.js +378 -0
  82. package/dist/chunk-4HKPDSA6.js.map +1 -0
  83. package/dist/{chunk-OFUPJH35.js → chunk-4TEZWGX7.js} +3 -3
  84. package/dist/{chunk-OFUPJH35.js.map → chunk-4TEZWGX7.js.map} +1 -1
  85. package/dist/{chunk-TLNHWOQQ.js → chunk-4ZXHLPRS.js} +53 -44
  86. package/dist/chunk-4ZXHLPRS.js.map +1 -0
  87. package/dist/{chunk-6LYRMQOI.js → chunk-5MBKTMDW.js} +21 -16
  88. package/dist/chunk-5MBKTMDW.js.map +1 -0
  89. package/dist/{chunk-CN74CNAN.js → chunk-5SEVPU6C.js} +8 -22
  90. package/dist/chunk-5SEVPU6C.js.map +1 -0
  91. package/dist/{chunk-6JGNJI5T.js → chunk-7RT65ZGV.js} +38 -26
  92. package/dist/chunk-7RT65ZGV.js.map +1 -0
  93. package/dist/{chunk-I32ZQUYY.js → chunk-A4MYCEGM.js} +15 -16
  94. package/dist/chunk-A4MYCEGM.js.map +1 -0
  95. package/dist/{chunk-KJTMZJ7V.js → chunk-ADZWWBAX.js} +76 -110
  96. package/dist/chunk-ADZWWBAX.js.map +1 -0
  97. package/dist/{chunk-YXLIGJTN.js → chunk-AFW2ORFT.js} +16 -8
  98. package/dist/chunk-AFW2ORFT.js.map +1 -0
  99. package/dist/{chunk-OLTQAMV2.js → chunk-BGMYX7L5.js} +9 -24
  100. package/dist/chunk-BGMYX7L5.js.map +1 -0
  101. package/dist/chunk-BKLJDEUX.js +857 -0
  102. package/dist/chunk-BKLJDEUX.js.map +1 -0
  103. package/dist/{chunk-4FFVNUTK.js → chunk-BNHRUHI4.js} +7 -6
  104. package/dist/chunk-BNHRUHI4.js.map +1 -0
  105. package/dist/{chunk-DUIL5BYS.js → chunk-BS4PZPY6.js} +82 -53
  106. package/dist/chunk-BS4PZPY6.js.map +1 -0
  107. package/dist/{chunk-POLVJ36Y.js → chunk-C32HL4XU.js} +13 -38
  108. package/dist/chunk-C32HL4XU.js.map +1 -0
  109. package/dist/chunk-C65SCJD6.js +138 -0
  110. package/dist/chunk-C65SCJD6.js.map +1 -0
  111. package/dist/{chunk-3BZE6BBJ.js → chunk-CUXQZRDI.js} +45 -34
  112. package/dist/chunk-CUXQZRDI.js.map +1 -0
  113. package/dist/{chunk-674JC24S.js → chunk-DDZCRCTQ.js} +28 -29
  114. package/dist/chunk-DDZCRCTQ.js.map +1 -0
  115. package/dist/{chunk-64NHVOZS.js → chunk-FU5Q4WVX.js} +26 -16
  116. package/dist/chunk-FU5Q4WVX.js.map +1 -0
  117. package/dist/chunk-G6QIIWKU.js +24 -0
  118. package/dist/chunk-G6QIIWKU.js.map +1 -0
  119. package/dist/{chunk-UTWQ2FZK.js → chunk-GOBUFGGJ.js} +45 -108
  120. package/dist/chunk-GOBUFGGJ.js.map +1 -0
  121. package/dist/{chunk-WRSG7WU5.js → chunk-HJITFPBT.js} +78 -94
  122. package/dist/chunk-HJITFPBT.js.map +1 -0
  123. package/dist/{chunk-ZJNGZCRB.js → chunk-HR5TGNOF.js} +54 -153
  124. package/dist/chunk-HR5TGNOF.js.map +1 -0
  125. package/dist/{chunk-HECAAILV.js → chunk-HRVOTFU4.js} +24 -16
  126. package/dist/chunk-HRVOTFU4.js.map +1 -0
  127. package/dist/{chunk-LX4FDH4J.js → chunk-HSMO2BR4.js} +13 -22
  128. package/dist/chunk-HSMO2BR4.js.map +1 -0
  129. package/dist/chunk-HVHQA34X.js +534 -0
  130. package/dist/chunk-HVHQA34X.js.map +1 -0
  131. package/dist/{chunk-6G3BMY4N.js → chunk-I5AD247M.js} +80 -85
  132. package/dist/chunk-I5AD247M.js.map +1 -0
  133. package/dist/chunk-I7HJBHQU.js +99 -0
  134. package/dist/chunk-I7HJBHQU.js.map +1 -0
  135. package/dist/{chunk-3PWILVOE.js → chunk-J2WIZULN.js} +50 -50
  136. package/dist/chunk-J2WIZULN.js.map +1 -0
  137. package/dist/{chunk-VOODO2ZE.js → chunk-JFTSWOGE.js} +12 -32
  138. package/dist/chunk-JFTSWOGE.js.map +1 -0
  139. package/dist/{chunk-LOYLJRCF.js → chunk-JIXINKUJ.js} +8 -17
  140. package/dist/chunk-JIXINKUJ.js.map +1 -0
  141. package/dist/{chunk-6HGUDHHE.js → chunk-L5BU2QTI.js} +3 -5
  142. package/dist/chunk-L5BU2QTI.js.map +1 -0
  143. package/dist/chunk-LJOQ2C5W.js +81 -0
  144. package/dist/chunk-LJOQ2C5W.js.map +1 -0
  145. package/dist/chunk-LWYZCSX4.js +531 -0
  146. package/dist/chunk-LWYZCSX4.js.map +1 -0
  147. package/dist/{chunk-3BIV3QE2.js → chunk-LXHFGQOI.js} +61 -29
  148. package/dist/chunk-LXHFGQOI.js.map +1 -0
  149. package/dist/{chunk-ZIYA7TGX.js → chunk-NMP4HY6M.js} +13 -23
  150. package/dist/chunk-NMP4HY6M.js.map +1 -0
  151. package/dist/{chunk-2TLOWZE4.js → chunk-NTCAZ2LF.js} +64 -183
  152. package/dist/chunk-NTCAZ2LF.js.map +1 -0
  153. package/dist/chunk-NZHKNUGE.js +96 -0
  154. package/dist/chunk-NZHKNUGE.js.map +1 -0
  155. package/dist/{chunk-764UKE6X.js → chunk-OGB5QPNZ.js} +11 -92
  156. package/dist/chunk-OGB5QPNZ.js.map +1 -0
  157. package/dist/chunk-OJAHIPPP.js +198 -0
  158. package/dist/chunk-OJAHIPPP.js.map +1 -0
  159. package/dist/{chunk-2PNLIQYM.js → chunk-ON76IMMI.js} +3 -3
  160. package/dist/chunk-ON76IMMI.js.map +1 -0
  161. package/dist/{chunk-HUXODBIO.js → chunk-PB5VGXS5.js} +42 -101
  162. package/dist/chunk-PB5VGXS5.js.map +1 -0
  163. package/dist/chunk-PQOIW5CM.js +27 -0
  164. package/dist/chunk-PQOIW5CM.js.map +1 -0
  165. package/dist/{chunk-BVO2BNFG.js → chunk-PRDJLQLB.js} +23 -103
  166. package/dist/chunk-PRDJLQLB.js.map +1 -0
  167. package/dist/{chunk-N2WHJ3FI.js → chunk-QEAALOJC.js} +14 -16
  168. package/dist/chunk-QEAALOJC.js.map +1 -0
  169. package/dist/{chunk-NGYLRX6F.js → chunk-RAS6HUEI.js} +2 -2
  170. package/dist/chunk-RAS6HUEI.js.map +1 -0
  171. package/dist/{chunk-C5IGZLIT.js → chunk-ROQGBDET.js} +9 -23
  172. package/dist/chunk-ROQGBDET.js.map +1 -0
  173. package/dist/{chunk-Y4XAXZHB.js → chunk-RRPMZYVN.js} +9 -8
  174. package/dist/chunk-RRPMZYVN.js.map +1 -0
  175. package/dist/{chunk-D4SUSZDN.js → chunk-S6HO7HUY.js} +19 -17
  176. package/dist/chunk-S6HO7HUY.js.map +1 -0
  177. package/dist/{chunk-YS5AIY4A.js → chunk-SFP77VS3.js} +6 -5
  178. package/dist/chunk-SFP77VS3.js.map +1 -0
  179. package/dist/{chunk-RFHTC6AH.js → chunk-SJLH5ZDW.js} +16 -38
  180. package/dist/chunk-SJLH5ZDW.js.map +1 -0
  181. package/dist/{chunk-SGRACNBP.js → chunk-STAYOHDI.js} +13 -5
  182. package/dist/chunk-STAYOHDI.js.map +1 -0
  183. package/dist/{chunk-ON2CMF6J.js → chunk-TBKPQOXF.js} +58 -35
  184. package/dist/chunk-TBKPQOXF.js.map +1 -0
  185. package/dist/{chunk-GOLARX5K.js → chunk-TDNPACQD.js} +14 -11
  186. package/dist/chunk-TDNPACQD.js.map +1 -0
  187. package/dist/{chunk-7UCNBMCV.js → chunk-TQEMGWZ2.js} +27 -34
  188. package/dist/chunk-TQEMGWZ2.js.map +1 -0
  189. package/dist/{chunk-X3YNHX77.js → chunk-U4JPTWK6.js} +33 -34
  190. package/dist/chunk-U4JPTWK6.js.map +1 -0
  191. package/dist/{chunk-R3TLU26W.js → chunk-UFC3RGIN.js} +9 -7
  192. package/dist/chunk-UFC3RGIN.js.map +1 -0
  193. package/dist/{chunk-KH577UDI.js → chunk-W5VLFE4U.js} +11 -8
  194. package/dist/chunk-W5VLFE4U.js.map +1 -0
  195. package/dist/{chunk-G6NVGBYZ.js → chunk-WG5AYAC6.js} +27 -35
  196. package/dist/chunk-WG5AYAC6.js.map +1 -0
  197. package/dist/{chunk-YJOLLSHH.js → chunk-WQT24BGG.js} +44 -49
  198. package/dist/chunk-WQT24BGG.js.map +1 -0
  199. package/dist/{chunk-JWTWPZ32.js → chunk-X7MF3TIF.js} +15 -19
  200. package/dist/chunk-X7MF3TIF.js.map +1 -0
  201. package/dist/chunk-XAM5EKOS.js +150 -0
  202. package/dist/chunk-XAM5EKOS.js.map +1 -0
  203. package/dist/{chunk-EHWXPH76.js → chunk-XBXPY7U3.js} +9 -7
  204. package/dist/chunk-XBXPY7U3.js.map +1 -0
  205. package/dist/{chunk-5PUATOLR.js → chunk-XCK62GVU.js} +4 -4
  206. package/dist/chunk-XCK62GVU.js.map +1 -0
  207. package/dist/{chunk-ONGJXAYQ.js → chunk-XMBZBXXS.js} +9 -16
  208. package/dist/chunk-XMBZBXXS.js.map +1 -0
  209. package/dist/{chunk-H6G4BUPA.js → chunk-XOEEAMMY.js} +210 -183
  210. package/dist/chunk-XOEEAMMY.js.map +1 -0
  211. package/dist/{chunk-O3V3BTIJ.js → chunk-Z3DIBMBQ.js} +60 -107
  212. package/dist/chunk-Z3DIBMBQ.js.map +1 -0
  213. package/dist/clipboard/index.d.ts.map +1 -1
  214. package/dist/clipboard/index.js +4 -4
  215. package/dist/clipboard/types.d.ts +2 -35
  216. package/dist/clipboard/types.d.ts.map +1 -1
  217. package/dist/collapse/index.d.ts.map +1 -1
  218. package/dist/collapse/index.js +4 -3
  219. package/dist/collapse/types.d.ts +2 -35
  220. package/dist/collapse/types.d.ts.map +1 -1
  221. package/dist/color-picker/index.d.ts +8 -0
  222. package/dist/color-picker/index.d.ts.map +1 -0
  223. package/dist/color-picker/types.d.ts +42 -0
  224. package/dist/color-picker/types.d.ts.map +1 -0
  225. package/dist/command/index.d.ts +39 -66
  226. package/dist/command/index.d.ts.map +1 -1
  227. package/dist/command/index.js +4 -3
  228. package/dist/command/types.d.ts +2 -2
  229. package/dist/command/types.d.ts.map +1 -1
  230. package/dist/context-menu/index.d.ts +2 -46
  231. package/dist/context-menu/index.d.ts.map +1 -1
  232. package/dist/context-menu/index.js +5 -3
  233. package/dist/context-menu/types.d.ts +21 -63
  234. package/dist/context-menu/types.d.ts.map +1 -1
  235. package/dist/date-picker/CalendarHeader.d.ts +18 -0
  236. package/dist/date-picker/CalendarHeader.d.ts.map +1 -0
  237. package/dist/date-picker/MonthSelector.d.ts +11 -0
  238. package/dist/date-picker/MonthSelector.d.ts.map +1 -0
  239. package/dist/date-picker/PickerWrapper.d.ts +18 -0
  240. package/dist/date-picker/PickerWrapper.d.ts.map +1 -0
  241. package/dist/date-picker/RangePicker.d.ts +4 -0
  242. package/dist/date-picker/RangePicker.d.ts.map +1 -0
  243. package/dist/date-picker/TimePicker.d.ts +4 -0
  244. package/dist/date-picker/TimePicker.d.ts.map +1 -0
  245. package/dist/date-picker/YearSelector.d.ts +10 -0
  246. package/dist/date-picker/YearSelector.d.ts.map +1 -0
  247. package/dist/date-picker/index.d.ts +6 -6
  248. package/dist/date-picker/index.d.ts.map +1 -1
  249. package/dist/date-picker/index.js +4 -4
  250. package/dist/date-picker/shared.d.ts +3 -0
  251. package/dist/date-picker/shared.d.ts.map +1 -0
  252. package/dist/date-picker/types.d.ts +2 -2
  253. package/dist/date-picker/types.d.ts.map +1 -1
  254. package/dist/date-picker/utils.d.ts +1 -1
  255. package/dist/date-picker/utils.d.ts.map +1 -1
  256. package/dist/descriptions/index.d.ts.map +1 -1
  257. package/dist/descriptions/index.js +3 -2
  258. package/dist/divider/index.d.ts.map +1 -1
  259. package/dist/divider/index.js +3 -2
  260. package/dist/divider/types.d.ts +0 -12
  261. package/dist/divider/types.d.ts.map +1 -1
  262. package/dist/drawer/index.d.ts +4 -1
  263. package/dist/drawer/index.d.ts.map +1 -1
  264. package/dist/drawer/index.js +2 -2
  265. package/dist/drawer/types.d.ts +2 -145
  266. package/dist/drawer/types.d.ts.map +1 -1
  267. package/dist/dropdown/index.d.ts.map +1 -1
  268. package/dist/dropdown/index.js +6 -5
  269. package/dist/dropdown/types.d.ts +2 -71
  270. package/dist/dropdown/types.d.ts.map +1 -1
  271. package/dist/fetching-overlay/index.d.ts.map +1 -1
  272. package/dist/fetching-overlay/index.js +4 -4
  273. package/dist/float-button/index.d.ts +9 -0
  274. package/dist/float-button/index.d.ts.map +1 -0
  275. package/dist/float-button/types.d.ts +45 -0
  276. package/dist/float-button/types.d.ts.map +1 -0
  277. package/dist/float-input/index.d.ts.map +1 -1
  278. package/dist/float-input/index.js +4 -4
  279. package/dist/float-input/types.d.ts +5 -10
  280. package/dist/float-input/types.d.ts.map +1 -1
  281. package/dist/grid/index.d.ts +1 -1
  282. package/dist/grid/index.d.ts.map +1 -1
  283. package/dist/grid/index.js +2 -2
  284. package/dist/grid/types.d.ts +1 -9
  285. package/dist/grid/types.d.ts.map +1 -1
  286. package/dist/hooks/index.d.ts +1 -0
  287. package/dist/hooks/index.d.ts.map +1 -1
  288. package/dist/hooks/useMenuNavigation.d.ts +18 -0
  289. package/dist/hooks/useMenuNavigation.d.ts.map +1 -0
  290. package/dist/image/index.d.ts.map +1 -1
  291. package/dist/image/index.js +2 -2
  292. package/dist/image/types.d.ts +2 -34
  293. package/dist/image/types.d.ts.map +1 -1
  294. package/dist/index.d.ts +30 -3
  295. package/dist/index.d.ts.map +1 -1
  296. package/dist/index.js +3030 -90
  297. package/dist/index.js.map +1 -1
  298. package/dist/input/index.d.ts.map +1 -1
  299. package/dist/input/index.js +4 -4
  300. package/dist/input/types.d.ts +9 -4
  301. package/dist/input/types.d.ts.map +1 -1
  302. package/dist/input-group/index.d.ts.map +1 -1
  303. package/dist/input-group/index.js +2 -2
  304. package/dist/input-group/types.d.ts +7 -19
  305. package/dist/input-group/types.d.ts.map +1 -1
  306. package/dist/input-otp/index.d.ts.map +1 -1
  307. package/dist/input-otp/index.js +2 -2
  308. package/dist/input-otp/types.d.ts +3 -81
  309. package/dist/input-otp/types.d.ts.map +1 -1
  310. package/dist/input-password/index.d.ts.map +1 -1
  311. package/dist/input-password/index.js +5 -5
  312. package/dist/input-password/types.d.ts +0 -6
  313. package/dist/input-password/types.d.ts.map +1 -1
  314. package/dist/kbd/index.d.ts.map +1 -1
  315. package/dist/kbd/index.js +3 -3
  316. package/dist/kbd/types.d.ts +2 -17
  317. package/dist/kbd/types.d.ts.map +1 -1
  318. package/dist/link/index.d.ts +1 -1
  319. package/dist/link/index.d.ts.map +1 -1
  320. package/dist/link/index.js +3 -2
  321. package/dist/mentions/index.d.ts +6 -0
  322. package/dist/mentions/index.d.ts.map +1 -0
  323. package/dist/mentions/types.d.ts +36 -0
  324. package/dist/mentions/types.d.ts.map +1 -0
  325. package/dist/menubar/index.d.ts.map +1 -1
  326. package/dist/menubar/index.js +5 -4
  327. package/dist/modal/index.d.ts +1 -1
  328. package/dist/modal/index.d.ts.map +1 -1
  329. package/dist/modal/index.js +2 -2
  330. package/dist/modal/types.d.ts +7 -41
  331. package/dist/modal/types.d.ts.map +1 -1
  332. package/dist/multi-select/index.d.ts.map +1 -1
  333. package/dist/multi-select/index.js +8 -6
  334. package/dist/multi-select/types.d.ts +2 -34
  335. package/dist/multi-select/types.d.ts.map +1 -1
  336. package/dist/navigation-menu/index.d.ts.map +1 -1
  337. package/dist/navigation-menu/index.js +2 -2
  338. package/dist/navigation-menu/types.d.ts +2 -0
  339. package/dist/navigation-menu/types.d.ts.map +1 -1
  340. package/dist/notification/index.d.ts.map +1 -1
  341. package/dist/notification/index.js +3 -3
  342. package/dist/notification/types.d.ts +2 -62
  343. package/dist/notification/types.d.ts.map +1 -1
  344. package/dist/number-input/index.d.ts.map +1 -1
  345. package/dist/number-input/index.js +6 -5
  346. package/dist/number-input/types.d.ts +5 -2
  347. package/dist/number-input/types.d.ts.map +1 -1
  348. package/dist/pagination/index.d.ts.map +1 -1
  349. package/dist/pagination/index.js +4 -3
  350. package/dist/pagination/types.d.ts +3 -53
  351. package/dist/pagination/types.d.ts.map +1 -1
  352. package/dist/popover/index.d.ts +1 -1
  353. package/dist/popover/index.d.ts.map +1 -1
  354. package/dist/popover/index.js +3 -3
  355. package/dist/popover/types.d.ts +3 -17
  356. package/dist/popover/types.d.ts.map +1 -1
  357. package/dist/progress/index.d.ts.map +1 -1
  358. package/dist/progress/index.js +3 -2
  359. package/dist/progress/styles.d.ts +4 -5
  360. package/dist/progress/styles.d.ts.map +1 -1
  361. package/dist/progress/types.d.ts +2 -44
  362. package/dist/progress/types.d.ts.map +1 -1
  363. package/dist/qr-code/index.d.ts +6 -0
  364. package/dist/qr-code/index.d.ts.map +1 -0
  365. package/dist/qr-code/types.d.ts +49 -0
  366. package/dist/qr-code/types.d.ts.map +1 -0
  367. package/dist/radio/index.d.ts.map +1 -1
  368. package/dist/radio/index.js +3 -3
  369. package/dist/radio/types.d.ts +2 -2
  370. package/dist/radio/types.d.ts.map +1 -1
  371. package/dist/radio-group/index.d.ts.map +1 -1
  372. package/dist/radio-group/index.js +2 -2
  373. package/dist/radio-group/types.d.ts +0 -24
  374. package/dist/radio-group/types.d.ts.map +1 -1
  375. package/dist/rating/index.d.ts.map +1 -1
  376. package/dist/rating/index.js +3 -2
  377. package/dist/rating/types.d.ts +2 -2
  378. package/dist/rating/types.d.ts.map +1 -1
  379. package/dist/resizable/index.d.ts +7 -0
  380. package/dist/resizable/index.d.ts.map +1 -0
  381. package/dist/resizable/types.d.ts +8 -0
  382. package/dist/resizable/types.d.ts.map +1 -0
  383. package/dist/result/index.d.ts +6 -0
  384. package/dist/result/index.d.ts.map +1 -0
  385. package/dist/result/types.d.ts +22 -0
  386. package/dist/result/types.d.ts.map +1 -0
  387. package/dist/scroll-area/index.d.ts.map +1 -1
  388. package/dist/scroll-area/index.js +2 -2
  389. package/dist/select/index.d.ts.map +1 -1
  390. package/dist/select/index.js +8 -6
  391. package/dist/select/types.d.ts +8 -3
  392. package/dist/select/types.d.ts.map +1 -1
  393. package/dist/shared/useSelectBase.d.ts +4 -2
  394. package/dist/shared/useSelectBase.d.ts.map +1 -1
  395. package/dist/skeleton/index.d.ts.map +1 -1
  396. package/dist/skeleton/index.js +3 -3
  397. package/dist/skeleton/types.d.ts +1 -1
  398. package/dist/skeleton/types.d.ts.map +1 -1
  399. package/dist/slider/index.d.ts.map +1 -1
  400. package/dist/slider/index.js +3 -2
  401. package/dist/slider/types.d.ts +2 -36
  402. package/dist/slider/types.d.ts.map +1 -1
  403. package/dist/spinner/index.d.ts +2 -1
  404. package/dist/spinner/index.d.ts.map +1 -1
  405. package/dist/spinner/index.js +3 -3
  406. package/dist/spinner/types.d.ts +1 -1
  407. package/dist/spinner/types.d.ts.map +1 -1
  408. package/dist/stepper/index.d.ts +3 -3
  409. package/dist/stepper/index.d.ts.map +1 -1
  410. package/dist/stepper/index.js +3 -2
  411. package/dist/stepper/types.d.ts +3 -2
  412. package/dist/stepper/types.d.ts.map +1 -1
  413. package/dist/switch/index.d.ts.map +1 -1
  414. package/dist/switch/index.js +3 -3
  415. package/dist/switch/types.d.ts +2 -31
  416. package/dist/switch/types.d.ts.map +1 -1
  417. package/dist/table/TableHeaderCell.d.ts.map +1 -1
  418. package/dist/table/index.d.ts +1 -1
  419. package/dist/table/index.d.ts.map +1 -1
  420. package/dist/table/index.js +11 -11
  421. package/dist/table/types.d.ts +8 -2
  422. package/dist/table/types.d.ts.map +1 -1
  423. package/dist/tabs/index.d.ts.map +1 -1
  424. package/dist/tabs/index.js +3 -3
  425. package/dist/tabs/types.d.ts +3 -53
  426. package/dist/tabs/types.d.ts.map +1 -1
  427. package/dist/tag/index.d.ts +1 -1
  428. package/dist/tag/index.d.ts.map +1 -1
  429. package/dist/tag/index.js +3 -3
  430. package/dist/tag/types.d.ts +1 -1
  431. package/dist/tag/types.d.ts.map +1 -1
  432. package/dist/tags-input/index.d.ts +6 -0
  433. package/dist/tags-input/index.d.ts.map +1 -0
  434. package/dist/tags-input/types.d.ts +36 -0
  435. package/dist/tags-input/types.d.ts.map +1 -0
  436. package/dist/textarea/index.d.ts.map +1 -1
  437. package/dist/textarea/index.js +2 -2
  438. package/dist/textarea/types.d.ts +3 -54
  439. package/dist/textarea/types.d.ts.map +1 -1
  440. package/dist/theme/ThemeProvider.d.ts +11 -3
  441. package/dist/theme/ThemeProvider.d.ts.map +1 -1
  442. package/dist/theme/index.js +1 -1
  443. package/dist/theme/types.d.ts +0 -12
  444. package/dist/theme/types.d.ts.map +1 -1
  445. package/dist/timeline/index.d.ts.map +1 -1
  446. package/dist/timeline/index.js +3 -2
  447. package/dist/toast/index.d.ts.map +1 -1
  448. package/dist/toast/index.js +3 -3
  449. package/dist/toast/types.d.ts +0 -6
  450. package/dist/toast/types.d.ts.map +1 -1
  451. package/dist/toggle/index.d.ts.map +1 -1
  452. package/dist/toggle/index.js +4 -3
  453. package/dist/toggle/types.d.ts +3 -26
  454. package/dist/toggle/types.d.ts.map +1 -1
  455. package/dist/toggle-group/index.d.ts.map +1 -1
  456. package/dist/toggle-group/index.js +4 -3
  457. package/dist/toggle-group/types.d.ts +3 -44
  458. package/dist/toggle-group/types.d.ts.map +1 -1
  459. package/dist/tooltip/index.d.ts.map +1 -1
  460. package/dist/tooltip/index.js +3 -3
  461. package/dist/tooltip/types.d.ts +2 -44
  462. package/dist/tooltip/types.d.ts.map +1 -1
  463. package/dist/tour/index.d.ts +6 -0
  464. package/dist/tour/index.d.ts.map +1 -0
  465. package/dist/tour/types.d.ts +45 -0
  466. package/dist/tour/types.d.ts.map +1 -0
  467. package/dist/transfer/index.d.ts.map +1 -1
  468. package/dist/transfer/index.js +4 -4
  469. package/dist/transfer/types.d.ts +0 -20
  470. package/dist/transfer/types.d.ts.map +1 -1
  471. package/dist/transfer/utils.d.ts.map +1 -1
  472. package/dist/tree/index.d.ts.map +1 -1
  473. package/dist/tree/index.js +2 -2
  474. package/dist/tree/types.d.ts +2 -73
  475. package/dist/tree/types.d.ts.map +1 -1
  476. package/dist/tree-select/index.d.ts.map +1 -1
  477. package/dist/tree-select/index.js +5 -5
  478. package/dist/tree-select/types.d.ts +3 -91
  479. package/dist/tree-select/types.d.ts.map +1 -1
  480. package/dist/types.d.ts +1 -35
  481. package/dist/types.d.ts.map +1 -1
  482. package/dist/typography/index.d.ts +8 -0
  483. package/dist/typography/index.d.ts.map +1 -0
  484. package/dist/typography/types.d.ts +33 -0
  485. package/dist/typography/types.d.ts.map +1 -0
  486. package/dist/upload/index.d.ts.map +1 -1
  487. package/dist/upload/index.js +4 -3
  488. package/dist/upload/types.d.ts +5 -32
  489. package/dist/upload/types.d.ts.map +1 -1
  490. package/dist/upload/utils.d.ts +2 -1
  491. package/dist/upload/utils.d.ts.map +1 -1
  492. package/dist/utils.d.ts +0 -39
  493. package/dist/utils.d.ts.map +1 -1
  494. package/dist/variants.d.ts +3 -314
  495. package/dist/variants.d.ts.map +1 -1
  496. package/dist/watermark/index.d.ts +6 -0
  497. package/dist/watermark/index.d.ts.map +1 -0
  498. package/dist/watermark/types.d.ts +24 -0
  499. package/dist/watermark/types.d.ts.map +1 -0
  500. package/package.json +5 -2
  501. package/styles/global.css +575 -2012
  502. package/styles/themes/dark.css +15 -5
  503. package/styles/themes/light.css +20 -2
  504. package/styles/themes/presets/corporate.css +2 -0
  505. package/styles/themes/presets/minimal.css +2 -0
  506. package/styles/themes/presets/vibrant.css +2 -0
  507. package/dist/chunk-2PNLIQYM.js.map +0 -1
  508. package/dist/chunk-2TLOWZE4.js.map +0 -1
  509. package/dist/chunk-2WZVD7P3.js +0 -145
  510. package/dist/chunk-2WZVD7P3.js.map +0 -1
  511. package/dist/chunk-3BIV3QE2.js.map +0 -1
  512. package/dist/chunk-3BZE6BBJ.js.map +0 -1
  513. package/dist/chunk-3PWILVOE.js.map +0 -1
  514. package/dist/chunk-4FFVNUTK.js.map +0 -1
  515. package/dist/chunk-5PUATOLR.js.map +0 -1
  516. package/dist/chunk-64NHVOZS.js.map +0 -1
  517. package/dist/chunk-674JC24S.js.map +0 -1
  518. package/dist/chunk-6BAP6QUT.js +0 -72
  519. package/dist/chunk-6BAP6QUT.js.map +0 -1
  520. package/dist/chunk-6G3BMY4N.js.map +0 -1
  521. package/dist/chunk-6HGUDHHE.js.map +0 -1
  522. package/dist/chunk-6JGNJI5T.js.map +0 -1
  523. package/dist/chunk-6LYRMQOI.js.map +0 -1
  524. package/dist/chunk-6YOOKE6C.js +0 -138
  525. package/dist/chunk-6YOOKE6C.js.map +0 -1
  526. package/dist/chunk-764UKE6X.js.map +0 -1
  527. package/dist/chunk-7UCNBMCV.js.map +0 -1
  528. package/dist/chunk-BPRCBPVJ.js +0 -253
  529. package/dist/chunk-BPRCBPVJ.js.map +0 -1
  530. package/dist/chunk-BVO2BNFG.js.map +0 -1
  531. package/dist/chunk-C5IGZLIT.js.map +0 -1
  532. package/dist/chunk-CN74CNAN.js.map +0 -1
  533. package/dist/chunk-D4SUSZDN.js.map +0 -1
  534. package/dist/chunk-DUIL5BYS.js.map +0 -1
  535. package/dist/chunk-EHWXPH76.js.map +0 -1
  536. package/dist/chunk-ERRZ2CSG.js +0 -192
  537. package/dist/chunk-ERRZ2CSG.js.map +0 -1
  538. package/dist/chunk-EZGK67T6.js +0 -383
  539. package/dist/chunk-EZGK67T6.js.map +0 -1
  540. package/dist/chunk-FZSCLZF6.js.map +0 -1
  541. package/dist/chunk-G6NVGBYZ.js.map +0 -1
  542. package/dist/chunk-GJPZOMFE.js.map +0 -1
  543. package/dist/chunk-GOLARX5K.js.map +0 -1
  544. package/dist/chunk-GVVP5TZM.js +0 -506
  545. package/dist/chunk-GVVP5TZM.js.map +0 -1
  546. package/dist/chunk-H6G4BUPA.js.map +0 -1
  547. package/dist/chunk-HCOTO5WX.js.map +0 -1
  548. package/dist/chunk-HECAAILV.js.map +0 -1
  549. package/dist/chunk-HUXODBIO.js.map +0 -1
  550. package/dist/chunk-I32ZQUYY.js.map +0 -1
  551. package/dist/chunk-JWTWPZ32.js.map +0 -1
  552. package/dist/chunk-KH577UDI.js.map +0 -1
  553. package/dist/chunk-KJTMZJ7V.js.map +0 -1
  554. package/dist/chunk-L5UYN5LX.js +0 -787
  555. package/dist/chunk-L5UYN5LX.js.map +0 -1
  556. package/dist/chunk-LOYLJRCF.js.map +0 -1
  557. package/dist/chunk-LX4FDH4J.js.map +0 -1
  558. package/dist/chunk-N2WHJ3FI.js.map +0 -1
  559. package/dist/chunk-NGYLRX6F.js.map +0 -1
  560. package/dist/chunk-O3V3BTIJ.js.map +0 -1
  561. package/dist/chunk-OLTQAMV2.js.map +0 -1
  562. package/dist/chunk-ON2CMF6J.js.map +0 -1
  563. package/dist/chunk-ONGJXAYQ.js.map +0 -1
  564. package/dist/chunk-OQFYIKWR.js +0 -1264
  565. package/dist/chunk-OQFYIKWR.js.map +0 -1
  566. package/dist/chunk-POLVJ36Y.js.map +0 -1
  567. package/dist/chunk-POXI7JJ4.js +0 -351
  568. package/dist/chunk-POXI7JJ4.js.map +0 -1
  569. package/dist/chunk-R3TLU26W.js.map +0 -1
  570. package/dist/chunk-RFHTC6AH.js.map +0 -1
  571. package/dist/chunk-ROA7BYGB.js.map +0 -1
  572. package/dist/chunk-SGRACNBP.js.map +0 -1
  573. package/dist/chunk-TLNHWOQQ.js.map +0 -1
  574. package/dist/chunk-UTWQ2FZK.js.map +0 -1
  575. package/dist/chunk-VOODO2ZE.js.map +0 -1
  576. package/dist/chunk-WRSG7WU5.js.map +0 -1
  577. package/dist/chunk-X3YNHX77.js.map +0 -1
  578. package/dist/chunk-Y4XAXZHB.js.map +0 -1
  579. package/dist/chunk-YJOLLSHH.js.map +0 -1
  580. package/dist/chunk-YS5AIY4A.js.map +0 -1
  581. package/dist/chunk-YXLIGJTN.js.map +0 -1
  582. package/dist/chunk-ZIYA7TGX.js.map +0 -1
  583. package/dist/chunk-ZJNGZCRB.js.map +0 -1
  584. package/dist/empty/index.d.ts +0 -6
  585. package/dist/empty/index.d.ts.map +0 -1
  586. package/dist/empty/index.js +0 -4
  587. package/dist/empty/types.d.ts +0 -62
  588. package/dist/empty/types.d.ts.map +0 -1
  589. package/dist/styles/tokens.d.ts +0 -428
  590. package/dist/styles/tokens.d.ts.map +0 -1
  591. /package/dist/{empty → alert}/index.js.map +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/radio-group/index.tsx"],"names":[],"mappings":";;;;AAOO,IAAM,aAAa,KAAA,CAAM,IAAA;AAAA,EAC9B,CAAC;AAAA,IACC,KAAA;AAAA,IACA,UAAA;AAAA,IACA,KAAA;AAAA,IACA,WAAA,GAAc,UAAA;AAAA,IACd,SAAA;AAAA,IACA,UAAA;AAAA,IACA,QAAA;AAAA,IACA,GAAA;AAAA,IACA,GAAG;AAAA,GACL,KAAM;AACJ,IAAA,MAAM,KAAK,KAAA,EAAM;AACjB,IAAA,MAAM,OAAA,GAAU,oBAAoB,EAAE,CAAA,CAAA;AACtC,IAAA,MAAM,QAAA,GAAW,qBAAqB,EAAE,CAAA,CAAA;AACxC,IAAA,MAAM,aAAA,GAAgB,CAAC,EAAE,UAAA,IAAc,KAAA,CAAA;AAEvC,IAAA,uBACE,IAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,WAAA,EAAU,MAAA;AAAA,QACV,GAAA;AAAA,QACA,WAAW,EAAA,CAAG,iBAAA,EAAmB,QAAA,EAAU,SAAA,EAAW,YAAY,IAAI,CAAA;AAAA,QACtE,IAAA,EAAK,YAAA;AAAA,QACL,iBAAA,EAAiB,QAAQ,OAAA,GAAU,MAAA;AAAA,QACnC,kBAAA,EAAkB,gBAAgB,QAAA,GAAW,MAAA;AAAA,QAC5C,GAAG,KAAA;AAAA,QAEH,QAAA,EAAA;AAAA,UAAA,KAAA,wBACE,KAAA,EAAA,EAAI,SAAA,EAAU,MAAA,EACb,QAAA,kBAAA,GAAA,CAAC,UAAK,EAAA,EAAI,OAAA,EAAS,SAAA,EAAW,EAAA,CAAG,oBAAoB,yCAAA,EAA2C,UAAA,EAAY,KAAK,CAAA,EAC9G,iBACH,CAAA,EACF,CAAA;AAAA,0BAEF,GAAA;AAAA,YAAC,KAAA;AAAA,YAAA;AAAA,cACC,SAAA,EAAW,EAAA;AAAA,gBACT,kBAAA;AAAA,gBACA,MAAA;AAAA,gBACA,WAAA,KAAgB,aACZ,gBAAA,GACA,0BAAA;AAAA,gBACJ,UAAA,EAAY;AAAA,eACd;AAAA,cAEC;AAAA;AAAA,WACH;AAAA,UAAA,CACE,cAAc,KAAA,qBACd,GAAA;AAAA,YAAC,GAAA;AAAA,YAAA;AAAA,cACC,EAAA,EAAI,QAAA;AAAA,cACJ,SAAA,EAAW,EAAA;AAAA,gBACT,QAAQ,kBAAA,GAAqB,mBAAA;AAAA,gBAC7B,cAAA;AAAA,gBACA,QAAQ,YAAA,GAAe,qBAAA;AAAA,gBACvB,KAAA,GAAQ,UAAA,EAAY,KAAA,GAAQ,UAAA,EAAY;AAAA,eAC1C;AAAA,cAEC,QAAA,EAAA,KAAA,IAAS;AAAA;AAAA;AACZ;AAAA;AAAA,KAEJ;AAAA,EAEJ;AACF;AAEA,UAAA,CAAW,WAAA,GAAc,YAAA;AAGzB,IAAO,mBAAA,GAAQ","file":"chunk-STAYOHDI.js","sourcesContent":["'use client'\n\nimport React, { useId } from 'react'\n\nimport { cn } from '../utils'\nimport type { RadioGroupProps } from './types'\n\nexport const RadioGroup = React.memo<RadioGroupProps>(\n ({\n label,\n helperText,\n error,\n orientation = 'vertical',\n className,\n classNames,\n children,\n ref,\n ...props\n }) => {\n const id = useId()\n const labelId = `radiogroup-label-${id}`\n const helperId = `radiogroup-helper-${id}`\n const hasHelperText = !!(helperText || error)\n\n return (\n <div\n data-slot=\"root\"\n ref={ref}\n className={cn('radioGroup_root', 'w-full', className, classNames?.root)}\n role=\"radiogroup\"\n aria-labelledby={label ? labelId : undefined}\n aria-describedby={hasHelperText ? helperId : undefined}\n {...props}\n >\n {label && (\n <div className=\"mb-2\">\n <span id={labelId} className={cn('radioGroup_label', 'text-sm font-medium text-text-secondary', classNames?.label)}>\n {label}\n </span>\n </div>\n )}\n <div\n className={cn(\n 'radioGroup_group',\n 'flex',\n orientation === 'vertical'\n ? 'flex-col gap-2'\n : 'flex-row flex-wrap gap-4',\n classNames?.group,\n )}\n >\n {children}\n </div>\n {(helperText || error) && (\n <p\n id={helperId}\n className={cn(\n error ? 'radioGroup_error' : 'radioGroup_helper',\n 'mt-2 text-xs',\n error ? 'text-error' : 'text-text-secondary',\n error ? classNames?.error : classNames?.helper,\n )}\n >\n {error || helperText}\n </p>\n )}\n </div>\n )\n },\n)\n\nRadioGroup.displayName = 'RadioGroup'\n\nexport type * from './types'\nexport default RadioGroup\n"]}
@@ -1,13 +1,14 @@
1
- import { tree_default } from './chunk-3BIV3QE2.js';
2
- import { Popover, PopoverTrigger, PopoverContent } from './chunk-C5IGZLIT.js';
3
- import { getValidationStatus, cn, iconSizes, statusMessageVariants } from './chunk-NGYLRX6F.js';
1
+ import { tree_default } from './chunk-LXHFGQOI.js';
2
+ import { Popover, PopoverTrigger, PopoverContent } from './chunk-ROQGBDET.js';
3
+ import { colorVars } from './chunk-G6QIIWKU.js';
4
+ import { getValidationStatus, cn, iconSizes, statusMessageVariants } from './chunk-RAS6HUEI.js';
4
5
  import { cva } from 'class-variance-authority';
5
- import { X, Loader2, Search, ChevronDown } from 'lucide-react';
6
6
  import React from 'react';
7
- import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
7
+ import { X, Loader2, ChevronDown } from 'lucide-react';
8
+ import { jsx, jsxs } from 'react/jsx-runtime';
8
9
 
9
10
  var treeSelectTriggerVariants = cva(
10
- "w-full flex items-center justify-between rounded-md bg-background text-text-primary border focus:border-primary outline-none disabled:opacity-50 disabled:cursor-not-allowed cursor-pointer transition-colors",
11
+ "w-full flex items-center justify-between rounded-md bg-background text-text-primary border outline-none cursor-pointer transition-colors focus-visible:ring-2 focus-visible:ring-primary focus-visible:ring-offset-2 focus-visible:ring-offset-background aria-disabled:opacity-50 aria-disabled:cursor-not-allowed",
11
12
  {
12
13
  variants: {
13
14
  status: {
@@ -18,10 +19,10 @@ var treeSelectTriggerVariants = cva(
18
19
  success: "border-success"
19
20
  },
20
21
  size: {
21
- xs: "h-(--select-height-xs) px-(--select-padding-x-xs) text-xs gap-1.5",
22
- sm: "h-(--input-height-sm) px-1 text-sm gap-2",
23
- md: "h-(--input-height-md) px-2 text-base gap-2",
24
- lg: "h-(--input-height-lg) px-3 text-lg gap-3"
22
+ xs: "min-h-(--select-height-xs) px-(--select-padding-x-xs) py-1 text-xs gap-1.5",
23
+ sm: "min-h-(--input-height-sm) px-1 py-1 text-sm gap-2",
24
+ md: "min-h-(--input-height-md) px-2 py-1 text-base gap-2",
25
+ lg: "min-h-(--input-height-lg) px-3 py-1.5 text-lg gap-3"
25
26
  },
26
27
  fullWidth: {
27
28
  true: "w-full",
@@ -56,6 +57,7 @@ var TreeSelect = React.memo(
56
57
  multiple = false,
57
58
  checkable = false,
58
59
  searchable = true,
60
+ clearable = true,
59
61
  maxChipsVisible = 3,
60
62
  maxDropdownHeight = 300,
61
63
  defaultExpandAll = false,
@@ -67,6 +69,8 @@ var TreeSelect = React.memo(
67
69
  ref,
68
70
  ...props
69
71
  }) => {
72
+ const uniqueId = React.useId();
73
+ const labelId = `tree-select-label-${uniqueId}`;
70
74
  const [isOpen, setIsOpen] = React.useState(false);
71
75
  const [internalValue, setInternalValue] = React.useState(
72
76
  defaultValue || (multiple ? [] : "")
@@ -306,9 +310,11 @@ var TreeSelect = React.memo(
306
310
  const treeSelectElement = /* @__PURE__ */ jsx(
307
311
  "div",
308
312
  {
313
+ "data-slot": "root",
309
314
  className: cn(
310
315
  "treeSelect_root",
311
316
  "relative group",
317
+ colorVars.primary,
312
318
  fullWidth ? "w-full" : "inline-block",
313
319
  classNames?.root
314
320
  ),
@@ -318,13 +324,17 @@ var TreeSelect = React.memo(
318
324
  Popover,
319
325
  {
320
326
  open: isOpen,
321
- onOpenChange: setIsOpen,
327
+ onOpenChange: (open) => {
328
+ setIsOpen(open);
329
+ if (!open) setSearchQuery("");
330
+ },
322
331
  children: [
323
332
  /* @__PURE__ */ jsx(PopoverTrigger, { asChild: true, children: /* @__PURE__ */ jsxs(
324
- "button",
333
+ "div",
325
334
  {
326
335
  ref: triggerRef,
327
- type: "button",
336
+ role: "combobox",
337
+ tabIndex: disabled || loading ? -1 : 0,
328
338
  className: cn(
329
339
  "treeSelect_trigger",
330
340
  treeSelectTriggerVariants({ status, size, fullWidth }),
@@ -332,16 +342,26 @@ var TreeSelect = React.memo(
332
342
  className,
333
343
  classNames?.trigger
334
344
  ),
335
- disabled: disabled || loading,
336
345
  "aria-haspopup": "tree",
337
346
  "aria-expanded": isOpen,
338
- "aria-labelledby": label ? "tree-select-label" : void 0,
347
+ "aria-disabled": disabled || loading,
348
+ "aria-labelledby": label ? labelId : void 0,
349
+ onClick: () => {
350
+ if (disabled || loading) return;
351
+ if (!isOpen) {
352
+ setIsOpen(true);
353
+ if (searchable) {
354
+ requestAnimationFrame(() => inputRef.current?.focus());
355
+ }
356
+ }
357
+ },
358
+ onKeyDown: handleKeyDown,
339
359
  children: [
340
- multiple && selectedNodes.length > 0 && /* @__PURE__ */ jsxs("div", { className: "flex gap-1 flex-shrink-0", children: [
360
+ multiple && selectedNodes.length > 0 && /* @__PURE__ */ jsxs("div", { className: "flex gap-1 flex-shrink-0 flex-wrap", children: [
341
361
  selectedNodes.slice(0, visibleChipsCount).map((node) => /* @__PURE__ */ jsxs(
342
362
  "span",
343
363
  {
344
- className: "inline-flex items-center gap-1 px-2 py-0.5 bg-primary/10 text-primary rounded text-sm whitespace-nowrap",
364
+ className: "inline-flex items-center gap-1 px-2 py-0.5 bg-slot-10 text-slot rounded text-sm whitespace-nowrap",
345
365
  children: [
346
366
  node.label,
347
367
  /* @__PURE__ */ jsx(
@@ -349,7 +369,7 @@ var TreeSelect = React.memo(
349
369
  {
350
370
  type: "button",
351
371
  onClick: (e) => handleRemoveItem(e, node.key),
352
- className: "hover:bg-primary/20 rounded-sm",
372
+ className: "hover:bg-slot-20 rounded-sm",
353
373
  disabled,
354
374
  children: /* @__PURE__ */ jsx(X, { className: "h-3 w-3" })
355
375
  }
@@ -363,7 +383,7 @@ var TreeSelect = React.memo(
363
383
  selectedNodes.length - visibleChipsCount
364
384
  ] })
365
385
  ] }),
366
- /* @__PURE__ */ jsx(
386
+ multiple && /* @__PURE__ */ jsx(
367
387
  "div",
368
388
  {
369
389
  className: "absolute opacity-0 pointer-events-none whitespace-nowrap",
@@ -372,7 +392,7 @@ var TreeSelect = React.memo(
372
392
  "span",
373
393
  {
374
394
  "data-hidden-chip": true,
375
- className: "inline-flex items-center gap-1 px-2 py-0.5 bg-primary/10 text-primary rounded text-sm whitespace-nowrap",
395
+ className: "inline-flex items-center gap-1 px-2 py-0.5 bg-slot-10 text-slot rounded text-sm whitespace-nowrap",
376
396
  children: [
377
397
  node.label,
378
398
  /* @__PURE__ */ jsx(X, { className: "h-3 w-3" })
@@ -382,34 +402,37 @@ var TreeSelect = React.memo(
382
402
  ))
383
403
  }
384
404
  ),
385
- /* @__PURE__ */ jsx(
405
+ searchable && isOpen ? /* @__PURE__ */ jsx(
386
406
  "input",
387
407
  {
388
408
  ref: inputRef,
389
409
  type: "text",
390
- className: "bg-transparent outline-none cursor-pointer placeholder:text-text-secondary/50 flex-1 min-w-0 pointer-events-none",
391
- placeholder: selectedNodes.length > 0 ? "" : placeholder,
410
+ className: "bg-transparent outline-none placeholder:text-text-secondary/50 flex-1 min-w-[60px] w-0",
411
+ placeholder: getDisplayValue || placeholder,
392
412
  value: searchQuery,
393
413
  onChange: handleInputChange,
394
414
  onFocus: handleInputFocus,
395
415
  onKeyDown: handleInputKeyDown,
396
416
  disabled: disabled || loading,
397
- readOnly: !isOpen || !searchable,
417
+ onClick: (e) => e.stopPropagation(),
398
418
  tabIndex: -1
399
419
  }
400
- ),
401
- /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-1 text-text-secondary", children: [
402
- getDisplayValue && !disabled && !loading && /* @__PURE__ */ jsx(
420
+ ) : /* @__PURE__ */ jsx("span", { className: cn("flex-1 truncate", !getDisplayValue && "text-text-secondary/50"), children: getDisplayValue || placeholder }),
421
+ /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-1 text-text-secondary shrink-0", children: [
422
+ clearable && getDisplayValue && !disabled && !loading && /* @__PURE__ */ jsx(
403
423
  "button",
404
424
  {
405
425
  type: "button",
406
- onClick: handleClear,
426
+ onClick: (e) => {
427
+ e.stopPropagation();
428
+ handleClear(e);
429
+ },
407
430
  className: "hover:text-text-primary transition-colors",
408
431
  tabIndex: -1,
409
432
  children: /* @__PURE__ */ jsx(X, { className: iconSizes[size] })
410
433
  }
411
434
  ),
412
- loading ? /* @__PURE__ */ jsx(Loader2, { className: cn("animate-spin", iconSizes[size]) }) : /* @__PURE__ */ jsx(Fragment, { children: isOpen && searchable ? /* @__PURE__ */ jsx(Search, { className: iconSizes[size] }) : /* @__PURE__ */ jsx(
435
+ loading ? /* @__PURE__ */ jsx(Loader2, { className: cn("animate-spin", iconSizes[size]) }) : /* @__PURE__ */ jsx(
413
436
  ChevronDown,
414
437
  {
415
438
  className: cn(
@@ -418,7 +441,7 @@ var TreeSelect = React.memo(
418
441
  isOpen && "rotate-180"
419
442
  )
420
443
  }
421
- ) })
444
+ )
422
445
  ] })
423
446
  ]
424
447
  }
@@ -442,7 +465,7 @@ var TreeSelect = React.memo(
442
465
  className: "overflow-auto",
443
466
  style: { maxHeight: maxDropdownHeight },
444
467
  role: "tree",
445
- "aria-labelledby": label ? "tree-select-label" : void 0,
468
+ "aria-labelledby": label ? labelId : void 0,
446
469
  children: filteredData.length === 0 ? /* @__PURE__ */ jsx("div", { className: "px-3 py-4 text-center text-sm text-text-secondary", children: "No options found" }) : /* @__PURE__ */ jsx(
447
470
  tree_default,
448
471
  {
@@ -458,7 +481,7 @@ var TreeSelect = React.memo(
458
481
  showLine,
459
482
  showIcon,
460
483
  defaultExpandAll: defaultExpandAll || !!searchQuery,
461
- expandedKeys: searchQuery ? void 0 : expandedKeys,
484
+ expandedKeys: defaultExpandAll ? void 0 : searchQuery ? void 0 : expandedKeys,
462
485
  onExpand: setExpandedKeys,
463
486
  className: cn("treeSelect_tree", classNames?.tree),
464
487
  classNames: {
@@ -481,7 +504,7 @@ var TreeSelect = React.memo(
481
504
  label && /* @__PURE__ */ jsx(
482
505
  "label",
483
506
  {
484
- id: "tree-select-label",
507
+ id: labelId,
485
508
  className: "block mb-0.5",
486
509
  children: /* @__PURE__ */ jsxs("span", { className: "text-sm font-medium text-text-secondary", children: [
487
510
  label,
@@ -499,5 +522,5 @@ TreeSelect.displayName = "TreeSelect";
499
522
  var tree_select_default = TreeSelect;
500
523
 
501
524
  export { tree_select_default };
502
- //# sourceMappingURL=chunk-ON2CMF6J.js.map
503
- //# sourceMappingURL=chunk-ON2CMF6J.js.map
525
+ //# sourceMappingURL=chunk-TBKPQOXF.js.map
526
+ //# sourceMappingURL=chunk-TBKPQOXF.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/tree-select/index.tsx"],"names":["info"],"mappings":"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","file":"chunk-TBKPQOXF.js","sourcesContent":["'use client'\n\nimport { cva } from 'class-variance-authority'\nimport React from 'react'\n\nimport { ChevronDown, Loader2, X } from 'lucide-react'\n\nimport { Popover, PopoverContent, PopoverTrigger } from '../popover'\nimport { colorVars } from '../variants'\nimport Tree from '../tree'\nimport type { TreeNode } from '../tree/types'\nimport {\n cn,\n getValidationStatus,\n iconSizes,\n statusMessageVariants,\n} from '../utils'\nimport type { TreeSelectProps } from './types'\n\nconst treeSelectTriggerVariants = cva(\n 'w-full flex items-center justify-between rounded-md bg-background text-text-primary border outline-none cursor-pointer transition-colors focus-visible:ring-2 focus-visible:ring-primary focus-visible:ring-offset-2 focus-visible:ring-offset-background aria-disabled:opacity-50 aria-disabled:cursor-not-allowed',\n {\n variants: {\n status: {\n default: 'border-border hover:border-primary/50',\n error: 'border-error',\n warning: 'border-warning',\n info: 'border-info',\n success: 'border-success',\n },\n size: {\n xs: 'min-h-(--select-height-xs) px-(--select-padding-x-xs) py-1 text-xs gap-1.5',\n sm: 'min-h-(--input-height-sm) px-1 py-1 text-sm gap-2',\n md: 'min-h-(--input-height-md) px-2 py-1 text-base gap-2',\n lg: 'min-h-(--input-height-lg) px-3 py-1.5 text-lg gap-3',\n },\n fullWidth: {\n true: 'w-full',\n false: 'max-w-full',\n },\n },\n defaultVariants: {\n status: 'default',\n size: 'md',\n fullWidth: true,\n },\n },\n)\n\nconst TreeSelect = React.memo<TreeSelectProps>(\n ({\n size = 'md',\n label,\n helperText,\n error,\n warning,\n info,\n success,\n data = [],\n placeholder = 'Select an option',\n loading = false,\n fullWidth = true,\n value,\n defaultValue,\n onChange,\n disabled,\n required,\n multiple = false,\n checkable = false,\n searchable = true,\n clearable = true,\n maxChipsVisible = 3,\n maxDropdownHeight = 300,\n defaultExpandAll = false,\n defaultExpandedKeys = [],\n showLine = false,\n showIcon = true,\n className,\n classNames,\n ref,\n ...props\n }) => {\n const uniqueId = React.useId()\n const labelId = `tree-select-label-${uniqueId}`\n\n const [isOpen, setIsOpen] = React.useState(false)\n const [internalValue, setInternalValue] = React.useState<string | string[]>(\n defaultValue || (multiple ? [] : ''),\n )\n const [searchQuery, setSearchQuery] = React.useState('')\n const [expandedKeys, setExpandedKeys] = React.useState<string[]>(\n defaultExpandAll ? [] : defaultExpandedKeys,\n )\n const [visibleChipsCount, setVisibleChipsCount] =\n React.useState(maxChipsVisible)\n\n const triggerRef = React.useRef<HTMLDivElement>(null)\n const inputRef = React.useRef<HTMLInputElement>(null)\n const currentValue = value !== undefined ? value : internalValue\n\n // Use shared validation status utility\n const { status, message: helperMessage } = getValidationStatus({\n error,\n warning,\n info,\n success,\n helperText,\n })\n\n // Get all nodes in a flat structure for search and lookup\n const getAllNodes = React.useCallback((nodes: TreeNode[]): TreeNode[] => {\n const result: TreeNode[] = []\n const traverse = (items: TreeNode[]) => {\n items.forEach((item) => {\n result.push(item)\n if (item.children) {\n traverse(item.children)\n }\n })\n }\n traverse(nodes)\n return result\n }, [])\n\n const allNodes = React.useMemo(() => getAllNodes(data), [data, getAllNodes])\n\n // Find node by key\n const getNodeByKey = React.useCallback(\n (key: string): TreeNode | null => {\n return allNodes.find((node) => node.key === key) || null\n },\n [allNodes],\n )\n\n // Get selected nodes\n const getSelectedNodes = React.useCallback(\n (keys: string | string[]): TreeNode[] => {\n const keyArray = Array.isArray(keys) ? keys : [keys]\n return keyArray\n .map((key) => getNodeByKey(key))\n .filter((node): node is TreeNode => node !== null)\n },\n [getNodeByKey],\n )\n\n // Filter tree data based on search query\n const filteredData = React.useMemo(() => {\n if (!searchQuery) return data\n\n const matchingKeys = new Set<string>()\n\n // Find all nodes that match the search\n allNodes.forEach((node) => {\n if (node.label.toLowerCase().includes(searchQuery.toLowerCase())) {\n // Add the node and all its ancestors\n let current: TreeNode | null = node\n while (current) {\n matchingKeys.add(current.key)\n // Find parent\n const parent = allNodes.find((n) =>\n n.children?.some((child) => child.key === current!.key),\n )\n current = parent || null\n }\n }\n })\n\n // Filter tree to only include matching nodes and their paths\n const filterTree = (nodes: TreeNode[]): TreeNode[] => {\n return nodes\n .filter((node) => matchingKeys.has(node.key))\n .map((node) => ({\n ...node,\n children: node.children ? filterTree(node.children) : undefined,\n }))\n }\n\n return filterTree(data)\n }, [data, searchQuery, allNodes])\n\n // Get display value\n const selectedNodes = React.useMemo(\n () => getSelectedNodes(currentValue),\n [currentValue, getSelectedNodes],\n )\n\n const getDisplayValue = React.useMemo(() => {\n if (!selectedNodes.length) return ''\n if (selectedNodes.length === 1) return selectedNodes[0]?.label\n return `${selectedNodes.length} selected`\n }, [selectedNodes])\n\n const handleSelect = React.useCallback(\n (_: string[], info: { selected: boolean; node: TreeNode }) => {\n if (disabled) return\n\n // Prevent selection of directory nodes (nodes with children)\n if (info.node.children && info.node.children.length > 0) {\n return\n }\n\n let newValue: string | string[]\n\n if (multiple) {\n // For multiple selection\n const currentArray = Array.isArray(currentValue) ? currentValue : []\n if (info.selected) {\n newValue = [...currentArray, info.node.key]\n } else {\n newValue = currentArray.filter((k) => k !== info.node.key)\n }\n } else {\n // For single selection\n if (info.selected) {\n newValue = info.node.key\n setIsOpen(false)\n setSearchQuery('')\n } else {\n newValue = ''\n }\n }\n\n if (value === undefined) {\n setInternalValue(newValue)\n }\n\n const selectedNodesResult = getSelectedNodes(newValue)\n onChange?.(newValue, selectedNodesResult)\n },\n [disabled, multiple, currentValue, value, onChange, getSelectedNodes],\n )\n\n const handleCheck = React.useCallback(\n (\n keys: string[],\n info: {\n checked: boolean\n node: TreeNode\n checkedNodes: TreeNode[]\n },\n ) => {\n if (disabled) return\n\n // Filter out directory nodes (nodes with children) from checked keys\n const leafKeys = keys.filter((key) => {\n const node = getNodeByKey(key)\n return node && (!node.children || node.children.length === 0)\n })\n\n const leafNodes = info.checkedNodes.filter(\n (node) => !node.children || node.children.length === 0,\n )\n\n if (value === undefined) {\n setInternalValue(leafKeys)\n }\n\n onChange?.(leafKeys, leafNodes)\n },\n [disabled, value, onChange, getNodeByKey],\n )\n\n const handleInputChange = React.useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n setSearchQuery(e.target.value)\n if (!isOpen) setIsOpen(true)\n },\n [isOpen],\n )\n\n const handleInputFocus = React.useCallback(() => {\n setIsOpen(true)\n }, [])\n\n const handleClear = React.useCallback(\n (e: React.MouseEvent) => {\n e.stopPropagation()\n const newValue = multiple ? [] : ''\n if (value === undefined) {\n setInternalValue(newValue)\n }\n onChange?.(newValue, [])\n setSearchQuery('')\n },\n [multiple, value, onChange],\n )\n\n const handleRemoveItem = React.useCallback(\n (\n e: React.SyntheticEvent,\n keyToRemove: string,\n ) => {\n e.stopPropagation()\n if (!multiple || disabled) return\n\n const currentArray = Array.isArray(currentValue) ? currentValue : []\n const newValue = currentArray.filter((k) => k !== keyToRemove)\n\n if (value === undefined) {\n setInternalValue(newValue)\n }\n\n const selectedNodesResult = getSelectedNodes(newValue)\n onChange?.(newValue, selectedNodesResult)\n },\n [multiple, disabled, currentValue, value, onChange, getSelectedNodes],\n )\n\n const handleKeyDown = React.useCallback(\n (e: React.KeyboardEvent) => {\n if (!isOpen && e.key !== 'Tab') {\n if (e.key === 'Enter' || e.key === ' ' || e.key === 'ArrowDown') {\n e.preventDefault()\n setIsOpen(true)\n }\n return\n }\n\n if (e.key === 'Escape') {\n e.preventDefault()\n setIsOpen(false)\n setSearchQuery('')\n triggerRef.current?.focus()\n }\n },\n [isOpen],\n )\n\n const handleInputKeyDown = React.useCallback(\n (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (\n e.key === 'Backspace' &&\n !searchQuery &&\n multiple &&\n Array.isArray(currentValue) &&\n currentValue.length > 0\n ) {\n e.preventDefault()\n const lastKey = currentValue[currentValue.length - 1]\n handleRemoveItem(e, lastKey || '')\n } else {\n handleKeyDown(e)\n }\n },\n [searchQuery, currentValue, multiple, handleRemoveItem, handleKeyDown],\n )\n\n // Dynamic badge size calculation\n React.useEffect(() => {\n if (selectedNodes.length === 0 || !triggerRef.current) {\n setVisibleChipsCount(maxChipsVisible)\n return\n }\n\n const calculateVisibleChips = () => {\n const container = triggerRef.current\n if (!container) return\n\n const hiddenChips = container.querySelectorAll('[data-hidden-chip]')\n if (hiddenChips.length === 0) return\n\n const containerWidth = container.offsetWidth\n const padding =\n size === 'sm' ? 12 : size === 'md' ? 16 : size === 'lg' ? 20 : 16\n\n // Account for icons on the right (clear + chevron/search)\n // Use a generous estimate to avoid overflow\n const iconsWidth = 60 // Enough space for clear button + chevron + gap\n\n const gap = 4\n const plusIndicatorWidth = 40 // Width of \"+X\" badge\n\n const availableWidth = containerWidth - padding * 2 - iconsWidth\n let totalWidth = 0\n let visibleCount = 0\n\n for (let i = 0; i < hiddenChips.length; i++) {\n const chipWidth = hiddenChips[i]?.getBoundingClientRect().width || 0\n const requiredSpace =\n totalWidth + chipWidth + (visibleCount > 0 ? gap : 0)\n\n const needsPlusIndicator = i < hiddenChips.length - 1\n const spaceWithIndicator =\n requiredSpace + (needsPlusIndicator ? gap + plusIndicatorWidth : 0)\n\n if (spaceWithIndicator <= availableWidth) {\n totalWidth = requiredSpace\n visibleCount++\n } else {\n break\n }\n }\n\n setVisibleChipsCount(Math.max(1, visibleCount))\n }\n\n const timeoutId = setTimeout(calculateVisibleChips, 0)\n\n const resizeObserver = new ResizeObserver(() => {\n calculateVisibleChips()\n })\n\n if (triggerRef.current) {\n resizeObserver.observe(triggerRef.current)\n }\n\n return () => {\n clearTimeout(timeoutId)\n resizeObserver.disconnect()\n }\n }, [selectedNodes, size, maxChipsVisible])\n\n const treeSelectElement = (\n <div\n data-slot=\"root\"\n className={cn(\n 'treeSelect_root',\n 'relative group',\n colorVars.primary,\n fullWidth ? 'w-full' : 'inline-block',\n classNames?.root,\n )}\n ref={ref}\n {...props}\n >\n <Popover\n open={isOpen}\n onOpenChange={(open) => {\n setIsOpen(open)\n if (!open) setSearchQuery('')\n }}\n >\n <PopoverTrigger asChild>\n <div\n ref={triggerRef}\n role=\"combobox\"\n tabIndex={disabled || loading ? -1 : 0}\n className={cn(\n 'treeSelect_trigger',\n treeSelectTriggerVariants({ status, size, fullWidth }),\n loading && 'opacity-50',\n className,\n classNames?.trigger,\n )}\n aria-haspopup=\"tree\"\n aria-expanded={isOpen}\n aria-disabled={disabled || loading}\n aria-labelledby={label ? labelId : undefined}\n onClick={() => {\n if (disabled || loading) return\n if (!isOpen) {\n setIsOpen(true)\n if (searchable) {\n requestAnimationFrame(() => inputRef.current?.focus())\n }\n }\n }}\n onKeyDown={handleKeyDown}\n >\n {multiple && selectedNodes.length > 0 && (\n <div className=\"flex gap-1 flex-shrink-0 flex-wrap\">\n {selectedNodes.slice(0, visibleChipsCount).map((node) => (\n <span\n key={node.key}\n className=\"inline-flex items-center gap-1 px-2 py-0.5 bg-slot-10 text-slot rounded text-sm whitespace-nowrap\"\n >\n {node.label}\n <button\n type=\"button\"\n onClick={(e) => handleRemoveItem(e, node.key)}\n className=\"hover:bg-slot-20 rounded-sm\"\n disabled={disabled}\n >\n <X className=\"h-3 w-3\" />\n </button>\n </span>\n ))}\n {selectedNodes.length > visibleChipsCount && (\n <span className=\"inline-flex items-center px-2 py-0.5 bg-surface text-text-secondary rounded text-sm whitespace-nowrap\">\n +{selectedNodes.length - visibleChipsCount}\n </span>\n )}\n </div>\n )}\n {/* Hidden chips for width calculation (multiple mode only) */}\n {multiple && (\n <div\n className=\"absolute opacity-0 pointer-events-none whitespace-nowrap\"\n aria-hidden=\"true\"\n >\n {selectedNodes.map((node) => (\n <span\n key={node.key}\n data-hidden-chip\n className=\"inline-flex items-center gap-1 px-2 py-0.5 bg-slot-10 text-slot rounded text-sm whitespace-nowrap\"\n >\n {node.label}\n <X className=\"h-3 w-3\" />\n </span>\n ))}\n </div>\n )}\n {searchable && isOpen ? (\n <input\n ref={inputRef}\n type=\"text\"\n className=\"bg-transparent outline-none placeholder:text-text-secondary/50 flex-1 min-w-[60px] w-0\"\n placeholder={getDisplayValue || placeholder}\n value={searchQuery}\n onChange={handleInputChange}\n onFocus={handleInputFocus}\n onKeyDown={handleInputKeyDown}\n disabled={disabled || loading}\n onClick={(e) => e.stopPropagation()}\n tabIndex={-1}\n />\n ) : (\n <span className={cn('flex-1 truncate', !getDisplayValue && 'text-text-secondary/50')}>\n {getDisplayValue || placeholder}\n </span>\n )}\n <div className=\"flex items-center gap-1 text-text-secondary shrink-0\">\n {clearable && getDisplayValue && !disabled && !loading && (\n <button\n type=\"button\"\n onClick={(e) => { e.stopPropagation(); handleClear(e) }}\n className=\"hover:text-text-primary transition-colors\"\n tabIndex={-1}\n >\n <X className={iconSizes[size]} />\n </button>\n )}\n {loading ? (\n <Loader2 className={cn('animate-spin', iconSizes[size])} />\n ) : (\n <ChevronDown\n className={cn(\n iconSizes[size],\n 'transition-transform duration-200',\n isOpen && 'rotate-180',\n )}\n />\n )}\n </div>\n </div>\n </PopoverTrigger>\n\n <PopoverContent\n className={cn(\n 'treeSelect_dropdown',\n 'p-2 w-[var(--radix-popover-trigger-width)]',\n classNames?.dropdown,\n )}\n align=\"start\"\n onOpenAutoFocus={(e: Event) => {\n e.preventDefault()\n inputRef.current?.focus()\n }}\n >\n <div\n className=\"overflow-auto\"\n style={{ maxHeight: maxDropdownHeight }}\n role=\"tree\"\n aria-labelledby={label ? labelId : undefined}\n >\n {filteredData.length === 0 ? (\n <div className=\"px-3 py-4 text-center text-sm text-text-secondary\">\n No options found\n </div>\n ) : (\n <Tree\n data={filteredData}\n checkable={checkable}\n checkedKeys={\n checkable && Array.isArray(currentValue)\n ? currentValue\n : undefined\n }\n onCheck={checkable ? handleCheck : undefined}\n selectable={!checkable}\n selectedKeys={\n !checkable\n ? Array.isArray(currentValue)\n ? currentValue\n : currentValue\n ? [currentValue]\n : []\n : undefined\n }\n onSelect={!checkable ? handleSelect : undefined}\n disabled={disabled}\n size={size}\n showLine={showLine}\n showIcon={showIcon}\n defaultExpandAll={defaultExpandAll || !!searchQuery}\n expandedKeys={defaultExpandAll ? undefined : (searchQuery ? undefined : expandedKeys)}\n onExpand={setExpandedKeys}\n className={cn('treeSelect_tree', classNames?.tree)}\n classNames={{\n node: cn('treeSelect_node', classNames?.node),\n label: cn('treeSelect_label', classNames?.label),\n }}\n />\n )}\n </div>\n </PopoverContent>\n </Popover>\n </div>\n )\n\n return (\n <div className={cn('w-full flex flex-col', !fullWidth && 'inline-block')}>\n <div className=\"flex gap-2 items-center\">\n {label && (\n <label\n id={labelId}\n className=\"block mb-0.5\"\n >\n <span className=\"text-sm font-medium text-text-secondary\">\n {label}\n {required && <span className=\"text-error ml-1\">*</span>}\n </span>\n </label>\n )}\n {helperMessage && (\n <p className={statusMessageVariants({ status })}>{helperMessage}</p>\n )}\n </div>\n {treeSelectElement}\n </div>\n )\n },\n)\n\nTreeSelect.displayName = 'TreeSelect'\n\nexport type * from './types'\nexport default TreeSelect\n"]}
@@ -1,20 +1,20 @@
1
- import { spinner_default } from './chunk-Y4XAXZHB.js';
2
- import { getValidationStatus, cn, statusMessageVariants, iconSizes } from './chunk-NGYLRX6F.js';
1
+ import { spinner_default } from './chunk-RRPMZYVN.js';
2
+ import { getValidationStatus, cn, statusMessageVariants, iconSizes } from './chunk-RAS6HUEI.js';
3
3
  import { cva } from 'class-variance-authority';
4
4
  import { X } from 'lucide-react';
5
5
  import React, { useId, useMemo } from 'react';
6
6
  import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
7
7
 
8
8
  var floatInputVariants = cva(
9
- "peer w-full placeholder:text-transparent rounded-md disabled:opacity-50 disabled:cursor-not-allowed read-only:bg-surface read-only:cursor-default outline-none text-text-primary transition-[border-color] duration-200 border border-border focus:border-primary focus:ring-1 focus:ring-primary/20 bg-background",
9
+ "peer w-full placeholder:text-transparent rounded-md disabled:opacity-50 disabled:cursor-not-allowed read-only:bg-surface read-only:cursor-default outline-none text-text-primary transition-[border-color] duration-200 border border-border focus-visible:border-primary bg-background",
10
10
  {
11
11
  variants: {
12
12
  status: {
13
13
  default: "",
14
- error: "border-error focus:border-error focus:ring-error/20",
15
- warning: "border-warning focus:border-warning focus:ring-warning/20",
16
- info: "border-info focus:border-info focus:ring-info/20",
17
- success: "border-success focus:border-success focus:ring-success/20"
14
+ error: "border-error focus-visible:border-error",
15
+ warning: "border-warning focus-visible:border-warning",
16
+ info: "border-info focus-visible:border-info",
17
+ success: "border-success focus-visible:border-success"
18
18
  },
19
19
  size: {
20
20
  xs: "h-9 pt-3.5 px-2 text-xs",
@@ -107,7 +107,7 @@ var FloatInput = React.memo(
107
107
  ref,
108
108
  ...props
109
109
  }) => {
110
- const [internalValue, setInternalValue] = React.useState("");
110
+ const [internalValue, setInternalValue] = React.useState(props.defaultValue ?? "");
111
111
  const currentValue = value !== void 0 ? value : internalValue;
112
112
  const uniqueId = useId();
113
113
  const inputId = props.id || `float-input-${uniqueId}`;
@@ -127,8 +127,11 @@ var FloatInput = React.memo(
127
127
  );
128
128
  const handleClear = React.useCallback(() => {
129
129
  if (value === void 0) setInternalValue("");
130
+ onChange?.({
131
+ target: { value: "" }
132
+ });
130
133
  onClear?.();
131
- }, [value, onClear]);
134
+ }, [value, onChange, onClear]);
132
135
  const showClear = clearable && currentValue && !props.disabled && !props.readOnly;
133
136
  const hasRightIcon = rightIcon || showClear || loading;
134
137
  const ariaDescribedBy = useMemo(() => {
@@ -306,5 +309,5 @@ FloatInput.displayName = "FloatInput";
306
309
  var float_input_default = FloatInput;
307
310
 
308
311
  export { float_input_default };
309
- //# sourceMappingURL=chunk-GOLARX5K.js.map
310
- //# sourceMappingURL=chunk-GOLARX5K.js.map
312
+ //# sourceMappingURL=chunk-TDNPACQD.js.map
313
+ //# sourceMappingURL=chunk-TDNPACQD.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/float-input/index.tsx"],"names":[],"mappings":";;;;;;;AAgBA,IAAM,kBAAA,GAAqB,GAAA;AAAA,EACzB,yRAAA;AAAA,EACA;AAAA,IACE,QAAA,EAAU;AAAA,MACR,MAAA,EAAQ;AAAA,QACN,OAAA,EAAS,EAAA;AAAA,QACT,KAAA,EAAO,yCAAA;AAAA,QACP,OAAA,EAAS,6CAAA;AAAA,QACT,IAAA,EAAM,uCAAA;AAAA,QACN,OAAA,EAAS;AAAA,OACX;AAAA,MACA,IAAA,EAAM;AAAA,QACJ,EAAA,EAAI,yBAAA;AAAA,QACJ,EAAA,EAAI,wBAAA;AAAA,QACJ,EAAA,EAAI,0BAAA;AAAA,QACJ,EAAA,EAAI;AAAA,OACN;AAAA,MACA,SAAA,EAAW;AAAA,QACT,IAAA,EAAM,QAAA;AAAA,QACN,KAAA,EAAO;AAAA;AACT,KACF;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,MAAA,EAAQ,SAAA;AAAA,MACR,IAAA,EAAM,IAAA;AAAA,MACN,SAAA,EAAW;AAAA;AACb;AAEJ,CAAA;AAEA,IAAM,kBAAA,GAAqB,GAAA;AAAA,EACzB,4GAAA;AAAA,EACA;AAAA,IACE,QAAA,EAAU;AAAA,MACR,IAAA,EAAM;AAAA,QACJ,EAAA,EAAI,kJAAA;AAAA,QACJ,EAAA,EAAI,sJAAA;AAAA,QACJ,EAAA,EAAI,0IAAA;AAAA,QACJ,EAAA,EAAI;AAAA,OACN;AAAA,MACA,MAAA,EAAQ;AAAA,QACN,OAAA,EAAS,EAAA;AAAA,QACT,KAAA,EAAO,uBAAA;AAAA,QACP,OAAA,EAAS,yBAAA;AAAA,QACT,IAAA,EAAM,sBAAA;AAAA,QACN,OAAA,EAAS;AAAA,OACX;AAAA,MACA,WAAA,EAAa;AAAA,QACX,IAAA,EAAM,EAAA;AAAA,QACN,KAAA,EAAO;AAAA;AACT,KACF;AAAA,IACA,gBAAA,EAAkB;AAAA,MAChB;AAAA,QACE,IAAA,EAAM,IAAA;AAAA,QACN,WAAA,EAAa,IAAA;AAAA,QACb,SAAA,EAAW;AAAA,OACb;AAAA,MACA;AAAA,QACE,IAAA,EAAM,IAAA;AAAA,QACN,WAAA,EAAa,IAAA;AAAA,QACb,SAAA,EAAW;AAAA,OACb;AAAA,MACA;AAAA,QACE,IAAA,EAAM,IAAA;AAAA,QACN,WAAA,EAAa,IAAA;AAAA,QACb,SAAA,EAAW;AAAA,OACb;AAAA,MACA;AAAA,QACE,IAAA,EAAM,IAAA;AAAA,QACN,WAAA,EAAa,IAAA;AAAA,QACb,SAAA,EAAW;AAAA;AACb,KACF;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,IAAA,EAAM,IAAA;AAAA,MACN,MAAA,EAAQ,SAAA;AAAA,MACR,WAAA,EAAa;AAAA;AACf;AAEJ,CAAA;AAEA,IAAM,aAAa,KAAA,CAAM,IAAA;AAAA,EACvB,CAAC;AAAA,IACC,IAAA,GAAO,IAAA;AAAA,IACP,KAAA;AAAA,IACA,KAAA;AAAA,IACA,OAAA;AAAA,IACA,IAAA;AAAA,IACA,OAAA;AAAA,IACA,UAAA;AAAA,IACA,QAAA;AAAA,IACA,SAAA;AAAA,IACA,SAAA,GAAY,KAAA;AAAA,IACZ,OAAA;AAAA,IACA,OAAA,GAAU,KAAA;AAAA,IACV,SAAA,GAAY,IAAA;AAAA,IACZ,SAAA;AAAA,IACA,UAAA;AAAA,IACA,KAAA;AAAA,IACA,QAAA;AAAA,IACA,GAAA;AAAA,IACA,GAAG;AAAA,GACL,KAAM;AACJ,IAAA,MAAM,CAAC,eAAe,gBAAgB,CAAA,GAAI,MAAM,QAAA,CAAS,KAAA,CAAM,gBAAgB,EAAE,CAAA;AACjF,IAAA,MAAM,YAAA,GAAe,KAAA,KAAU,MAAA,GAAY,KAAA,GAAQ,aAAA;AAEnD,IAAA,MAAM,WAAW,KAAA,EAAM;AACvB,IAAA,MAAM,OAAA,GAAU,KAAA,CAAM,EAAA,IAAM,CAAA,YAAA,EAAe,QAAQ,CAAA,CAAA;AACnD,IAAA,MAAM,QAAA,GAAW,sBAAsB,QAAQ,CAAA,CAAA;AAC/C,IAAA,MAAM,SAAA,GAAY,uBAAuB,QAAQ,CAAA,CAAA;AACjD,IAAA,MAAM,OAAA,GAAU,qBAAqB,QAAQ,CAAA,CAAA;AAE7C,IAAA,MAAM,EAAE,MAAA,EAAQ,OAAA,EAAS,aAAA,EAAc,GAAI,OAAA;AAAA,MACzC,MAAM,oBAAoB,EAAE,KAAA,EAAO,SAAS,IAAA,EAAM,OAAA,EAAS,YAAY,CAAA;AAAA,MACvE,CAAC,KAAA,EAAO,OAAA,EAAS,IAAA,EAAM,SAAS,UAAU;AAAA,KAC5C;AAEA,IAAA,MAAM,eAAe,KAAA,CAAM,WAAA;AAAA,MACzB,CAAC,CAAA,KAA2C;AAC1C,QAAA,IAAI,KAAA,KAAU,MAAA,EAAW,gBAAA,CAAiB,CAAA,CAAE,OAAO,KAAK,CAAA;AACxD,QAAA,QAAA,GAAW,CAAC,CAAA;AAAA,MACd,CAAA;AAAA,MACA,CAAC,OAAO,QAAQ;AAAA,KAClB;AAEA,IAAA,MAAM,WAAA,GAAc,KAAA,CAAM,WAAA,CAAY,MAAM;AAC1C,MAAA,IAAI,KAAA,KAAU,MAAA,EAAW,gBAAA,CAAiB,EAAE,CAAA;AAC5C,MAAA,QAAA,GAAW;AAAA,QACT,MAAA,EAAQ,EAAE,KAAA,EAAO,EAAA;AAAG,OACkB,CAAA;AACxC,MAAA,OAAA,IAAU;AAAA,IACZ,CAAA,EAAG,CAAC,KAAA,EAAO,QAAA,EAAU,OAAO,CAAC,CAAA;AAE7B,IAAA,MAAM,YACJ,SAAA,IAAa,YAAA,IAAgB,CAAC,KAAA,CAAM,QAAA,IAAY,CAAC,KAAA,CAAM,QAAA;AACzD,IAAA,MAAM,YAAA,GAAe,aAAa,SAAA,IAAa,OAAA;AAG/C,IAAA,MAAM,eAAA,GAAkB,QAAQ,MAAM;AACpC,MAAA,MAAM,QAAkB,EAAC;AACzB,MAAA,IAAI,aAAA,EAAe,KAAA,CAAM,IAAA,CAAK,QAAQ,CAAA;AACtC,MAAA,IAAI,OAAA,EAAS,KAAA,CAAM,IAAA,CAAK,SAAS,CAAA;AACjC,MAAA,OAAO,MAAM,MAAA,GAAS,CAAA,GAAI,KAAA,CAAM,IAAA,CAAK,GAAG,CAAA,GAAI,MAAA;AAAA,IAC9C,GAAG,CAAC,aAAA,EAAe,QAAA,EAAU,OAAA,EAAS,SAAS,CAAC,CAAA;AAGhD,IAAA,MAAM,SAAA,GAAY,OAAA;AAAA,MAChB,MACE,EAAA;AAAA,QACE,kBAAA;AAAA,QACA,+BAAA;AAAA,QACA,CAAC,SAAA,IAAa,cAAA;AAAA,QACd,UAAA,EAAY;AAAA,OACd;AAAA,MACF,CAAC,SAAA,EAAW,UAAA,EAAY,IAAI;AAAA,KAC9B;AAEA,IAAA,MAAM,YAAA,GAAe,OAAA;AAAA,MACnB,MACE,EAAA;AAAA,QACE,qBAAA;AAAA,QACA,iBAAA;AAAA,QACA,OAAA,IAAW,+BAAA;AAAA,QACX,UAAA,EAAY;AAAA,OACd;AAAA,MACF,CAAC,OAAA,EAAS,UAAA,EAAY,OAAO;AAAA,KAC/B;AAEA,IAAA,MAAM,aAAA,GAAgB,QAAQ,MAAM;AAClC,MAAA,MAAM,WAAA,GAAc;AAAA,QAClB,EAAA,EAAI,QAAA;AAAA,QACJ,EAAA,EAAI,QAAA;AAAA,QACJ,EAAA,EAAI,QAAA;AAAA,QACJ,EAAA,EAAI;AAAA,OACN;AACA,MAAA,OAAO,EAAA;AAAA,QACL,sBAAA;AAAA,QACA,6DAAA;AAAA,QACA,YAAY,IAAI,CAAA;AAAA,QAChB,UAAA,EAAY;AAAA,OACd;AAAA,IACF,CAAA,EAAG,CAAC,IAAA,EAAM,UAAA,EAAY,QAAQ,CAAC,CAAA;AAE/B,IAAA,MAAM,UAAA,GAAa,QAAQ,MAAM;AAC/B,MAAA,MAAM,cAAc,QAAA,GAChB;AAAA,QACE,EAAA,EAAI,MAAA;AAAA,QACJ,EAAA,EAAI,OAAA;AAAA,QACJ,EAAA,EAAI,OAAA;AAAA,QACJ,EAAA,EAAI;AAAA,OACN,CAAE,IAAI,CAAA,GACN,EAAA;AAEJ,MAAA,MAAM,eAAe,YAAA,GACjB;AAAA,QACE,EAAA,EAAI,MAAA;AAAA,QACJ,EAAA,EAAI,MAAA;AAAA,QACJ,EAAA,EAAI,MAAA;AAAA,QACJ,EAAA,EAAI;AAAA,OACN,CAAE,IAAI,CAAA,GACN,EAAA;AAEJ,MAAA,OAAO,EAAA;AAAA,QACL,mBAAA;AAAA,QACA,kBAAA,CAAmB,EAAE,MAAA,EAAQ,IAAA,EAAM,WAAW,CAAA;AAAA,QAC9C,WAAA;AAAA,QACA,YAAA;AAAA,QACA,SAAA;AAAA,QACA,UAAA,EAAY;AAAA,OACd;AAAA,IACF,CAAA,EAAG;AAAA,MACD,MAAA;AAAA,MACA,IAAA;AAAA,MACA,SAAA;AAAA,MACA,QAAA;AAAA,MACA,YAAA;AAAA,MACA,SAAA;AAAA,MACA,UAAA,EAAY;AAAA,KACb,CAAA;AAED,IAAA,MAAM,UAAA,GAAa,OAAA;AAAA,MACjB,MACE,EAAA;AAAA,QACE,mBAAA;AAAA,QACA,kBAAA,CAAmB,EAAE,IAAA,EAAM,MAAA,EAAQ,aAAa,CAAC,CAAC,UAAU,CAAA;AAAA,QAC5D,UAAA,EAAY;AAAA,OACd;AAAA,MACF,CAAC,IAAA,EAAM,MAAA,EAAQ,QAAA,EAAU,YAAY,KAAK;AAAA,KAC5C;AAEA,IAAA,MAAM,cAAA,GAAiB,QAAQ,MAAM;AACnC,MAAA,MAAM,WAAA,GAAc;AAAA,QAClB,EAAA,EAAI,SAAA;AAAA,QACJ,EAAA,EAAI,SAAA;AAAA,QACJ,EAAA,EAAI,SAAA;AAAA,QACJ,EAAA,EAAI;AAAA,OACN;AACA,MAAA,OAAO,EAAA;AAAA,QACL,uBAAA;AAAA,QACA,mEAAA;AAAA,QACA,YAAY,IAAI,CAAA;AAAA,QAChB,UAAA,EAAY;AAAA,OACd;AAAA,IACF,CAAA,EAAG,CAAC,IAAA,EAAM,UAAA,EAAY,SAAS,CAAC,CAAA;AAEhC,IAAA,MAAM,gBAAA,GAAmB,OAAA;AAAA,MACvB,MACE,EAAA;AAAA,QACE,yBAAA;AAAA,QACA,8FAAA;AAAA,QACA,UAAA,EAAY;AAAA,OACd;AAAA,MACF,CAAC,YAAY,WAAW;AAAA,KAC1B;AAEA,IAAA,MAAM,WAAA,GAAc,OAAA;AAAA,MAClB,MACE,EAAA;AAAA,QACE,oBAAA;AAAA,QACA,qBAAA,CAAsB,EAAE,MAAA,EAAQ,CAAA;AAAA,QAChC,QAAA;AAAA,QACA,MAAA,KAAW,OAAA,GAAU,UAAA,EAAY,KAAA,GAAQ,UAAA,EAAY;AAAA,OACvD;AAAA,MACF,CAAC,MAAA,EAAQ,UAAA,EAAY,KAAA,EAAO,YAAY,MAAM;AAAA,KAChD;AAEA,IAAA,MAAM,QAAA,GAAW,UAAU,IAAI,CAAA;AAE/B,IAAA,uBACE,IAAA,CAAC,KAAA,EAAA,EAAI,WAAA,EAAU,MAAA,EAAO,WAAW,SAAA,EAC/B,QAAA,EAAA;AAAA,sBAAA,IAAA,CAAC,KAAA,EAAA,EAAI,WAAA,EAAU,SAAA,EAAU,SAAA,EAAW,YAAA,EACjC,QAAA,EAAA;AAAA,QAAA,QAAA,oBACC,GAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACC,WAAA,EAAU,UAAA;AAAA,YACV,SAAA,EAAW,aAAA;AAAA,YACX,aAAA,EAAY,MAAA;AAAA,YAEX,QAAA,EAAA;AAAA;AAAA,SACH;AAAA,wBAEF,GAAA;AAAA,UAAC,OAAA;AAAA,UAAA;AAAA,YACC,GAAA;AAAA,YACA,EAAA,EAAI,OAAA;AAAA,YACJ,WAAA,EAAU,OAAA;AAAA,YACV,SAAA,EAAW,UAAA;AAAA,YACX,KAAA,EAAO,YAAA;AAAA,YACP,QAAA,EAAU,YAAA;AAAA,YACV,WAAA,EAAY,GAAA;AAAA,YACZ,gBAAc,MAAA,KAAW,OAAA;AAAA,YACzB,WAAA,EAAW,OAAA;AAAA,YACX,kBAAA,EAAkB,eAAA;AAAA,YAClB,iBAAA,EAAiB,OAAA;AAAA,YAChB,GAAG;AAAA;AAAA,SACN;AAAA,wBACA,IAAA;AAAA,UAAC,OAAA;AAAA,UAAA;AAAA,YACC,EAAA,EAAI,OAAA;AAAA,YACJ,OAAA,EAAS,OAAA;AAAA,YACT,WAAA,EAAU,OAAA;AAAA,YACV,SAAA,EAAW,UAAA;AAAA,YAEV,QAAA,EAAA;AAAA,cAAA,KAAA;AAAA,cACA,MAAM,QAAA,oBAAY,GAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,qBAAoB,QAAA,EAAA,GAAA,EAAC;AAAA;AAAA;AAAA,SAC1D;AAAA,QAAA,CACE,gBAAgB,SAAA,qBAChB,IAAA,CAAC,SAAI,WAAA,EAAU,WAAA,EAAY,WAAW,cAAA,EACnC,QAAA,EAAA;AAAA,UAAA,SAAA,IAAa,CAAC,OAAA,oBACb,GAAA;AAAA,YAAC,QAAA;AAAA,YAAA;AAAA,cACC,IAAA,EAAK,QAAA;AAAA,cACL,OAAA,EAAS,WAAA;AAAA,cACT,WAAA,EAAU,aAAA;AAAA,cACV,SAAA,EAAW,gBAAA;AAAA,cACX,YAAA,EAAW,aAAA;AAAA,cAEX,QAAA,kBAAA,GAAA,CAAC,CAAA,EAAA,EAAE,SAAA,EAAW,QAAA,EAAU,eAAY,MAAA,EAAO;AAAA;AAAA,WAC7C;AAAA,UAED,0BACC,IAAA,CAAA,QAAA,EAAA,EACE,QAAA,EAAA;AAAA,4BAAA,GAAA,CAAC,eAAA,EAAA,EAAQ,aAAA,EAAY,MAAA,EAAO,IAAA,EAAY,CAAA;AAAA,gCACvC,MAAA,EAAA,EAAK,EAAA,EAAI,SAAA,EAAW,SAAA,EAAU,WAAU,QAAA,EAAA,SAAA,EAEzC;AAAA,WAAA,EACF,IAEA,SAAA,oBAAa,GAAA,CAAC,MAAA,EAAA,EAAK,aAAA,EAAY,QAAQ,QAAA,EAAA,SAAA,EAAU;AAAA,SAAA,EAErD;AAAA,OAAA,EAEJ,CAAA;AAAA,MACC,aAAA,wBACE,GAAA,EAAA,EAAE,EAAA,EAAI,UAAU,WAAA,EAAU,QAAA,EAAS,SAAA,EAAW,WAAA,EAC5C,QAAA,EAAA,aAAA,EACH;AAAA,KAAA,EAEJ,CAAA;AAAA,EAEJ;AACF,CAAA;AAEA,UAAA,CAAW,WAAA,GAAc,YAAA;AAGzB,IAAO,mBAAA,GAAQ","file":"chunk-TDNPACQD.js","sourcesContent":["\"use client\";\n\nimport { cva } from \"class-variance-authority\";\nimport { X } from \"lucide-react\";\nimport React, { useId, useMemo } from \"react\";\n\nimport Spinner from \"../spinner\";\n\nimport {\n cn,\n getValidationStatus,\n iconSizes,\n statusMessageVariants,\n} from \"../utils\";\nimport type { FloatInputProps } from \"./types\";\n\nconst floatInputVariants = cva(\n \"peer w-full placeholder:text-transparent rounded-md disabled:opacity-50 disabled:cursor-not-allowed read-only:bg-surface read-only:cursor-default outline-none text-text-primary transition-[border-color] duration-200 border border-border focus-visible:border-primary bg-background\",\n {\n variants: {\n status: {\n default: \"\",\n error: \"border-error focus-visible:border-error\",\n warning: \"border-warning focus-visible:border-warning\",\n info: \"border-info focus-visible:border-info\",\n success: \"border-success focus-visible:border-success\",\n },\n size: {\n xs: \"h-9 pt-3.5 px-2 text-xs\",\n sm: \"h-10 pt-4 px-3 text-sm\",\n md: \"h-12 pt-5 px-3 text-base\",\n lg: \"h-14 pt-5 px-4 text-lg\",\n },\n fullWidth: {\n true: \"w-full\",\n false: \"max-w-full\",\n },\n },\n defaultVariants: {\n status: \"default\",\n size: \"md\",\n fullWidth: true,\n },\n },\n);\n\nconst floatLabelVariants = cva(\n \"absolute pointer-events-none transition-[top,font-size,color] duration-200 text-text-secondary origin-left\",\n {\n variants: {\n size: {\n xs: \"left-2 text-xs top-2.5 peer-focus:top-1 peer-focus:text-[10px] peer-[:not(:placeholder-shown)]:top-1 peer-[:not(:placeholder-shown)]:text-[10px]\",\n sm: \"left-3 text-sm top-2.5 peer-focus:top-1.5 peer-focus:text-[10px] peer-[:not(:placeholder-shown)]:top-1.5 peer-[:not(:placeholder-shown)]:text-[10px]\",\n md: \"left-3 text-base top-3 peer-focus:top-2 peer-focus:text-xs peer-[:not(:placeholder-shown)]:top-2 peer-[:not(:placeholder-shown)]:text-xs\",\n lg: \"left-4 text-lg top-3.5 peer-focus:top-2.5 peer-focus:text-xs peer-[:not(:placeholder-shown)]:top-2.5 peer-[:not(:placeholder-shown)]:text-xs\",\n },\n status: {\n default: \"\",\n error: \"peer-focus:text-error\",\n warning: \"peer-focus:text-warning\",\n info: \"peer-focus:text-info\",\n success: \"peer-focus:text-success\",\n },\n hasLeftIcon: {\n true: \"\",\n false: \"\",\n },\n },\n compoundVariants: [\n {\n size: \"xs\",\n hasLeftIcon: true,\n className: \"left-8\",\n },\n {\n size: \"sm\",\n hasLeftIcon: true,\n className: \"left-10\",\n },\n {\n size: \"md\",\n hasLeftIcon: true,\n className: \"left-10\",\n },\n {\n size: \"lg\",\n hasLeftIcon: true,\n className: \"left-10\",\n },\n ],\n defaultVariants: {\n size: \"md\",\n status: \"default\",\n hasLeftIcon: false,\n },\n },\n);\n\nconst FloatInput = React.memo<FloatInputProps>(\n ({\n size = \"md\",\n label,\n error,\n warning,\n info,\n success,\n helperText,\n leftIcon,\n rightIcon,\n clearable = false,\n onClear,\n loading = false,\n fullWidth = true,\n className,\n classNames,\n value,\n onChange,\n ref,\n ...props\n }) => {\n const [internalValue, setInternalValue] = React.useState(props.defaultValue ?? '');\n const currentValue = value !== undefined ? value : internalValue;\n\n const uniqueId = useId();\n const inputId = props.id || `float-input-${uniqueId}`;\n const helperId = `float-input-helper-${uniqueId}`;\n const loadingId = `float-input-loading-${uniqueId}`;\n const labelId = `float-input-label-${uniqueId}`;\n\n const { status, message: helperMessage } = useMemo(\n () => getValidationStatus({ error, warning, info, success, helperText }),\n [error, warning, info, success, helperText],\n );\n\n const handleChange = React.useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n if (value === undefined) setInternalValue(e.target.value);\n onChange?.(e);\n },\n [value, onChange],\n );\n\n const handleClear = React.useCallback(() => {\n if (value === undefined) setInternalValue('');\n onChange?.({\n target: { value: \"\" },\n } as React.ChangeEvent<HTMLInputElement>);\n onClear?.();\n }, [value, onChange, onClear]);\n\n const showClear =\n clearable && currentValue && !props.disabled && !props.readOnly;\n const hasRightIcon = rightIcon || showClear || loading;\n\n // Memoize aria-describedby to avoid array recreation on every render\n const ariaDescribedBy = useMemo(() => {\n const parts: string[] = [];\n if (helperMessage) parts.push(helperId);\n if (loading) parts.push(loadingId);\n return parts.length > 0 ? parts.join(\" \") : undefined;\n }, [helperMessage, helperId, loading, loadingId]);\n\n // Memoize expensive className computations\n const rootClass = useMemo(\n () =>\n cn(\n \"float-input_root\",\n \"w-full flex flex-col relative\",\n !fullWidth && \"inline-block\",\n classNames?.root,\n ),\n [fullWidth, classNames?.root],\n );\n\n const wrapperClass = useMemo(\n () =>\n cn(\n \"float-input_wrapper\",\n \"relative w-full\",\n loading && \"opacity-50 cursor-not-allowed\",\n classNames?.wrapper,\n ),\n [loading, classNames?.wrapper],\n );\n\n const leftIconClass = useMemo(() => {\n const sizeClasses = {\n xs: \"left-2\",\n sm: \"left-3\",\n md: \"left-3\",\n lg: \"left-4\",\n };\n return cn(\n \"float-input_leftIcon\",\n \"absolute flex items-center h-full top-0 text-text-secondary\",\n sizeClasses[size],\n classNames?.leftIcon,\n );\n }, [size, classNames?.leftIcon]);\n\n const inputClass = useMemo(() => {\n const leftPadding = leftIcon\n ? {\n xs: \"pl-8\",\n sm: \"pl-10\",\n md: \"pl-10\",\n lg: \"pl-11\",\n }[size]\n : \"\";\n\n const rightPadding = hasRightIcon\n ? {\n xs: \"pr-8\",\n sm: \"pr-8\",\n md: \"pr-8\",\n lg: \"pr-10\",\n }[size]\n : \"\";\n\n return cn(\n \"float-input_input\",\n floatInputVariants({ status, size, fullWidth }),\n leftPadding,\n rightPadding,\n className,\n classNames?.input,\n );\n }, [\n status,\n size,\n fullWidth,\n leftIcon,\n hasRightIcon,\n className,\n classNames?.input,\n ]);\n\n const labelClass = useMemo(\n () =>\n cn(\n \"float-input_label\",\n floatLabelVariants({ size, status, hasLeftIcon: !!leftIcon }),\n classNames?.label,\n ),\n [size, status, leftIcon, classNames?.label],\n );\n\n const rightIconClass = useMemo(() => {\n const sizeClasses = {\n xs: \"right-2\",\n sm: \"right-3\",\n md: \"right-3\",\n lg: \"right-4\",\n };\n return cn(\n \"float-input_rightIcon\",\n \"absolute flex gap-2 items-center h-full top-0 text-text-secondary\",\n sizeClasses[size],\n classNames?.rightIcon,\n );\n }, [size, classNames?.rightIcon]);\n\n const clearButtonClass = useMemo(\n () =>\n cn(\n \"float-input_clearButton\",\n \"flex items-center h-full top-0 text-text-secondary hover:text-text-primary transition-colors\",\n classNames?.clearButton,\n ),\n [classNames?.clearButton],\n );\n\n const helperClass = useMemo(\n () =>\n cn(\n \"float-input_helper\",\n statusMessageVariants({ status }),\n \"mt-0.5\",\n status === \"error\" ? classNames?.error : classNames?.helper,\n ),\n [status, classNames?.error, classNames?.helper],\n );\n\n const iconSize = iconSizes[size];\n\n return (\n <div data-slot=\"root\" className={rootClass}>\n <div data-slot=\"wrapper\" className={wrapperClass}>\n {leftIcon && (\n <div\n data-slot=\"leftIcon\"\n className={leftIconClass}\n aria-hidden=\"true\"\n >\n {leftIcon}\n </div>\n )}\n <input\n ref={ref}\n id={inputId}\n data-slot=\"input\"\n className={inputClass}\n value={currentValue}\n onChange={handleChange}\n placeholder=\" \"\n aria-invalid={status === \"error\"}\n aria-busy={loading}\n aria-describedby={ariaDescribedBy}\n aria-labelledby={labelId}\n {...props}\n />\n <label\n id={labelId}\n htmlFor={inputId}\n data-slot=\"label\"\n className={labelClass}\n >\n {label}\n {props.required && <span className=\"text-error ml-0.5\">*</span>}\n </label>\n {(hasRightIcon || rightIcon) && (\n <div data-slot=\"rightIcon\" className={rightIconClass}>\n {showClear && !loading && (\n <button\n type=\"button\"\n onClick={handleClear}\n data-slot=\"clearButton\"\n className={clearButtonClass}\n aria-label=\"Clear input\"\n >\n <X className={iconSize} aria-hidden=\"true\" />\n </button>\n )}\n {loading ? (\n <>\n <Spinner aria-hidden=\"true\" size={size} />\n <span id={loadingId} className=\"sr-only\">\n Loading\n </span>\n </>\n ) : (\n rightIcon && <span aria-hidden=\"true\">{rightIcon}</span>\n )}\n </div>\n )}\n </div>\n {helperMessage && (\n <p id={helperId} data-slot=\"helper\" className={helperClass}>\n {helperMessage}\n </p>\n )}\n </div>\n );\n },\n);\n\nFloatInput.displayName = \"FloatInput\";\n\nexport type * from \"./types\";\nexport default FloatInput;\n"]}
@@ -1,7 +1,8 @@
1
- import { cn } from './chunk-NGYLRX6F.js';
1
+ import { useControllable } from './chunk-PQOIW5CM.js';
2
+ import { cn } from './chunk-RAS6HUEI.js';
2
3
  import { cva } from 'class-variance-authority';
3
- import { Star } from 'lucide-react';
4
4
  import React, { useState, useId, useCallback } from 'react';
5
+ import { Star } from 'lucide-react';
5
6
  import { jsx, jsxs } from 'react/jsx-runtime';
6
7
 
7
8
  var ratingVariants = cva("inline-flex items-center gap-1", {
@@ -86,21 +87,17 @@ var Rating = React.memo(
86
87
  classNames,
87
88
  "aria-label": ariaLabel
88
89
  }) => {
89
- const [internalValue, setInternalValue] = useState(defaultValue);
90
+ const [currentValue, setCurrentValue] = useControllable({ value: controlledValue, defaultValue, onChange });
90
91
  const [hoverValue, setHoverValue] = useState(null);
91
92
  const uniqueId = useId();
92
- const value = controlledValue !== void 0 ? controlledValue : internalValue;
93
- const displayValue = hoverValue !== null ? hoverValue : value;
93
+ const displayValue = hoverValue !== null ? hoverValue : currentValue ?? 0;
94
94
  const isInteractive = !disabled && !readOnly;
95
95
  const updateValue = useCallback(
96
96
  (newValue) => {
97
97
  if (!isInteractive) return;
98
- if (controlledValue === void 0) {
99
- setInternalValue(newValue);
100
- }
101
- onChange?.(newValue);
98
+ setCurrentValue(newValue);
102
99
  },
103
- [isInteractive, controlledValue, onChange]
100
+ [isInteractive, setCurrentValue]
104
101
  );
105
102
  const handleStarClick = useCallback(
106
103
  (index, isHalf) => {
@@ -125,17 +122,17 @@ var Rating = React.memo(
125
122
  (e) => {
126
123
  if (!isInteractive) return;
127
124
  const step = allowHalf ? 0.5 : 1;
128
- let newValue = value;
125
+ let newValue = currentValue ?? 0;
129
126
  switch (e.key) {
130
127
  case "ArrowRight":
131
128
  case "ArrowUp":
132
129
  e.preventDefault();
133
- newValue = Math.min(value + step, count);
130
+ newValue = Math.min((currentValue ?? 0) + step, count);
134
131
  break;
135
132
  case "ArrowLeft":
136
133
  case "ArrowDown":
137
134
  e.preventDefault();
138
- newValue = Math.max(value - step, 0);
135
+ newValue = Math.max((currentValue ?? 0) - step, 0);
139
136
  break;
140
137
  case "Home":
141
138
  e.preventDefault();
@@ -150,31 +147,20 @@ var Rating = React.memo(
150
147
  }
151
148
  updateValue(newValue);
152
149
  },
153
- [isInteractive, value, count, allowHalf, updateValue]
150
+ [isInteractive, currentValue, count, allowHalf, updateValue]
154
151
  );
155
- const getStarFill = (index) => {
152
+ const getStarFill = useCallback((index) => {
156
153
  const fillValue = displayValue - index;
157
154
  if (fillValue >= 1) return "full";
158
155
  if (fillValue > 0 && fillValue < 1) return "half";
159
156
  return "empty";
160
- };
161
- const getValueText = (val) => {
162
- if (val === 0) return "No rating";
163
- if (val === 1) return "1 star";
164
- return `${val} stars`;
165
- };
166
- return /* @__PURE__ */ jsx("div", { className: cn(ratingVariants({ size }), "rating_root", classNames?.root, className), children: /* @__PURE__ */ jsx(
157
+ }, [displayValue]);
158
+ return /* @__PURE__ */ jsx("div", { "data-slot": "root", className: cn(ratingVariants({ size }), "rating_root", classNames?.root, className), children: /* @__PURE__ */ jsx(
167
159
  "div",
168
160
  {
169
161
  id: `rating-${uniqueId}`,
170
- role: "slider",
162
+ role: "radiogroup",
171
163
  "aria-label": ariaLabel || "Rating",
172
- "aria-valuenow": value,
173
- "aria-valuemin": 0,
174
- "aria-valuemax": count,
175
- "aria-valuetext": getValueText(value),
176
- "aria-disabled": disabled || void 0,
177
- "aria-readonly": readOnly || void 0,
178
164
  tabIndex: isInteractive ? 0 : -1,
179
165
  onKeyDown: handleKeyDown,
180
166
  onMouseLeave: handleMouseLeave,
@@ -182,14 +168,19 @@ var Rating = React.memo(
182
168
  "inline-flex items-center gap-0.5 outline-none",
183
169
  "rating_label",
184
170
  classNames?.label,
185
- isInteractive && "focus-visible:ring-2 focus-visible:ring-primary focus-visible:ring-offset-2 rounded"
171
+ isInteractive && "focus-visible:ring-2 focus-visible:ring-primary focus-visible:ring-offset-2 focus-visible:ring-offset-background rounded"
186
172
  ),
187
173
  children: Array.from({ length: count }, (_, index) => {
188
174
  const fillType = getStarFill(index);
189
175
  const isHovered = hoverValue !== null && index < Math.ceil(hoverValue);
176
+ const starValue = index + 1;
177
+ const isChecked = fillType !== "empty";
190
178
  return /* @__PURE__ */ jsxs(
191
179
  "div",
192
180
  {
181
+ role: "radio",
182
+ "aria-checked": isChecked,
183
+ "aria-label": `${starValue} ${starValue === 1 ? "star" : "stars"}`,
193
184
  className: cn(
194
185
  "relative inline-flex",
195
186
  isInteractive && "cursor-pointer",
@@ -218,7 +209,8 @@ var Rating = React.memo(
218
209
  /* @__PURE__ */ jsx(
219
210
  Star,
220
211
  {
221
- size: starSizes[size],
212
+ width: starSizes[size],
213
+ height: starSizes[size],
222
214
  className: cn(
223
215
  getStarClasses(color, variant, false, false),
224
216
  "transition-colors",
@@ -231,7 +223,8 @@ var Rating = React.memo(
231
223
  fillType !== "empty" && /* @__PURE__ */ jsx(
232
224
  Star,
233
225
  {
234
- size: starSizes[size],
226
+ width: starSizes[size],
227
+ height: starSizes[size],
235
228
  className: cn(
236
229
  "absolute top-0 left-0 transition-colors",
237
230
  getStarClasses(color, variant, true, isHovered),
@@ -257,5 +250,5 @@ Rating.displayName = "Rating";
257
250
  var rating_default = Rating;
258
251
 
259
252
  export { rating_default };
260
- //# sourceMappingURL=chunk-7UCNBMCV.js.map
261
- //# sourceMappingURL=chunk-7UCNBMCV.js.map
253
+ //# sourceMappingURL=chunk-TQEMGWZ2.js.map
254
+ //# sourceMappingURL=chunk-TQEMGWZ2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/rating/index.tsx"],"names":[],"mappings":"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","file":"chunk-TQEMGWZ2.js","sourcesContent":["'use client'\n\nimport { cva } from 'class-variance-authority'\nimport React, { useState, useCallback, useId } from 'react'\nimport { useControllable } from '../hooks/useControllable'\n\nimport { Star } from 'lucide-react'\n\nimport { cn } from '../utils'\nimport type { RatingProps } from './types'\n\nconst ratingVariants = cva('inline-flex items-center gap-1', {\n variants: {\n size: {\n xs: 'text-xs',\n sm: 'text-sm',\n md: 'text-base',\n lg: 'text-lg',\n },\n },\n defaultVariants: {\n size: 'md',\n },\n})\n\nconst starSizes = {\n xs: 12,\n sm: 16,\n md: 20,\n lg: 24,\n}\n\n/**\n * Color mappings for Tailwind JIT compatibility\n */\nconst fillColorClasses: Record<string, string> = {\n default: 'fill-border',\n primary: 'fill-primary',\n secondary: 'fill-secondary',\n accent: 'fill-accent',\n success: 'fill-success',\n error: 'fill-error',\n warning: 'fill-warning',\n info: 'fill-info',\n}\n\nconst strokeColorClasses: Record<string, string> = {\n default: 'stroke-border',\n primary: 'stroke-primary',\n secondary: 'stroke-secondary',\n accent: 'stroke-accent',\n success: 'stroke-success',\n error: 'stroke-error',\n warning: 'stroke-warning',\n info: 'stroke-info',\n}\n\nconst getStarClasses = (\n color: string,\n variant: string,\n isFilled: boolean,\n isHovered: boolean,\n) => {\n const state = isFilled || isHovered ? 'filled' : 'empty'\n const strokeClass = strokeColorClasses[color] || strokeColorClasses.default\n const fillClass = fillColorClasses[color] || fillColorClasses.default\n\n if (state === 'empty') {\n if (variant === 'solid') {\n if (color === 'default') return 'fill-transparent stroke-border'\n return `fill-transparent ${strokeClass} opacity-20`\n }\n if (variant === 'soft') {\n if (color === 'default') return 'fill-transparent stroke-border/50'\n return `fill-transparent ${strokeClass} opacity-20`\n }\n if (color === 'default') return 'fill-transparent stroke-border'\n return `fill-transparent ${strokeClass} opacity-20`\n }\n\n // filled state\n if (variant === 'solid') {\n if (color === 'default') return 'fill-border stroke-border'\n return `${fillClass} ${strokeClass}`\n }\n if (variant === 'soft') {\n if (color === 'default') return 'fill-border/50 stroke-border'\n return `${fillClass} opacity-20 ${strokeClass}`\n }\n if (color === 'default') return 'fill-border stroke-border'\n return `${fillClass} ${strokeClass}`\n}\n\nconst Rating = React.memo<RatingProps>(\n ({\n value: controlledValue,\n defaultValue = 0,\n count = 5,\n allowHalf = false,\n color = 'warning',\n size = 'md',\n variant = 'solid',\n onChange,\n disabled = false,\n readOnly = false,\n className,\n classNames,\n 'aria-label': ariaLabel,\n }) => {\n const [currentValue, setCurrentValue] = useControllable({ value: controlledValue, defaultValue, onChange })\n const [hoverValue, setHoverValue] = useState<number | null>(null)\n const uniqueId = useId()\n\n const displayValue = hoverValue !== null ? hoverValue : (currentValue ?? 0)\n const isInteractive = !disabled && !readOnly\n\n const updateValue = useCallback(\n (newValue: number) => {\n if (!isInteractive) return\n setCurrentValue(newValue)\n },\n [isInteractive, setCurrentValue],\n )\n\n const handleStarClick = useCallback(\n (index: number, isHalf: boolean) => {\n if (!isInteractive) return\n const newValue = isHalf ? index + 0.5 : index + 1\n updateValue(newValue)\n },\n [isInteractive, updateValue],\n )\n\n const handleStarHover = useCallback(\n (index: number, isHalf: boolean) => {\n if (!isInteractive) return\n const newValue = isHalf ? index + 0.5 : index + 1\n setHoverValue(newValue)\n },\n [isInteractive],\n )\n\n const handleMouseLeave = useCallback(() => {\n setHoverValue(null)\n }, [])\n\n const handleKeyDown = useCallback(\n (e: React.KeyboardEvent) => {\n if (!isInteractive) return\n\n const step = allowHalf ? 0.5 : 1\n let newValue = currentValue ?? 0\n\n switch (e.key) {\n case 'ArrowRight':\n case 'ArrowUp':\n e.preventDefault()\n newValue = Math.min((currentValue ?? 0) + step, count)\n break\n case 'ArrowLeft':\n case 'ArrowDown':\n e.preventDefault()\n newValue = Math.max((currentValue ?? 0) - step, 0)\n break\n case 'Home':\n e.preventDefault()\n newValue = 0\n break\n case 'End':\n e.preventDefault()\n newValue = count\n break\n default:\n return\n }\n\n updateValue(newValue)\n },\n [isInteractive, currentValue, count, allowHalf, updateValue],\n )\n\n const getStarFill = useCallback((index: number) => {\n const fillValue = displayValue - index\n if (fillValue >= 1) return 'full'\n if (fillValue > 0 && fillValue < 1) return 'half'\n return 'empty'\n }, [displayValue])\n\n return (\n <div data-slot=\"root\" className={cn(ratingVariants({ size }), 'rating_root', classNames?.root, className)}>\n <div\n id={`rating-${uniqueId}`}\n role=\"radiogroup\"\n aria-label={ariaLabel || 'Rating'}\n tabIndex={isInteractive ? 0 : -1}\n onKeyDown={handleKeyDown}\n onMouseLeave={handleMouseLeave}\n className={cn(\n 'inline-flex items-center gap-0.5 outline-none',\n 'rating_label',\n classNames?.label,\n isInteractive && 'focus-visible:ring-2 focus-visible:ring-primary focus-visible:ring-offset-2 focus-visible:ring-offset-background rounded',\n )}\n >\n {Array.from({ length: count }, (_, index) => {\n const fillType = getStarFill(index)\n const isHovered =\n hoverValue !== null && index < Math.ceil(hoverValue)\n\n const starValue = index + 1\n const isChecked = fillType !== 'empty'\n\n return (\n <div\n key={index}\n role=\"radio\"\n aria-checked={isChecked}\n aria-label={`${starValue} ${starValue === 1 ? 'star' : 'stars'}`}\n className={cn(\n 'relative inline-flex',\n isInteractive && 'cursor-pointer',\n disabled && 'opacity-50 cursor-not-allowed',\n )}\n >\n {/* Left half */}\n {allowHalf && (\n <div\n className=\"absolute inset-0 w-1/2 z-10\"\n onClick={() => handleStarClick(index, true)}\n onMouseEnter={() => handleStarHover(index, true)}\n />\n )}\n {/* Right half or full star */}\n <div\n className={cn(\n 'absolute inset-0 z-10',\n allowHalf ? 'left-1/2' : 'left-0',\n )}\n onClick={() => handleStarClick(index, false)}\n onMouseEnter={() => handleStarHover(index, false)}\n />\n\n {/* Background star (empty) */}\n <Star\n width={starSizes[size]}\n height={starSizes[size]}\n className={cn(\n getStarClasses(color, variant, false, false),\n 'transition-colors',\n 'rating_star',\n classNames?.star,\n )}\n aria-hidden=\"true\"\n />\n\n {/* Foreground star (filled) */}\n {fillType !== 'empty' && (\n <Star\n width={starSizes[size]}\n height={starSizes[size]}\n className={cn(\n 'absolute top-0 left-0 transition-colors',\n getStarClasses(color, variant, true, isHovered),\n 'rating_starFilled',\n classNames?.starFilled,\n )}\n style={{\n clipPath:\n fillType === 'half'\n ? 'polygon(0 0, 50% 0, 50% 100%, 0 100%)'\n : 'none',\n }}\n aria-hidden=\"true\"\n />\n )}\n </div>\n )\n })}\n </div>\n </div>\n )\n },\n)\n\nRating.displayName = 'Rating'\n\nexport type * from './types'\nexport default Rating\n"]}