@customafk/lunas-ui 0.0.20 → 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 (835) 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-BLzwK4-z.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-DaD4CS9Z.cjs → badge-D4NxkKeN.cjs} +2 -2
  10. package/dist/badge-D4NxkKeN.cjs.map +1 -0
  11. package/dist/{badge-BK1TPBDW.js → badge-DzKUgC8v.js} +2 -2
  12. package/dist/badge-DzKUgC8v.js.map +1 -0
  13. package/dist/{button-DS7KZFPm.d.cts → button-BEwm_iVK.d.cts} +7 -5
  14. package/dist/button-BSGNpclh.cjs +2 -0
  15. package/dist/button-BSGNpclh.cjs.map +1 -0
  16. package/dist/{button-CDcShhmx.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-DzFHlcQl.cjs → calendar-B8IKzrdN.cjs} +2 -2
  20. package/dist/calendar-B8IKzrdN.cjs.map +1 -0
  21. package/dist/{calendar-Dgwg_GyY.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.d.cts +2 -2
  30. package/dist/cards/simple-card.d.ts +2 -2
  31. package/dist/cards/simple-card.js +1 -1
  32. package/dist/cards/simple-card.js.map +1 -1
  33. package/dist/command-CoB5R5FI.cjs +2 -0
  34. package/dist/command-CoB5R5FI.cjs.map +1 -0
  35. package/dist/{command-BHjF4ebU.d.cts → command-DCgWctIo.d.cts} +12 -13
  36. package/dist/{command-CmAfZEbp.d.ts → command-DQMBhKsg.d.ts} +12 -13
  37. package/dist/command-TFZwJmux.js +2 -0
  38. package/dist/command-TFZwJmux.js.map +1 -0
  39. package/dist/data-display/country.cjs +1 -1
  40. package/dist/data-display/country.cjs.map +1 -1
  41. package/dist/data-display/country.js +1 -1
  42. package/dist/data-display/country.js.map +1 -1
  43. package/dist/data-display/data-list.cjs +1 -1
  44. package/dist/data-display/data-list.cjs.map +1 -1
  45. package/dist/data-display/data-list.d.cts +0 -2
  46. package/dist/data-display/data-list.d.ts +0 -2
  47. package/dist/data-display/data-list.js +1 -1
  48. package/dist/data-display/data-list.js.map +1 -1
  49. package/dist/data-display/date-tooltip.cjs +1 -1
  50. package/dist/data-display/date-tooltip.cjs.map +1 -1
  51. package/dist/data-display/date-tooltip.js +1 -1
  52. package/dist/data-display/date-tooltip.js.map +1 -1
  53. package/dist/data-display/date.cjs +1 -1
  54. package/dist/data-display/date.d.cts +1 -1
  55. package/dist/data-display/date.d.ts +1 -1
  56. package/dist/data-display/date.js +1 -1
  57. package/dist/data-display/empty.cjs +1 -1
  58. package/dist/data-display/empty.cjs.map +1 -1
  59. package/dist/data-display/empty.d.cts +2 -2
  60. package/dist/data-display/empty.d.ts +2 -2
  61. package/dist/data-display/empty.js +1 -1
  62. package/dist/data-display/empty.js.map +1 -1
  63. package/dist/data-display/name.cjs +1 -1
  64. package/dist/data-display/name.cjs.map +1 -1
  65. package/dist/data-display/name.js +1 -1
  66. package/dist/data-display/name.js.map +1 -1
  67. package/dist/data-display/phone-number.cjs +1 -1
  68. package/dist/data-display/phone-number.cjs.map +1 -1
  69. package/dist/data-display/phone-number.js +1 -1
  70. package/dist/data-display/phone-number.js.map +1 -1
  71. package/dist/data-display/role-badge.cjs +1 -1
  72. package/dist/data-display/role-badge.cjs.map +1 -1
  73. package/dist/data-display/role-badge.js +1 -1
  74. package/dist/data-display/role-badge.js.map +1 -1
  75. package/dist/data-display/statistic.cjs +1 -1
  76. package/dist/data-display/statistic.cjs.map +1 -1
  77. package/dist/data-display/statistic.d.cts +4 -4
  78. package/dist/data-display/statistic.d.ts +4 -4
  79. package/dist/data-display/statistic.js +1 -1
  80. package/dist/data-display/statistic.js.map +1 -1
  81. package/dist/{date-B1g1OMYc.js → date-BMq_DNsv.js} +1 -1
  82. package/dist/date-BMq_DNsv.js.map +1 -0
  83. package/dist/{date-Cw6Jf7k6.cjs → date-nd8WkPlx.cjs} +1 -1
  84. package/dist/date-nd8WkPlx.cjs.map +1 -0
  85. package/dist/{dialog-DO-1YagX.d.ts → dialog-B1TYYUwQ.d.cts} +12 -13
  86. package/dist/{dialog-Dy9Qlo43.d.cts → dialog-BFjbRwaD.d.ts} +12 -13
  87. package/dist/dialog-CSDDiHKO.js +2 -0
  88. package/dist/dialog-CSDDiHKO.js.map +1 -0
  89. package/dist/dialog-_Cgij9NP.cjs +2 -0
  90. package/dist/dialog-_Cgij9NP.cjs.map +1 -0
  91. package/dist/dialogs/confirm-dialog.cjs +1 -1
  92. package/dist/dialogs/confirm-dialog.cjs.map +1 -1
  93. package/dist/dialogs/confirm-dialog.js +1 -1
  94. package/dist/dialogs/confirm-dialog.js.map +1 -1
  95. package/dist/dialogs/detail-dialog/component/sidebar.cjs +1 -1
  96. package/dist/dialogs/detail-dialog/component/sidebar.d.cts +29 -29
  97. package/dist/dialogs/detail-dialog/component/sidebar.d.ts +43 -43
  98. package/dist/dialogs/detail-dialog/component/sidebar.js +1 -1
  99. package/dist/dialogs/detail-dialog/index.cjs +1 -1
  100. package/dist/dialogs/detail-dialog/index.cjs.map +1 -1
  101. package/dist/dialogs/detail-dialog/index.js +1 -1
  102. package/dist/dialogs/detail-dialog/index.js.map +1 -1
  103. package/dist/dialogs/error-dialog.cjs +1 -1
  104. package/dist/dialogs/error-dialog.js +1 -1
  105. package/dist/dialogs/form-dialog.cjs +1 -1
  106. package/dist/dialogs/form-dialog.cjs.map +1 -1
  107. package/dist/dialogs/form-dialog.d.cts +3 -3
  108. package/dist/dialogs/form-dialog.d.ts +3 -3
  109. package/dist/dialogs/form-dialog.js +1 -1
  110. package/dist/dialogs/form-dialog.js.map +1 -1
  111. package/dist/dialogs/loading-dialog.cjs +1 -1
  112. package/dist/dialogs/loading-dialog.cjs.map +1 -1
  113. package/dist/dialogs/loading-dialog.js +1 -1
  114. package/dist/dialogs/loading-dialog.js.map +1 -1
  115. package/dist/dropdown-menu-BnfaOPEM.cjs +2 -0
  116. package/dist/dropdown-menu-BnfaOPEM.cjs.map +1 -0
  117. package/dist/dropdown-menu-D5uG4HZA.js +2 -0
  118. package/dist/dropdown-menu-D5uG4HZA.js.map +1 -0
  119. package/dist/{error-dialog-Cq8KOGyS.cjs → error-dialog-D5R5le-W.cjs} +2 -2
  120. package/dist/error-dialog-D5R5le-W.cjs.map +1 -0
  121. package/dist/{error-dialog-BNde8szQ.js → error-dialog-Q99thrSD.js} +2 -2
  122. package/dist/error-dialog-Q99thrSD.js.map +1 -0
  123. package/dist/{flex-BuUVu_Lf.cjs → flex-CNA_SId-.cjs} +2 -2
  124. package/dist/flex-CNA_SId-.cjs.map +1 -0
  125. package/dist/{flex-uO6z0kNw.js → flex-ILvQrYMJ.js} +2 -2
  126. package/dist/flex-ILvQrYMJ.js.map +1 -0
  127. package/dist/form-CHs85hm6.cjs +2 -0
  128. package/dist/form-CHs85hm6.cjs.map +1 -0
  129. package/dist/form-tabDlutX.js +2 -0
  130. package/dist/form-tabDlutX.js.map +1 -0
  131. package/dist/{form-wrapper-BPwpOPNp.js → form-wrapper-C2xlvWx0.js} +2 -2
  132. package/dist/form-wrapper-C2xlvWx0.js.map +1 -0
  133. package/dist/{form-wrapper-C87qyXzv.cjs → form-wrapper-CY-stRaQ.cjs} +2 -2
  134. package/dist/form-wrapper-CY-stRaQ.cjs.map +1 -0
  135. package/dist/forms/combobox-field.cjs +1 -1
  136. package/dist/forms/combobox-field.cjs.map +1 -1
  137. package/dist/forms/combobox-field.d.cts +2 -2
  138. package/dist/forms/combobox-field.d.ts +2 -2
  139. package/dist/forms/combobox-field.js +1 -1
  140. package/dist/forms/combobox-field.js.map +1 -1
  141. package/dist/forms/date-field.cjs +1 -1
  142. package/dist/forms/date-field.cjs.map +1 -1
  143. package/dist/forms/date-field.d.cts +2 -2
  144. package/dist/forms/date-field.js +1 -1
  145. package/dist/forms/date-field.js.map +1 -1
  146. package/dist/forms/form-wrapper.cjs +1 -1
  147. package/dist/forms/form-wrapper.d.cts +3 -3
  148. package/dist/forms/form-wrapper.d.ts +3 -3
  149. package/dist/forms/form-wrapper.js +1 -1
  150. package/dist/forms/multi-select-field.cjs +1 -1
  151. package/dist/forms/multi-select-field.cjs.map +1 -1
  152. package/dist/forms/multi-select-field.d.cts +2 -2
  153. package/dist/forms/multi-select-field.d.ts +2 -2
  154. package/dist/forms/multi-select-field.js +1 -1
  155. package/dist/forms/multi-select-field.js.map +1 -1
  156. package/dist/forms/number-field.cjs +1 -1
  157. package/dist/forms/number-field.cjs.map +1 -1
  158. package/dist/forms/number-field.d.cts +2 -2
  159. package/dist/forms/number-field.d.ts +2 -2
  160. package/dist/forms/number-field.js +1 -1
  161. package/dist/forms/number-field.js.map +1 -1
  162. package/dist/forms/password-field.cjs +1 -1
  163. package/dist/forms/password-field.cjs.map +1 -1
  164. package/dist/forms/password-field.d.cts +2 -2
  165. package/dist/forms/password-field.d.ts +2 -2
  166. package/dist/forms/password-field.js +1 -1
  167. package/dist/forms/password-field.js.map +1 -1
  168. package/dist/forms/select-field.cjs +1 -1
  169. package/dist/forms/select-field.cjs.map +1 -1
  170. package/dist/forms/select-field.d.cts +2 -2
  171. package/dist/forms/select-field.d.ts +2 -2
  172. package/dist/forms/select-field.js +1 -1
  173. package/dist/forms/select-field.js.map +1 -1
  174. package/dist/forms/switch-field.cjs +1 -1
  175. package/dist/forms/switch-field.cjs.map +1 -1
  176. package/dist/forms/switch-field.d.cts +2 -2
  177. package/dist/forms/switch-field.d.ts +2 -2
  178. package/dist/forms/switch-field.js +1 -1
  179. package/dist/forms/switch-field.js.map +1 -1
  180. package/dist/forms/text-field.cjs +1 -1
  181. package/dist/forms/text-field.cjs.map +1 -1
  182. package/dist/forms/text-field.d.cts +2 -2
  183. package/dist/forms/text-field.d.ts +2 -2
  184. package/dist/forms/text-field.js +1 -1
  185. package/dist/forms/text-field.js.map +1 -1
  186. package/dist/forms/textarea-field.cjs +1 -1
  187. package/dist/forms/textarea-field.cjs.map +1 -1
  188. package/dist/forms/textarea-field.d.cts +2 -2
  189. package/dist/forms/textarea-field.d.ts +2 -2
  190. package/dist/forms/textarea-field.js +1 -1
  191. package/dist/forms/textarea-field.js.map +1 -1
  192. package/dist/input--6vqz8UI.js +2 -0
  193. package/dist/input--6vqz8UI.js.map +1 -0
  194. package/dist/{input-BnRXbVsJ.d.cts → input-B-Gq-nr8.d.cts} +4 -4
  195. package/dist/{input-CYN1gjKb.d.ts → input-EM59LdpP.d.ts} +4 -4
  196. package/dist/input-VZiryzkl.cjs +2 -0
  197. package/dist/input-VZiryzkl.cjs.map +1 -0
  198. package/dist/label-B_2ZQn0X.cjs +2 -0
  199. package/dist/label-B_2ZQn0X.cjs.map +1 -0
  200. package/dist/label-D1XmKlc3.js +2 -0
  201. package/dist/label-D1XmKlc3.js.map +1 -0
  202. package/dist/layouts/flex.cjs +1 -1
  203. package/dist/layouts/flex.d.cts +3 -3
  204. package/dist/layouts/flex.d.ts +3 -3
  205. package/dist/layouts/flex.js +1 -1
  206. package/dist/layouts/main/index.cjs +1 -1
  207. package/dist/layouts/main/index.cjs.map +1 -1
  208. package/dist/layouts/main/index.d.cts +4 -4
  209. package/dist/layouts/main/index.js +1 -1
  210. package/dist/layouts/main/index.js.map +1 -1
  211. package/dist/multi-select-Cjvm4tK5.cjs +2 -0
  212. package/dist/multi-select-Cjvm4tK5.cjs.map +1 -0
  213. package/dist/multi-select-D0bZVOnm.js +2 -0
  214. package/dist/multi-select-D0bZVOnm.js.map +1 -0
  215. package/dist/paragraph-B4cQhLhW.js +2 -0
  216. package/dist/paragraph-B4cQhLhW.js.map +1 -0
  217. package/dist/paragraph-DcRBcRhQ.cjs +2 -0
  218. package/dist/paragraph-DcRBcRhQ.cjs.map +1 -0
  219. package/dist/popover-CTFp7ZXi.js +2 -0
  220. package/dist/popover-CTFp7ZXi.js.map +1 -0
  221. package/dist/popover-DCcPvdz2.cjs +2 -0
  222. package/dist/popover-DCcPvdz2.cjs.map +1 -0
  223. package/dist/progress-DLxh7x1P.cjs +2 -0
  224. package/dist/progress-DLxh7x1P.cjs.map +1 -0
  225. package/dist/progress-DWrtxJv0.js +2 -0
  226. package/dist/progress-DWrtxJv0.js.map +1 -0
  227. package/dist/refresh-CYCzbKVl.js +2 -0
  228. package/dist/refresh-CYCzbKVl.js.map +1 -0
  229. package/dist/{refresh-3D87WTOF.cjs → refresh-DMj_wur3.cjs} +2 -2
  230. package/dist/refresh-DMj_wur3.cjs.map +1 -0
  231. package/dist/scroll-area-C0KQbcG0.js +2 -0
  232. package/dist/scroll-area-C0KQbcG0.js.map +1 -0
  233. package/dist/{scroll-area-Cc6UjeXy.cjs → scroll-area-CBq8XL4c.cjs} +2 -2
  234. package/dist/scroll-area-CBq8XL4c.cjs.map +1 -0
  235. package/dist/{search-input-CbN38n2i.js → search-input-DqcwkgsY.js} +2 -2
  236. package/dist/search-input-DqcwkgsY.js.map +1 -0
  237. package/dist/{search-input-SgtXaOOe.cjs → search-input-yweS9EMM.cjs} +2 -2
  238. package/dist/search-input-yweS9EMM.cjs.map +1 -0
  239. package/dist/select-BHjk6yT3.cjs +2 -0
  240. package/dist/select-BHjk6yT3.cjs.map +1 -0
  241. package/dist/select-C6N3CXuY.js +2 -0
  242. package/dist/select-C6N3CXuY.js.map +1 -0
  243. package/dist/{separator-D3tlMHd9.d.ts → separator-BnnbFnrB.d.ts} +3 -4
  244. package/dist/separator-Cigaqna1.cjs +2 -0
  245. package/dist/separator-Cigaqna1.cjs.map +1 -0
  246. package/dist/separator-aLdI4FQe.js +2 -0
  247. package/dist/separator-aLdI4FQe.js.map +1 -0
  248. package/dist/{separator-CgmZj3UV.d.cts → separator-mZ8r56s2.d.cts} +3 -4
  249. package/dist/sheet-CX3PajAc.cjs +2 -0
  250. package/dist/sheet-CX3PajAc.cjs.map +1 -0
  251. package/dist/sheet-DqPtcv9H.js +2 -0
  252. package/dist/sheet-DqPtcv9H.js.map +1 -0
  253. package/dist/sidebar-BKNai9nJ.cjs +2 -0
  254. package/dist/sidebar-BKNai9nJ.cjs.map +1 -0
  255. package/dist/sidebar-BR_UWLC5.js +2 -0
  256. package/dist/sidebar-BR_UWLC5.js.map +1 -0
  257. package/dist/sidebar-C2FH-tzm.cjs +2 -0
  258. package/dist/sidebar-C2FH-tzm.cjs.map +1 -0
  259. package/dist/sidebar-DphZ29-4.js +2 -0
  260. package/dist/sidebar-DphZ29-4.js.map +1 -0
  261. package/dist/skeleton-C-9PuX3p.cjs +2 -0
  262. package/dist/skeleton-C-9PuX3p.cjs.map +1 -0
  263. package/dist/skeleton-sZeupFu_.js +2 -0
  264. package/dist/skeleton-sZeupFu_.js.map +1 -0
  265. package/dist/styles/base.cjs +0 -0
  266. package/dist/styles/base.css +32 -0
  267. package/dist/styles/base.css.map +1 -0
  268. package/dist/styles/base.js +1 -0
  269. package/dist/styles/loader.cjs +0 -0
  270. package/dist/styles/loader.css +116 -0
  271. package/dist/styles/loader.css.map +1 -0
  272. package/dist/styles/loader.js +1 -0
  273. package/dist/styles/theme.cjs +0 -0
  274. package/dist/styles/theme.css +106 -0
  275. package/dist/styles/theme.css.map +1 -0
  276. package/dist/styles/theme.js +1 -0
  277. package/dist/styles/typography.cjs +0 -0
  278. package/dist/styles/typography.css +9 -0
  279. package/dist/styles/typography.css.map +1 -0
  280. package/dist/styles/typography.js +1 -0
  281. package/dist/switch-965kHdW_.js +2 -0
  282. package/dist/switch-965kHdW_.js.map +1 -0
  283. package/dist/switch-C3igCoxt.cjs +2 -0
  284. package/dist/switch-C3igCoxt.cjs.map +1 -0
  285. package/dist/table/index.cjs +1 -1
  286. package/dist/table/index.cjs.map +1 -1
  287. package/dist/table/index.d.cts +2 -2
  288. package/dist/table/index.d.ts +2 -2
  289. package/dist/table/index.js +1 -1
  290. package/dist/table/index.js.map +1 -1
  291. package/dist/table-CTMRaGxa.cjs +2 -0
  292. package/dist/table-CTMRaGxa.cjs.map +1 -0
  293. package/dist/table-CsnugKnh.js +2 -0
  294. package/dist/table-CsnugKnh.js.map +1 -0
  295. package/dist/textarea-3XRFTUZ8.cjs +2 -0
  296. package/dist/textarea-3XRFTUZ8.cjs.map +1 -0
  297. package/dist/textarea-CQ6gAnm5.js +2 -0
  298. package/dist/textarea-CQ6gAnm5.js.map +1 -0
  299. package/dist/title-6Uosk2b4.cjs +2 -0
  300. package/dist/title-6Uosk2b4.cjs.map +1 -0
  301. package/dist/title-CxIwADiB.js +2 -0
  302. package/dist/title-CxIwADiB.js.map +1 -0
  303. package/dist/{toggle-CYCU8-jp.d.ts → toggle-B-LtBkTS.d.ts} +6 -6
  304. package/dist/{toggle-B9onDBto.d.cts → toggle-BLlf4Xgl.d.cts} +3 -3
  305. package/dist/{toggle-T35MVJMk.js → toggle-CHJ2edke.js} +2 -2
  306. package/dist/toggle-CHJ2edke.js.map +1 -0
  307. package/dist/{toggle-RdqFG3Vy.cjs → toggle-DO8QbhLS.cjs} +2 -2
  308. package/dist/toggle-DO8QbhLS.cjs.map +1 -0
  309. package/dist/tooltip-B8KdfOeT.js +2 -0
  310. package/dist/tooltip-B8KdfOeT.js.map +1 -0
  311. package/dist/{tooltip-Bp9XarsW.d.ts → tooltip-CbtJCe-c.d.ts} +6 -6
  312. package/dist/tooltip-DLnAwybV.cjs +2 -0
  313. package/dist/tooltip-DLnAwybV.cjs.map +1 -0
  314. package/dist/{tooltip-Ccg2G_fB.d.cts → tooltip-etVeWcFC.d.cts} +6 -6
  315. package/dist/{types-CnMfjcgO.cjs → types-CrbWxjnp.cjs} +1 -1
  316. package/dist/types-CrbWxjnp.cjs.map +1 -0
  317. package/dist/{types-BVNbk1ZN.js → types-DaIHddx7.js} +1 -1
  318. package/dist/types-DaIHddx7.js.map +1 -0
  319. package/dist/typography/paragraph.cjs +1 -1
  320. package/dist/typography/paragraph.d.cts +3 -4
  321. package/dist/typography/paragraph.d.ts +3 -4
  322. package/dist/typography/paragraph.js +1 -1
  323. package/dist/typography/title.cjs +1 -1
  324. package/dist/typography/title.d.cts +2 -2
  325. package/dist/typography/title.d.ts +2 -2
  326. package/dist/typography/title.js +1 -1
  327. package/dist/ui/alert-dialog.cjs +1 -1
  328. package/dist/ui/alert-dialog.d.cts +12 -12
  329. package/dist/ui/alert-dialog.d.ts +12 -12
  330. package/dist/ui/alert-dialog.js +1 -1
  331. package/dist/ui/alert.cjs +1 -1
  332. package/dist/ui/alert.cjs.map +1 -1
  333. package/dist/ui/alert.d.cts +4 -4
  334. package/dist/ui/alert.d.ts +6 -6
  335. package/dist/ui/alert.js +1 -1
  336. package/dist/ui/alert.js.map +1 -1
  337. package/dist/ui/aspect-ratio.cjs +1 -1
  338. package/dist/ui/aspect-ratio.cjs.map +1 -1
  339. package/dist/ui/aspect-ratio.d.cts +2 -2
  340. package/dist/ui/aspect-ratio.d.ts +2 -2
  341. package/dist/ui/aspect-ratio.js +1 -1
  342. package/dist/ui/aspect-ratio.js.map +1 -1
  343. package/dist/ui/avatar.cjs +1 -1
  344. package/dist/ui/avatar.cjs.map +1 -1
  345. package/dist/ui/avatar.d.cts +4 -4
  346. package/dist/ui/avatar.d.ts +4 -4
  347. package/dist/ui/avatar.js +1 -1
  348. package/dist/ui/avatar.js.map +1 -1
  349. package/dist/ui/badge.cjs +1 -1
  350. package/dist/ui/badge.d.cts +4 -4
  351. package/dist/ui/badge.d.ts +6 -6
  352. package/dist/ui/badge.js +1 -1
  353. package/dist/ui/breadcrumb.cjs +1 -1
  354. package/dist/ui/breadcrumb.cjs.map +1 -1
  355. package/dist/ui/breadcrumb.d.cts +9 -9
  356. package/dist/ui/breadcrumb.d.ts +9 -9
  357. package/dist/ui/breadcrumb.js +1 -1
  358. package/dist/ui/breadcrumb.js.map +1 -1
  359. package/dist/ui/button.cjs +1 -1
  360. package/dist/ui/button.d.cts +1 -1
  361. package/dist/ui/button.d.ts +1 -1
  362. package/dist/ui/button.js +1 -1
  363. package/dist/ui/buttons/add-new.cjs +1 -1
  364. package/dist/ui/buttons/add-new.js +1 -1
  365. package/dist/ui/buttons/edit.cjs +1 -1
  366. package/dist/ui/buttons/edit.cjs.map +1 -1
  367. package/dist/ui/buttons/edit.js +1 -1
  368. package/dist/ui/buttons/edit.js.map +1 -1
  369. package/dist/ui/buttons/refresh.cjs +1 -1
  370. package/dist/ui/buttons/refresh.js +1 -1
  371. package/dist/ui/buttons/trash.cjs +1 -1
  372. package/dist/ui/buttons/trash.cjs.map +1 -1
  373. package/dist/ui/buttons/trash.js +1 -1
  374. package/dist/ui/buttons/trash.js.map +1 -1
  375. package/dist/ui/buttons/upload-image.cjs +1 -1
  376. package/dist/ui/buttons/upload-image.cjs.map +1 -1
  377. package/dist/ui/buttons/upload-image.js +1 -1
  378. package/dist/ui/buttons/upload-image.js.map +1 -1
  379. package/dist/ui/calendar.cjs +1 -1
  380. package/dist/ui/calendar.d.cts +5 -5
  381. package/dist/ui/calendar.d.ts +5 -5
  382. package/dist/ui/calendar.js +1 -1
  383. package/dist/ui/card.cjs +1 -1
  384. package/dist/ui/card.d.cts +8 -9
  385. package/dist/ui/card.d.ts +8 -9
  386. package/dist/ui/card.js +1 -1
  387. package/dist/ui/carousel.cjs +1 -1
  388. package/dist/ui/carousel.cjs.map +1 -1
  389. package/dist/ui/carousel.d.cts +8 -8
  390. package/dist/ui/carousel.d.ts +8 -8
  391. package/dist/ui/carousel.js +1 -1
  392. package/dist/ui/carousel.js.map +1 -1
  393. package/dist/ui/collapsible.cjs +1 -1
  394. package/dist/ui/collapsible.cjs.map +1 -1
  395. package/dist/ui/collapsible.d.cts +4 -4
  396. package/dist/ui/collapsible.d.ts +4 -4
  397. package/dist/ui/collapsible.js +1 -1
  398. package/dist/ui/collapsible.js.map +1 -1
  399. package/dist/ui/command.cjs +1 -1
  400. package/dist/ui/command.d.cts +2 -2
  401. package/dist/ui/command.d.ts +2 -2
  402. package/dist/ui/command.js +1 -1
  403. package/dist/ui/context-menu.cjs +1 -1
  404. package/dist/ui/context-menu.cjs.map +1 -1
  405. package/dist/ui/context-menu.d.cts +17 -17
  406. package/dist/ui/context-menu.d.ts +17 -17
  407. package/dist/ui/context-menu.js +1 -1
  408. package/dist/ui/context-menu.js.map +1 -1
  409. package/dist/ui/dialog.cjs +1 -1
  410. package/dist/ui/dialog.d.cts +1 -1
  411. package/dist/ui/dialog.d.ts +1 -1
  412. package/dist/ui/dialog.js +1 -1
  413. package/dist/ui/dropdown-menu.cjs +1 -1
  414. package/dist/ui/dropdown-menu.d.cts +17 -18
  415. package/dist/ui/dropdown-menu.d.ts +17 -18
  416. package/dist/ui/dropdown-menu.js +1 -1
  417. package/dist/ui/file-uploader.cjs +2 -2
  418. package/dist/ui/file-uploader.cjs.map +1 -1
  419. package/dist/ui/file-uploader.d.cts +5 -5
  420. package/dist/ui/file-uploader.d.ts +5 -5
  421. package/dist/ui/file-uploader.js +2 -2
  422. package/dist/ui/file-uploader.js.map +1 -1
  423. package/dist/ui/form.cjs +1 -1
  424. package/dist/ui/form.d.cts +7 -7
  425. package/dist/ui/form.d.ts +7 -7
  426. package/dist/ui/form.js +1 -1
  427. package/dist/ui/hover-card.cjs +1 -1
  428. package/dist/ui/hover-card.cjs.map +1 -1
  429. package/dist/ui/hover-card.d.cts +4 -4
  430. package/dist/ui/hover-card.d.ts +4 -4
  431. package/dist/ui/hover-card.js +1 -1
  432. package/dist/ui/hover-card.js.map +1 -1
  433. package/dist/ui/input-otp.cjs.map +1 -1
  434. package/dist/ui/input-otp.d.cts +6 -6
  435. package/dist/ui/input-otp.d.ts +6 -6
  436. package/dist/ui/input-otp.js.map +1 -1
  437. package/dist/ui/input.cjs +1 -1
  438. package/dist/ui/input.d.cts +1 -1
  439. package/dist/ui/input.d.ts +1 -1
  440. package/dist/ui/input.js +1 -1
  441. package/dist/ui/inputs/search-input.cjs +1 -1
  442. package/dist/ui/inputs/search-input.d.cts +3 -3
  443. package/dist/ui/inputs/search-input.d.ts +3 -3
  444. package/dist/ui/inputs/search-input.js +1 -1
  445. package/dist/ui/label.cjs +1 -1
  446. package/dist/ui/label.d.cts +2 -2
  447. package/dist/ui/label.d.ts +2 -2
  448. package/dist/ui/label.js +1 -1
  449. package/dist/ui/menubar.cjs +1 -1
  450. package/dist/ui/menubar.cjs.map +1 -1
  451. package/dist/ui/menubar.d.cts +18 -18
  452. package/dist/ui/menubar.d.ts +18 -18
  453. package/dist/ui/menubar.js +1 -1
  454. package/dist/ui/menubar.js.map +1 -1
  455. package/dist/ui/multi-select.cjs +1 -1
  456. package/dist/ui/multi-select.d.cts +4 -4
  457. package/dist/ui/multi-select.d.ts +4 -4
  458. package/dist/ui/multi-select.js +1 -1
  459. package/dist/ui/navigation-menu.cjs +1 -1
  460. package/dist/ui/navigation-menu.cjs.map +1 -1
  461. package/dist/ui/navigation-menu.d.cts +9 -9
  462. package/dist/ui/navigation-menu.d.ts +11 -11
  463. package/dist/ui/navigation-menu.js +1 -1
  464. package/dist/ui/navigation-menu.js.map +1 -1
  465. package/dist/ui/pagination.cjs +1 -1
  466. package/dist/ui/pagination.cjs.map +1 -1
  467. package/dist/ui/pagination.d.cts +10 -10
  468. package/dist/ui/pagination.d.ts +10 -10
  469. package/dist/ui/pagination.js +1 -1
  470. package/dist/ui/pagination.js.map +1 -1
  471. package/dist/ui/popover.cjs +1 -1
  472. package/dist/ui/popover.d.cts +5 -7
  473. package/dist/ui/popover.d.ts +5 -7
  474. package/dist/ui/popover.js +1 -1
  475. package/dist/ui/progress.cjs +1 -1
  476. package/dist/ui/progress.d.cts +2 -2
  477. package/dist/ui/progress.d.ts +2 -2
  478. package/dist/ui/progress.js +1 -1
  479. package/dist/ui/radio-group.cjs +1 -1
  480. package/dist/ui/radio-group.cjs.map +1 -1
  481. package/dist/ui/radio-group.d.cts +3 -3
  482. package/dist/ui/radio-group.d.ts +3 -3
  483. package/dist/ui/radio-group.js +1 -1
  484. package/dist/ui/radio-group.js.map +1 -1
  485. package/dist/ui/resizable.cjs.map +1 -1
  486. package/dist/ui/resizable.d.cts +4 -4
  487. package/dist/ui/resizable.d.ts +4 -4
  488. package/dist/ui/resizable.js.map +1 -1
  489. package/dist/ui/scroll-area.cjs +1 -1
  490. package/dist/ui/scroll-area.d.cts +3 -3
  491. package/dist/ui/scroll-area.d.ts +3 -3
  492. package/dist/ui/scroll-area.js +1 -1
  493. package/dist/ui/select.cjs +1 -1
  494. package/dist/ui/select.d.cts +12 -13
  495. package/dist/ui/select.d.ts +12 -13
  496. package/dist/ui/select.js +1 -1
  497. package/dist/ui/separator.cjs +1 -1
  498. package/dist/ui/separator.d.cts +1 -1
  499. package/dist/ui/separator.d.ts +1 -1
  500. package/dist/ui/separator.js +1 -1
  501. package/dist/ui/sheet.cjs +1 -1
  502. package/dist/ui/sheet.d.cts +10 -11
  503. package/dist/ui/sheet.d.ts +10 -11
  504. package/dist/ui/sheet.js +1 -1
  505. package/dist/ui/sidebar.cjs +1 -1
  506. package/dist/ui/sidebar.d.cts +41 -41
  507. package/dist/ui/sidebar.d.ts +43 -43
  508. package/dist/ui/sidebar.js +1 -1
  509. package/dist/ui/skeleton.cjs +1 -1
  510. package/dist/ui/skeleton.d.cts +2 -3
  511. package/dist/ui/skeleton.d.ts +2 -3
  512. package/dist/ui/skeleton.js +1 -1
  513. package/dist/ui/slider.cjs +1 -1
  514. package/dist/ui/slider.cjs.map +1 -1
  515. package/dist/ui/slider.d.cts +2 -2
  516. package/dist/ui/slider.d.ts +2 -2
  517. package/dist/ui/slider.js +1 -1
  518. package/dist/ui/slider.js.map +1 -1
  519. package/dist/ui/sonner.cjs +1 -1
  520. package/dist/ui/sonner.cjs.map +1 -1
  521. package/dist/ui/sonner.d.cts +2 -2
  522. package/dist/ui/sonner.d.ts +2 -2
  523. package/dist/ui/sonner.js +1 -1
  524. package/dist/ui/sonner.js.map +1 -1
  525. package/dist/ui/switch.cjs +1 -1
  526. package/dist/ui/switch.d.cts +2 -2
  527. package/dist/ui/switch.d.ts +2 -2
  528. package/dist/ui/switch.js +1 -1
  529. package/dist/ui/table.cjs +1 -1
  530. package/dist/ui/table.d.cts +9 -9
  531. package/dist/ui/table.d.ts +9 -9
  532. package/dist/ui/table.js +1 -1
  533. package/dist/ui/tabs.cjs +1 -1
  534. package/dist/ui/tabs.cjs.map +1 -1
  535. package/dist/ui/tabs.d.cts +5 -6
  536. package/dist/ui/tabs.d.ts +5 -6
  537. package/dist/ui/tabs.js +1 -1
  538. package/dist/ui/tabs.js.map +1 -1
  539. package/dist/ui/textarea.cjs +1 -1
  540. package/dist/ui/textarea.d.cts +3 -3
  541. package/dist/ui/textarea.d.ts +3 -3
  542. package/dist/ui/textarea.js +1 -1
  543. package/dist/ui/toggle-group.cjs +1 -1
  544. package/dist/ui/toggle-group.cjs.map +1 -1
  545. package/dist/ui/toggle-group.d.cts +4 -4
  546. package/dist/ui/toggle-group.d.ts +5 -5
  547. package/dist/ui/toggle-group.js +1 -1
  548. package/dist/ui/toggle-group.js.map +1 -1
  549. package/dist/ui/toggle.cjs +1 -1
  550. package/dist/ui/toggle.d.cts +1 -1
  551. package/dist/ui/toggle.d.ts +1 -1
  552. package/dist/ui/toggle.js +1 -1
  553. package/dist/ui/tooltip.cjs +1 -1
  554. package/dist/ui/tooltip.d.cts +1 -1
  555. package/dist/ui/tooltip.d.ts +1 -1
  556. package/dist/ui/tooltip.js +1 -1
  557. package/dist/utils-BsjVK5EW.cjs.map +1 -1
  558. package/dist/utils-D9AH0PUV.js.map +1 -1
  559. package/package.json +25 -4
  560. package/packages/components/cards/simple-card.tsx +11 -25
  561. package/packages/components/data-display/country.tsx +34 -40
  562. package/packages/components/data-display/data-list.tsx +15 -24
  563. package/packages/components/data-display/date-tooltip.tsx +9 -23
  564. package/packages/components/data-display/date.tsx +90 -148
  565. package/packages/components/data-display/empty.tsx +8 -20
  566. package/packages/components/data-display/name.tsx +9 -11
  567. package/packages/components/data-display/phone-number.tsx +7 -15
  568. package/packages/components/data-display/role-badge.tsx +21 -25
  569. package/packages/components/data-display/statistic.tsx +61 -63
  570. package/packages/components/dialogs/confirm-dialog.tsx +12 -19
  571. package/packages/components/dialogs/detail-dialog/component/header.tsx +3 -7
  572. package/packages/components/dialogs/detail-dialog/component/main.tsx +15 -19
  573. package/packages/components/dialogs/detail-dialog/component/sidebar.tsx +256 -385
  574. package/packages/components/dialogs/detail-dialog/component/wrapper.tsx +6 -8
  575. package/packages/components/dialogs/detail-dialog/index.tsx +26 -35
  576. package/packages/components/dialogs/error-dialog.tsx +14 -28
  577. package/packages/components/dialogs/form-dialog.tsx +27 -59
  578. package/packages/components/dialogs/loading-dialog.tsx +8 -11
  579. package/packages/components/forms/combobox-field.tsx +44 -81
  580. package/packages/components/forms/date-field.tsx +2 -5
  581. package/packages/components/forms/form-wrapper.tsx +45 -71
  582. package/packages/components/forms/multi-select-field.tsx +2 -2
  583. package/packages/components/forms/number-field.tsx +1 -3
  584. package/packages/components/forms/password-field.tsx +1 -1
  585. package/packages/components/forms/select-field.tsx +1 -1
  586. package/packages/components/forms/switch-field.tsx +2 -4
  587. package/packages/components/forms/text-field.tsx +3 -10
  588. package/packages/components/forms/textarea-field.tsx +3 -11
  589. package/packages/components/layouts/flex.tsx +55 -66
  590. package/packages/components/layouts/main/content.tsx +3 -3
  591. package/packages/components/layouts/main/header.tsx +15 -27
  592. package/packages/components/layouts/main/wrapper.tsx +3 -3
  593. package/packages/components/styles/base.css +29 -0
  594. package/packages/components/styles/loader.css +113 -0
  595. package/packages/components/styles/theme.css +103 -0
  596. package/packages/components/styles/typography.css +6 -0
  597. package/packages/components/table/data-table-pagination.tsx +15 -44
  598. package/packages/components/table/data-table.tsx +86 -173
  599. package/packages/components/table/index.tsx +31 -50
  600. package/packages/components/typography/paragraph.tsx +18 -21
  601. package/packages/components/typography/title.tsx +23 -28
  602. package/packages/components/ui/alert-dialog.tsx +44 -118
  603. package/packages/components/ui/alert.tsx +19 -46
  604. package/packages/components/ui/aspect-ratio.tsx +7 -16
  605. package/packages/components/ui/avatar.tsx +12 -39
  606. package/packages/components/ui/badge.tsx +35 -41
  607. package/packages/components/ui/breadcrumb.tsx +26 -62
  608. package/packages/components/ui/button.tsx +163 -46
  609. package/packages/components/ui/buttons/add-new.tsx +9 -16
  610. package/packages/components/ui/buttons/edit.tsx +7 -13
  611. package/packages/components/ui/buttons/refresh.tsx +10 -21
  612. package/packages/components/ui/buttons/trash.tsx +7 -13
  613. package/packages/components/ui/buttons/upload-image.tsx +10 -13
  614. package/packages/components/ui/calendar.tsx +56 -124
  615. package/packages/components/ui/card.tsx +21 -72
  616. package/packages/components/ui/carousel.tsx +79 -133
  617. package/packages/components/ui/checkbox.tsx +19 -29
  618. package/packages/components/ui/collapsible.tsx +10 -26
  619. package/packages/components/ui/command.tsx +65 -144
  620. package/packages/components/ui/context-menu.tsx +48 -110
  621. package/packages/components/ui/dialog.tsx +55 -110
  622. package/packages/components/ui/dropdown-menu.tsx +100 -169
  623. package/packages/components/ui/file-uploader.tsx +93 -151
  624. package/packages/components/ui/form.tsx +51 -115
  625. package/packages/components/ui/hover-card.tsx +12 -23
  626. package/packages/components/ui/input-otp.tsx +20 -29
  627. package/packages/components/ui/input.tsx +34 -34
  628. package/packages/components/ui/inputs/number-input.tsx +5 -13
  629. package/packages/components/ui/inputs/password-input.tsx +2 -8
  630. package/packages/components/ui/inputs/search-input.tsx +7 -7
  631. package/packages/components/ui/label.tsx +14 -17
  632. package/packages/components/ui/menubar.tsx +46 -109
  633. package/packages/components/ui/multi-select.tsx +250 -317
  634. package/packages/components/ui/navigation-menu.tsx +34 -80
  635. package/packages/components/ui/pagination.tsx +28 -86
  636. package/packages/components/ui/popover.tsx +28 -43
  637. package/packages/components/ui/progress.tsx +8 -19
  638. package/packages/components/ui/radio-group.tsx +19 -36
  639. package/packages/components/ui/resizable.tsx +14 -22
  640. package/packages/components/ui/scroll-area.tsx +14 -30
  641. package/packages/components/ui/select.tsx +94 -141
  642. package/packages/components/ui/separator.tsx +11 -13
  643. package/packages/components/ui/sheet.tsx +62 -98
  644. package/packages/components/ui/sidebar.tsx +287 -363
  645. package/packages/components/ui/skeleton.tsx +5 -12
  646. package/packages/components/ui/slider.tsx +11 -28
  647. package/packages/components/ui/sonner.tsx +20 -23
  648. package/packages/components/ui/switch.tsx +28 -34
  649. package/packages/components/ui/table.tsx +28 -80
  650. package/packages/components/ui/tabs.tsx +29 -61
  651. package/packages/components/ui/textarea.tsx +23 -24
  652. package/packages/components/ui/toggle-group.tsx +19 -28
  653. package/packages/components/ui/toggle.tsx +16 -29
  654. package/packages/components/ui/tooltip.tsx +26 -44
  655. package/packages/constants.tsx +16 -50
  656. package/packages/hooks/use-callback-ref.ts +7 -12
  657. package/packages/hooks/use-controllable-state.ts +37 -46
  658. package/packages/hooks/use-mobile.ts +11 -13
  659. package/packages/index.css +121 -381
  660. package/packages/lib/utils.ts +12 -16
  661. package/packages/stories/1.Guideline.mdx +3 -0
  662. package/packages/stories/2.Colors.mdx +145 -0
  663. package/packages/stories/3.Pypography.mdx +51 -0
  664. package/packages/stories/cards/simple-card.stories.tsx +24 -0
  665. package/packages/stories/data-display/data-list.stories.tsx +22 -0
  666. package/packages/stories/data-display/empty.stories.tsx +13 -0
  667. package/packages/stories/data-display/form-dialog.stories.tsx +27 -0
  668. package/packages/stories/data-display/name.stories.tsx +25 -0
  669. package/packages/stories/data-display/phone-number.stories.tsx +17 -0
  670. package/packages/stories/data-display/statistic.stories.tsx +41 -0
  671. package/packages/stories/dialogs/confirm-dialog.stories.tsx +26 -0
  672. package/packages/stories/dialogs/detail-dialog.stories.tsx +34 -0
  673. package/packages/stories/dialogs/error-dialog.stories.tsx +27 -0
  674. package/packages/stories/dialogs/loading-dialog.stories.tsx +16 -0
  675. package/packages/stories/forms/combobox-field.stories.tsx +38 -0
  676. package/packages/stories/forms/form-wrapper.stories.tsx +59 -0
  677. package/packages/stories/forms/multi-select-field.stories.tsx +42 -0
  678. package/packages/stories/forms/number-field.stories.tsx +35 -0
  679. package/packages/stories/forms/select-field.stories.tsx +39 -0
  680. package/packages/stories/forms/switch-field.stories.tsx +36 -0
  681. package/packages/stories/forms/text-field.stories.tsx +41 -0
  682. package/packages/stories/forms/textarea-field.stories.tsx +34 -0
  683. package/packages/stories/typography/paragraph.stories.tsx +45 -0
  684. package/packages/stories/typography/title.stories.tsx +39 -0
  685. package/packages/stories/ui/alert-dialog.stories.tsx +49 -0
  686. package/packages/stories/ui/alert.stories.tsx +63 -0
  687. package/packages/stories/ui/aspect-ratio.stories.tsx +22 -0
  688. package/packages/stories/ui/badge.stories.tsx +170 -0
  689. package/packages/stories/ui/breadcrumb.stories.tsx +172 -0
  690. package/packages/stories/ui/button.stories.tsx +181 -0
  691. package/packages/stories/ui/card.stories.tsx +58 -0
  692. package/packages/stories/ui/checkbox.stories.tsx +48 -0
  693. package/packages/stories/ui/command.stories.tsx +58 -0
  694. package/packages/stories/ui/dialog.stories.tsx +55 -0
  695. package/packages/stories/ui/dropdown-menu.stories.tsx +89 -0
  696. package/packages/stories/ui/file-uploader.stories.tsx +18 -0
  697. package/packages/stories/ui/input.stories.tsx +38 -0
  698. package/packages/stories/ui/label.stories.tsx +17 -0
  699. package/packages/stories/ui/multi-select.stories.tsx +29 -0
  700. package/packages/stories/ui/popover.stories.tsx +52 -0
  701. package/packages/stories/ui/progress.stories.tsx +17 -0
  702. package/packages/stories/ui/radio-group.stories.tsx +31 -0
  703. package/packages/stories/ui/select.stories.tsx +31 -0
  704. package/packages/stories/ui/separator.stories.tsx +31 -0
  705. package/packages/stories/ui/sheet.stories.tsx +50 -0
  706. package/packages/stories/ui/skeleton.stories.tsx +27 -0
  707. package/packages/stories/ui/switch.stories.tsx +21 -0
  708. package/packages/stories/ui/table.stories.tsx +82 -0
  709. package/packages/stories/ui/tabs.stories.tsx +70 -0
  710. package/packages/stories/ui/textarea.stories.tsx +15 -0
  711. package/packages/stories/ui/toaster.stories.tsx +87 -0
  712. package/packages/types.ts +32 -32
  713. package/dist/add-new-BLzwK4-z.cjs.map +0 -1
  714. package/dist/add-new-RL-iKsWC.js +0 -2
  715. package/dist/add-new-RL-iKsWC.js.map +0 -1
  716. package/dist/alert-dialog-BeOQZPLX.js +0 -2
  717. package/dist/alert-dialog-BeOQZPLX.js.map +0 -1
  718. package/dist/alert-dialog-Co0hVkiy.cjs +0 -2
  719. package/dist/alert-dialog-Co0hVkiy.cjs.map +0 -1
  720. package/dist/badge-BK1TPBDW.js.map +0 -1
  721. package/dist/badge-DaD4CS9Z.cjs.map +0 -1
  722. package/dist/button-BrvvATXa.js +0 -2
  723. package/dist/button-BrvvATXa.js.map +0 -1
  724. package/dist/button-C34BzElG.cjs +0 -2
  725. package/dist/button-C34BzElG.cjs.map +0 -1
  726. package/dist/calendar-Dgwg_GyY.js.map +0 -1
  727. package/dist/calendar-DzFHlcQl.cjs.map +0 -1
  728. package/dist/card-CasE9_d3.js +0 -2
  729. package/dist/card-CasE9_d3.js.map +0 -1
  730. package/dist/card-SpVQKFAi.cjs +0 -2
  731. package/dist/card-SpVQKFAi.cjs.map +0 -1
  732. package/dist/command-A2kJ3msd.js +0 -2
  733. package/dist/command-A2kJ3msd.js.map +0 -1
  734. package/dist/command-C7-p10t4.cjs +0 -2
  735. package/dist/command-C7-p10t4.cjs.map +0 -1
  736. package/dist/date-B1g1OMYc.js.map +0 -1
  737. package/dist/date-Cw6Jf7k6.cjs.map +0 -1
  738. package/dist/dialog-Bg22gb0J.js +0 -2
  739. package/dist/dialog-Bg22gb0J.js.map +0 -1
  740. package/dist/dialog-Crg-yf4H.cjs +0 -2
  741. package/dist/dialog-Crg-yf4H.cjs.map +0 -1
  742. package/dist/dropdown-menu-CYyfrjiV.js +0 -2
  743. package/dist/dropdown-menu-CYyfrjiV.js.map +0 -1
  744. package/dist/dropdown-menu-Ds-l2AEO.cjs +0 -2
  745. package/dist/dropdown-menu-Ds-l2AEO.cjs.map +0 -1
  746. package/dist/error-dialog-BNde8szQ.js.map +0 -1
  747. package/dist/error-dialog-Cq8KOGyS.cjs.map +0 -1
  748. package/dist/flex-BuUVu_Lf.cjs.map +0 -1
  749. package/dist/flex-uO6z0kNw.js.map +0 -1
  750. package/dist/form-Cc_o_9KE.js +0 -2
  751. package/dist/form-Cc_o_9KE.js.map +0 -1
  752. package/dist/form-DTHB0xYA.cjs +0 -2
  753. package/dist/form-DTHB0xYA.cjs.map +0 -1
  754. package/dist/form-wrapper-BPwpOPNp.js.map +0 -1
  755. package/dist/form-wrapper-C87qyXzv.cjs.map +0 -1
  756. package/dist/input-Deo694yz.cjs +0 -2
  757. package/dist/input-Deo694yz.cjs.map +0 -1
  758. package/dist/input-IwBf-u4O.js +0 -2
  759. package/dist/input-IwBf-u4O.js.map +0 -1
  760. package/dist/label-BPBmJrwf.cjs +0 -2
  761. package/dist/label-BPBmJrwf.cjs.map +0 -1
  762. package/dist/label-DjHftHzi.js +0 -2
  763. package/dist/label-DjHftHzi.js.map +0 -1
  764. package/dist/multi-select-Dh-OrxMu.cjs +0 -2
  765. package/dist/multi-select-Dh-OrxMu.cjs.map +0 -1
  766. package/dist/multi-select-VJtGyYqH.js +0 -2
  767. package/dist/multi-select-VJtGyYqH.js.map +0 -1
  768. package/dist/paragraph-DSDthoR8.cjs +0 -2
  769. package/dist/paragraph-DSDthoR8.cjs.map +0 -1
  770. package/dist/paragraph-SPyLaf4T.js +0 -2
  771. package/dist/paragraph-SPyLaf4T.js.map +0 -1
  772. package/dist/popover-BlCI2ana.cjs +0 -2
  773. package/dist/popover-BlCI2ana.cjs.map +0 -1
  774. package/dist/popover-CRmdKpzM.js +0 -2
  775. package/dist/popover-CRmdKpzM.js.map +0 -1
  776. package/dist/progress-UhztUR9a.js +0 -2
  777. package/dist/progress-UhztUR9a.js.map +0 -1
  778. package/dist/progress-dmLSlzOn.cjs +0 -2
  779. package/dist/progress-dmLSlzOn.cjs.map +0 -1
  780. package/dist/refresh-3D87WTOF.cjs.map +0 -1
  781. package/dist/refresh-Tr5yJ_61.js +0 -2
  782. package/dist/refresh-Tr5yJ_61.js.map +0 -1
  783. package/dist/scroll-area-C2rZa7Ua.js +0 -2
  784. package/dist/scroll-area-C2rZa7Ua.js.map +0 -1
  785. package/dist/scroll-area-Cc6UjeXy.cjs.map +0 -1
  786. package/dist/search-input-CbN38n2i.js.map +0 -1
  787. package/dist/search-input-SgtXaOOe.cjs.map +0 -1
  788. package/dist/select-BNcC9Gu6.js +0 -2
  789. package/dist/select-BNcC9Gu6.js.map +0 -1
  790. package/dist/select-D3H42rlp.cjs +0 -2
  791. package/dist/select-D3H42rlp.cjs.map +0 -1
  792. package/dist/separator-BQqb8Ju6.js +0 -2
  793. package/dist/separator-BQqb8Ju6.js.map +0 -1
  794. package/dist/separator-DFE0CP6K.cjs +0 -2
  795. package/dist/separator-DFE0CP6K.cjs.map +0 -1
  796. package/dist/sheet-DOrWwCZn.cjs +0 -2
  797. package/dist/sheet-DOrWwCZn.cjs.map +0 -1
  798. package/dist/sheet-e1rrFVKX.js +0 -2
  799. package/dist/sheet-e1rrFVKX.js.map +0 -1
  800. package/dist/sidebar-BECyVqhY.js +0 -2
  801. package/dist/sidebar-BECyVqhY.js.map +0 -1
  802. package/dist/sidebar-C2ViuzN1.js +0 -2
  803. package/dist/sidebar-C2ViuzN1.js.map +0 -1
  804. package/dist/sidebar-CXVvsTn6.cjs +0 -2
  805. package/dist/sidebar-CXVvsTn6.cjs.map +0 -1
  806. package/dist/sidebar-D7vLgYLD.cjs +0 -2
  807. package/dist/sidebar-D7vLgYLD.cjs.map +0 -1
  808. package/dist/skeleton-D1_Brnl9.js +0 -2
  809. package/dist/skeleton-D1_Brnl9.js.map +0 -1
  810. package/dist/skeleton-DkSs2Vh3.cjs +0 -2
  811. package/dist/skeleton-DkSs2Vh3.cjs.map +0 -1
  812. package/dist/switch-C7YAx4ZS.cjs +0 -2
  813. package/dist/switch-C7YAx4ZS.cjs.map +0 -1
  814. package/dist/switch-mhbcb1o7.js +0 -2
  815. package/dist/switch-mhbcb1o7.js.map +0 -1
  816. package/dist/table-B7URcTid.cjs +0 -2
  817. package/dist/table-B7URcTid.cjs.map +0 -1
  818. package/dist/table-DrnU8YJP.js +0 -2
  819. package/dist/table-DrnU8YJP.js.map +0 -1
  820. package/dist/textarea-CA7u6znc.js +0 -2
  821. package/dist/textarea-CA7u6znc.js.map +0 -1
  822. package/dist/textarea-CGmuTOD8.cjs +0 -2
  823. package/dist/textarea-CGmuTOD8.cjs.map +0 -1
  824. package/dist/title-D7csdg9m.js +0 -2
  825. package/dist/title-D7csdg9m.js.map +0 -1
  826. package/dist/title-_6fEG7u-.cjs +0 -2
  827. package/dist/title-_6fEG7u-.cjs.map +0 -1
  828. package/dist/toggle-RdqFG3Vy.cjs.map +0 -1
  829. package/dist/toggle-T35MVJMk.js.map +0 -1
  830. package/dist/tooltip-D1dnpKsi.cjs +0 -2
  831. package/dist/tooltip-D1dnpKsi.cjs.map +0 -1
  832. package/dist/tooltip-d_X-5oXw.js +0 -2
  833. package/dist/tooltip-d_X-5oXw.js.map +0 -1
  834. package/dist/types-BVNbk1ZN.js.map +0 -1
  835. package/dist/types-CnMfjcgO.cjs.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loader.css","names":[],"sources":["../../packages/components/styles/loader.css"],"sourcesContent":[":root {\n /* Loader styles */\n /* HTML: <div class=\"loader\"></div> */\n .loader {\n width: 50px;\n aspect-ratio: 1;\n display: grid;\n border: var(--border) solid;\n border-radius: 50%;\n border-right-color: var(--primary);\n animation: l15 1s infinite linear;\n }\n .loader::before,\n .loader::after {\n content: '';\n grid-area: 1/1;\n margin: 2px;\n border: inherit;\n border-radius: 50%;\n animation: l15 2s infinite;\n }\n .loader::after {\n margin: 8px;\n animation-duration: 3s;\n }\n @keyframes l15 {\n 100% {\n transform: rotate(1turn);\n }\n }\n\n /* HTML: <div class=\"loader-dots\"></div> */\n .loader-dots {\n width: 8px;\n aspect-ratio: 1;\n border-radius: 50%;\n animation: l5 1s infinite linear alternate;\n }\n @keyframes l5 {\n 0% {\n box-shadow:\n 10px 0 var(--primary-foreground),\n -10px 0 #0002;\n background: var(--primary-foreground);\n }\n 33% {\n box-shadow:\n 10px 0 var(--primary-foreground),\n -10px 0 #0002;\n background: #0002;\n }\n 66% {\n box-shadow:\n 10px 0 #0002,\n -10px 0 var(--primary-foreground);\n background: #0002;\n }\n 100% {\n box-shadow:\n 10px 0 #0002,\n -10px 0 var(--primary-foreground);\n background: var(--primary-foreground);\n }\n }\n\n /* HTML: <div class=\"loader-spinner\"></div> */\n .loader-spinner {\n width: 16px;\n aspect-ratio: 1;\n border-radius: 50%;\n border: 2.5px solid var(--primary-foreground);\n animation:\n l20-1 0.8s infinite linear alternate,\n l20-2 1.6s infinite linear;\n }\n @keyframes l20-1 {\n 0% {\n clip-path: polygon(50% 50%, 0 0, 50% 0%, 50% 0%, 50% 0%, 50% 0%, 50% 0%);\n }\n 12.5% {\n clip-path: polygon(50% 50%, 0 0, 50% 0%, 100% 0%, 100% 0%, 100% 0%, 100% 0%);\n }\n 25% {\n clip-path: polygon(50% 50%, 0 0, 50% 0%, 100% 0%, 100% 100%, 100% 100%, 100% 100%);\n }\n 50% {\n clip-path: polygon(50% 50%, 0 0, 50% 0%, 100% 0%, 100% 100%, 50% 100%, 0% 100%);\n }\n 62.5% {\n clip-path: polygon(50% 50%, 100% 0, 100% 0%, 100% 0%, 100% 100%, 50% 100%, 0% 100%);\n }\n 75% {\n clip-path: polygon(50% 50%, 100% 100%, 100% 100%, 100% 100%, 100% 100%, 50% 100%, 0% 100%);\n }\n 100% {\n clip-path: polygon(50% 50%, 50% 100%, 50% 100%, 50% 100%, 50% 100%, 50% 100%, 0% 100%);\n }\n }\n @keyframes l20-2 {\n 0% {\n transform: scaleY(1) rotate(0deg);\n }\n 49.99% {\n transform: scaleY(1) rotate(135deg);\n }\n 50% {\n transform: scaleY(-1) rotate(0deg);\n }\n 100% {\n transform: scaleY(-1) rotate(-135deg);\n }\n }\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA"}
@@ -0,0 +1 @@
1
+ export{};
File without changes
@@ -0,0 +1,106 @@
1
+ :root {
2
+ /* Color Palette */
3
+ --background: #ffffff; /* --color-zinc-50 */
4
+ --foreground: oklch(14% 0 0); /* --color-zinc-950 */
5
+
6
+ --card: #ffffff; /* --color-zinc-50 */
7
+ --card-foreground: oklch(14% 0 286); /* --color-zinc-950 */
8
+
9
+ --popover: #ffffff; /* --color-zinc-50 */
10
+ --popover-foreground: oklch(14% 0 286); /* --color-zinc-950 */
11
+
12
+ --primary: oklch(0.61 0.22 293); /* --color-violet-500 */
13
+ --primary-muted: oklch(0.94 0.03 295); /* --color-violte-100 */
14
+ --primary-weak: oklch(0.81 0.1 294); /* --color-violet-300 */
15
+ --primary-strong: oklch(0.49 0.24 293); /* --color-violet-700 */
16
+ --primary-intense: oklch(0.38 0.18 294); /* --color-violet-900 */
17
+
18
+ --secondary: oklch(0.55 0.02 264); /* --color-gray-500 */
19
+ --secondary-muted: oklch(0.97 0 265); /* --color-gray-100 */
20
+ --secondary-weak: oklch(0.87 0.01 258); /* --color-gray-300 */
21
+ --secondary-strong: oklch(0.28 0.03 257); /* --color-gray-800 */
22
+ --secondary-intense: oklch(0.13 0.03 262); /* --color-gray-950 */
23
+
24
+ --muted: oklch(0.55 0.01 286); /* --color-zinc-500 */
25
+ --muted-muted: oklch(0.97 0 286); /* --color-zinc-100 */
26
+ --muted-weak: oklch(0.87 0.01 286); /* --color-zinc-300 */
27
+ --muted-strong: oklch(0.37 0.01 286); /* --color-zinc-700 */
28
+ --muted-intense: oklch(0.21 0.01 286); /* --color-zinc-900 */
29
+
30
+ --accent: oklch(0.55 0.04 257); /* --color-slate-500 */
31
+ --accent-muted: oklch(0.97 0.01 248); /* --color-slate-100 */
32
+ --accent-weak: oklch(0.87 0.02 253); /* --color-slate-300 */
33
+ --accent-strong: oklch(0.37 0.04 257); /* --color-slate-700 */
34
+ --accent-intense: oklch(0.21 0.04 266); /* --color-slate-900 */
35
+
36
+ --info: oklch(0.62 0.19 260); /* --color-blue-500 */
37
+ --info-muted: oklch(0.93 0.03 256); /* --color-blue-100 */
38
+ --info-weak: oklch(0.81 0.1 252); /* --color-blue-300 */
39
+ --info-strong: oklch(0.49 0.22 264); /* --color-blue-700 */
40
+ --info-intense: oklch(0.38 0.14 266); /* --color-blue-900 */
41
+
42
+ --success: oklch(0.72 0.19 150); /* --color-green-500 */
43
+ --success-muted: oklch(0.96 0.04 157); /* --color-green-100 */
44
+ --success-weak: oklch(0.8 0.18 152); /* --color-green-400 */
45
+ --success-strong: oklch(0.63 0.17 149); /* --color-green-600 */
46
+ --success-intense: oklch(0.53 0.14 150); /* --color-green-750 */
47
+
48
+ --warning: oklch(0.77 0.16 70); /* --color-amber-500 */
49
+ --warning-muted: oklch(0.96 0.06 96); /* --color-amber-100 */
50
+ --warning-weak: oklch(0.84 0.16 84); /* --color-amber-400 */
51
+ --warning-strong: oklch(0.67 0.16 58); /* --color-amber-600 */
52
+ --warning-intense: oklch(0.56 0.15 49); /* --color-amber-700 */
53
+
54
+ --danger: oklch(0.64 0.21 25); /* --color-red-500 */
55
+ --danger-muted: oklch(0.94 0.03 18); /* --color-red-100 */
56
+ --danger-weak: oklch(0.71 0.17 22); /* --color-red-400 */
57
+ --danger-strong: oklch(0.58 0.22 27); /* --color-red-600 */
58
+ --danger-intense: oklch(0.51 0.19 28); /* --color-red-700 */
59
+
60
+ --text-positive: oklch(0.37 0.01 286); /* --color-zinc-700 */
61
+ --text-positive-muted: oklch(0.87 0.01 286); /* --color-zinc-300 */
62
+ --text-positive-weak: oklch(0.55 0.01 286); /* --color-zinc-500 */
63
+ --text-positive-strong: oklch(0.21 0.01 286); /* --color-zinc-900 */
64
+ --text-positive-intense: oklch(0 0 0); /* --color-black */
65
+
66
+ --text-negative: oklch(0.99 0 0); /* --color-zinc-50 */
67
+ --text-negative-muted: oklch(0.55 0.01 286); /* --color-zinc-500 */
68
+ --text-negative-weak: oklch(0.87 0.01 286); /* --color-zinc-300 */
69
+ --text-negative-strong: oklch(0.99 0 0); /* --color-zinc-50 */
70
+ --text-negative-intense: oklch(1 0 0); /* --color-black */
71
+
72
+ --border: oklch(0.72 0 0); /* --color-neutral-400 */
73
+ --border-muted: oklch(0.99 0 0); /* --color-neutral-50 */
74
+ --border-weak: oklch(0.92 0 0); /* --color-neutral-200 */
75
+ --border-strong: oklch(0.37 0 0); /* --color-neutral-700 */
76
+ --border-intense: oklch(0.14 0 0); /* --color-neutral-900 */
77
+
78
+ --input: oklch(0.871 0.006 286.286); /* --color-zinc-300 */
79
+ --ring: oklch(0.81 0.1 294); /* --color-violet-300 */
80
+
81
+ --chart-1: oklch(0.646 0.222 41.116);
82
+ --chart-2: oklch(0.6 0.118 184.704);
83
+ --chart-3: oklch(0.398 0.07 227.392);
84
+ --chart-4: oklch(0.828 0.189 84.429);
85
+ --chart-5: oklch(0.769 0.188 70.08);
86
+
87
+ --sidebar: oklch(0.97 0 286); /* --color-zinc-100 */
88
+ --sidebar-foreground: oklch(0.28 0.04 260.03);
89
+ --sidebar-border: oklch(0.92 0.004 286.32); /* --color-zinc-200 */
90
+ --sidebar-ring: oklch(0.871 0.006 286.286); /* --color-zinc-300 */
91
+
92
+ --sidebar-primary: oklch(0.59 0.2 277.12);
93
+ --sidebar-primary-foreground: oklch(1 0 0);
94
+
95
+ --sidebar-accent: oklch(0.967 0.001 286.375); /* --color-zinc-100 */
96
+ --sidebar-accent-foreground: oklch(0.21 0.006 285.885); /* --color-zinc-900 */
97
+
98
+ --shadow-btn: 0px 1px 2px 0 rgb(0 0 0 / 0.05);
99
+ --shadow-input: 0px 1px 2px 0 rgb(0 0 0 / 0.05);
100
+ --shadow-card: 0 0 0 1px rgba(61, 70, 82, 0.04), 0 0 0.25rem rgba(61, 70, 82, 0.1), 0 0.25rem 1.5rem rgba(0, 0, 0, 0.06);
101
+ --shadow-dropdown: 0 0.25rem 1.5rem 0 rgba(0, 0, 0, 0.1), 0 0 0.25rem 0 rgba(61, 70, 82, 0.15);
102
+ --shadow-dialog: 0 0.25rem 1.5rem 0 rgba(0, 0, 0, 0.1), 0 0 0.25rem 0 rgba(61, 70, 82, 0.15);
103
+ }
104
+
105
+
106
+ /*# sourceMappingURL=theme.css.map*/
@@ -0,0 +1 @@
1
+ {"version":3,"file":"theme.css","names":[],"sources":["../../packages/components/styles/theme.css"],"sourcesContent":[":root {\n /* Color Palette */\n --background: #ffffff; /* --color-zinc-50 */\n --foreground: oklch(14% 0 0); /* --color-zinc-950 */\n\n --card: #ffffff; /* --color-zinc-50 */\n --card-foreground: oklch(14% 0 286); /* --color-zinc-950 */\n\n --popover: #ffffff; /* --color-zinc-50 */\n --popover-foreground: oklch(14% 0 286); /* --color-zinc-950 */\n\n --primary: oklch(0.61 0.22 293); /* --color-violet-500 */\n --primary-muted: oklch(0.94 0.03 295); /* --color-violte-100 */\n --primary-weak: oklch(0.81 0.1 294); /* --color-violet-300 */\n --primary-strong: oklch(0.49 0.24 293); /* --color-violet-700 */\n --primary-intense: oklch(0.38 0.18 294); /* --color-violet-900 */\n\n --secondary: oklch(0.55 0.02 264); /* --color-gray-500 */\n --secondary-muted: oklch(0.97 0 265); /* --color-gray-100 */\n --secondary-weak: oklch(0.87 0.01 258); /* --color-gray-300 */\n --secondary-strong: oklch(0.28 0.03 257); /* --color-gray-800 */\n --secondary-intense: oklch(0.13 0.03 262); /* --color-gray-950 */\n\n --muted: oklch(0.55 0.01 286); /* --color-zinc-500 */\n --muted-muted: oklch(0.97 0 286); /* --color-zinc-100 */\n --muted-weak: oklch(0.87 0.01 286); /* --color-zinc-300 */\n --muted-strong: oklch(0.37 0.01 286); /* --color-zinc-700 */\n --muted-intense: oklch(0.21 0.01 286); /* --color-zinc-900 */\n\n --accent: oklch(0.55 0.04 257); /* --color-slate-500 */\n --accent-muted: oklch(0.97 0.01 248); /* --color-slate-100 */\n --accent-weak: oklch(0.87 0.02 253); /* --color-slate-300 */\n --accent-strong: oklch(0.37 0.04 257); /* --color-slate-700 */\n --accent-intense: oklch(0.21 0.04 266); /* --color-slate-900 */\n\n --info: oklch(0.62 0.19 260); /* --color-blue-500 */\n --info-muted: oklch(0.93 0.03 256); /* --color-blue-100 */\n --info-weak: oklch(0.81 0.1 252); /* --color-blue-300 */\n --info-strong: oklch(0.49 0.22 264); /* --color-blue-700 */\n --info-intense: oklch(0.38 0.14 266); /* --color-blue-900 */\n\n --success: oklch(0.72 0.19 150); /* --color-green-500 */\n --success-muted: oklch(0.96 0.04 157); /* --color-green-100 */\n --success-weak: oklch(0.8 0.18 152); /* --color-green-400 */\n --success-strong: oklch(0.63 0.17 149); /* --color-green-600 */\n --success-intense: oklch(0.53 0.14 150); /* --color-green-750 */\n\n --warning: oklch(0.77 0.16 70); /* --color-amber-500 */\n --warning-muted: oklch(0.96 0.06 96); /* --color-amber-100 */\n --warning-weak: oklch(0.84 0.16 84); /* --color-amber-400 */\n --warning-strong: oklch(0.67 0.16 58); /* --color-amber-600 */\n --warning-intense: oklch(0.56 0.15 49); /* --color-amber-700 */\n\n --danger: oklch(0.64 0.21 25); /* --color-red-500 */\n --danger-muted: oklch(0.94 0.03 18); /* --color-red-100 */\n --danger-weak: oklch(0.71 0.17 22); /* --color-red-400 */\n --danger-strong: oklch(0.58 0.22 27); /* --color-red-600 */\n --danger-intense: oklch(0.51 0.19 28); /* --color-red-700 */\n\n --text-positive: oklch(0.37 0.01 286); /* --color-zinc-700 */\n --text-positive-muted: oklch(0.87 0.01 286); /* --color-zinc-300 */\n --text-positive-weak: oklch(0.55 0.01 286); /* --color-zinc-500 */\n --text-positive-strong: oklch(0.21 0.01 286); /* --color-zinc-900 */\n --text-positive-intense: oklch(0 0 0); /* --color-black */\n\n --text-negative: oklch(0.99 0 0); /* --color-zinc-50 */\n --text-negative-muted: oklch(0.55 0.01 286); /* --color-zinc-500 */\n --text-negative-weak: oklch(0.87 0.01 286); /* --color-zinc-300 */\n --text-negative-strong: oklch(0.99 0 0); /* --color-zinc-50 */\n --text-negative-intense: oklch(1 0 0); /* --color-black */\n\n --border: oklch(0.72 0 0); /* --color-neutral-400 */\n --border-muted: oklch(0.99 0 0); /* --color-neutral-50 */\n --border-weak: oklch(0.92 0 0); /* --color-neutral-200 */\n --border-strong: oklch(0.37 0 0); /* --color-neutral-700 */\n --border-intense: oklch(0.14 0 0); /* --color-neutral-900 */\n\n --input: oklch(0.871 0.006 286.286); /* --color-zinc-300 */\n --ring: oklch(0.81 0.1 294); /* --color-violet-300 */\n\n --chart-1: oklch(0.646 0.222 41.116);\n --chart-2: oklch(0.6 0.118 184.704);\n --chart-3: oklch(0.398 0.07 227.392);\n --chart-4: oklch(0.828 0.189 84.429);\n --chart-5: oklch(0.769 0.188 70.08);\n\n --sidebar: oklch(0.97 0 286); /* --color-zinc-100 */\n --sidebar-foreground: oklch(0.28 0.04 260.03);\n --sidebar-border: oklch(0.92 0.004 286.32); /* --color-zinc-200 */\n --sidebar-ring: oklch(0.871 0.006 286.286); /* --color-zinc-300 */\n\n --sidebar-primary: oklch(0.59 0.2 277.12);\n --sidebar-primary-foreground: oklch(1 0 0);\n\n --sidebar-accent: oklch(0.967 0.001 286.375); /* --color-zinc-100 */\n --sidebar-accent-foreground: oklch(0.21 0.006 285.885); /* --color-zinc-900 */\n\n --shadow-btn: 0px 1px 2px 0 rgb(0 0 0 / 0.05);\n --shadow-input: 0px 1px 2px 0 rgb(0 0 0 / 0.05);\n --shadow-card: 0 0 0 1px rgba(61, 70, 82, 0.04), 0 0 0.25rem rgba(61, 70, 82, 0.1), 0 0.25rem 1.5rem rgba(0, 0, 0, 0.06);\n --shadow-dropdown: 0 0.25rem 1.5rem 0 rgba(0, 0, 0, 0.1), 0 0 0.25rem 0 rgba(61, 70, 82, 0.15);\n --shadow-dialog: 0 0.25rem 1.5rem 0 rgba(0, 0, 0, 0.1), 0 0 0.25rem 0 rgba(61, 70, 82, 0.15);\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA"}
@@ -0,0 +1 @@
1
+ export{};
File without changes
@@ -0,0 +1,9 @@
1
+ :root {
2
+ font-family:
3
+ Inter, ui-sans-serif, system-ui, Avenir, Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji';
4
+ line-height: 1.5;
5
+ font-weight: 400;
6
+ }
7
+
8
+
9
+ /*# sourceMappingURL=typography.css.map*/
@@ -0,0 +1 @@
1
+ {"version":3,"file":"typography.css","names":[],"sources":["../../packages/components/styles/typography.css"],"sourcesContent":[":root {\n font-family:\n Inter, ui-sans-serif, system-ui, Avenir, Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji';\n line-height: 1.5;\n font-weight: 400;\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA"}
@@ -0,0 +1 @@
1
+ export{};
@@ -0,0 +1,2 @@
1
+ import{cn as e}from"./utils-D9AH0PUV.js";import t from"react";import{jsx as n}from"react/jsx-runtime";import{Switch as r}from"radix-ui";function i({className:t,...i}){return n(r.Root,{"data-slot":`switch`,className:e(`peer`,`w-8 shrink-0 cursor-pointer items-center rounded-full border border-transparent shadow-xs transition-all outline-none`,`inline-flex h-5`,`data-[state=checked]:bg-primary`,`data-[state=unchecked]:bg-border-muted`,`focus-visible:border-primary-strong`,`focus-visible:ring-primary-weak`,`focus-visible:ring-4`,`disabled:cursor-not-allowed`,`disabled:opacity-50`,`data-[state=unchecked]:border-border-weak`,`data-[state=unchecked]:[&_span]:bg-accent-weak`,`data-[state=unchecked]:bg-transparent`,`data-[state=unchecked]:[&_span]:size-4`,`data-[state=unchecked]:[&_span]:translate-x-0.5`,`data-[state=unchecked]:[&_span]:shadow-none`,`data-[state=unchecked]:[&_span]:rtl:-translate-x-0.5`,t),...i,children:n(r.Thumb,{"data-slot":`switch-thumb`,className:e(`bg-background`,`pointer-events-none block size-4 rounded-full ring-0 transition-transform`,`data-[state=checked]:translate-x-[calc(100%-3px)]`,`data-[state=unchecked]:translate-x-0`)})})}export{i as Switch};
2
+ //# sourceMappingURL=switch-965kHdW_.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"switch-965kHdW_.js","names":["Switch","SwitchPrimitive"],"sources":["../packages/components/ui/switch.tsx"],"sourcesContent":["'use client'\nimport React from 'react'\nimport { Switch as SwitchPrimitive } from 'radix-ui'\n\nimport { cn } from '@/lib/utils'\n\nfunction Switch({ className, ...props }: React.ComponentProps<typeof SwitchPrimitive.Root>) {\n return (\n <SwitchPrimitive.Root\n data-slot=\"switch\"\n className={cn(\n 'peer',\n 'w-8 shrink-0 cursor-pointer items-center rounded-full border border-transparent shadow-xs transition-all outline-none',\n 'inline-flex h-5',\n 'data-[state=checked]:bg-primary',\n 'data-[state=unchecked]:bg-border-muted',\n 'focus-visible:border-primary-strong',\n 'focus-visible:ring-primary-weak',\n 'focus-visible:ring-4',\n 'disabled:cursor-not-allowed',\n 'disabled:opacity-50',\n 'data-[state=unchecked]:border-border-weak',\n 'data-[state=unchecked]:[&_span]:bg-accent-weak',\n 'data-[state=unchecked]:bg-transparent',\n 'data-[state=unchecked]:[&_span]:size-4',\n 'data-[state=unchecked]:[&_span]:translate-x-0.5',\n 'data-[state=unchecked]:[&_span]:shadow-none',\n 'data-[state=unchecked]:[&_span]:rtl:-translate-x-0.5',\n className,\n )}\n {...props}\n >\n <SwitchPrimitive.Thumb\n data-slot=\"switch-thumb\"\n className={cn(\n 'bg-background',\n 'pointer-events-none block size-4 rounded-full ring-0 transition-transform',\n 'data-[state=checked]:translate-x-[calc(100%-3px)]',\n 'data-[state=unchecked]:translate-x-0',\n )}\n />\n </SwitchPrimitive.Root>\n )\n}\n\nexport { Switch }\n"],"mappings":"wIAMA,SAASA,EAAO,CAAE,YAAW,GAAG,GAA4D,CAC1F,OACE,EAACC,EAAgB,KAAA,CACf,YAAU,SACV,UAAW,EACT,OACA,wHACA,kBACA,kCACA,yCACA,sCACA,kCACA,uBACA,8BACA,sBACA,4CACA,iDACA,wCACA,yCACA,kDACA,8CACA,uDACA,GAEF,GAAI,WAEJ,EAACA,EAAgB,MAAA,CACf,YAAU,eACV,UAAW,EACT,gBACA,4EACA,oDACA"}
@@ -0,0 +1,2 @@
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.Switch.Root,{"data-slot":`switch`,className:t.cn(`peer`,`w-8 shrink-0 cursor-pointer items-center rounded-full border border-transparent shadow-xs transition-all outline-none`,`inline-flex h-5`,`data-[state=checked]:bg-primary`,`data-[state=unchecked]:bg-border-muted`,`focus-visible:border-primary-strong`,`focus-visible:ring-primary-weak`,`focus-visible:ring-4`,`disabled:cursor-not-allowed`,`disabled:opacity-50`,`data-[state=unchecked]:border-border-weak`,`data-[state=unchecked]:[&_span]:bg-accent-weak`,`data-[state=unchecked]:bg-transparent`,`data-[state=unchecked]:[&_span]:size-4`,`data-[state=unchecked]:[&_span]:translate-x-0.5`,`data-[state=unchecked]:[&_span]:shadow-none`,`data-[state=unchecked]:[&_span]:rtl:-translate-x-0.5`,e),...n,children:(0,r.jsx)(i.Switch.Thumb,{"data-slot":`switch-thumb`,className:t.cn(`bg-background`,`pointer-events-none block size-4 rounded-full ring-0 transition-transform`,`data-[state=checked]:translate-x-[calc(100%-3px)]`,`data-[state=unchecked]:translate-x-0`)})})}Object.defineProperty(exports,`Switch`,{enumerable:!0,get:function(){return a}});
2
+ //# sourceMappingURL=switch-C3igCoxt.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"switch-C3igCoxt.cjs","names":["SwitchPrimitive","cn"],"sources":["../packages/components/ui/switch.tsx"],"sourcesContent":["'use client'\nimport React from 'react'\nimport { Switch as SwitchPrimitive } from 'radix-ui'\n\nimport { cn } from '@/lib/utils'\n\nfunction Switch({ className, ...props }: React.ComponentProps<typeof SwitchPrimitive.Root>) {\n return (\n <SwitchPrimitive.Root\n data-slot=\"switch\"\n className={cn(\n 'peer',\n 'w-8 shrink-0 cursor-pointer items-center rounded-full border border-transparent shadow-xs transition-all outline-none',\n 'inline-flex h-5',\n 'data-[state=checked]:bg-primary',\n 'data-[state=unchecked]:bg-border-muted',\n 'focus-visible:border-primary-strong',\n 'focus-visible:ring-primary-weak',\n 'focus-visible:ring-4',\n 'disabled:cursor-not-allowed',\n 'disabled:opacity-50',\n 'data-[state=unchecked]:border-border-weak',\n 'data-[state=unchecked]:[&_span]:bg-accent-weak',\n 'data-[state=unchecked]:bg-transparent',\n 'data-[state=unchecked]:[&_span]:size-4',\n 'data-[state=unchecked]:[&_span]:translate-x-0.5',\n 'data-[state=unchecked]:[&_span]:shadow-none',\n 'data-[state=unchecked]:[&_span]:rtl:-translate-x-0.5',\n className,\n )}\n {...props}\n >\n <SwitchPrimitive.Thumb\n data-slot=\"switch-thumb\"\n className={cn(\n 'bg-background',\n 'pointer-events-none block size-4 rounded-full ring-0 transition-transform',\n 'data-[state=checked]:translate-x-[calc(100%-3px)]',\n 'data-[state=unchecked]:translate-x-0',\n )}\n />\n </SwitchPrimitive.Root>\n )\n}\n\nexport { Switch }\n"],"mappings":"mLAMA,SAAS,EAAO,CAAE,YAAW,GAAG,GAA4D,CAC1F,OACE,EAAA,EAAA,KAACA,EAAAA,OAAgB,KAAA,CACf,YAAU,SACV,UAAWC,EAAAA,GACT,OACA,wHACA,kBACA,kCACA,yCACA,sCACA,kCACA,uBACA,8BACA,sBACA,4CACA,iDACA,wCACA,yCACA,kDACA,8CACA,uDACA,GAEF,GAAI,YAEJ,EAAA,EAAA,KAACD,EAAAA,OAAgB,MAAA,CACf,YAAU,eACV,UAAWC,EAAAA,GACT,gBACA,4EACA,oDACA"}
@@ -1,2 +1,2 @@
1
- const e=require(`../chunk-CUT6urMc.cjs`),t=require(`../utils-BsjVK5EW.cjs`),n=require(`../button-C34BzElG.cjs`);require(`../input-Deo694yz.cjs`);const r=require(`../select-D3H42rlp.cjs`),i=require(`../flex-BuUVu_Lf.cjs`);require(`../paragraph-DSDthoR8.cjs`);const a=require(`../dropdown-menu-Ds-l2AEO.cjs`),o=require(`../scroll-area-Cc6UjeXy.cjs`),s=require(`../table-B7URcTid.cjs`),c=require(`../add-new-BLzwK4-z.cjs`),l=require(`../refresh-3D87WTOF.cjs`),u=require(`../search-input-SgtXaOOe.cjs`),d=e.__toESM(require(`react`)),f=e.__toESM(require(`react/jsx-runtime`)),p=e.__toESM(require(`lucide-react`)),m=e.__toESM(require(`@tanstack/react-table`)),h=e=>{let t=e.getIsPinned();return{left:t===`left`?`${e.getStart(`left`)}px`:void 0,right:t===`right`?`${e.getAfter(`right`)}px`:void 0,position:t?`sticky`:`relative`,width:e.getSize(),zIndex:t?1:0}},g=({column:e})=>{let t=e.getIsSorted(),n={asc:(0,f.jsx)(p.ChevronUp,{className:`shrink-0 opacity-60`,size:16,strokeWidth:2,"aria-hidden":`true`}),desc:(0,f.jsx)(p.ChevronDown,{className:`shrink-0 opacity-60`,size:16,strokeWidth:2,"aria-hidden":`true`})};return t?n[t]:null},_=({column:e})=>{let t=e.columnDef.header;return e.getCanPin()?e.getIsPinned()?(0,f.jsx)(n.Button,{size:`icon`,variant:`ghost`,className:`hover:[&_svg]:text-secondary-foreground -mr-1 size-7 shadow-none`,"aria-label":`Unpin ${t} column`,title:`Unpin ${t} column`,onClick:()=>e.pin(!1),children:(0,f.jsx)(p.PinOffIcon,{className:`opacity-60`,size:16,"aria-hidden":`true`})}):(0,f.jsxs)(a.DropdownMenu,{children:[(0,f.jsx)(a.DropdownMenuTrigger,{asChild:!0,children:(0,f.jsx)(n.Button,{size:`icon`,variant:`ghost`,className:`-mr-1 size-7 shadow-none`,"aria-label":`Pin options for ${t} column`,title:`Pin options for ${t} column`,children:(0,f.jsx)(p.EllipsisIcon,{className:`opacity-60`,size:16,"aria-hidden":`true`})})}),(0,f.jsxs)(a.DropdownMenuContent,{align:`end`,children:[(0,f.jsxs)(a.DropdownMenuItem,{onClick:()=>e.pin(`left`),children:[(0,f.jsx)(p.ArrowLeftToLineIcon,{size:16,className:`opacity-60`,"aria-hidden":`true`}),`Stick to left`]}),(0,f.jsxs)(a.DropdownMenuItem,{onClick:()=>e.pin(`right`),children:[(0,f.jsx)(p.ArrowRightToLineIcon,{size:16,className:`opacity-60`,"aria-hidden":`true`}),`Stick to right`]})]})]}):null},v=({header:e})=>{let{column:n}=e,r=e=>{n.getCanSort()&&(e.key===`Enter`||e.key===` `)&&(e.preventDefault(),n.getToggleSortingHandler()?.(e))};return(0,f.jsxs)(`div`,{className:`flex items-center justify-between gap-2 truncate`,children:[!e.isPlaceholder&&(0,f.jsxs)(`div`,{className:t.cn(n.getCanSort()&&`flex h-full cursor-pointer items-center justify-between gap-2 select-none`),onClick:n.getToggleSortingHandler(),onKeyDown:r,tabIndex:n.getCanSort()?0:void 0,children:[(0,f.jsx)(`span`,{className:`truncate`,children:(0,m.flexRender)(n.columnDef.header,e.getContext())}),(0,f.jsx)(g,{column:n})]}),!e.isPlaceholder&&(0,f.jsx)(_,{column:n})]})},y=({table:e,isLoading:n,onClickRow:r})=>{"use no memo";return(0,f.jsxs)(o.ScrollArea,{className:`border-border bg-background relative w-full overflow-auto rounded-lg border`,children:[(0,f.jsxs)(s.Table,{className:t.cn(`!w-full`,`[&_td]:border-border`,`[&_th]:border-border`,`table-fixed border-separate border-spacing-0`,`[&_tfoot_td]:border-t`,`[&_th]:border-b`,`[&_tr]:border-none`,`[&_tr:not(:last-child)_td]:border-b`),style:{width:e.getTotalSize()},children:[(0,f.jsx)(s.TableHeader,{className:`bg-muted/50 sticky top-0 z-10 backdrop-blur-xs`,children:e.getHeaderGroups().map(e=>(0,f.jsx)(s.TableRow,{className:`bg-muted/50`,children:e.headers.map(e=>{let{column:n}=e,r=n.getIsPinned(),i=r===`left`&&n.getIsLastColumn(`left`),a=r===`right`&&n.getIsFirstColumn(`right`);return(0,f.jsx)(s.TableHead,{"data-pinned":r||void 0,"data-last-col":i?`left`:a?`right`:void 0,className:t.cn(`text-accent-foreground/60 relative h-9 border-r font-semibold select-none`,`data-pinned:backdrop-blur-xs`,`data-pinned:bg-muted/90`,`[&>.cursor-col-resize]:last:opacity-0`,`[&[data-pinned][data-last-col]]:border-border`,`[&:not([data-pinned]):has(+[data-pinned])_div.cursor-col-resize:last-child]:opacity-0`,`[&[data-last-col=left]_div.cursor-col-resize:last-child]:opacity-0`,`[&[data-pinned=left][data-last-col=left]]:border-r`,`[&[data-pinned=right]:last-child_div.cursor-col-resize:last-child]:opacity-0`,`[&[data-pinned=right][data-last-col=right]]:border-l`),colSpan:e.colSpan,style:{width:e.getSize(),maxWidth:e.getSize(),...h(e.column)},children:(0,f.jsx)(v,{header:e})},e.id)})},e.id))}),(0,f.jsx)(s.TableBody,{className:t.cn(n&&`h-36`,e.getRowModel().rows?.length===0&&`h-48`),children:n?(0,f.jsx)(s.TableRow,{className:`absolute top-9 flex h-36 w-full items-center justify-center`,children:(0,f.jsx)(s.TableCell,{children:`loading...`})}):(0,f.jsx)(d.default.Fragment,{children:e.getRowModel().rows?.length?e.getRowModel().rows.map(e=>(0,f.jsx)(s.TableRow,{"data-state":e.getIsSelected()&&`selected`,className:`cursor-pointer border-none focus:outline-none`,onClick:()=>r?.(e?.id||e.original?.id?.toString()||e.original?.uuid||void 0),children:e.getVisibleCells().map(e=>{let{column:n}=e,r=n.getIsPinned(),i=r===`left`&&n.getIsLastColumn(`left`),a=r===`right`&&n.getIsFirstColumn(`right`);return(0,f.jsx)(s.TableCell,{style:{...h(n),width:e.column.getSize(),maxWidth:e.column.getSize()},"data-pinned":r||void 0,"data-last-col":i?`left`:a?`right`:void 0,className:t.cn(`overflow-hidden py-2.5`,`[&[data-pinned][data-last-col]]:border-border`,`[&[data-pinned=left][data-last-col=left]]:border-r`,`[&[data-pinned=right][data-last-col=right]]:border-l`,`data-pinned:bg-background/90`),children:(0,m.flexRender)(e.column.columnDef.cell,e.getContext())},e.id)})},e.id)):(0,f.jsx)(s.TableRow,{className:`absolute top-9 flex h-36 w-full items-center justify-center`,children:(0,f.jsx)(s.TableCell,{children:(0,f.jsxs)(`div`,{className:`text-muted-foreground flex size-full flex-col items-center justify-center gap-y-8 text-base`,children:[(0,f.jsx)(p.PackagePlusIcon,{size:48,strokeWidth:2}),(0,f.jsx)(`p`,{children:`Thêm dữ liệu để hiển thị`})]})})})})})]}),(0,f.jsx)(o.ScrollBar,{orientation:`vertical`,className:`z-10 w-2`}),(0,f.jsx)(o.ScrollBar,{orientation:`horizontal`,className:`absolute right-0 bottom-0 left-0 h-2`})]})};function b({table:e}){"use no memo";return(0,f.jsxs)(`div`,{className:`mt-4 flex w-full flex-0 flex-wrap items-center justify-between gap-y-4 px-2`,children:[(0,f.jsxs)(`div`,{className:`text-muted-foreground flex-1 text-sm`,children:[e.getFilteredSelectedRowModel().rows.length,` of`,` `,e.getFilteredRowModel().rows.length,` row(s) selected.`]}),(0,f.jsxs)(`div`,{className:`flex flex-wrap items-center space-x-6 gap-y-4 lg:space-x-8`,children:[(0,f.jsxs)(`div`,{className:`flex items-center space-x-2`,children:[(0,f.jsx)(`p`,{className:`text-sm font-medium`,children:`Rows per page`}),(0,f.jsxs)(r.Select,{value:`${e.getState().pagination.pageSize}`,onValueChange:t=>{e.setPageSize(Number(t))},children:[(0,f.jsx)(r.SelectTrigger,{className:`h-8 w-[70px]`,children:(0,f.jsx)(r.SelectValue,{placeholder:e.getState().pagination.pageSize})}),(0,f.jsx)(r.SelectContent,{side:`top`,children:[10,20,30,40,50].map(e=>(0,f.jsx)(r.SelectItem,{value:`${e}`,children:e},e))})]})]}),(0,f.jsxs)(`div`,{className:`flex w-25 items-center justify-center text-sm font-medium`,children:[`Page `,e.getState().pagination.pageIndex+1,` of`,` `,e.getPageCount()]}),(0,f.jsxs)(`div`,{className:`flex items-center space-x-2 *:size-9 *:p-0`,children:[(0,f.jsxs)(n.Button,{variant:`outline`,className:`lg:flex`,onClick:()=>e.setPageIndex(0),disabled:!e.getCanPreviousPage(),children:[(0,f.jsx)(`span`,{className:`sr-only`,children:`Go to first page`}),(0,f.jsx)(p.ChevronsLeft,{})]}),(0,f.jsxs)(n.Button,{variant:`outline`,onClick:()=>e.previousPage(),disabled:!e.getCanPreviousPage(),children:[(0,f.jsx)(`span`,{className:`sr-only`,children:`Go to previous page`}),(0,f.jsx)(p.ChevronLeft,{})]}),(0,f.jsxs)(n.Button,{type:`button`,variant:`outline`,onClick:()=>e.nextPage(),disabled:!e.getCanNextPage(),children:[(0,f.jsx)(`span`,{className:`sr-only`,children:`Go to next page`}),(0,f.jsx)(p.ChevronRight,{})]}),(0,f.jsxs)(n.Button,{variant:`outline`,className:`lg:flex`,onClick:()=>{e.setPageIndex(e.getPageCount()-1)},disabled:!e.getCanNextPage(),children:[(0,f.jsx)(`span`,{className:`sr-only`,children:`Go to last page`}),(0,f.jsx)(p.ChevronsRight,{})]})]})]})]})}function x({data:e,totalCount:t,isLoading:n,columns:r,pagination:a,onAdd:o,onRefresh:s,onClickRow:p,onPaginationChange:h}){"use no memo";let[g,_]=d.default.useState({}),[v,x]=d.default.useState([]),[S,C]=d.default.useState([]),[w,T]=d.default.useState({}),E=d.default.useMemo(()=>({columnPinning:{right:[`actions`,`update`,`delete`]},pagination:{pageIndex:0,pageSize:20}}),[]),D=(0,m.useReactTable)({initialState:E,data:e,columns:r,rowCount:t,columnResizeMode:`onChange`,manualPagination:!0,enableColumnResizing:!1,enableMultiRowSelection:!1,getCoreRowModel:(0,m.getCoreRowModel)(),getPaginationRowModel:(0,m.getPaginationRowModel)(),getSortedRowModel:(0,m.getSortedRowModel)(),getFilteredRowModel:(0,m.getFilteredRowModel)(),getFacetedRowModel:(0,m.getFacetedRowModel)(),getFacetedUniqueValues:(0,m.getFacetedUniqueValues)(),getRowId:e=>e.id||e.uuid,state:{rowSelection:g,sorting:v,columnVisibility:w,columnFilters:S,...a?{pagination:a}:{}},onRowSelectionChange:_,onSortingChange:x,onColumnVisibilityChange:T,onColumnFiltersChange:C,...h?{onPaginationChange:h}:{}});return(0,f.jsxs)(i.Flex,{vertical:!0,wrap:!1,gap:`sm`,align:`start`,className:`size-full overflow-y-auto pt-1`,children:[(0,f.jsxs)(i.Flex,{justify:`between`,padding:`none`,width:`full`,className:`flex-0`,children:[(0,f.jsx)(u.SearchInput,{placeholder:`Search...`}),(0,f.jsxs)(i.Flex,{className:`px-0`,children:[o&&(0,f.jsx)(c.AddNewBtn,{onClick:o}),(0,f.jsx)(l.RefreshBtn,{onClick:s})]})]}),(0,f.jsxs)(i.Flex,{padding:`none`,vertical:!0,wrap:!1,width:`full`,className:`flex-1 overflow-auto`,children:[(0,f.jsx)(y,{table:D,isLoading:n,onClickRow:p}),(0,f.jsx)(b,{table:D})]})]})}exports.Table=x;
1
+ const e=require(`../chunk-CUT6urMc.cjs`),t=require(`../utils-BsjVK5EW.cjs`),n=require(`../flex-CNA_SId-.cjs`);require(`../paragraph-DcRBcRhQ.cjs`);const r=require(`../button-BSGNpclh.cjs`);require(`../input-VZiryzkl.cjs`);const i=require(`../select-BHjk6yT3.cjs`),a=require(`../dropdown-menu-BnfaOPEM.cjs`),o=require(`../scroll-area-CBq8XL4c.cjs`),s=require(`../table-CTMRaGxa.cjs`),c=require(`../add-new-CmzfSaTJ.cjs`),l=require(`../refresh-DMj_wur3.cjs`),u=require(`../search-input-yweS9EMM.cjs`),d=e.__toESM(require(`react`)),f=e.__toESM(require(`react/jsx-runtime`)),p=e.__toESM(require(`lucide-react`)),m=e.__toESM(require(`@tanstack/react-table`)),h=e=>{let t=e.getIsPinned();return{left:t===`left`?`${e.getStart(`left`)}px`:void 0,right:t===`right`?`${e.getAfter(`right`)}px`:void 0,position:t?`sticky`:`relative`,width:e.getSize(),zIndex:t?1:0}},g=({column:e})=>{let t=e.getIsSorted(),n={asc:(0,f.jsx)(p.ChevronUp,{className:`shrink-0 opacity-60`,size:16,strokeWidth:2,"aria-hidden":`true`}),desc:(0,f.jsx)(p.ChevronDown,{className:`shrink-0 opacity-60`,size:16,strokeWidth:2,"aria-hidden":`true`})};return t?n[t]:null},_=({column:e})=>{let t=e.columnDef.header;return e.getCanPin()?e.getIsPinned()?(0,f.jsx)(r.Button,{size:`icon`,variant:`ghost`,className:`hover:[&_svg]:text-secondary-foreground -mr-1 size-7 shadow-none`,"aria-label":`Unpin ${t} column`,title:`Unpin ${t} column`,onClick:()=>e.pin(!1),children:(0,f.jsx)(p.PinOffIcon,{className:`opacity-60`,size:16,"aria-hidden":`true`})}):(0,f.jsxs)(a.DropdownMenu,{children:[(0,f.jsx)(a.DropdownMenuTrigger,{asChild:!0,children:(0,f.jsx)(r.Button,{size:`icon`,variant:`ghost`,className:`-mr-1 size-7 shadow-none`,"aria-label":`Pin options for ${t} column`,title:`Pin options for ${t} column`,children:(0,f.jsx)(p.EllipsisIcon,{className:`opacity-60`,size:16,"aria-hidden":`true`})})}),(0,f.jsxs)(a.DropdownMenuContent,{align:`end`,children:[(0,f.jsxs)(a.DropdownMenuItem,{onClick:()=>e.pin(`left`),children:[(0,f.jsx)(p.ArrowLeftToLineIcon,{size:16,className:`opacity-60`,"aria-hidden":`true`}),`Stick to left`]}),(0,f.jsxs)(a.DropdownMenuItem,{onClick:()=>e.pin(`right`),children:[(0,f.jsx)(p.ArrowRightToLineIcon,{size:16,className:`opacity-60`,"aria-hidden":`true`}),`Stick to right`]})]})]}):null},v=({header:e})=>{let{column:n}=e,r=e=>{n.getCanSort()&&(e.key===`Enter`||e.key===` `)&&(e.preventDefault(),n.getToggleSortingHandler()?.(e))};return(0,f.jsxs)(`div`,{className:`flex items-center justify-between gap-2 truncate`,children:[!e.isPlaceholder&&(0,f.jsxs)(`div`,{className:t.cn(n.getCanSort()&&`flex h-full cursor-pointer items-center justify-between gap-2 select-none`),onClick:n.getToggleSortingHandler(),onKeyDown:r,tabIndex:n.getCanSort()?0:void 0,children:[(0,f.jsx)(`span`,{className:`truncate`,children:(0,m.flexRender)(n.columnDef.header,e.getContext())}),(0,f.jsx)(g,{column:n})]}),!e.isPlaceholder&&(0,f.jsx)(_,{column:n})]})},y=({table:e,isLoading:n,onClickRow:r})=>{"use no memo";return(0,f.jsxs)(o.ScrollArea,{className:`border-border bg-background relative w-full overflow-auto rounded-lg border`,children:[(0,f.jsxs)(s.Table,{className:t.cn(`!w-full`,`[&_td]:border-border`,`[&_th]:border-border`,`table-fixed border-separate border-spacing-0`,`[&_tfoot_td]:border-t`,`[&_th]:border-b`,`[&_tr]:border-none`,`[&_tr:not(:last-child)_td]:border-b`),style:{width:e.getTotalSize()},children:[(0,f.jsx)(s.TableHeader,{className:`bg-muted/50 sticky top-0 z-10 backdrop-blur-xs`,children:e.getHeaderGroups().map(e=>(0,f.jsx)(s.TableRow,{className:`bg-muted/50`,children:e.headers.map(e=>{let{column:n}=e,r=n.getIsPinned(),i=r===`left`&&n.getIsLastColumn(`left`),a=r===`right`&&n.getIsFirstColumn(`right`);return(0,f.jsx)(s.TableHead,{"data-pinned":r||void 0,"data-last-col":i?`left`:a?`right`:void 0,className:t.cn(`text-accent-foreground/60 relative h-9 border-r font-semibold select-none`,`data-pinned:backdrop-blur-xs`,`data-pinned:bg-muted/90`,`[&>.cursor-col-resize]:last:opacity-0`,`[&[data-pinned][data-last-col]]:border-border`,`[&:not([data-pinned]):has(+[data-pinned])_div.cursor-col-resize:last-child]:opacity-0`,`[&[data-last-col=left]_div.cursor-col-resize:last-child]:opacity-0`,`[&[data-pinned=left][data-last-col=left]]:border-r`,`[&[data-pinned=right]:last-child_div.cursor-col-resize:last-child]:opacity-0`,`[&[data-pinned=right][data-last-col=right]]:border-l`),colSpan:e.colSpan,style:{width:e.getSize(),maxWidth:e.getSize(),...h(e.column)},children:(0,f.jsx)(v,{header:e})},e.id)})},e.id))}),(0,f.jsx)(s.TableBody,{className:t.cn(n&&`h-36`,e.getRowModel().rows?.length===0&&`h-48`),children:n?(0,f.jsx)(s.TableRow,{className:`absolute top-9 flex h-36 w-full items-center justify-center`,children:(0,f.jsx)(s.TableCell,{children:`loading...`})}):(0,f.jsx)(d.default.Fragment,{children:e.getRowModel().rows?.length?e.getRowModel().rows.map(e=>(0,f.jsx)(s.TableRow,{"data-state":e.getIsSelected()&&`selected`,className:`cursor-pointer border-none focus:outline-none`,onClick:()=>r?.(e?.id||e.original?.id?.toString()||e.original?.uuid||void 0),children:e.getVisibleCells().map(e=>{let{column:n}=e,r=n.getIsPinned(),i=r===`left`&&n.getIsLastColumn(`left`),a=r===`right`&&n.getIsFirstColumn(`right`);return(0,f.jsx)(s.TableCell,{style:{...h(n),width:e.column.getSize(),maxWidth:e.column.getSize()},"data-pinned":r||void 0,"data-last-col":i?`left`:a?`right`:void 0,className:t.cn(`overflow-hidden py-2.5`,`[&[data-pinned][data-last-col]]:border-border`,`[&[data-pinned=left][data-last-col=left]]:border-r`,`[&[data-pinned=right][data-last-col=right]]:border-l`,`data-pinned:bg-background/90`),children:(0,m.flexRender)(e.column.columnDef.cell,e.getContext())},e.id)})},e.id)):(0,f.jsx)(s.TableRow,{className:`absolute top-9 flex h-36 w-full items-center justify-center`,children:(0,f.jsx)(s.TableCell,{children:(0,f.jsxs)(`div`,{className:`text-muted-foreground flex size-full flex-col items-center justify-center gap-y-8 text-base`,children:[(0,f.jsx)(p.PackagePlusIcon,{size:48,strokeWidth:2}),(0,f.jsx)(`p`,{children:`Thêm dữ liệu để hiển thị`})]})})})})})]}),(0,f.jsx)(o.ScrollBar,{orientation:`vertical`,className:`z-10 w-2`}),(0,f.jsx)(o.ScrollBar,{orientation:`horizontal`,className:`absolute right-0 bottom-0 left-0 h-2`})]})};function b({table:e}){"use no memo";return(0,f.jsxs)(`div`,{className:`mt-4 flex w-full flex-0 flex-wrap items-center justify-between gap-y-4 px-2`,children:[(0,f.jsxs)(`div`,{className:`text-muted-foreground flex-1 text-sm`,children:[e.getFilteredSelectedRowModel().rows.length,` of `,e.getFilteredRowModel().rows.length,` row(s) selected.`]}),(0,f.jsxs)(`div`,{className:`flex flex-wrap items-center space-x-6 gap-y-4 lg:space-x-8`,children:[(0,f.jsxs)(`div`,{className:`flex items-center space-x-2`,children:[(0,f.jsx)(`p`,{className:`text-sm font-medium`,children:`Rows per page`}),(0,f.jsxs)(i.Select,{value:`${e.getState().pagination.pageSize}`,onValueChange:t=>{e.setPageSize(Number(t))},children:[(0,f.jsx)(i.SelectTrigger,{className:`h-8 w-[70px]`,children:(0,f.jsx)(i.SelectValue,{placeholder:e.getState().pagination.pageSize})}),(0,f.jsx)(i.SelectContent,{side:`top`,children:[10,20,30,40,50].map(e=>(0,f.jsx)(i.SelectItem,{value:`${e}`,children:e},e))})]})]}),(0,f.jsxs)(`div`,{className:`flex w-25 items-center justify-center text-sm font-medium`,children:[`Page `,e.getState().pagination.pageIndex+1,` of `,e.getPageCount()]}),(0,f.jsxs)(`div`,{className:`flex items-center space-x-2 *:size-9 *:p-0`,children:[(0,f.jsxs)(r.Button,{variant:`outline`,className:`lg:flex`,onClick:()=>e.setPageIndex(0),disabled:!e.getCanPreviousPage(),children:[(0,f.jsx)(`span`,{className:`sr-only`,children:`Go to first page`}),(0,f.jsx)(p.ChevronsLeft,{})]}),(0,f.jsxs)(r.Button,{variant:`outline`,onClick:()=>e.previousPage(),disabled:!e.getCanPreviousPage(),children:[(0,f.jsx)(`span`,{className:`sr-only`,children:`Go to previous page`}),(0,f.jsx)(p.ChevronLeft,{})]}),(0,f.jsxs)(r.Button,{type:`button`,variant:`outline`,onClick:()=>e.nextPage(),disabled:!e.getCanNextPage(),children:[(0,f.jsx)(`span`,{className:`sr-only`,children:`Go to next page`}),(0,f.jsx)(p.ChevronRight,{})]}),(0,f.jsxs)(r.Button,{variant:`outline`,className:`lg:flex`,onClick:()=>{e.setPageIndex(e.getPageCount()-1)},disabled:!e.getCanNextPage(),children:[(0,f.jsx)(`span`,{className:`sr-only`,children:`Go to last page`}),(0,f.jsx)(p.ChevronsRight,{})]})]})]})]})}function x({data:e,totalCount:t,isLoading:r,columns:i,pagination:a,onAdd:o,onRefresh:s,onClickRow:p,onPaginationChange:h}){"use no memo";let[g,_]=d.default.useState({}),[v,x]=d.default.useState([]),[S,C]=d.default.useState([]),[w,T]=d.default.useState({}),E=d.default.useMemo(()=>({columnPinning:{right:[`actions`,`update`,`delete`]},pagination:{pageIndex:0,pageSize:20}}),[]),D=(0,m.useReactTable)({initialState:E,data:e,columns:i,rowCount:t,columnResizeMode:`onChange`,manualPagination:!0,enableColumnResizing:!1,enableMultiRowSelection:!1,getCoreRowModel:(0,m.getCoreRowModel)(),getPaginationRowModel:(0,m.getPaginationRowModel)(),getSortedRowModel:(0,m.getSortedRowModel)(),getFilteredRowModel:(0,m.getFilteredRowModel)(),getFacetedRowModel:(0,m.getFacetedRowModel)(),getFacetedUniqueValues:(0,m.getFacetedUniqueValues)(),getRowId:e=>e.id||e.uuid,state:{rowSelection:g,sorting:v,columnVisibility:w,columnFilters:S,...a?{pagination:a}:{}},onRowSelectionChange:_,onSortingChange:x,onColumnVisibilityChange:T,onColumnFiltersChange:C,...h?{onPaginationChange:h}:{}});return(0,f.jsxs)(n.Flex,{vertical:!0,wrap:!1,gap:`sm`,align:`start`,className:`size-full overflow-y-auto pt-1`,children:[(0,f.jsxs)(n.Flex,{justify:`between`,padding:`none`,width:`full`,className:`flex-0`,children:[(0,f.jsx)(u.SearchInput,{placeholder:`Search...`}),(0,f.jsxs)(n.Flex,{className:`px-0`,children:[o&&(0,f.jsx)(c.AddNewBtn,{onClick:o}),(0,f.jsx)(l.RefreshBtn,{onClick:s})]})]}),(0,f.jsxs)(n.Flex,{padding:`none`,vertical:!0,wrap:!1,width:`full`,className:`flex-1 overflow-auto`,children:[(0,f.jsx)(y,{table:D,isLoading:r,onClickRow:p}),(0,f.jsx)(b,{table:D})]})]})}exports.Table=x;
2
2
  //# sourceMappingURL=index.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","names":["ChevronUp","ChevronDown","Button","PinOffIcon","DropdownMenu","DropdownMenuTrigger","EllipsisIcon","DropdownMenuContent","DropdownMenuItem","ArrowLeftToLineIcon","ArrowRightToLineIcon","cn","ScrollArea","Table","TableHeader","TableRow","TableHead","TableBody","TableCell","React","PackagePlusIcon","ScrollBar","Select","SelectTrigger","SelectValue","SelectContent","SelectItem","Button","ChevronsLeft","ChevronLeft","ChevronRight","ChevronsRight","React","Flex","SearchInput","AddNewBtn","RefreshBtn"],"sources":["../../packages/components/table/data-table.tsx","../../packages/components/table/data-table-pagination.tsx","../../packages/components/table/index.tsx"],"sourcesContent":["import React, { type CSSProperties } from \"react\";\nimport {\n type Column,\n flexRender,\n type Header,\n type Table as ReactTable,\n} from \"@tanstack/react-table\";\nimport {\n ArrowLeftToLineIcon,\n ArrowRightToLineIcon,\n ChevronDown,\n ChevronUp,\n EllipsisIcon,\n PackagePlusIcon,\n PinOffIcon,\n} from \"lucide-react\";\n\nimport { cn } from \"@/lib/utils\";\nimport type { AnyEntity } from \"@/types\";\n\nimport { Button } from \"../ui/button\";\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuTrigger,\n} from \"../ui/dropdown-menu\";\nimport { ScrollArea, ScrollBar } from \"../ui/scroll-area\";\nimport {\n Table,\n TableBody,\n TableCell,\n TableHead,\n TableHeader,\n TableRow,\n} from \"../ui/table\";\n\n// Helper function to compute pinning styles for columns\nconst getPinningStyles = (column: Column<AnyEntity>): CSSProperties => {\n const isPinned = column.getIsPinned();\n return {\n left: isPinned === \"left\" ? `${column.getStart(\"left\")}px` : undefined,\n right: isPinned === \"right\" ? `${column.getAfter(\"right\")}px` : undefined,\n position: isPinned ? \"sticky\" : \"relative\",\n width: column.getSize(),\n zIndex: isPinned ? 1 : 0,\n };\n};\n\nconst SortingIndicator = ({ column }: { column: Column<AnyEntity> }) => {\n const sortDirection = column.getIsSorted();\n\n const icons = {\n asc: (\n <ChevronUp\n className=\"shrink-0 opacity-60\"\n size={16}\n strokeWidth={2}\n aria-hidden=\"true\"\n />\n ),\n desc: (\n <ChevronDown\n className=\"shrink-0 opacity-60\"\n size={16}\n strokeWidth={2}\n aria-hidden=\"true\"\n />\n ),\n };\n\n return sortDirection ? icons[sortDirection] : null;\n};\n\nconst PinControls = ({ column }: { column: Column<AnyEntity> }) => {\n const columnHeader = column.columnDef.header as string;\n\n if (!column.getCanPin()) return null;\n\n if (column.getIsPinned()) {\n return (\n <Button\n size=\"icon\"\n variant=\"ghost\"\n className=\"hover:[&_svg]:text-secondary-foreground -mr-1 size-7 shadow-none\"\n aria-label={`Unpin ${columnHeader} column`}\n title={`Unpin ${columnHeader} column`}\n onClick={() => column.pin(false)}\n >\n <PinOffIcon className=\"opacity-60\" size={16} aria-hidden=\"true\" />\n </Button>\n );\n }\n\n return (\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <Button\n size=\"icon\"\n variant=\"ghost\"\n className=\"-mr-1 size-7 shadow-none\"\n aria-label={`Pin options for ${columnHeader} column`}\n title={`Pin options for ${columnHeader} column`}\n >\n <EllipsisIcon className=\"opacity-60\" size={16} aria-hidden=\"true\" />\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"end\">\n <DropdownMenuItem onClick={() => column.pin(\"left\")}>\n <ArrowLeftToLineIcon\n size={16}\n className=\"opacity-60\"\n aria-hidden=\"true\"\n />\n Stick to left\n </DropdownMenuItem>\n <DropdownMenuItem onClick={() => column.pin(\"right\")}>\n <ArrowRightToLineIcon\n size={16}\n className=\"opacity-60\"\n aria-hidden=\"true\"\n />\n Stick to right\n </DropdownMenuItem>\n </DropdownMenuContent>\n </DropdownMenu>\n );\n};\n\nconst HeaderContent = ({ header }: { header: Header<AnyEntity, unknown> }) => {\n const { column } = header;\n\n const handleSort = (e: React.KeyboardEvent) => {\n if (column.getCanSort() && (e.key === \"Enter\" || e.key === \" \")) {\n e.preventDefault();\n column.getToggleSortingHandler()?.(e);\n }\n };\n\n return (\n <div className=\"flex items-center justify-between gap-2 truncate\">\n {!header.isPlaceholder && (\n <div\n className={cn(\n column.getCanSort() &&\n \"flex h-full cursor-pointer items-center justify-between gap-2 select-none\",\n )}\n onClick={column.getToggleSortingHandler()}\n onKeyDown={handleSort}\n tabIndex={column.getCanSort() ? 0 : undefined}\n >\n <span className=\"truncate\">\n {flexRender(column.columnDef.header, header.getContext())}\n </span>\n <SortingIndicator column={column} />\n </div>\n )}\n {!header.isPlaceholder && <PinControls column={column} />}\n </div>\n );\n};\n\ninterface DataTableProps {\n table: ReactTable<AnyEntity>;\n columnsLength?: number;\n isLoading?: boolean;\n onClickRow?: (id: string) => void;\n}\n\nexport const DataTable = ({ table, isLoading, onClickRow }: DataTableProps) => {\n \"use no memo\";\n return (\n <ScrollArea className=\"border-border bg-background relative w-full overflow-auto rounded-lg border\">\n <Table\n className={cn(\n \"!w-full\",\n \"[&_td]:border-border\",\n \"[&_th]:border-border\",\n \"table-fixed border-separate border-spacing-0\",\n \"[&_tfoot_td]:border-t\",\n \"[&_th]:border-b\",\n \"[&_tr]:border-none\",\n \"[&_tr:not(:last-child)_td]:border-b\",\n )}\n style={{\n width: table.getTotalSize(),\n }}\n >\n <TableHeader className=\"bg-muted/50 sticky top-0 z-10 backdrop-blur-xs\">\n {table.getHeaderGroups().map((headerGroup) => (\n <TableRow key={headerGroup.id} className=\"bg-muted/50\">\n {headerGroup.headers.map((header) => {\n const { column } = header;\n const isPinned = column.getIsPinned();\n const isLastLeftPinned =\n isPinned === \"left\" && column.getIsLastColumn(\"left\");\n const isFirstRightPinned =\n isPinned === \"right\" && column.getIsFirstColumn(\"right\");\n return (\n <TableHead\n key={header.id}\n data-pinned={isPinned || undefined}\n data-last-col={\n isLastLeftPinned\n ? \"left\"\n : isFirstRightPinned\n ? \"right\"\n : undefined\n }\n className={cn(\n \"text-accent-foreground/60 relative h-9 border-r font-semibold select-none\",\n \"data-pinned:backdrop-blur-xs\",\n \"data-pinned:bg-muted/90\",\n \"[&>.cursor-col-resize]:last:opacity-0\",\n \"[&[data-pinned][data-last-col]]:border-border\",\n \"[&:not([data-pinned]):has(+[data-pinned])_div.cursor-col-resize:last-child]:opacity-0\",\n \"[&[data-last-col=left]_div.cursor-col-resize:last-child]:opacity-0\",\n \"[&[data-pinned=left][data-last-col=left]]:border-r\",\n \"[&[data-pinned=right]:last-child_div.cursor-col-resize:last-child]:opacity-0\",\n \"[&[data-pinned=right][data-last-col=right]]:border-l\",\n )}\n {...{\n colSpan: header.colSpan,\n style: {\n width: header.getSize(),\n maxWidth: header.getSize(),\n ...getPinningStyles(header.column),\n },\n }}\n >\n <HeaderContent header={header} />\n </TableHead>\n );\n })}\n </TableRow>\n ))}\n </TableHeader>\n\n <TableBody\n className={cn(\n isLoading && \"h-36\",\n table.getRowModel().rows?.length === 0 && \"h-48\",\n )}\n >\n {isLoading ? (\n <TableRow className=\"absolute top-9 flex h-36 w-full items-center justify-center\">\n <TableCell>loading...</TableCell>\n </TableRow>\n ) : (\n <React.Fragment>\n {table.getRowModel().rows?.length ? (\n table.getRowModel().rows.map((row) => (\n <TableRow\n key={row.id}\n data-state={row.getIsSelected() && \"selected\"}\n className=\"cursor-pointer border-none focus:outline-none\"\n onClick={() =>\n onClickRow?.(\n row?.id ||\n row.original?.id?.toString() ||\n row.original?.uuid ||\n undefined,\n )\n }\n >\n {row.getVisibleCells().map((cell) => {\n const { column } = cell;\n const isPinned = column.getIsPinned();\n const isLastLeftPinned =\n isPinned === \"left\" && column.getIsLastColumn(\"left\");\n const isFirstRightPinned =\n isPinned === \"right\" &&\n column.getIsFirstColumn(\"right\");\n return (\n <TableCell\n key={cell.id}\n style={{\n ...getPinningStyles(column),\n width: cell.column.getSize(),\n maxWidth: cell.column.getSize(),\n }}\n data-pinned={isPinned || undefined}\n data-last-col={\n isLastLeftPinned\n ? \"left\"\n : isFirstRightPinned\n ? \"right\"\n : undefined\n }\n className={cn(\n \"overflow-hidden py-2.5\",\n \"[&[data-pinned][data-last-col]]:border-border\",\n \"[&[data-pinned=left][data-last-col=left]]:border-r\",\n \"[&[data-pinned=right][data-last-col=right]]:border-l\",\n \"data-pinned:bg-background/90\",\n )}\n >\n {flexRender(\n cell.column.columnDef.cell,\n cell.getContext(),\n )}\n </TableCell>\n );\n })}\n </TableRow>\n ))\n ) : (\n <TableRow className=\"absolute top-9 flex h-36 w-full items-center justify-center\">\n <TableCell>\n <div className=\"text-muted-foreground flex size-full flex-col items-center justify-center gap-y-8 text-base\">\n <PackagePlusIcon size={48} strokeWidth={2} />\n <p>Thêm dữ liệu để hiển thị</p>\n </div>\n </TableCell>\n </TableRow>\n )}\n </React.Fragment>\n )}\n </TableBody>\n </Table>\n <ScrollBar orientation=\"vertical\" className=\"z-10 w-2\" />\n <ScrollBar\n orientation=\"horizontal\"\n className=\"absolute right-0 bottom-0 left-0 h-2\"\n />\n </ScrollArea>\n );\n};\n","import { type Table } from \"@tanstack/react-table\";\nimport {\n ChevronLeft,\n ChevronRight,\n ChevronsLeft,\n ChevronsRight,\n} from \"lucide-react\";\n\nimport { Button } from \"@/components/ui/button\";\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from \"@/components/ui/select\";\n\ninterface DataTablePaginationProps<TData> {\n table: Table<TData>;\n}\n\nexport function DataTablePagination<TData>({\n table,\n}: DataTablePaginationProps<TData>) {\n \"use no memo\";\n return (\n <div className=\"mt-4 flex w-full flex-0 flex-wrap items-center justify-between gap-y-4 px-2\">\n <div className=\"text-muted-foreground flex-1 text-sm\">\n {table.getFilteredSelectedRowModel().rows.length} of{\" \"}\n {table.getFilteredRowModel().rows.length} row(s) selected.\n </div>\n <div className=\"flex flex-wrap items-center space-x-6 gap-y-4 lg:space-x-8\">\n <div className=\"flex items-center space-x-2\">\n <p className=\"text-sm font-medium\">Rows per page</p>\n <Select\n value={`${table.getState().pagination.pageSize}`}\n onValueChange={(value) => {\n table.setPageSize(Number(value));\n }}\n >\n <SelectTrigger className=\"h-8 w-[70px]\">\n <SelectValue placeholder={table.getState().pagination.pageSize} />\n </SelectTrigger>\n <SelectContent side=\"top\">\n {[10, 20, 30, 40, 50].map((pageSize) => (\n <SelectItem key={pageSize} value={`${pageSize}`}>\n {pageSize}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </div>\n <div className=\"flex w-25 items-center justify-center text-sm font-medium\">\n Page {table.getState().pagination.pageIndex + 1} of{\" \"}\n {table.getPageCount()}\n </div>\n <div className=\"flex items-center space-x-2 *:size-9 *:p-0\">\n <Button\n variant=\"outline\"\n className=\"lg:flex\"\n onClick={() => table.setPageIndex(0)}\n disabled={!table.getCanPreviousPage()}\n >\n <span className=\"sr-only\">Go to first page</span>\n <ChevronsLeft />\n </Button>\n <Button\n variant=\"outline\"\n onClick={() => table.previousPage()}\n disabled={!table.getCanPreviousPage()}\n >\n <span className=\"sr-only\">Go to previous page</span>\n <ChevronLeft />\n </Button>\n <Button\n type=\"button\"\n variant=\"outline\"\n onClick={() => table.nextPage()}\n disabled={!table.getCanNextPage()}\n >\n <span className=\"sr-only\">Go to next page</span>\n <ChevronRight />\n </Button>\n <Button\n variant=\"outline\"\n className=\"lg:flex\"\n onClick={() => {\n table.setPageIndex(table.getPageCount() - 1);\n }}\n disabled={!table.getCanNextPage()}\n >\n <span className=\"sr-only\">Go to last page</span>\n <ChevronsRight />\n </Button>\n </div>\n </div>\n </div>\n );\n}\n","import React from \"react\";\nimport {\n type ColumnDef,\n type ColumnFiltersState,\n getCoreRowModel,\n getFacetedRowModel,\n getFacetedUniqueValues,\n getFilteredRowModel,\n getPaginationRowModel,\n getSortedRowModel,\n type PaginationState,\n type RowSelectionState,\n type SortingState,\n useReactTable,\n type VisibilityState,\n} from \"@tanstack/react-table\";\n\nimport { DataTable } from \"./data-table\";\nimport { DataTablePagination } from \"./data-table-pagination\";\nimport { Flex } from \"../layouts/flex\";\nimport { AddNewBtn } from \"../ui/buttons/add-new\";\nimport { RefreshBtn } from \"../ui/buttons/refresh\";\nimport { SearchInput } from \"../ui/inputs/search-input\";\n\ntype Props<T> = {\n data: T[];\n totalCount?: number;\n isLoading?: boolean;\n columns: ColumnDef<T>[];\n pagination?: PaginationState;\n onAdd?: () => void;\n onRefresh?: () => void;\n onClickRow?: (id: string) => void;\n onPaginationChange?: React.Dispatch<React.SetStateAction<PaginationState>>;\n};\nexport function Table<T extends Record<string, unknown>>({\n data,\n totalCount,\n isLoading,\n columns,\n pagination,\n onAdd,\n onRefresh,\n onClickRow,\n onPaginationChange,\n}: Props<T>) {\n \"use no memo\";\n\n const [rowSelection, setRowSelection] = React.useState<RowSelectionState>({});\n const [sorting, setSorting] = React.useState<SortingState>([]);\n const [columnFilters, setColumnFilters] = React.useState<ColumnFiltersState>(\n [],\n );\n const [columnVisibility, setColumnVisibility] =\n React.useState<VisibilityState>({});\n\n const initialState = React.useMemo(\n () => ({\n columnPinning: { right: [\"actions\", \"update\", \"delete\"] },\n pagination: { pageIndex: 0, pageSize: 20 },\n }),\n [],\n );\n\n const table = useReactTable<T>({\n initialState,\n data,\n columns,\n rowCount: totalCount,\n columnResizeMode: \"onChange\",\n manualPagination: true,\n enableColumnResizing: false,\n enableMultiRowSelection: false,\n getCoreRowModel: getCoreRowModel(),\n getPaginationRowModel: getPaginationRowModel(),\n getSortedRowModel: getSortedRowModel(),\n getFilteredRowModel: getFilteredRowModel(),\n getFacetedRowModel: getFacetedRowModel(),\n getFacetedUniqueValues: getFacetedUniqueValues(),\n getRowId: (row) => (row.id as string) || (row.uuid as string),\n state: {\n rowSelection,\n sorting,\n columnVisibility,\n columnFilters,\n ...(pagination ? { pagination } : {}),\n },\n onRowSelectionChange: setRowSelection,\n onSortingChange: setSorting,\n onColumnVisibilityChange: setColumnVisibility,\n onColumnFiltersChange: setColumnFilters,\n ...(onPaginationChange ? { onPaginationChange } : {}),\n });\n\n return (\n <Flex\n vertical\n wrap={false}\n gap=\"sm\"\n align=\"start\"\n className=\"size-full overflow-y-auto pt-1\"\n >\n <Flex justify=\"between\" padding=\"none\" width=\"full\" className=\"flex-0\">\n <SearchInput placeholder=\"Search...\" />\n <Flex className=\"px-0\">\n {onAdd && <AddNewBtn onClick={onAdd} />}\n <RefreshBtn onClick={onRefresh} />\n </Flex>\n </Flex>\n <Flex\n padding=\"none\"\n vertical\n wrap={false}\n width=\"full\"\n className=\"flex-1 overflow-auto\"\n >\n <DataTable\n table={table}\n isLoading={isLoading}\n onClickRow={onClickRow}\n />\n <DataTablePagination<T> table={table} />\n </Flex>\n </Flex>\n );\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.cjs","names":["ChevronUp","ChevronDown","Button","PinOffIcon","DropdownMenu","DropdownMenuTrigger","EllipsisIcon","DropdownMenuContent","DropdownMenuItem","ArrowLeftToLineIcon","ArrowRightToLineIcon","cn","ScrollArea","Table","TableHeader","TableRow","TableHead","TableBody","TableCell","React","PackagePlusIcon","ScrollBar","Select","SelectTrigger","SelectValue","SelectContent","SelectItem","Button","ChevronsLeft","ChevronLeft","ChevronRight","ChevronsRight","React","Flex","SearchInput","AddNewBtn","RefreshBtn"],"sources":["../../packages/components/table/data-table.tsx","../../packages/components/table/data-table-pagination.tsx","../../packages/components/table/index.tsx"],"sourcesContent":["import React, { type CSSProperties } from 'react'\nimport { type Column, flexRender, type Header, type Table as ReactTable } from '@tanstack/react-table'\nimport { ArrowLeftToLineIcon, ArrowRightToLineIcon, ChevronDown, ChevronUp, EllipsisIcon, PackagePlusIcon, PinOffIcon } from 'lucide-react'\n\nimport { cn } from '@/lib/utils'\nimport type { AnyEntity } from '@/types'\n\nimport { Button } from '../ui/button'\nimport { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger } from '../ui/dropdown-menu'\nimport { ScrollArea, ScrollBar } from '../ui/scroll-area'\nimport { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from '../ui/table'\n\n// Helper function to compute pinning styles for columns\nconst getPinningStyles = (column: Column<AnyEntity>): CSSProperties => {\n const isPinned = column.getIsPinned()\n return {\n left: isPinned === 'left' ? `${column.getStart('left')}px` : undefined,\n right: isPinned === 'right' ? `${column.getAfter('right')}px` : undefined,\n position: isPinned ? 'sticky' : 'relative',\n width: column.getSize(),\n zIndex: isPinned ? 1 : 0,\n }\n}\n\nconst SortingIndicator = ({ column }: { column: Column<AnyEntity> }) => {\n const sortDirection = column.getIsSorted()\n\n const icons = {\n asc: <ChevronUp className=\"shrink-0 opacity-60\" size={16} strokeWidth={2} aria-hidden=\"true\" />,\n desc: <ChevronDown className=\"shrink-0 opacity-60\" size={16} strokeWidth={2} aria-hidden=\"true\" />,\n }\n\n return sortDirection ? icons[sortDirection] : null\n}\n\nconst PinControls = ({ column }: { column: Column<AnyEntity> }) => {\n const columnHeader = column.columnDef.header as string\n\n if (!column.getCanPin()) return null\n\n if (column.getIsPinned()) {\n return (\n <Button\n size=\"icon\"\n variant=\"ghost\"\n className=\"hover:[&_svg]:text-secondary-foreground -mr-1 size-7 shadow-none\"\n aria-label={`Unpin ${columnHeader} column`}\n title={`Unpin ${columnHeader} column`}\n onClick={() => column.pin(false)}\n >\n <PinOffIcon className=\"opacity-60\" size={16} aria-hidden=\"true\" />\n </Button>\n )\n }\n\n return (\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <Button\n size=\"icon\"\n variant=\"ghost\"\n className=\"-mr-1 size-7 shadow-none\"\n aria-label={`Pin options for ${columnHeader} column`}\n title={`Pin options for ${columnHeader} column`}\n >\n <EllipsisIcon className=\"opacity-60\" size={16} aria-hidden=\"true\" />\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"end\">\n <DropdownMenuItem onClick={() => column.pin('left')}>\n <ArrowLeftToLineIcon size={16} className=\"opacity-60\" aria-hidden=\"true\" />\n Stick to left\n </DropdownMenuItem>\n <DropdownMenuItem onClick={() => column.pin('right')}>\n <ArrowRightToLineIcon size={16} className=\"opacity-60\" aria-hidden=\"true\" />\n Stick to right\n </DropdownMenuItem>\n </DropdownMenuContent>\n </DropdownMenu>\n )\n}\n\nconst HeaderContent = ({ header }: { header: Header<AnyEntity, unknown> }) => {\n const { column } = header\n\n const handleSort = (e: React.KeyboardEvent) => {\n if (column.getCanSort() && (e.key === 'Enter' || e.key === ' ')) {\n e.preventDefault()\n column.getToggleSortingHandler()?.(e)\n }\n }\n\n return (\n <div className=\"flex items-center justify-between gap-2 truncate\">\n {!header.isPlaceholder && (\n <div\n className={cn(column.getCanSort() && 'flex h-full cursor-pointer items-center justify-between gap-2 select-none')}\n onClick={column.getToggleSortingHandler()}\n onKeyDown={handleSort}\n tabIndex={column.getCanSort() ? 0 : undefined}\n >\n <span className=\"truncate\">{flexRender(column.columnDef.header, header.getContext())}</span>\n <SortingIndicator column={column} />\n </div>\n )}\n {!header.isPlaceholder && <PinControls column={column} />}\n </div>\n )\n}\n\ninterface DataTableProps {\n table: ReactTable<AnyEntity>\n columnsLength?: number\n isLoading?: boolean\n onClickRow?: (id: string) => void\n}\n\nexport const DataTable = ({ table, isLoading, onClickRow }: DataTableProps) => {\n 'use no memo'\n return (\n <ScrollArea className=\"border-border bg-background relative w-full overflow-auto rounded-lg border\">\n <Table\n className={cn(\n '!w-full',\n '[&_td]:border-border',\n '[&_th]:border-border',\n 'table-fixed border-separate border-spacing-0',\n '[&_tfoot_td]:border-t',\n '[&_th]:border-b',\n '[&_tr]:border-none',\n '[&_tr:not(:last-child)_td]:border-b',\n )}\n style={{\n width: table.getTotalSize(),\n }}\n >\n <TableHeader className=\"bg-muted/50 sticky top-0 z-10 backdrop-blur-xs\">\n {table.getHeaderGroups().map((headerGroup) => (\n <TableRow key={headerGroup.id} className=\"bg-muted/50\">\n {headerGroup.headers.map((header) => {\n const { column } = header\n const isPinned = column.getIsPinned()\n const isLastLeftPinned = isPinned === 'left' && column.getIsLastColumn('left')\n const isFirstRightPinned = isPinned === 'right' && column.getIsFirstColumn('right')\n return (\n <TableHead\n key={header.id}\n data-pinned={isPinned || undefined}\n data-last-col={isLastLeftPinned ? 'left' : isFirstRightPinned ? 'right' : undefined}\n className={cn(\n 'text-accent-foreground/60 relative h-9 border-r font-semibold select-none',\n 'data-pinned:backdrop-blur-xs',\n 'data-pinned:bg-muted/90',\n '[&>.cursor-col-resize]:last:opacity-0',\n '[&[data-pinned][data-last-col]]:border-border',\n '[&:not([data-pinned]):has(+[data-pinned])_div.cursor-col-resize:last-child]:opacity-0',\n '[&[data-last-col=left]_div.cursor-col-resize:last-child]:opacity-0',\n '[&[data-pinned=left][data-last-col=left]]:border-r',\n '[&[data-pinned=right]:last-child_div.cursor-col-resize:last-child]:opacity-0',\n '[&[data-pinned=right][data-last-col=right]]:border-l',\n )}\n {...{\n colSpan: header.colSpan,\n style: {\n width: header.getSize(),\n maxWidth: header.getSize(),\n ...getPinningStyles(header.column),\n },\n }}\n >\n <HeaderContent header={header} />\n </TableHead>\n )\n })}\n </TableRow>\n ))}\n </TableHeader>\n\n <TableBody className={cn(isLoading && 'h-36', table.getRowModel().rows?.length === 0 && 'h-48')}>\n {isLoading ? (\n <TableRow className=\"absolute top-9 flex h-36 w-full items-center justify-center\">\n <TableCell>loading...</TableCell>\n </TableRow>\n ) : (\n <React.Fragment>\n {table.getRowModel().rows?.length ? (\n table.getRowModel().rows.map((row) => (\n <TableRow\n key={row.id}\n data-state={row.getIsSelected() && 'selected'}\n className=\"cursor-pointer border-none focus:outline-none\"\n onClick={() => onClickRow?.(row?.id || row.original?.id?.toString() || row.original?.uuid || undefined)}\n >\n {row.getVisibleCells().map((cell) => {\n const { column } = cell\n const isPinned = column.getIsPinned()\n const isLastLeftPinned = isPinned === 'left' && column.getIsLastColumn('left')\n const isFirstRightPinned = isPinned === 'right' && column.getIsFirstColumn('right')\n return (\n <TableCell\n key={cell.id}\n style={{\n ...getPinningStyles(column),\n width: cell.column.getSize(),\n maxWidth: cell.column.getSize(),\n }}\n data-pinned={isPinned || undefined}\n data-last-col={isLastLeftPinned ? 'left' : isFirstRightPinned ? 'right' : undefined}\n className={cn(\n 'overflow-hidden py-2.5',\n '[&[data-pinned][data-last-col]]:border-border',\n '[&[data-pinned=left][data-last-col=left]]:border-r',\n '[&[data-pinned=right][data-last-col=right]]:border-l',\n 'data-pinned:bg-background/90',\n )}\n >\n {flexRender(cell.column.columnDef.cell, cell.getContext())}\n </TableCell>\n )\n })}\n </TableRow>\n ))\n ) : (\n <TableRow className=\"absolute top-9 flex h-36 w-full items-center justify-center\">\n <TableCell>\n <div className=\"text-muted-foreground flex size-full flex-col items-center justify-center gap-y-8 text-base\">\n <PackagePlusIcon size={48} strokeWidth={2} />\n <p>Thêm dữ liệu để hiển thị</p>\n </div>\n </TableCell>\n </TableRow>\n )}\n </React.Fragment>\n )}\n </TableBody>\n </Table>\n <ScrollBar orientation=\"vertical\" className=\"z-10 w-2\" />\n <ScrollBar orientation=\"horizontal\" className=\"absolute right-0 bottom-0 left-0 h-2\" />\n </ScrollArea>\n )\n}\n","import { type Table } from '@tanstack/react-table'\nimport { ChevronLeft, ChevronRight, ChevronsLeft, ChevronsRight } from 'lucide-react'\n\nimport { Button } from '@/components/ui/button'\nimport { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '@/components/ui/select'\n\ninterface DataTablePaginationProps<TData> {\n table: Table<TData>\n}\n\nexport function DataTablePagination<TData>({ table }: DataTablePaginationProps<TData>) {\n 'use no memo'\n return (\n <div className=\"mt-4 flex w-full flex-0 flex-wrap items-center justify-between gap-y-4 px-2\">\n <div className=\"text-muted-foreground flex-1 text-sm\">\n {table.getFilteredSelectedRowModel().rows.length} of {table.getFilteredRowModel().rows.length} row(s) selected.\n </div>\n <div className=\"flex flex-wrap items-center space-x-6 gap-y-4 lg:space-x-8\">\n <div className=\"flex items-center space-x-2\">\n <p className=\"text-sm font-medium\">Rows per page</p>\n <Select\n value={`${table.getState().pagination.pageSize}`}\n onValueChange={(value) => {\n table.setPageSize(Number(value))\n }}\n >\n <SelectTrigger className=\"h-8 w-[70px]\">\n <SelectValue placeholder={table.getState().pagination.pageSize} />\n </SelectTrigger>\n <SelectContent side=\"top\">\n {[10, 20, 30, 40, 50].map((pageSize) => (\n <SelectItem key={pageSize} value={`${pageSize}`}>\n {pageSize}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </div>\n <div className=\"flex w-25 items-center justify-center text-sm font-medium\">\n Page {table.getState().pagination.pageIndex + 1} of {table.getPageCount()}\n </div>\n <div className=\"flex items-center space-x-2 *:size-9 *:p-0\">\n <Button variant=\"outline\" className=\"lg:flex\" onClick={() => table.setPageIndex(0)} disabled={!table.getCanPreviousPage()}>\n <span className=\"sr-only\">Go to first page</span>\n <ChevronsLeft />\n </Button>\n <Button variant=\"outline\" onClick={() => table.previousPage()} disabled={!table.getCanPreviousPage()}>\n <span className=\"sr-only\">Go to previous page</span>\n <ChevronLeft />\n </Button>\n <Button type=\"button\" variant=\"outline\" onClick={() => table.nextPage()} disabled={!table.getCanNextPage()}>\n <span className=\"sr-only\">Go to next page</span>\n <ChevronRight />\n </Button>\n <Button\n variant=\"outline\"\n className=\"lg:flex\"\n onClick={() => {\n table.setPageIndex(table.getPageCount() - 1)\n }}\n disabled={!table.getCanNextPage()}\n >\n <span className=\"sr-only\">Go to last page</span>\n <ChevronsRight />\n </Button>\n </div>\n </div>\n </div>\n )\n}\n","import React from 'react'\nimport {\n type ColumnDef,\n type ColumnFiltersState,\n getCoreRowModel,\n getFacetedRowModel,\n getFacetedUniqueValues,\n getFilteredRowModel,\n getPaginationRowModel,\n getSortedRowModel,\n type PaginationState,\n type RowSelectionState,\n type SortingState,\n useReactTable,\n type VisibilityState,\n} from '@tanstack/react-table'\n\nimport { DataTable } from './data-table'\nimport { DataTablePagination } from './data-table-pagination'\nimport { Flex } from '../layouts/flex'\nimport { AddNewBtn } from '../ui/buttons/add-new'\nimport { RefreshBtn } from '../ui/buttons/refresh'\nimport { SearchInput } from '../ui/inputs/search-input'\n\ntype Props<T> = {\n data: T[]\n totalCount?: number\n isLoading?: boolean\n columns: ColumnDef<T>[]\n pagination?: PaginationState\n onAdd?: () => void\n onRefresh?: () => void\n onClickRow?: (id: string) => void\n onPaginationChange?: React.Dispatch<React.SetStateAction<PaginationState>>\n}\nexport function Table<T extends Record<string, unknown>>({\n data,\n totalCount,\n isLoading,\n columns,\n pagination,\n onAdd,\n onRefresh,\n onClickRow,\n onPaginationChange,\n}: Props<T>) {\n 'use no memo'\n\n const [rowSelection, setRowSelection] = React.useState<RowSelectionState>({})\n const [sorting, setSorting] = React.useState<SortingState>([])\n const [columnFilters, setColumnFilters] = React.useState<ColumnFiltersState>([])\n const [columnVisibility, setColumnVisibility] = React.useState<VisibilityState>({})\n\n const initialState = React.useMemo(\n () => ({\n columnPinning: { right: ['actions', 'update', 'delete'] },\n pagination: { pageIndex: 0, pageSize: 20 },\n }),\n [],\n )\n\n const table = useReactTable<T>({\n initialState,\n data,\n columns,\n rowCount: totalCount,\n columnResizeMode: 'onChange',\n manualPagination: true,\n enableColumnResizing: false,\n enableMultiRowSelection: false,\n getCoreRowModel: getCoreRowModel(),\n getPaginationRowModel: getPaginationRowModel(),\n getSortedRowModel: getSortedRowModel(),\n getFilteredRowModel: getFilteredRowModel(),\n getFacetedRowModel: getFacetedRowModel(),\n getFacetedUniqueValues: getFacetedUniqueValues(),\n getRowId: (row) => (row.id as string) || (row.uuid as string),\n state: {\n rowSelection,\n sorting,\n columnVisibility,\n columnFilters,\n ...(pagination ? { pagination } : {}),\n },\n onRowSelectionChange: setRowSelection,\n onSortingChange: setSorting,\n onColumnVisibilityChange: setColumnVisibility,\n onColumnFiltersChange: setColumnFilters,\n ...(onPaginationChange ? { onPaginationChange } : {}),\n })\n\n return (\n <Flex vertical wrap={false} gap=\"sm\" align=\"start\" className=\"size-full overflow-y-auto pt-1\">\n <Flex justify=\"between\" padding=\"none\" width=\"full\" className=\"flex-0\">\n <SearchInput placeholder=\"Search...\" />\n <Flex className=\"px-0\">\n {onAdd && <AddNewBtn onClick={onAdd} />}\n <RefreshBtn onClick={onRefresh} />\n </Flex>\n </Flex>\n <Flex padding=\"none\" vertical wrap={false} width=\"full\" className=\"flex-1 overflow-auto\">\n <DataTable table={table} isLoading={isLoading} onClickRow={onClickRow} />\n <DataTablePagination<T> table={table} />\n </Flex>\n </Flex>\n )\n}\n"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import * as react_jsx_runtime13 from "react/jsx-runtime";
1
+ import * as react_jsx_runtime12 from "react/jsx-runtime";
2
2
  import React from "react";
3
3
  import { ColumnDef, PaginationState } from "@tanstack/react-table";
4
4
 
@@ -24,7 +24,7 @@ declare function Table<T extends Record<string, unknown>>({
24
24
  onRefresh,
25
25
  onClickRow,
26
26
  onPaginationChange
27
- }: Props<T>): react_jsx_runtime13.JSX.Element;
27
+ }: Props<T>): react_jsx_runtime12.JSX.Element;
28
28
  //#endregion
29
29
  export { Table };
30
30
  //# sourceMappingURL=index.d.cts.map
@@ -1,5 +1,5 @@
1
1
  import React from "react";
2
- import * as react_jsx_runtime20 from "react/jsx-runtime";
2
+ import * as react_jsx_runtime17 from "react/jsx-runtime";
3
3
  import { ColumnDef, PaginationState } from "@tanstack/react-table";
4
4
 
5
5
  //#region packages/components/table/index.d.ts
@@ -24,7 +24,7 @@ declare function Table<T extends Record<string, unknown>>({
24
24
  onRefresh,
25
25
  onClickRow,
26
26
  onPaginationChange
27
- }: Props<T>): react_jsx_runtime20.JSX.Element;
27
+ }: Props<T>): react_jsx_runtime17.JSX.Element;
28
28
  //#endregion
29
29
  export { Table };
30
30
  //# sourceMappingURL=index.d.ts.map
@@ -1,2 +1,2 @@
1
- import{cn as e}from"../utils-D9AH0PUV.js";import{Button as t}from"../button-BrvvATXa.js";import"../input-IwBf-u4O.js";import{Select as n,SelectContent as r,SelectItem as i,SelectTrigger as a,SelectValue as o}from"../select-BNcC9Gu6.js";import{Flex as s}from"../flex-uO6z0kNw.js";import"../paragraph-SPyLaf4T.js";import{DropdownMenu as c,DropdownMenuContent as l,DropdownMenuItem as u,DropdownMenuTrigger as d}from"../dropdown-menu-CYyfrjiV.js";import{ScrollArea as f,ScrollBar as p}from"../scroll-area-C2rZa7Ua.js";import{Table as m,TableBody as h,TableCell as g,TableHead as _,TableHeader as v,TableRow as y}from"../table-DrnU8YJP.js";import{AddNewBtn as b}from"../add-new-RL-iKsWC.js";import{RefreshBtn as x}from"../refresh-Tr5yJ_61.js";import{SearchInput as S}from"../search-input-CbN38n2i.js";import C from"react";import{jsx as w,jsxs as T}from"react/jsx-runtime";import{ArrowLeftToLineIcon as E,ArrowRightToLineIcon as D,ChevronDown as O,ChevronLeft as k,ChevronRight as A,ChevronUp as j,ChevronsLeft as M,ChevronsRight as N,EllipsisIcon as P,PackagePlusIcon as F,PinOffIcon as I}from"lucide-react";import{flexRender as L,getCoreRowModel as R,getFacetedRowModel as z,getFacetedUniqueValues as B,getFilteredRowModel as V,getPaginationRowModel as H,getSortedRowModel as U,useReactTable as W}from"@tanstack/react-table";const G=e=>{let t=e.getIsPinned();return{left:t===`left`?`${e.getStart(`left`)}px`:void 0,right:t===`right`?`${e.getAfter(`right`)}px`:void 0,position:t?`sticky`:`relative`,width:e.getSize(),zIndex:t?1:0}},K=({column:e})=>{let t=e.getIsSorted(),n={asc:w(j,{className:`shrink-0 opacity-60`,size:16,strokeWidth:2,"aria-hidden":`true`}),desc:w(O,{className:`shrink-0 opacity-60`,size:16,strokeWidth:2,"aria-hidden":`true`})};return t?n[t]:null},q=({column:e})=>{let n=e.columnDef.header;return e.getCanPin()?e.getIsPinned()?w(t,{size:`icon`,variant:`ghost`,className:`hover:[&_svg]:text-secondary-foreground -mr-1 size-7 shadow-none`,"aria-label":`Unpin ${n} column`,title:`Unpin ${n} column`,onClick:()=>e.pin(!1),children:w(I,{className:`opacity-60`,size:16,"aria-hidden":`true`})}):T(c,{children:[w(d,{asChild:!0,children:w(t,{size:`icon`,variant:`ghost`,className:`-mr-1 size-7 shadow-none`,"aria-label":`Pin options for ${n} column`,title:`Pin options for ${n} column`,children:w(P,{className:`opacity-60`,size:16,"aria-hidden":`true`})})}),T(l,{align:`end`,children:[T(u,{onClick:()=>e.pin(`left`),children:[w(E,{size:16,className:`opacity-60`,"aria-hidden":`true`}),`Stick to left`]}),T(u,{onClick:()=>e.pin(`right`),children:[w(D,{size:16,className:`opacity-60`,"aria-hidden":`true`}),`Stick to right`]})]})]}):null},J=({header:t})=>{let{column:n}=t,r=e=>{n.getCanSort()&&(e.key===`Enter`||e.key===` `)&&(e.preventDefault(),n.getToggleSortingHandler()?.(e))};return T(`div`,{className:`flex items-center justify-between gap-2 truncate`,children:[!t.isPlaceholder&&T(`div`,{className:e(n.getCanSort()&&`flex h-full cursor-pointer items-center justify-between gap-2 select-none`),onClick:n.getToggleSortingHandler(),onKeyDown:r,tabIndex:n.getCanSort()?0:void 0,children:[w(`span`,{className:`truncate`,children:L(n.columnDef.header,t.getContext())}),w(K,{column:n})]}),!t.isPlaceholder&&w(q,{column:n})]})},Y=({table:t,isLoading:n,onClickRow:r})=>{"use no memo";return T(f,{className:`border-border bg-background relative w-full overflow-auto rounded-lg border`,children:[T(m,{className:e(`!w-full`,`[&_td]:border-border`,`[&_th]:border-border`,`table-fixed border-separate border-spacing-0`,`[&_tfoot_td]:border-t`,`[&_th]:border-b`,`[&_tr]:border-none`,`[&_tr:not(:last-child)_td]:border-b`),style:{width:t.getTotalSize()},children:[w(v,{className:`bg-muted/50 sticky top-0 z-10 backdrop-blur-xs`,children:t.getHeaderGroups().map(t=>w(y,{className:`bg-muted/50`,children:t.headers.map(t=>{let{column:n}=t,r=n.getIsPinned(),i=r===`left`&&n.getIsLastColumn(`left`),a=r===`right`&&n.getIsFirstColumn(`right`);return w(_,{"data-pinned":r||void 0,"data-last-col":i?`left`:a?`right`:void 0,className:e(`text-accent-foreground/60 relative h-9 border-r font-semibold select-none`,`data-pinned:backdrop-blur-xs`,`data-pinned:bg-muted/90`,`[&>.cursor-col-resize]:last:opacity-0`,`[&[data-pinned][data-last-col]]:border-border`,`[&:not([data-pinned]):has(+[data-pinned])_div.cursor-col-resize:last-child]:opacity-0`,`[&[data-last-col=left]_div.cursor-col-resize:last-child]:opacity-0`,`[&[data-pinned=left][data-last-col=left]]:border-r`,`[&[data-pinned=right]:last-child_div.cursor-col-resize:last-child]:opacity-0`,`[&[data-pinned=right][data-last-col=right]]:border-l`),colSpan:t.colSpan,style:{width:t.getSize(),maxWidth:t.getSize(),...G(t.column)},children:w(J,{header:t})},t.id)})},t.id))}),w(h,{className:e(n&&`h-36`,t.getRowModel().rows?.length===0&&`h-48`),children:n?w(y,{className:`absolute top-9 flex h-36 w-full items-center justify-center`,children:w(g,{children:`loading...`})}):w(C.Fragment,{children:t.getRowModel().rows?.length?t.getRowModel().rows.map(t=>w(y,{"data-state":t.getIsSelected()&&`selected`,className:`cursor-pointer border-none focus:outline-none`,onClick:()=>r?.(t?.id||t.original?.id?.toString()||t.original?.uuid||void 0),children:t.getVisibleCells().map(t=>{let{column:n}=t,r=n.getIsPinned(),i=r===`left`&&n.getIsLastColumn(`left`),a=r===`right`&&n.getIsFirstColumn(`right`);return w(g,{style:{...G(n),width:t.column.getSize(),maxWidth:t.column.getSize()},"data-pinned":r||void 0,"data-last-col":i?`left`:a?`right`:void 0,className:e(`overflow-hidden py-2.5`,`[&[data-pinned][data-last-col]]:border-border`,`[&[data-pinned=left][data-last-col=left]]:border-r`,`[&[data-pinned=right][data-last-col=right]]:border-l`,`data-pinned:bg-background/90`),children:L(t.column.columnDef.cell,t.getContext())},t.id)})},t.id)):w(y,{className:`absolute top-9 flex h-36 w-full items-center justify-center`,children:w(g,{children:T(`div`,{className:`text-muted-foreground flex size-full flex-col items-center justify-center gap-y-8 text-base`,children:[w(F,{size:48,strokeWidth:2}),w(`p`,{children:`Thêm dữ liệu để hiển thị`})]})})})})})]}),w(p,{orientation:`vertical`,className:`z-10 w-2`}),w(p,{orientation:`horizontal`,className:`absolute right-0 bottom-0 left-0 h-2`})]})};function X({table:e}){"use no memo";return T(`div`,{className:`mt-4 flex w-full flex-0 flex-wrap items-center justify-between gap-y-4 px-2`,children:[T(`div`,{className:`text-muted-foreground flex-1 text-sm`,children:[e.getFilteredSelectedRowModel().rows.length,` of`,` `,e.getFilteredRowModel().rows.length,` row(s) selected.`]}),T(`div`,{className:`flex flex-wrap items-center space-x-6 gap-y-4 lg:space-x-8`,children:[T(`div`,{className:`flex items-center space-x-2`,children:[w(`p`,{className:`text-sm font-medium`,children:`Rows per page`}),T(n,{value:`${e.getState().pagination.pageSize}`,onValueChange:t=>{e.setPageSize(Number(t))},children:[w(a,{className:`h-8 w-[70px]`,children:w(o,{placeholder:e.getState().pagination.pageSize})}),w(r,{side:`top`,children:[10,20,30,40,50].map(e=>w(i,{value:`${e}`,children:e},e))})]})]}),T(`div`,{className:`flex w-25 items-center justify-center text-sm font-medium`,children:[`Page `,e.getState().pagination.pageIndex+1,` of`,` `,e.getPageCount()]}),T(`div`,{className:`flex items-center space-x-2 *:size-9 *:p-0`,children:[T(t,{variant:`outline`,className:`lg:flex`,onClick:()=>e.setPageIndex(0),disabled:!e.getCanPreviousPage(),children:[w(`span`,{className:`sr-only`,children:`Go to first page`}),w(M,{})]}),T(t,{variant:`outline`,onClick:()=>e.previousPage(),disabled:!e.getCanPreviousPage(),children:[w(`span`,{className:`sr-only`,children:`Go to previous page`}),w(k,{})]}),T(t,{type:`button`,variant:`outline`,onClick:()=>e.nextPage(),disabled:!e.getCanNextPage(),children:[w(`span`,{className:`sr-only`,children:`Go to next page`}),w(A,{})]}),T(t,{variant:`outline`,className:`lg:flex`,onClick:()=>{e.setPageIndex(e.getPageCount()-1)},disabled:!e.getCanNextPage(),children:[w(`span`,{className:`sr-only`,children:`Go to last page`}),w(N,{})]})]})]})]})}function Z({data:e,totalCount:t,isLoading:n,columns:r,pagination:i,onAdd:a,onRefresh:o,onClickRow:c,onPaginationChange:l}){"use no memo";let[u,d]=C.useState({}),[f,p]=C.useState([]),[m,h]=C.useState([]),[g,_]=C.useState({}),v=C.useMemo(()=>({columnPinning:{right:[`actions`,`update`,`delete`]},pagination:{pageIndex:0,pageSize:20}}),[]),y=W({initialState:v,data:e,columns:r,rowCount:t,columnResizeMode:`onChange`,manualPagination:!0,enableColumnResizing:!1,enableMultiRowSelection:!1,getCoreRowModel:R(),getPaginationRowModel:H(),getSortedRowModel:U(),getFilteredRowModel:V(),getFacetedRowModel:z(),getFacetedUniqueValues:B(),getRowId:e=>e.id||e.uuid,state:{rowSelection:u,sorting:f,columnVisibility:g,columnFilters:m,...i?{pagination:i}:{}},onRowSelectionChange:d,onSortingChange:p,onColumnVisibilityChange:_,onColumnFiltersChange:h,...l?{onPaginationChange:l}:{}});return T(s,{vertical:!0,wrap:!1,gap:`sm`,align:`start`,className:`size-full overflow-y-auto pt-1`,children:[T(s,{justify:`between`,padding:`none`,width:`full`,className:`flex-0`,children:[w(S,{placeholder:`Search...`}),T(s,{className:`px-0`,children:[a&&w(b,{onClick:a}),w(x,{onClick:o})]})]}),T(s,{padding:`none`,vertical:!0,wrap:!1,width:`full`,className:`flex-1 overflow-auto`,children:[w(Y,{table:y,isLoading:n,onClickRow:c}),w(X,{table:y})]})]})}export{Z as Table};
1
+ import{cn as e}from"../utils-D9AH0PUV.js";import{Flex as t}from"../flex-ILvQrYMJ.js";import"../paragraph-B4cQhLhW.js";import{Button as n}from"../button-CnMfXTBU.js";import"../input--6vqz8UI.js";import{Select as r,SelectContent as i,SelectItem as a,SelectTrigger as o,SelectValue as s}from"../select-C6N3CXuY.js";import{DropdownMenu as c,DropdownMenuContent as l,DropdownMenuItem as u,DropdownMenuTrigger as d}from"../dropdown-menu-D5uG4HZA.js";import{ScrollArea as f,ScrollBar as p}from"../scroll-area-C0KQbcG0.js";import{Table as m,TableBody as h,TableCell as g,TableHead as _,TableHeader as v,TableRow as y}from"../table-CsnugKnh.js";import{AddNewBtn as b}from"../add-new-CVQQRkB9.js";import{RefreshBtn as x}from"../refresh-CYCzbKVl.js";import{SearchInput as S}from"../search-input-DqcwkgsY.js";import C from"react";import{jsx as w,jsxs as T}from"react/jsx-runtime";import{ArrowLeftToLineIcon as E,ArrowRightToLineIcon as D,ChevronDown as O,ChevronLeft as k,ChevronRight as A,ChevronUp as j,ChevronsLeft as M,ChevronsRight as N,EllipsisIcon as P,PackagePlusIcon as F,PinOffIcon as I}from"lucide-react";import{flexRender as L,getCoreRowModel as R,getFacetedRowModel as z,getFacetedUniqueValues as B,getFilteredRowModel as V,getPaginationRowModel as H,getSortedRowModel as U,useReactTable as W}from"@tanstack/react-table";const G=e=>{let t=e.getIsPinned();return{left:t===`left`?`${e.getStart(`left`)}px`:void 0,right:t===`right`?`${e.getAfter(`right`)}px`:void 0,position:t?`sticky`:`relative`,width:e.getSize(),zIndex:t?1:0}},K=({column:e})=>{let t=e.getIsSorted(),n={asc:w(j,{className:`shrink-0 opacity-60`,size:16,strokeWidth:2,"aria-hidden":`true`}),desc:w(O,{className:`shrink-0 opacity-60`,size:16,strokeWidth:2,"aria-hidden":`true`})};return t?n[t]:null},q=({column:e})=>{let t=e.columnDef.header;return e.getCanPin()?e.getIsPinned()?w(n,{size:`icon`,variant:`ghost`,className:`hover:[&_svg]:text-secondary-foreground -mr-1 size-7 shadow-none`,"aria-label":`Unpin ${t} column`,title:`Unpin ${t} column`,onClick:()=>e.pin(!1),children:w(I,{className:`opacity-60`,size:16,"aria-hidden":`true`})}):T(c,{children:[w(d,{asChild:!0,children:w(n,{size:`icon`,variant:`ghost`,className:`-mr-1 size-7 shadow-none`,"aria-label":`Pin options for ${t} column`,title:`Pin options for ${t} column`,children:w(P,{className:`opacity-60`,size:16,"aria-hidden":`true`})})}),T(l,{align:`end`,children:[T(u,{onClick:()=>e.pin(`left`),children:[w(E,{size:16,className:`opacity-60`,"aria-hidden":`true`}),`Stick to left`]}),T(u,{onClick:()=>e.pin(`right`),children:[w(D,{size:16,className:`opacity-60`,"aria-hidden":`true`}),`Stick to right`]})]})]}):null},J=({header:t})=>{let{column:n}=t,r=e=>{n.getCanSort()&&(e.key===`Enter`||e.key===` `)&&(e.preventDefault(),n.getToggleSortingHandler()?.(e))};return T(`div`,{className:`flex items-center justify-between gap-2 truncate`,children:[!t.isPlaceholder&&T(`div`,{className:e(n.getCanSort()&&`flex h-full cursor-pointer items-center justify-between gap-2 select-none`),onClick:n.getToggleSortingHandler(),onKeyDown:r,tabIndex:n.getCanSort()?0:void 0,children:[w(`span`,{className:`truncate`,children:L(n.columnDef.header,t.getContext())}),w(K,{column:n})]}),!t.isPlaceholder&&w(q,{column:n})]})},Y=({table:t,isLoading:n,onClickRow:r})=>{"use no memo";return T(f,{className:`border-border bg-background relative w-full overflow-auto rounded-lg border`,children:[T(m,{className:e(`!w-full`,`[&_td]:border-border`,`[&_th]:border-border`,`table-fixed border-separate border-spacing-0`,`[&_tfoot_td]:border-t`,`[&_th]:border-b`,`[&_tr]:border-none`,`[&_tr:not(:last-child)_td]:border-b`),style:{width:t.getTotalSize()},children:[w(v,{className:`bg-muted/50 sticky top-0 z-10 backdrop-blur-xs`,children:t.getHeaderGroups().map(t=>w(y,{className:`bg-muted/50`,children:t.headers.map(t=>{let{column:n}=t,r=n.getIsPinned(),i=r===`left`&&n.getIsLastColumn(`left`),a=r===`right`&&n.getIsFirstColumn(`right`);return w(_,{"data-pinned":r||void 0,"data-last-col":i?`left`:a?`right`:void 0,className:e(`text-accent-foreground/60 relative h-9 border-r font-semibold select-none`,`data-pinned:backdrop-blur-xs`,`data-pinned:bg-muted/90`,`[&>.cursor-col-resize]:last:opacity-0`,`[&[data-pinned][data-last-col]]:border-border`,`[&:not([data-pinned]):has(+[data-pinned])_div.cursor-col-resize:last-child]:opacity-0`,`[&[data-last-col=left]_div.cursor-col-resize:last-child]:opacity-0`,`[&[data-pinned=left][data-last-col=left]]:border-r`,`[&[data-pinned=right]:last-child_div.cursor-col-resize:last-child]:opacity-0`,`[&[data-pinned=right][data-last-col=right]]:border-l`),colSpan:t.colSpan,style:{width:t.getSize(),maxWidth:t.getSize(),...G(t.column)},children:w(J,{header:t})},t.id)})},t.id))}),w(h,{className:e(n&&`h-36`,t.getRowModel().rows?.length===0&&`h-48`),children:n?w(y,{className:`absolute top-9 flex h-36 w-full items-center justify-center`,children:w(g,{children:`loading...`})}):w(C.Fragment,{children:t.getRowModel().rows?.length?t.getRowModel().rows.map(t=>w(y,{"data-state":t.getIsSelected()&&`selected`,className:`cursor-pointer border-none focus:outline-none`,onClick:()=>r?.(t?.id||t.original?.id?.toString()||t.original?.uuid||void 0),children:t.getVisibleCells().map(t=>{let{column:n}=t,r=n.getIsPinned(),i=r===`left`&&n.getIsLastColumn(`left`),a=r===`right`&&n.getIsFirstColumn(`right`);return w(g,{style:{...G(n),width:t.column.getSize(),maxWidth:t.column.getSize()},"data-pinned":r||void 0,"data-last-col":i?`left`:a?`right`:void 0,className:e(`overflow-hidden py-2.5`,`[&[data-pinned][data-last-col]]:border-border`,`[&[data-pinned=left][data-last-col=left]]:border-r`,`[&[data-pinned=right][data-last-col=right]]:border-l`,`data-pinned:bg-background/90`),children:L(t.column.columnDef.cell,t.getContext())},t.id)})},t.id)):w(y,{className:`absolute top-9 flex h-36 w-full items-center justify-center`,children:w(g,{children:T(`div`,{className:`text-muted-foreground flex size-full flex-col items-center justify-center gap-y-8 text-base`,children:[w(F,{size:48,strokeWidth:2}),w(`p`,{children:`Thêm dữ liệu để hiển thị`})]})})})})})]}),w(p,{orientation:`vertical`,className:`z-10 w-2`}),w(p,{orientation:`horizontal`,className:`absolute right-0 bottom-0 left-0 h-2`})]})};function X({table:e}){"use no memo";return T(`div`,{className:`mt-4 flex w-full flex-0 flex-wrap items-center justify-between gap-y-4 px-2`,children:[T(`div`,{className:`text-muted-foreground flex-1 text-sm`,children:[e.getFilteredSelectedRowModel().rows.length,` of `,e.getFilteredRowModel().rows.length,` row(s) selected.`]}),T(`div`,{className:`flex flex-wrap items-center space-x-6 gap-y-4 lg:space-x-8`,children:[T(`div`,{className:`flex items-center space-x-2`,children:[w(`p`,{className:`text-sm font-medium`,children:`Rows per page`}),T(r,{value:`${e.getState().pagination.pageSize}`,onValueChange:t=>{e.setPageSize(Number(t))},children:[w(o,{className:`h-8 w-[70px]`,children:w(s,{placeholder:e.getState().pagination.pageSize})}),w(i,{side:`top`,children:[10,20,30,40,50].map(e=>w(a,{value:`${e}`,children:e},e))})]})]}),T(`div`,{className:`flex w-25 items-center justify-center text-sm font-medium`,children:[`Page `,e.getState().pagination.pageIndex+1,` of `,e.getPageCount()]}),T(`div`,{className:`flex items-center space-x-2 *:size-9 *:p-0`,children:[T(n,{variant:`outline`,className:`lg:flex`,onClick:()=>e.setPageIndex(0),disabled:!e.getCanPreviousPage(),children:[w(`span`,{className:`sr-only`,children:`Go to first page`}),w(M,{})]}),T(n,{variant:`outline`,onClick:()=>e.previousPage(),disabled:!e.getCanPreviousPage(),children:[w(`span`,{className:`sr-only`,children:`Go to previous page`}),w(k,{})]}),T(n,{type:`button`,variant:`outline`,onClick:()=>e.nextPage(),disabled:!e.getCanNextPage(),children:[w(`span`,{className:`sr-only`,children:`Go to next page`}),w(A,{})]}),T(n,{variant:`outline`,className:`lg:flex`,onClick:()=>{e.setPageIndex(e.getPageCount()-1)},disabled:!e.getCanNextPage(),children:[w(`span`,{className:`sr-only`,children:`Go to last page`}),w(N,{})]})]})]})]})}function Z({data:e,totalCount:n,isLoading:r,columns:i,pagination:a,onAdd:o,onRefresh:s,onClickRow:c,onPaginationChange:l}){"use no memo";let[u,d]=C.useState({}),[f,p]=C.useState([]),[m,h]=C.useState([]),[g,_]=C.useState({}),v=C.useMemo(()=>({columnPinning:{right:[`actions`,`update`,`delete`]},pagination:{pageIndex:0,pageSize:20}}),[]),y=W({initialState:v,data:e,columns:i,rowCount:n,columnResizeMode:`onChange`,manualPagination:!0,enableColumnResizing:!1,enableMultiRowSelection:!1,getCoreRowModel:R(),getPaginationRowModel:H(),getSortedRowModel:U(),getFilteredRowModel:V(),getFacetedRowModel:z(),getFacetedUniqueValues:B(),getRowId:e=>e.id||e.uuid,state:{rowSelection:u,sorting:f,columnVisibility:g,columnFilters:m,...a?{pagination:a}:{}},onRowSelectionChange:d,onSortingChange:p,onColumnVisibilityChange:_,onColumnFiltersChange:h,...l?{onPaginationChange:l}:{}});return T(t,{vertical:!0,wrap:!1,gap:`sm`,align:`start`,className:`size-full overflow-y-auto pt-1`,children:[T(t,{justify:`between`,padding:`none`,width:`full`,className:`flex-0`,children:[w(S,{placeholder:`Search...`}),T(t,{className:`px-0`,children:[o&&w(b,{onClick:o}),w(x,{onClick:s})]})]}),T(t,{padding:`none`,vertical:!0,wrap:!1,width:`full`,className:`flex-1 overflow-auto`,children:[w(Y,{table:y,isLoading:r,onClickRow:c}),w(X,{table:y})]})]})}export{Z as Table};
2
2
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["Table"],"sources":["../../packages/components/table/data-table.tsx","../../packages/components/table/data-table-pagination.tsx","../../packages/components/table/index.tsx"],"sourcesContent":["import React, { type CSSProperties } from \"react\";\nimport {\n type Column,\n flexRender,\n type Header,\n type Table as ReactTable,\n} from \"@tanstack/react-table\";\nimport {\n ArrowLeftToLineIcon,\n ArrowRightToLineIcon,\n ChevronDown,\n ChevronUp,\n EllipsisIcon,\n PackagePlusIcon,\n PinOffIcon,\n} from \"lucide-react\";\n\nimport { cn } from \"@/lib/utils\";\nimport type { AnyEntity } from \"@/types\";\n\nimport { Button } from \"../ui/button\";\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuTrigger,\n} from \"../ui/dropdown-menu\";\nimport { ScrollArea, ScrollBar } from \"../ui/scroll-area\";\nimport {\n Table,\n TableBody,\n TableCell,\n TableHead,\n TableHeader,\n TableRow,\n} from \"../ui/table\";\n\n// Helper function to compute pinning styles for columns\nconst getPinningStyles = (column: Column<AnyEntity>): CSSProperties => {\n const isPinned = column.getIsPinned();\n return {\n left: isPinned === \"left\" ? `${column.getStart(\"left\")}px` : undefined,\n right: isPinned === \"right\" ? `${column.getAfter(\"right\")}px` : undefined,\n position: isPinned ? \"sticky\" : \"relative\",\n width: column.getSize(),\n zIndex: isPinned ? 1 : 0,\n };\n};\n\nconst SortingIndicator = ({ column }: { column: Column<AnyEntity> }) => {\n const sortDirection = column.getIsSorted();\n\n const icons = {\n asc: (\n <ChevronUp\n className=\"shrink-0 opacity-60\"\n size={16}\n strokeWidth={2}\n aria-hidden=\"true\"\n />\n ),\n desc: (\n <ChevronDown\n className=\"shrink-0 opacity-60\"\n size={16}\n strokeWidth={2}\n aria-hidden=\"true\"\n />\n ),\n };\n\n return sortDirection ? icons[sortDirection] : null;\n};\n\nconst PinControls = ({ column }: { column: Column<AnyEntity> }) => {\n const columnHeader = column.columnDef.header as string;\n\n if (!column.getCanPin()) return null;\n\n if (column.getIsPinned()) {\n return (\n <Button\n size=\"icon\"\n variant=\"ghost\"\n className=\"hover:[&_svg]:text-secondary-foreground -mr-1 size-7 shadow-none\"\n aria-label={`Unpin ${columnHeader} column`}\n title={`Unpin ${columnHeader} column`}\n onClick={() => column.pin(false)}\n >\n <PinOffIcon className=\"opacity-60\" size={16} aria-hidden=\"true\" />\n </Button>\n );\n }\n\n return (\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <Button\n size=\"icon\"\n variant=\"ghost\"\n className=\"-mr-1 size-7 shadow-none\"\n aria-label={`Pin options for ${columnHeader} column`}\n title={`Pin options for ${columnHeader} column`}\n >\n <EllipsisIcon className=\"opacity-60\" size={16} aria-hidden=\"true\" />\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"end\">\n <DropdownMenuItem onClick={() => column.pin(\"left\")}>\n <ArrowLeftToLineIcon\n size={16}\n className=\"opacity-60\"\n aria-hidden=\"true\"\n />\n Stick to left\n </DropdownMenuItem>\n <DropdownMenuItem onClick={() => column.pin(\"right\")}>\n <ArrowRightToLineIcon\n size={16}\n className=\"opacity-60\"\n aria-hidden=\"true\"\n />\n Stick to right\n </DropdownMenuItem>\n </DropdownMenuContent>\n </DropdownMenu>\n );\n};\n\nconst HeaderContent = ({ header }: { header: Header<AnyEntity, unknown> }) => {\n const { column } = header;\n\n const handleSort = (e: React.KeyboardEvent) => {\n if (column.getCanSort() && (e.key === \"Enter\" || e.key === \" \")) {\n e.preventDefault();\n column.getToggleSortingHandler()?.(e);\n }\n };\n\n return (\n <div className=\"flex items-center justify-between gap-2 truncate\">\n {!header.isPlaceholder && (\n <div\n className={cn(\n column.getCanSort() &&\n \"flex h-full cursor-pointer items-center justify-between gap-2 select-none\",\n )}\n onClick={column.getToggleSortingHandler()}\n onKeyDown={handleSort}\n tabIndex={column.getCanSort() ? 0 : undefined}\n >\n <span className=\"truncate\">\n {flexRender(column.columnDef.header, header.getContext())}\n </span>\n <SortingIndicator column={column} />\n </div>\n )}\n {!header.isPlaceholder && <PinControls column={column} />}\n </div>\n );\n};\n\ninterface DataTableProps {\n table: ReactTable<AnyEntity>;\n columnsLength?: number;\n isLoading?: boolean;\n onClickRow?: (id: string) => void;\n}\n\nexport const DataTable = ({ table, isLoading, onClickRow }: DataTableProps) => {\n \"use no memo\";\n return (\n <ScrollArea className=\"border-border bg-background relative w-full overflow-auto rounded-lg border\">\n <Table\n className={cn(\n \"!w-full\",\n \"[&_td]:border-border\",\n \"[&_th]:border-border\",\n \"table-fixed border-separate border-spacing-0\",\n \"[&_tfoot_td]:border-t\",\n \"[&_th]:border-b\",\n \"[&_tr]:border-none\",\n \"[&_tr:not(:last-child)_td]:border-b\",\n )}\n style={{\n width: table.getTotalSize(),\n }}\n >\n <TableHeader className=\"bg-muted/50 sticky top-0 z-10 backdrop-blur-xs\">\n {table.getHeaderGroups().map((headerGroup) => (\n <TableRow key={headerGroup.id} className=\"bg-muted/50\">\n {headerGroup.headers.map((header) => {\n const { column } = header;\n const isPinned = column.getIsPinned();\n const isLastLeftPinned =\n isPinned === \"left\" && column.getIsLastColumn(\"left\");\n const isFirstRightPinned =\n isPinned === \"right\" && column.getIsFirstColumn(\"right\");\n return (\n <TableHead\n key={header.id}\n data-pinned={isPinned || undefined}\n data-last-col={\n isLastLeftPinned\n ? \"left\"\n : isFirstRightPinned\n ? \"right\"\n : undefined\n }\n className={cn(\n \"text-accent-foreground/60 relative h-9 border-r font-semibold select-none\",\n \"data-pinned:backdrop-blur-xs\",\n \"data-pinned:bg-muted/90\",\n \"[&>.cursor-col-resize]:last:opacity-0\",\n \"[&[data-pinned][data-last-col]]:border-border\",\n \"[&:not([data-pinned]):has(+[data-pinned])_div.cursor-col-resize:last-child]:opacity-0\",\n \"[&[data-last-col=left]_div.cursor-col-resize:last-child]:opacity-0\",\n \"[&[data-pinned=left][data-last-col=left]]:border-r\",\n \"[&[data-pinned=right]:last-child_div.cursor-col-resize:last-child]:opacity-0\",\n \"[&[data-pinned=right][data-last-col=right]]:border-l\",\n )}\n {...{\n colSpan: header.colSpan,\n style: {\n width: header.getSize(),\n maxWidth: header.getSize(),\n ...getPinningStyles(header.column),\n },\n }}\n >\n <HeaderContent header={header} />\n </TableHead>\n );\n })}\n </TableRow>\n ))}\n </TableHeader>\n\n <TableBody\n className={cn(\n isLoading && \"h-36\",\n table.getRowModel().rows?.length === 0 && \"h-48\",\n )}\n >\n {isLoading ? (\n <TableRow className=\"absolute top-9 flex h-36 w-full items-center justify-center\">\n <TableCell>loading...</TableCell>\n </TableRow>\n ) : (\n <React.Fragment>\n {table.getRowModel().rows?.length ? (\n table.getRowModel().rows.map((row) => (\n <TableRow\n key={row.id}\n data-state={row.getIsSelected() && \"selected\"}\n className=\"cursor-pointer border-none focus:outline-none\"\n onClick={() =>\n onClickRow?.(\n row?.id ||\n row.original?.id?.toString() ||\n row.original?.uuid ||\n undefined,\n )\n }\n >\n {row.getVisibleCells().map((cell) => {\n const { column } = cell;\n const isPinned = column.getIsPinned();\n const isLastLeftPinned =\n isPinned === \"left\" && column.getIsLastColumn(\"left\");\n const isFirstRightPinned =\n isPinned === \"right\" &&\n column.getIsFirstColumn(\"right\");\n return (\n <TableCell\n key={cell.id}\n style={{\n ...getPinningStyles(column),\n width: cell.column.getSize(),\n maxWidth: cell.column.getSize(),\n }}\n data-pinned={isPinned || undefined}\n data-last-col={\n isLastLeftPinned\n ? \"left\"\n : isFirstRightPinned\n ? \"right\"\n : undefined\n }\n className={cn(\n \"overflow-hidden py-2.5\",\n \"[&[data-pinned][data-last-col]]:border-border\",\n \"[&[data-pinned=left][data-last-col=left]]:border-r\",\n \"[&[data-pinned=right][data-last-col=right]]:border-l\",\n \"data-pinned:bg-background/90\",\n )}\n >\n {flexRender(\n cell.column.columnDef.cell,\n cell.getContext(),\n )}\n </TableCell>\n );\n })}\n </TableRow>\n ))\n ) : (\n <TableRow className=\"absolute top-9 flex h-36 w-full items-center justify-center\">\n <TableCell>\n <div className=\"text-muted-foreground flex size-full flex-col items-center justify-center gap-y-8 text-base\">\n <PackagePlusIcon size={48} strokeWidth={2} />\n <p>Thêm dữ liệu để hiển thị</p>\n </div>\n </TableCell>\n </TableRow>\n )}\n </React.Fragment>\n )}\n </TableBody>\n </Table>\n <ScrollBar orientation=\"vertical\" className=\"z-10 w-2\" />\n <ScrollBar\n orientation=\"horizontal\"\n className=\"absolute right-0 bottom-0 left-0 h-2\"\n />\n </ScrollArea>\n );\n};\n","import { type Table } from \"@tanstack/react-table\";\nimport {\n ChevronLeft,\n ChevronRight,\n ChevronsLeft,\n ChevronsRight,\n} from \"lucide-react\";\n\nimport { Button } from \"@/components/ui/button\";\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from \"@/components/ui/select\";\n\ninterface DataTablePaginationProps<TData> {\n table: Table<TData>;\n}\n\nexport function DataTablePagination<TData>({\n table,\n}: DataTablePaginationProps<TData>) {\n \"use no memo\";\n return (\n <div className=\"mt-4 flex w-full flex-0 flex-wrap items-center justify-between gap-y-4 px-2\">\n <div className=\"text-muted-foreground flex-1 text-sm\">\n {table.getFilteredSelectedRowModel().rows.length} of{\" \"}\n {table.getFilteredRowModel().rows.length} row(s) selected.\n </div>\n <div className=\"flex flex-wrap items-center space-x-6 gap-y-4 lg:space-x-8\">\n <div className=\"flex items-center space-x-2\">\n <p className=\"text-sm font-medium\">Rows per page</p>\n <Select\n value={`${table.getState().pagination.pageSize}`}\n onValueChange={(value) => {\n table.setPageSize(Number(value));\n }}\n >\n <SelectTrigger className=\"h-8 w-[70px]\">\n <SelectValue placeholder={table.getState().pagination.pageSize} />\n </SelectTrigger>\n <SelectContent side=\"top\">\n {[10, 20, 30, 40, 50].map((pageSize) => (\n <SelectItem key={pageSize} value={`${pageSize}`}>\n {pageSize}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </div>\n <div className=\"flex w-25 items-center justify-center text-sm font-medium\">\n Page {table.getState().pagination.pageIndex + 1} of{\" \"}\n {table.getPageCount()}\n </div>\n <div className=\"flex items-center space-x-2 *:size-9 *:p-0\">\n <Button\n variant=\"outline\"\n className=\"lg:flex\"\n onClick={() => table.setPageIndex(0)}\n disabled={!table.getCanPreviousPage()}\n >\n <span className=\"sr-only\">Go to first page</span>\n <ChevronsLeft />\n </Button>\n <Button\n variant=\"outline\"\n onClick={() => table.previousPage()}\n disabled={!table.getCanPreviousPage()}\n >\n <span className=\"sr-only\">Go to previous page</span>\n <ChevronLeft />\n </Button>\n <Button\n type=\"button\"\n variant=\"outline\"\n onClick={() => table.nextPage()}\n disabled={!table.getCanNextPage()}\n >\n <span className=\"sr-only\">Go to next page</span>\n <ChevronRight />\n </Button>\n <Button\n variant=\"outline\"\n className=\"lg:flex\"\n onClick={() => {\n table.setPageIndex(table.getPageCount() - 1);\n }}\n disabled={!table.getCanNextPage()}\n >\n <span className=\"sr-only\">Go to last page</span>\n <ChevronsRight />\n </Button>\n </div>\n </div>\n </div>\n );\n}\n","import React from \"react\";\nimport {\n type ColumnDef,\n type ColumnFiltersState,\n getCoreRowModel,\n getFacetedRowModel,\n getFacetedUniqueValues,\n getFilteredRowModel,\n getPaginationRowModel,\n getSortedRowModel,\n type PaginationState,\n type RowSelectionState,\n type SortingState,\n useReactTable,\n type VisibilityState,\n} from \"@tanstack/react-table\";\n\nimport { DataTable } from \"./data-table\";\nimport { DataTablePagination } from \"./data-table-pagination\";\nimport { Flex } from \"../layouts/flex\";\nimport { AddNewBtn } from \"../ui/buttons/add-new\";\nimport { RefreshBtn } from \"../ui/buttons/refresh\";\nimport { SearchInput } from \"../ui/inputs/search-input\";\n\ntype Props<T> = {\n data: T[];\n totalCount?: number;\n isLoading?: boolean;\n columns: ColumnDef<T>[];\n pagination?: PaginationState;\n onAdd?: () => void;\n onRefresh?: () => void;\n onClickRow?: (id: string) => void;\n onPaginationChange?: React.Dispatch<React.SetStateAction<PaginationState>>;\n};\nexport function Table<T extends Record<string, unknown>>({\n data,\n totalCount,\n isLoading,\n columns,\n pagination,\n onAdd,\n onRefresh,\n onClickRow,\n onPaginationChange,\n}: Props<T>) {\n \"use no memo\";\n\n const [rowSelection, setRowSelection] = React.useState<RowSelectionState>({});\n const [sorting, setSorting] = React.useState<SortingState>([]);\n const [columnFilters, setColumnFilters] = React.useState<ColumnFiltersState>(\n [],\n );\n const [columnVisibility, setColumnVisibility] =\n React.useState<VisibilityState>({});\n\n const initialState = React.useMemo(\n () => ({\n columnPinning: { right: [\"actions\", \"update\", \"delete\"] },\n pagination: { pageIndex: 0, pageSize: 20 },\n }),\n [],\n );\n\n const table = useReactTable<T>({\n initialState,\n data,\n columns,\n rowCount: totalCount,\n columnResizeMode: \"onChange\",\n manualPagination: true,\n enableColumnResizing: false,\n enableMultiRowSelection: false,\n getCoreRowModel: getCoreRowModel(),\n getPaginationRowModel: getPaginationRowModel(),\n getSortedRowModel: getSortedRowModel(),\n getFilteredRowModel: getFilteredRowModel(),\n getFacetedRowModel: getFacetedRowModel(),\n getFacetedUniqueValues: getFacetedUniqueValues(),\n getRowId: (row) => (row.id as string) || (row.uuid as string),\n state: {\n rowSelection,\n sorting,\n columnVisibility,\n columnFilters,\n ...(pagination ? { pagination } : {}),\n },\n onRowSelectionChange: setRowSelection,\n onSortingChange: setSorting,\n onColumnVisibilityChange: setColumnVisibility,\n onColumnFiltersChange: setColumnFilters,\n ...(onPaginationChange ? { onPaginationChange } : {}),\n });\n\n return (\n <Flex\n vertical\n wrap={false}\n gap=\"sm\"\n align=\"start\"\n className=\"size-full overflow-y-auto pt-1\"\n >\n <Flex justify=\"between\" padding=\"none\" width=\"full\" className=\"flex-0\">\n <SearchInput placeholder=\"Search...\" />\n <Flex className=\"px-0\">\n {onAdd && <AddNewBtn onClick={onAdd} />}\n <RefreshBtn onClick={onRefresh} />\n </Flex>\n </Flex>\n <Flex\n padding=\"none\"\n vertical\n wrap={false}\n width=\"full\"\n className=\"flex-1 overflow-auto\"\n >\n <DataTable\n table={table}\n isLoading={isLoading}\n onClickRow={onClickRow}\n />\n <DataTablePagination<T> table={table} />\n </Flex>\n </Flex>\n );\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","names":["Table"],"sources":["../../packages/components/table/data-table.tsx","../../packages/components/table/data-table-pagination.tsx","../../packages/components/table/index.tsx"],"sourcesContent":["import React, { type CSSProperties } from 'react'\nimport { type Column, flexRender, type Header, type Table as ReactTable } from '@tanstack/react-table'\nimport { ArrowLeftToLineIcon, ArrowRightToLineIcon, ChevronDown, ChevronUp, EllipsisIcon, PackagePlusIcon, PinOffIcon } from 'lucide-react'\n\nimport { cn } from '@/lib/utils'\nimport type { AnyEntity } from '@/types'\n\nimport { Button } from '../ui/button'\nimport { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger } from '../ui/dropdown-menu'\nimport { ScrollArea, ScrollBar } from '../ui/scroll-area'\nimport { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from '../ui/table'\n\n// Helper function to compute pinning styles for columns\nconst getPinningStyles = (column: Column<AnyEntity>): CSSProperties => {\n const isPinned = column.getIsPinned()\n return {\n left: isPinned === 'left' ? `${column.getStart('left')}px` : undefined,\n right: isPinned === 'right' ? `${column.getAfter('right')}px` : undefined,\n position: isPinned ? 'sticky' : 'relative',\n width: column.getSize(),\n zIndex: isPinned ? 1 : 0,\n }\n}\n\nconst SortingIndicator = ({ column }: { column: Column<AnyEntity> }) => {\n const sortDirection = column.getIsSorted()\n\n const icons = {\n asc: <ChevronUp className=\"shrink-0 opacity-60\" size={16} strokeWidth={2} aria-hidden=\"true\" />,\n desc: <ChevronDown className=\"shrink-0 opacity-60\" size={16} strokeWidth={2} aria-hidden=\"true\" />,\n }\n\n return sortDirection ? icons[sortDirection] : null\n}\n\nconst PinControls = ({ column }: { column: Column<AnyEntity> }) => {\n const columnHeader = column.columnDef.header as string\n\n if (!column.getCanPin()) return null\n\n if (column.getIsPinned()) {\n return (\n <Button\n size=\"icon\"\n variant=\"ghost\"\n className=\"hover:[&_svg]:text-secondary-foreground -mr-1 size-7 shadow-none\"\n aria-label={`Unpin ${columnHeader} column`}\n title={`Unpin ${columnHeader} column`}\n onClick={() => column.pin(false)}\n >\n <PinOffIcon className=\"opacity-60\" size={16} aria-hidden=\"true\" />\n </Button>\n )\n }\n\n return (\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <Button\n size=\"icon\"\n variant=\"ghost\"\n className=\"-mr-1 size-7 shadow-none\"\n aria-label={`Pin options for ${columnHeader} column`}\n title={`Pin options for ${columnHeader} column`}\n >\n <EllipsisIcon className=\"opacity-60\" size={16} aria-hidden=\"true\" />\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"end\">\n <DropdownMenuItem onClick={() => column.pin('left')}>\n <ArrowLeftToLineIcon size={16} className=\"opacity-60\" aria-hidden=\"true\" />\n Stick to left\n </DropdownMenuItem>\n <DropdownMenuItem onClick={() => column.pin('right')}>\n <ArrowRightToLineIcon size={16} className=\"opacity-60\" aria-hidden=\"true\" />\n Stick to right\n </DropdownMenuItem>\n </DropdownMenuContent>\n </DropdownMenu>\n )\n}\n\nconst HeaderContent = ({ header }: { header: Header<AnyEntity, unknown> }) => {\n const { column } = header\n\n const handleSort = (e: React.KeyboardEvent) => {\n if (column.getCanSort() && (e.key === 'Enter' || e.key === ' ')) {\n e.preventDefault()\n column.getToggleSortingHandler()?.(e)\n }\n }\n\n return (\n <div className=\"flex items-center justify-between gap-2 truncate\">\n {!header.isPlaceholder && (\n <div\n className={cn(column.getCanSort() && 'flex h-full cursor-pointer items-center justify-between gap-2 select-none')}\n onClick={column.getToggleSortingHandler()}\n onKeyDown={handleSort}\n tabIndex={column.getCanSort() ? 0 : undefined}\n >\n <span className=\"truncate\">{flexRender(column.columnDef.header, header.getContext())}</span>\n <SortingIndicator column={column} />\n </div>\n )}\n {!header.isPlaceholder && <PinControls column={column} />}\n </div>\n )\n}\n\ninterface DataTableProps {\n table: ReactTable<AnyEntity>\n columnsLength?: number\n isLoading?: boolean\n onClickRow?: (id: string) => void\n}\n\nexport const DataTable = ({ table, isLoading, onClickRow }: DataTableProps) => {\n 'use no memo'\n return (\n <ScrollArea className=\"border-border bg-background relative w-full overflow-auto rounded-lg border\">\n <Table\n className={cn(\n '!w-full',\n '[&_td]:border-border',\n '[&_th]:border-border',\n 'table-fixed border-separate border-spacing-0',\n '[&_tfoot_td]:border-t',\n '[&_th]:border-b',\n '[&_tr]:border-none',\n '[&_tr:not(:last-child)_td]:border-b',\n )}\n style={{\n width: table.getTotalSize(),\n }}\n >\n <TableHeader className=\"bg-muted/50 sticky top-0 z-10 backdrop-blur-xs\">\n {table.getHeaderGroups().map((headerGroup) => (\n <TableRow key={headerGroup.id} className=\"bg-muted/50\">\n {headerGroup.headers.map((header) => {\n const { column } = header\n const isPinned = column.getIsPinned()\n const isLastLeftPinned = isPinned === 'left' && column.getIsLastColumn('left')\n const isFirstRightPinned = isPinned === 'right' && column.getIsFirstColumn('right')\n return (\n <TableHead\n key={header.id}\n data-pinned={isPinned || undefined}\n data-last-col={isLastLeftPinned ? 'left' : isFirstRightPinned ? 'right' : undefined}\n className={cn(\n 'text-accent-foreground/60 relative h-9 border-r font-semibold select-none',\n 'data-pinned:backdrop-blur-xs',\n 'data-pinned:bg-muted/90',\n '[&>.cursor-col-resize]:last:opacity-0',\n '[&[data-pinned][data-last-col]]:border-border',\n '[&:not([data-pinned]):has(+[data-pinned])_div.cursor-col-resize:last-child]:opacity-0',\n '[&[data-last-col=left]_div.cursor-col-resize:last-child]:opacity-0',\n '[&[data-pinned=left][data-last-col=left]]:border-r',\n '[&[data-pinned=right]:last-child_div.cursor-col-resize:last-child]:opacity-0',\n '[&[data-pinned=right][data-last-col=right]]:border-l',\n )}\n {...{\n colSpan: header.colSpan,\n style: {\n width: header.getSize(),\n maxWidth: header.getSize(),\n ...getPinningStyles(header.column),\n },\n }}\n >\n <HeaderContent header={header} />\n </TableHead>\n )\n })}\n </TableRow>\n ))}\n </TableHeader>\n\n <TableBody className={cn(isLoading && 'h-36', table.getRowModel().rows?.length === 0 && 'h-48')}>\n {isLoading ? (\n <TableRow className=\"absolute top-9 flex h-36 w-full items-center justify-center\">\n <TableCell>loading...</TableCell>\n </TableRow>\n ) : (\n <React.Fragment>\n {table.getRowModel().rows?.length ? (\n table.getRowModel().rows.map((row) => (\n <TableRow\n key={row.id}\n data-state={row.getIsSelected() && 'selected'}\n className=\"cursor-pointer border-none focus:outline-none\"\n onClick={() => onClickRow?.(row?.id || row.original?.id?.toString() || row.original?.uuid || undefined)}\n >\n {row.getVisibleCells().map((cell) => {\n const { column } = cell\n const isPinned = column.getIsPinned()\n const isLastLeftPinned = isPinned === 'left' && column.getIsLastColumn('left')\n const isFirstRightPinned = isPinned === 'right' && column.getIsFirstColumn('right')\n return (\n <TableCell\n key={cell.id}\n style={{\n ...getPinningStyles(column),\n width: cell.column.getSize(),\n maxWidth: cell.column.getSize(),\n }}\n data-pinned={isPinned || undefined}\n data-last-col={isLastLeftPinned ? 'left' : isFirstRightPinned ? 'right' : undefined}\n className={cn(\n 'overflow-hidden py-2.5',\n '[&[data-pinned][data-last-col]]:border-border',\n '[&[data-pinned=left][data-last-col=left]]:border-r',\n '[&[data-pinned=right][data-last-col=right]]:border-l',\n 'data-pinned:bg-background/90',\n )}\n >\n {flexRender(cell.column.columnDef.cell, cell.getContext())}\n </TableCell>\n )\n })}\n </TableRow>\n ))\n ) : (\n <TableRow className=\"absolute top-9 flex h-36 w-full items-center justify-center\">\n <TableCell>\n <div className=\"text-muted-foreground flex size-full flex-col items-center justify-center gap-y-8 text-base\">\n <PackagePlusIcon size={48} strokeWidth={2} />\n <p>Thêm dữ liệu để hiển thị</p>\n </div>\n </TableCell>\n </TableRow>\n )}\n </React.Fragment>\n )}\n </TableBody>\n </Table>\n <ScrollBar orientation=\"vertical\" className=\"z-10 w-2\" />\n <ScrollBar orientation=\"horizontal\" className=\"absolute right-0 bottom-0 left-0 h-2\" />\n </ScrollArea>\n )\n}\n","import { type Table } from '@tanstack/react-table'\nimport { ChevronLeft, ChevronRight, ChevronsLeft, ChevronsRight } from 'lucide-react'\n\nimport { Button } from '@/components/ui/button'\nimport { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '@/components/ui/select'\n\ninterface DataTablePaginationProps<TData> {\n table: Table<TData>\n}\n\nexport function DataTablePagination<TData>({ table }: DataTablePaginationProps<TData>) {\n 'use no memo'\n return (\n <div className=\"mt-4 flex w-full flex-0 flex-wrap items-center justify-between gap-y-4 px-2\">\n <div className=\"text-muted-foreground flex-1 text-sm\">\n {table.getFilteredSelectedRowModel().rows.length} of {table.getFilteredRowModel().rows.length} row(s) selected.\n </div>\n <div className=\"flex flex-wrap items-center space-x-6 gap-y-4 lg:space-x-8\">\n <div className=\"flex items-center space-x-2\">\n <p className=\"text-sm font-medium\">Rows per page</p>\n <Select\n value={`${table.getState().pagination.pageSize}`}\n onValueChange={(value) => {\n table.setPageSize(Number(value))\n }}\n >\n <SelectTrigger className=\"h-8 w-[70px]\">\n <SelectValue placeholder={table.getState().pagination.pageSize} />\n </SelectTrigger>\n <SelectContent side=\"top\">\n {[10, 20, 30, 40, 50].map((pageSize) => (\n <SelectItem key={pageSize} value={`${pageSize}`}>\n {pageSize}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </div>\n <div className=\"flex w-25 items-center justify-center text-sm font-medium\">\n Page {table.getState().pagination.pageIndex + 1} of {table.getPageCount()}\n </div>\n <div className=\"flex items-center space-x-2 *:size-9 *:p-0\">\n <Button variant=\"outline\" className=\"lg:flex\" onClick={() => table.setPageIndex(0)} disabled={!table.getCanPreviousPage()}>\n <span className=\"sr-only\">Go to first page</span>\n <ChevronsLeft />\n </Button>\n <Button variant=\"outline\" onClick={() => table.previousPage()} disabled={!table.getCanPreviousPage()}>\n <span className=\"sr-only\">Go to previous page</span>\n <ChevronLeft />\n </Button>\n <Button type=\"button\" variant=\"outline\" onClick={() => table.nextPage()} disabled={!table.getCanNextPage()}>\n <span className=\"sr-only\">Go to next page</span>\n <ChevronRight />\n </Button>\n <Button\n variant=\"outline\"\n className=\"lg:flex\"\n onClick={() => {\n table.setPageIndex(table.getPageCount() - 1)\n }}\n disabled={!table.getCanNextPage()}\n >\n <span className=\"sr-only\">Go to last page</span>\n <ChevronsRight />\n </Button>\n </div>\n </div>\n </div>\n )\n}\n","import React from 'react'\nimport {\n type ColumnDef,\n type ColumnFiltersState,\n getCoreRowModel,\n getFacetedRowModel,\n getFacetedUniqueValues,\n getFilteredRowModel,\n getPaginationRowModel,\n getSortedRowModel,\n type PaginationState,\n type RowSelectionState,\n type SortingState,\n useReactTable,\n type VisibilityState,\n} from '@tanstack/react-table'\n\nimport { DataTable } from './data-table'\nimport { DataTablePagination } from './data-table-pagination'\nimport { Flex } from '../layouts/flex'\nimport { AddNewBtn } from '../ui/buttons/add-new'\nimport { RefreshBtn } from '../ui/buttons/refresh'\nimport { SearchInput } from '../ui/inputs/search-input'\n\ntype Props<T> = {\n data: T[]\n totalCount?: number\n isLoading?: boolean\n columns: ColumnDef<T>[]\n pagination?: PaginationState\n onAdd?: () => void\n onRefresh?: () => void\n onClickRow?: (id: string) => void\n onPaginationChange?: React.Dispatch<React.SetStateAction<PaginationState>>\n}\nexport function Table<T extends Record<string, unknown>>({\n data,\n totalCount,\n isLoading,\n columns,\n pagination,\n onAdd,\n onRefresh,\n onClickRow,\n onPaginationChange,\n}: Props<T>) {\n 'use no memo'\n\n const [rowSelection, setRowSelection] = React.useState<RowSelectionState>({})\n const [sorting, setSorting] = React.useState<SortingState>([])\n const [columnFilters, setColumnFilters] = React.useState<ColumnFiltersState>([])\n const [columnVisibility, setColumnVisibility] = React.useState<VisibilityState>({})\n\n const initialState = React.useMemo(\n () => ({\n columnPinning: { right: ['actions', 'update', 'delete'] },\n pagination: { pageIndex: 0, pageSize: 20 },\n }),\n [],\n )\n\n const table = useReactTable<T>({\n initialState,\n data,\n columns,\n rowCount: totalCount,\n columnResizeMode: 'onChange',\n manualPagination: true,\n enableColumnResizing: false,\n enableMultiRowSelection: false,\n getCoreRowModel: getCoreRowModel(),\n getPaginationRowModel: getPaginationRowModel(),\n getSortedRowModel: getSortedRowModel(),\n getFilteredRowModel: getFilteredRowModel(),\n getFacetedRowModel: getFacetedRowModel(),\n getFacetedUniqueValues: getFacetedUniqueValues(),\n getRowId: (row) => (row.id as string) || (row.uuid as string),\n state: {\n rowSelection,\n sorting,\n columnVisibility,\n columnFilters,\n ...(pagination ? { pagination } : {}),\n },\n onRowSelectionChange: setRowSelection,\n onSortingChange: setSorting,\n onColumnVisibilityChange: setColumnVisibility,\n onColumnFiltersChange: setColumnFilters,\n ...(onPaginationChange ? { onPaginationChange } : {}),\n })\n\n return (\n <Flex vertical wrap={false} gap=\"sm\" align=\"start\" className=\"size-full overflow-y-auto pt-1\">\n <Flex justify=\"between\" padding=\"none\" width=\"full\" className=\"flex-0\">\n <SearchInput placeholder=\"Search...\" />\n <Flex className=\"px-0\">\n {onAdd && <AddNewBtn onClick={onAdd} />}\n <RefreshBtn onClick={onRefresh} />\n </Flex>\n </Flex>\n <Flex padding=\"none\" vertical wrap={false} width=\"full\" className=\"flex-1 overflow-auto\">\n <DataTable table={table} isLoading={isLoading} onClickRow={onClickRow} />\n <DataTablePagination<T> table={table} />\n </Flex>\n </Flex>\n )\n}\n"],"mappings":"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"}
@@ -0,0 +1,2 @@
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,...n}){return(0,r.jsx)(`div`,{"data-slot":`table-container`,className:`relative w-full overflow-x-auto`,children:(0,r.jsx)(`table`,{"data-slot":`table`,className:t.cn(`w-full caption-bottom text-sm`,e),...n})})}function a({className:e,...n}){return(0,r.jsx)(`thead`,{"data-slot":`table-header`,className:t.cn(`bg-muted-muted border-border-weak [&_tr]:border-b`,e),...n})}function o({className:e,...n}){return(0,r.jsx)(`tbody`,{"data-slot":`table-body`,className:t.cn(`[&_tr:last-child]:border-0`,e),...n})}function s({className:e,...n}){return(0,r.jsx)(`tfoot`,{"data-slot":`table-footer`,className:t.cn(`bg-accent-muted border-t font-medium [&>tr]:last:border-b-0`,e),...n})}function c({className:e,...n}){return(0,r.jsx)(`tr`,{"data-slot":`table-row`,className:t.cn(`hover:bg-muted-muted/50 active:bg-muted-muted data-[state=selected]:bg-muted border-border-weak border-b transition-colors`,e),...n})}function l({className:e,...n}){return(0,r.jsx)(`th`,{"data-slot":`table-head`,className:t.cn(`text-text-positive-weak`,`h-10 px-2 text-left align-middle font-medium whitespace-nowrap`,`[&:has([role=checkbox])]:pr-0`,`[&>[role=checkbox]]:translate-y-0.5`,e),...n})}function u({className:e,...n}){return(0,r.jsx)(`td`,{"data-slot":`table-cell`,className:t.cn(`p-2 align-middle whitespace-nowrap [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-0.5`,e),...n})}function d({className:e,...n}){return(0,r.jsx)(`caption`,{"data-slot":`table-caption`,className:t.cn(`text-text-positive-muted mt-4 text-sm`,e),...n})}Object.defineProperty(exports,`Table`,{enumerable:!0,get:function(){return i}}),Object.defineProperty(exports,`TableBody`,{enumerable:!0,get:function(){return o}}),Object.defineProperty(exports,`TableCaption`,{enumerable:!0,get:function(){return d}}),Object.defineProperty(exports,`TableCell`,{enumerable:!0,get:function(){return u}}),Object.defineProperty(exports,`TableFooter`,{enumerable:!0,get:function(){return s}}),Object.defineProperty(exports,`TableHead`,{enumerable:!0,get:function(){return l}}),Object.defineProperty(exports,`TableHeader`,{enumerable:!0,get:function(){return a}}),Object.defineProperty(exports,`TableRow`,{enumerable:!0,get:function(){return c}});
2
+ //# sourceMappingURL=table-CTMRaGxa.cjs.map