@customafk/lunas-ui 0.0.21 → 0.0.22

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 (812) hide show
  1. package/dist/add-new-CVQQRkB9.js +2 -0
  2. package/dist/add-new-CVQQRkB9.js.map +1 -0
  3. package/dist/{add-new-BTpI7Ph7.cjs → add-new-CmzfSaTJ.cjs} +2 -2
  4. package/dist/add-new-CmzfSaTJ.cjs.map +1 -0
  5. package/dist/alert-dialog-CNHyP_A9.js +2 -0
  6. package/dist/alert-dialog-CNHyP_A9.js.map +1 -0
  7. package/dist/alert-dialog-D-oR0YW3.cjs +2 -0
  8. package/dist/alert-dialog-D-oR0YW3.cjs.map +1 -0
  9. package/dist/{badge-DHRQ-uwY.cjs → badge-D4NxkKeN.cjs} +1 -1
  10. package/dist/badge-D4NxkKeN.cjs.map +1 -0
  11. package/dist/{badge-bLqn3EB9.js → badge-DzKUgC8v.js} +1 -1
  12. package/dist/badge-DzKUgC8v.js.map +1 -0
  13. package/dist/button-BEwm_iVK.d.cts +25 -0
  14. package/dist/button-BSGNpclh.cjs +2 -0
  15. package/dist/button-BSGNpclh.cjs.map +1 -0
  16. package/dist/{button-CFhTSUSV.d.ts → button-CSKaUiLi.d.ts} +7 -5
  17. package/dist/button-CnMfXTBU.js +2 -0
  18. package/dist/button-CnMfXTBU.js.map +1 -0
  19. package/dist/{calendar-Cck0PPMB.cjs → calendar-B8IKzrdN.cjs} +2 -2
  20. package/dist/calendar-B8IKzrdN.cjs.map +1 -0
  21. package/dist/{calendar-BG-jrCZc.js → calendar-CbuOOMpK.js} +2 -2
  22. package/dist/calendar-CbuOOMpK.js.map +1 -0
  23. package/dist/card-CgQjctUE.js +2 -0
  24. package/dist/card-CgQjctUE.js.map +1 -0
  25. package/dist/card-DYVCumPc.cjs +2 -0
  26. package/dist/card-DYVCumPc.cjs.map +1 -0
  27. package/dist/cards/simple-card.cjs +1 -1
  28. package/dist/cards/simple-card.cjs.map +1 -1
  29. package/dist/cards/simple-card.js +1 -1
  30. package/dist/cards/simple-card.js.map +1 -1
  31. package/dist/command-CoB5R5FI.cjs +2 -0
  32. package/dist/command-CoB5R5FI.cjs.map +1 -0
  33. package/dist/{command-DK3Z1Vcb.d.ts → command-DCgWctIo.d.cts} +12 -13
  34. package/dist/{command-ChE1SC-Q.d.cts → command-DQMBhKsg.d.ts} +12 -13
  35. package/dist/command-TFZwJmux.js +2 -0
  36. package/dist/command-TFZwJmux.js.map +1 -0
  37. package/dist/data-display/country.cjs +1 -1
  38. package/dist/data-display/country.cjs.map +1 -1
  39. package/dist/data-display/country.js +1 -1
  40. package/dist/data-display/country.js.map +1 -1
  41. package/dist/data-display/data-list.cjs +1 -1
  42. package/dist/data-display/data-list.cjs.map +1 -1
  43. package/dist/data-display/data-list.d.cts +0 -2
  44. package/dist/data-display/data-list.d.ts +0 -2
  45. package/dist/data-display/data-list.js +1 -1
  46. package/dist/data-display/data-list.js.map +1 -1
  47. package/dist/data-display/date-tooltip.cjs +1 -1
  48. package/dist/data-display/date-tooltip.cjs.map +1 -1
  49. package/dist/data-display/date-tooltip.js +1 -1
  50. package/dist/data-display/date-tooltip.js.map +1 -1
  51. package/dist/data-display/date.cjs +1 -1
  52. package/dist/data-display/date.d.cts +1 -1
  53. package/dist/data-display/date.d.ts +1 -1
  54. package/dist/data-display/date.js +1 -1
  55. package/dist/data-display/empty.cjs +1 -1
  56. package/dist/data-display/empty.cjs.map +1 -1
  57. package/dist/data-display/empty.d.cts +2 -2
  58. package/dist/data-display/empty.d.ts +2 -2
  59. package/dist/data-display/empty.js +1 -1
  60. package/dist/data-display/empty.js.map +1 -1
  61. package/dist/data-display/name.cjs +1 -1
  62. package/dist/data-display/name.cjs.map +1 -1
  63. package/dist/data-display/name.js +1 -1
  64. package/dist/data-display/name.js.map +1 -1
  65. package/dist/data-display/phone-number.cjs +1 -1
  66. package/dist/data-display/phone-number.cjs.map +1 -1
  67. package/dist/data-display/phone-number.js +1 -1
  68. package/dist/data-display/phone-number.js.map +1 -1
  69. package/dist/data-display/role-badge.cjs +1 -1
  70. package/dist/data-display/role-badge.cjs.map +1 -1
  71. package/dist/data-display/role-badge.js +1 -1
  72. package/dist/data-display/role-badge.js.map +1 -1
  73. package/dist/data-display/statistic.cjs +1 -1
  74. package/dist/data-display/statistic.cjs.map +1 -1
  75. package/dist/data-display/statistic.d.cts +4 -4
  76. package/dist/data-display/statistic.d.ts +4 -4
  77. package/dist/data-display/statistic.js +1 -1
  78. package/dist/data-display/statistic.js.map +1 -1
  79. package/dist/{date-B1g1OMYc.js → date-BMq_DNsv.js} +1 -1
  80. package/dist/date-BMq_DNsv.js.map +1 -0
  81. package/dist/{date-Cw6Jf7k6.cjs → date-nd8WkPlx.cjs} +1 -1
  82. package/dist/date-nd8WkPlx.cjs.map +1 -0
  83. package/dist/{dialog-DoFMLK7H.d.cts → dialog-B1TYYUwQ.d.cts} +12 -13
  84. package/dist/{dialog-BfAIULbh.d.ts → dialog-BFjbRwaD.d.ts} +12 -13
  85. package/dist/dialog-CSDDiHKO.js +2 -0
  86. package/dist/dialog-CSDDiHKO.js.map +1 -0
  87. package/dist/dialog-_Cgij9NP.cjs +2 -0
  88. package/dist/dialog-_Cgij9NP.cjs.map +1 -0
  89. package/dist/dialogs/confirm-dialog.cjs +1 -1
  90. package/dist/dialogs/confirm-dialog.cjs.map +1 -1
  91. package/dist/dialogs/confirm-dialog.js +1 -1
  92. package/dist/dialogs/confirm-dialog.js.map +1 -1
  93. package/dist/dialogs/detail-dialog/component/sidebar.cjs +1 -1
  94. package/dist/dialogs/detail-dialog/component/sidebar.d.cts +29 -29
  95. package/dist/dialogs/detail-dialog/component/sidebar.d.ts +29 -29
  96. package/dist/dialogs/detail-dialog/component/sidebar.js +1 -1
  97. package/dist/dialogs/detail-dialog/index.cjs +1 -1
  98. package/dist/dialogs/detail-dialog/index.cjs.map +1 -1
  99. package/dist/dialogs/detail-dialog/index.js +1 -1
  100. package/dist/dialogs/detail-dialog/index.js.map +1 -1
  101. package/dist/dialogs/error-dialog.cjs +1 -1
  102. package/dist/dialogs/error-dialog.js +1 -1
  103. package/dist/dialogs/form-dialog.cjs +1 -1
  104. package/dist/dialogs/form-dialog.cjs.map +1 -1
  105. package/dist/dialogs/form-dialog.d.cts +3 -3
  106. package/dist/dialogs/form-dialog.d.ts +3 -3
  107. package/dist/dialogs/form-dialog.js +1 -1
  108. package/dist/dialogs/form-dialog.js.map +1 -1
  109. package/dist/dialogs/loading-dialog.cjs +1 -1
  110. package/dist/dialogs/loading-dialog.cjs.map +1 -1
  111. package/dist/dialogs/loading-dialog.js +1 -1
  112. package/dist/dialogs/loading-dialog.js.map +1 -1
  113. package/dist/dropdown-menu-BnfaOPEM.cjs +2 -0
  114. package/dist/dropdown-menu-BnfaOPEM.cjs.map +1 -0
  115. package/dist/dropdown-menu-D5uG4HZA.js +2 -0
  116. package/dist/dropdown-menu-D5uG4HZA.js.map +1 -0
  117. package/dist/{error-dialog-OeWIgIvF.cjs → error-dialog-D5R5le-W.cjs} +2 -2
  118. package/dist/error-dialog-D5R5le-W.cjs.map +1 -0
  119. package/dist/{error-dialog-Dg_OHJlH.js → error-dialog-Q99thrSD.js} +2 -2
  120. package/dist/error-dialog-Q99thrSD.js.map +1 -0
  121. package/dist/{flex-B5MQmxX8.cjs → flex-CNA_SId-.cjs} +1 -1
  122. package/dist/flex-CNA_SId-.cjs.map +1 -0
  123. package/dist/{flex-CBAzUoXK.js → flex-ILvQrYMJ.js} +1 -1
  124. package/dist/flex-ILvQrYMJ.js.map +1 -0
  125. package/dist/{form-BbU1TIro.cjs → form-CHs85hm6.cjs} +2 -2
  126. package/dist/form-CHs85hm6.cjs.map +1 -0
  127. package/dist/{form-BMnG2xLt.js → form-tabDlutX.js} +2 -2
  128. package/dist/form-tabDlutX.js.map +1 -0
  129. package/dist/{form-wrapper-wHzrskjb.js → form-wrapper-C2xlvWx0.js} +2 -2
  130. package/dist/form-wrapper-C2xlvWx0.js.map +1 -0
  131. package/dist/{form-wrapper-DeSGl64P.cjs → form-wrapper-CY-stRaQ.cjs} +2 -2
  132. package/dist/form-wrapper-CY-stRaQ.cjs.map +1 -0
  133. package/dist/forms/combobox-field.cjs +1 -1
  134. package/dist/forms/combobox-field.cjs.map +1 -1
  135. package/dist/forms/combobox-field.d.cts +2 -2
  136. package/dist/forms/combobox-field.d.ts +2 -2
  137. package/dist/forms/combobox-field.js +1 -1
  138. package/dist/forms/combobox-field.js.map +1 -1
  139. package/dist/forms/date-field.cjs +1 -1
  140. package/dist/forms/date-field.cjs.map +1 -1
  141. package/dist/forms/date-field.d.cts +2 -2
  142. package/dist/forms/date-field.d.ts +2 -2
  143. package/dist/forms/date-field.js +1 -1
  144. package/dist/forms/date-field.js.map +1 -1
  145. package/dist/forms/form-wrapper.cjs +1 -1
  146. package/dist/forms/form-wrapper.d.cts +3 -3
  147. package/dist/forms/form-wrapper.d.ts +3 -3
  148. package/dist/forms/form-wrapper.js +1 -1
  149. package/dist/forms/multi-select-field.cjs +1 -1
  150. package/dist/forms/multi-select-field.cjs.map +1 -1
  151. package/dist/forms/multi-select-field.d.cts +2 -2
  152. package/dist/forms/multi-select-field.d.ts +2 -2
  153. package/dist/forms/multi-select-field.js +1 -1
  154. package/dist/forms/multi-select-field.js.map +1 -1
  155. package/dist/forms/number-field.cjs +1 -1
  156. package/dist/forms/number-field.cjs.map +1 -1
  157. package/dist/forms/number-field.d.ts +2 -2
  158. package/dist/forms/number-field.js +1 -1
  159. package/dist/forms/number-field.js.map +1 -1
  160. package/dist/forms/password-field.cjs +1 -1
  161. package/dist/forms/password-field.cjs.map +1 -1
  162. package/dist/forms/password-field.d.cts +2 -2
  163. package/dist/forms/password-field.d.ts +2 -2
  164. package/dist/forms/password-field.js +1 -1
  165. package/dist/forms/password-field.js.map +1 -1
  166. package/dist/forms/select-field.cjs +1 -1
  167. package/dist/forms/select-field.cjs.map +1 -1
  168. package/dist/forms/select-field.d.cts +2 -2
  169. package/dist/forms/select-field.d.ts +2 -2
  170. package/dist/forms/select-field.js +1 -1
  171. package/dist/forms/select-field.js.map +1 -1
  172. package/dist/forms/switch-field.cjs +1 -1
  173. package/dist/forms/switch-field.cjs.map +1 -1
  174. package/dist/forms/switch-field.d.cts +2 -2
  175. package/dist/forms/switch-field.js +1 -1
  176. package/dist/forms/switch-field.js.map +1 -1
  177. package/dist/forms/text-field.cjs +1 -1
  178. package/dist/forms/text-field.cjs.map +1 -1
  179. package/dist/forms/text-field.d.cts +2 -2
  180. package/dist/forms/text-field.d.ts +2 -2
  181. package/dist/forms/text-field.js +1 -1
  182. package/dist/forms/text-field.js.map +1 -1
  183. package/dist/forms/textarea-field.cjs +1 -1
  184. package/dist/forms/textarea-field.cjs.map +1 -1
  185. package/dist/forms/textarea-field.d.cts +2 -2
  186. package/dist/forms/textarea-field.js +1 -1
  187. package/dist/forms/textarea-field.js.map +1 -1
  188. package/dist/input--6vqz8UI.js +2 -0
  189. package/dist/input--6vqz8UI.js.map +1 -0
  190. package/dist/{input-B0fJo2WZ.d.cts → input-B-Gq-nr8.d.cts} +4 -4
  191. package/dist/{input-CsU6VSlk.d.ts → input-EM59LdpP.d.ts} +4 -4
  192. package/dist/input-VZiryzkl.cjs +2 -0
  193. package/dist/input-VZiryzkl.cjs.map +1 -0
  194. package/dist/label-B_2ZQn0X.cjs +2 -0
  195. package/dist/label-B_2ZQn0X.cjs.map +1 -0
  196. package/dist/label-D1XmKlc3.js +2 -0
  197. package/dist/label-D1XmKlc3.js.map +1 -0
  198. package/dist/layouts/flex.cjs +1 -1
  199. package/dist/layouts/flex.d.cts +2 -2
  200. package/dist/layouts/flex.d.ts +2 -2
  201. package/dist/layouts/flex.js +1 -1
  202. package/dist/layouts/main/index.cjs +1 -1
  203. package/dist/layouts/main/index.cjs.map +1 -1
  204. package/dist/layouts/main/index.d.cts +4 -4
  205. package/dist/layouts/main/index.d.ts +4 -4
  206. package/dist/layouts/main/index.js +1 -1
  207. package/dist/layouts/main/index.js.map +1 -1
  208. package/dist/multi-select-Cjvm4tK5.cjs +2 -0
  209. package/dist/multi-select-Cjvm4tK5.cjs.map +1 -0
  210. package/dist/multi-select-D0bZVOnm.js +2 -0
  211. package/dist/multi-select-D0bZVOnm.js.map +1 -0
  212. package/dist/paragraph-B4cQhLhW.js +2 -0
  213. package/dist/paragraph-B4cQhLhW.js.map +1 -0
  214. package/dist/paragraph-DcRBcRhQ.cjs +2 -0
  215. package/dist/paragraph-DcRBcRhQ.cjs.map +1 -0
  216. package/dist/popover-CTFp7ZXi.js +2 -0
  217. package/dist/popover-CTFp7ZXi.js.map +1 -0
  218. package/dist/popover-DCcPvdz2.cjs +2 -0
  219. package/dist/popover-DCcPvdz2.cjs.map +1 -0
  220. package/dist/progress-DLxh7x1P.cjs +2 -0
  221. package/dist/progress-DLxh7x1P.cjs.map +1 -0
  222. package/dist/progress-DWrtxJv0.js +2 -0
  223. package/dist/progress-DWrtxJv0.js.map +1 -0
  224. package/dist/refresh-CYCzbKVl.js +2 -0
  225. package/dist/refresh-CYCzbKVl.js.map +1 -0
  226. package/dist/{refresh-H87p0PFk.cjs → refresh-DMj_wur3.cjs} +2 -2
  227. package/dist/refresh-DMj_wur3.cjs.map +1 -0
  228. package/dist/scroll-area-C0KQbcG0.js.map +1 -1
  229. package/dist/scroll-area-CBq8XL4c.cjs.map +1 -1
  230. package/dist/{search-input-BUIwdK4e.js → search-input-DqcwkgsY.js} +2 -2
  231. package/dist/search-input-DqcwkgsY.js.map +1 -0
  232. package/dist/{search-input-DXh-cAVU.cjs → search-input-yweS9EMM.cjs} +2 -2
  233. package/dist/search-input-yweS9EMM.cjs.map +1 -0
  234. package/dist/select-BHjk6yT3.cjs +2 -0
  235. package/dist/select-BHjk6yT3.cjs.map +1 -0
  236. package/dist/select-C6N3CXuY.js +2 -0
  237. package/dist/select-C6N3CXuY.js.map +1 -0
  238. package/dist/{separator-DgyR24FB.d.ts → separator-BnnbFnrB.d.ts} +3 -4
  239. package/dist/separator-Cigaqna1.cjs +2 -0
  240. package/dist/separator-Cigaqna1.cjs.map +1 -0
  241. package/dist/separator-aLdI4FQe.js +2 -0
  242. package/dist/separator-aLdI4FQe.js.map +1 -0
  243. package/dist/{separator-5OitSlUj.d.cts → separator-mZ8r56s2.d.cts} +3 -4
  244. package/dist/sheet-CX3PajAc.cjs +2 -0
  245. package/dist/sheet-CX3PajAc.cjs.map +1 -0
  246. package/dist/sheet-DqPtcv9H.js +2 -0
  247. package/dist/sheet-DqPtcv9H.js.map +1 -0
  248. package/dist/sidebar-BKNai9nJ.cjs +2 -0
  249. package/dist/sidebar-BKNai9nJ.cjs.map +1 -0
  250. package/dist/sidebar-BR_UWLC5.js +2 -0
  251. package/dist/sidebar-BR_UWLC5.js.map +1 -0
  252. package/dist/sidebar-C2FH-tzm.cjs +2 -0
  253. package/dist/sidebar-C2FH-tzm.cjs.map +1 -0
  254. package/dist/sidebar-DphZ29-4.js +2 -0
  255. package/dist/sidebar-DphZ29-4.js.map +1 -0
  256. package/dist/skeleton-C-9PuX3p.cjs +2 -0
  257. package/dist/skeleton-C-9PuX3p.cjs.map +1 -0
  258. package/dist/skeleton-sZeupFu_.js +2 -0
  259. package/dist/skeleton-sZeupFu_.js.map +1 -0
  260. package/dist/styles/base.cjs +0 -0
  261. package/dist/styles/base.css +32 -0
  262. package/dist/styles/base.css.map +1 -0
  263. package/dist/styles/base.js +1 -0
  264. package/dist/styles/loader.cjs +0 -0
  265. package/dist/styles/loader.css +116 -0
  266. package/dist/styles/loader.css.map +1 -0
  267. package/dist/styles/loader.js +1 -0
  268. package/dist/styles/theme.cjs +0 -0
  269. package/dist/styles/theme.css +106 -0
  270. package/dist/styles/theme.css.map +1 -0
  271. package/dist/styles/theme.js +1 -0
  272. package/dist/styles/typography.cjs +0 -0
  273. package/dist/styles/typography.css +9 -0
  274. package/dist/styles/typography.css.map +1 -0
  275. package/dist/styles/typography.js +1 -0
  276. package/dist/switch-965kHdW_.js +2 -0
  277. package/dist/switch-965kHdW_.js.map +1 -0
  278. package/dist/switch-C3igCoxt.cjs +2 -0
  279. package/dist/switch-C3igCoxt.cjs.map +1 -0
  280. package/dist/table/index.cjs +1 -1
  281. package/dist/table/index.cjs.map +1 -1
  282. package/dist/table/index.d.ts +2 -2
  283. package/dist/table/index.js +1 -1
  284. package/dist/table/index.js.map +1 -1
  285. package/dist/table-CTMRaGxa.cjs +2 -0
  286. package/dist/table-CTMRaGxa.cjs.map +1 -0
  287. package/dist/table-CsnugKnh.js +2 -0
  288. package/dist/table-CsnugKnh.js.map +1 -0
  289. package/dist/textarea-3XRFTUZ8.cjs +2 -0
  290. package/dist/textarea-3XRFTUZ8.cjs.map +1 -0
  291. package/dist/textarea-CQ6gAnm5.js +2 -0
  292. package/dist/textarea-CQ6gAnm5.js.map +1 -0
  293. package/dist/{title-DrIfj31i.cjs → title-6Uosk2b4.cjs} +2 -2
  294. package/dist/title-6Uosk2b4.cjs.map +1 -0
  295. package/dist/{title-CA6PvqiD.js → title-CxIwADiB.js} +2 -2
  296. package/dist/title-CxIwADiB.js.map +1 -0
  297. package/dist/{toggle-CyClmWQm.d.ts → toggle-B-LtBkTS.d.ts} +4 -4
  298. package/dist/{toggle-B9onDBto.d.cts → toggle-BLlf4Xgl.d.cts} +3 -3
  299. package/dist/{toggle-BA0PLIVa.js → toggle-CHJ2edke.js} +2 -2
  300. package/dist/toggle-CHJ2edke.js.map +1 -0
  301. package/dist/{toggle-Ddewmqst.cjs → toggle-DO8QbhLS.cjs} +2 -2
  302. package/dist/toggle-DO8QbhLS.cjs.map +1 -0
  303. package/dist/tooltip-B8KdfOeT.js +2 -0
  304. package/dist/tooltip-B8KdfOeT.js.map +1 -0
  305. package/dist/{tooltip-Ju-oCFdl.d.ts → tooltip-CbtJCe-c.d.ts} +6 -6
  306. package/dist/tooltip-DLnAwybV.cjs +2 -0
  307. package/dist/tooltip-DLnAwybV.cjs.map +1 -0
  308. package/dist/{tooltip-Ccg2G_fB.d.cts → tooltip-etVeWcFC.d.cts} +6 -6
  309. package/dist/{types-CnMfjcgO.cjs → types-CrbWxjnp.cjs} +1 -1
  310. package/dist/types-CrbWxjnp.cjs.map +1 -0
  311. package/dist/{types-BVNbk1ZN.js → types-DaIHddx7.js} +1 -1
  312. package/dist/types-DaIHddx7.js.map +1 -0
  313. package/dist/typography/paragraph.cjs +1 -1
  314. package/dist/typography/paragraph.d.cts +3 -4
  315. package/dist/typography/paragraph.d.ts +3 -4
  316. package/dist/typography/paragraph.js +1 -1
  317. package/dist/typography/title.cjs +1 -1
  318. package/dist/typography/title.d.cts +2 -2
  319. package/dist/typography/title.d.ts +2 -2
  320. package/dist/typography/title.js +1 -1
  321. package/dist/ui/alert-dialog.cjs +1 -1
  322. package/dist/ui/alert-dialog.d.cts +12 -12
  323. package/dist/ui/alert-dialog.d.ts +12 -12
  324. package/dist/ui/alert-dialog.js +1 -1
  325. package/dist/ui/alert.cjs +1 -1
  326. package/dist/ui/alert.cjs.map +1 -1
  327. package/dist/ui/alert.d.cts +4 -4
  328. package/dist/ui/alert.d.ts +4 -4
  329. package/dist/ui/alert.js +1 -1
  330. package/dist/ui/alert.js.map +1 -1
  331. package/dist/ui/aspect-ratio.cjs +1 -1
  332. package/dist/ui/aspect-ratio.cjs.map +1 -1
  333. package/dist/ui/aspect-ratio.d.cts +2 -2
  334. package/dist/ui/aspect-ratio.d.ts +2 -2
  335. package/dist/ui/aspect-ratio.js +1 -1
  336. package/dist/ui/aspect-ratio.js.map +1 -1
  337. package/dist/ui/avatar.cjs.map +1 -1
  338. package/dist/ui/avatar.d.cts +4 -4
  339. package/dist/ui/avatar.d.ts +4 -4
  340. package/dist/ui/avatar.js.map +1 -1
  341. package/dist/ui/badge.cjs +1 -1
  342. package/dist/ui/badge.d.cts +5 -5
  343. package/dist/ui/badge.d.ts +3 -3
  344. package/dist/ui/badge.js +1 -1
  345. package/dist/ui/breadcrumb.cjs +1 -1
  346. package/dist/ui/breadcrumb.cjs.map +1 -1
  347. package/dist/ui/breadcrumb.d.cts +7 -7
  348. package/dist/ui/breadcrumb.d.ts +9 -9
  349. package/dist/ui/breadcrumb.js +1 -1
  350. package/dist/ui/breadcrumb.js.map +1 -1
  351. package/dist/ui/button.cjs +1 -1
  352. package/dist/ui/button.d.cts +1 -1
  353. package/dist/ui/button.d.ts +1 -1
  354. package/dist/ui/button.js +1 -1
  355. package/dist/ui/buttons/add-new.cjs +1 -1
  356. package/dist/ui/buttons/add-new.js +1 -1
  357. package/dist/ui/buttons/edit.cjs +1 -1
  358. package/dist/ui/buttons/edit.cjs.map +1 -1
  359. package/dist/ui/buttons/edit.js +1 -1
  360. package/dist/ui/buttons/edit.js.map +1 -1
  361. package/dist/ui/buttons/refresh.cjs +1 -1
  362. package/dist/ui/buttons/refresh.js +1 -1
  363. package/dist/ui/buttons/trash.cjs +1 -1
  364. package/dist/ui/buttons/trash.cjs.map +1 -1
  365. package/dist/ui/buttons/trash.js +1 -1
  366. package/dist/ui/buttons/trash.js.map +1 -1
  367. package/dist/ui/buttons/upload-image.cjs +1 -1
  368. package/dist/ui/buttons/upload-image.cjs.map +1 -1
  369. package/dist/ui/buttons/upload-image.js +1 -1
  370. package/dist/ui/buttons/upload-image.js.map +1 -1
  371. package/dist/ui/calendar.cjs +1 -1
  372. package/dist/ui/calendar.d.cts +5 -5
  373. package/dist/ui/calendar.d.ts +5 -5
  374. package/dist/ui/calendar.js +1 -1
  375. package/dist/ui/card.cjs +1 -1
  376. package/dist/ui/card.d.cts +8 -9
  377. package/dist/ui/card.d.ts +8 -9
  378. package/dist/ui/card.js +1 -1
  379. package/dist/ui/carousel.cjs +1 -1
  380. package/dist/ui/carousel.cjs.map +1 -1
  381. package/dist/ui/carousel.d.cts +8 -8
  382. package/dist/ui/carousel.d.ts +8 -8
  383. package/dist/ui/carousel.js +1 -1
  384. package/dist/ui/carousel.js.map +1 -1
  385. package/dist/ui/collapsible.cjs.map +1 -1
  386. package/dist/ui/collapsible.d.cts +4 -4
  387. package/dist/ui/collapsible.d.ts +4 -4
  388. package/dist/ui/collapsible.js.map +1 -1
  389. package/dist/ui/command.cjs +1 -1
  390. package/dist/ui/command.d.cts +2 -2
  391. package/dist/ui/command.d.ts +2 -2
  392. package/dist/ui/command.js +1 -1
  393. package/dist/ui/context-menu.cjs +1 -1
  394. package/dist/ui/context-menu.cjs.map +1 -1
  395. package/dist/ui/context-menu.d.cts +17 -17
  396. package/dist/ui/context-menu.d.ts +17 -17
  397. package/dist/ui/context-menu.js +1 -1
  398. package/dist/ui/context-menu.js.map +1 -1
  399. package/dist/ui/dialog.cjs +1 -1
  400. package/dist/ui/dialog.d.cts +1 -1
  401. package/dist/ui/dialog.d.ts +1 -1
  402. package/dist/ui/dialog.js +1 -1
  403. package/dist/ui/dropdown-menu.cjs +1 -1
  404. package/dist/ui/dropdown-menu.d.cts +17 -18
  405. package/dist/ui/dropdown-menu.d.ts +17 -18
  406. package/dist/ui/dropdown-menu.js +1 -1
  407. package/dist/ui/file-uploader.cjs +2 -2
  408. package/dist/ui/file-uploader.cjs.map +1 -1
  409. package/dist/ui/file-uploader.d.cts +5 -5
  410. package/dist/ui/file-uploader.d.ts +5 -5
  411. package/dist/ui/file-uploader.js +2 -2
  412. package/dist/ui/file-uploader.js.map +1 -1
  413. package/dist/ui/form.cjs +1 -1
  414. package/dist/ui/form.d.cts +7 -7
  415. package/dist/ui/form.d.ts +7 -7
  416. package/dist/ui/form.js +1 -1
  417. package/dist/ui/hover-card.cjs.map +1 -1
  418. package/dist/ui/hover-card.d.cts +4 -4
  419. package/dist/ui/hover-card.d.ts +4 -4
  420. package/dist/ui/hover-card.js.map +1 -1
  421. package/dist/ui/input-otp.cjs.map +1 -1
  422. package/dist/ui/input-otp.d.cts +6 -6
  423. package/dist/ui/input-otp.d.ts +6 -6
  424. package/dist/ui/input-otp.js.map +1 -1
  425. package/dist/ui/input.cjs +1 -1
  426. package/dist/ui/input.d.cts +1 -1
  427. package/dist/ui/input.d.ts +1 -1
  428. package/dist/ui/input.js +1 -1
  429. package/dist/ui/inputs/search-input.cjs +1 -1
  430. package/dist/ui/inputs/search-input.d.cts +3 -3
  431. package/dist/ui/inputs/search-input.d.ts +3 -3
  432. package/dist/ui/inputs/search-input.js +1 -1
  433. package/dist/ui/label.cjs +1 -1
  434. package/dist/ui/label.d.cts +2 -2
  435. package/dist/ui/label.d.ts +2 -2
  436. package/dist/ui/label.js +1 -1
  437. package/dist/ui/menubar.cjs +1 -1
  438. package/dist/ui/menubar.cjs.map +1 -1
  439. package/dist/ui/menubar.d.cts +18 -18
  440. package/dist/ui/menubar.d.ts +18 -18
  441. package/dist/ui/menubar.js +1 -1
  442. package/dist/ui/menubar.js.map +1 -1
  443. package/dist/ui/multi-select.cjs +1 -1
  444. package/dist/ui/multi-select.d.cts +4 -4
  445. package/dist/ui/multi-select.d.ts +4 -4
  446. package/dist/ui/multi-select.js +1 -1
  447. package/dist/ui/navigation-menu.cjs +1 -1
  448. package/dist/ui/navigation-menu.cjs.map +1 -1
  449. package/dist/ui/navigation-menu.d.cts +9 -9
  450. package/dist/ui/navigation-menu.d.ts +9 -9
  451. package/dist/ui/navigation-menu.js +1 -1
  452. package/dist/ui/navigation-menu.js.map +1 -1
  453. package/dist/ui/pagination.cjs +1 -1
  454. package/dist/ui/pagination.cjs.map +1 -1
  455. package/dist/ui/pagination.d.cts +10 -10
  456. package/dist/ui/pagination.d.ts +10 -10
  457. package/dist/ui/pagination.js +1 -1
  458. package/dist/ui/pagination.js.map +1 -1
  459. package/dist/ui/popover.cjs +1 -1
  460. package/dist/ui/popover.d.cts +5 -7
  461. package/dist/ui/popover.d.ts +5 -7
  462. package/dist/ui/popover.js +1 -1
  463. package/dist/ui/progress.cjs +1 -1
  464. package/dist/ui/progress.d.cts +2 -2
  465. package/dist/ui/progress.d.ts +2 -2
  466. package/dist/ui/progress.js +1 -1
  467. package/dist/ui/radio-group.cjs +1 -1
  468. package/dist/ui/radio-group.cjs.map +1 -1
  469. package/dist/ui/radio-group.d.ts +3 -3
  470. package/dist/ui/radio-group.js +1 -1
  471. package/dist/ui/radio-group.js.map +1 -1
  472. package/dist/ui/resizable.cjs.map +1 -1
  473. package/dist/ui/resizable.d.cts +4 -4
  474. package/dist/ui/resizable.d.ts +4 -4
  475. package/dist/ui/resizable.js.map +1 -1
  476. package/dist/ui/scroll-area.d.cts +3 -3
  477. package/dist/ui/scroll-area.d.ts +3 -3
  478. package/dist/ui/select.cjs +1 -1
  479. package/dist/ui/select.d.cts +12 -13
  480. package/dist/ui/select.d.ts +12 -13
  481. package/dist/ui/select.js +1 -1
  482. package/dist/ui/separator.cjs +1 -1
  483. package/dist/ui/separator.d.cts +1 -1
  484. package/dist/ui/separator.d.ts +1 -1
  485. package/dist/ui/separator.js +1 -1
  486. package/dist/ui/sheet.cjs +1 -1
  487. package/dist/ui/sheet.d.cts +10 -11
  488. package/dist/ui/sheet.d.ts +10 -11
  489. package/dist/ui/sheet.js +1 -1
  490. package/dist/ui/sidebar.cjs +1 -1
  491. package/dist/ui/sidebar.d.cts +41 -41
  492. package/dist/ui/sidebar.d.ts +41 -41
  493. package/dist/ui/sidebar.js +1 -1
  494. package/dist/ui/skeleton.cjs +1 -1
  495. package/dist/ui/skeleton.d.cts +2 -3
  496. package/dist/ui/skeleton.d.ts +2 -3
  497. package/dist/ui/skeleton.js +1 -1
  498. package/dist/ui/slider.cjs.map +1 -1
  499. package/dist/ui/slider.d.cts +2 -2
  500. package/dist/ui/slider.d.ts +2 -2
  501. package/dist/ui/slider.js.map +1 -1
  502. package/dist/ui/sonner.cjs +1 -1
  503. package/dist/ui/sonner.cjs.map +1 -1
  504. package/dist/ui/sonner.d.cts +2 -2
  505. package/dist/ui/sonner.d.ts +2 -2
  506. package/dist/ui/sonner.js +1 -1
  507. package/dist/ui/sonner.js.map +1 -1
  508. package/dist/ui/switch.cjs +1 -1
  509. package/dist/ui/switch.d.cts +2 -2
  510. package/dist/ui/switch.d.ts +2 -2
  511. package/dist/ui/switch.js +1 -1
  512. package/dist/ui/table.cjs +1 -1
  513. package/dist/ui/table.d.cts +9 -9
  514. package/dist/ui/table.d.ts +9 -9
  515. package/dist/ui/table.js +1 -1
  516. package/dist/ui/tabs.cjs +1 -1
  517. package/dist/ui/tabs.cjs.map +1 -1
  518. package/dist/ui/tabs.d.cts +5 -6
  519. package/dist/ui/tabs.d.ts +0 -1
  520. package/dist/ui/tabs.js +1 -1
  521. package/dist/ui/tabs.js.map +1 -1
  522. package/dist/ui/textarea.cjs +1 -1
  523. package/dist/ui/textarea.d.cts +3 -3
  524. package/dist/ui/textarea.d.ts +3 -3
  525. package/dist/ui/textarea.js +1 -1
  526. package/dist/ui/toggle-group.cjs +1 -1
  527. package/dist/ui/toggle-group.cjs.map +1 -1
  528. package/dist/ui/toggle-group.d.cts +4 -4
  529. package/dist/ui/toggle-group.d.ts +5 -5
  530. package/dist/ui/toggle-group.js +1 -1
  531. package/dist/ui/toggle-group.js.map +1 -1
  532. package/dist/ui/toggle.cjs +1 -1
  533. package/dist/ui/toggle.d.cts +1 -1
  534. package/dist/ui/toggle.d.ts +1 -1
  535. package/dist/ui/toggle.js +1 -1
  536. package/dist/ui/tooltip.cjs +1 -1
  537. package/dist/ui/tooltip.d.cts +1 -1
  538. package/dist/ui/tooltip.d.ts +1 -1
  539. package/dist/ui/tooltip.js +1 -1
  540. package/dist/utils-BsjVK5EW.cjs.map +1 -1
  541. package/dist/utils-D9AH0PUV.js.map +1 -1
  542. package/package.json +23 -2
  543. package/packages/components/cards/simple-card.tsx +11 -25
  544. package/packages/components/data-display/country.tsx +34 -40
  545. package/packages/components/data-display/data-list.tsx +15 -24
  546. package/packages/components/data-display/date-tooltip.tsx +9 -23
  547. package/packages/components/data-display/date.tsx +90 -148
  548. package/packages/components/data-display/empty.tsx +8 -20
  549. package/packages/components/data-display/name.tsx +9 -11
  550. package/packages/components/data-display/phone-number.tsx +7 -15
  551. package/packages/components/data-display/role-badge.tsx +21 -25
  552. package/packages/components/data-display/statistic.tsx +61 -63
  553. package/packages/components/dialogs/confirm-dialog.tsx +12 -19
  554. package/packages/components/dialogs/detail-dialog/component/header.tsx +3 -7
  555. package/packages/components/dialogs/detail-dialog/component/main.tsx +15 -19
  556. package/packages/components/dialogs/detail-dialog/component/sidebar.tsx +256 -385
  557. package/packages/components/dialogs/detail-dialog/component/wrapper.tsx +6 -8
  558. package/packages/components/dialogs/detail-dialog/index.tsx +26 -35
  559. package/packages/components/dialogs/error-dialog.tsx +14 -28
  560. package/packages/components/dialogs/form-dialog.tsx +27 -59
  561. package/packages/components/dialogs/loading-dialog.tsx +8 -11
  562. package/packages/components/forms/combobox-field.tsx +44 -81
  563. package/packages/components/forms/date-field.tsx +2 -5
  564. package/packages/components/forms/form-wrapper.tsx +45 -71
  565. package/packages/components/forms/multi-select-field.tsx +2 -2
  566. package/packages/components/forms/number-field.tsx +1 -3
  567. package/packages/components/forms/password-field.tsx +1 -1
  568. package/packages/components/forms/select-field.tsx +1 -1
  569. package/packages/components/forms/switch-field.tsx +2 -4
  570. package/packages/components/forms/text-field.tsx +3 -10
  571. package/packages/components/forms/textarea-field.tsx +3 -11
  572. package/packages/components/layouts/flex.tsx +55 -66
  573. package/packages/components/layouts/main/content.tsx +3 -3
  574. package/packages/components/layouts/main/header.tsx +15 -27
  575. package/packages/components/layouts/main/wrapper.tsx +3 -3
  576. package/packages/components/styles/base.css +29 -0
  577. package/packages/components/styles/loader.css +113 -0
  578. package/packages/components/styles/theme.css +103 -0
  579. package/packages/components/styles/typography.css +6 -0
  580. package/packages/components/table/data-table-pagination.tsx +15 -44
  581. package/packages/components/table/data-table.tsx +86 -173
  582. package/packages/components/table/index.tsx +31 -50
  583. package/packages/components/typography/paragraph.tsx +18 -21
  584. package/packages/components/typography/title.tsx +23 -28
  585. package/packages/components/ui/alert-dialog.tsx +44 -118
  586. package/packages/components/ui/alert.tsx +19 -46
  587. package/packages/components/ui/aspect-ratio.tsx +7 -16
  588. package/packages/components/ui/avatar.tsx +12 -39
  589. package/packages/components/ui/badge.tsx +35 -41
  590. package/packages/components/ui/breadcrumb.tsx +26 -62
  591. package/packages/components/ui/button.tsx +163 -46
  592. package/packages/components/ui/buttons/add-new.tsx +9 -16
  593. package/packages/components/ui/buttons/edit.tsx +7 -13
  594. package/packages/components/ui/buttons/refresh.tsx +10 -21
  595. package/packages/components/ui/buttons/trash.tsx +7 -13
  596. package/packages/components/ui/buttons/upload-image.tsx +10 -13
  597. package/packages/components/ui/calendar.tsx +56 -124
  598. package/packages/components/ui/card.tsx +21 -72
  599. package/packages/components/ui/carousel.tsx +79 -133
  600. package/packages/components/ui/checkbox.tsx +19 -29
  601. package/packages/components/ui/collapsible.tsx +10 -26
  602. package/packages/components/ui/command.tsx +65 -144
  603. package/packages/components/ui/context-menu.tsx +48 -110
  604. package/packages/components/ui/dialog.tsx +55 -110
  605. package/packages/components/ui/dropdown-menu.tsx +100 -169
  606. package/packages/components/ui/file-uploader.tsx +93 -151
  607. package/packages/components/ui/form.tsx +51 -115
  608. package/packages/components/ui/hover-card.tsx +12 -23
  609. package/packages/components/ui/input-otp.tsx +20 -29
  610. package/packages/components/ui/input.tsx +34 -34
  611. package/packages/components/ui/inputs/number-input.tsx +5 -13
  612. package/packages/components/ui/inputs/password-input.tsx +2 -8
  613. package/packages/components/ui/inputs/search-input.tsx +7 -7
  614. package/packages/components/ui/label.tsx +14 -17
  615. package/packages/components/ui/menubar.tsx +46 -109
  616. package/packages/components/ui/multi-select.tsx +250 -317
  617. package/packages/components/ui/navigation-menu.tsx +34 -80
  618. package/packages/components/ui/pagination.tsx +28 -86
  619. package/packages/components/ui/popover.tsx +28 -43
  620. package/packages/components/ui/progress.tsx +8 -19
  621. package/packages/components/ui/radio-group.tsx +19 -36
  622. package/packages/components/ui/resizable.tsx +14 -22
  623. package/packages/components/ui/scroll-area.tsx +14 -30
  624. package/packages/components/ui/select.tsx +94 -141
  625. package/packages/components/ui/separator.tsx +11 -13
  626. package/packages/components/ui/sheet.tsx +62 -98
  627. package/packages/components/ui/sidebar.tsx +287 -363
  628. package/packages/components/ui/skeleton.tsx +5 -12
  629. package/packages/components/ui/slider.tsx +11 -28
  630. package/packages/components/ui/sonner.tsx +20 -23
  631. package/packages/components/ui/switch.tsx +28 -34
  632. package/packages/components/ui/table.tsx +28 -80
  633. package/packages/components/ui/tabs.tsx +29 -61
  634. package/packages/components/ui/textarea.tsx +23 -24
  635. package/packages/components/ui/toggle-group.tsx +19 -28
  636. package/packages/components/ui/toggle.tsx +16 -29
  637. package/packages/components/ui/tooltip.tsx +26 -44
  638. package/packages/constants.tsx +16 -50
  639. package/packages/hooks/use-callback-ref.ts +7 -12
  640. package/packages/hooks/use-controllable-state.ts +37 -46
  641. package/packages/hooks/use-mobile.ts +11 -13
  642. package/packages/index.css +121 -381
  643. package/packages/lib/utils.ts +12 -16
  644. package/packages/stories/1.Guideline.mdx +3 -0
  645. package/packages/stories/2.Colors.mdx +145 -0
  646. package/packages/stories/3.Pypography.mdx +51 -0
  647. package/packages/stories/cards/simple-card.stories.tsx +24 -0
  648. package/packages/stories/data-display/data-list.stories.tsx +22 -0
  649. package/packages/stories/data-display/empty.stories.tsx +13 -0
  650. package/packages/stories/data-display/form-dialog.stories.tsx +27 -0
  651. package/packages/stories/data-display/name.stories.tsx +25 -0
  652. package/packages/stories/data-display/phone-number.stories.tsx +17 -0
  653. package/packages/stories/data-display/statistic.stories.tsx +41 -0
  654. package/packages/stories/dialogs/confirm-dialog.stories.tsx +26 -0
  655. package/packages/stories/dialogs/detail-dialog.stories.tsx +34 -0
  656. package/packages/stories/dialogs/error-dialog.stories.tsx +27 -0
  657. package/packages/stories/dialogs/loading-dialog.stories.tsx +16 -0
  658. package/packages/stories/forms/combobox-field.stories.tsx +38 -0
  659. package/packages/stories/forms/form-wrapper.stories.tsx +59 -0
  660. package/packages/stories/forms/multi-select-field.stories.tsx +42 -0
  661. package/packages/stories/forms/number-field.stories.tsx +35 -0
  662. package/packages/stories/forms/select-field.stories.tsx +39 -0
  663. package/packages/stories/forms/switch-field.stories.tsx +36 -0
  664. package/packages/stories/forms/text-field.stories.tsx +41 -0
  665. package/packages/stories/forms/textarea-field.stories.tsx +34 -0
  666. package/packages/stories/typography/paragraph.stories.tsx +45 -0
  667. package/packages/stories/typography/title.stories.tsx +39 -0
  668. package/packages/stories/ui/alert-dialog.stories.tsx +49 -0
  669. package/packages/stories/ui/alert.stories.tsx +63 -0
  670. package/packages/stories/ui/aspect-ratio.stories.tsx +22 -0
  671. package/packages/stories/ui/badge.stories.tsx +170 -0
  672. package/packages/stories/ui/breadcrumb.stories.tsx +172 -0
  673. package/packages/stories/ui/button.stories.tsx +181 -0
  674. package/packages/stories/ui/card.stories.tsx +58 -0
  675. package/packages/stories/ui/checkbox.stories.tsx +48 -0
  676. package/packages/stories/ui/command.stories.tsx +58 -0
  677. package/packages/stories/ui/dialog.stories.tsx +55 -0
  678. package/packages/stories/ui/dropdown-menu.stories.tsx +89 -0
  679. package/packages/stories/ui/file-uploader.stories.tsx +18 -0
  680. package/packages/stories/ui/input.stories.tsx +38 -0
  681. package/packages/stories/ui/label.stories.tsx +17 -0
  682. package/packages/stories/ui/multi-select.stories.tsx +29 -0
  683. package/packages/stories/ui/popover.stories.tsx +52 -0
  684. package/packages/stories/ui/progress.stories.tsx +17 -0
  685. package/packages/stories/ui/radio-group.stories.tsx +31 -0
  686. package/packages/stories/ui/select.stories.tsx +31 -0
  687. package/packages/stories/ui/separator.stories.tsx +31 -0
  688. package/packages/stories/ui/sheet.stories.tsx +50 -0
  689. package/packages/stories/ui/skeleton.stories.tsx +27 -0
  690. package/packages/stories/ui/switch.stories.tsx +21 -0
  691. package/packages/stories/ui/table.stories.tsx +82 -0
  692. package/packages/stories/ui/tabs.stories.tsx +70 -0
  693. package/packages/stories/ui/textarea.stories.tsx +15 -0
  694. package/packages/stories/ui/toaster.stories.tsx +87 -0
  695. package/packages/types.ts +32 -32
  696. package/dist/add-new-BTpI7Ph7.cjs.map +0 -1
  697. package/dist/add-new-DmwkHRmn.js +0 -2
  698. package/dist/add-new-DmwkHRmn.js.map +0 -1
  699. package/dist/alert-dialog-6r43mVE-.js +0 -2
  700. package/dist/alert-dialog-6r43mVE-.js.map +0 -1
  701. package/dist/alert-dialog-DEOx5Psb.cjs +0 -2
  702. package/dist/alert-dialog-DEOx5Psb.cjs.map +0 -1
  703. package/dist/badge-DHRQ-uwY.cjs.map +0 -1
  704. package/dist/badge-bLqn3EB9.js.map +0 -1
  705. package/dist/button-BgNGzTUH.cjs +0 -2
  706. package/dist/button-BgNGzTUH.cjs.map +0 -1
  707. package/dist/button-CqGv362j.d.cts +0 -23
  708. package/dist/button-DFvetIX8.js +0 -2
  709. package/dist/button-DFvetIX8.js.map +0 -1
  710. package/dist/calendar-BG-jrCZc.js.map +0 -1
  711. package/dist/calendar-Cck0PPMB.cjs.map +0 -1
  712. package/dist/card-D8cxRC5y.js +0 -2
  713. package/dist/card-D8cxRC5y.js.map +0 -1
  714. package/dist/card-Dta5eW8u.cjs +0 -2
  715. package/dist/card-Dta5eW8u.cjs.map +0 -1
  716. package/dist/command-Bfx_Gzjv.cjs +0 -2
  717. package/dist/command-Bfx_Gzjv.cjs.map +0 -1
  718. package/dist/command-ClNBSZd3.js +0 -2
  719. package/dist/command-ClNBSZd3.js.map +0 -1
  720. package/dist/date-B1g1OMYc.js.map +0 -1
  721. package/dist/date-Cw6Jf7k6.cjs.map +0 -1
  722. package/dist/dialog-Bh4dL0ew.cjs +0 -2
  723. package/dist/dialog-Bh4dL0ew.cjs.map +0 -1
  724. package/dist/dialog-CzSIPgHw.js +0 -2
  725. package/dist/dialog-CzSIPgHw.js.map +0 -1
  726. package/dist/dropdown-menu-DTFOCPH_.js +0 -2
  727. package/dist/dropdown-menu-DTFOCPH_.js.map +0 -1
  728. package/dist/dropdown-menu-qX11mJ9V.cjs +0 -2
  729. package/dist/dropdown-menu-qX11mJ9V.cjs.map +0 -1
  730. package/dist/error-dialog-Dg_OHJlH.js.map +0 -1
  731. package/dist/error-dialog-OeWIgIvF.cjs.map +0 -1
  732. package/dist/flex-B5MQmxX8.cjs.map +0 -1
  733. package/dist/flex-CBAzUoXK.js.map +0 -1
  734. package/dist/form-BMnG2xLt.js.map +0 -1
  735. package/dist/form-BbU1TIro.cjs.map +0 -1
  736. package/dist/form-wrapper-DeSGl64P.cjs.map +0 -1
  737. package/dist/form-wrapper-wHzrskjb.js.map +0 -1
  738. package/dist/input-B030EUY5.js +0 -2
  739. package/dist/input-B030EUY5.js.map +0 -1
  740. package/dist/input-mUjZrK2c.cjs +0 -2
  741. package/dist/input-mUjZrK2c.cjs.map +0 -1
  742. package/dist/label-BrGRueFm.js +0 -2
  743. package/dist/label-BrGRueFm.js.map +0 -1
  744. package/dist/label-Cmi31X9c.cjs +0 -2
  745. package/dist/label-Cmi31X9c.cjs.map +0 -1
  746. package/dist/multi-select-BOmq9vOB.cjs +0 -2
  747. package/dist/multi-select-BOmq9vOB.cjs.map +0 -1
  748. package/dist/multi-select-CEU50SQU.js +0 -2
  749. package/dist/multi-select-CEU50SQU.js.map +0 -1
  750. package/dist/paragraph-CuR_8J0O.js +0 -2
  751. package/dist/paragraph-CuR_8J0O.js.map +0 -1
  752. package/dist/paragraph-D-nYwoh7.cjs +0 -2
  753. package/dist/paragraph-D-nYwoh7.cjs.map +0 -1
  754. package/dist/popover-BD0lz8Fh.cjs +0 -2
  755. package/dist/popover-BD0lz8Fh.cjs.map +0 -1
  756. package/dist/popover-DJnARyyO.js +0 -2
  757. package/dist/popover-DJnARyyO.js.map +0 -1
  758. package/dist/progress-Bu1_efDo.cjs +0 -2
  759. package/dist/progress-Bu1_efDo.cjs.map +0 -1
  760. package/dist/progress-CeXKNvJc.js +0 -2
  761. package/dist/progress-CeXKNvJc.js.map +0 -1
  762. package/dist/refresh-H87p0PFk.cjs.map +0 -1
  763. package/dist/refresh-h_6T8REa.js +0 -2
  764. package/dist/refresh-h_6T8REa.js.map +0 -1
  765. package/dist/search-input-BUIwdK4e.js.map +0 -1
  766. package/dist/search-input-DXh-cAVU.cjs.map +0 -1
  767. package/dist/select-C82socRt.cjs +0 -2
  768. package/dist/select-C82socRt.cjs.map +0 -1
  769. package/dist/select-pBujVa9I.js +0 -2
  770. package/dist/select-pBujVa9I.js.map +0 -1
  771. package/dist/separator-Bi0LBh7T.cjs +0 -2
  772. package/dist/separator-Bi0LBh7T.cjs.map +0 -1
  773. package/dist/separator-DMdqEz29.js +0 -2
  774. package/dist/separator-DMdqEz29.js.map +0 -1
  775. package/dist/sheet-2JqHfdYi.js +0 -2
  776. package/dist/sheet-2JqHfdYi.js.map +0 -1
  777. package/dist/sheet-CjCT1GXK.cjs +0 -2
  778. package/dist/sheet-CjCT1GXK.cjs.map +0 -1
  779. package/dist/sidebar-99vu8Xl2.cjs +0 -2
  780. package/dist/sidebar-99vu8Xl2.cjs.map +0 -1
  781. package/dist/sidebar-Ci1XCkoo.cjs +0 -2
  782. package/dist/sidebar-Ci1XCkoo.cjs.map +0 -1
  783. package/dist/sidebar-acyFs4AU.js +0 -2
  784. package/dist/sidebar-acyFs4AU.js.map +0 -1
  785. package/dist/sidebar-b8PM_MQy.js +0 -2
  786. package/dist/sidebar-b8PM_MQy.js.map +0 -1
  787. package/dist/skeleton-D1_Brnl9.js +0 -2
  788. package/dist/skeleton-D1_Brnl9.js.map +0 -1
  789. package/dist/skeleton-DkSs2Vh3.cjs +0 -2
  790. package/dist/skeleton-DkSs2Vh3.cjs.map +0 -1
  791. package/dist/switch-CF4DRW_3.cjs +0 -2
  792. package/dist/switch-CF4DRW_3.cjs.map +0 -1
  793. package/dist/switch-_VCthKr7.js +0 -2
  794. package/dist/switch-_VCthKr7.js.map +0 -1
  795. package/dist/table-B7URcTid.cjs +0 -2
  796. package/dist/table-B7URcTid.cjs.map +0 -1
  797. package/dist/table-DrnU8YJP.js +0 -2
  798. package/dist/table-DrnU8YJP.js.map +0 -1
  799. package/dist/textarea--5AtST9C.js +0 -2
  800. package/dist/textarea--5AtST9C.js.map +0 -1
  801. package/dist/textarea-pwK3zC15.cjs +0 -2
  802. package/dist/textarea-pwK3zC15.cjs.map +0 -1
  803. package/dist/title-CA6PvqiD.js.map +0 -1
  804. package/dist/title-DrIfj31i.cjs.map +0 -1
  805. package/dist/toggle-BA0PLIVa.js.map +0 -1
  806. package/dist/toggle-Ddewmqst.cjs.map +0 -1
  807. package/dist/tooltip-CG3D3TIL.cjs +0 -2
  808. package/dist/tooltip-CG3D3TIL.cjs.map +0 -1
  809. package/dist/tooltip-DvNio7Zt.js +0 -2
  810. package/dist/tooltip-DvNio7Zt.js.map +0 -1
  811. package/dist/types-BVNbk1ZN.js.map +0 -1
  812. package/dist/types-CnMfjcgO.cjs.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"dropdown-menu-DTFOCPH_.js","names":["DropdownMenu","DropdownMenuPrimitive"],"sources":["../packages/components/ui/dropdown-menu.tsx"],"sourcesContent":["\"use client\";\nimport React from \"react\";\nimport { DropdownMenu as DropdownMenuPrimitive } from \"radix-ui\";\nimport { CheckIcon, ChevronRightIcon, CircleIcon } from \"lucide-react\";\n\nimport { cn } from \"@/lib/utils\";\n\nfunction DropdownMenu({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Root>) {\n return <DropdownMenuPrimitive.Root data-slot=\"dropdown-menu\" {...props} />;\n}\n\nfunction DropdownMenuPortal({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Portal>) {\n return (\n <DropdownMenuPrimitive.Portal data-slot=\"dropdown-menu-portal\" {...props} />\n );\n}\n\nfunction DropdownMenuTrigger({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Trigger>) {\n return (\n <DropdownMenuPrimitive.Trigger\n data-slot=\"dropdown-menu-trigger\"\n {...props}\n />\n );\n}\n\nfunction DropdownMenuContent({\n className,\n sideOffset = 4,\n align = \"start\",\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Content>) {\n return (\n <DropdownMenuPrimitive.Portal>\n <DropdownMenuPrimitive.Content\n data-slot=\"dropdown-menu-content\"\n sideOffset={sideOffset}\n className={cn(\n \"bg-popover text-popover-foreground\",\n \"z-50\",\n \"min-w-32\",\n \"overflow-x-hidden overflow-y-auto\",\n \"rounded-md border p-1.5 shadow-md\",\n \"max-h-(--radix-dropdown-menu-content-available-height)\",\n \"origin-(--radix-dropdown-menu-content-transform-origin)\",\n \"data-[state=open]:animate-in\",\n \"data-[state=open]:fade-in-0\",\n \"data-[state=open]:zoom-in-95\",\n \"data-[state=closed]:animate-out\",\n \"data-[state=closed]:fade-out-0\",\n \"data-[state=closed]:zoom-out-95\",\n \"data-[side=bottom]:slide-in-from-top-2\",\n \"data-[side=left]:slide-in-from-right-2\",\n \"data-[side=right]:slide-in-from-left-2\",\n \"data-[side=top]:slide-in-from-bottom-2\",\n className,\n )}\n {...props}\n align={align}\n />\n </DropdownMenuPrimitive.Portal>\n );\n}\n\nfunction DropdownMenuGroup({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Group>) {\n return (\n <DropdownMenuPrimitive.Group data-slot=\"dropdown-menu-group\" {...props} />\n );\n}\n\nfunction DropdownMenuItem({\n className,\n inset,\n variant = \"default\",\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Item> & {\n inset?: boolean;\n variant?: \"default\" | \"destructive\";\n}) {\n return (\n <DropdownMenuPrimitive.Item\n data-slot=\"dropdown-menu-item\"\n data-inset={inset}\n data-variant={variant}\n className={cn(\n \"relative flex cursor-pointer items-center gap-2 rounded-md px-2 py-2.5 text-sm outline-hidden transition-all select-none\",\n \"focus:bg-accent/70\",\n \"focus:text-accent-foreground\",\n \"dark:data-[variant=destructive]:focus:bg-destructive/20\",\n \"data-[inset]:pl-8\",\n \"data-[disabled]:pointer-events-none\",\n \"data-[disabled]:opacity-50\",\n \"data-[variant=destructive]:text-destructive\",\n \"data-[variant=destructive]:focus:bg-destructive/10\",\n \"data-[variant=destructive]:focus:text-destructive\",\n \"data-[variant=destructive]:*:[svg]:!text-destructive\",\n \"[&_svg]:shrink-0\",\n \"[&_svg]:pointer-events-none\",\n \"[&_svg:not([class*='size-'])]:size-4\",\n \"[&_svg:not([class*='text-'])]:text-muted-foreground\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction DropdownMenuCheckboxItem({\n className,\n children,\n checked,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.CheckboxItem>) {\n return (\n <DropdownMenuPrimitive.CheckboxItem\n data-slot=\"dropdown-menu-checkbox-item\"\n className={cn(\n \"relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none\",\n \"focus:bg-accent\",\n \"focus:text-accent-foreground\",\n \"data-[disabled]:opacity-50\",\n \"data-[disabled]:pointer-events-none\",\n \"[&_svg]:pointer-events-none\",\n \"[&_svg]:shrink-0\",\n \"[&_svg:not([class*='size-'])]:size-4\",\n className,\n )}\n checked={checked}\n {...props}\n >\n <span className=\"pointer-events-none absolute left-2 flex size-3.5 items-center justify-center\">\n <DropdownMenuPrimitive.ItemIndicator>\n <CheckIcon size={16} />\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </DropdownMenuPrimitive.CheckboxItem>\n );\n}\n\nfunction DropdownMenuRadioGroup({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.RadioGroup>) {\n return (\n <DropdownMenuPrimitive.RadioGroup\n data-slot=\"dropdown-menu-radio-group\"\n {...props}\n />\n );\n}\n\nfunction DropdownMenuRadioItem({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.RadioItem>) {\n return (\n <DropdownMenuPrimitive.RadioItem\n data-slot=\"dropdown-menu-radio-item\"\n className={cn(\n \"relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none\",\n \"focus:bg-accent\",\n \"focus:text-accent-foreground\",\n \"data-[disabled]:pointer-events-none\",\n \"data-[disabled]:opacity-50\",\n \"[&_svg]:pointer-events-none\",\n \"[&_svg]:shrink-0\",\n \"[&_svg:not([class*='size-'])]:size-4\",\n className,\n )}\n {...props}\n >\n <span className=\"pointer-events-none absolute left-2 flex size-3.5 items-center justify-center\">\n <DropdownMenuPrimitive.ItemIndicator>\n <CircleIcon className=\"size-2 fill-current\" />\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </DropdownMenuPrimitive.RadioItem>\n );\n}\n\nfunction DropdownMenuLabel({\n className,\n inset,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Label> & {\n inset?: boolean;\n}) {\n return (\n <DropdownMenuPrimitive.Label\n data-slot=\"dropdown-menu-label\"\n data-inset={inset}\n className={cn(\n \"px-2 py-1.5 text-sm font-medium data-[inset]:pl-8\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction DropdownMenuSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Separator>) {\n return (\n <DropdownMenuPrimitive.Separator\n data-slot=\"dropdown-menu-separator\"\n className={cn(\"bg-border -mx-1 my-1 h-px\", className)}\n {...props}\n />\n );\n}\n\nfunction DropdownMenuShortcut({\n className,\n ...props\n}: React.ComponentProps<\"span\">) {\n return (\n <span\n data-slot=\"dropdown-menu-shortcut\"\n className={cn(\n \"text-muted-foreground ml-auto text-xs tracking-widest\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction DropdownMenuSub({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Sub>) {\n return <DropdownMenuPrimitive.Sub data-slot=\"dropdown-menu-sub\" {...props} />;\n}\n\nfunction DropdownMenuSubTrigger({\n className,\n inset,\n children,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.SubTrigger> & {\n inset?: boolean;\n}) {\n return (\n <DropdownMenuPrimitive.SubTrigger\n data-slot=\"dropdown-menu-sub-trigger\"\n data-inset={inset}\n className={cn(\n \"flex cursor-default items-center rounded-sm px-2 py-1.5 text-sm outline-hidden select-none\",\n \"focus:bg-accent\",\n \"focus:text-accent-foreground\",\n \"data-[state=open]:bg-accent\",\n \"data-[state=open]:text-accent-foreground\",\n \"data-[inset]:pl-8\",\n className,\n )}\n {...props}\n >\n {children}\n <ChevronRightIcon className=\"ml-auto size-4\" />\n </DropdownMenuPrimitive.SubTrigger>\n );\n}\n\nfunction DropdownMenuSubContent({\n className,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.SubContent>) {\n return (\n <DropdownMenuPrimitive.SubContent\n data-slot=\"dropdown-menu-sub-content\"\n className={cn(\n \"bg-popover text-popover-foreground\",\n \"z-50 min-w-32 origin-(--radix-dropdown-menu-content-transform-origin) overflow-hidden rounded-md border p-1 shadow-lg\",\n \"data-[state=open]:animate-in\",\n \"data-[state=closed]:animate-out\",\n \"data-[state=closed]:fade-out-0\",\n \"data-[state=open]:fade-in-0\",\n \"data-[state=closed]:zoom-out-95\",\n \"data-[state=open]:zoom-in-95\",\n \"data-[side=bottom]:slide-in-from-top-2\",\n \"data-[side=left]:slide-in-from-right-2\",\n \"data-[side=right]:slide-in-from-left-2\",\n \"data-[side=top]:slide-in-from-bottom-2\",\n className,\n )}\n {...props}\n />\n );\n}\n\nexport {\n DropdownMenu,\n DropdownMenuCheckboxItem,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuItem,\n DropdownMenuLabel,\n DropdownMenuPortal,\n DropdownMenuRadioGroup,\n DropdownMenuRadioItem,\n DropdownMenuSeparator,\n DropdownMenuShortcut,\n DropdownMenuSub,\n DropdownMenuSubContent,\n DropdownMenuSubTrigger,\n DropdownMenuTrigger,\n};\n"],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- const e=require(`./chunk-CUT6urMc.cjs`),t=require(`./utils-BsjVK5EW.cjs`),n=e.__toESM(require(`react`)),r=e.__toESM(require(`react/jsx-runtime`)),i=e.__toESM(require(`lucide-react`)),a=e.__toESM(require(`radix-ui`));function o({...e}){return(0,r.jsx)(a.DropdownMenu.Root,{"data-slot":`dropdown-menu`,...e})}function s({...e}){return(0,r.jsx)(a.DropdownMenu.Portal,{"data-slot":`dropdown-menu-portal`,...e})}function c({...e}){return(0,r.jsx)(a.DropdownMenu.Trigger,{"data-slot":`dropdown-menu-trigger`,...e})}function l({className:e,sideOffset:n=4,align:i=`start`,...o}){return(0,r.jsx)(a.DropdownMenu.Portal,{children:(0,r.jsx)(a.DropdownMenu.Content,{"data-slot":`dropdown-menu-content`,sideOffset:n,className:t.cn(`bg-popover text-popover-foreground`,`z-50`,`min-w-32`,`overflow-x-hidden overflow-y-auto`,`rounded-md border p-1.5 shadow-md`,`max-h-(--radix-dropdown-menu-content-available-height)`,`origin-(--radix-dropdown-menu-content-transform-origin)`,`data-[state=open]:animate-in`,`data-[state=open]:fade-in-0`,`data-[state=open]:zoom-in-95`,`data-[state=closed]:animate-out`,`data-[state=closed]:fade-out-0`,`data-[state=closed]:zoom-out-95`,`data-[side=bottom]:slide-in-from-top-2`,`data-[side=left]:slide-in-from-right-2`,`data-[side=right]:slide-in-from-left-2`,`data-[side=top]:slide-in-from-bottom-2`,e),...o,align:i})})}function u({...e}){return(0,r.jsx)(a.DropdownMenu.Group,{"data-slot":`dropdown-menu-group`,...e})}function d({className:e,inset:n,variant:i=`default`,...o}){return(0,r.jsx)(a.DropdownMenu.Item,{"data-slot":`dropdown-menu-item`,"data-inset":n,"data-variant":i,className:t.cn(`relative flex cursor-pointer items-center gap-2 rounded-md px-2 py-2.5 text-sm outline-hidden transition-all select-none`,`focus:bg-accent/70`,`focus:text-accent-foreground`,`dark:data-[variant=destructive]:focus:bg-destructive/20`,`data-[inset]:pl-8`,`data-[disabled]:pointer-events-none`,`data-[disabled]:opacity-50`,`data-[variant=destructive]:text-destructive`,`data-[variant=destructive]:focus:bg-destructive/10`,`data-[variant=destructive]:focus:text-destructive`,`data-[variant=destructive]:*:[svg]:!text-destructive`,`[&_svg]:shrink-0`,`[&_svg]:pointer-events-none`,`[&_svg:not([class*='size-'])]:size-4`,`[&_svg:not([class*='text-'])]:text-muted-foreground`,e),...o})}function f({className:e,children:n,checked:o,...s}){return(0,r.jsxs)(a.DropdownMenu.CheckboxItem,{"data-slot":`dropdown-menu-checkbox-item`,className:t.cn(`relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none`,`focus:bg-accent`,`focus:text-accent-foreground`,`data-[disabled]:opacity-50`,`data-[disabled]:pointer-events-none`,`[&_svg]:pointer-events-none`,`[&_svg]:shrink-0`,`[&_svg:not([class*='size-'])]:size-4`,e),checked:o,...s,children:[(0,r.jsx)(`span`,{className:`pointer-events-none absolute left-2 flex size-3.5 items-center justify-center`,children:(0,r.jsx)(a.DropdownMenu.ItemIndicator,{children:(0,r.jsx)(i.CheckIcon,{size:16})})}),n]})}function p({...e}){return(0,r.jsx)(a.DropdownMenu.RadioGroup,{"data-slot":`dropdown-menu-radio-group`,...e})}function m({className:e,children:n,...o}){return(0,r.jsxs)(a.DropdownMenu.RadioItem,{"data-slot":`dropdown-menu-radio-item`,className:t.cn(`relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none`,`focus:bg-accent`,`focus:text-accent-foreground`,`data-[disabled]:pointer-events-none`,`data-[disabled]:opacity-50`,`[&_svg]:pointer-events-none`,`[&_svg]:shrink-0`,`[&_svg:not([class*='size-'])]:size-4`,e),...o,children:[(0,r.jsx)(`span`,{className:`pointer-events-none absolute left-2 flex size-3.5 items-center justify-center`,children:(0,r.jsx)(a.DropdownMenu.ItemIndicator,{children:(0,r.jsx)(i.CircleIcon,{className:`size-2 fill-current`})})}),n]})}function h({className:e,inset:n,...i}){return(0,r.jsx)(a.DropdownMenu.Label,{"data-slot":`dropdown-menu-label`,"data-inset":n,className:t.cn(`px-2 py-1.5 text-sm font-medium data-[inset]:pl-8`,e),...i})}function g({className:e,...n}){return(0,r.jsx)(a.DropdownMenu.Separator,{"data-slot":`dropdown-menu-separator`,className:t.cn(`bg-border -mx-1 my-1 h-px`,e),...n})}function _({className:e,...n}){return(0,r.jsx)(`span`,{"data-slot":`dropdown-menu-shortcut`,className:t.cn(`text-muted-foreground ml-auto text-xs tracking-widest`,e),...n})}function v({...e}){return(0,r.jsx)(a.DropdownMenu.Sub,{"data-slot":`dropdown-menu-sub`,...e})}function y({className:e,inset:n,children:o,...s}){return(0,r.jsxs)(a.DropdownMenu.SubTrigger,{"data-slot":`dropdown-menu-sub-trigger`,"data-inset":n,className:t.cn(`flex cursor-default items-center rounded-sm px-2 py-1.5 text-sm outline-hidden select-none`,`focus:bg-accent`,`focus:text-accent-foreground`,`data-[state=open]:bg-accent`,`data-[state=open]:text-accent-foreground`,`data-[inset]:pl-8`,e),...s,children:[o,(0,r.jsx)(i.ChevronRightIcon,{className:`ml-auto size-4`})]})}function b({className:e,...n}){return(0,r.jsx)(a.DropdownMenu.SubContent,{"data-slot":`dropdown-menu-sub-content`,className:t.cn(`bg-popover text-popover-foreground`,`z-50 min-w-32 origin-(--radix-dropdown-menu-content-transform-origin) overflow-hidden rounded-md border p-1 shadow-lg`,`data-[state=open]:animate-in`,`data-[state=closed]:animate-out`,`data-[state=closed]:fade-out-0`,`data-[state=open]:fade-in-0`,`data-[state=closed]:zoom-out-95`,`data-[state=open]:zoom-in-95`,`data-[side=bottom]:slide-in-from-top-2`,`data-[side=left]:slide-in-from-right-2`,`data-[side=right]:slide-in-from-left-2`,`data-[side=top]:slide-in-from-bottom-2`,e),...n})}Object.defineProperty(exports,`DropdownMenu`,{enumerable:!0,get:function(){return o}}),Object.defineProperty(exports,`DropdownMenuCheckboxItem`,{enumerable:!0,get:function(){return f}}),Object.defineProperty(exports,`DropdownMenuContent`,{enumerable:!0,get:function(){return l}}),Object.defineProperty(exports,`DropdownMenuGroup`,{enumerable:!0,get:function(){return u}}),Object.defineProperty(exports,`DropdownMenuItem`,{enumerable:!0,get:function(){return d}}),Object.defineProperty(exports,`DropdownMenuLabel`,{enumerable:!0,get:function(){return h}}),Object.defineProperty(exports,`DropdownMenuPortal`,{enumerable:!0,get:function(){return s}}),Object.defineProperty(exports,`DropdownMenuRadioGroup`,{enumerable:!0,get:function(){return p}}),Object.defineProperty(exports,`DropdownMenuRadioItem`,{enumerable:!0,get:function(){return m}}),Object.defineProperty(exports,`DropdownMenuSeparator`,{enumerable:!0,get:function(){return g}}),Object.defineProperty(exports,`DropdownMenuShortcut`,{enumerable:!0,get:function(){return _}}),Object.defineProperty(exports,`DropdownMenuSub`,{enumerable:!0,get:function(){return v}}),Object.defineProperty(exports,`DropdownMenuSubContent`,{enumerable:!0,get:function(){return b}}),Object.defineProperty(exports,`DropdownMenuSubTrigger`,{enumerable:!0,get:function(){return y}}),Object.defineProperty(exports,`DropdownMenuTrigger`,{enumerable:!0,get:function(){return c}});
2
- //# sourceMappingURL=dropdown-menu-qX11mJ9V.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"dropdown-menu-qX11mJ9V.cjs","names":["DropdownMenuPrimitive","cn","CheckIcon","CircleIcon","ChevronRightIcon"],"sources":["../packages/components/ui/dropdown-menu.tsx"],"sourcesContent":["\"use client\";\nimport React from \"react\";\nimport { DropdownMenu as DropdownMenuPrimitive } from \"radix-ui\";\nimport { CheckIcon, ChevronRightIcon, CircleIcon } from \"lucide-react\";\n\nimport { cn } from \"@/lib/utils\";\n\nfunction DropdownMenu({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Root>) {\n return <DropdownMenuPrimitive.Root data-slot=\"dropdown-menu\" {...props} />;\n}\n\nfunction DropdownMenuPortal({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Portal>) {\n return (\n <DropdownMenuPrimitive.Portal data-slot=\"dropdown-menu-portal\" {...props} />\n );\n}\n\nfunction DropdownMenuTrigger({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Trigger>) {\n return (\n <DropdownMenuPrimitive.Trigger\n data-slot=\"dropdown-menu-trigger\"\n {...props}\n />\n );\n}\n\nfunction DropdownMenuContent({\n className,\n sideOffset = 4,\n align = \"start\",\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Content>) {\n return (\n <DropdownMenuPrimitive.Portal>\n <DropdownMenuPrimitive.Content\n data-slot=\"dropdown-menu-content\"\n sideOffset={sideOffset}\n className={cn(\n \"bg-popover text-popover-foreground\",\n \"z-50\",\n \"min-w-32\",\n \"overflow-x-hidden overflow-y-auto\",\n \"rounded-md border p-1.5 shadow-md\",\n \"max-h-(--radix-dropdown-menu-content-available-height)\",\n \"origin-(--radix-dropdown-menu-content-transform-origin)\",\n \"data-[state=open]:animate-in\",\n \"data-[state=open]:fade-in-0\",\n \"data-[state=open]:zoom-in-95\",\n \"data-[state=closed]:animate-out\",\n \"data-[state=closed]:fade-out-0\",\n \"data-[state=closed]:zoom-out-95\",\n \"data-[side=bottom]:slide-in-from-top-2\",\n \"data-[side=left]:slide-in-from-right-2\",\n \"data-[side=right]:slide-in-from-left-2\",\n \"data-[side=top]:slide-in-from-bottom-2\",\n className,\n )}\n {...props}\n align={align}\n />\n </DropdownMenuPrimitive.Portal>\n );\n}\n\nfunction DropdownMenuGroup({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Group>) {\n return (\n <DropdownMenuPrimitive.Group data-slot=\"dropdown-menu-group\" {...props} />\n );\n}\n\nfunction DropdownMenuItem({\n className,\n inset,\n variant = \"default\",\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Item> & {\n inset?: boolean;\n variant?: \"default\" | \"destructive\";\n}) {\n return (\n <DropdownMenuPrimitive.Item\n data-slot=\"dropdown-menu-item\"\n data-inset={inset}\n data-variant={variant}\n className={cn(\n \"relative flex cursor-pointer items-center gap-2 rounded-md px-2 py-2.5 text-sm outline-hidden transition-all select-none\",\n \"focus:bg-accent/70\",\n \"focus:text-accent-foreground\",\n \"dark:data-[variant=destructive]:focus:bg-destructive/20\",\n \"data-[inset]:pl-8\",\n \"data-[disabled]:pointer-events-none\",\n \"data-[disabled]:opacity-50\",\n \"data-[variant=destructive]:text-destructive\",\n \"data-[variant=destructive]:focus:bg-destructive/10\",\n \"data-[variant=destructive]:focus:text-destructive\",\n \"data-[variant=destructive]:*:[svg]:!text-destructive\",\n \"[&_svg]:shrink-0\",\n \"[&_svg]:pointer-events-none\",\n \"[&_svg:not([class*='size-'])]:size-4\",\n \"[&_svg:not([class*='text-'])]:text-muted-foreground\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction DropdownMenuCheckboxItem({\n className,\n children,\n checked,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.CheckboxItem>) {\n return (\n <DropdownMenuPrimitive.CheckboxItem\n data-slot=\"dropdown-menu-checkbox-item\"\n className={cn(\n \"relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none\",\n \"focus:bg-accent\",\n \"focus:text-accent-foreground\",\n \"data-[disabled]:opacity-50\",\n \"data-[disabled]:pointer-events-none\",\n \"[&_svg]:pointer-events-none\",\n \"[&_svg]:shrink-0\",\n \"[&_svg:not([class*='size-'])]:size-4\",\n className,\n )}\n checked={checked}\n {...props}\n >\n <span className=\"pointer-events-none absolute left-2 flex size-3.5 items-center justify-center\">\n <DropdownMenuPrimitive.ItemIndicator>\n <CheckIcon size={16} />\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </DropdownMenuPrimitive.CheckboxItem>\n );\n}\n\nfunction DropdownMenuRadioGroup({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.RadioGroup>) {\n return (\n <DropdownMenuPrimitive.RadioGroup\n data-slot=\"dropdown-menu-radio-group\"\n {...props}\n />\n );\n}\n\nfunction DropdownMenuRadioItem({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.RadioItem>) {\n return (\n <DropdownMenuPrimitive.RadioItem\n data-slot=\"dropdown-menu-radio-item\"\n className={cn(\n \"relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none\",\n \"focus:bg-accent\",\n \"focus:text-accent-foreground\",\n \"data-[disabled]:pointer-events-none\",\n \"data-[disabled]:opacity-50\",\n \"[&_svg]:pointer-events-none\",\n \"[&_svg]:shrink-0\",\n \"[&_svg:not([class*='size-'])]:size-4\",\n className,\n )}\n {...props}\n >\n <span className=\"pointer-events-none absolute left-2 flex size-3.5 items-center justify-center\">\n <DropdownMenuPrimitive.ItemIndicator>\n <CircleIcon className=\"size-2 fill-current\" />\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </DropdownMenuPrimitive.RadioItem>\n );\n}\n\nfunction DropdownMenuLabel({\n className,\n inset,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Label> & {\n inset?: boolean;\n}) {\n return (\n <DropdownMenuPrimitive.Label\n data-slot=\"dropdown-menu-label\"\n data-inset={inset}\n className={cn(\n \"px-2 py-1.5 text-sm font-medium data-[inset]:pl-8\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction DropdownMenuSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Separator>) {\n return (\n <DropdownMenuPrimitive.Separator\n data-slot=\"dropdown-menu-separator\"\n className={cn(\"bg-border -mx-1 my-1 h-px\", className)}\n {...props}\n />\n );\n}\n\nfunction DropdownMenuShortcut({\n className,\n ...props\n}: React.ComponentProps<\"span\">) {\n return (\n <span\n data-slot=\"dropdown-menu-shortcut\"\n className={cn(\n \"text-muted-foreground ml-auto text-xs tracking-widest\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction DropdownMenuSub({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Sub>) {\n return <DropdownMenuPrimitive.Sub data-slot=\"dropdown-menu-sub\" {...props} />;\n}\n\nfunction DropdownMenuSubTrigger({\n className,\n inset,\n children,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.SubTrigger> & {\n inset?: boolean;\n}) {\n return (\n <DropdownMenuPrimitive.SubTrigger\n data-slot=\"dropdown-menu-sub-trigger\"\n data-inset={inset}\n className={cn(\n \"flex cursor-default items-center rounded-sm px-2 py-1.5 text-sm outline-hidden select-none\",\n \"focus:bg-accent\",\n \"focus:text-accent-foreground\",\n \"data-[state=open]:bg-accent\",\n \"data-[state=open]:text-accent-foreground\",\n \"data-[inset]:pl-8\",\n className,\n )}\n {...props}\n >\n {children}\n <ChevronRightIcon className=\"ml-auto size-4\" />\n </DropdownMenuPrimitive.SubTrigger>\n );\n}\n\nfunction DropdownMenuSubContent({\n className,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.SubContent>) {\n return (\n <DropdownMenuPrimitive.SubContent\n data-slot=\"dropdown-menu-sub-content\"\n className={cn(\n \"bg-popover text-popover-foreground\",\n \"z-50 min-w-32 origin-(--radix-dropdown-menu-content-transform-origin) overflow-hidden rounded-md border p-1 shadow-lg\",\n \"data-[state=open]:animate-in\",\n \"data-[state=closed]:animate-out\",\n \"data-[state=closed]:fade-out-0\",\n \"data-[state=open]:fade-in-0\",\n \"data-[state=closed]:zoom-out-95\",\n \"data-[state=open]:zoom-in-95\",\n \"data-[side=bottom]:slide-in-from-top-2\",\n \"data-[side=left]:slide-in-from-right-2\",\n \"data-[side=right]:slide-in-from-left-2\",\n \"data-[side=top]:slide-in-from-bottom-2\",\n className,\n )}\n {...props}\n />\n );\n}\n\nexport {\n DropdownMenu,\n DropdownMenuCheckboxItem,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuItem,\n DropdownMenuLabel,\n DropdownMenuPortal,\n DropdownMenuRadioGroup,\n DropdownMenuRadioItem,\n DropdownMenuSeparator,\n DropdownMenuShortcut,\n DropdownMenuSub,\n DropdownMenuSubContent,\n DropdownMenuSubTrigger,\n DropdownMenuTrigger,\n};\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"error-dialog-Dg_OHJlH.js","names":["ErrorDialog: React.FC<React.PropsWithChildren<Props>>"],"sources":["../packages/components/dialogs/error-dialog.tsx"],"sourcesContent":["import React from \"react\";\nimport { AlertTriangleIcon } from \"lucide-react\";\n\nimport {\n AlertDialog,\n AlertDialogAction,\n AlertDialogContent,\n AlertDialogFooter,\n AlertDialogHeader,\n AlertDialogTitle,\n} from \"../ui/alert-dialog\";\n\ntype Props = {\n open?: boolean;\n title?: string;\n description?: string;\n onOpenChange?: (open: boolean) => void;\n};\nexport const ErrorDialog: React.FC<React.PropsWithChildren<Props>> = ({\n open,\n title,\n children,\n onOpenChange,\n}) => {\n const handleClose = React.useCallback(() => {\n onOpenChange?.(false);\n }, [onOpenChange]);\n return (\n <AlertDialog open={open} onOpenChange={onOpenChange}>\n <AlertDialogContent className=\"gap-8 p-4 sm:max-w-md\">\n <AlertDialogHeader>\n <div className=\"text-destructive flex flex-col items-center\">\n <AlertTriangleIcon size={42} />\n <AlertDialogTitle className=\"text-xl font-medium\">\n {title || \"An error occurred\"}\n </AlertDialogTitle>\n </div>\n </AlertDialogHeader>\n {children}\n <AlertDialogFooter>\n <AlertDialogAction className=\"w-28\" onClick={handleClose}>\n Đóng\n </AlertDialogAction>\n </AlertDialogFooter>\n </AlertDialogContent>\n </AlertDialog>\n );\n};\n"],"mappings":"oSAkBA,MAAaA,GAAyD,CACpE,OACA,QACA,WACA,kBACI,CACJ,IAAM,EAAc,EAAM,gBAAkB,CAC1C,IAAe,KACd,CAAC,IACJ,OACE,EAAC,EAAA,CAAkB,OAAoB,wBACrC,EAAC,EAAA,CAAmB,UAAU,kCAC5B,EAAC,EAAA,CAAA,SACC,EAAC,MAAA,CAAI,UAAU,wDACb,EAAC,EAAA,CAAkB,KAAM,KACzB,EAAC,EAAA,CAAiB,UAAU,+BACzB,GAAS,2BAIf,EACD,EAAC,EAAA,CAAA,SACC,EAAC,EAAA,CAAkB,UAAU,OAAO,QAAS,WAAa"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"error-dialog-OeWIgIvF.cjs","names":["ErrorDialog: React.FC<React.PropsWithChildren<Props>>","React","AlertDialog","AlertDialogContent","AlertDialogHeader","AlertTriangleIcon","AlertDialogTitle","AlertDialogFooter","AlertDialogAction"],"sources":["../packages/components/dialogs/error-dialog.tsx"],"sourcesContent":["import React from \"react\";\nimport { AlertTriangleIcon } from \"lucide-react\";\n\nimport {\n AlertDialog,\n AlertDialogAction,\n AlertDialogContent,\n AlertDialogFooter,\n AlertDialogHeader,\n AlertDialogTitle,\n} from \"../ui/alert-dialog\";\n\ntype Props = {\n open?: boolean;\n title?: string;\n description?: string;\n onOpenChange?: (open: boolean) => void;\n};\nexport const ErrorDialog: React.FC<React.PropsWithChildren<Props>> = ({\n open,\n title,\n children,\n onOpenChange,\n}) => {\n const handleClose = React.useCallback(() => {\n onOpenChange?.(false);\n }, [onOpenChange]);\n return (\n <AlertDialog open={open} onOpenChange={onOpenChange}>\n <AlertDialogContent className=\"gap-8 p-4 sm:max-w-md\">\n <AlertDialogHeader>\n <div className=\"text-destructive flex flex-col items-center\">\n <AlertTriangleIcon size={42} />\n <AlertDialogTitle className=\"text-xl font-medium\">\n {title || \"An error occurred\"}\n </AlertDialogTitle>\n </div>\n </AlertDialogHeader>\n {children}\n <AlertDialogFooter>\n <AlertDialogAction className=\"w-28\" onClick={handleClose}>\n Đóng\n </AlertDialogAction>\n </AlertDialogFooter>\n </AlertDialogContent>\n </AlertDialog>\n );\n};\n"],"mappings":"8LAkBaA,GAAyD,CACpE,OACA,QACA,WACA,kBACI,CACJ,IAAM,EAAcC,EAAAA,QAAM,gBAAkB,CAC1C,IAAe,KACd,CAAC,IACJ,OACE,EAAA,EAAA,KAACC,EAAAA,YAAAA,CAAkB,OAAoB,yBACrC,EAAA,EAAA,MAACC,EAAAA,mBAAAA,CAAmB,UAAU,mCAC5B,EAAA,EAAA,KAACC,EAAAA,kBAAAA,CAAAA,UACC,EAAA,EAAA,MAAC,MAAA,CAAI,UAAU,yDACb,EAAA,EAAA,KAACC,EAAAA,kBAAAA,CAAkB,KAAM,MACzB,EAAA,EAAA,KAACC,EAAAA,iBAAAA,CAAiB,UAAU,+BACzB,GAAS,2BAIf,GACD,EAAA,EAAA,KAACC,EAAAA,kBAAAA,CAAAA,UACC,EAAA,EAAA,KAACC,EAAAA,kBAAAA,CAAkB,UAAU,OAAO,QAAS,WAAa"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"flex-B5MQmxX8.cjs","names":["cn"],"sources":["../packages/components/layouts/flex.tsx"],"sourcesContent":["\"use client\";\nimport React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"@/lib/utils\";\n\nconst flexVariants = cva([\"relative flex\", \"text-sm\"], {\n variants: {\n vertical: {\n true: \"flex-col\",\n false: \"flex-row\",\n },\n width: {\n full: \"w-full\",\n auto: \"w-auto\",\n fit: \"w-fit\",\n screen: \"w-screen\",\n min: \"w-min\",\n max: \"w-max\",\n },\n wrap: {\n true: \"flex-wrap\",\n false: \"flex-nowrap\",\n },\n margin: {\n sm: \"m-2\",\n md: \"m-4\",\n lg: \"m-6\",\n xl: \"m-8\",\n none: \"m-0\",\n },\n padding: {\n sm: \"p-2\",\n md: \"p-4\",\n lg: \"p-6\",\n xl: \"p-8\",\n none: \"p-0\",\n },\n gap: {\n xs: \"gap-1\",\n sm: \"gap-2\",\n md: \"gap-4\",\n lg: \"gap-6\",\n xl: \"gap-8\",\n none: \"gap-0\",\n },\n justify: {\n start: \"justify-start\",\n center: \"justify-center\",\n end: \"justify-end\",\n between: \"justify-between\",\n around: \"justify-around\",\n evenly: \"justify-evenly\",\n stretch: \"justify-stretch\",\n },\n align: {\n start: \"items-start\",\n center: \"items-center\",\n end: \"items-end\",\n baseline: \"items-baseline\",\n stretch: \"items-stretch\",\n },\n },\n defaultVariants: {\n vertical: false,\n wrap: true,\n width: \"fit\",\n margin: \"none\",\n padding: \"sm\",\n gap: \"xs\",\n justify: \"start\",\n align: \"center\",\n },\n});\n\ntype Props = {\n className?: string;\n} & VariantProps<typeof flexVariants>;\nexport const Flex = ({\n vertical,\n wrap,\n width,\n margin,\n padding,\n gap,\n justify,\n align,\n className,\n children,\n}: React.PropsWithChildren<Props>) => {\n return (\n <div\n className={cn(\n flexVariants({\n vertical,\n width,\n wrap,\n margin,\n padding,\n gap,\n justify,\n align,\n className,\n }),\n )}\n >\n {children}\n </div>\n );\n};\n"],"mappings":"mMAMM,GAAA,EAAA,EAAA,KAAmB,CAAC,gBAAiB,WAAY,CACrD,SAAU,CACR,SAAU,CACR,KAAM,WACN,MAAO,YAET,MAAO,CACL,KAAM,SACN,KAAM,SACN,IAAK,QACL,OAAQ,WACR,IAAK,QACL,IAAK,SAEP,KAAM,CACJ,KAAM,YACN,MAAO,eAET,OAAQ,CACN,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,KAAM,OAER,QAAS,CACP,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,KAAM,OAER,IAAK,CACH,GAAI,QACJ,GAAI,QACJ,GAAI,QACJ,GAAI,QACJ,GAAI,QACJ,KAAM,SAER,QAAS,CACP,MAAO,gBACP,OAAQ,iBACR,IAAK,cACL,QAAS,kBACT,OAAQ,iBACR,OAAQ,iBACR,QAAS,mBAEX,MAAO,CACL,MAAO,cACP,OAAQ,eACR,IAAK,YACL,SAAU,iBACV,QAAS,kBAGb,gBAAiB,CACf,SAAU,GACV,KAAM,GACN,MAAO,MACP,OAAQ,OACR,QAAS,KACT,IAAK,KACL,QAAS,QACT,MAAO,YAOE,GAAQ,CACnB,WACA,OACA,QACA,SACA,UACA,MACA,UACA,QACA,YACA,eAGE,EAAA,EAAA,KAAC,MAAA,CACC,UAAWA,EAAAA,GACT,EAAa,CACX,WACA,QACA,OACA,SACA,UACA,MACA,UACA,QACA,eAIH"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"flex-CBAzUoXK.js","names":[],"sources":["../packages/components/layouts/flex.tsx"],"sourcesContent":["\"use client\";\nimport React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"@/lib/utils\";\n\nconst flexVariants = cva([\"relative flex\", \"text-sm\"], {\n variants: {\n vertical: {\n true: \"flex-col\",\n false: \"flex-row\",\n },\n width: {\n full: \"w-full\",\n auto: \"w-auto\",\n fit: \"w-fit\",\n screen: \"w-screen\",\n min: \"w-min\",\n max: \"w-max\",\n },\n wrap: {\n true: \"flex-wrap\",\n false: \"flex-nowrap\",\n },\n margin: {\n sm: \"m-2\",\n md: \"m-4\",\n lg: \"m-6\",\n xl: \"m-8\",\n none: \"m-0\",\n },\n padding: {\n sm: \"p-2\",\n md: \"p-4\",\n lg: \"p-6\",\n xl: \"p-8\",\n none: \"p-0\",\n },\n gap: {\n xs: \"gap-1\",\n sm: \"gap-2\",\n md: \"gap-4\",\n lg: \"gap-6\",\n xl: \"gap-8\",\n none: \"gap-0\",\n },\n justify: {\n start: \"justify-start\",\n center: \"justify-center\",\n end: \"justify-end\",\n between: \"justify-between\",\n around: \"justify-around\",\n evenly: \"justify-evenly\",\n stretch: \"justify-stretch\",\n },\n align: {\n start: \"items-start\",\n center: \"items-center\",\n end: \"items-end\",\n baseline: \"items-baseline\",\n stretch: \"items-stretch\",\n },\n },\n defaultVariants: {\n vertical: false,\n wrap: true,\n width: \"fit\",\n margin: \"none\",\n padding: \"sm\",\n gap: \"xs\",\n justify: \"start\",\n align: \"center\",\n },\n});\n\ntype Props = {\n className?: string;\n} & VariantProps<typeof flexVariants>;\nexport const Flex = ({\n vertical,\n wrap,\n width,\n margin,\n padding,\n gap,\n justify,\n align,\n className,\n children,\n}: React.PropsWithChildren<Props>) => {\n return (\n <div\n className={cn(\n flexVariants({\n vertical,\n width,\n wrap,\n margin,\n padding,\n gap,\n justify,\n align,\n className,\n }),\n )}\n >\n {children}\n </div>\n );\n};\n"],"mappings":"qJAMA,MAAM,EAAe,EAAI,CAAC,gBAAiB,WAAY,CACrD,SAAU,CACR,SAAU,CACR,KAAM,WACN,MAAO,YAET,MAAO,CACL,KAAM,SACN,KAAM,SACN,IAAK,QACL,OAAQ,WACR,IAAK,QACL,IAAK,SAEP,KAAM,CACJ,KAAM,YACN,MAAO,eAET,OAAQ,CACN,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,KAAM,OAER,QAAS,CACP,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,KAAM,OAER,IAAK,CACH,GAAI,QACJ,GAAI,QACJ,GAAI,QACJ,GAAI,QACJ,GAAI,QACJ,KAAM,SAER,QAAS,CACP,MAAO,gBACP,OAAQ,iBACR,IAAK,cACL,QAAS,kBACT,OAAQ,iBACR,OAAQ,iBACR,QAAS,mBAEX,MAAO,CACL,MAAO,cACP,OAAQ,eACR,IAAK,YACL,SAAU,iBACV,QAAS,kBAGb,gBAAiB,CACf,SAAU,GACV,KAAM,GACN,MAAO,MACP,OAAQ,OACR,QAAS,KACT,IAAK,KACL,QAAS,QACT,MAAO,YAOE,GAAQ,CACnB,WACA,OACA,QACA,SACA,UACA,MACA,UACA,QACA,YACA,cAGE,EAAC,MAAA,CACC,UAAW,EACT,EAAa,CACX,WACA,QACA,OACA,SACA,UACA,MACA,UACA,QACA,eAIH"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"form-BMnG2xLt.js","names":["Label","SlotPrimitive"],"sources":["../packages/components/ui/form.tsx"],"sourcesContent":["\"use client\";\nimport React from \"react\";\nimport {\n Controller,\n type ControllerProps,\n type FieldPath,\n type FieldValues,\n FormProvider,\n useFormContext,\n useFormState,\n} from \"react-hook-form\";\nimport { Label as LabelPrimitive, Slot as SlotPrimitive } from \"radix-ui\";\n\nimport { Label } from \"@/components/ui/label\";\nimport { cn } from \"@/lib/utils\";\n\nconst Form = FormProvider;\n\ntype FormFieldContextValue<\n TFieldValues extends FieldValues = FieldValues,\n TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,\n> = {\n name: TName;\n};\n\nconst FormFieldContext = React.createContext<FormFieldContextValue>(\n {} as FormFieldContextValue,\n);\n\nconst FormField = <\n TFieldValues extends FieldValues = FieldValues,\n TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,\n>({\n ...props\n}: ControllerProps<TFieldValues, TName>) => {\n return (\n <FormFieldContext.Provider value={{ name: props.name }}>\n <Controller {...props} />\n </FormFieldContext.Provider>\n );\n};\n\nconst useFormField = () => {\n const fieldContext = React.useContext(FormFieldContext);\n const itemContext = React.useContext(FormItemContext);\n const { getFieldState, control, resetField } = useFormContext();\n const formState = useFormState({ name: fieldContext.name });\n const fieldState = getFieldState(fieldContext.name, formState);\n\n if (!fieldContext) {\n throw new Error(\"useFormField should be used within <FormField>\");\n }\n\n const { id } = itemContext;\n\n return {\n id,\n control,\n resetField,\n name: fieldContext.name,\n formItemId: `${id}-form-item`,\n formDescriptionId: `${id}-form-item-description`,\n formMessageId: `${id}-form-item-message`,\n ...fieldState,\n };\n};\n\ntype FormItemContextValue = {\n id: string;\n};\n\nconst FormItemContext = React.createContext<FormItemContextValue>(\n {} as FormItemContextValue,\n);\n\nfunction FormItem({ className, ...props }: React.ComponentProps<\"div\">) {\n const id = React.useId();\n\n return (\n <FormItemContext.Provider value={{ id }}>\n <div\n data-slot=\"form-item\"\n className={cn(\"grid gap-1\", className)}\n {...props}\n />\n </FormItemContext.Provider>\n );\n}\n\nfunction FormLabel({\n className,\n ...props\n}: React.ComponentProps<typeof LabelPrimitive.Root>) {\n const { formItemId } = useFormField();\n return (\n <Label\n data-slot=\"form-label\"\n className={cn(\"text-xs\", className)}\n htmlFor={formItemId}\n {...props}\n />\n );\n}\n\nfunction FormControl({\n ...props\n}: React.ComponentProps<typeof SlotPrimitive.Slot>) {\n const { error, formItemId, formDescriptionId, formMessageId } =\n useFormField();\n\n return (\n <SlotPrimitive.Slot\n data-slot=\"form-control\"\n id={formItemId}\n aria-describedby={\n !error\n ? `${formDescriptionId}`\n : `${formDescriptionId} ${formMessageId}`\n }\n aria-invalid={!!error}\n {...props}\n />\n );\n}\n\nfunction FormDescription({ className, ...props }: React.ComponentProps<\"p\">) {\n const { formDescriptionId } = useFormField();\n\n return (\n <p\n data-slot=\"form-description\"\n id={formDescriptionId}\n className={cn(\"text-muted-foreground text-sm\", className)}\n {...props}\n />\n );\n}\n\nfunction FormMessage({\n className,\n children,\n ...props\n}: React.ComponentProps<\"p\">) {\n const { error, formMessageId } = useFormField();\n\n return (\n <span\n data-slot=\"form-message\"\n id={formMessageId}\n className={cn(\"text-destructive text-xs\", className)}\n {...props}\n >\n {error ? String(error?.message ?? \"\") : children}\n </span>\n );\n}\n\n// eslint-disable-next-line react-refresh/only-export-components\nexport {\n Form,\n FormControl,\n FormDescription,\n FormField,\n FormItem,\n FormLabel,\n FormMessage,\n useFormField,\n};\n"],"mappings":"kSAgBA,MAAM,EAAO,EASP,EAAmB,EAAM,cAC7B,IAGI,GAGJ,CACA,GAAG,KAGD,EAAC,EAAiB,SAAA,CAAS,MAAO,CAAE,KAAM,EAAM,eAC9C,EAAC,EAAA,CAAW,GAAI,MAKhB,MAAqB,CACzB,IAAM,EAAe,EAAM,WAAW,GAChC,EAAc,EAAM,WAAW,GAC/B,CAAE,gBAAe,UAAS,cAAe,IACzC,EAAY,EAAa,CAAE,KAAM,EAAa,OAC9C,EAAa,EAAc,EAAa,KAAM,GAEpD,GAAI,CAAC,EACH,MAAU,MAAM,kDAGlB,GAAM,CAAE,MAAO,EAEf,MAAO,CACL,KACA,UACA,aACA,KAAM,EAAa,KACnB,WAAY,GAAG,EAAG,YAClB,kBAAmB,GAAG,EAAG,wBACzB,cAAe,GAAG,EAAG,oBACrB,GAAG,IAQD,EAAkB,EAAM,cAC5B,IAGF,SAAS,EAAS,CAAE,YAAW,GAAG,GAAsC,CACtE,IAAM,EAAK,EAAM,QAEjB,OACE,EAAC,EAAgB,SAAA,CAAS,MAAO,CAAE,eACjC,EAAC,MAAA,CACC,YAAU,YACV,UAAW,EAAG,aAAc,GAC5B,GAAI,MAMZ,SAAS,EAAU,CACjB,YACA,GAAG,GACgD,CACnD,GAAM,CAAE,cAAe,IACvB,OACE,EAACA,EAAAA,CACC,YAAU,aACV,UAAW,EAAG,UAAW,GACzB,QAAS,EACT,GAAI,IAKV,SAAS,EAAY,CACnB,GAAG,GAC+C,CAClD,GAAM,CAAE,QAAO,aAAY,oBAAmB,iBAC5C,IAEF,OACE,EAACC,EAAc,KAAA,CACb,YAAU,eACV,GAAI,EACJ,mBACG,EAEG,GAAG,EAAkB,GAAG,IADxB,GAAG,IAGT,eAAc,CAAC,CAAC,EAChB,GAAI,IAKV,SAAS,EAAgB,CAAE,YAAW,GAAG,GAAoC,CAC3E,GAAM,CAAE,qBAAsB,IAE9B,OACE,EAAC,IAAA,CACC,YAAU,mBACV,GAAI,EACJ,UAAW,EAAG,gCAAiC,GAC/C,GAAI,IAKV,SAAS,EAAY,CACnB,YACA,WACA,GAAG,GACyB,CAC5B,GAAM,CAAE,QAAO,iBAAkB,IAEjC,OACE,EAAC,OAAA,CACC,YAAU,eACV,GAAI,EACJ,UAAW,EAAG,2BAA4B,GAC1C,GAAI,WAEH,EAAQ,OAAO,GAAO,SAAW,IAAM"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"form-BbU1TIro.cjs","names":["FormProvider","React","Controller","cn","Label","SlotPrimitive"],"sources":["../packages/components/ui/form.tsx"],"sourcesContent":["\"use client\";\nimport React from \"react\";\nimport {\n Controller,\n type ControllerProps,\n type FieldPath,\n type FieldValues,\n FormProvider,\n useFormContext,\n useFormState,\n} from \"react-hook-form\";\nimport { Label as LabelPrimitive, Slot as SlotPrimitive } from \"radix-ui\";\n\nimport { Label } from \"@/components/ui/label\";\nimport { cn } from \"@/lib/utils\";\n\nconst Form = FormProvider;\n\ntype FormFieldContextValue<\n TFieldValues extends FieldValues = FieldValues,\n TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,\n> = {\n name: TName;\n};\n\nconst FormFieldContext = React.createContext<FormFieldContextValue>(\n {} as FormFieldContextValue,\n);\n\nconst FormField = <\n TFieldValues extends FieldValues = FieldValues,\n TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,\n>({\n ...props\n}: ControllerProps<TFieldValues, TName>) => {\n return (\n <FormFieldContext.Provider value={{ name: props.name }}>\n <Controller {...props} />\n </FormFieldContext.Provider>\n );\n};\n\nconst useFormField = () => {\n const fieldContext = React.useContext(FormFieldContext);\n const itemContext = React.useContext(FormItemContext);\n const { getFieldState, control, resetField } = useFormContext();\n const formState = useFormState({ name: fieldContext.name });\n const fieldState = getFieldState(fieldContext.name, formState);\n\n if (!fieldContext) {\n throw new Error(\"useFormField should be used within <FormField>\");\n }\n\n const { id } = itemContext;\n\n return {\n id,\n control,\n resetField,\n name: fieldContext.name,\n formItemId: `${id}-form-item`,\n formDescriptionId: `${id}-form-item-description`,\n formMessageId: `${id}-form-item-message`,\n ...fieldState,\n };\n};\n\ntype FormItemContextValue = {\n id: string;\n};\n\nconst FormItemContext = React.createContext<FormItemContextValue>(\n {} as FormItemContextValue,\n);\n\nfunction FormItem({ className, ...props }: React.ComponentProps<\"div\">) {\n const id = React.useId();\n\n return (\n <FormItemContext.Provider value={{ id }}>\n <div\n data-slot=\"form-item\"\n className={cn(\"grid gap-1\", className)}\n {...props}\n />\n </FormItemContext.Provider>\n );\n}\n\nfunction FormLabel({\n className,\n ...props\n}: React.ComponentProps<typeof LabelPrimitive.Root>) {\n const { formItemId } = useFormField();\n return (\n <Label\n data-slot=\"form-label\"\n className={cn(\"text-xs\", className)}\n htmlFor={formItemId}\n {...props}\n />\n );\n}\n\nfunction FormControl({\n ...props\n}: React.ComponentProps<typeof SlotPrimitive.Slot>) {\n const { error, formItemId, formDescriptionId, formMessageId } =\n useFormField();\n\n return (\n <SlotPrimitive.Slot\n data-slot=\"form-control\"\n id={formItemId}\n aria-describedby={\n !error\n ? `${formDescriptionId}`\n : `${formDescriptionId} ${formMessageId}`\n }\n aria-invalid={!!error}\n {...props}\n />\n );\n}\n\nfunction FormDescription({ className, ...props }: React.ComponentProps<\"p\">) {\n const { formDescriptionId } = useFormField();\n\n return (\n <p\n data-slot=\"form-description\"\n id={formDescriptionId}\n className={cn(\"text-muted-foreground text-sm\", className)}\n {...props}\n />\n );\n}\n\nfunction FormMessage({\n className,\n children,\n ...props\n}: React.ComponentProps<\"p\">) {\n const { error, formMessageId } = useFormField();\n\n return (\n <span\n data-slot=\"form-message\"\n id={formMessageId}\n className={cn(\"text-destructive text-xs\", className)}\n {...props}\n >\n {error ? String(error?.message ?? \"\") : children}\n </span>\n );\n}\n\n// eslint-disable-next-line react-refresh/only-export-components\nexport {\n Form,\n FormControl,\n FormDescription,\n FormField,\n FormItem,\n FormLabel,\n FormMessage,\n useFormField,\n};\n"],"mappings":"6PAgBM,EAAOA,EAAAA,aASP,EAAmBC,EAAAA,QAAM,cAC7B,IAGI,GAGJ,CACA,GAAG,MAGD,EAAA,EAAA,KAAC,EAAiB,SAAA,CAAS,MAAO,CAAE,KAAM,EAAM,gBAC9C,EAAA,EAAA,KAACC,EAAAA,WAAAA,CAAW,GAAI,MAKhB,MAAqB,CACzB,IAAM,EAAeD,EAAAA,QAAM,WAAW,GAChC,EAAcA,EAAAA,QAAM,WAAW,GAC/B,CAAE,gBAAe,UAAS,eAAA,EAAA,EAAA,kBAC1B,GAAA,EAAA,EAAA,cAAyB,CAAE,KAAM,EAAa,OAC9C,EAAa,EAAc,EAAa,KAAM,GAEpD,GAAI,CAAC,EACH,MAAU,MAAM,kDAGlB,GAAM,CAAE,MAAO,EAEf,MAAO,CACL,KACA,UACA,aACA,KAAM,EAAa,KACnB,WAAY,GAAG,EAAG,YAClB,kBAAmB,GAAG,EAAG,wBACzB,cAAe,GAAG,EAAG,oBACrB,GAAG,IAQD,EAAkBA,EAAAA,QAAM,cAC5B,IAGF,SAAS,EAAS,CAAE,YAAW,GAAG,GAAsC,CACtE,IAAM,EAAKA,EAAAA,QAAM,QAEjB,OACE,EAAA,EAAA,KAAC,EAAgB,SAAA,CAAS,MAAO,CAAE,gBACjC,EAAA,EAAA,KAAC,MAAA,CACC,YAAU,YACV,UAAWE,EAAAA,GAAG,aAAc,GAC5B,GAAI,MAMZ,SAAS,EAAU,CACjB,YACA,GAAG,GACgD,CACnD,GAAM,CAAE,cAAe,IACvB,OACE,EAAA,EAAA,KAACC,EAAAA,MAAAA,CACC,YAAU,aACV,UAAWD,EAAAA,GAAG,UAAW,GACzB,QAAS,EACT,GAAI,IAKV,SAAS,EAAY,CACnB,GAAG,GAC+C,CAClD,GAAM,CAAE,QAAO,aAAY,oBAAmB,iBAC5C,IAEF,OACE,EAAA,EAAA,KAACE,EAAAA,KAAc,KAAA,CACb,YAAU,eACV,GAAI,EACJ,mBACG,EAEG,GAAG,EAAkB,GAAG,IADxB,GAAG,IAGT,eAAc,CAAC,CAAC,EAChB,GAAI,IAKV,SAAS,EAAgB,CAAE,YAAW,GAAG,GAAoC,CAC3E,GAAM,CAAE,qBAAsB,IAE9B,OACE,EAAA,EAAA,KAAC,IAAA,CACC,YAAU,mBACV,GAAI,EACJ,UAAWF,EAAAA,GAAG,gCAAiC,GAC/C,GAAI,IAKV,SAAS,EAAY,CACnB,YACA,WACA,GAAG,GACyB,CAC5B,GAAM,CAAE,QAAO,iBAAkB,IAEjC,OACE,EAAA,EAAA,KAAC,OAAA,CACC,YAAU,eACV,GAAI,EACJ,UAAWA,EAAAA,GAAG,2BAA4B,GAC1C,GAAI,WAEH,EAAQ,OAAO,GAAO,SAAW,IAAM"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"form-wrapper-DeSGl64P.cjs","names":["React","Form","ErrorDialog","ErrorMessage","AlertCircleIcon"],"sources":["../packages/components/forms/form-wrapper.tsx"],"sourcesContent":["import React from \"react\";\nimport {\n type FieldValues,\n type FormState,\n type SubmitErrorHandler,\n type SubmitHandler,\n useForm,\n type UseFormProps,\n} from \"react-hook-form\";\nimport { AlertCircleIcon } from \"lucide-react\";\n\nimport type { AnyEntity } from \"@/types\";\nimport { ErrorMessage } from \"@hookform/error-message\";\n\nimport { ErrorDialog } from \"../dialogs/error-dialog\";\nimport { Form } from \"../ui/form\";\n\ntype Props<TFieldValues extends FieldValues = FieldValues> = {\n form: UseFormProps<TFieldValues>;\n isResetAfterSubmit?: boolean;\n className?: string;\n onSubmit: (\n data: TFieldValues,\n formState: FormState<FieldValues>,\n dirtyFields: FormState<FieldValues>[\"dirtyFields\"],\n ) => void | Promise<void>;\n onError?: SubmitErrorHandler<TFieldValues>;\n onSubcribe?: (values: TFieldValues) => void;\n};\n\nexport const FormWrapper = <TFieldValues extends FieldValues = FieldValues>({\n form: FormConfig,\n isResetAfterSubmit = true,\n className,\n onSubmit,\n onError,\n onSubcribe,\n children,\n}: React.PropsWithChildren<Props<TFieldValues>>) => {\n const form = useForm({\n ...FormConfig,\n criteriaMode: \"all\",\n });\n\n const { formState, reset, handleSubmit, subscribe } = form;\n const { dirtyFields } = formState;\n\n const [errorOpen, setErrorOpen] = React.useState<boolean>(false);\n\n const handleFormSubmit = React.useCallback<SubmitHandler<TFieldValues>>(\n (data) => {\n onSubmit(data, formState, dirtyFields);\n if (isResetAfterSubmit) {\n reset();\n }\n },\n [dirtyFields, formState, isResetAfterSubmit, onSubmit, reset],\n );\n\n const handleFormError = React.useCallback<SubmitErrorHandler<TFieldValues>>(\n (errors) => {\n const errorKeys = Object.keys(errors);\n if (errorKeys.length === 0) return;\n onError?.(errors);\n setErrorOpen(true);\n },\n [onError],\n );\n\n React.useEffect(() => {\n if (!onSubcribe) return;\n const callback = subscribe({\n formState: { values: true },\n callback: ({ values }) => {\n onSubcribe(values);\n },\n });\n return () => callback();\n }, [onSubcribe, subscribe]);\n\n return (\n <Form {...form}>\n <form\n className={className}\n onSubmit={handleSubmit(handleFormSubmit, handleFormError)}\n >\n {children}\n </form>\n <ErrorDialog\n open={errorOpen}\n title=\"Lỗi nhập dữ liệu\"\n description=\"An unexpected error has occurred. Please check the errors below and try again.\"\n onOpenChange={setErrorOpen}\n >\n {errorOpen && (\n <>\n {Object.keys(formState.errors).length > 0 ? (\n <div className=\"flex max-w-100 flex-col gap-2 px-4\">\n <p className=\"text-muted-foreground text-sm font-semibold\">\n Cảnh báo: Vui lòng kiểm tra các lỗi sau:\n </p>\n <div className=\"flex flex-col space-y-1\">\n {Object.entries(formState.errors).map(([key]) => (\n <ErrorMessage\n key={key}\n errors={formState.errors}\n name={key as AnyEntity}\n render={({ messages }) => {\n return (\n <>\n {messages\n ? Object.entries(messages).map(\n ([type, message]) => {\n return (\n <div\n key={type}\n className=\"text-accent-foreground flex items-start gap-x-1 truncate text-sm font-normal\"\n >\n <AlertCircleIcon\n size={16}\n className=\"text-destructive mt-0.5 min-w-4 flex-0\"\n />\n <p className=\"line-clamp-2 flex-1 text-wrap\">\n {message}\n </p>\n </div>\n );\n },\n )\n : null}\n </>\n );\n }}\n />\n ))}\n </div>\n </div>\n ) : (\n <p className=\"text-muted-foreground text-sm\">No errors found.</p>\n )}\n </>\n )}\n </ErrorDialog>\n </Form>\n );\n};\n"],"mappings":"uTA8Ba,GAA+D,CAC1E,KAAM,EACN,qBAAqB,GACrB,YACA,WACA,UACA,aACA,cACkD,CAClD,IAAM,GAAA,EAAA,EAAA,SAAe,CACnB,GAAG,EACH,aAAc,QAGV,CAAE,YAAW,QAAO,eAAc,aAAc,EAChD,CAAE,eAAgB,EAElB,CAAC,EAAW,GAAgBA,EAAAA,QAAM,SAAkB,IAEpD,EAAmBA,EAAAA,QAAM,YAC5B,GAAS,CACR,EAAS,EAAM,EAAW,GACtB,GACF,KAGJ,CAAC,EAAa,EAAW,EAAoB,EAAU,IAGnD,EAAkBA,EAAAA,QAAM,YAC3B,GAAW,CACV,IAAM,EAAY,OAAO,KAAK,GAC1B,EAAU,SAAW,IACzB,IAAU,GACV,EAAa,MAEf,CAAC,IAcH,OAXA,EAAA,QAAM,cAAgB,CACpB,GAAI,CAAC,EAAY,OACjB,IAAM,EAAW,EAAU,CACzB,UAAW,CAAE,OAAQ,IACrB,UAAW,CAAE,YAAa,CACxB,EAAW,MAGf,UAAa,KACZ,CAAC,EAAY,KAGd,EAAA,EAAA,MAACC,EAAAA,KAAAA,CAAK,GAAI,aACR,EAAA,EAAA,KAAC,OAAA,CACY,YACX,SAAU,EAAa,EAAkB,GAExC,cAEH,EAAA,EAAA,KAACC,EAAAA,YAAAA,CACC,KAAM,EACN,MAAM,mBACN,YAAY,iFACZ,aAAc,WAEb,IACC,EAAA,EAAA,KAAA,EAAA,SAAA,CAAA,SACG,OAAO,KAAK,EAAU,QAAQ,OAAS,GACtC,EAAA,EAAA,MAAC,MAAA,CAAI,UAAU,gDACb,EAAA,EAAA,KAAC,IAAA,CAAE,UAAU,uDAA8C,8CAG3D,EAAA,EAAA,KAAC,MAAA,CAAI,UAAU,mCACZ,OAAO,QAAQ,EAAU,QAAQ,KAAK,CAAC,MACtC,EAAA,EAAA,KAACC,EAAAA,aAAAA,CAEC,OAAQ,EAAU,OAClB,KAAM,EACN,QAAS,CAAE,eAEP,EAAA,EAAA,KAAA,EAAA,SAAA,CAAA,SACG,EACG,OAAO,QAAQ,GAAU,KACtB,CAAC,EAAM,MAEJ,EAAA,EAAA,MAAC,MAAA,CAEC,UAAU,0FAEV,EAAA,EAAA,KAACC,EAAAA,gBAAAA,CACC,KAAM,GACN,UAAU,4CAEZ,EAAA,EAAA,KAAC,IAAA,CAAE,UAAU,yCACV,MARE,IAcb,QAzBL,UAkCb,EAAA,EAAA,KAAC,IAAA,CAAE,UAAU,yCAAgC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"form-wrapper-wHzrskjb.js","names":[],"sources":["../packages/components/forms/form-wrapper.tsx"],"sourcesContent":["import React from \"react\";\nimport {\n type FieldValues,\n type FormState,\n type SubmitErrorHandler,\n type SubmitHandler,\n useForm,\n type UseFormProps,\n} from \"react-hook-form\";\nimport { AlertCircleIcon } from \"lucide-react\";\n\nimport type { AnyEntity } from \"@/types\";\nimport { ErrorMessage } from \"@hookform/error-message\";\n\nimport { ErrorDialog } from \"../dialogs/error-dialog\";\nimport { Form } from \"../ui/form\";\n\ntype Props<TFieldValues extends FieldValues = FieldValues> = {\n form: UseFormProps<TFieldValues>;\n isResetAfterSubmit?: boolean;\n className?: string;\n onSubmit: (\n data: TFieldValues,\n formState: FormState<FieldValues>,\n dirtyFields: FormState<FieldValues>[\"dirtyFields\"],\n ) => void | Promise<void>;\n onError?: SubmitErrorHandler<TFieldValues>;\n onSubcribe?: (values: TFieldValues) => void;\n};\n\nexport const FormWrapper = <TFieldValues extends FieldValues = FieldValues>({\n form: FormConfig,\n isResetAfterSubmit = true,\n className,\n onSubmit,\n onError,\n onSubcribe,\n children,\n}: React.PropsWithChildren<Props<TFieldValues>>) => {\n const form = useForm({\n ...FormConfig,\n criteriaMode: \"all\",\n });\n\n const { formState, reset, handleSubmit, subscribe } = form;\n const { dirtyFields } = formState;\n\n const [errorOpen, setErrorOpen] = React.useState<boolean>(false);\n\n const handleFormSubmit = React.useCallback<SubmitHandler<TFieldValues>>(\n (data) => {\n onSubmit(data, formState, dirtyFields);\n if (isResetAfterSubmit) {\n reset();\n }\n },\n [dirtyFields, formState, isResetAfterSubmit, onSubmit, reset],\n );\n\n const handleFormError = React.useCallback<SubmitErrorHandler<TFieldValues>>(\n (errors) => {\n const errorKeys = Object.keys(errors);\n if (errorKeys.length === 0) return;\n onError?.(errors);\n setErrorOpen(true);\n },\n [onError],\n );\n\n React.useEffect(() => {\n if (!onSubcribe) return;\n const callback = subscribe({\n formState: { values: true },\n callback: ({ values }) => {\n onSubcribe(values);\n },\n });\n return () => callback();\n }, [onSubcribe, subscribe]);\n\n return (\n <Form {...form}>\n <form\n className={className}\n onSubmit={handleSubmit(handleFormSubmit, handleFormError)}\n >\n {children}\n </form>\n <ErrorDialog\n open={errorOpen}\n title=\"Lỗi nhập dữ liệu\"\n description=\"An unexpected error has occurred. Please check the errors below and try again.\"\n onOpenChange={setErrorOpen}\n >\n {errorOpen && (\n <>\n {Object.keys(formState.errors).length > 0 ? (\n <div className=\"flex max-w-100 flex-col gap-2 px-4\">\n <p className=\"text-muted-foreground text-sm font-semibold\">\n Cảnh báo: Vui lòng kiểm tra các lỗi sau:\n </p>\n <div className=\"flex flex-col space-y-1\">\n {Object.entries(formState.errors).map(([key]) => (\n <ErrorMessage\n key={key}\n errors={formState.errors}\n name={key as AnyEntity}\n render={({ messages }) => {\n return (\n <>\n {messages\n ? Object.entries(messages).map(\n ([type, message]) => {\n return (\n <div\n key={type}\n className=\"text-accent-foreground flex items-start gap-x-1 truncate text-sm font-normal\"\n >\n <AlertCircleIcon\n size={16}\n className=\"text-destructive mt-0.5 min-w-4 flex-0\"\n />\n <p className=\"line-clamp-2 flex-1 text-wrap\">\n {message}\n </p>\n </div>\n );\n },\n )\n : null}\n </>\n );\n }}\n />\n ))}\n </div>\n </div>\n ) : (\n <p className=\"text-muted-foreground text-sm\">No errors found.</p>\n )}\n </>\n )}\n </ErrorDialog>\n </Form>\n );\n};\n"],"mappings":"wUA8BA,MAAa,GAA+D,CAC1E,KAAM,EACN,qBAAqB,GACrB,YACA,WACA,UACA,aACA,cACkD,CAClD,IAAM,EAAO,EAAQ,CACnB,GAAG,EACH,aAAc,QAGV,CAAE,YAAW,QAAO,eAAc,aAAc,EAChD,CAAE,eAAgB,EAElB,CAAC,EAAW,GAAgB,EAAM,SAAkB,IAEpD,EAAmB,EAAM,YAC5B,GAAS,CACR,EAAS,EAAM,EAAW,GACtB,GACF,KAGJ,CAAC,EAAa,EAAW,EAAoB,EAAU,IAGnD,EAAkB,EAAM,YAC3B,GAAW,CACV,IAAM,EAAY,OAAO,KAAK,GAC1B,EAAU,SAAW,IACzB,IAAU,GACV,EAAa,MAEf,CAAC,IAcH,OAXA,EAAM,cAAgB,CACpB,GAAI,CAAC,EAAY,OACjB,IAAM,EAAW,EAAU,CACzB,UAAW,CAAE,OAAQ,IACrB,UAAW,CAAE,YAAa,CACxB,EAAW,MAGf,UAAa,KACZ,CAAC,EAAY,IAGd,EAAC,EAAA,CAAK,GAAI,YACR,EAAC,OAAA,CACY,YACX,SAAU,EAAa,EAAkB,GAExC,aAEH,EAAC,EAAA,CACC,KAAM,EACN,MAAM,mBACN,YAAY,iFACZ,aAAc,WAEb,GACC,EAAA,EAAA,CAAA,SACG,OAAO,KAAK,EAAU,QAAQ,OAAS,EACtC,EAAC,MAAA,CAAI,UAAU,+CACb,EAAC,IAAA,CAAE,UAAU,uDAA8C,6CAG3D,EAAC,MAAA,CAAI,UAAU,mCACZ,OAAO,QAAQ,EAAU,QAAQ,KAAK,CAAC,KACtC,EAAC,EAAA,CAEC,OAAQ,EAAU,OAClB,KAAM,EACN,QAAS,CAAE,cAEP,EAAA,EAAA,CAAA,SACG,EACG,OAAO,QAAQ,GAAU,KACtB,CAAC,EAAM,KAEJ,EAAC,MAAA,CAEC,UAAU,yFAEV,EAAC,EAAA,CACC,KAAM,GACN,UAAU,2CAEZ,EAAC,IAAA,CAAE,UAAU,yCACV,MARE,IAcb,QAzBL,SAkCb,EAAC,IAAA,CAAE,UAAU,yCAAgC"}
@@ -1,2 +0,0 @@
1
- import{cn as e}from"./utils-D9AH0PUV.js";import t from"react";import{jsx as n}from"react/jsx-runtime";function r({className:r,type:i,onChange:a,onValueChange:o,...s}){let c=t.useCallback(e=>{a?.(e),o?.(e.target.value)},[a,o]);return n(`input`,{type:i,"data-slot":`input`,className:e(`flex h-9 w-full min-w-0`,`border-input shadow-input rounded-md border`,`px-3 py-1`,`bg-transparent`,`caret-primary text-sm`,`transition-[color,box-shadow] outline-none`,`placeholder:text-muted-foreground`,`selection:bg-primary`,`selection:text-primary-foreground`,`file:inline-flex`,`file:h-7`,`file:border-0`,`file:bg-transparent`,`file:text-sm`,`file:text-foreground`,`file:font-medium`,`disabled:pointer-events-none`,`disabled:cursor-not-allowed`,`disabled:opacity-50`,`focus-visible:ring-4`,`focus-visible:ring-ring`,`focus-visible:border-primary/60`,`aria-invalid:ring-destructive/40`,`aria-invalid:border-destructive`,r),...s,onChange:c})}export{r as Input};
2
- //# sourceMappingURL=input-B030EUY5.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"input-B030EUY5.js","names":[],"sources":["../packages/components/ui/input.tsx"],"sourcesContent":["\"use client\";\nimport React from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nfunction Input({\n className,\n type,\n onChange,\n onValueChange,\n ...props\n}: React.ComponentProps<\"input\"> & {\n onValueChange?: (value: string) => void;\n}) {\n const handleChange = React.useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n onChange?.(e);\n onValueChange?.(e.target.value);\n },\n [onChange, onValueChange],\n );\n return (\n <input\n type={type}\n data-slot=\"input\"\n className={cn(\n \"flex h-9 w-full min-w-0\",\n \"border-input shadow-input rounded-md border\",\n \"px-3 py-1\",\n \"bg-transparent\",\n \"caret-primary text-sm\",\n \"transition-[color,box-shadow] outline-none\",\n \"placeholder:text-muted-foreground\",\n \"selection:bg-primary\",\n \"selection:text-primary-foreground\",\n \"file:inline-flex\",\n \"file:h-7\",\n \"file:border-0\",\n \"file:bg-transparent\",\n \"file:text-sm\",\n \"file:text-foreground\",\n \"file:font-medium\",\n \"disabled:pointer-events-none\",\n \"disabled:cursor-not-allowed\",\n \"disabled:opacity-50\",\n \"focus-visible:ring-4\",\n \"focus-visible:ring-ring\",\n \"focus-visible:border-primary/60\",\n \"aria-invalid:ring-destructive/40\",\n \"aria-invalid:border-destructive\",\n className,\n )}\n {...props}\n onChange={handleChange}\n />\n );\n}\n\nexport { Input };\n"],"mappings":"sGAKA,SAAS,EAAM,CACb,YACA,OACA,WACA,gBACA,GAAG,GAGF,CACD,IAAM,EAAe,EAAM,YACxB,GAA2C,CAC1C,IAAW,GACX,IAAgB,EAAE,OAAO,QAE3B,CAAC,EAAU,IAEb,OACE,EAAC,QAAA,CACO,OACN,YAAU,QACV,UAAW,EACT,0BACA,8CACA,YACA,iBACA,wBACA,6CACA,oCACA,uBACA,oCACA,mBACA,WACA,gBACA,sBACA,eACA,uBACA,mBACA,+BACA,8BACA,sBACA,uBACA,0BACA,kCACA,mCACA,kCACA,GAEF,GAAI,EACJ,SAAU"}
@@ -1,2 +0,0 @@
1
- const e=require(`./chunk-CUT6urMc.cjs`),t=require(`./utils-BsjVK5EW.cjs`),n=e.__toESM(require(`react`)),r=e.__toESM(require(`react/jsx-runtime`));function i({className:e,type:i,onChange:a,onValueChange:o,...s}){let c=n.default.useCallback(e=>{a?.(e),o?.(e.target.value)},[a,o]);return(0,r.jsx)(`input`,{type:i,"data-slot":`input`,className:t.cn(`flex h-9 w-full min-w-0`,`border-input shadow-input rounded-md border`,`px-3 py-1`,`bg-transparent`,`caret-primary text-sm`,`transition-[color,box-shadow] outline-none`,`placeholder:text-muted-foreground`,`selection:bg-primary`,`selection:text-primary-foreground`,`file:inline-flex`,`file:h-7`,`file:border-0`,`file:bg-transparent`,`file:text-sm`,`file:text-foreground`,`file:font-medium`,`disabled:pointer-events-none`,`disabled:cursor-not-allowed`,`disabled:opacity-50`,`focus-visible:ring-4`,`focus-visible:ring-ring`,`focus-visible:border-primary/60`,`aria-invalid:ring-destructive/40`,`aria-invalid:border-destructive`,e),...s,onChange:c})}Object.defineProperty(exports,`Input`,{enumerable:!0,get:function(){return i}});
2
- //# sourceMappingURL=input-mUjZrK2c.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"input-mUjZrK2c.cjs","names":["React","cn"],"sources":["../packages/components/ui/input.tsx"],"sourcesContent":["\"use client\";\nimport React from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nfunction Input({\n className,\n type,\n onChange,\n onValueChange,\n ...props\n}: React.ComponentProps<\"input\"> & {\n onValueChange?: (value: string) => void;\n}) {\n const handleChange = React.useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n onChange?.(e);\n onValueChange?.(e.target.value);\n },\n [onChange, onValueChange],\n );\n return (\n <input\n type={type}\n data-slot=\"input\"\n className={cn(\n \"flex h-9 w-full min-w-0\",\n \"border-input shadow-input rounded-md border\",\n \"px-3 py-1\",\n \"bg-transparent\",\n \"caret-primary text-sm\",\n \"transition-[color,box-shadow] outline-none\",\n \"placeholder:text-muted-foreground\",\n \"selection:bg-primary\",\n \"selection:text-primary-foreground\",\n \"file:inline-flex\",\n \"file:h-7\",\n \"file:border-0\",\n \"file:bg-transparent\",\n \"file:text-sm\",\n \"file:text-foreground\",\n \"file:font-medium\",\n \"disabled:pointer-events-none\",\n \"disabled:cursor-not-allowed\",\n \"disabled:opacity-50\",\n \"focus-visible:ring-4\",\n \"focus-visible:ring-ring\",\n \"focus-visible:border-primary/60\",\n \"aria-invalid:ring-destructive/40\",\n \"aria-invalid:border-destructive\",\n className,\n )}\n {...props}\n onChange={handleChange}\n />\n );\n}\n\nexport { Input };\n"],"mappings":"kJAKA,SAAS,EAAM,CACb,YACA,OACA,WACA,gBACA,GAAG,GAGF,CACD,IAAM,EAAeA,EAAAA,QAAM,YACxB,GAA2C,CAC1C,IAAW,GACX,IAAgB,EAAE,OAAO,QAE3B,CAAC,EAAU,IAEb,OACE,EAAA,EAAA,KAAC,QAAA,CACO,OACN,YAAU,QACV,UAAWC,EAAAA,GACT,0BACA,8CACA,YACA,iBACA,wBACA,6CACA,oCACA,uBACA,oCACA,mBACA,WACA,gBACA,sBACA,eACA,uBACA,mBACA,+BACA,8BACA,sBACA,uBACA,0BACA,kCACA,mCACA,kCACA,GAEF,GAAI,EACJ,SAAU"}
@@ -1,2 +0,0 @@
1
- import{cn as e}from"./utils-D9AH0PUV.js";import t from"react";import{jsx as n}from"react/jsx-runtime";import{Label as r}from"radix-ui";function i({className:t,...i}){return n(r.Root,{"data-slot":`label`,className:e(`text-secondary-foreground`,`flex items-center gap-2`,`text-sm leading-none font-medium select-none`,`group-data-[disabled=true]:pointer-events-none`,`group-data-[disabled=true]:opacity-50`,`peer-disabled:cursor-not-allowed`,`peer-disabled:opacity-50`,t),...i})}export{i as Label};
2
- //# sourceMappingURL=label-BrGRueFm.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"label-BrGRueFm.js","names":["Label","LabelPrimitive"],"sources":["../packages/components/ui/label.tsx"],"sourcesContent":["\"use client\";\nimport React from \"react\";\nimport { Label as LabelPrimitive } from \"radix-ui\";\n\nimport { cn } from \"@/lib/utils\";\n\nfunction Label({\n className,\n ...props\n}: React.ComponentProps<typeof LabelPrimitive.Root>) {\n return (\n <LabelPrimitive.Root\n data-slot=\"label\"\n className={cn(\n \"text-secondary-foreground\",\n \"flex items-center gap-2\",\n \"text-sm leading-none font-medium select-none\",\n \"group-data-[disabled=true]:pointer-events-none\",\n \"group-data-[disabled=true]:opacity-50\",\n \"peer-disabled:cursor-not-allowed\",\n \"peer-disabled:opacity-50\",\n className,\n )}\n {...props}\n />\n );\n}\n\nexport { Label };\n"],"mappings":"uIAMA,SAASA,EAAM,CACb,YACA,GAAG,GACgD,CACnD,OACE,EAACC,EAAe,KAAA,CACd,YAAU,QACV,UAAW,EACT,4BACA,0BACA,+CACA,iDACA,wCACA,mCACA,2BACA,GAEF,GAAI"}
@@ -1,2 +0,0 @@
1
- const e=require(`./chunk-CUT6urMc.cjs`),t=require(`./utils-BsjVK5EW.cjs`),n=e.__toESM(require(`react`)),r=e.__toESM(require(`react/jsx-runtime`)),i=e.__toESM(require(`radix-ui`));function a({className:e,...n}){return(0,r.jsx)(i.Label.Root,{"data-slot":`label`,className:t.cn(`text-secondary-foreground`,`flex items-center gap-2`,`text-sm leading-none font-medium select-none`,`group-data-[disabled=true]:pointer-events-none`,`group-data-[disabled=true]:opacity-50`,`peer-disabled:cursor-not-allowed`,`peer-disabled:opacity-50`,e),...n})}Object.defineProperty(exports,`Label`,{enumerable:!0,get:function(){return a}});
2
- //# sourceMappingURL=label-Cmi31X9c.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"label-Cmi31X9c.cjs","names":["LabelPrimitive","cn"],"sources":["../packages/components/ui/label.tsx"],"sourcesContent":["\"use client\";\nimport React from \"react\";\nimport { Label as LabelPrimitive } from \"radix-ui\";\n\nimport { cn } from \"@/lib/utils\";\n\nfunction Label({\n className,\n ...props\n}: React.ComponentProps<typeof LabelPrimitive.Root>) {\n return (\n <LabelPrimitive.Root\n data-slot=\"label\"\n className={cn(\n \"text-secondary-foreground\",\n \"flex items-center gap-2\",\n \"text-sm leading-none font-medium select-none\",\n \"group-data-[disabled=true]:pointer-events-none\",\n \"group-data-[disabled=true]:opacity-50\",\n \"peer-disabled:cursor-not-allowed\",\n \"peer-disabled:opacity-50\",\n className,\n )}\n {...props}\n />\n );\n}\n\nexport { Label };\n"],"mappings":"mLAMA,SAAS,EAAM,CACb,YACA,GAAG,GACgD,CACnD,OACE,EAAA,EAAA,KAACA,EAAAA,MAAe,KAAA,CACd,YAAU,QACV,UAAWC,EAAAA,GACT,4BACA,0BACA,+CACA,iDACA,wCACA,mCACA,2BACA,GAEF,GAAI"}
@@ -1,2 +0,0 @@
1
- const e=require(`./chunk-CUT6urMc.cjs`),t=require(`./utils-BsjVK5EW.cjs`),n=require(`./button-BgNGzTUH.cjs`),r=require(`./command-Bfx_Gzjv.cjs`),i=e.__toESM(require(`react`)),a=e.__toESM(require(`react/jsx-runtime`)),o=e.__toESM(require(`lucide-react`)),s=e.__toESM(require(`cmdk`));function c(e,t){let[n,r]=i.default.useState(e);return i.default.useEffect(()=>{let n=setTimeout(()=>r(e),t||500);return()=>{clearTimeout(n)}},[e,t]),n}function l(e,t){if(e.length===0)return{};if(!t)return{"":e};let n={};return e.forEach(e=>{let r=e[t]||``;n[r]||(n[r]=[]),n[r].push(e)}),n}function u(e,t){let n=JSON.parse(JSON.stringify(e));for(let[e,r]of Object.entries(n))n[e]=r.filter(e=>!t.find(t=>t.value===e.value));return n}function d(e,t){for(let[,n]of Object.entries(e))if(n.some(e=>t.find(t=>t.value===e.value)))return!0;return!1}const f=i.default.forwardRef(({className:e,...n},r)=>{let i=(0,s.useCommandState)(e=>e.filtered.count===0);return i?(0,a.jsx)(`div`,{ref:r,className:t.cn(`px-2 py-4 text-center text-sm`,e),"cmdk-empty":``,role:`presentation`,...n}):null});f.displayName=`CommandEmpty`;const p=i.default.forwardRef(({value:e,onChange:p,placeholder:m,defaultOptions:h=[],options:g,delay:_,onSearch:v,onSearchSync:y,loadingIndicator:b,emptyIndicator:x,maxSelected:S=9007199254740991,onMaxSelected:C,hidePlaceholderWhenSelected:w,disabled:T,groupBy:E,className:D,badgeClassName:O,selectFirstItem:k=!0,creatable:A=!1,triggerSearchOnFocus:j=!1,commandProps:M,inputProps:N,hideClearAllButton:P=!1,onAddNewItem:F},I)=>{let L=i.default.useRef(null),R=i.default.useRef(null),[z,B]=i.default.useState(!1),[V,H]=i.default.useState(!1),[U,W]=i.default.useState(!1),[G,K]=i.default.useState(e||[]),[q,J]=i.default.useState(l(h,E)),[Y,X]=i.default.useState(``),Z=c(Y,_||500);i.default.useImperativeHandle(I,()=>({selectedValue:[...G],input:L.current,focus:()=>L?.current?.focus(),reset:()=>K([])}),[G]);let Q=i.default.useCallback(e=>{R.current&&!R.current.contains(e.target)&&L.current&&!L.current.contains(e.target)&&(B(!1),L.current.blur())},[]),$=i.default.useCallback(e=>{let t=G.filter(t=>t.value!==e.value);K(t),p?.(t)},[p,G]),ee=i.default.useCallback(e=>{let t=L.current;if(t){if((e.key===`Delete`||e.key===`Backspace`)&&t.value===``&&G.length>0){let e=G[G.length-1];e.fixed||$(G[G.length-1])}e.key===`Escape`&&t.blur()}},[$,G]);i.default.useEffect(()=>(z?(document.addEventListener(`mousedown`,Q),document.addEventListener(`touchend`,Q)):(document.removeEventListener(`mousedown`,Q),document.removeEventListener(`touchend`,Q)),()=>{document.removeEventListener(`mousedown`,Q),document.removeEventListener(`touchend`,Q)}),[z]),i.default.useEffect(()=>{e&&K(e)},[e]),i.default.useEffect(()=>{if(!g||v)return;let e=l(g||[],E);JSON.stringify(e)!==JSON.stringify(q)&&J(e)},[h,g,E,v,q]),i.default.useEffect(()=>{let e=()=>{let e=y?.(Z);J(l(e||[],E))},t=async()=>{!y||!z||(j&&e(),Z&&e())};t()},[Z,E,z,j]),i.default.useEffect(()=>{let e=async()=>{W(!0);let e=await v?.(Z);J(l(e||[],E)),W(!1)},t=async()=>{!v||!z||(j&&await e(),Z&&await e())};t()},[Z,E,z,j]);let te=()=>{if(!A||d(q,[{value:Y,label:Y}])||G.find(e=>e.value===Y))return;let e=(0,a.jsx)(r.CommandItem,{value:Y,className:`cursor-pointer`,onMouseDown:e=>{e.preventDefault(),e.stopPropagation()},onSelect:e=>{if(G.length>=S){C?.(G.length);return}X(``);let t=[...G,{value:e,label:e}];K(t),p?.(t)},children:`Create "${Y}"`});if(!v&&Y.length>0||v&&Z.length>0&&!U)return e},ne=i.default.useCallback(()=>{if(x)return v&&!A&&Object.keys(q).length===0?(0,a.jsx)(r.CommandItem,{value:`-`,disabled:!0,children:x}):(0,a.jsx)(f,{children:x})},[A,x,v,q]),re=i.default.useMemo(()=>u(q,G),[q,G]),ie=i.default.useCallback(()=>{if(M?.filter)return M.filter;if(A)return(e,t)=>e.toLowerCase().includes(t.toLowerCase())?1:-1},[A,M?.filter]);return(0,a.jsxs)(r.Command,{ref:R,...M,onKeyDown:e=>{ee(e),M?.onKeyDown?.(e)},className:t.cn(`h-auto overflow-visible bg-transparent`,M?.className),shouldFilter:M?.shouldFilter===void 0?!v:M.shouldFilter,filter:ie(),children:[(0,a.jsx)(`div`,{className:t.cn(`border-input focus-within:border-primary focus-within:ring-ring relative rounded-md border text-sm transition-shadow focus-within:ring-4 focus-within:outline-hidden`,`has-disabled:bg-muted`,`has-disabled:text-muted-foreground`,{"p-1":G.length!==0,"cursor-text":!T&&G.length!==0},!P&&`pe-9`,D),onClick:()=>{T||L?.current?.focus()},children:(0,a.jsxs)(`div`,{className:`flex flex-wrap gap-1`,children:[G.map(e=>(0,a.jsxs)(`div`,{className:t.cn(`animate-fadeIn bg-background text-secondary-foreground hover:bg-background relative inline-flex h-7 cursor-default items-center rounded-md border border-solid ps-2 pe-7 pl-2 text-xs font-medium transition-all disabled:cursor-not-allowed disabled:opacity-50 data-fixed:pe-2`,O),"data-fixed":e.fixed,"data-disabled":T||void 0,children:[e.label,(0,a.jsx)(`button`,{type:`button`,disabled:T||e.fixed,className:t.cn(`text-muted-foreground/80 absolute -inset-y-px -end-px flex size-7 items-center justify-center rounded-e-lg border border-transparent p-0 outline-0 transition-colors`,`hover:text-foreground`,`focus-visible:outline`,`focus-visible:outline-2`,`focus-visible:outline-ring/70`,`disabled:hover:text-muted-foreground disabled:cursor-not-allowed disabled:opacity-50`),onKeyDown:t=>{t.key===`Enter`&&$(e)},onMouseDown:e=>{e.preventDefault(),e.stopPropagation()},onClick:()=>$(e),"aria-label":`Remove`,children:(0,a.jsx)(o.X,{size:14,strokeWidth:2,"aria-hidden":`true`})})]},e.value)),(0,a.jsx)(s.Command.Input,{...N,ref:L,value:Y,disabled:T,onValueChange:e=>{X(e),N?.onValueChange?.(e)},onBlur:e=>{V||B(!1),N?.onBlur?.(e)},onFocus:e=>{B(!0),j&&v?.(Z),N?.onFocus?.(e)},placeholder:w&&G.length!==0?``:m,className:t.cn(`placeholder:text-muted-foreground flex-1 bg-transparent outline-hidden`,`disabled:placeholder:text-transparent`,{"w-full":w,"px-3 py-2":G.length===0,"ml-1":G.length!==0},N?.className)}),(0,a.jsx)(`button`,{type:`button`,onClick:()=>{K(G.filter(e=>e.fixed)),p?.(G.filter(e=>e.fixed))},className:t.cn(`text-muted-foreground/80`,`absolute end-0 top-0 flex size-9 items-center justify-center rounded-lg border border-transparent transition-colors`,`focus-visible:outline-2`,`hover:text-foreground`,`focus-visible:outline-ring/70`,(P||T||G.length<1||G.filter(({fixed:e})=>e).length===G.length)&&`hidden`),"aria-label":`Clear all`,children:(0,a.jsx)(o.X,{size:16,strokeWidth:2,"aria-hidden":`true`})})]})}),(0,a.jsx)(`div`,{className:`relative`,children:(0,a.jsx)(`div`,{className:t.cn(`border-input absolute top-2 z-10 w-full overflow-hidden rounded-lg border shadow-sm`,`data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95`,!z&&`hidden`),"data-state":z?`open`:`closed`,children:z&&(0,a.jsxs)(r.CommandList,{className:`bg-popover text-popover-foreground shadow-lg outline-hidden`,onMouseLeave:()=>{H(!1)},onMouseEnter:()=>{H(!0)},onMouseUp:()=>{L?.current?.focus()},children:[F&&(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(r.CommandSeparator,{}),(0,a.jsx)(r.CommandGroup,{children:(0,a.jsxs)(n.Button,{type:`button`,variant:`ghost`,className:`w-full font-normal [&_div]:justify-start`,onClick:F,children:[(0,a.jsx)(o.PlusIcon,{size:14,className:`-ms-2 opacity-60`,"aria-hidden":`true`}),`Thêm mới`]})})]}),U?b:(0,a.jsxs)(i.default.Fragment,{children:[ne(),te(),!k&&(0,a.jsx)(r.CommandItem,{value:`-`,className:`hidden`}),Object.entries(re).map(([e,n])=>(0,a.jsx)(r.CommandGroup,{heading:e,className:`h-full overflow-auto`,children:n.map(e=>(0,a.jsx)(r.CommandItem,{value:e.value,disabled:e.disable,onMouseDown:e=>{e.preventDefault(),e.stopPropagation()},onSelect:()=>{if(G.length>=S){C?.(G.length);return}X(``);let t=[...G,e];K(t),p?.(t)},className:t.cn(`cursor-pointer`,e.disable&&`cursor-not-allowed opacity-50`),children:e.label},e.value))},e))]})]})})})]})});p.displayName=`MultipleSelector`;var m=p;Object.defineProperty(exports,`multi_select_default`,{enumerable:!0,get:function(){return m}}),Object.defineProperty(exports,`useDebounce`,{enumerable:!0,get:function(){return c}});
2
- //# sourceMappingURL=multi-select-BOmq9vOB.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"multi-select-BOmq9vOB.cjs","names":["React","groupOption: GroupOption","cn","CommandItem","value","Command","X","CommandPrimitive","CommandList","CommandSeparator","CommandGroup","Button","PlusIcon"],"sources":["../packages/components/ui/multi-select.tsx"],"sourcesContent":["\"use client\";\nimport React from \"react\";\nimport { Command as CommandPrimitive, useCommandState } from \"cmdk\";\nimport { PlusIcon, X } from \"lucide-react\";\n\nimport {\n Command,\n CommandGroup,\n CommandItem,\n CommandList,\n CommandSeparator,\n} from \"@/components/ui/command\";\nimport { cn } from \"@/lib/utils\";\n\nimport { Button } from \"./button\";\n\nexport interface Option {\n value: string;\n label: string;\n disable?: boolean;\n /** fixed option that can&lsquo;t be removed. */\n fixed?: boolean;\n /** Group the options by providing key. */\n [key: string]: string | boolean | undefined;\n}\ninterface GroupOption {\n [key: string]: Option[];\n}\n\ninterface MultipleSelectorProps {\n value?: Option[];\n defaultOptions?: Option[];\n /** manually controlled options */\n options?: Option[];\n placeholder?: string;\n /** Loading component. */\n loadingIndicator?: React.ReactNode;\n /** Empty component. */\n emptyIndicator?: React.ReactNode;\n /** Debounce time for async search. Only work with `onSearch`. */\n delay?: number;\n /**\n * Only work with `onSearch` prop. Trigger search when `onFocus`.\n * For example, when user click on the input, it will trigger the search to get initial options.\n **/\n triggerSearchOnFocus?: boolean;\n /** async search */\n onSearch?: (value: string) => Promise<Option[]>;\n /**\n * sync search. This search will not showing loadingIndicator.\n * The rest props are the same as async search.\n * i.e.: creatable, groupBy, delay.\n **/\n onSearchSync?: (value: string) => Option[];\n onChange?: (options: Option[]) => void;\n /** Limit the maximum number of selected options. */\n maxSelected?: number;\n /** When the number of selected options exceeds the limit, the onMaxSelected will be called. */\n onMaxSelected?: (maxLimit: number) => void;\n /** Hide the placeholder when there are options selected. */\n hidePlaceholderWhenSelected?: boolean;\n disabled?: boolean;\n /** Group the options base on provided key. */\n groupBy?: string;\n className?: string;\n badgeClassName?: string;\n /**\n * First item selected is a default behavior by cmdk. That is why the default is true.\n * This is a workaround solution by add a dummy item.\n *\n * @reference: https://github.com/pacocoursey/cmdk/issues/171\n */\n selectFirstItem?: boolean;\n /** Allow user to create option when there is no option matched. */\n creatable?: boolean;\n /** Props of `Command` */\n commandProps?: React.ComponentPropsWithoutRef<typeof Command>;\n /** Props of `CommandInput` */\n inputProps?: Omit<\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Input>,\n \"value\" | \"placeholder\" | \"disabled\"\n >;\n /** hide the clear all button. */\n hideClearAllButton?: boolean;\n\n /** Add new item event for select with search */\n onAddNewItem?: () => void;\n}\n\nexport interface MultipleSelectorRef {\n selectedValue: Option[];\n input: HTMLInputElement;\n focus: () => void;\n reset: () => void;\n}\n\n// eslint-disable-next-line react-refresh/only-export-components\nexport function useDebounce<T>(value: T, delay?: number): T {\n const [debouncedValue, setDebouncedValue] = React.useState<T>(value);\n\n React.useEffect(() => {\n const timer = setTimeout(() => setDebouncedValue(value), delay || 500);\n\n return () => {\n clearTimeout(timer);\n };\n }, [value, delay]);\n\n return debouncedValue;\n}\n\nfunction transToGroupOption(options: Option[], groupBy?: string) {\n if (options.length === 0) {\n return {};\n }\n if (!groupBy) {\n return {\n \"\": options,\n };\n }\n\n const groupOption: GroupOption = {};\n options.forEach((option) => {\n const key = (option[groupBy] as string) || \"\";\n if (!groupOption[key]) {\n groupOption[key] = [];\n }\n groupOption[key].push(option);\n });\n return groupOption;\n}\n\nfunction removePickedOption(groupOption: GroupOption, picked: Option[]) {\n const cloneOption = JSON.parse(JSON.stringify(groupOption)) as GroupOption;\n\n for (const [key, value] of Object.entries(cloneOption)) {\n cloneOption[key] = value.filter(\n (val) => !picked.find((p) => p.value === val.value),\n );\n }\n return cloneOption;\n}\n\nfunction isOptionsExist(groupOption: GroupOption, targetOption: Option[]) {\n for (const [, value] of Object.entries(groupOption)) {\n if (\n value.some((option) => targetOption.find((p) => p.value === option.value))\n ) {\n return true;\n }\n }\n return false;\n}\n\n/**\n * The `CommandEmpty` of shadcn/ui will cause the cmdk empty not rendering correctly.\n * So we create one and copy the `Empty` implementation from `cmdk`.\n *\n * @reference: https://github.com/hsuanyi-chou/shadcn-ui-expansions/issues/34#issuecomment-1949561607\n **/\nconst CommandEmpty = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<typeof CommandPrimitive.Empty>\n>(({ className, ...props }, forwardedRef) => {\n const render = useCommandState((state) => state.filtered.count === 0);\n\n if (!render) return null;\n\n return (\n <div\n ref={forwardedRef}\n className={cn(\"px-2 py-4 text-center text-sm\", className)}\n cmdk-empty=\"\"\n role=\"presentation\"\n {...props}\n />\n );\n});\n\nCommandEmpty.displayName = \"CommandEmpty\";\n\nconst MultipleSelector = React.forwardRef<\n MultipleSelectorRef,\n MultipleSelectorProps\n>(\n (\n {\n value,\n onChange,\n placeholder,\n defaultOptions: arrayDefaultOptions = [],\n options: arrayOptions,\n delay,\n onSearch,\n onSearchSync,\n loadingIndicator: LoadingIndicator,\n emptyIndicator,\n maxSelected = Number.MAX_SAFE_INTEGER,\n onMaxSelected,\n hidePlaceholderWhenSelected,\n disabled,\n groupBy,\n className,\n badgeClassName,\n selectFirstItem = true,\n creatable = false,\n triggerSearchOnFocus = false,\n commandProps,\n inputProps,\n hideClearAllButton = false,\n onAddNewItem,\n }: MultipleSelectorProps,\n ref: React.Ref<MultipleSelectorRef>,\n ) => {\n const inputRef = React.useRef<HTMLInputElement>(null);\n const dropdownRef = React.useRef<HTMLDivElement>(null); // Added this\n\n const [open, setOpen] = React.useState(false);\n const [onScrollbar, setOnScrollbar] = React.useState(false);\n const [isLoading, setIsLoading] = React.useState(false);\n\n const [selected, setSelected] = React.useState<Option[]>(value || []);\n const [options, setOptions] = React.useState<GroupOption>(\n transToGroupOption(arrayDefaultOptions, groupBy),\n );\n const [inputValue, setInputValue] = React.useState(\"\");\n\n const debouncedSearchTerm = useDebounce(inputValue, delay || 500);\n\n React.useImperativeHandle(\n ref,\n () => ({\n selectedValue: [...selected],\n input: inputRef.current as HTMLInputElement,\n focus: () => inputRef?.current?.focus(),\n reset: () => setSelected([]),\n }),\n [selected],\n );\n\n const handleClickOutside = React.useCallback(\n (event: MouseEvent | TouchEvent) => {\n if (\n dropdownRef.current &&\n !dropdownRef.current.contains(event.target as Node) &&\n inputRef.current &&\n !inputRef.current.contains(event.target as Node)\n ) {\n setOpen(false);\n inputRef.current.blur();\n }\n },\n [],\n );\n\n const handleUnselect = React.useCallback(\n (option: Option) => {\n const newOptions = selected.filter((s) => s.value !== option.value);\n setSelected(newOptions);\n onChange?.(newOptions);\n },\n [onChange, selected],\n );\n\n const handleKeyDown = React.useCallback(\n (e: React.KeyboardEvent<HTMLDivElement>) => {\n const input = inputRef.current;\n if (!input) return;\n\n if (e.key === \"Delete\" || e.key === \"Backspace\") {\n if (input.value === \"\" && selected.length > 0) {\n const lastSelectOption = selected[selected.length - 1];\n // If last item is fixed, we should not remove it.\n if (!lastSelectOption.fixed) {\n handleUnselect(selected[selected.length - 1]);\n }\n }\n }\n\n // This is not a default behavior of the <input /> field\n if (e.key === \"Escape\") {\n input.blur();\n }\n },\n [handleUnselect, selected],\n );\n\n React.useEffect(() => {\n if (open) {\n document.addEventListener(\"mousedown\", handleClickOutside);\n document.addEventListener(\"touchend\", handleClickOutside);\n } else {\n document.removeEventListener(\"mousedown\", handleClickOutside);\n document.removeEventListener(\"touchend\", handleClickOutside);\n }\n\n return () => {\n document.removeEventListener(\"mousedown\", handleClickOutside);\n document.removeEventListener(\"touchend\", handleClickOutside);\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [open]);\n\n React.useEffect(() => {\n if (value) {\n setSelected(value);\n }\n }, [value]);\n\n React.useEffect(() => {\n /** If `onSearch` is provided, do not trigger options updated. */\n if (!arrayOptions || onSearch) {\n return;\n }\n const newOption = transToGroupOption(arrayOptions || [], groupBy);\n if (JSON.stringify(newOption) !== JSON.stringify(options)) {\n setOptions(newOption);\n }\n }, [arrayDefaultOptions, arrayOptions, groupBy, onSearch, options]);\n\n React.useEffect(() => {\n /** sync search */\n\n const doSearchSync = () => {\n const res = onSearchSync?.(debouncedSearchTerm);\n setOptions(transToGroupOption(res || [], groupBy));\n };\n\n const exec = async () => {\n if (!onSearchSync || !open) return;\n\n if (triggerSearchOnFocus) {\n doSearchSync();\n }\n\n if (debouncedSearchTerm) {\n doSearchSync();\n }\n };\n\n void exec();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [debouncedSearchTerm, groupBy, open, triggerSearchOnFocus]);\n\n React.useEffect(() => {\n /** async search */\n\n const doSearch = async () => {\n setIsLoading(true);\n const res = await onSearch?.(debouncedSearchTerm);\n setOptions(transToGroupOption(res || [], groupBy));\n setIsLoading(false);\n };\n\n const exec = async () => {\n if (!onSearch || !open) return;\n\n if (triggerSearchOnFocus) {\n await doSearch();\n }\n\n if (debouncedSearchTerm) {\n await doSearch();\n }\n };\n\n void exec();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [debouncedSearchTerm, groupBy, open, triggerSearchOnFocus]);\n\n const CreatableItem = () => {\n if (!creatable) return undefined;\n if (\n isOptionsExist(options, [{ value: inputValue, label: inputValue }]) ||\n selected.find((s) => s.value === inputValue)\n ) {\n return undefined;\n }\n\n const Item = (\n <CommandItem\n value={inputValue}\n className=\"cursor-pointer\"\n onMouseDown={(e) => {\n e.preventDefault();\n e.stopPropagation();\n }}\n onSelect={(value: string) => {\n if (selected.length >= maxSelected) {\n onMaxSelected?.(selected.length);\n return;\n }\n setInputValue(\"\");\n const newOptions = [...selected, { value, label: value }];\n setSelected(newOptions);\n onChange?.(newOptions);\n }}\n >\n {`Create \"${inputValue}\"`}\n </CommandItem>\n );\n\n // For normal creatable\n if (!onSearch && inputValue.length > 0) {\n return Item;\n }\n\n // For async search creatable. avoid showing creatable item before loading at first.\n if (onSearch && debouncedSearchTerm.length > 0 && !isLoading) {\n return Item;\n }\n\n return undefined;\n };\n\n const EmptyItem = React.useCallback(() => {\n if (!emptyIndicator) return undefined;\n\n // For async search that showing emptyIndicator\n if (onSearch && !creatable && Object.keys(options).length === 0) {\n return (\n <CommandItem value=\"-\" disabled>\n {emptyIndicator}\n </CommandItem>\n );\n }\n\n return <CommandEmpty>{emptyIndicator}</CommandEmpty>;\n }, [creatable, emptyIndicator, onSearch, options]);\n\n const selectables = React.useMemo<GroupOption>(\n () => removePickedOption(options, selected),\n [options, selected],\n );\n\n /** Avoid Creatable Selector freezing or lagging when paste a long string. */\n const commandFilter = React.useCallback(() => {\n if (commandProps?.filter) {\n return commandProps.filter;\n }\n\n if (creatable) {\n return (value: string, search: string) => {\n return value.toLowerCase().includes(search.toLowerCase()) ? 1 : -1;\n };\n }\n // Using default filter in `cmdk`. We don&lsquo;t have to provide it.\n return undefined;\n }, [creatable, commandProps?.filter]);\n\n return (\n <Command\n ref={dropdownRef}\n {...commandProps}\n onKeyDown={(e) => {\n handleKeyDown(e);\n commandProps?.onKeyDown?.(e);\n }}\n className={cn(\n \"h-auto overflow-visible bg-transparent\",\n commandProps?.className,\n )}\n shouldFilter={\n commandProps?.shouldFilter !== undefined\n ? commandProps.shouldFilter\n : !onSearch\n } // When onSearch is provided, we don&lsquo;t want to filter the options. You can still override it.\n filter={commandFilter()}\n >\n <div\n className={cn(\n \"border-input focus-within:border-primary focus-within:ring-ring relative rounded-md border text-sm transition-shadow focus-within:ring-4 focus-within:outline-hidden\",\n \"has-disabled:bg-muted\",\n \"has-disabled:text-muted-foreground\",\n {\n \"p-1\": selected.length !== 0,\n \"cursor-text\": !disabled && selected.length !== 0,\n },\n !hideClearAllButton && \"pe-9\",\n className,\n )}\n onClick={() => {\n if (disabled) return;\n inputRef?.current?.focus();\n }}\n >\n <div className=\"flex flex-wrap gap-1\">\n {selected.map((option) => {\n return (\n <div\n key={option.value}\n className={cn(\n \"animate-fadeIn bg-background text-secondary-foreground hover:bg-background relative inline-flex h-7 cursor-default items-center rounded-md border border-solid ps-2 pe-7 pl-2 text-xs font-medium transition-all disabled:cursor-not-allowed disabled:opacity-50 data-fixed:pe-2\",\n badgeClassName,\n )}\n data-fixed={option.fixed}\n data-disabled={disabled || undefined}\n >\n {option.label}\n <button\n type=\"button\"\n disabled={disabled || option.fixed}\n className={cn(\n \"text-muted-foreground/80 absolute -inset-y-px -end-px flex size-7 items-center justify-center rounded-e-lg border border-transparent p-0 outline-0 transition-colors\",\n \"hover:text-foreground\",\n \"focus-visible:outline\",\n \"focus-visible:outline-2\",\n \"focus-visible:outline-ring/70\",\n \"disabled:hover:text-muted-foreground disabled:cursor-not-allowed disabled:opacity-50\",\n )}\n onKeyDown={(e) => {\n if (e.key === \"Enter\") {\n handleUnselect(option);\n }\n }}\n onMouseDown={(e) => {\n e.preventDefault();\n e.stopPropagation();\n }}\n onClick={() => handleUnselect(option)}\n aria-label=\"Remove\"\n >\n <X size={14} strokeWidth={2} aria-hidden=\"true\" />\n </button>\n </div>\n );\n })}\n {/* Avoid having the \"Search\" Icon */}\n <CommandPrimitive.Input\n {...inputProps}\n ref={inputRef}\n value={inputValue}\n disabled={disabled}\n onValueChange={(value) => {\n setInputValue(value);\n inputProps?.onValueChange?.(value);\n }}\n onBlur={(event) => {\n if (!onScrollbar) {\n setOpen(false);\n }\n inputProps?.onBlur?.(event);\n }}\n onFocus={(event) => {\n setOpen(true);\n if (triggerSearchOnFocus) {\n onSearch?.(debouncedSearchTerm);\n }\n inputProps?.onFocus?.(event);\n }}\n placeholder={\n hidePlaceholderWhenSelected && selected.length !== 0\n ? \"\"\n : placeholder\n }\n className={cn(\n \"placeholder:text-muted-foreground flex-1 bg-transparent outline-hidden\",\n \"disabled:placeholder:text-transparent\",\n {\n \"w-full\": hidePlaceholderWhenSelected,\n \"px-3 py-2\": selected.length === 0,\n \"ml-1\": selected.length !== 0,\n },\n inputProps?.className,\n )}\n />\n <button\n type=\"button\"\n onClick={() => {\n setSelected(selected.filter((s) => s.fixed));\n onChange?.(selected.filter((s) => s.fixed));\n }}\n className={cn(\n \"text-muted-foreground/80\",\n \"absolute end-0 top-0 flex size-9 items-center justify-center rounded-lg border border-transparent transition-colors\",\n \"focus-visible:outline-2\",\n \"hover:text-foreground\",\n \"focus-visible:outline-ring/70\",\n (hideClearAllButton ||\n disabled ||\n selected.length < 1 ||\n selected.filter(({ fixed }) => fixed).length ===\n selected.length) &&\n \"hidden\",\n )}\n aria-label=\"Clear all\"\n >\n <X size={16} strokeWidth={2} aria-hidden=\"true\" />\n </button>\n </div>\n </div>\n <div className=\"relative\">\n <div\n className={cn(\n \"border-input absolute top-2 z-10 w-full overflow-hidden rounded-lg border shadow-sm\",\n \"data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95\",\n !open && \"hidden\",\n )}\n data-state={open ? \"open\" : \"closed\"}\n >\n {open && (\n <CommandList\n className=\"bg-popover text-popover-foreground shadow-lg outline-hidden\"\n onMouseLeave={() => {\n setOnScrollbar(false);\n }}\n onMouseEnter={() => {\n setOnScrollbar(true);\n }}\n onMouseUp={() => {\n inputRef?.current?.focus();\n }}\n >\n {onAddNewItem && (\n <>\n <CommandSeparator />\n <CommandGroup>\n <Button\n type=\"button\"\n variant=\"ghost\"\n className=\"w-full font-normal [&_div]:justify-start\"\n onClick={onAddNewItem}\n >\n <PlusIcon\n size={14}\n className=\"-ms-2 opacity-60\"\n aria-hidden=\"true\"\n />\n Thêm mới\n </Button>\n </CommandGroup>\n </>\n )}\n {isLoading ? (\n LoadingIndicator\n ) : (\n <React.Fragment>\n {EmptyItem()}\n {CreatableItem()}\n {!selectFirstItem && (\n <CommandItem value=\"-\" className=\"hidden\" />\n )}\n {Object.entries(selectables).map(([key, dropdowns]) => (\n <CommandGroup\n key={key}\n heading={key}\n className=\"h-full overflow-auto\"\n >\n {dropdowns.map((option) => {\n return (\n <CommandItem\n key={option.value}\n value={option.value}\n disabled={option.disable}\n onMouseDown={(e) => {\n e.preventDefault();\n e.stopPropagation();\n }}\n onSelect={() => {\n if (selected.length >= maxSelected) {\n onMaxSelected?.(selected.length);\n return;\n }\n setInputValue(\"\");\n const newOptions = [...selected, option];\n setSelected(newOptions);\n onChange?.(newOptions);\n }}\n className={cn(\n \"cursor-pointer\",\n option.disable &&\n \"cursor-not-allowed opacity-50\",\n )}\n >\n {option.label}\n </CommandItem>\n );\n })}\n </CommandGroup>\n ))}\n </React.Fragment>\n )}\n </CommandList>\n )}\n </div>\n </div>\n </Command>\n );\n },\n);\n\nMultipleSelector.displayName = \"MultipleSelector\";\nexport default MultipleSelector;\n"],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- import{cn as e}from"./utils-D9AH0PUV.js";import{Button as t}from"./button-DFvetIX8.js";import{Command as n,CommandGroup as r,CommandItem as i,CommandList as ee,CommandSeparator as te}from"./command-ClNBSZd3.js";import a from"react";import{Fragment as o,jsx as s,jsxs as c}from"react/jsx-runtime";import{PlusIcon as l,X as u}from"lucide-react";import{Command as ne,useCommandState as d}from"cmdk";function f(e,t){let[n,r]=a.useState(e);return a.useEffect(()=>{let n=setTimeout(()=>r(e),t||500);return()=>{clearTimeout(n)}},[e,t]),n}function p(e,t){if(e.length===0)return{};if(!t)return{"":e};let n={};return e.forEach(e=>{let r=e[t]||``;n[r]||(n[r]=[]),n[r].push(e)}),n}function re(e,t){let n=JSON.parse(JSON.stringify(e));for(let[e,r]of Object.entries(n))n[e]=r.filter(e=>!t.find(t=>t.value===e.value));return n}function m(e,t){for(let[,n]of Object.entries(e))if(n.some(e=>t.find(t=>t.value===e.value)))return!0;return!1}const h=a.forwardRef(({className:t,...n},r)=>{let i=d(e=>e.filtered.count===0);return i?s(`div`,{ref:r,className:e(`px-2 py-4 text-center text-sm`,t),"cmdk-empty":``,role:`presentation`,...n}):null});h.displayName=`CommandEmpty`;const g=a.forwardRef(({value:d,onChange:g,placeholder:_,defaultOptions:v=[],options:y,delay:b,onSearch:x,onSearchSync:S,loadingIndicator:ie,emptyIndicator:C,maxSelected:w=9007199254740991,onMaxSelected:T,hidePlaceholderWhenSelected:E,disabled:D,groupBy:O,className:ae,badgeClassName:k,selectFirstItem:A=!0,creatable:j=!1,triggerSearchOnFocus:M=!1,commandProps:N,inputProps:P,hideClearAllButton:F=!1,onAddNewItem:I},L)=>{let R=a.useRef(null),z=a.useRef(null),[B,V]=a.useState(!1),[oe,H]=a.useState(!1),[U,W]=a.useState(!1),[G,K]=a.useState(d||[]),[q,J]=a.useState(p(v,O)),[Y,X]=a.useState(``),Z=f(Y,b||500);a.useImperativeHandle(L,()=>({selectedValue:[...G],input:R.current,focus:()=>R?.current?.focus(),reset:()=>K([])}),[G]);let Q=a.useCallback(e=>{z.current&&!z.current.contains(e.target)&&R.current&&!R.current.contains(e.target)&&(V(!1),R.current.blur())},[]),$=a.useCallback(e=>{let t=G.filter(t=>t.value!==e.value);K(t),g?.(t)},[g,G]),se=a.useCallback(e=>{let t=R.current;if(t){if((e.key===`Delete`||e.key===`Backspace`)&&t.value===``&&G.length>0){let e=G[G.length-1];e.fixed||$(G[G.length-1])}e.key===`Escape`&&t.blur()}},[$,G]);a.useEffect(()=>(B?(document.addEventListener(`mousedown`,Q),document.addEventListener(`touchend`,Q)):(document.removeEventListener(`mousedown`,Q),document.removeEventListener(`touchend`,Q)),()=>{document.removeEventListener(`mousedown`,Q),document.removeEventListener(`touchend`,Q)}),[B]),a.useEffect(()=>{d&&K(d)},[d]),a.useEffect(()=>{if(!y||x)return;let e=p(y||[],O);JSON.stringify(e)!==JSON.stringify(q)&&J(e)},[v,y,O,x,q]),a.useEffect(()=>{let e=()=>{let e=S?.(Z);J(p(e||[],O))},t=async()=>{!S||!B||(M&&e(),Z&&e())};t()},[Z,O,B,M]),a.useEffect(()=>{let e=async()=>{W(!0);let e=await x?.(Z);J(p(e||[],O)),W(!1)},t=async()=>{!x||!B||(M&&await e(),Z&&await e())};t()},[Z,O,B,M]);let ce=()=>{if(!j||m(q,[{value:Y,label:Y}])||G.find(e=>e.value===Y))return;let e=s(i,{value:Y,className:`cursor-pointer`,onMouseDown:e=>{e.preventDefault(),e.stopPropagation()},onSelect:e=>{if(G.length>=w){T?.(G.length);return}X(``);let t=[...G,{value:e,label:e}];K(t),g?.(t)},children:`Create "${Y}"`});if(!x&&Y.length>0||x&&Z.length>0&&!U)return e},le=a.useCallback(()=>{if(C)return x&&!j&&Object.keys(q).length===0?s(i,{value:`-`,disabled:!0,children:C}):s(h,{children:C})},[j,C,x,q]),ue=a.useMemo(()=>re(q,G),[q,G]),de=a.useCallback(()=>{if(N?.filter)return N.filter;if(j)return(e,t)=>e.toLowerCase().includes(t.toLowerCase())?1:-1},[j,N?.filter]);return c(n,{ref:z,...N,onKeyDown:e=>{se(e),N?.onKeyDown?.(e)},className:e(`h-auto overflow-visible bg-transparent`,N?.className),shouldFilter:N?.shouldFilter===void 0?!x:N.shouldFilter,filter:de(),children:[s(`div`,{className:e(`border-input focus-within:border-primary focus-within:ring-ring relative rounded-md border text-sm transition-shadow focus-within:ring-4 focus-within:outline-hidden`,`has-disabled:bg-muted`,`has-disabled:text-muted-foreground`,{"p-1":G.length!==0,"cursor-text":!D&&G.length!==0},!F&&`pe-9`,ae),onClick:()=>{D||R?.current?.focus()},children:c(`div`,{className:`flex flex-wrap gap-1`,children:[G.map(t=>c(`div`,{className:e(`animate-fadeIn bg-background text-secondary-foreground hover:bg-background relative inline-flex h-7 cursor-default items-center rounded-md border border-solid ps-2 pe-7 pl-2 text-xs font-medium transition-all disabled:cursor-not-allowed disabled:opacity-50 data-fixed:pe-2`,k),"data-fixed":t.fixed,"data-disabled":D||void 0,children:[t.label,s(`button`,{type:`button`,disabled:D||t.fixed,className:e(`text-muted-foreground/80 absolute -inset-y-px -end-px flex size-7 items-center justify-center rounded-e-lg border border-transparent p-0 outline-0 transition-colors`,`hover:text-foreground`,`focus-visible:outline`,`focus-visible:outline-2`,`focus-visible:outline-ring/70`,`disabled:hover:text-muted-foreground disabled:cursor-not-allowed disabled:opacity-50`),onKeyDown:e=>{e.key===`Enter`&&$(t)},onMouseDown:e=>{e.preventDefault(),e.stopPropagation()},onClick:()=>$(t),"aria-label":`Remove`,children:s(u,{size:14,strokeWidth:2,"aria-hidden":`true`})})]},t.value)),s(ne.Input,{...P,ref:R,value:Y,disabled:D,onValueChange:e=>{X(e),P?.onValueChange?.(e)},onBlur:e=>{oe||V(!1),P?.onBlur?.(e)},onFocus:e=>{V(!0),M&&x?.(Z),P?.onFocus?.(e)},placeholder:E&&G.length!==0?``:_,className:e(`placeholder:text-muted-foreground flex-1 bg-transparent outline-hidden`,`disabled:placeholder:text-transparent`,{"w-full":E,"px-3 py-2":G.length===0,"ml-1":G.length!==0},P?.className)}),s(`button`,{type:`button`,onClick:()=>{K(G.filter(e=>e.fixed)),g?.(G.filter(e=>e.fixed))},className:e(`text-muted-foreground/80`,`absolute end-0 top-0 flex size-9 items-center justify-center rounded-lg border border-transparent transition-colors`,`focus-visible:outline-2`,`hover:text-foreground`,`focus-visible:outline-ring/70`,(F||D||G.length<1||G.filter(({fixed:e})=>e).length===G.length)&&`hidden`),"aria-label":`Clear all`,children:s(u,{size:16,strokeWidth:2,"aria-hidden":`true`})})]})}),s(`div`,{className:`relative`,children:s(`div`,{className:e(`border-input absolute top-2 z-10 w-full overflow-hidden rounded-lg border shadow-sm`,`data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95`,!B&&`hidden`),"data-state":B?`open`:`closed`,children:B&&c(ee,{className:`bg-popover text-popover-foreground shadow-lg outline-hidden`,onMouseLeave:()=>{H(!1)},onMouseEnter:()=>{H(!0)},onMouseUp:()=>{R?.current?.focus()},children:[I&&c(o,{children:[s(te,{}),s(r,{children:c(t,{type:`button`,variant:`ghost`,className:`w-full font-normal [&_div]:justify-start`,onClick:I,children:[s(l,{size:14,className:`-ms-2 opacity-60`,"aria-hidden":`true`}),`Thêm mới`]})})]}),U?ie:c(a.Fragment,{children:[le(),ce(),!A&&s(i,{value:`-`,className:`hidden`}),Object.entries(ue).map(([t,n])=>s(r,{heading:t,className:`h-full overflow-auto`,children:n.map(t=>s(i,{value:t.value,disabled:t.disable,onMouseDown:e=>{e.preventDefault(),e.stopPropagation()},onSelect:()=>{if(G.length>=w){T?.(G.length);return}X(``);let e=[...G,t];K(e),g?.(e)},className:e(`cursor-pointer`,t.disable&&`cursor-not-allowed opacity-50`),children:t.label},t.value))},t))]})]})})})]})});g.displayName=`MultipleSelector`;var _=g;export{_ as multi_select_default,f as useDebounce};
2
- //# sourceMappingURL=multi-select-CEU50SQU.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"multi-select-CEU50SQU.js","names":["groupOption: GroupOption","value","Command","CommandPrimitive"],"sources":["../packages/components/ui/multi-select.tsx"],"sourcesContent":["\"use client\";\nimport React from \"react\";\nimport { Command as CommandPrimitive, useCommandState } from \"cmdk\";\nimport { PlusIcon, X } from \"lucide-react\";\n\nimport {\n Command,\n CommandGroup,\n CommandItem,\n CommandList,\n CommandSeparator,\n} from \"@/components/ui/command\";\nimport { cn } from \"@/lib/utils\";\n\nimport { Button } from \"./button\";\n\nexport interface Option {\n value: string;\n label: string;\n disable?: boolean;\n /** fixed option that can&lsquo;t be removed. */\n fixed?: boolean;\n /** Group the options by providing key. */\n [key: string]: string | boolean | undefined;\n}\ninterface GroupOption {\n [key: string]: Option[];\n}\n\ninterface MultipleSelectorProps {\n value?: Option[];\n defaultOptions?: Option[];\n /** manually controlled options */\n options?: Option[];\n placeholder?: string;\n /** Loading component. */\n loadingIndicator?: React.ReactNode;\n /** Empty component. */\n emptyIndicator?: React.ReactNode;\n /** Debounce time for async search. Only work with `onSearch`. */\n delay?: number;\n /**\n * Only work with `onSearch` prop. Trigger search when `onFocus`.\n * For example, when user click on the input, it will trigger the search to get initial options.\n **/\n triggerSearchOnFocus?: boolean;\n /** async search */\n onSearch?: (value: string) => Promise<Option[]>;\n /**\n * sync search. This search will not showing loadingIndicator.\n * The rest props are the same as async search.\n * i.e.: creatable, groupBy, delay.\n **/\n onSearchSync?: (value: string) => Option[];\n onChange?: (options: Option[]) => void;\n /** Limit the maximum number of selected options. */\n maxSelected?: number;\n /** When the number of selected options exceeds the limit, the onMaxSelected will be called. */\n onMaxSelected?: (maxLimit: number) => void;\n /** Hide the placeholder when there are options selected. */\n hidePlaceholderWhenSelected?: boolean;\n disabled?: boolean;\n /** Group the options base on provided key. */\n groupBy?: string;\n className?: string;\n badgeClassName?: string;\n /**\n * First item selected is a default behavior by cmdk. That is why the default is true.\n * This is a workaround solution by add a dummy item.\n *\n * @reference: https://github.com/pacocoursey/cmdk/issues/171\n */\n selectFirstItem?: boolean;\n /** Allow user to create option when there is no option matched. */\n creatable?: boolean;\n /** Props of `Command` */\n commandProps?: React.ComponentPropsWithoutRef<typeof Command>;\n /** Props of `CommandInput` */\n inputProps?: Omit<\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Input>,\n \"value\" | \"placeholder\" | \"disabled\"\n >;\n /** hide the clear all button. */\n hideClearAllButton?: boolean;\n\n /** Add new item event for select with search */\n onAddNewItem?: () => void;\n}\n\nexport interface MultipleSelectorRef {\n selectedValue: Option[];\n input: HTMLInputElement;\n focus: () => void;\n reset: () => void;\n}\n\n// eslint-disable-next-line react-refresh/only-export-components\nexport function useDebounce<T>(value: T, delay?: number): T {\n const [debouncedValue, setDebouncedValue] = React.useState<T>(value);\n\n React.useEffect(() => {\n const timer = setTimeout(() => setDebouncedValue(value), delay || 500);\n\n return () => {\n clearTimeout(timer);\n };\n }, [value, delay]);\n\n return debouncedValue;\n}\n\nfunction transToGroupOption(options: Option[], groupBy?: string) {\n if (options.length === 0) {\n return {};\n }\n if (!groupBy) {\n return {\n \"\": options,\n };\n }\n\n const groupOption: GroupOption = {};\n options.forEach((option) => {\n const key = (option[groupBy] as string) || \"\";\n if (!groupOption[key]) {\n groupOption[key] = [];\n }\n groupOption[key].push(option);\n });\n return groupOption;\n}\n\nfunction removePickedOption(groupOption: GroupOption, picked: Option[]) {\n const cloneOption = JSON.parse(JSON.stringify(groupOption)) as GroupOption;\n\n for (const [key, value] of Object.entries(cloneOption)) {\n cloneOption[key] = value.filter(\n (val) => !picked.find((p) => p.value === val.value),\n );\n }\n return cloneOption;\n}\n\nfunction isOptionsExist(groupOption: GroupOption, targetOption: Option[]) {\n for (const [, value] of Object.entries(groupOption)) {\n if (\n value.some((option) => targetOption.find((p) => p.value === option.value))\n ) {\n return true;\n }\n }\n return false;\n}\n\n/**\n * The `CommandEmpty` of shadcn/ui will cause the cmdk empty not rendering correctly.\n * So we create one and copy the `Empty` implementation from `cmdk`.\n *\n * @reference: https://github.com/hsuanyi-chou/shadcn-ui-expansions/issues/34#issuecomment-1949561607\n **/\nconst CommandEmpty = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<typeof CommandPrimitive.Empty>\n>(({ className, ...props }, forwardedRef) => {\n const render = useCommandState((state) => state.filtered.count === 0);\n\n if (!render) return null;\n\n return (\n <div\n ref={forwardedRef}\n className={cn(\"px-2 py-4 text-center text-sm\", className)}\n cmdk-empty=\"\"\n role=\"presentation\"\n {...props}\n />\n );\n});\n\nCommandEmpty.displayName = \"CommandEmpty\";\n\nconst MultipleSelector = React.forwardRef<\n MultipleSelectorRef,\n MultipleSelectorProps\n>(\n (\n {\n value,\n onChange,\n placeholder,\n defaultOptions: arrayDefaultOptions = [],\n options: arrayOptions,\n delay,\n onSearch,\n onSearchSync,\n loadingIndicator: LoadingIndicator,\n emptyIndicator,\n maxSelected = Number.MAX_SAFE_INTEGER,\n onMaxSelected,\n hidePlaceholderWhenSelected,\n disabled,\n groupBy,\n className,\n badgeClassName,\n selectFirstItem = true,\n creatable = false,\n triggerSearchOnFocus = false,\n commandProps,\n inputProps,\n hideClearAllButton = false,\n onAddNewItem,\n }: MultipleSelectorProps,\n ref: React.Ref<MultipleSelectorRef>,\n ) => {\n const inputRef = React.useRef<HTMLInputElement>(null);\n const dropdownRef = React.useRef<HTMLDivElement>(null); // Added this\n\n const [open, setOpen] = React.useState(false);\n const [onScrollbar, setOnScrollbar] = React.useState(false);\n const [isLoading, setIsLoading] = React.useState(false);\n\n const [selected, setSelected] = React.useState<Option[]>(value || []);\n const [options, setOptions] = React.useState<GroupOption>(\n transToGroupOption(arrayDefaultOptions, groupBy),\n );\n const [inputValue, setInputValue] = React.useState(\"\");\n\n const debouncedSearchTerm = useDebounce(inputValue, delay || 500);\n\n React.useImperativeHandle(\n ref,\n () => ({\n selectedValue: [...selected],\n input: inputRef.current as HTMLInputElement,\n focus: () => inputRef?.current?.focus(),\n reset: () => setSelected([]),\n }),\n [selected],\n );\n\n const handleClickOutside = React.useCallback(\n (event: MouseEvent | TouchEvent) => {\n if (\n dropdownRef.current &&\n !dropdownRef.current.contains(event.target as Node) &&\n inputRef.current &&\n !inputRef.current.contains(event.target as Node)\n ) {\n setOpen(false);\n inputRef.current.blur();\n }\n },\n [],\n );\n\n const handleUnselect = React.useCallback(\n (option: Option) => {\n const newOptions = selected.filter((s) => s.value !== option.value);\n setSelected(newOptions);\n onChange?.(newOptions);\n },\n [onChange, selected],\n );\n\n const handleKeyDown = React.useCallback(\n (e: React.KeyboardEvent<HTMLDivElement>) => {\n const input = inputRef.current;\n if (!input) return;\n\n if (e.key === \"Delete\" || e.key === \"Backspace\") {\n if (input.value === \"\" && selected.length > 0) {\n const lastSelectOption = selected[selected.length - 1];\n // If last item is fixed, we should not remove it.\n if (!lastSelectOption.fixed) {\n handleUnselect(selected[selected.length - 1]);\n }\n }\n }\n\n // This is not a default behavior of the <input /> field\n if (e.key === \"Escape\") {\n input.blur();\n }\n },\n [handleUnselect, selected],\n );\n\n React.useEffect(() => {\n if (open) {\n document.addEventListener(\"mousedown\", handleClickOutside);\n document.addEventListener(\"touchend\", handleClickOutside);\n } else {\n document.removeEventListener(\"mousedown\", handleClickOutside);\n document.removeEventListener(\"touchend\", handleClickOutside);\n }\n\n return () => {\n document.removeEventListener(\"mousedown\", handleClickOutside);\n document.removeEventListener(\"touchend\", handleClickOutside);\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [open]);\n\n React.useEffect(() => {\n if (value) {\n setSelected(value);\n }\n }, [value]);\n\n React.useEffect(() => {\n /** If `onSearch` is provided, do not trigger options updated. */\n if (!arrayOptions || onSearch) {\n return;\n }\n const newOption = transToGroupOption(arrayOptions || [], groupBy);\n if (JSON.stringify(newOption) !== JSON.stringify(options)) {\n setOptions(newOption);\n }\n }, [arrayDefaultOptions, arrayOptions, groupBy, onSearch, options]);\n\n React.useEffect(() => {\n /** sync search */\n\n const doSearchSync = () => {\n const res = onSearchSync?.(debouncedSearchTerm);\n setOptions(transToGroupOption(res || [], groupBy));\n };\n\n const exec = async () => {\n if (!onSearchSync || !open) return;\n\n if (triggerSearchOnFocus) {\n doSearchSync();\n }\n\n if (debouncedSearchTerm) {\n doSearchSync();\n }\n };\n\n void exec();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [debouncedSearchTerm, groupBy, open, triggerSearchOnFocus]);\n\n React.useEffect(() => {\n /** async search */\n\n const doSearch = async () => {\n setIsLoading(true);\n const res = await onSearch?.(debouncedSearchTerm);\n setOptions(transToGroupOption(res || [], groupBy));\n setIsLoading(false);\n };\n\n const exec = async () => {\n if (!onSearch || !open) return;\n\n if (triggerSearchOnFocus) {\n await doSearch();\n }\n\n if (debouncedSearchTerm) {\n await doSearch();\n }\n };\n\n void exec();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [debouncedSearchTerm, groupBy, open, triggerSearchOnFocus]);\n\n const CreatableItem = () => {\n if (!creatable) return undefined;\n if (\n isOptionsExist(options, [{ value: inputValue, label: inputValue }]) ||\n selected.find((s) => s.value === inputValue)\n ) {\n return undefined;\n }\n\n const Item = (\n <CommandItem\n value={inputValue}\n className=\"cursor-pointer\"\n onMouseDown={(e) => {\n e.preventDefault();\n e.stopPropagation();\n }}\n onSelect={(value: string) => {\n if (selected.length >= maxSelected) {\n onMaxSelected?.(selected.length);\n return;\n }\n setInputValue(\"\");\n const newOptions = [...selected, { value, label: value }];\n setSelected(newOptions);\n onChange?.(newOptions);\n }}\n >\n {`Create \"${inputValue}\"`}\n </CommandItem>\n );\n\n // For normal creatable\n if (!onSearch && inputValue.length > 0) {\n return Item;\n }\n\n // For async search creatable. avoid showing creatable item before loading at first.\n if (onSearch && debouncedSearchTerm.length > 0 && !isLoading) {\n return Item;\n }\n\n return undefined;\n };\n\n const EmptyItem = React.useCallback(() => {\n if (!emptyIndicator) return undefined;\n\n // For async search that showing emptyIndicator\n if (onSearch && !creatable && Object.keys(options).length === 0) {\n return (\n <CommandItem value=\"-\" disabled>\n {emptyIndicator}\n </CommandItem>\n );\n }\n\n return <CommandEmpty>{emptyIndicator}</CommandEmpty>;\n }, [creatable, emptyIndicator, onSearch, options]);\n\n const selectables = React.useMemo<GroupOption>(\n () => removePickedOption(options, selected),\n [options, selected],\n );\n\n /** Avoid Creatable Selector freezing or lagging when paste a long string. */\n const commandFilter = React.useCallback(() => {\n if (commandProps?.filter) {\n return commandProps.filter;\n }\n\n if (creatable) {\n return (value: string, search: string) => {\n return value.toLowerCase().includes(search.toLowerCase()) ? 1 : -1;\n };\n }\n // Using default filter in `cmdk`. We don&lsquo;t have to provide it.\n return undefined;\n }, [creatable, commandProps?.filter]);\n\n return (\n <Command\n ref={dropdownRef}\n {...commandProps}\n onKeyDown={(e) => {\n handleKeyDown(e);\n commandProps?.onKeyDown?.(e);\n }}\n className={cn(\n \"h-auto overflow-visible bg-transparent\",\n commandProps?.className,\n )}\n shouldFilter={\n commandProps?.shouldFilter !== undefined\n ? commandProps.shouldFilter\n : !onSearch\n } // When onSearch is provided, we don&lsquo;t want to filter the options. You can still override it.\n filter={commandFilter()}\n >\n <div\n className={cn(\n \"border-input focus-within:border-primary focus-within:ring-ring relative rounded-md border text-sm transition-shadow focus-within:ring-4 focus-within:outline-hidden\",\n \"has-disabled:bg-muted\",\n \"has-disabled:text-muted-foreground\",\n {\n \"p-1\": selected.length !== 0,\n \"cursor-text\": !disabled && selected.length !== 0,\n },\n !hideClearAllButton && \"pe-9\",\n className,\n )}\n onClick={() => {\n if (disabled) return;\n inputRef?.current?.focus();\n }}\n >\n <div className=\"flex flex-wrap gap-1\">\n {selected.map((option) => {\n return (\n <div\n key={option.value}\n className={cn(\n \"animate-fadeIn bg-background text-secondary-foreground hover:bg-background relative inline-flex h-7 cursor-default items-center rounded-md border border-solid ps-2 pe-7 pl-2 text-xs font-medium transition-all disabled:cursor-not-allowed disabled:opacity-50 data-fixed:pe-2\",\n badgeClassName,\n )}\n data-fixed={option.fixed}\n data-disabled={disabled || undefined}\n >\n {option.label}\n <button\n type=\"button\"\n disabled={disabled || option.fixed}\n className={cn(\n \"text-muted-foreground/80 absolute -inset-y-px -end-px flex size-7 items-center justify-center rounded-e-lg border border-transparent p-0 outline-0 transition-colors\",\n \"hover:text-foreground\",\n \"focus-visible:outline\",\n \"focus-visible:outline-2\",\n \"focus-visible:outline-ring/70\",\n \"disabled:hover:text-muted-foreground disabled:cursor-not-allowed disabled:opacity-50\",\n )}\n onKeyDown={(e) => {\n if (e.key === \"Enter\") {\n handleUnselect(option);\n }\n }}\n onMouseDown={(e) => {\n e.preventDefault();\n e.stopPropagation();\n }}\n onClick={() => handleUnselect(option)}\n aria-label=\"Remove\"\n >\n <X size={14} strokeWidth={2} aria-hidden=\"true\" />\n </button>\n </div>\n );\n })}\n {/* Avoid having the \"Search\" Icon */}\n <CommandPrimitive.Input\n {...inputProps}\n ref={inputRef}\n value={inputValue}\n disabled={disabled}\n onValueChange={(value) => {\n setInputValue(value);\n inputProps?.onValueChange?.(value);\n }}\n onBlur={(event) => {\n if (!onScrollbar) {\n setOpen(false);\n }\n inputProps?.onBlur?.(event);\n }}\n onFocus={(event) => {\n setOpen(true);\n if (triggerSearchOnFocus) {\n onSearch?.(debouncedSearchTerm);\n }\n inputProps?.onFocus?.(event);\n }}\n placeholder={\n hidePlaceholderWhenSelected && selected.length !== 0\n ? \"\"\n : placeholder\n }\n className={cn(\n \"placeholder:text-muted-foreground flex-1 bg-transparent outline-hidden\",\n \"disabled:placeholder:text-transparent\",\n {\n \"w-full\": hidePlaceholderWhenSelected,\n \"px-3 py-2\": selected.length === 0,\n \"ml-1\": selected.length !== 0,\n },\n inputProps?.className,\n )}\n />\n <button\n type=\"button\"\n onClick={() => {\n setSelected(selected.filter((s) => s.fixed));\n onChange?.(selected.filter((s) => s.fixed));\n }}\n className={cn(\n \"text-muted-foreground/80\",\n \"absolute end-0 top-0 flex size-9 items-center justify-center rounded-lg border border-transparent transition-colors\",\n \"focus-visible:outline-2\",\n \"hover:text-foreground\",\n \"focus-visible:outline-ring/70\",\n (hideClearAllButton ||\n disabled ||\n selected.length < 1 ||\n selected.filter(({ fixed }) => fixed).length ===\n selected.length) &&\n \"hidden\",\n )}\n aria-label=\"Clear all\"\n >\n <X size={16} strokeWidth={2} aria-hidden=\"true\" />\n </button>\n </div>\n </div>\n <div className=\"relative\">\n <div\n className={cn(\n \"border-input absolute top-2 z-10 w-full overflow-hidden rounded-lg border shadow-sm\",\n \"data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95\",\n !open && \"hidden\",\n )}\n data-state={open ? \"open\" : \"closed\"}\n >\n {open && (\n <CommandList\n className=\"bg-popover text-popover-foreground shadow-lg outline-hidden\"\n onMouseLeave={() => {\n setOnScrollbar(false);\n }}\n onMouseEnter={() => {\n setOnScrollbar(true);\n }}\n onMouseUp={() => {\n inputRef?.current?.focus();\n }}\n >\n {onAddNewItem && (\n <>\n <CommandSeparator />\n <CommandGroup>\n <Button\n type=\"button\"\n variant=\"ghost\"\n className=\"w-full font-normal [&_div]:justify-start\"\n onClick={onAddNewItem}\n >\n <PlusIcon\n size={14}\n className=\"-ms-2 opacity-60\"\n aria-hidden=\"true\"\n />\n Thêm mới\n </Button>\n </CommandGroup>\n </>\n )}\n {isLoading ? (\n LoadingIndicator\n ) : (\n <React.Fragment>\n {EmptyItem()}\n {CreatableItem()}\n {!selectFirstItem && (\n <CommandItem value=\"-\" className=\"hidden\" />\n )}\n {Object.entries(selectables).map(([key, dropdowns]) => (\n <CommandGroup\n key={key}\n heading={key}\n className=\"h-full overflow-auto\"\n >\n {dropdowns.map((option) => {\n return (\n <CommandItem\n key={option.value}\n value={option.value}\n disabled={option.disable}\n onMouseDown={(e) => {\n e.preventDefault();\n e.stopPropagation();\n }}\n onSelect={() => {\n if (selected.length >= maxSelected) {\n onMaxSelected?.(selected.length);\n return;\n }\n setInputValue(\"\");\n const newOptions = [...selected, option];\n setSelected(newOptions);\n onChange?.(newOptions);\n }}\n className={cn(\n \"cursor-pointer\",\n option.disable &&\n \"cursor-not-allowed opacity-50\",\n )}\n >\n {option.label}\n </CommandItem>\n );\n })}\n </CommandGroup>\n ))}\n </React.Fragment>\n )}\n </CommandList>\n )}\n </div>\n </div>\n </Command>\n );\n },\n);\n\nMultipleSelector.displayName = \"MultipleSelector\";\nexport default MultipleSelector;\n"],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- import{cn as e}from"./utils-D9AH0PUV.js";import t from"react";import{jsx as n}from"react/jsx-runtime";import{cva as r}from"class-variance-authority";const i=r(``,{variants:{variant:{p:`leading-7 [&:not(:first-child)]:mt-6`,sm:`text-sm leading-none font-normal`,lg:`text-lg font-semibold`,lead:`text-muted-foreground text-xl`,muted:`text-muted-foreground text-sm`},default:{variant:`sm`}}}),a=({variant:t=`p`,className:r,children:a})=>n(`p`,{className:e(i({variant:t}),r),children:a});export{a as Paragraph};
2
- //# sourceMappingURL=paragraph-CuR_8J0O.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"paragraph-CuR_8J0O.js","names":[],"sources":["../packages/components/typography/paragraph.tsx"],"sourcesContent":["\"use client\";\nimport React from \"react\";\nimport { cva } from \"class-variance-authority\";\n\nimport { cn } from \"@/lib/utils\";\n\ntype Props = {\n variant?: \"p\" | \"muted\" | \"lead\" | \"sm\" | \"lg\";\n className?: string;\n children?: React.ReactNode;\n};\n\nconst paragraphVariants = cva(\"\", {\n variants: {\n variant: {\n p: \"leading-7 [&:not(:first-child)]:mt-6\",\n sm: \"text-sm leading-none font-normal\",\n lg: \"text-lg font-semibold\",\n lead: \"text-muted-foreground text-xl\",\n muted: \"text-muted-foreground text-sm\",\n },\n default: {\n variant: \"sm\",\n },\n },\n});\n\nexport const Paragraph = ({ variant = \"p\", className, children }: Props) => {\n return (\n <p className={cn(paragraphVariants({ variant }), className)}>{children}</p>\n );\n};\n"],"mappings":"qJAYA,MAAM,EAAoB,EAAI,GAAI,CAChC,SAAU,CACR,QAAS,CACP,EAAG,uCACH,GAAI,mCACJ,GAAI,wBACJ,KAAM,gCACN,MAAO,iCAET,QAAS,CACP,QAAS,SAKF,GAAa,CAAE,UAAU,IAAK,YAAW,cAElD,EAAC,IAAA,CAAE,UAAW,EAAG,EAAkB,CAAE,YAAY,GAAa"}
@@ -1,2 +0,0 @@
1
- const e=require(`./chunk-CUT6urMc.cjs`),t=require(`./utils-BsjVK5EW.cjs`),n=e.__toESM(require(`react`)),r=e.__toESM(require(`react/jsx-runtime`)),i=e.__toESM(require(`class-variance-authority`)),a=(0,i.cva)(``,{variants:{variant:{p:`leading-7 [&:not(:first-child)]:mt-6`,sm:`text-sm leading-none font-normal`,lg:`text-lg font-semibold`,lead:`text-muted-foreground text-xl`,muted:`text-muted-foreground text-sm`},default:{variant:`sm`}}}),o=({variant:e=`p`,className:n,children:i})=>(0,r.jsx)(`p`,{className:t.cn(a({variant:e}),n),children:i});Object.defineProperty(exports,`Paragraph`,{enumerable:!0,get:function(){return o}});
2
- //# sourceMappingURL=paragraph-D-nYwoh7.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"paragraph-D-nYwoh7.cjs","names":["cn"],"sources":["../packages/components/typography/paragraph.tsx"],"sourcesContent":["\"use client\";\nimport React from \"react\";\nimport { cva } from \"class-variance-authority\";\n\nimport { cn } from \"@/lib/utils\";\n\ntype Props = {\n variant?: \"p\" | \"muted\" | \"lead\" | \"sm\" | \"lg\";\n className?: string;\n children?: React.ReactNode;\n};\n\nconst paragraphVariants = cva(\"\", {\n variants: {\n variant: {\n p: \"leading-7 [&:not(:first-child)]:mt-6\",\n sm: \"text-sm leading-none font-normal\",\n lg: \"text-lg font-semibold\",\n lead: \"text-muted-foreground text-xl\",\n muted: \"text-muted-foreground text-sm\",\n },\n default: {\n variant: \"sm\",\n },\n },\n});\n\nexport const Paragraph = ({ variant = \"p\", className, children }: Props) => {\n return (\n <p className={cn(paragraphVariants({ variant }), className)}>{children}</p>\n );\n};\n"],"mappings":"mMAYM,GAAA,EAAA,EAAA,KAAwB,GAAI,CAChC,SAAU,CACR,QAAS,CACP,EAAG,uCACH,GAAI,mCACJ,GAAI,wBACJ,KAAM,gCACN,MAAO,iCAET,QAAS,CACP,QAAS,SAKF,GAAa,CAAE,UAAU,IAAK,YAAW,eAElD,EAAA,EAAA,KAAC,IAAA,CAAE,UAAWA,EAAAA,GAAG,EAAkB,CAAE,YAAY,GAAa"}
@@ -1,2 +0,0 @@
1
- const e=require(`./chunk-CUT6urMc.cjs`),t=require(`./utils-BsjVK5EW.cjs`),n=e.__toESM(require(`react`)),r=e.__toESM(require(`react/jsx-runtime`)),i=e.__toESM(require(`radix-ui`));function a({...e}){return(0,r.jsx)(i.Popover.Root,{"data-slot":`popover`,...e})}function o({...e}){return(0,r.jsx)(i.Popover.Trigger,{"data-slot":`popover-trigger`,...e})}function s({className:e,align:n=`start`,sideOffset:a=4,children:o,...s}){return(0,r.jsx)(i.Popover.Portal,{children:(0,r.jsx)(i.Popover.Content,{"data-slot":`popover-content`,align:n,sideOffset:a,className:t.cn(`bg-popover`,`text-popover-foreground`,`z-50 w-72`,`origin-(--radix-popover-content-transform-origin)`,`rounded-md border p-4 shadow-md outline-none`,`data-[state=open]:animate-in`,`data-[state=open]:fade-in-0`,`data-[state=open]:zoom-in-95`,`data-[state=closed]:animate-out`,`data-[state=closed]:fade-out-0`,`data-[state=closed]:zoom-out-95`,`data-[side=bottom]:slide-in-from-top-2`,`data-[side=left]:slide-in-from-right-2`,`data-[side=right]:slide-in-from-left-2`,`data-[side=top]:slide-in-from-bottom-2`,e),...s,children:o})})}function c({...e}){return(0,r.jsx)(i.Popover.Anchor,{"data-slot":`popover-anchor`,...e})}Object.defineProperty(exports,`Popover`,{enumerable:!0,get:function(){return a}}),Object.defineProperty(exports,`PopoverAnchor`,{enumerable:!0,get:function(){return c}}),Object.defineProperty(exports,`PopoverContent`,{enumerable:!0,get:function(){return s}}),Object.defineProperty(exports,`PopoverTrigger`,{enumerable:!0,get:function(){return o}});
2
- //# sourceMappingURL=popover-BD0lz8Fh.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"popover-BD0lz8Fh.cjs","names":["PopoverPrimitive","cn"],"sources":["../packages/components/ui/popover.tsx"],"sourcesContent":["\"use client\";\nimport React from \"react\";\nimport { Popover as PopoverPrimitive } from \"radix-ui\";\n\nimport { cn } from \"@/lib/utils\";\n\nfunction Popover({\n ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Root>) {\n return <PopoverPrimitive.Root data-slot=\"popover\" {...props} />;\n}\n\nfunction PopoverTrigger({\n ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Trigger>) {\n return <PopoverPrimitive.Trigger data-slot=\"popover-trigger\" {...props} />;\n}\n\nfunction PopoverContent({\n className,\n align = \"start\",\n sideOffset = 4,\n children,\n ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Content>) {\n return (\n <PopoverPrimitive.Portal>\n <PopoverPrimitive.Content\n data-slot=\"popover-content\"\n align={align}\n sideOffset={sideOffset}\n className={cn(\n \"bg-popover\",\n \"text-popover-foreground\",\n \"z-50 w-72\",\n \"origin-(--radix-popover-content-transform-origin)\",\n \"rounded-md border p-4 shadow-md outline-none\",\n \"data-[state=open]:animate-in\",\n \"data-[state=open]:fade-in-0\",\n \"data-[state=open]:zoom-in-95\",\n \"data-[state=closed]:animate-out\",\n \"data-[state=closed]:fade-out-0\",\n \"data-[state=closed]:zoom-out-95\",\n \"data-[side=bottom]:slide-in-from-top-2\",\n \"data-[side=left]:slide-in-from-right-2\",\n \"data-[side=right]:slide-in-from-left-2\",\n \"data-[side=top]:slide-in-from-bottom-2\",\n className,\n )}\n {...props}\n >\n {children}\n </PopoverPrimitive.Content>\n </PopoverPrimitive.Portal>\n );\n}\n\nfunction PopoverAnchor({\n ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Anchor>) {\n return <PopoverPrimitive.Anchor data-slot=\"popover-anchor\" {...props} />;\n}\n\nexport { Popover, PopoverAnchor, PopoverContent, PopoverTrigger };\n"],"mappings":"mLAMA,SAAS,EAAQ,CACf,GAAG,GACkD,CACrD,OAAO,EAAA,EAAA,KAACA,EAAAA,QAAiB,KAAA,CAAK,YAAU,UAAU,GAAI,IAGxD,SAAS,EAAe,CACtB,GAAG,GACqD,CACxD,OAAO,EAAA,EAAA,KAACA,EAAAA,QAAiB,QAAA,CAAQ,YAAU,kBAAkB,GAAI,IAGnE,SAAS,EAAe,CACtB,YACA,QAAQ,QACR,aAAa,EACb,WACA,GAAG,GACqD,CACxD,OACE,EAAA,EAAA,KAACA,EAAAA,QAAiB,OAAA,CAAA,UAChB,EAAA,EAAA,KAACA,EAAAA,QAAiB,QAAA,CAChB,YAAU,kBACH,QACK,aACZ,UAAWC,EAAAA,GACT,aACA,0BACA,YACA,oDACA,+CACA,+BACA,8BACA,+BACA,kCACA,iCACA,kCACA,yCACA,yCACA,yCACA,yCACA,GAEF,GAAI,EAEH,eAMT,SAAS,EAAc,CACrB,GAAG,GACoD,CACvD,OAAO,EAAA,EAAA,KAACD,EAAAA,QAAiB,OAAA,CAAO,YAAU,iBAAiB,GAAI"}
@@ -1,2 +0,0 @@
1
- import{cn as e}from"./utils-D9AH0PUV.js";import t from"react";import{jsx as n}from"react/jsx-runtime";import{Popover as r}from"radix-ui";function i({...e}){return n(r.Root,{"data-slot":`popover`,...e})}function a({...e}){return n(r.Trigger,{"data-slot":`popover-trigger`,...e})}function o({className:t,align:i=`start`,sideOffset:a=4,children:o,...s}){return n(r.Portal,{children:n(r.Content,{"data-slot":`popover-content`,align:i,sideOffset:a,className:e(`bg-popover`,`text-popover-foreground`,`z-50 w-72`,`origin-(--radix-popover-content-transform-origin)`,`rounded-md border p-4 shadow-md outline-none`,`data-[state=open]:animate-in`,`data-[state=open]:fade-in-0`,`data-[state=open]:zoom-in-95`,`data-[state=closed]:animate-out`,`data-[state=closed]:fade-out-0`,`data-[state=closed]:zoom-out-95`,`data-[side=bottom]:slide-in-from-top-2`,`data-[side=left]:slide-in-from-right-2`,`data-[side=right]:slide-in-from-left-2`,`data-[side=top]:slide-in-from-bottom-2`,t),...s,children:o})})}function s({...e}){return n(r.Anchor,{"data-slot":`popover-anchor`,...e})}export{i as Popover,s as PopoverAnchor,o as PopoverContent,a as PopoverTrigger};
2
- //# sourceMappingURL=popover-DJnARyyO.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"popover-DJnARyyO.js","names":["Popover","PopoverPrimitive"],"sources":["../packages/components/ui/popover.tsx"],"sourcesContent":["\"use client\";\nimport React from \"react\";\nimport { Popover as PopoverPrimitive } from \"radix-ui\";\n\nimport { cn } from \"@/lib/utils\";\n\nfunction Popover({\n ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Root>) {\n return <PopoverPrimitive.Root data-slot=\"popover\" {...props} />;\n}\n\nfunction PopoverTrigger({\n ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Trigger>) {\n return <PopoverPrimitive.Trigger data-slot=\"popover-trigger\" {...props} />;\n}\n\nfunction PopoverContent({\n className,\n align = \"start\",\n sideOffset = 4,\n children,\n ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Content>) {\n return (\n <PopoverPrimitive.Portal>\n <PopoverPrimitive.Content\n data-slot=\"popover-content\"\n align={align}\n sideOffset={sideOffset}\n className={cn(\n \"bg-popover\",\n \"text-popover-foreground\",\n \"z-50 w-72\",\n \"origin-(--radix-popover-content-transform-origin)\",\n \"rounded-md border p-4 shadow-md outline-none\",\n \"data-[state=open]:animate-in\",\n \"data-[state=open]:fade-in-0\",\n \"data-[state=open]:zoom-in-95\",\n \"data-[state=closed]:animate-out\",\n \"data-[state=closed]:fade-out-0\",\n \"data-[state=closed]:zoom-out-95\",\n \"data-[side=bottom]:slide-in-from-top-2\",\n \"data-[side=left]:slide-in-from-right-2\",\n \"data-[side=right]:slide-in-from-left-2\",\n \"data-[side=top]:slide-in-from-bottom-2\",\n className,\n )}\n {...props}\n >\n {children}\n </PopoverPrimitive.Content>\n </PopoverPrimitive.Portal>\n );\n}\n\nfunction PopoverAnchor({\n ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Anchor>) {\n return <PopoverPrimitive.Anchor data-slot=\"popover-anchor\" {...props} />;\n}\n\nexport { Popover, PopoverAnchor, PopoverContent, PopoverTrigger };\n"],"mappings":"yIAMA,SAASA,EAAQ,CACf,GAAG,GACkD,CACrD,OAAO,EAACC,EAAiB,KAAA,CAAK,YAAU,UAAU,GAAI,IAGxD,SAAS,EAAe,CACtB,GAAG,GACqD,CACxD,OAAO,EAACA,EAAiB,QAAA,CAAQ,YAAU,kBAAkB,GAAI,IAGnE,SAAS,EAAe,CACtB,YACA,QAAQ,QACR,aAAa,EACb,WACA,GAAG,GACqD,CACxD,OACE,EAACA,EAAiB,OAAA,CAAA,SAChB,EAACA,EAAiB,QAAA,CAChB,YAAU,kBACH,QACK,aACZ,UAAW,EACT,aACA,0BACA,YACA,oDACA,+CACA,+BACA,8BACA,+BACA,kCACA,iCACA,kCACA,yCACA,yCACA,yCACA,yCACA,GAEF,GAAI,EAEH,eAMT,SAAS,EAAc,CACrB,GAAG,GACoD,CACvD,OAAO,EAACA,EAAiB,OAAA,CAAO,YAAU,iBAAiB,GAAI"}
@@ -1,2 +0,0 @@
1
- const e=require(`./chunk-CUT6urMc.cjs`),t=require(`./utils-BsjVK5EW.cjs`),n=e.__toESM(require(`react`)),r=e.__toESM(require(`react/jsx-runtime`)),i=e.__toESM(require(`radix-ui`));function a({className:e,value:n,...a}){return(0,r.jsx)(i.Progress.Root,{"data-slot":`progress`,className:t.cn(`bg-primary/20 relative h-2 w-full overflow-hidden rounded-full`,e),...a,children:(0,r.jsx)(i.Progress.Indicator,{"data-slot":`progress-indicator`,className:`bg-primary size-full flex-1 transition-all`,style:{transform:`translateX(-${100-(n||0)}%)`}})})}Object.defineProperty(exports,`Progress`,{enumerable:!0,get:function(){return a}});
2
- //# sourceMappingURL=progress-Bu1_efDo.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"progress-Bu1_efDo.cjs","names":["ProgressPrimitive","cn"],"sources":["../packages/components/ui/progress.tsx"],"sourcesContent":["\"use client\";\nimport React from \"react\";\nimport { Progress as ProgressPrimitive } from \"radix-ui\";\n\nimport { cn } from \"@/lib/utils\";\n\nfunction Progress({\n className,\n value,\n ...props\n}: React.ComponentProps<typeof ProgressPrimitive.Root>) {\n return (\n <ProgressPrimitive.Root\n data-slot=\"progress\"\n className={cn(\n \"bg-primary/20 relative h-2 w-full overflow-hidden rounded-full\",\n className,\n )}\n {...props}\n >\n <ProgressPrimitive.Indicator\n data-slot=\"progress-indicator\"\n className=\"bg-primary size-full flex-1 transition-all\"\n style={{ transform: `translateX(-${100 - (value || 0)}%)` }}\n />\n </ProgressPrimitive.Root>\n );\n}\n\nexport { Progress };\n"],"mappings":"mLAMA,SAAS,EAAS,CAChB,YACA,QACA,GAAG,GACmD,CACtD,OACE,EAAA,EAAA,KAACA,EAAAA,SAAkB,KAAA,CACjB,YAAU,WACV,UAAWC,EAAAA,GACT,iEACA,GAEF,GAAI,YAEJ,EAAA,EAAA,KAACD,EAAAA,SAAkB,UAAA,CACjB,YAAU,qBACV,UAAU,6CACV,MAAO,CAAE,UAAW,eAAe,KAAO,GAAS,GAAG"}
@@ -1,2 +0,0 @@
1
- import{cn as e}from"./utils-D9AH0PUV.js";import t from"react";import{jsx as n}from"react/jsx-runtime";import{Progress as r}from"radix-ui";function i({className:t,value:i,...a}){return n(r.Root,{"data-slot":`progress`,className:e(`bg-primary/20 relative h-2 w-full overflow-hidden rounded-full`,t),...a,children:n(r.Indicator,{"data-slot":`progress-indicator`,className:`bg-primary size-full flex-1 transition-all`,style:{transform:`translateX(-${100-(i||0)}%)`}})})}export{i as Progress};
2
- //# sourceMappingURL=progress-CeXKNvJc.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"progress-CeXKNvJc.js","names":["Progress","ProgressPrimitive"],"sources":["../packages/components/ui/progress.tsx"],"sourcesContent":["\"use client\";\nimport React from \"react\";\nimport { Progress as ProgressPrimitive } from \"radix-ui\";\n\nimport { cn } from \"@/lib/utils\";\n\nfunction Progress({\n className,\n value,\n ...props\n}: React.ComponentProps<typeof ProgressPrimitive.Root>) {\n return (\n <ProgressPrimitive.Root\n data-slot=\"progress\"\n className={cn(\n \"bg-primary/20 relative h-2 w-full overflow-hidden rounded-full\",\n className,\n )}\n {...props}\n >\n <ProgressPrimitive.Indicator\n data-slot=\"progress-indicator\"\n className=\"bg-primary size-full flex-1 transition-all\"\n style={{ transform: `translateX(-${100 - (value || 0)}%)` }}\n />\n </ProgressPrimitive.Root>\n );\n}\n\nexport { Progress };\n"],"mappings":"0IAMA,SAASA,EAAS,CAChB,YACA,QACA,GAAG,GACmD,CACtD,OACE,EAACC,EAAkB,KAAA,CACjB,YAAU,WACV,UAAW,EACT,iEACA,GAEF,GAAI,WAEJ,EAACA,EAAkB,UAAA,CACjB,YAAU,qBACV,UAAU,6CACV,MAAO,CAAE,UAAW,eAAe,KAAO,GAAS,GAAG"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"refresh-H87p0PFk.cjs","names":["RefreshBtn: React.FC<React.PropsWithChildren<Props>>","Button","RefreshCwIcon","Paragraph"],"sources":["../packages/components/ui/buttons/refresh.tsx"],"sourcesContent":["import { RefreshCwIcon } from \"lucide-react\";\n\nimport { Paragraph } from \"@/components/typography/paragraph\";\n\nimport { Button } from \"../button\";\n\ntype Props = {\n onClick?: () => void;\n};\nexport const RefreshBtn: React.FC<React.PropsWithChildren<Props>> = ({\n onClick = () => {},\n}) => {\n return (\n <Button\n aria-label=\"Tạo mới\"\n variant=\"outline\"\n className=\"aspect-square max-sm:p-0\"\n onClick={onClick}\n >\n <RefreshCwIcon\n className=\"opacity-60 sm:-ms-1\"\n size={16}\n aria-hidden=\"true\"\n />\n <Paragraph variant=\"sm\" className=\"max-sm:sr-only\">\n Reset\n </Paragraph>\n </Button>\n );\n};\n"],"mappings":"gMASaA,GAAwD,CACnE,cAAgB,OAGd,EAAA,EAAA,MAACC,EAAAA,OAAAA,CACC,aAAW,UACX,QAAQ,UACR,UAAU,2BACD,qBAET,EAAA,EAAA,KAACC,EAAAA,cAAAA,CACC,UAAU,sBACV,KAAM,GACN,cAAY,UAEd,EAAA,EAAA,KAACC,EAAAA,UAAAA,CAAU,QAAQ,KAAK,UAAU,0BAAiB"}
@@ -1,2 +0,0 @@
1
- import{Button as e}from"./button-DFvetIX8.js";import{Paragraph as t}from"./paragraph-CuR_8J0O.js";import{jsx as n,jsxs as r}from"react/jsx-runtime";import{RefreshCwIcon as i}from"lucide-react";const a=({onClick:a=()=>{}})=>r(e,{"aria-label":`Tạo mới`,variant:`outline`,className:`aspect-square max-sm:p-0`,onClick:a,children:[n(i,{className:`opacity-60 sm:-ms-1`,size:16,"aria-hidden":`true`}),n(t,{variant:`sm`,className:`max-sm:sr-only`,children:`Reset`})]});export{a as RefreshBtn};
2
- //# sourceMappingURL=refresh-h_6T8REa.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"refresh-h_6T8REa.js","names":["RefreshBtn: React.FC<React.PropsWithChildren<Props>>"],"sources":["../packages/components/ui/buttons/refresh.tsx"],"sourcesContent":["import { RefreshCwIcon } from \"lucide-react\";\n\nimport { Paragraph } from \"@/components/typography/paragraph\";\n\nimport { Button } from \"../button\";\n\ntype Props = {\n onClick?: () => void;\n};\nexport const RefreshBtn: React.FC<React.PropsWithChildren<Props>> = ({\n onClick = () => {},\n}) => {\n return (\n <Button\n aria-label=\"Tạo mới\"\n variant=\"outline\"\n className=\"aspect-square max-sm:p-0\"\n onClick={onClick}\n >\n <RefreshCwIcon\n className=\"opacity-60 sm:-ms-1\"\n size={16}\n aria-hidden=\"true\"\n />\n <Paragraph variant=\"sm\" className=\"max-sm:sr-only\">\n Reset\n </Paragraph>\n </Button>\n );\n};\n"],"mappings":"iMASA,MAAaA,GAAwD,CACnE,cAAgB,MAGd,EAAC,EAAA,CACC,aAAW,UACX,QAAQ,UACR,UAAU,2BACD,oBAET,EAAC,EAAA,CACC,UAAU,sBACV,KAAM,GACN,cAAY,SAEd,EAAC,EAAA,CAAU,QAAQ,KAAK,UAAU,0BAAiB"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"search-input-BUIwdK4e.js","names":[],"sources":["../packages/components/ui/inputs/search-input.tsx"],"sourcesContent":["import { ArrowRightIcon, SearchIcon } from \"lucide-react\";\n\nimport { cn } from \"@/lib/utils\";\n\nimport { Input } from \"../input\";\n\ntype Props = React.ComponentPropsWithoutRef<typeof Input>;\nexport const SearchInput = ({ className, ...rest }: Props) => {\n return (\n <div className=\"relative\">\n <Input {...rest} type=\"search\" className={cn(\"ps-9 pe-9\", className)} />\n <div className=\"text-muted-foreground/80 pointer-events-none absolute inset-y-0 start-0 flex items-center justify-center ps-3 peer-disabled:opacity-50\">\n <SearchIcon size={16} />\n </div>\n <button\n className=\"text-muted-foreground/80 hover:text-foreground focus-visible:border-ring focus-visible:ring-ring/50 absolute inset-y-0 end-0 flex h-full w-9 items-center justify-center rounded-e-md transition-[color,box-shadow] outline-none focus:z-10 focus-visible:ring-[3px] disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50\"\n aria-label=\"Submit search\"\n type=\"submit\"\n >\n <ArrowRightIcon size={16} aria-hidden=\"true\" />\n </button>\n </div>\n );\n};\n"],"mappings":"qMAOA,MAAa,GAAe,CAAE,YAAW,GAAG,KAExC,EAAC,MAAA,CAAI,UAAU,qBACb,EAAC,EAAA,CAAM,GAAI,EAAM,KAAK,SAAS,UAAW,EAAG,YAAa,KAC1D,EAAC,MAAA,CAAI,UAAU,kJACb,EAAC,EAAA,CAAW,KAAM,OAEpB,EAAC,SAAA,CACC,UAAU,oVACV,aAAW,gBACX,KAAK,kBAEL,EAAC,EAAA,CAAe,KAAM,GAAI,cAAY"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"search-input-DXh-cAVU.cjs","names":["Input","cn","SearchIcon","ArrowRightIcon"],"sources":["../packages/components/ui/inputs/search-input.tsx"],"sourcesContent":["import { ArrowRightIcon, SearchIcon } from \"lucide-react\";\n\nimport { cn } from \"@/lib/utils\";\n\nimport { Input } from \"../input\";\n\ntype Props = React.ComponentPropsWithoutRef<typeof Input>;\nexport const SearchInput = ({ className, ...rest }: Props) => {\n return (\n <div className=\"relative\">\n <Input {...rest} type=\"search\" className={cn(\"ps-9 pe-9\", className)} />\n <div className=\"text-muted-foreground/80 pointer-events-none absolute inset-y-0 start-0 flex items-center justify-center ps-3 peer-disabled:opacity-50\">\n <SearchIcon size={16} />\n </div>\n <button\n className=\"text-muted-foreground/80 hover:text-foreground focus-visible:border-ring focus-visible:ring-ring/50 absolute inset-y-0 end-0 flex h-full w-9 items-center justify-center rounded-e-md transition-[color,box-shadow] outline-none focus:z-10 focus-visible:ring-[3px] disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50\"\n aria-label=\"Submit search\"\n type=\"submit\"\n >\n <ArrowRightIcon size={16} aria-hidden=\"true\" />\n </button>\n </div>\n );\n};\n"],"mappings":"2LAOa,GAAe,CAAE,YAAW,GAAG,MAExC,EAAA,EAAA,MAAC,MAAA,CAAI,UAAU,sBACb,EAAA,EAAA,KAACA,EAAAA,MAAAA,CAAM,GAAI,EAAM,KAAK,SAAS,UAAWC,EAAAA,GAAG,YAAa,MAC1D,EAAA,EAAA,KAAC,MAAA,CAAI,UAAU,mJACb,EAAA,EAAA,KAACC,EAAAA,WAAAA,CAAW,KAAM,QAEpB,EAAA,EAAA,KAAC,SAAA,CACC,UAAU,oVACV,aAAW,gBACX,KAAK,mBAEL,EAAA,EAAA,KAACC,EAAAA,eAAAA,CAAe,KAAM,GAAI,cAAY"}