@customafk/lunas-ui 0.0.30 → 0.0.32

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 (469) hide show
  1. package/dist/add-new-DN1gIKY3.js +2 -0
  2. package/dist/add-new-DN1gIKY3.js.map +1 -0
  3. package/dist/add-new-xS6skbx-.cjs +2 -0
  4. package/dist/add-new-xS6skbx-.cjs.map +1 -0
  5. package/dist/{alert-dialog-DTGhE9eE.cjs → alert-dialog-CDkk0pu6.cjs} +2 -2
  6. package/dist/{alert-dialog-DTGhE9eE.cjs.map → alert-dialog-CDkk0pu6.cjs.map} +1 -1
  7. package/dist/{alert-dialog-Dj-AZiuo.js → alert-dialog-sZgsVmHQ.js} +2 -2
  8. package/dist/{alert-dialog-Dj-AZiuo.js.map → alert-dialog-sZgsVmHQ.js.map} +1 -1
  9. package/dist/{badge-bLqn3EB9.js → badge-DVsw3QBx.js} +2 -2
  10. package/dist/{badge-bLqn3EB9.js.map → badge-DVsw3QBx.js.map} +1 -1
  11. package/dist/{badge-DHRQ-uwY.cjs → badge-Z4Ilpic1.cjs} +2 -2
  12. package/dist/{badge-DHRQ-uwY.cjs.map → badge-Z4Ilpic1.cjs.map} +1 -1
  13. package/dist/button-Bux-wVsx.cjs +2 -0
  14. package/dist/button-Bux-wVsx.cjs.map +1 -0
  15. package/dist/{button-BGdpEKfJ.d.cts → button-CW3uac34.d.ts} +5 -5
  16. package/dist/{button-CcHoaGqq.d.ts → button-DS3TloNb.d.cts} +6 -6
  17. package/dist/button-k365f5HA.js +2 -0
  18. package/dist/button-k365f5HA.js.map +1 -0
  19. package/dist/{calendar-quj5auud.cjs → calendar-2P8RXz57.cjs} +2 -2
  20. package/dist/{calendar-quj5auud.cjs.map → calendar-2P8RXz57.cjs.map} +1 -1
  21. package/dist/{calendar-D9fvi_0R.js → calendar-Bk2fba-V.js} +2 -2
  22. package/dist/{calendar-D9fvi_0R.js.map → calendar-Bk2fba-V.js.map} +1 -1
  23. package/dist/{card-CgQjctUE.js → card-CBX9KFaT.js} +1 -1
  24. package/dist/{card-CgQjctUE.js.map → card-CBX9KFaT.js.map} +1 -1
  25. package/dist/{card-DYVCumPc.cjs → card-DadColF9.cjs} +1 -1
  26. package/dist/{card-DYVCumPc.cjs.map → card-DadColF9.cjs.map} +1 -1
  27. package/dist/cards/simple-card.cjs +1 -1
  28. package/dist/cards/simple-card.d.cts +2 -2
  29. package/dist/cards/simple-card.d.ts +2 -2
  30. package/dist/cards/simple-card.js +1 -1
  31. package/dist/{command-Cnlve_5K.d.cts → command-DiAu-f2T.d.cts} +12 -12
  32. package/dist/{command-C2l3hJPZ.d.ts → command-lCWgB6gY.d.ts} +12 -12
  33. package/dist/{command-CISAX79b.js → command-rOYjhGsH.js} +2 -2
  34. package/dist/{command-CISAX79b.js.map → command-rOYjhGsH.js.map} +1 -1
  35. package/dist/{command-EoZTr9rZ.cjs → command-uFfTLVLB.cjs} +2 -2
  36. package/dist/{command-EoZTr9rZ.cjs.map → command-uFfTLVLB.cjs.map} +1 -1
  37. package/dist/data-display/country.cjs +1 -1
  38. package/dist/data-display/country.js +1 -1
  39. package/dist/data-display/data-list.cjs +1 -1
  40. package/dist/data-display/data-list.js +1 -1
  41. package/dist/data-display/date-tooltip.cjs +1 -1
  42. package/dist/data-display/date-tooltip.js +1 -1
  43. package/dist/data-display/date.cjs +1 -1
  44. package/dist/data-display/date.js +1 -1
  45. package/dist/data-display/empty.cjs +1 -1
  46. package/dist/data-display/empty.d.cts +2 -2
  47. package/dist/data-display/empty.d.ts +2 -2
  48. package/dist/data-display/empty.js +1 -1
  49. package/dist/data-display/name.cjs +1 -1
  50. package/dist/data-display/name.js +1 -1
  51. package/dist/data-display/phone-number.cjs +1 -1
  52. package/dist/data-display/phone-number.js +1 -1
  53. package/dist/data-display/role-badge.cjs +1 -1
  54. package/dist/data-display/role-badge.js +1 -1
  55. package/dist/data-display/statistic.cjs +1 -1
  56. package/dist/data-display/statistic.d.cts +2 -2
  57. package/dist/data-display/statistic.d.ts +2 -2
  58. package/dist/data-display/statistic.js +1 -1
  59. package/dist/{date-B1g1OMYc.js → date-CNMmc1dw.js} +1 -1
  60. package/dist/{date-B1g1OMYc.js.map → date-CNMmc1dw.js.map} +1 -1
  61. package/dist/{date-Cw6Jf7k6.cjs → date-DipuxrP1.cjs} +1 -1
  62. package/dist/{date-Cw6Jf7k6.cjs.map → date-DipuxrP1.cjs.map} +1 -1
  63. package/dist/{dialog-C-DYoapJ.d.ts → dialog-BgHMBAZR.d.ts} +12 -12
  64. package/dist/dialog-CQ7VFVqq.js +2 -0
  65. package/dist/{dialog-DRy8_ncT.js.map → dialog-CQ7VFVqq.js.map} +1 -1
  66. package/dist/{dialog-DI0dG1nN.d.cts → dialog-CyrANigE.d.cts} +12 -12
  67. package/dist/{dialog-DC692QO6.cjs → dialog-D15fYo-V.cjs} +2 -2
  68. package/dist/{dialog-DC692QO6.cjs.map → dialog-D15fYo-V.cjs.map} +1 -1
  69. package/dist/dialogs/confirm-dialog.cjs +1 -1
  70. package/dist/dialogs/confirm-dialog.js +1 -1
  71. package/dist/dialogs/detail-dialog/component/sidebar.cjs +1 -1
  72. package/dist/dialogs/detail-dialog/component/sidebar.d.cts +28 -28
  73. package/dist/dialogs/detail-dialog/component/sidebar.d.ts +28 -28
  74. package/dist/dialogs/detail-dialog/component/sidebar.js +1 -1
  75. package/dist/dialogs/detail-dialog/index.cjs +1 -1
  76. package/dist/dialogs/detail-dialog/index.js +1 -1
  77. package/dist/dialogs/error-dialog.cjs +1 -1
  78. package/dist/dialogs/error-dialog.js +1 -1
  79. package/dist/dialogs/form-dialog.cjs +1 -1
  80. package/dist/dialogs/form-dialog.cjs.map +1 -1
  81. package/dist/dialogs/form-dialog.d.cts +2 -2
  82. package/dist/dialogs/form-dialog.d.ts +2 -2
  83. package/dist/dialogs/form-dialog.js +1 -1
  84. package/dist/dialogs/form-dialog.js.map +1 -1
  85. package/dist/dialogs/loading-dialog.cjs +1 -1
  86. package/dist/dialogs/loading-dialog.js +1 -1
  87. package/dist/{dropdown-menu-DAKBQ6Kb.cjs → dropdown-menu-D61L7wHT.cjs} +2 -2
  88. package/dist/{dropdown-menu-DAKBQ6Kb.cjs.map → dropdown-menu-D61L7wHT.cjs.map} +1 -1
  89. package/dist/{dropdown-menu-D7EGmhwP.js → dropdown-menu-DLg0SDyR.js} +2 -2
  90. package/dist/{dropdown-menu-D7EGmhwP.js.map → dropdown-menu-DLg0SDyR.js.map} +1 -1
  91. package/dist/error-dialog-BUsOIdF7.cjs +2 -0
  92. package/dist/{error-dialog-CIjefl0s.cjs.map → error-dialog-BUsOIdF7.cjs.map} +1 -1
  93. package/dist/error-dialog-HL0trgFF.js +2 -0
  94. package/dist/{error-dialog-CNl7iWC2.js.map → error-dialog-HL0trgFF.js.map} +1 -1
  95. package/dist/{flex-B5MQmxX8.cjs → flex-BuUVu_Lf.cjs} +2 -2
  96. package/dist/{flex-B5MQmxX8.cjs.map → flex-BuUVu_Lf.cjs.map} +1 -1
  97. package/dist/{flex-CBAzUoXK.js → flex-uO6z0kNw.js} +2 -2
  98. package/dist/{flex-CBAzUoXK.js.map → flex-uO6z0kNw.js.map} +1 -1
  99. package/dist/form-BURcRgfV.js +2 -0
  100. package/dist/{form-DZqGhxta.js.map → form-BURcRgfV.js.map} +1 -1
  101. package/dist/{form-D13wOyun.cjs → form-DxHTpatW.cjs} +2 -2
  102. package/dist/{form-D13wOyun.cjs.map → form-DxHTpatW.cjs.map} +1 -1
  103. package/dist/form-wrapper-CRvx6rtV.js +2 -0
  104. package/dist/{form-wrapper-BoiiM9r2.js.map → form-wrapper-CRvx6rtV.js.map} +1 -1
  105. package/dist/form-wrapper-DlT1h1BU.cjs +2 -0
  106. package/dist/{form-wrapper-BBWW9lmj.cjs.map → form-wrapper-DlT1h1BU.cjs.map} +1 -1
  107. package/dist/forms/combobox-field.cjs +1 -1
  108. package/dist/forms/combobox-field.js +1 -1
  109. package/dist/forms/date-field.cjs +1 -1
  110. package/dist/forms/date-field.d.cts +2 -2
  111. package/dist/forms/date-field.d.ts +2 -2
  112. package/dist/forms/date-field.js +1 -1
  113. package/dist/forms/form-wrapper.cjs +1 -1
  114. package/dist/forms/form-wrapper.d.cts +2 -2
  115. package/dist/forms/form-wrapper.d.ts +2 -2
  116. package/dist/forms/form-wrapper.js +1 -1
  117. package/dist/forms/multi-select-field.cjs +1 -1
  118. package/dist/forms/multi-select-field.d.cts +2 -2
  119. package/dist/forms/multi-select-field.d.ts +2 -2
  120. package/dist/forms/multi-select-field.js +1 -1
  121. package/dist/forms/number-field.cjs +1 -1
  122. package/dist/forms/number-field.d.cts +2 -2
  123. package/dist/forms/number-field.d.ts +2 -2
  124. package/dist/forms/number-field.js +1 -1
  125. package/dist/forms/password-field.cjs +1 -1
  126. package/dist/forms/password-field.d.cts +2 -2
  127. package/dist/forms/password-field.d.ts +2 -2
  128. package/dist/forms/password-field.js +1 -1
  129. package/dist/forms/select-field.cjs +1 -1
  130. package/dist/forms/select-field.d.cts +2 -2
  131. package/dist/forms/select-field.d.ts +2 -2
  132. package/dist/forms/select-field.js +1 -1
  133. package/dist/forms/switch-field.cjs +1 -1
  134. package/dist/forms/switch-field.d.cts +2 -2
  135. package/dist/forms/switch-field.d.ts +2 -2
  136. package/dist/forms/switch-field.js +1 -1
  137. package/dist/forms/text-field.cjs +1 -1
  138. package/dist/forms/text-field.d.cts +2 -2
  139. package/dist/forms/text-field.d.ts +2 -2
  140. package/dist/forms/text-field.js +1 -1
  141. package/dist/forms/textarea-field.cjs +1 -1
  142. package/dist/forms/textarea-field.d.cts +2 -2
  143. package/dist/forms/textarea-field.d.ts +2 -2
  144. package/dist/forms/textarea-field.js +1 -1
  145. package/dist/{input-I0UFVeRe.d.cts → input-CGh5d1fe.d.cts} +3 -3
  146. package/dist/{input-Cv7gHIMB.cjs → input-DahIflvq.cjs} +1 -1
  147. package/dist/{input-Cv7gHIMB.cjs.map → input-DahIflvq.cjs.map} +1 -1
  148. package/dist/{input-BJeCqZVs.js → input-YG15tKEM.js} +1 -1
  149. package/dist/{input-BJeCqZVs.js.map → input-YG15tKEM.js.map} +1 -1
  150. package/dist/{input-ixyBDLIa.d.ts → input-kLb5KdnV.d.ts} +3 -3
  151. package/dist/{label-CW94D639.cjs → label-BJkXZ3TJ.cjs} +2 -2
  152. package/dist/{label-CW94D639.cjs.map → label-BJkXZ3TJ.cjs.map} +1 -1
  153. package/dist/{label-DuddAB1p.js → label-D6HPmJBN.js} +2 -2
  154. package/dist/{label-DuddAB1p.js.map → label-D6HPmJBN.js.map} +1 -1
  155. package/dist/layouts/app-layout/index.cjs +1 -1
  156. package/dist/layouts/app-layout/index.d.cts +3 -3
  157. package/dist/layouts/app-layout/index.d.ts +26 -26
  158. package/dist/layouts/app-layout/index.js +1 -1
  159. package/dist/layouts/flex.cjs +1 -1
  160. package/dist/layouts/flex.d.cts +3 -3
  161. package/dist/layouts/flex.d.ts +3 -3
  162. package/dist/layouts/flex.js +1 -1
  163. package/dist/layouts/main/index.cjs +1 -1
  164. package/dist/layouts/main/index.d.ts +4 -4
  165. package/dist/layouts/main/index.js +1 -1
  166. package/dist/{multi-select-Djn-5l_V.cjs → multi-select-Ccun4tko.cjs} +2 -2
  167. package/dist/{multi-select-Djn-5l_V.cjs.map → multi-select-Ccun4tko.cjs.map} +1 -1
  168. package/dist/{multi-select-CslsZ7yw.js → multi-select-orMSloDe.js} +2 -2
  169. package/dist/{multi-select-CslsZ7yw.js.map → multi-select-orMSloDe.js.map} +1 -1
  170. package/dist/paragraph-C7lEumt1.cjs +2 -0
  171. package/dist/{paragraph-JXci2Ihg.cjs.map → paragraph-C7lEumt1.cjs.map} +1 -1
  172. package/dist/paragraph-DdDkztSr.js +2 -0
  173. package/dist/{paragraph-C0KfolV0.js.map → paragraph-DdDkztSr.js.map} +1 -1
  174. package/dist/{popover-DyoAfuhi.js → popover-Bm8yrn27.js} +2 -2
  175. package/dist/{popover-DyoAfuhi.js.map → popover-Bm8yrn27.js.map} +1 -1
  176. package/dist/{popover-ByzBl1kH.cjs → popover-CZqrOSLU.cjs} +2 -2
  177. package/dist/{popover-ByzBl1kH.cjs.map → popover-CZqrOSLU.cjs.map} +1 -1
  178. package/dist/{progress-DLxh7x1P.cjs → progress-BN-Us1HI.cjs} +2 -2
  179. package/dist/{progress-DLxh7x1P.cjs.map → progress-BN-Us1HI.cjs.map} +1 -1
  180. package/dist/{progress-DWrtxJv0.js → progress-DI4g21bW.js} +2 -2
  181. package/dist/{progress-DWrtxJv0.js.map → progress-DI4g21bW.js.map} +1 -1
  182. package/dist/refresh-DD8oIITt.js +2 -0
  183. package/dist/refresh-DD8oIITt.js.map +1 -0
  184. package/dist/refresh-DQYWPM4I.cjs +2 -0
  185. package/dist/refresh-DQYWPM4I.cjs.map +1 -0
  186. package/dist/scroll-area-C2rZa7Ua.js +2 -0
  187. package/dist/{scroll-area-C0KQbcG0.js.map → scroll-area-C2rZa7Ua.js.map} +1 -1
  188. package/dist/{scroll-area-CBq8XL4c.cjs → scroll-area-Cc6UjeXy.cjs} +2 -2
  189. package/dist/{scroll-area-CBq8XL4c.cjs.map → scroll-area-Cc6UjeXy.cjs.map} +1 -1
  190. package/dist/{search-input-DG3ivvbv.js → search-input-BWd4Nofw.js} +2 -2
  191. package/dist/{search-input-DG3ivvbv.js.map → search-input-BWd4Nofw.js.map} +1 -1
  192. package/dist/{search-input-Donhb2DT.cjs → search-input-tuRulq_7.cjs} +2 -2
  193. package/dist/{search-input-Donhb2DT.cjs.map → search-input-tuRulq_7.cjs.map} +1 -1
  194. package/dist/{select-C0ZL0jnr.cjs → select-AvmLfchI.cjs} +2 -2
  195. package/dist/{select-C0ZL0jnr.cjs.map → select-AvmLfchI.cjs.map} +1 -1
  196. package/dist/{select-D8FXzl09.js → select-CFwOPSRe.js} +2 -2
  197. package/dist/{select-D8FXzl09.js.map → select-CFwOPSRe.js.map} +1 -1
  198. package/dist/{separator-Cigaqna1.cjs → separator-BT-ElB51.cjs} +2 -2
  199. package/dist/{separator-Cigaqna1.cjs.map → separator-BT-ElB51.cjs.map} +1 -1
  200. package/dist/{separator-DHBhn7Y8.d.cts → separator-BprGaC5W.d.cts} +3 -3
  201. package/dist/{separator-aLdI4FQe.js → separator-CMpvCcC2.js} +2 -2
  202. package/dist/{separator-aLdI4FQe.js.map → separator-CMpvCcC2.js.map} +1 -1
  203. package/dist/{separator-CW0zOdc9.d.ts → separator-j1m9MZW8.d.ts} +3 -3
  204. package/dist/{sheet-C1xD7y3c.cjs → sheet-DDzZ8aNz.cjs} +2 -2
  205. package/dist/{sheet-C1xD7y3c.cjs.map → sheet-DDzZ8aNz.cjs.map} +1 -1
  206. package/dist/{sheet-7EAzHejw.js → sheet-DZGisKJ7.js} +2 -2
  207. package/dist/{sheet-7EAzHejw.js.map → sheet-DZGisKJ7.js.map} +1 -1
  208. package/dist/{sidebar-B5wjGpGo.cjs → sidebar-Cwy_Lyyv.cjs} +2 -2
  209. package/dist/{sidebar-B5wjGpGo.cjs.map → sidebar-Cwy_Lyyv.cjs.map} +1 -1
  210. package/dist/{sidebar-jBc9MX3P.js → sidebar-DJh4he1F.js} +2 -2
  211. package/dist/{sidebar-jBc9MX3P.js.map → sidebar-DJh4he1F.js.map} +1 -1
  212. package/dist/{sidebar-CeON7EMu.js → sidebar-DhskzF2y.js} +2 -2
  213. package/dist/{sidebar-CeON7EMu.js.map → sidebar-DhskzF2y.js.map} +1 -1
  214. package/dist/{sidebar-CU17j7pR.cjs → sidebar-s8CA2I3B.cjs} +2 -2
  215. package/dist/{sidebar-CU17j7pR.cjs.map → sidebar-s8CA2I3B.cjs.map} +1 -1
  216. package/dist/{switch-B9LmV-PS.js → switch-CgOE6qbi.js} +2 -2
  217. package/dist/{switch-B9LmV-PS.js.map → switch-CgOE6qbi.js.map} +1 -1
  218. package/dist/{switch-bfoTi9s3.cjs → switch-qWUhH4Jx.cjs} +2 -2
  219. package/dist/{switch-bfoTi9s3.cjs.map → switch-qWUhH4Jx.cjs.map} +1 -1
  220. package/dist/table/index.cjs +1 -1
  221. package/dist/table/index.cjs.map +1 -1
  222. package/dist/table/index.d.cts +2 -2
  223. package/dist/table/index.d.ts +2 -2
  224. package/dist/table/index.js +1 -1
  225. package/dist/table/index.js.map +1 -1
  226. package/dist/{textarea-D6-c1GVU.cjs → textarea-DCzz0uEq.cjs} +1 -1
  227. package/dist/{textarea-D6-c1GVU.cjs.map → textarea-DCzz0uEq.cjs.map} +1 -1
  228. package/dist/{textarea-C20eiWs-.js → textarea-hhVaJpsh.js} +1 -1
  229. package/dist/{textarea-C20eiWs-.js.map → textarea-hhVaJpsh.js.map} +1 -1
  230. package/dist/title-CD5GinA7.js +2 -0
  231. package/dist/{title-CxIwADiB.js.map → title-CD5GinA7.js.map} +1 -1
  232. package/dist/{title-6Uosk2b4.cjs → title-DjjjRvCQ.cjs} +2 -2
  233. package/dist/{title-6Uosk2b4.cjs.map → title-DjjjRvCQ.cjs.map} +1 -1
  234. package/dist/{toggle-eio6M2Fc.cjs → toggle-62dJdAzP.cjs} +2 -2
  235. package/dist/{toggle-eio6M2Fc.cjs.map → toggle-62dJdAzP.cjs.map} +1 -1
  236. package/dist/{toggle-BNtw9z70.js → toggle-CRvl17br.js} +2 -2
  237. package/dist/{toggle-BNtw9z70.js.map → toggle-CRvl17br.js.map} +1 -1
  238. package/dist/{toggle-Xkrjwemb.d.ts → toggle-CXaM4Z5s.d.ts} +3 -3
  239. package/dist/{toggle-DvJddJPj.d.cts → toggle-CeboRSo7.d.cts} +3 -3
  240. package/dist/{tooltip-D3FsnWny.d.cts → tooltip-Ccg2G_fB.d.cts} +6 -6
  241. package/dist/{tooltip-Bt6pSZ4o.d.ts → tooltip-D0uAyaLw.d.ts} +6 -6
  242. package/dist/{tooltip-DkB0gnp9.js → tooltip-DYs9DCpH.js} +2 -2
  243. package/dist/{tooltip-DkB0gnp9.js.map → tooltip-DYs9DCpH.js.map} +1 -1
  244. package/dist/{tooltip-Ci6WUOcz.cjs → tooltip-DkJH6hxt.cjs} +2 -2
  245. package/dist/{tooltip-Ci6WUOcz.cjs.map → tooltip-DkJH6hxt.cjs.map} +1 -1
  246. package/dist/{types-CnMfjcgO.cjs → types-B-zo-oaH.cjs} +1 -1
  247. package/dist/{types-CnMfjcgO.cjs.map → types-B-zo-oaH.cjs.map} +1 -1
  248. package/dist/{types-BVNbk1ZN.js → types-juSjg5ED.js} +1 -1
  249. package/dist/{types-BVNbk1ZN.js.map → types-juSjg5ED.js.map} +1 -1
  250. package/dist/typography/paragraph.cjs +1 -1
  251. package/dist/typography/paragraph.d.cts +2 -2
  252. package/dist/typography/paragraph.d.ts +2 -2
  253. package/dist/typography/paragraph.js +1 -1
  254. package/dist/typography/title.cjs +1 -1
  255. package/dist/typography/title.d.cts +2 -2
  256. package/dist/typography/title.d.ts +2 -2
  257. package/dist/typography/title.js +1 -1
  258. package/dist/ui/alert-dialog.cjs +1 -1
  259. package/dist/ui/alert-dialog.d.cts +12 -12
  260. package/dist/ui/alert-dialog.d.ts +12 -12
  261. package/dist/ui/alert-dialog.js +1 -1
  262. package/dist/ui/alert.cjs +1 -1
  263. package/dist/ui/alert.d.cts +4 -4
  264. package/dist/ui/alert.d.ts +6 -6
  265. package/dist/ui/alert.js +1 -1
  266. package/dist/ui/aspect-ratio.cjs +1 -1
  267. package/dist/ui/aspect-ratio.d.cts +2 -2
  268. package/dist/ui/aspect-ratio.d.ts +2 -2
  269. package/dist/ui/aspect-ratio.js +1 -1
  270. package/dist/ui/avatar.cjs +1 -1
  271. package/dist/ui/avatar.d.cts +4 -4
  272. package/dist/ui/avatar.d.ts +4 -4
  273. package/dist/ui/avatar.js +1 -1
  274. package/dist/ui/badge.cjs +1 -1
  275. package/dist/ui/badge.d.cts +3 -3
  276. package/dist/ui/badge.d.ts +5 -5
  277. package/dist/ui/badge.js +1 -1
  278. package/dist/ui/breadcrumb.cjs +1 -1
  279. package/dist/ui/breadcrumb.d.cts +8 -8
  280. package/dist/ui/breadcrumb.d.ts +8 -8
  281. package/dist/ui/breadcrumb.js +1 -1
  282. package/dist/ui/button.cjs +1 -1
  283. package/dist/ui/button.d.cts +1 -1
  284. package/dist/ui/button.d.ts +1 -1
  285. package/dist/ui/button.js +1 -1
  286. package/dist/ui/buttons/add-new.cjs +1 -1
  287. package/dist/ui/buttons/add-new.js +1 -1
  288. package/dist/ui/buttons/edit.cjs +1 -1
  289. package/dist/ui/buttons/edit.cjs.map +1 -1
  290. package/dist/ui/buttons/edit.js +1 -1
  291. package/dist/ui/buttons/edit.js.map +1 -1
  292. package/dist/ui/buttons/refresh.cjs +1 -1
  293. package/dist/ui/buttons/refresh.js +1 -1
  294. package/dist/ui/buttons/trash.cjs +1 -1
  295. package/dist/ui/buttons/trash.cjs.map +1 -1
  296. package/dist/ui/buttons/trash.js +1 -1
  297. package/dist/ui/buttons/trash.js.map +1 -1
  298. package/dist/ui/buttons/upload-image.cjs +1 -1
  299. package/dist/ui/buttons/upload-image.js +1 -1
  300. package/dist/ui/calendar.cjs +1 -1
  301. package/dist/ui/calendar.d.cts +4 -4
  302. package/dist/ui/calendar.d.ts +4 -4
  303. package/dist/ui/calendar.js +1 -1
  304. package/dist/ui/card.cjs +1 -1
  305. package/dist/ui/card.d.cts +8 -8
  306. package/dist/ui/card.d.ts +8 -8
  307. package/dist/ui/card.js +1 -1
  308. package/dist/ui/carousel.cjs +1 -1
  309. package/dist/ui/carousel.d.cts +7 -7
  310. package/dist/ui/carousel.d.ts +7 -7
  311. package/dist/ui/carousel.js +1 -1
  312. package/dist/ui/collapsible.cjs +1 -1
  313. package/dist/ui/collapsible.d.cts +4 -4
  314. package/dist/ui/collapsible.d.ts +4 -4
  315. package/dist/ui/collapsible.js +1 -1
  316. package/dist/ui/command.cjs +1 -1
  317. package/dist/ui/command.d.cts +2 -2
  318. package/dist/ui/command.d.ts +2 -2
  319. package/dist/ui/command.js +1 -1
  320. package/dist/ui/context-menu.cjs +1 -1
  321. package/dist/ui/context-menu.d.cts +16 -16
  322. package/dist/ui/context-menu.d.ts +16 -16
  323. package/dist/ui/context-menu.js +1 -1
  324. package/dist/ui/dialog.cjs +1 -1
  325. package/dist/ui/dialog.d.cts +1 -1
  326. package/dist/ui/dialog.d.ts +1 -1
  327. package/dist/ui/dialog.js +1 -1
  328. package/dist/ui/dropdown-menu.cjs +1 -1
  329. package/dist/ui/dropdown-menu.d.cts +16 -16
  330. package/dist/ui/dropdown-menu.d.ts +16 -16
  331. package/dist/ui/dropdown-menu.js +1 -1
  332. package/dist/ui/file-uploader.cjs +2 -2
  333. package/dist/ui/file-uploader.d.cts +2 -2
  334. package/dist/ui/file-uploader.d.ts +2 -2
  335. package/dist/ui/file-uploader.js +2 -2
  336. package/dist/ui/form.cjs +1 -1
  337. package/dist/ui/form.d.cts +7 -7
  338. package/dist/ui/form.d.ts +7 -7
  339. package/dist/ui/form.js +1 -1
  340. package/dist/ui/hover-card.cjs +1 -1
  341. package/dist/ui/hover-card.d.cts +4 -4
  342. package/dist/ui/hover-card.d.ts +4 -4
  343. package/dist/ui/hover-card.js +1 -1
  344. package/dist/ui/input-otp.cjs +1 -1
  345. package/dist/ui/input-otp.d.cts +5 -5
  346. package/dist/ui/input-otp.d.ts +5 -5
  347. package/dist/ui/input-otp.js +1 -1
  348. package/dist/ui/input.cjs +1 -1
  349. package/dist/ui/input.d.cts +1 -1
  350. package/dist/ui/input.d.ts +1 -1
  351. package/dist/ui/input.js +1 -1
  352. package/dist/ui/inputs/search-input.cjs +1 -1
  353. package/dist/ui/inputs/search-input.d.cts +3 -3
  354. package/dist/ui/inputs/search-input.d.ts +3 -3
  355. package/dist/ui/inputs/search-input.js +1 -1
  356. package/dist/ui/label.cjs +1 -1
  357. package/dist/ui/label.d.cts +2 -2
  358. package/dist/ui/label.d.ts +2 -2
  359. package/dist/ui/label.js +1 -1
  360. package/dist/ui/menubar.cjs +1 -1
  361. package/dist/ui/menubar.d.cts +17 -17
  362. package/dist/ui/menubar.d.ts +17 -17
  363. package/dist/ui/menubar.js +1 -1
  364. package/dist/ui/multi-select.cjs +1 -1
  365. package/dist/ui/multi-select.d.cts +2 -2
  366. package/dist/ui/multi-select.d.ts +2 -2
  367. package/dist/ui/multi-select.js +1 -1
  368. package/dist/ui/navigation-menu.cjs +1 -1
  369. package/dist/ui/navigation-menu.d.cts +9 -9
  370. package/dist/ui/navigation-menu.d.ts +11 -11
  371. package/dist/ui/navigation-menu.js +1 -1
  372. package/dist/ui/pagination.cjs +1 -1
  373. package/dist/ui/pagination.d.cts +9 -9
  374. package/dist/ui/pagination.d.ts +9 -9
  375. package/dist/ui/pagination.js +1 -1
  376. package/dist/ui/popover.cjs +1 -1
  377. package/dist/ui/popover.d.cts +5 -5
  378. package/dist/ui/popover.d.ts +5 -5
  379. package/dist/ui/popover.js +1 -1
  380. package/dist/ui/progress.cjs +1 -1
  381. package/dist/ui/progress.d.cts +2 -2
  382. package/dist/ui/progress.d.ts +2 -2
  383. package/dist/ui/progress.js +1 -1
  384. package/dist/ui/radio-group.cjs +1 -1
  385. package/dist/ui/radio-group.d.cts +3 -3
  386. package/dist/ui/radio-group.d.ts +3 -3
  387. package/dist/ui/radio-group.js +1 -1
  388. package/dist/ui/resizable.cjs +1 -1
  389. package/dist/ui/resizable.d.cts +4 -4
  390. package/dist/ui/resizable.d.ts +4 -4
  391. package/dist/ui/resizable.js +1 -1
  392. package/dist/ui/scroll-area.cjs +1 -1
  393. package/dist/ui/scroll-area.d.ts +3 -3
  394. package/dist/ui/scroll-area.js +1 -1
  395. package/dist/ui/select.cjs +1 -1
  396. package/dist/ui/select.d.cts +11 -11
  397. package/dist/ui/select.d.ts +11 -11
  398. package/dist/ui/select.js +1 -1
  399. package/dist/ui/separator.cjs +1 -1
  400. package/dist/ui/separator.d.cts +1 -1
  401. package/dist/ui/separator.d.ts +1 -1
  402. package/dist/ui/separator.js +1 -1
  403. package/dist/ui/sheet.cjs +1 -1
  404. package/dist/ui/sheet.d.cts +9 -9
  405. package/dist/ui/sheet.d.ts +9 -9
  406. package/dist/ui/sheet.js +1 -1
  407. package/dist/ui/sidebar.cjs +1 -1
  408. package/dist/ui/sidebar.d.cts +28 -28
  409. package/dist/ui/sidebar.d.ts +28 -28
  410. package/dist/ui/sidebar.js +1 -1
  411. package/dist/ui/skeleton.d.cts +2 -2
  412. package/dist/ui/skeleton.d.ts +2 -2
  413. package/dist/ui/slider.cjs +1 -1
  414. package/dist/ui/slider.d.cts +2 -2
  415. package/dist/ui/slider.d.ts +2 -2
  416. package/dist/ui/slider.js +1 -1
  417. package/dist/ui/sonner.cjs +1 -1
  418. package/dist/ui/sonner.d.cts +2 -2
  419. package/dist/ui/sonner.d.ts +2 -2
  420. package/dist/ui/sonner.js +1 -1
  421. package/dist/ui/switch.cjs +1 -1
  422. package/dist/ui/switch.d.cts +2 -2
  423. package/dist/ui/switch.d.ts +2 -2
  424. package/dist/ui/switch.js +1 -1
  425. package/dist/ui/table.d.cts +9 -9
  426. package/dist/ui/table.d.ts +9 -9
  427. package/dist/ui/tabs.cjs +1 -1
  428. package/dist/ui/tabs.d.cts +5 -5
  429. package/dist/ui/tabs.d.ts +5 -5
  430. package/dist/ui/tabs.js +1 -1
  431. package/dist/ui/textarea.cjs +1 -1
  432. package/dist/ui/textarea.d.cts +2 -2
  433. package/dist/ui/textarea.d.ts +2 -2
  434. package/dist/ui/textarea.js +1 -1
  435. package/dist/ui/toggle-group.cjs +1 -1
  436. package/dist/ui/toggle-group.d.cts +4 -4
  437. package/dist/ui/toggle-group.d.ts +4 -4
  438. package/dist/ui/toggle-group.js +1 -1
  439. package/dist/ui/toggle.cjs +1 -1
  440. package/dist/ui/toggle.d.cts +1 -1
  441. package/dist/ui/toggle.d.ts +1 -1
  442. package/dist/ui/toggle.js +1 -1
  443. package/dist/ui/tooltip.cjs +1 -1
  444. package/dist/ui/tooltip.d.cts +1 -1
  445. package/dist/ui/tooltip.d.ts +1 -1
  446. package/dist/ui/tooltip.js +1 -1
  447. package/package.json +1 -1
  448. package/dist/add-new-B44gmXH4.js +0 -2
  449. package/dist/add-new-B44gmXH4.js.map +0 -1
  450. package/dist/add-new-D9PgI4z-.cjs +0 -2
  451. package/dist/add-new-D9PgI4z-.cjs.map +0 -1
  452. package/dist/button-Bvj7CJrA.js +0 -2
  453. package/dist/button-Bvj7CJrA.js.map +0 -1
  454. package/dist/button-CrbbsPfF.cjs +0 -2
  455. package/dist/button-CrbbsPfF.cjs.map +0 -1
  456. package/dist/dialog-DRy8_ncT.js +0 -2
  457. package/dist/error-dialog-CIjefl0s.cjs +0 -2
  458. package/dist/error-dialog-CNl7iWC2.js +0 -2
  459. package/dist/form-DZqGhxta.js +0 -2
  460. package/dist/form-wrapper-BBWW9lmj.cjs +0 -2
  461. package/dist/form-wrapper-BoiiM9r2.js +0 -2
  462. package/dist/paragraph-C0KfolV0.js +0 -2
  463. package/dist/paragraph-JXci2Ihg.cjs +0 -2
  464. package/dist/refresh-BeUSiOSY.js +0 -2
  465. package/dist/refresh-BeUSiOSY.js.map +0 -1
  466. package/dist/refresh-CqZky9T5.cjs +0 -2
  467. package/dist/refresh-CqZky9T5.cjs.map +0 -1
  468. package/dist/scroll-area-C0KQbcG0.js +0 -2
  469. package/dist/title-CxIwADiB.js +0 -2
@@ -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 { 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
+ {"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 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 '@/components/ui/button'\nimport { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger } from '@/components/ui/dropdown-menu'\nimport { ScrollArea, ScrollBar } from '@/components/ui/scroll-area'\nimport { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from '@/components/ui/table'\n\n// Helper function to compute pinning styles for columns\nconst getPinningStyles = (column: Column<AnyEntity>): React.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 color=\"secondary\"\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 color=\"secondary\"\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-weak bg-background relative w-full overflow-auto rounded-lg border\">\n <Table\n className={cn(\n '!w-full',\n '[&_td]:border-border-weak',\n '[&_th]:border-border-weak',\n 'table-fixed border-separate border-spacing-0',\n '[&_tfoot_td]:border-t',\n '[&_th]:border-b',\n '[&_th]:border-b-border-weak',\n '[&_tr]:border-none',\n '[&_tr:not(:last-child)_td]:border-b',\n '[&_tr:not(:last-child)_td]:border-b-border-weak',\n )}\n style={{\n width: table.getTotalSize(),\n }}\n >\n <TableHeader className=\"sticky top-0 z-10 backdrop-blur-xs\">\n {table.getHeaderGroups().map((headerGroup) => (\n <TableRow key={headerGroup.id}>\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 'relative h-9 font-semibold select-none',\n 'data-pinned:backdrop-blur-xs',\n 'data-pinned:bg-muted-weak',\n '[&>.cursor-col-resize]:last:opacity-0',\n '[&[data-pinned][data-last-col]]:border-border-weak',\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-weak',\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-text-positive 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-18\">\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\" color=\"muted\" size=\"icon\" 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\" color=\"muted\" size=\"icon\" onClick={() => table.previousPage()} disabled={!table.getCanPreviousPage()}>\n <span className=\"sr-only\">Go to previous page</span>\n <ChevronLeft />\n </Button>\n <Button variant=\"outline\" color=\"muted\" size=\"icon\" 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 color=\"muted\"\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_runtime9 from "react/jsx-runtime";
1
+ import * as react_jsx_runtime35 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_runtime9.JSX.Element;
27
+ }: Props<T>): react_jsx_runtime35.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_runtime30 from "react/jsx-runtime";
2
+ import * as react_jsx_runtime44 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_runtime30.JSX.Element;
27
+ }: Props<T>): react_jsx_runtime44.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-Bvj7CJrA.js";import"../input-BJeCqZVs.js";import{Select as n,SelectContent as r,SelectItem as i,SelectTrigger as a,SelectValue as o}from"../select-D8FXzl09.js";import{Flex as s}from"../flex-CBAzUoXK.js";import"../paragraph-C0KfolV0.js";import{DropdownMenu as c,DropdownMenuContent as l,DropdownMenuItem as u,DropdownMenuTrigger as d}from"../dropdown-menu-D7EGmhwP.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-B44gmXH4.js";import{RefreshBtn as x}from"../refresh-BeUSiOSY.js";import{SearchInput as S}from"../search-input-DG3ivvbv.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{Button as t}from"../button-k365f5HA.js";import"../input-YG15tKEM.js";import{Select as n,SelectContent as r,SelectItem as i,SelectTrigger as a,SelectValue as o}from"../select-CFwOPSRe.js";import{Flex as s}from"../flex-uO6z0kNw.js";import"../paragraph-DdDkztSr.js";import{DropdownMenu as c,DropdownMenuContent as l,DropdownMenuItem as u,DropdownMenuTrigger as d}from"../dropdown-menu-DLg0SDyR.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-CsnugKnh.js";import{AddNewBtn as b}from"../add-new-DN1gIKY3.js";import{RefreshBtn as x}from"../refresh-DD8oIITt.js";import{SearchInput as S}from"../search-input-BWd4Nofw.js";import C from"react";import{ArrowLeftToLineIcon as w,ArrowRightToLineIcon as T,ChevronDown as E,ChevronLeft as D,ChevronRight as O,ChevronUp as k,ChevronsLeft as A,ChevronsRight as j,EllipsisIcon as M,PackagePlusIcon as N,PinOffIcon as P}from"lucide-react";import{jsx as F,jsxs as I}from"react/jsx-runtime";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:F(k,{className:`shrink-0 opacity-60`,size:16,strokeWidth:2,"aria-hidden":`true`}),desc:F(E,{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()?F(t,{size:`icon`,variant:`ghost`,color:`secondary`,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:F(P,{className:`opacity-60`,size:16,"aria-hidden":`true`})}):I(c,{children:[F(d,{asChild:!0,children:F(t,{size:`icon`,variant:`ghost`,color:`secondary`,className:`-mr-1 size-7 shadow-none`,"aria-label":`Pin options for ${n} column`,title:`Pin options for ${n} column`,children:F(M,{className:`opacity-60`,size:16,"aria-hidden":`true`})})}),I(l,{align:`end`,children:[I(u,{onClick:()=>e.pin(`left`),children:[F(w,{size:16,className:`opacity-60`,"aria-hidden":`true`}),`Stick to left`]}),I(u,{onClick:()=>e.pin(`right`),children:[F(T,{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 I(`div`,{className:`flex items-center justify-between gap-2 truncate`,children:[!t.isPlaceholder&&I(`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:[F(`span`,{className:`truncate`,children:L(n.columnDef.header,t.getContext())}),F(K,{column:n})]}),!t.isPlaceholder&&F(q,{column:n})]})},Y=({table:t,isLoading:n,onClickRow:r})=>{"use no memo";return I(f,{className:`border-border-weak bg-background relative w-full overflow-auto rounded-lg border`,children:[I(m,{className:e(`!w-full`,`[&_td]:border-border-weak`,`[&_th]:border-border-weak`,`table-fixed border-separate border-spacing-0`,`[&_tfoot_td]:border-t`,`[&_th]:border-b`,`[&_th]:border-b-border-weak`,`[&_tr]:border-none`,`[&_tr:not(:last-child)_td]:border-b`,`[&_tr:not(:last-child)_td]:border-b-border-weak`),style:{width:t.getTotalSize()},children:[F(v,{className:`sticky top-0 z-10 backdrop-blur-xs`,children:t.getHeaderGroups().map(t=>F(y,{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 F(_,{"data-pinned":r||void 0,"data-last-col":i?`left`:a?`right`:void 0,className:e(`relative h-9 font-semibold select-none`,`data-pinned:backdrop-blur-xs`,`data-pinned:bg-muted-weak`,`[&>.cursor-col-resize]:last:opacity-0`,`[&[data-pinned][data-last-col]]:border-border-weak`,`[&: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:F(J,{header:t})},t.id)})},t.id))}),F(h,{className:e(n&&`h-36`,t.getRowModel().rows?.length===0&&`h-48`),children:n?F(y,{className:`absolute top-9 flex h-36 w-full items-center justify-center`,children:F(g,{children:`loading...`})}):F(C.Fragment,{children:t.getRowModel().rows?.length?t.getRowModel().rows.map(t=>F(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 F(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-weak`,`[&[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)):F(y,{className:`absolute top-9 flex h-36 w-full items-center justify-center`,children:F(g,{children:I(`div`,{className:`text-muted-foreground flex size-full flex-col items-center justify-center gap-y-8 text-base`,children:[F(N,{size:48,strokeWidth:2}),F(`p`,{children:`Thêm dữ liệu để hiển thị`})]})})})})})]}),F(p,{orientation:`vertical`,className:`z-10 w-2`}),F(p,{orientation:`horizontal`,className:`absolute right-0 bottom-0 left-0 h-2`})]})};function X({table:e}){"use no memo";return I(`div`,{className:`mt-4 flex w-full flex-0 flex-wrap items-center justify-between gap-y-4 px-2`,children:[I(`div`,{className:`text-text-positive flex-1 text-sm`,children:[e.getFilteredSelectedRowModel().rows.length,` of `,e.getFilteredRowModel().rows.length,` row(s) selected.`]}),I(`div`,{className:`flex flex-wrap items-center space-x-6 gap-y-4 lg:space-x-8`,children:[I(`div`,{className:`flex items-center space-x-2`,children:[F(`p`,{className:`text-sm font-medium`,children:`Rows per page`}),I(n,{value:`${e.getState().pagination.pageSize}`,onValueChange:t=>{e.setPageSize(Number(t))},children:[F(a,{className:`h-8 w-18`,children:F(o,{placeholder:e.getState().pagination.pageSize})}),F(r,{side:`top`,children:[10,20,30,40,50].map(e=>F(i,{value:`${e}`,children:e},e))})]})]}),I(`div`,{className:`flex w-25 items-center justify-center text-sm font-medium`,children:[`Page `,e.getState().pagination.pageIndex+1,` of `,e.getPageCount()]}),I(`div`,{className:`flex items-center space-x-2 *:size-9 *:p-0`,children:[I(t,{variant:`outline`,color:`muted`,size:`icon`,className:`lg:flex`,onClick:()=>e.setPageIndex(0),disabled:!e.getCanPreviousPage(),children:[F(`span`,{className:`sr-only`,children:`Go to first page`}),F(A,{})]}),I(t,{variant:`outline`,color:`muted`,size:`icon`,onClick:()=>e.previousPage(),disabled:!e.getCanPreviousPage(),children:[F(`span`,{className:`sr-only`,children:`Go to previous page`}),F(D,{})]}),I(t,{variant:`outline`,color:`muted`,size:`icon`,onClick:()=>e.nextPage(),disabled:!e.getCanNextPage(),children:[F(`span`,{className:`sr-only`,children:`Go to next page`}),F(O,{})]}),I(t,{variant:`outline`,color:`muted`,className:`lg:flex`,onClick:()=>{e.setPageIndex(e.getPageCount()-1)},disabled:!e.getCanNextPage(),children:[F(`span`,{className:`sr-only`,children:`Go to last page`}),F(j,{})]})]})]})]})}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 I(s,{vertical:!0,wrap:!1,gap:`sm`,align:`start`,className:`size-full overflow-y-auto pt-1`,children:[I(s,{justify:`between`,padding:`none`,width:`full`,className:`flex-0`,children:[F(S,{placeholder:`Search...`}),I(s,{className:`px-0`,children:[!!a&&F(b,{onClick:a}),F(x,{onClick:o})]})]}),I(s,{padding:`none`,vertical:!0,wrap:!1,width:`full`,className:`flex-1 overflow-auto`,children:[F(Y,{table:y,isLoading:n,onClickRow:c}),F(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 { 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
+ {"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 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 '@/components/ui/button'\nimport { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger } from '@/components/ui/dropdown-menu'\nimport { ScrollArea, ScrollBar } from '@/components/ui/scroll-area'\nimport { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from '@/components/ui/table'\n\n// Helper function to compute pinning styles for columns\nconst getPinningStyles = (column: Column<AnyEntity>): React.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 color=\"secondary\"\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 color=\"secondary\"\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-weak bg-background relative w-full overflow-auto rounded-lg border\">\n <Table\n className={cn(\n '!w-full',\n '[&_td]:border-border-weak',\n '[&_th]:border-border-weak',\n 'table-fixed border-separate border-spacing-0',\n '[&_tfoot_td]:border-t',\n '[&_th]:border-b',\n '[&_th]:border-b-border-weak',\n '[&_tr]:border-none',\n '[&_tr:not(:last-child)_td]:border-b',\n '[&_tr:not(:last-child)_td]:border-b-border-weak',\n )}\n style={{\n width: table.getTotalSize(),\n }}\n >\n <TableHeader className=\"sticky top-0 z-10 backdrop-blur-xs\">\n {table.getHeaderGroups().map((headerGroup) => (\n <TableRow key={headerGroup.id}>\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 'relative h-9 font-semibold select-none',\n 'data-pinned:backdrop-blur-xs',\n 'data-pinned:bg-muted-weak',\n '[&>.cursor-col-resize]:last:opacity-0',\n '[&[data-pinned][data-last-col]]:border-border-weak',\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-weak',\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-text-positive 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-18\">\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\" color=\"muted\" size=\"icon\" 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\" color=\"muted\" size=\"icon\" onClick={() => table.previousPage()} disabled={!table.getCanPreviousPage()}>\n <span className=\"sr-only\">Go to previous page</span>\n <ChevronLeft />\n </Button>\n <Button variant=\"outline\" color=\"muted\" size=\"icon\" 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 color=\"muted\"\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,2 +1,2 @@
1
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,onChange:i,onValueChange:a,...o}){let s=n.default.useCallback(e=>{i?.(e),a?.(e.target.value)},[i,a]);return(0,r.jsx)(`textarea`,{"data-slot":`textarea`,className:t.cn(`border-border-weak caret-primary`,`flex min-h-16 w-full bg-transparent px-3 py-2`,`field-sizing-content`,`shadow-input rounded-md border`,`text-sm transition outline-none`,`placeholder:text-text-positive-muted`,`focus-visible:border-primary-strong`,`focus-visible:ring-primary-weak`,`focus-visible:ring-4`,`aria-invalid:ring-danger-weak`,`aria-invalid:border-danger-strong`,`disabled:cursor-not-allowed`,`disabled:opacity-50`,e),...o,onChange:s})}Object.defineProperty(exports,`Textarea`,{enumerable:!0,get:function(){return i}});
2
- //# sourceMappingURL=textarea-D6-c1GVU.cjs.map
2
+ //# sourceMappingURL=textarea-DCzz0uEq.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"textarea-D6-c1GVU.cjs","names":["React","cn"],"sources":["../packages/components/ui/textarea.tsx"],"sourcesContent":["'use client'\nimport React from 'react'\n\nimport { cn } from '@/lib/utils'\n\nfunction Textarea({\n className,\n onChange,\n onValueChange,\n ...props\n}: React.ComponentProps<'textarea'> & {\n onValueChange?: (value: string) => void\n}) {\n const handleChange = React.useCallback(\n (e: React.ChangeEvent<HTMLTextAreaElement>) => {\n onChange?.(e)\n onValueChange?.(e.target.value)\n },\n [onChange, onValueChange],\n )\n return (\n <textarea\n data-slot=\"textarea\"\n className={cn(\n 'border-border-weak caret-primary',\n 'flex min-h-16 w-full bg-transparent px-3 py-2',\n 'field-sizing-content',\n 'shadow-input rounded-md border',\n 'text-sm transition outline-none',\n 'placeholder:text-text-positive-muted',\n 'focus-visible:border-primary-strong',\n 'focus-visible:ring-primary-weak',\n 'focus-visible:ring-4',\n 'aria-invalid:ring-danger-weak',\n 'aria-invalid:border-danger-strong',\n 'disabled:cursor-not-allowed',\n 'disabled:opacity-50',\n className,\n )}\n {...props}\n onChange={handleChange}\n />\n )\n}\n\nexport { Textarea }\n"],"mappings":"kJAKA,SAAS,EAAS,CAChB,YACA,WACA,gBACA,GAAG,GAGF,CACD,IAAM,EAAeA,EAAAA,QAAM,YACxB,GAA8C,CAC7C,IAAW,GACX,IAAgB,EAAE,OAAO,QAE3B,CAAC,EAAU,IAEb,OACE,EAAA,EAAA,KAAC,WAAA,CACC,YAAU,WACV,UAAWC,EAAAA,GACT,mCACA,gDACA,uBACA,iCACA,kCACA,uCACA,sCACA,kCACA,uBACA,gCACA,oCACA,8BACA,sBACA,GAEF,GAAI,EACJ,SAAU"}
1
+ {"version":3,"file":"textarea-DCzz0uEq.cjs","names":["React","cn"],"sources":["../packages/components/ui/textarea.tsx"],"sourcesContent":["'use client'\nimport React from 'react'\n\nimport { cn } from '@/lib/utils'\n\nfunction Textarea({\n className,\n onChange,\n onValueChange,\n ...props\n}: React.ComponentProps<'textarea'> & {\n onValueChange?: (value: string) => void\n}) {\n const handleChange = React.useCallback(\n (e: React.ChangeEvent<HTMLTextAreaElement>) => {\n onChange?.(e)\n onValueChange?.(e.target.value)\n },\n [onChange, onValueChange],\n )\n return (\n <textarea\n data-slot=\"textarea\"\n className={cn(\n 'border-border-weak caret-primary',\n 'flex min-h-16 w-full bg-transparent px-3 py-2',\n 'field-sizing-content',\n 'shadow-input rounded-md border',\n 'text-sm transition outline-none',\n 'placeholder:text-text-positive-muted',\n 'focus-visible:border-primary-strong',\n 'focus-visible:ring-primary-weak',\n 'focus-visible:ring-4',\n 'aria-invalid:ring-danger-weak',\n 'aria-invalid:border-danger-strong',\n 'disabled:cursor-not-allowed',\n 'disabled:opacity-50',\n className,\n )}\n {...props}\n onChange={handleChange}\n />\n )\n}\n\nexport { Textarea }\n"],"mappings":"kJAKA,SAAS,EAAS,CAChB,YACA,WACA,gBACA,GAAG,GAGF,CACD,IAAM,EAAeA,EAAAA,QAAM,YACxB,GAA8C,CAC7C,IAAW,GACX,IAAgB,EAAE,OAAO,QAE3B,CAAC,EAAU,IAEb,OACE,EAAA,EAAA,KAAC,WAAA,CACC,YAAU,WACV,UAAWC,EAAAA,GACT,mCACA,gDACA,uBACA,iCACA,kCACA,uCACA,sCACA,kCACA,uBACA,gCACA,oCACA,8BACA,sBACA,GAEF,GAAI,EACJ,SAAU"}
@@ -1,2 +1,2 @@
1
1
  import{cn as e}from"./utils-D9AH0PUV.js";import t from"react";import{jsx as n}from"react/jsx-runtime";function r({className:r,onChange:i,onValueChange:a,...o}){let s=t.useCallback(e=>{i?.(e),a?.(e.target.value)},[i,a]);return n(`textarea`,{"data-slot":`textarea`,className:e(`border-border-weak caret-primary`,`flex min-h-16 w-full bg-transparent px-3 py-2`,`field-sizing-content`,`shadow-input rounded-md border`,`text-sm transition outline-none`,`placeholder:text-text-positive-muted`,`focus-visible:border-primary-strong`,`focus-visible:ring-primary-weak`,`focus-visible:ring-4`,`aria-invalid:ring-danger-weak`,`aria-invalid:border-danger-strong`,`disabled:cursor-not-allowed`,`disabled:opacity-50`,r),...o,onChange:s})}export{r as Textarea};
2
- //# sourceMappingURL=textarea-C20eiWs-.js.map
2
+ //# sourceMappingURL=textarea-hhVaJpsh.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"textarea-C20eiWs-.js","names":[],"sources":["../packages/components/ui/textarea.tsx"],"sourcesContent":["'use client'\nimport React from 'react'\n\nimport { cn } from '@/lib/utils'\n\nfunction Textarea({\n className,\n onChange,\n onValueChange,\n ...props\n}: React.ComponentProps<'textarea'> & {\n onValueChange?: (value: string) => void\n}) {\n const handleChange = React.useCallback(\n (e: React.ChangeEvent<HTMLTextAreaElement>) => {\n onChange?.(e)\n onValueChange?.(e.target.value)\n },\n [onChange, onValueChange],\n )\n return (\n <textarea\n data-slot=\"textarea\"\n className={cn(\n 'border-border-weak caret-primary',\n 'flex min-h-16 w-full bg-transparent px-3 py-2',\n 'field-sizing-content',\n 'shadow-input rounded-md border',\n 'text-sm transition outline-none',\n 'placeholder:text-text-positive-muted',\n 'focus-visible:border-primary-strong',\n 'focus-visible:ring-primary-weak',\n 'focus-visible:ring-4',\n 'aria-invalid:ring-danger-weak',\n 'aria-invalid:border-danger-strong',\n 'disabled:cursor-not-allowed',\n 'disabled:opacity-50',\n className,\n )}\n {...props}\n onChange={handleChange}\n />\n )\n}\n\nexport { Textarea }\n"],"mappings":"sGAKA,SAAS,EAAS,CAChB,YACA,WACA,gBACA,GAAG,GAGF,CACD,IAAM,EAAe,EAAM,YACxB,GAA8C,CAC7C,IAAW,GACX,IAAgB,EAAE,OAAO,QAE3B,CAAC,EAAU,IAEb,OACE,EAAC,WAAA,CACC,YAAU,WACV,UAAW,EACT,mCACA,gDACA,uBACA,iCACA,kCACA,uCACA,sCACA,kCACA,uBACA,gCACA,oCACA,8BACA,sBACA,GAEF,GAAI,EACJ,SAAU"}
1
+ {"version":3,"file":"textarea-hhVaJpsh.js","names":[],"sources":["../packages/components/ui/textarea.tsx"],"sourcesContent":["'use client'\nimport React from 'react'\n\nimport { cn } from '@/lib/utils'\n\nfunction Textarea({\n className,\n onChange,\n onValueChange,\n ...props\n}: React.ComponentProps<'textarea'> & {\n onValueChange?: (value: string) => void\n}) {\n const handleChange = React.useCallback(\n (e: React.ChangeEvent<HTMLTextAreaElement>) => {\n onChange?.(e)\n onValueChange?.(e.target.value)\n },\n [onChange, onValueChange],\n )\n return (\n <textarea\n data-slot=\"textarea\"\n className={cn(\n 'border-border-weak caret-primary',\n 'flex min-h-16 w-full bg-transparent px-3 py-2',\n 'field-sizing-content',\n 'shadow-input rounded-md border',\n 'text-sm transition outline-none',\n 'placeholder:text-text-positive-muted',\n 'focus-visible:border-primary-strong',\n 'focus-visible:ring-primary-weak',\n 'focus-visible:ring-4',\n 'aria-invalid:ring-danger-weak',\n 'aria-invalid:border-danger-strong',\n 'disabled:cursor-not-allowed',\n 'disabled:opacity-50',\n className,\n )}\n {...props}\n onChange={handleChange}\n />\n )\n}\n\nexport { Textarea }\n"],"mappings":"sGAKA,SAAS,EAAS,CAChB,YACA,WACA,gBACA,GAAG,GAGF,CACD,IAAM,EAAe,EAAM,YACxB,GAA8C,CAC7C,IAAW,GACX,IAAgB,EAAE,OAAO,QAE3B,CAAC,EAAU,IAEb,OACE,EAAC,WAAA,CACC,YAAU,WACV,UAAW,EACT,mCACA,gDACA,uBACA,iCACA,kCACA,uCACA,sCACA,kCACA,uBACA,gCACA,oCACA,8BACA,sBACA,GAEF,GAAI,EACJ,SAAU"}
@@ -0,0 +1,2 @@
1
+ import{cn as e}from"./utils-D9AH0PUV.js";import{cva as t}from"class-variance-authority";import{jsx as n}from"react/jsx-runtime";const r=t(`scroll-m-20 text-text-positive-strong tracking-tight`,{variants:{level:{1:`text-center text-4xl font-extrabold text-balance`,2:`border-b pb-2 text-3xl font-semibold first:mt-0`,3:`text-2xl font-semibold`,4:`text-xl font-semibold`,5:`text-lg font-semibold`,6:`text-base font-semibold`},default:{level:1}}}),i=({level:t=1,className:i,children:a})=>{let o=`h${t}`;return n(o,{className:e(r({level:t}),i),children:a})};export{i as Title};
2
+ //# sourceMappingURL=title-CD5GinA7.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"title-CxIwADiB.js","names":[],"sources":["../packages/components/typography/title.tsx"],"sourcesContent":["import type { JSX } from 'react'\nimport { cva } from 'class-variance-authority'\n\nimport { cn } from '@/lib/utils'\n\nconst titleVariants = cva('scroll-m-20 text-text-positive-strong tracking-tight', {\n variants: {\n level: {\n 1: 'text-center text-4xl font-extrabold text-balance',\n 2: 'border-b pb-2 text-3xl font-semibold first:mt-0',\n 3: 'text-2xl font-semibold',\n 4: 'text-xl font-semibold',\n 5: 'text-lg font-semibold',\n 6: 'text-base font-semibold',\n },\n default: {\n level: 1,\n },\n },\n})\n\ntype Props = {\n level?: 1 | 2 | 3 | 4 | 5 | 6\n className?: string\n children?: React.ReactNode\n}\n\nexport const Title = ({ level = 1, className, children }: Props) => {\n const Comp = `h${level}` as keyof JSX.IntrinsicElements\n return <Comp className={cn(titleVariants({ level }), className)}>{children}</Comp>\n}\n"],"mappings":"gIAKA,MAAM,EAAgB,EAAI,uDAAwD,CAChF,SAAU,CACR,MAAO,CACL,EAAG,mDACH,EAAG,kDACH,EAAG,yBACH,EAAG,wBACH,EAAG,wBACH,EAAG,2BAEL,QAAS,CACP,MAAO,MAWA,GAAS,CAAE,QAAQ,EAAG,YAAW,cAAsB,CAClE,IAAM,EAAO,IAAI,IACjB,OAAO,EAAC,EAAA,CAAK,UAAW,EAAG,EAAc,CAAE,UAAU,GAAa"}
1
+ {"version":3,"file":"title-CD5GinA7.js","names":[],"sources":["../packages/components/typography/title.tsx"],"sourcesContent":["import type { JSX } from 'react'\nimport { cva } from 'class-variance-authority'\n\nimport { cn } from '@/lib/utils'\n\nconst titleVariants = cva('scroll-m-20 text-text-positive-strong tracking-tight', {\n variants: {\n level: {\n 1: 'text-center text-4xl font-extrabold text-balance',\n 2: 'border-b pb-2 text-3xl font-semibold first:mt-0',\n 3: 'text-2xl font-semibold',\n 4: 'text-xl font-semibold',\n 5: 'text-lg font-semibold',\n 6: 'text-base font-semibold',\n },\n default: {\n level: 1,\n },\n },\n})\n\ntype Props = {\n level?: 1 | 2 | 3 | 4 | 5 | 6\n className?: string\n children?: React.ReactNode\n}\n\nexport const Title = ({ level = 1, className, children }: Props) => {\n const Comp = `h${level}` as keyof JSX.IntrinsicElements\n return <Comp className={cn(titleVariants({ level }), className)}>{children}</Comp>\n}\n"],"mappings":"gIAKA,MAAM,EAAgB,EAAI,uDAAwD,CAChF,SAAU,CACR,MAAO,CACL,EAAG,mDACH,EAAG,kDACH,EAAG,yBACH,EAAG,wBACH,EAAG,wBACH,EAAG,2BAEL,QAAS,CACP,MAAO,MAWA,GAAS,CAAE,QAAQ,EAAG,YAAW,cAAsB,CAClE,IAAM,EAAO,IAAI,IACjB,OAAO,EAAC,EAAA,CAAK,UAAW,EAAG,EAAc,CAAE,UAAU,GAAa"}
@@ -1,2 +1,2 @@
1
- const e=require(`./chunk-CUT6urMc.cjs`),t=require(`./utils-BsjVK5EW.cjs`),n=e.__toESM(require(`react/jsx-runtime`)),r=e.__toESM(require(`class-variance-authority`)),i=(0,r.cva)(`scroll-m-20 text-text-positive-strong tracking-tight`,{variants:{level:{1:`text-center text-4xl font-extrabold text-balance`,2:`border-b pb-2 text-3xl font-semibold first:mt-0`,3:`text-2xl font-semibold`,4:`text-xl font-semibold`,5:`text-lg font-semibold`,6:`text-base font-semibold`},default:{level:1}}}),a=({level:e=1,className:r,children:a})=>{let o=`h${e}`;return(0,n.jsx)(o,{className:t.cn(i({level:e}),r),children:a})};Object.defineProperty(exports,`Title`,{enumerable:!0,get:function(){return a}});
2
- //# sourceMappingURL=title-6Uosk2b4.cjs.map
1
+ const e=require(`./chunk-CUT6urMc.cjs`),t=require(`./utils-BsjVK5EW.cjs`),n=e.__toESM(require(`class-variance-authority`)),r=e.__toESM(require(`react/jsx-runtime`)),i=(0,n.cva)(`scroll-m-20 text-text-positive-strong tracking-tight`,{variants:{level:{1:`text-center text-4xl font-extrabold text-balance`,2:`border-b pb-2 text-3xl font-semibold first:mt-0`,3:`text-2xl font-semibold`,4:`text-xl font-semibold`,5:`text-lg font-semibold`,6:`text-base font-semibold`},default:{level:1}}}),a=({level:e=1,className:n,children:a})=>{let o=`h${e}`;return(0,r.jsx)(o,{className:t.cn(i({level:e}),n),children:a})};Object.defineProperty(exports,`Title`,{enumerable:!0,get:function(){return a}});
2
+ //# sourceMappingURL=title-DjjjRvCQ.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"title-6Uosk2b4.cjs","names":["cn"],"sources":["../packages/components/typography/title.tsx"],"sourcesContent":["import type { JSX } from 'react'\nimport { cva } from 'class-variance-authority'\n\nimport { cn } from '@/lib/utils'\n\nconst titleVariants = cva('scroll-m-20 text-text-positive-strong tracking-tight', {\n variants: {\n level: {\n 1: 'text-center text-4xl font-extrabold text-balance',\n 2: 'border-b pb-2 text-3xl font-semibold first:mt-0',\n 3: 'text-2xl font-semibold',\n 4: 'text-xl font-semibold',\n 5: 'text-lg font-semibold',\n 6: 'text-base font-semibold',\n },\n default: {\n level: 1,\n },\n },\n})\n\ntype Props = {\n level?: 1 | 2 | 3 | 4 | 5 | 6\n className?: string\n children?: React.ReactNode\n}\n\nexport const Title = ({ level = 1, className, children }: Props) => {\n const Comp = `h${level}` as keyof JSX.IntrinsicElements\n return <Comp className={cn(titleVariants({ level }), className)}>{children}</Comp>\n}\n"],"mappings":"qKAKM,GAAA,EAAA,EAAA,KAAoB,uDAAwD,CAChF,SAAU,CACR,MAAO,CACL,EAAG,mDACH,EAAG,kDACH,EAAG,yBACH,EAAG,wBACH,EAAG,wBACH,EAAG,2BAEL,QAAS,CACP,MAAO,MAWA,GAAS,CAAE,QAAQ,EAAG,YAAW,cAAsB,CAClE,IAAM,EAAO,IAAI,IACjB,OAAO,EAAA,EAAA,KAAC,EAAA,CAAK,UAAWA,EAAAA,GAAG,EAAc,CAAE,UAAU,GAAa"}
1
+ {"version":3,"file":"title-DjjjRvCQ.cjs","names":["cn"],"sources":["../packages/components/typography/title.tsx"],"sourcesContent":["import type { JSX } from 'react'\nimport { cva } from 'class-variance-authority'\n\nimport { cn } from '@/lib/utils'\n\nconst titleVariants = cva('scroll-m-20 text-text-positive-strong tracking-tight', {\n variants: {\n level: {\n 1: 'text-center text-4xl font-extrabold text-balance',\n 2: 'border-b pb-2 text-3xl font-semibold first:mt-0',\n 3: 'text-2xl font-semibold',\n 4: 'text-xl font-semibold',\n 5: 'text-lg font-semibold',\n 6: 'text-base font-semibold',\n },\n default: {\n level: 1,\n },\n },\n})\n\ntype Props = {\n level?: 1 | 2 | 3 | 4 | 5 | 6\n className?: string\n children?: React.ReactNode\n}\n\nexport const Title = ({ level = 1, className, children }: Props) => {\n const Comp = `h${level}` as keyof JSX.IntrinsicElements\n return <Comp className={cn(titleVariants({ level }), className)}>{children}</Comp>\n}\n"],"mappings":"qKAKM,GAAA,EAAA,EAAA,KAAoB,uDAAwD,CAChF,SAAU,CACR,MAAO,CACL,EAAG,mDACH,EAAG,kDACH,EAAG,yBACH,EAAG,wBACH,EAAG,wBACH,EAAG,2BAEL,QAAS,CACP,MAAO,MAWA,GAAS,CAAE,QAAQ,EAAG,YAAW,cAAsB,CAClE,IAAM,EAAO,IAAI,IACjB,OAAO,EAAA,EAAA,KAAC,EAAA,CAAK,UAAWA,EAAAA,GAAG,EAAc,CAAE,UAAU,GAAa"}
@@ -1,2 +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`)),a=e.__toESM(require(`class-variance-authority`)),o=(0,a.cva)(`inline-flex items-center justify-center gap-2 rounded-md text-sm font-medium hover:bg-muted hover:text-muted-foreground disabled:pointer-events-none disabled:opacity-50 data-[state=on]:bg-accent data-[state=on]:text-accent-foreground [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 [&_svg]:shrink-0 focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] outline-none transition-[color,box-shadow] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive whitespace-nowrap`,{variants:{variant:{default:`bg-transparent`,outline:`border border-input bg-transparent shadow-xs hover:bg-accent hover:text-accent-foreground`},size:{default:`h-9 px-2 min-w-9`,sm:`h-8 px-1.5 min-w-8`,lg:`h-10 px-2.5 min-w-10`}},defaultVariants:{variant:`default`,size:`default`}});function s({className:e,variant:n,size:a,...s}){return(0,r.jsx)(i.Toggle.Root,{"data-slot":`toggle`,className:t.cn(o({variant:n,size:a,className:e})),...s})}Object.defineProperty(exports,`Toggle`,{enumerable:!0,get:function(){return s}}),Object.defineProperty(exports,`toggleVariants`,{enumerable:!0,get:function(){return o}});
2
- //# sourceMappingURL=toggle-eio6M2Fc.cjs.map
1
+ const e=require(`./chunk-CUT6urMc.cjs`),t=require(`./utils-BsjVK5EW.cjs`),n=e.__toESM(require(`react`)),r=e.__toESM(require(`radix-ui`)),i=e.__toESM(require(`class-variance-authority`)),a=e.__toESM(require(`react/jsx-runtime`)),o=(0,i.cva)(`inline-flex items-center justify-center gap-2 rounded-md text-sm font-medium hover:bg-muted hover:text-muted-foreground disabled:pointer-events-none disabled:opacity-50 data-[state=on]:bg-accent data-[state=on]:text-accent-foreground [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 [&_svg]:shrink-0 focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] outline-none transition-[color,box-shadow] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive whitespace-nowrap`,{variants:{variant:{default:`bg-transparent`,outline:`border border-input bg-transparent shadow-xs hover:bg-accent hover:text-accent-foreground`},size:{default:`h-9 px-2 min-w-9`,sm:`h-8 px-1.5 min-w-8`,lg:`h-10 px-2.5 min-w-10`}},defaultVariants:{variant:`default`,size:`default`}});function s({className:e,variant:n,size:i,...s}){return(0,a.jsx)(r.Toggle.Root,{"data-slot":`toggle`,className:t.cn(o({variant:n,size:i,className:e})),...s})}Object.defineProperty(exports,`Toggle`,{enumerable:!0,get:function(){return s}}),Object.defineProperty(exports,`toggleVariants`,{enumerable:!0,get:function(){return o}});
2
+ //# sourceMappingURL=toggle-62dJdAzP.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"toggle-eio6M2Fc.cjs","names":["TogglePrimitive","cn"],"sources":["../packages/components/ui/toggle.tsx"],"sourcesContent":["'use client'\nimport React from 'react'\nimport { Toggle as TogglePrimitive } from 'radix-ui'\nimport { cva, type VariantProps } from 'class-variance-authority'\n\nimport { cn } from '@/lib/utils'\n\nconst toggleVariants = cva(\n \"inline-flex items-center justify-center gap-2 rounded-md text-sm font-medium hover:bg-muted hover:text-muted-foreground disabled:pointer-events-none disabled:opacity-50 data-[state=on]:bg-accent data-[state=on]:text-accent-foreground [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 [&_svg]:shrink-0 focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] outline-none transition-[color,box-shadow] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive whitespace-nowrap\",\n {\n variants: {\n variant: {\n default: 'bg-transparent',\n outline: 'border border-input bg-transparent shadow-xs hover:bg-accent hover:text-accent-foreground',\n },\n size: {\n default: 'h-9 px-2 min-w-9',\n sm: 'h-8 px-1.5 min-w-8',\n lg: 'h-10 px-2.5 min-w-10',\n },\n },\n defaultVariants: {\n variant: 'default',\n size: 'default',\n },\n },\n)\n\nfunction Toggle({ className, variant, size, ...props }: React.ComponentProps<typeof TogglePrimitive.Root> & VariantProps<typeof toggleVariants>) {\n return <TogglePrimitive.Root data-slot=\"toggle\" className={cn(toggleVariants({ variant, size, className }))} {...props} />\n}\n\n// eslint-disable-next-line react-refresh/only-export-components\nexport { Toggle, toggleVariants }\n"],"mappings":"oOAOM,GAAA,EAAA,EAAA,KACJ,gjBACA,CACE,SAAU,CACR,QAAS,CACP,QAAS,iBACT,QAAS,6FAEX,KAAM,CACJ,QAAS,mBACT,GAAI,qBACJ,GAAI,yBAGR,gBAAiB,CACf,QAAS,UACT,KAAM,aAKZ,SAAS,EAAO,CAAE,YAAW,UAAS,OAAM,GAAG,GAAkG,CAC/I,OAAO,EAAA,EAAA,KAACA,EAAAA,OAAgB,KAAA,CAAK,YAAU,SAAS,UAAWC,EAAAA,GAAG,EAAe,CAAE,UAAS,OAAM,eAAe,GAAI"}
1
+ {"version":3,"file":"toggle-62dJdAzP.cjs","names":["TogglePrimitive","cn"],"sources":["../packages/components/ui/toggle.tsx"],"sourcesContent":["'use client'\nimport React from 'react'\nimport { Toggle as TogglePrimitive } from 'radix-ui'\nimport { cva, type VariantProps } from 'class-variance-authority'\n\nimport { cn } from '@/lib/utils'\n\nconst toggleVariants = cva(\n \"inline-flex items-center justify-center gap-2 rounded-md text-sm font-medium hover:bg-muted hover:text-muted-foreground disabled:pointer-events-none disabled:opacity-50 data-[state=on]:bg-accent data-[state=on]:text-accent-foreground [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 [&_svg]:shrink-0 focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] outline-none transition-[color,box-shadow] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive whitespace-nowrap\",\n {\n variants: {\n variant: {\n default: 'bg-transparent',\n outline: 'border border-input bg-transparent shadow-xs hover:bg-accent hover:text-accent-foreground',\n },\n size: {\n default: 'h-9 px-2 min-w-9',\n sm: 'h-8 px-1.5 min-w-8',\n lg: 'h-10 px-2.5 min-w-10',\n },\n },\n defaultVariants: {\n variant: 'default',\n size: 'default',\n },\n },\n)\n\nfunction Toggle({ className, variant, size, ...props }: React.ComponentProps<typeof TogglePrimitive.Root> & VariantProps<typeof toggleVariants>) {\n return <TogglePrimitive.Root data-slot=\"toggle\" className={cn(toggleVariants({ variant, size, className }))} {...props} />\n}\n\n// eslint-disable-next-line react-refresh/only-export-components\nexport { Toggle, toggleVariants }\n"],"mappings":"oOAOM,GAAA,EAAA,EAAA,KACJ,gjBACA,CACE,SAAU,CACR,QAAS,CACP,QAAS,iBACT,QAAS,6FAEX,KAAM,CACJ,QAAS,mBACT,GAAI,qBACJ,GAAI,yBAGR,gBAAiB,CACf,QAAS,UACT,KAAM,aAKZ,SAAS,EAAO,CAAE,YAAW,UAAS,OAAM,GAAG,GAAkG,CAC/I,OAAO,EAAA,EAAA,KAACA,EAAAA,OAAgB,KAAA,CAAK,YAAU,SAAS,UAAWC,EAAAA,GAAG,EAAe,CAAE,UAAS,OAAM,eAAe,GAAI"}
@@ -1,2 +1,2 @@
1
- import{cn as e}from"./utils-D9AH0PUV.js";import t from"react";import{jsx as n}from"react/jsx-runtime";import{Toggle as r}from"radix-ui";import{cva as i}from"class-variance-authority";const a=i(`inline-flex items-center justify-center gap-2 rounded-md text-sm font-medium hover:bg-muted hover:text-muted-foreground disabled:pointer-events-none disabled:opacity-50 data-[state=on]:bg-accent data-[state=on]:text-accent-foreground [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 [&_svg]:shrink-0 focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] outline-none transition-[color,box-shadow] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive whitespace-nowrap`,{variants:{variant:{default:`bg-transparent`,outline:`border border-input bg-transparent shadow-xs hover:bg-accent hover:text-accent-foreground`},size:{default:`h-9 px-2 min-w-9`,sm:`h-8 px-1.5 min-w-8`,lg:`h-10 px-2.5 min-w-10`}},defaultVariants:{variant:`default`,size:`default`}});function o({className:t,variant:i,size:o,...s}){return n(r.Root,{"data-slot":`toggle`,className:e(a({variant:i,size:o,className:t})),...s})}export{o as Toggle,a as toggleVariants};
2
- //# sourceMappingURL=toggle-BNtw9z70.js.map
1
+ import{cn as e}from"./utils-D9AH0PUV.js";import t from"react";import{Toggle as n}from"radix-ui";import{cva as r}from"class-variance-authority";import{jsx as i}from"react/jsx-runtime";const a=r(`inline-flex items-center justify-center gap-2 rounded-md text-sm font-medium hover:bg-muted hover:text-muted-foreground disabled:pointer-events-none disabled:opacity-50 data-[state=on]:bg-accent data-[state=on]:text-accent-foreground [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 [&_svg]:shrink-0 focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] outline-none transition-[color,box-shadow] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive whitespace-nowrap`,{variants:{variant:{default:`bg-transparent`,outline:`border border-input bg-transparent shadow-xs hover:bg-accent hover:text-accent-foreground`},size:{default:`h-9 px-2 min-w-9`,sm:`h-8 px-1.5 min-w-8`,lg:`h-10 px-2.5 min-w-10`}},defaultVariants:{variant:`default`,size:`default`}});function o({className:t,variant:r,size:o,...s}){return i(n.Root,{"data-slot":`toggle`,className:e(a({variant:r,size:o,className:t})),...s})}export{o as Toggle,a as toggleVariants};
2
+ //# sourceMappingURL=toggle-CRvl17br.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"toggle-BNtw9z70.js","names":["Toggle","TogglePrimitive"],"sources":["../packages/components/ui/toggle.tsx"],"sourcesContent":["'use client'\nimport React from 'react'\nimport { Toggle as TogglePrimitive } from 'radix-ui'\nimport { cva, type VariantProps } from 'class-variance-authority'\n\nimport { cn } from '@/lib/utils'\n\nconst toggleVariants = cva(\n \"inline-flex items-center justify-center gap-2 rounded-md text-sm font-medium hover:bg-muted hover:text-muted-foreground disabled:pointer-events-none disabled:opacity-50 data-[state=on]:bg-accent data-[state=on]:text-accent-foreground [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 [&_svg]:shrink-0 focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] outline-none transition-[color,box-shadow] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive whitespace-nowrap\",\n {\n variants: {\n variant: {\n default: 'bg-transparent',\n outline: 'border border-input bg-transparent shadow-xs hover:bg-accent hover:text-accent-foreground',\n },\n size: {\n default: 'h-9 px-2 min-w-9',\n sm: 'h-8 px-1.5 min-w-8',\n lg: 'h-10 px-2.5 min-w-10',\n },\n },\n defaultVariants: {\n variant: 'default',\n size: 'default',\n },\n },\n)\n\nfunction Toggle({ className, variant, size, ...props }: React.ComponentProps<typeof TogglePrimitive.Root> & VariantProps<typeof toggleVariants>) {\n return <TogglePrimitive.Root data-slot=\"toggle\" className={cn(toggleVariants({ variant, size, className }))} {...props} />\n}\n\n// eslint-disable-next-line react-refresh/only-export-components\nexport { Toggle, toggleVariants }\n"],"mappings":"uLAOA,MAAM,EAAiB,EACrB,gjBACA,CACE,SAAU,CACR,QAAS,CACP,QAAS,iBACT,QAAS,6FAEX,KAAM,CACJ,QAAS,mBACT,GAAI,qBACJ,GAAI,yBAGR,gBAAiB,CACf,QAAS,UACT,KAAM,aAKZ,SAASA,EAAO,CAAE,YAAW,UAAS,OAAM,GAAG,GAAkG,CAC/I,OAAO,EAACC,EAAgB,KAAA,CAAK,YAAU,SAAS,UAAW,EAAG,EAAe,CAAE,UAAS,OAAM,eAAe,GAAI"}
1
+ {"version":3,"file":"toggle-CRvl17br.js","names":["Toggle","TogglePrimitive"],"sources":["../packages/components/ui/toggle.tsx"],"sourcesContent":["'use client'\nimport React from 'react'\nimport { Toggle as TogglePrimitive } from 'radix-ui'\nimport { cva, type VariantProps } from 'class-variance-authority'\n\nimport { cn } from '@/lib/utils'\n\nconst toggleVariants = cva(\n \"inline-flex items-center justify-center gap-2 rounded-md text-sm font-medium hover:bg-muted hover:text-muted-foreground disabled:pointer-events-none disabled:opacity-50 data-[state=on]:bg-accent data-[state=on]:text-accent-foreground [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 [&_svg]:shrink-0 focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] outline-none transition-[color,box-shadow] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive whitespace-nowrap\",\n {\n variants: {\n variant: {\n default: 'bg-transparent',\n outline: 'border border-input bg-transparent shadow-xs hover:bg-accent hover:text-accent-foreground',\n },\n size: {\n default: 'h-9 px-2 min-w-9',\n sm: 'h-8 px-1.5 min-w-8',\n lg: 'h-10 px-2.5 min-w-10',\n },\n },\n defaultVariants: {\n variant: 'default',\n size: 'default',\n },\n },\n)\n\nfunction Toggle({ className, variant, size, ...props }: React.ComponentProps<typeof TogglePrimitive.Root> & VariantProps<typeof toggleVariants>) {\n return <TogglePrimitive.Root data-slot=\"toggle\" className={cn(toggleVariants({ variant, size, className }))} {...props} />\n}\n\n// eslint-disable-next-line react-refresh/only-export-components\nexport { Toggle, toggleVariants }\n"],"mappings":"uLAOA,MAAM,EAAiB,EACrB,gjBACA,CACE,SAAU,CACR,QAAS,CACP,QAAS,iBACT,QAAS,6FAEX,KAAM,CACJ,QAAS,mBACT,GAAI,qBACJ,GAAI,yBAGR,gBAAiB,CACf,QAAS,UACT,KAAM,aAKZ,SAASA,EAAO,CAAE,YAAW,UAAS,OAAM,GAAG,GAAkG,CAC/I,OAAO,EAACC,EAAgB,KAAA,CAAK,YAAU,SAAS,UAAW,EAAG,EAAe,CAAE,UAAS,OAAM,eAAe,GAAI"}
@@ -1,7 +1,7 @@
1
1
  import React from "react";
2
- import * as react_jsx_runtime202 from "react/jsx-runtime";
3
2
  import { Toggle } from "radix-ui";
4
3
  import { VariantProps } from "class-variance-authority";
4
+ import * as react_jsx_runtime231 from "react/jsx-runtime";
5
5
  import * as class_variance_authority_types5 from "class-variance-authority/types";
6
6
 
7
7
  //#region packages/components/ui/toggle.d.ts
@@ -14,7 +14,7 @@ declare function Toggle$1({
14
14
  variant,
15
15
  size,
16
16
  ...props
17
- }: React.ComponentProps<typeof Toggle.Root> & VariantProps<typeof toggleVariants>): react_jsx_runtime202.JSX.Element;
17
+ }: React.ComponentProps<typeof Toggle.Root> & VariantProps<typeof toggleVariants>): react_jsx_runtime231.JSX.Element;
18
18
  //#endregion
19
19
  export { Toggle$1 as Toggle, toggleVariants };
20
- //# sourceMappingURL=toggle-Xkrjwemb.d.ts.map
20
+ //# sourceMappingURL=toggle-CXaM4Z5s.d.ts.map
@@ -1,4 +1,4 @@
1
- import * as react_jsx_runtime234 from "react/jsx-runtime";
1
+ import * as react_jsx_runtime227 from "react/jsx-runtime";
2
2
  import React from "react";
3
3
  import * as class_variance_authority_types5 from "class-variance-authority/types";
4
4
  import { VariantProps } from "class-variance-authority";
@@ -14,7 +14,7 @@ declare function Toggle$1({
14
14
  variant,
15
15
  size,
16
16
  ...props
17
- }: React.ComponentProps<typeof Toggle.Root> & VariantProps<typeof toggleVariants>): react_jsx_runtime234.JSX.Element;
17
+ }: React.ComponentProps<typeof Toggle.Root> & VariantProps<typeof toggleVariants>): react_jsx_runtime227.JSX.Element;
18
18
  //#endregion
19
19
  export { Toggle$1 as Toggle, toggleVariants };
20
- //# sourceMappingURL=toggle-DvJddJPj.d.cts.map
20
+ //# sourceMappingURL=toggle-CeboRSo7.d.cts.map
@@ -1,4 +1,4 @@
1
- import * as react_jsx_runtime226 from "react/jsx-runtime";
1
+ import * as react_jsx_runtime230 from "react/jsx-runtime";
2
2
  import React from "react";
3
3
  import { Tooltip } from "radix-ui";
4
4
 
@@ -6,19 +6,19 @@ import { Tooltip } from "radix-ui";
6
6
  declare function TooltipProvider({
7
7
  delayDuration,
8
8
  ...props
9
- }: React.ComponentProps<typeof Tooltip.Provider>): react_jsx_runtime226.JSX.Element;
9
+ }: React.ComponentProps<typeof Tooltip.Provider>): react_jsx_runtime230.JSX.Element;
10
10
  declare function Tooltip$1({
11
11
  ...props
12
- }: React.ComponentProps<typeof Tooltip.Root>): react_jsx_runtime226.JSX.Element;
12
+ }: React.ComponentProps<typeof Tooltip.Root>): react_jsx_runtime230.JSX.Element;
13
13
  declare function TooltipTrigger({
14
14
  ...props
15
- }: React.ComponentProps<typeof Tooltip.Trigger>): react_jsx_runtime226.JSX.Element;
15
+ }: React.ComponentProps<typeof Tooltip.Trigger>): react_jsx_runtime230.JSX.Element;
16
16
  declare function TooltipContent({
17
17
  className,
18
18
  sideOffset,
19
19
  children,
20
20
  ...props
21
- }: React.ComponentProps<typeof Tooltip.Content>): react_jsx_runtime226.JSX.Element;
21
+ }: React.ComponentProps<typeof Tooltip.Content>): react_jsx_runtime230.JSX.Element;
22
22
  //#endregion
23
23
  export { Tooltip$1 as Tooltip, TooltipContent, TooltipProvider, TooltipTrigger };
24
- //# sourceMappingURL=tooltip-D3FsnWny.d.cts.map
24
+ //# sourceMappingURL=tooltip-Ccg2G_fB.d.cts.map
@@ -1,24 +1,24 @@
1
1
  import React from "react";
2
- import * as react_jsx_runtime173 from "react/jsx-runtime";
3
2
  import { Tooltip } from "radix-ui";
3
+ import * as react_jsx_runtime227 from "react/jsx-runtime";
4
4
 
5
5
  //#region packages/components/ui/tooltip.d.ts
6
6
  declare function TooltipProvider({
7
7
  delayDuration,
8
8
  ...props
9
- }: React.ComponentProps<typeof Tooltip.Provider>): react_jsx_runtime173.JSX.Element;
9
+ }: React.ComponentProps<typeof Tooltip.Provider>): react_jsx_runtime227.JSX.Element;
10
10
  declare function Tooltip$1({
11
11
  ...props
12
- }: React.ComponentProps<typeof Tooltip.Root>): react_jsx_runtime173.JSX.Element;
12
+ }: React.ComponentProps<typeof Tooltip.Root>): react_jsx_runtime227.JSX.Element;
13
13
  declare function TooltipTrigger({
14
14
  ...props
15
- }: React.ComponentProps<typeof Tooltip.Trigger>): react_jsx_runtime173.JSX.Element;
15
+ }: React.ComponentProps<typeof Tooltip.Trigger>): react_jsx_runtime227.JSX.Element;
16
16
  declare function TooltipContent({
17
17
  className,
18
18
  sideOffset,
19
19
  children,
20
20
  ...props
21
- }: React.ComponentProps<typeof Tooltip.Content>): react_jsx_runtime173.JSX.Element;
21
+ }: React.ComponentProps<typeof Tooltip.Content>): react_jsx_runtime227.JSX.Element;
22
22
  //#endregion
23
23
  export { Tooltip$1 as Tooltip, TooltipContent, TooltipProvider, TooltipTrigger };
24
- //# sourceMappingURL=tooltip-Bt6pSZ4o.d.ts.map
24
+ //# sourceMappingURL=tooltip-D0uAyaLw.d.ts.map
@@ -1,2 +1,2 @@
1
- import{cn as e}from"./utils-D9AH0PUV.js";import t from"react";import{jsx as n,jsxs as r}from"react/jsx-runtime";import{Tooltip as i}from"radix-ui";function a({delayDuration:e=0,...t}){return n(i.Provider,{"data-slot":`tooltip-provider`,delayDuration:e,...t})}function o({...e}){return n(a,{children:n(i.Root,{"data-slot":`tooltip`,...e})})}function s({...e}){return n(i.Trigger,{"data-slot":`tooltip-trigger`,...e})}function c({className:t,sideOffset:a=0,children:o,...s}){return n(i.Portal,{children:r(i.Content,{"data-slot":`tooltip-content`,sideOffset:a,className:e(`bg-foreground text-text-negative-intense shadow-dropdown outline-none`,`animate-in fade-in-0 zoom-in-95`,`data-[state=closed]:animate-out`,`data-[state=closed]:fade-out-0`,`data-[state=closed]:zoom-out-95`,`data-[side=bottom]:slide-in-from-top-2`,`data-[side=left]:slide-in-from-right-2`,`data-[side=right]:slide-in-from-left-2`,`data-[side=top]:slide-in-from-bottom-2`,`z-50 w-fit`,`origin-(--radix-tooltip-content-transform-origin)`,`rounded-lg px-3 py-1.5 text-xs text-balance`,t),...s,children:[o,n(i.Arrow,{className:`bg-foreground fill-foreground text-secondary z-50 size-2.5 translate-y-[calc(-50%_-_2px)] rotate-45 rounded-xs`})]})})}export{o as Tooltip,c as TooltipContent,a as TooltipProvider,s as TooltipTrigger};
2
- //# sourceMappingURL=tooltip-DkB0gnp9.js.map
1
+ import{cn as e}from"./utils-D9AH0PUV.js";import t from"react";import{Tooltip as n}from"radix-ui";import{jsx as r,jsxs as i}from"react/jsx-runtime";function a({delayDuration:e=0,...t}){return r(n.Provider,{"data-slot":`tooltip-provider`,delayDuration:e,...t})}function o({...e}){return r(a,{children:r(n.Root,{"data-slot":`tooltip`,...e})})}function s({...e}){return r(n.Trigger,{"data-slot":`tooltip-trigger`,...e})}function c({className:t,sideOffset:a=0,children:o,...s}){return r(n.Portal,{children:i(n.Content,{"data-slot":`tooltip-content`,sideOffset:a,className:e(`bg-foreground text-text-negative-intense shadow-dropdown outline-none`,`animate-in fade-in-0 zoom-in-95`,`data-[state=closed]:animate-out`,`data-[state=closed]:fade-out-0`,`data-[state=closed]:zoom-out-95`,`data-[side=bottom]:slide-in-from-top-2`,`data-[side=left]:slide-in-from-right-2`,`data-[side=right]:slide-in-from-left-2`,`data-[side=top]:slide-in-from-bottom-2`,`z-50 w-fit`,`origin-(--radix-tooltip-content-transform-origin)`,`rounded-lg px-3 py-1.5 text-xs text-balance`,t),...s,children:[o,r(n.Arrow,{className:`bg-foreground fill-foreground text-secondary z-50 size-2.5 translate-y-[calc(-50%_-_2px)] rotate-45 rounded-xs`})]})})}export{o as Tooltip,c as TooltipContent,a as TooltipProvider,s as TooltipTrigger};
2
+ //# sourceMappingURL=tooltip-DYs9DCpH.js.map