@customafk/lunas-ui 0.0.69 → 0.0.70

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 (565) hide show
  1. package/dist/{add-new-D3b8hc2C.cjs → add-new-BaA0yy6U.cjs} +2 -2
  2. package/dist/{add-new-D3b8hc2C.cjs.map → add-new-BaA0yy6U.cjs.map} +1 -1
  3. package/dist/{add-new-BFDOXej7.js → add-new-_5opEbrI.js} +2 -2
  4. package/dist/{add-new-BFDOXej7.js.map → add-new-_5opEbrI.js.map} +1 -1
  5. package/dist/alert-dialog-DcQKEgVC.js +2 -0
  6. package/dist/alert-dialog-DcQKEgVC.js.map +1 -0
  7. package/dist/alert-dialog-brXudt77.cjs +2 -0
  8. package/dist/alert-dialog-brXudt77.cjs.map +1 -0
  9. package/dist/{avatar-Ch6Lx2oc.cjs → avatar-B4pklWJt.cjs} +2 -2
  10. package/dist/{avatar-Ch6Lx2oc.cjs.map → avatar-B4pklWJt.cjs.map} +1 -1
  11. package/dist/avatar-iX5Jhj8E.js +2 -0
  12. package/dist/{avatar-ClIgQDJO.js.map → avatar-iX5Jhj8E.js.map} +1 -1
  13. package/dist/{badge-BMXpbMfX.cjs → badge-CsA-JCDX.cjs} +2 -2
  14. package/dist/{badge-BMXpbMfX.cjs.map → badge-CsA-JCDX.cjs.map} +1 -1
  15. package/dist/{badge-6RQPy3Eo.js → badge-tjlLdDGl.js} +2 -2
  16. package/dist/{badge-6RQPy3Eo.js.map → badge-tjlLdDGl.js.map} +1 -1
  17. package/dist/button-CuV2l4ge.cjs +2 -0
  18. package/dist/button-CuV2l4ge.cjs.map +1 -0
  19. package/dist/button-D4wpGvjJ.d.cts +56 -0
  20. package/dist/button-DhQJ9Ey8.js +2 -0
  21. package/dist/button-DhQJ9Ey8.js.map +1 -0
  22. package/dist/button-HlUz4N7O.d.ts +56 -0
  23. package/dist/button-variants-CCiseNSC.cjs +2 -0
  24. package/dist/button-variants-CCiseNSC.cjs.map +1 -0
  25. package/dist/button-variants-Y1GTBayz.js +2 -0
  26. package/dist/button-variants-Y1GTBayz.js.map +1 -0
  27. package/dist/calendar-DGqBIV7n.cjs +2 -0
  28. package/dist/calendar-DGqBIV7n.cjs.map +1 -0
  29. package/dist/calendar-DdIUj5Dk.js +2 -0
  30. package/dist/calendar-DdIUj5Dk.js.map +1 -0
  31. package/dist/{card-BFYPY2aR.js → card-DOv2mZU8.js} +1 -1
  32. package/dist/{card-BFYPY2aR.js.map → card-DOv2mZU8.js.map} +1 -1
  33. package/dist/{card-RJvu27Ck.cjs → card-Pnxpehsp.cjs} +1 -1
  34. package/dist/{card-RJvu27Ck.cjs.map → card-Pnxpehsp.cjs.map} +1 -1
  35. package/dist/cards/grid-product-card.cjs +1 -1
  36. package/dist/cards/grid-product-card.cjs.map +1 -1
  37. package/dist/cards/grid-product-card.js +1 -1
  38. package/dist/cards/grid-product-card.js.map +1 -1
  39. package/dist/cards/product-card.cjs +1 -1
  40. package/dist/cards/product-card.cjs.map +1 -1
  41. package/dist/cards/product-card.js +1 -1
  42. package/dist/cards/product-card.js.map +1 -1
  43. package/dist/cards/simple-card.cjs +1 -1
  44. package/dist/cards/simple-card.js +1 -1
  45. package/dist/{command-Cbs1WmSg.d.cts → command-BMRkHZyz.d.ts} +12 -12
  46. package/dist/{command-DEBqV5of.cjs → command-BaW_SRkQ.cjs} +2 -2
  47. package/dist/{command-DEBqV5of.cjs.map → command-BaW_SRkQ.cjs.map} +1 -1
  48. package/dist/{command-BNKI-kLT.js → command-CRNFM6Sb.js} +2 -2
  49. package/dist/{command-BNKI-kLT.js.map → command-CRNFM6Sb.js.map} +1 -1
  50. package/dist/{command-B2sNWZwT.d.ts → command-Ud5n88hj.d.cts} +12 -12
  51. package/dist/data-display/country.cjs +1 -1
  52. package/dist/data-display/country.d.ts +1 -1
  53. package/dist/data-display/country.js +1 -1
  54. package/dist/data-display/data-list.cjs +1 -1
  55. package/dist/data-display/data-list.js +1 -1
  56. package/dist/data-display/date-tooltip.cjs +1 -1
  57. package/dist/data-display/date-tooltip.js +1 -1
  58. package/dist/data-display/date.cjs +1 -1
  59. package/dist/data-display/date.js +1 -1
  60. package/dist/data-display/empty.cjs +1 -1
  61. package/dist/data-display/empty.d.cts +2 -2
  62. package/dist/data-display/empty.d.ts +2 -2
  63. package/dist/data-display/empty.js +1 -1
  64. package/dist/data-display/name.cjs +1 -1
  65. package/dist/data-display/name.js +1 -1
  66. package/dist/data-display/phone-number.cjs +1 -1
  67. package/dist/data-display/phone-number.js +1 -1
  68. package/dist/data-display/role-badge.cjs +1 -1
  69. package/dist/data-display/role-badge.d.ts +1 -1
  70. package/dist/data-display/role-badge.js +1 -1
  71. package/dist/data-display/statistic.cjs +1 -1
  72. package/dist/data-display/statistic.d.cts +2 -2
  73. package/dist/data-display/statistic.d.ts +2 -2
  74. package/dist/data-display/statistic.js +1 -1
  75. package/dist/data-display/user.cjs +1 -1
  76. package/dist/data-display/user.js +1 -1
  77. package/dist/{date-wo9LyN6l.cjs → date-2wue8L-1.cjs} +2 -2
  78. package/dist/{date-wo9LyN6l.cjs.map → date-2wue8L-1.cjs.map} +1 -1
  79. package/dist/{date-DWxL795U.js → date-BuPl--Fc.js} +2 -2
  80. package/dist/{date-DWxL795U.js.map → date-BuPl--Fc.js.map} +1 -1
  81. package/dist/{dialog-B7_YVIxQ.d.ts → dialog-DA0--feR.d.cts} +12 -12
  82. package/dist/{dialog-Cefxay6y.cjs → dialog-DGbWt3A4.cjs} +2 -2
  83. package/dist/{dialog-Cefxay6y.cjs.map → dialog-DGbWt3A4.cjs.map} +1 -1
  84. package/dist/{dialog-BXL-7iaS.js → dialog-SbX5GvMK.js} +2 -2
  85. package/dist/{dialog-BXL-7iaS.js.map → dialog-SbX5GvMK.js.map} +1 -1
  86. package/dist/{dialog-BlSmlsZc.d.cts → dialog-tmRDUkkV.d.ts} +12 -12
  87. package/dist/dialogs/confirm-dialog.cjs +1 -1
  88. package/dist/dialogs/confirm-dialog.cjs.map +1 -1
  89. package/dist/dialogs/confirm-dialog.js +1 -1
  90. package/dist/dialogs/confirm-dialog.js.map +1 -1
  91. package/dist/dialogs/detail-dialog/component/sidebar.cjs +1 -1
  92. package/dist/dialogs/detail-dialog/component/sidebar.d.cts +31 -31
  93. package/dist/dialogs/detail-dialog/component/sidebar.d.ts +31 -31
  94. package/dist/dialogs/detail-dialog/component/sidebar.js +1 -1
  95. package/dist/dialogs/detail-dialog/index.cjs +1 -1
  96. package/dist/dialogs/detail-dialog/index.cjs.map +1 -1
  97. package/dist/dialogs/detail-dialog/index.js +1 -1
  98. package/dist/dialogs/detail-dialog/index.js.map +1 -1
  99. package/dist/dialogs/error-dialog.cjs +1 -1
  100. package/dist/dialogs/error-dialog.js +1 -1
  101. package/dist/dialogs/form-dialog.cjs +1 -1
  102. package/dist/dialogs/form-dialog.cjs.map +1 -1
  103. package/dist/dialogs/form-dialog.d.cts +2 -2
  104. package/dist/dialogs/form-dialog.d.ts +2 -2
  105. package/dist/dialogs/form-dialog.js +1 -1
  106. package/dist/dialogs/form-dialog.js.map +1 -1
  107. package/dist/dialogs/loading-dialog.cjs +1 -1
  108. package/dist/dialogs/loading-dialog.js +1 -1
  109. package/dist/dist-CkzytVha.js +2 -0
  110. package/dist/dist-CkzytVha.js.map +1 -0
  111. package/dist/dist-D0uO1qIz.cjs +2 -0
  112. package/dist/dist-D0uO1qIz.cjs.map +1 -0
  113. package/dist/{drawer-oeYvUxv8.cjs → drawer-CaX-sUvZ.cjs} +1 -1
  114. package/dist/{drawer-oeYvUxv8.cjs.map → drawer-CaX-sUvZ.cjs.map} +1 -1
  115. package/dist/{drawer-D6qggBnW.js → drawer-hi51Beoq.js} +1 -1
  116. package/dist/{drawer-D6qggBnW.js.map → drawer-hi51Beoq.js.map} +1 -1
  117. package/dist/{dropdown-menu-Bj39Rmxd.js → dropdown-menu-DS1A05D0.js} +2 -2
  118. package/dist/{dropdown-menu-Bj39Rmxd.js.map → dropdown-menu-DS1A05D0.js.map} +1 -1
  119. package/dist/{dropdown-menu-SNcBwTOA.cjs → dropdown-menu-Djtt8w9D.cjs} +2 -2
  120. package/dist/{dropdown-menu-SNcBwTOA.cjs.map → dropdown-menu-Djtt8w9D.cjs.map} +1 -1
  121. package/dist/error-dialog-BeYJOtSH.js +2 -0
  122. package/dist/{error-dialog-m_6k921_.js.map → error-dialog-BeYJOtSH.js.map} +1 -1
  123. package/dist/error-dialog-DMbJhWyk.cjs +2 -0
  124. package/dist/{error-dialog-1xq8gXX_.cjs.map → error-dialog-DMbJhWyk.cjs.map} +1 -1
  125. package/dist/{flex-BZHWRUkz.js → flex-D6XrXRQW.js} +2 -2
  126. package/dist/{flex-BZHWRUkz.js.map → flex-D6XrXRQW.js.map} +1 -1
  127. package/dist/{flex-DMgD86BT.cjs → flex-DS4mxjtf.cjs} +2 -2
  128. package/dist/{flex-DMgD86BT.cjs.map → flex-DS4mxjtf.cjs.map} +1 -1
  129. package/dist/form-BT1TbgK6.js +2 -0
  130. package/dist/{form-B-KLKj5u.js.map → form-BT1TbgK6.js.map} +1 -1
  131. package/dist/{form-CtpHZKmh.cjs → form-DyH5iWq7.cjs} +2 -2
  132. package/dist/{form-CtpHZKmh.cjs.map → form-DyH5iWq7.cjs.map} +1 -1
  133. package/dist/form-wrapper-CFcpJdfv.js +2 -0
  134. package/dist/{form-wrapper-BezrUArd.js.map → form-wrapper-CFcpJdfv.js.map} +1 -1
  135. package/dist/form-wrapper-bC0IEtWT.cjs +2 -0
  136. package/dist/{form-wrapper-CIH-4QPY.cjs.map → form-wrapper-bC0IEtWT.cjs.map} +1 -1
  137. package/dist/forms/combobox-field.cjs +1 -1
  138. package/dist/forms/combobox-field.cjs.map +1 -1
  139. package/dist/forms/combobox-field.d.cts +2 -2
  140. package/dist/forms/combobox-field.d.ts +2 -2
  141. package/dist/forms/combobox-field.js +1 -1
  142. package/dist/forms/combobox-field.js.map +1 -1
  143. package/dist/forms/date-field.cjs +1 -1
  144. package/dist/forms/date-field.cjs.map +1 -1
  145. package/dist/forms/date-field.d.cts +2 -2
  146. package/dist/forms/date-field.d.ts +2 -2
  147. package/dist/forms/date-field.js +1 -1
  148. package/dist/forms/date-field.js.map +1 -1
  149. package/dist/forms/form-wrapper.cjs +1 -1
  150. package/dist/forms/form-wrapper.d.cts +2 -2
  151. package/dist/forms/form-wrapper.d.ts +2 -2
  152. package/dist/forms/form-wrapper.js +1 -1
  153. package/dist/forms/multi-select-field.cjs +1 -1
  154. package/dist/forms/multi-select-field.cjs.map +1 -1
  155. package/dist/forms/multi-select-field.d.cts +2 -2
  156. package/dist/forms/multi-select-field.d.ts +2 -2
  157. package/dist/forms/multi-select-field.js +1 -1
  158. package/dist/forms/multi-select-field.js.map +1 -1
  159. package/dist/forms/number-field.cjs +1 -1
  160. package/dist/forms/number-field.d.cts +2 -2
  161. package/dist/forms/number-field.d.ts +2 -2
  162. package/dist/forms/number-field.js +1 -1
  163. package/dist/forms/password-field.cjs +1 -1
  164. package/dist/forms/password-field.d.cts +2 -2
  165. package/dist/forms/password-field.d.ts +2 -2
  166. package/dist/forms/password-field.js +1 -1
  167. package/dist/forms/select-field.cjs +1 -1
  168. package/dist/forms/select-field.d.cts +2 -2
  169. package/dist/forms/select-field.d.ts +2 -2
  170. package/dist/forms/select-field.js +1 -1
  171. package/dist/forms/switch-field.cjs +1 -1
  172. package/dist/forms/switch-field.d.cts +2 -2
  173. package/dist/forms/switch-field.d.ts +2 -2
  174. package/dist/forms/switch-field.js +1 -1
  175. package/dist/forms/text-field.cjs +1 -1
  176. package/dist/forms/text-field.d.cts +2 -2
  177. package/dist/forms/text-field.d.ts +2 -2
  178. package/dist/forms/text-field.js +1 -1
  179. package/dist/forms/textarea-field.cjs +1 -1
  180. package/dist/forms/textarea-field.d.cts +2 -2
  181. package/dist/forms/textarea-field.d.ts +2 -2
  182. package/dist/forms/textarea-field.js +1 -1
  183. package/dist/image-CiQhTTyt.js +2 -0
  184. package/dist/{image-Dm3jT9QX.js.map → image-CiQhTTyt.js.map} +1 -1
  185. package/dist/image-j62jo7bK.cjs +2 -0
  186. package/dist/{image-D3D8dE6s.cjs.map → image-j62jo7bK.cjs.map} +1 -1
  187. package/dist/{input-BFZu6Cb8.d.cts → input-BdeU00LU.d.ts} +3 -3
  188. package/dist/{input-d_SOv6FU.d.ts → input-CkDKHe9G.d.cts} +3 -3
  189. package/dist/input-GHXBt6hz.cjs +2 -0
  190. package/dist/input-GHXBt6hz.cjs.map +1 -0
  191. package/dist/input-ZyZ1HKHN.js +2 -0
  192. package/dist/input-ZyZ1HKHN.js.map +1 -0
  193. package/dist/{label-BZqk7MPJ.cjs → label-CHNSlaoz.cjs} +2 -2
  194. package/dist/{label-BZqk7MPJ.cjs.map → label-CHNSlaoz.cjs.map} +1 -1
  195. package/dist/{label-HVpeECNr.js → label-CdrxlBJ8.js} +2 -2
  196. package/dist/{label-HVpeECNr.js.map → label-CdrxlBJ8.js.map} +1 -1
  197. package/dist/layouts/app-layout/index.cjs +1 -1
  198. package/dist/layouts/app-layout/index.cjs.map +1 -1
  199. package/dist/layouts/app-layout/index.d.cts +4 -4
  200. package/dist/layouts/app-layout/index.d.ts +5 -5
  201. package/dist/layouts/app-layout/index.js +1 -1
  202. package/dist/layouts/app-layout/index.js.map +1 -1
  203. package/dist/layouts/flex.cjs +1 -1
  204. package/dist/layouts/flex.d.cts +2 -2
  205. package/dist/layouts/flex.d.ts +4 -4
  206. package/dist/layouts/flex.js +1 -1
  207. package/dist/layouts/service-layout/index.cjs +1 -1
  208. package/dist/layouts/service-layout/index.cjs.map +1 -1
  209. package/dist/layouts/service-layout/index.d.cts +4 -4
  210. package/dist/layouts/service-layout/index.d.ts +6 -6
  211. package/dist/layouts/service-layout/index.js +1 -1
  212. package/dist/layouts/service-layout/index.js.map +1 -1
  213. package/dist/{multi-select-Bhl2uJgf.cjs → multi-select-DIZCHmU4.cjs} +2 -2
  214. package/dist/{multi-select-Bhl2uJgf.cjs.map → multi-select-DIZCHmU4.cjs.map} +1 -1
  215. package/dist/{multi-select-DLWPfDCM.js → multi-select-DzKtuSER.js} +2 -2
  216. package/dist/{multi-select-DLWPfDCM.js.map → multi-select-DzKtuSER.js.map} +1 -1
  217. package/dist/paragraph-B9fp9JaI.js +2 -0
  218. package/dist/{paragraph-BwSskqDY.js.map → paragraph-B9fp9JaI.js.map} +1 -1
  219. package/dist/{paragraph-CI28eVP0.cjs → paragraph-BLvW7xdo.cjs} +2 -2
  220. package/dist/{paragraph-CI28eVP0.cjs.map → paragraph-BLvW7xdo.cjs.map} +1 -1
  221. package/dist/{popover-D7UZ966w.cjs → popover-DLbTz02b.cjs} +2 -2
  222. package/dist/{popover-D7UZ966w.cjs.map → popover-DLbTz02b.cjs.map} +1 -1
  223. package/dist/{popover-BjCVseR5.js → popover-DvXi2pyH.js} +2 -2
  224. package/dist/{popover-BjCVseR5.js.map → popover-DvXi2pyH.js.map} +1 -1
  225. package/dist/progress-DzBPViJg.js +2 -0
  226. package/dist/{progress-DdINdNdF.js.map → progress-DzBPViJg.js.map} +1 -1
  227. package/dist/{progress-Cet_LGmM.cjs → progress-RnZp4jUA.cjs} +2 -2
  228. package/dist/{progress-Cet_LGmM.cjs.map → progress-RnZp4jUA.cjs.map} +1 -1
  229. package/dist/{refresh-CTcKzu_a.js → refresh-BHjc0ETv.js} +2 -2
  230. package/dist/{refresh-CTcKzu_a.js.map → refresh-BHjc0ETv.js.map} +1 -1
  231. package/dist/{refresh-CQyFVZx9.cjs → refresh-Bt9GEyuC.cjs} +2 -2
  232. package/dist/{refresh-CQyFVZx9.cjs.map → refresh-Bt9GEyuC.cjs.map} +1 -1
  233. package/dist/scroll-area-BYi1ePct.js +2 -0
  234. package/dist/scroll-area-BYi1ePct.js.map +1 -0
  235. package/dist/scroll-area-TdkUSNSy.cjs +2 -0
  236. package/dist/scroll-area-TdkUSNSy.cjs.map +1 -0
  237. package/dist/{search-input-hIVKLXXb.cjs → search-input-DFgHJyOp.cjs} +2 -2
  238. package/dist/{search-input-hIVKLXXb.cjs.map → search-input-DFgHJyOp.cjs.map} +1 -1
  239. package/dist/{search-input-C_7D7Nqj.js → search-input-DM9ePMxA.js} +2 -2
  240. package/dist/{search-input-C_7D7Nqj.js.map → search-input-DM9ePMxA.js.map} +1 -1
  241. package/dist/{select-CijI0HX0.js → select---jN6Yy0.js} +2 -2
  242. package/dist/{select-CijI0HX0.js.map → select---jN6Yy0.js.map} +1 -1
  243. package/dist/{select-oxr4KoHx.cjs → select-CvPIAeWb.cjs} +2 -2
  244. package/dist/{select-oxr4KoHx.cjs.map → select-CvPIAeWb.cjs.map} +1 -1
  245. package/dist/{separator-B79v6wKg.d.cts → separator-BxaNFFmP.d.cts} +3 -3
  246. package/dist/{separator-DW2PaiUK.js → separator-C7HQ2ThL.js} +2 -2
  247. package/dist/{separator-DW2PaiUK.js.map → separator-C7HQ2ThL.js.map} +1 -1
  248. package/dist/{separator-CJZGYT24.d.ts → separator-CWIfZAle.d.ts} +3 -3
  249. package/dist/{separator-JGL-8B0V.cjs → separator-WF5zTNGS.cjs} +2 -2
  250. package/dist/{separator-JGL-8B0V.cjs.map → separator-WF5zTNGS.cjs.map} +1 -1
  251. package/dist/{sheet-BumlzKcW.js → sheet-E0gvN9Gp.js} +2 -2
  252. package/dist/{sheet-BumlzKcW.js.map → sheet-E0gvN9Gp.js.map} +1 -1
  253. package/dist/{sheet-slcLNlWv.cjs → sheet-cjXJAfUE.cjs} +2 -2
  254. package/dist/{sheet-slcLNlWv.cjs.map → sheet-cjXJAfUE.cjs.map} +1 -1
  255. package/dist/{sidebar-BxGyCuTJ.cjs → sidebar-BF_5REY5.cjs} +2 -2
  256. package/dist/{sidebar-BxGyCuTJ.cjs.map → sidebar-BF_5REY5.cjs.map} +1 -1
  257. package/dist/{sidebar-CMWETVDr.js → sidebar-BgOz0zZh.js} +2 -2
  258. package/dist/{sidebar-CMWETVDr.js.map → sidebar-BgOz0zZh.js.map} +1 -1
  259. package/dist/{skeleton-CmGSyYRm.cjs → skeleton-BA-3d3bn.cjs} +1 -1
  260. package/dist/{skeleton-CmGSyYRm.cjs.map → skeleton-BA-3d3bn.cjs.map} +1 -1
  261. package/dist/{skeleton-DFF0w4en.js → skeleton-ByN-MrQO.js} +1 -1
  262. package/dist/{skeleton-DFF0w4en.js.map → skeleton-ByN-MrQO.js.map} +1 -1
  263. package/dist/{switch-BPSKvrTw.cjs → switch-BLfDkOOl.cjs} +2 -2
  264. package/dist/{switch-BPSKvrTw.cjs.map → switch-BLfDkOOl.cjs.map} +1 -1
  265. package/dist/{switch-Crju8DJO.js → switch-C8OMYLfj.js} +2 -2
  266. package/dist/{switch-Crju8DJO.js.map → switch-C8OMYLfj.js.map} +1 -1
  267. package/dist/systems/google.cjs +1 -1
  268. package/dist/systems/google.js +1 -1
  269. package/dist/table/index.cjs +1 -1
  270. package/dist/table/index.cjs.map +1 -1
  271. package/dist/table/index.d.cts +4 -8
  272. package/dist/table/index.d.ts +4 -8
  273. package/dist/table/index.js +1 -1
  274. package/dist/table/index.js.map +1 -1
  275. package/dist/table-BUu5ju9Z.js +2 -0
  276. package/dist/table-BUu5ju9Z.js.map +1 -0
  277. package/dist/table-CJM3QVkD.cjs +2 -0
  278. package/dist/table-CJM3QVkD.cjs.map +1 -0
  279. package/dist/{tabs-D4Q78tF2.js → tabs-D4uObFGW.js} +2 -2
  280. package/dist/{tabs-D4Q78tF2.js.map → tabs-D4uObFGW.js.map} +1 -1
  281. package/dist/{tabs-BYS9bv-R.cjs → tabs-MolLf09Q.cjs} +2 -2
  282. package/dist/{tabs-BYS9bv-R.cjs.map → tabs-MolLf09Q.cjs.map} +1 -1
  283. package/dist/textarea-Br_DX1wm.js +2 -0
  284. package/dist/textarea-Br_DX1wm.js.map +1 -0
  285. package/dist/textarea-jrCmozqt.cjs +2 -0
  286. package/dist/textarea-jrCmozqt.cjs.map +1 -0
  287. package/dist/title-C5OV9Ei4.js +2 -0
  288. package/dist/{title-Cb4SosQb.js.map → title-C5OV9Ei4.js.map} +1 -1
  289. package/dist/{title-B51-Oj-Y.cjs → title-CfI-y7Xt.cjs} +2 -2
  290. package/dist/{title-B51-Oj-Y.cjs.map → title-CfI-y7Xt.cjs.map} +1 -1
  291. package/dist/{toggle-Dq091q_s.d.cts → toggle-D-YjNMF8.d.cts} +6 -6
  292. package/dist/{toggle-D_5Xh3Rl.cjs → toggle-D0B4Ba4H.cjs} +2 -2
  293. package/dist/{toggle-D_5Xh3Rl.cjs.map → toggle-D0B4Ba4H.cjs.map} +1 -1
  294. package/dist/{toggle-D8VezYdr.js → toggle-DuNq0es1.js} +2 -2
  295. package/dist/{toggle-D8VezYdr.js.map → toggle-DuNq0es1.js.map} +1 -1
  296. package/dist/{toggle-B3cvw5ny.d.ts → toggle-Sx_iHryx.d.ts} +6 -6
  297. package/dist/{tooltip-CTUSyCdh.js → tooltip-BTrjCwd8.js} +2 -2
  298. package/dist/{tooltip-CTUSyCdh.js.map → tooltip-BTrjCwd8.js.map} +1 -1
  299. package/dist/{tooltip-B1Lj1ujY.d.ts → tooltip-DItQeu57.d.ts} +6 -6
  300. package/dist/{tooltip-CQ8hkJ42.cjs → tooltip-DXvcPsvM.cjs} +2 -2
  301. package/dist/{tooltip-CQ8hkJ42.cjs.map → tooltip-DXvcPsvM.cjs.map} +1 -1
  302. package/dist/{tooltip-DijjzZk1.d.cts → tooltip-sRRA22ab.d.cts} +6 -6
  303. package/dist/{types-BpvTO4OF.d.ts → types-BHVCAwAo.d.ts} +1 -1
  304. package/dist/{types-Cgr_eoPF.js → types-BiiGENwa.js} +1 -1
  305. package/dist/{types-Cgr_eoPF.js.map → types-BiiGENwa.js.map} +1 -1
  306. package/dist/{types-DMNCf28U.cjs → types-D32qXHff.cjs} +1 -1
  307. package/dist/{types-DMNCf28U.cjs.map → types-D32qXHff.cjs.map} +1 -1
  308. package/dist/typography/paragraph.cjs +1 -1
  309. package/dist/typography/paragraph.d.cts +2 -2
  310. package/dist/typography/paragraph.d.ts +2 -2
  311. package/dist/typography/paragraph.js +1 -1
  312. package/dist/typography/title.cjs +1 -1
  313. package/dist/typography/title.d.cts +2 -2
  314. package/dist/typography/title.d.ts +2 -2
  315. package/dist/typography/title.js +1 -1
  316. package/dist/ui/alert-dialog.cjs +1 -1
  317. package/dist/ui/alert-dialog.d.cts +12 -12
  318. package/dist/ui/alert-dialog.d.ts +12 -12
  319. package/dist/ui/alert-dialog.js +1 -1
  320. package/dist/ui/alert.cjs +1 -1
  321. package/dist/ui/alert.cjs.map +1 -1
  322. package/dist/ui/alert.d.cts +54 -9
  323. package/dist/ui/alert.d.ts +54 -9
  324. package/dist/ui/alert.js +1 -1
  325. package/dist/ui/alert.js.map +1 -1
  326. package/dist/ui/aspect-ratio.cjs +1 -1
  327. package/dist/ui/aspect-ratio.d.cts +2 -2
  328. package/dist/ui/aspect-ratio.d.ts +2 -2
  329. package/dist/ui/aspect-ratio.js +1 -1
  330. package/dist/ui/avatar.cjs +1 -1
  331. package/dist/ui/avatar.d.cts +4 -4
  332. package/dist/ui/avatar.d.ts +4 -4
  333. package/dist/ui/avatar.js +1 -1
  334. package/dist/ui/badge.cjs +1 -1
  335. package/dist/ui/badge.d.cts +4 -4
  336. package/dist/ui/badge.d.ts +2 -2
  337. package/dist/ui/badge.js +1 -1
  338. package/dist/ui/breadcrumb.cjs +1 -1
  339. package/dist/ui/breadcrumb.cjs.map +1 -1
  340. package/dist/ui/breadcrumb.d.cts +30 -8
  341. package/dist/ui/breadcrumb.d.ts +30 -8
  342. package/dist/ui/breadcrumb.js +1 -1
  343. package/dist/ui/breadcrumb.js.map +1 -1
  344. package/dist/ui/button.cjs +1 -1
  345. package/dist/ui/button.d.cts +2 -2
  346. package/dist/ui/button.d.ts +2 -2
  347. package/dist/ui/button.js +1 -1
  348. package/dist/ui/buttons/add-new.cjs +1 -1
  349. package/dist/ui/buttons/add-new.js +1 -1
  350. package/dist/ui/buttons/edit.cjs +1 -1
  351. package/dist/ui/buttons/edit.cjs.map +1 -1
  352. package/dist/ui/buttons/edit.js +1 -1
  353. package/dist/ui/buttons/edit.js.map +1 -1
  354. package/dist/ui/buttons/refresh.cjs +1 -1
  355. package/dist/ui/buttons/refresh.js +1 -1
  356. package/dist/ui/buttons/trash.cjs +1 -1
  357. package/dist/ui/buttons/trash.cjs.map +1 -1
  358. package/dist/ui/buttons/trash.js +1 -1
  359. package/dist/ui/buttons/trash.js.map +1 -1
  360. package/dist/ui/buttons/upload-image.cjs +1 -1
  361. package/dist/ui/buttons/upload-image.cjs.map +1 -1
  362. package/dist/ui/buttons/upload-image.js +1 -1
  363. package/dist/ui/buttons/upload-image.js.map +1 -1
  364. package/dist/ui/calendar.cjs +1 -1
  365. package/dist/ui/calendar.d.cts +4 -4
  366. package/dist/ui/calendar.d.ts +4 -4
  367. package/dist/ui/calendar.js +1 -1
  368. package/dist/ui/card.cjs +1 -1
  369. package/dist/ui/card.d.cts +8 -8
  370. package/dist/ui/card.d.ts +8 -8
  371. package/dist/ui/card.js +1 -1
  372. package/dist/ui/carousel.cjs +1 -1
  373. package/dist/ui/carousel.cjs.map +1 -1
  374. package/dist/ui/carousel.d.cts +7 -7
  375. package/dist/ui/carousel.d.ts +7 -7
  376. package/dist/ui/carousel.js +1 -1
  377. package/dist/ui/carousel.js.map +1 -1
  378. package/dist/ui/collapsible.cjs +1 -1
  379. package/dist/ui/collapsible.d.cts +4 -4
  380. package/dist/ui/collapsible.d.ts +4 -4
  381. package/dist/ui/collapsible.js +1 -1
  382. package/dist/ui/command.cjs +1 -1
  383. package/dist/ui/command.d.cts +2 -2
  384. package/dist/ui/command.d.ts +2 -2
  385. package/dist/ui/command.js +1 -1
  386. package/dist/ui/context-menu.cjs +1 -1
  387. package/dist/ui/context-menu.d.cts +16 -16
  388. package/dist/ui/context-menu.d.ts +16 -16
  389. package/dist/ui/context-menu.js +1 -1
  390. package/dist/ui/dialog.cjs +1 -1
  391. package/dist/ui/dialog.d.cts +1 -1
  392. package/dist/ui/dialog.d.ts +1 -1
  393. package/dist/ui/dialog.js +1 -1
  394. package/dist/ui/dropdown-menu.cjs +1 -1
  395. package/dist/ui/dropdown-menu.d.cts +16 -16
  396. package/dist/ui/dropdown-menu.d.ts +16 -16
  397. package/dist/ui/dropdown-menu.js +1 -1
  398. package/dist/ui/file-uploader.cjs +2 -2
  399. package/dist/ui/file-uploader.cjs.map +1 -1
  400. package/dist/ui/file-uploader.d.cts +2 -2
  401. package/dist/ui/file-uploader.d.ts +2 -2
  402. package/dist/ui/file-uploader.js +2 -2
  403. package/dist/ui/file-uploader.js.map +1 -1
  404. package/dist/ui/form.cjs +1 -1
  405. package/dist/ui/form.d.cts +7 -7
  406. package/dist/ui/form.d.ts +7 -7
  407. package/dist/ui/form.js +1 -1
  408. package/dist/ui/hover-card.cjs +1 -1
  409. package/dist/ui/hover-card.d.cts +4 -4
  410. package/dist/ui/hover-card.d.ts +4 -4
  411. package/dist/ui/hover-card.js +1 -1
  412. package/dist/ui/image.cjs +1 -1
  413. package/dist/ui/image.js +1 -1
  414. package/dist/ui/input-otp.cjs +1 -1
  415. package/dist/ui/input-otp.d.cts +5 -5
  416. package/dist/ui/input-otp.d.ts +5 -5
  417. package/dist/ui/input-otp.js +1 -1
  418. package/dist/ui/input.cjs +1 -1
  419. package/dist/ui/input.d.cts +1 -1
  420. package/dist/ui/input.d.ts +1 -1
  421. package/dist/ui/input.js +1 -1
  422. package/dist/ui/inputs/search-input.cjs +1 -1
  423. package/dist/ui/inputs/search-input.d.cts +3 -3
  424. package/dist/ui/inputs/search-input.d.ts +3 -3
  425. package/dist/ui/inputs/search-input.js +1 -1
  426. package/dist/ui/label.cjs +1 -1
  427. package/dist/ui/label.d.cts +2 -2
  428. package/dist/ui/label.d.ts +2 -2
  429. package/dist/ui/label.js +1 -1
  430. package/dist/ui/menubar.cjs +1 -1
  431. package/dist/ui/menubar.d.cts +17 -17
  432. package/dist/ui/menubar.d.ts +17 -17
  433. package/dist/ui/menubar.js +1 -1
  434. package/dist/ui/multi-select.cjs +1 -1
  435. package/dist/ui/multi-select.d.cts +2 -2
  436. package/dist/ui/multi-select.d.ts +2 -2
  437. package/dist/ui/multi-select.js +1 -1
  438. package/dist/ui/navigation-menu.cjs +1 -1
  439. package/dist/ui/navigation-menu.d.cts +11 -11
  440. package/dist/ui/navigation-menu.d.ts +11 -11
  441. package/dist/ui/navigation-menu.js +1 -1
  442. package/dist/ui/pagination.cjs +1 -1
  443. package/dist/ui/pagination.cjs.map +1 -1
  444. package/dist/ui/pagination.d.cts +9 -9
  445. package/dist/ui/pagination.d.ts +9 -9
  446. package/dist/ui/pagination.js +1 -1
  447. package/dist/ui/pagination.js.map +1 -1
  448. package/dist/ui/popover.cjs +1 -1
  449. package/dist/ui/popover.d.cts +5 -5
  450. package/dist/ui/popover.d.ts +5 -5
  451. package/dist/ui/popover.js +1 -1
  452. package/dist/ui/progress.cjs +1 -1
  453. package/dist/ui/progress.d.cts +2 -2
  454. package/dist/ui/progress.d.ts +2 -2
  455. package/dist/ui/progress.js +1 -1
  456. package/dist/ui/radio-group.cjs +1 -1
  457. package/dist/ui/radio-group.d.cts +3 -3
  458. package/dist/ui/radio-group.d.ts +3 -3
  459. package/dist/ui/radio-group.js +1 -1
  460. package/dist/ui/resizable.d.cts +4 -4
  461. package/dist/ui/resizable.d.ts +4 -4
  462. package/dist/ui/scroll-area.cjs +1 -1
  463. package/dist/ui/scroll-area.d.cts +4 -3
  464. package/dist/ui/scroll-area.d.ts +4 -3
  465. package/dist/ui/scroll-area.js +1 -1
  466. package/dist/ui/select.cjs +1 -1
  467. package/dist/ui/select.d.cts +11 -11
  468. package/dist/ui/select.d.ts +11 -11
  469. package/dist/ui/select.js +1 -1
  470. package/dist/ui/separator.cjs +1 -1
  471. package/dist/ui/separator.d.cts +1 -1
  472. package/dist/ui/separator.d.ts +1 -1
  473. package/dist/ui/separator.js +1 -1
  474. package/dist/ui/sheet.cjs +1 -1
  475. package/dist/ui/sheet.d.cts +9 -9
  476. package/dist/ui/sheet.d.ts +9 -9
  477. package/dist/ui/sheet.js +1 -1
  478. package/dist/ui/sidebar.cjs +1 -1
  479. package/dist/ui/sidebar.cjs.map +1 -1
  480. package/dist/ui/sidebar.d.cts +31 -31
  481. package/dist/ui/sidebar.d.ts +31 -31
  482. package/dist/ui/sidebar.js +1 -1
  483. package/dist/ui/sidebar.js.map +1 -1
  484. package/dist/ui/skeleton.cjs +1 -1
  485. package/dist/ui/skeleton.d.cts +2 -2
  486. package/dist/ui/skeleton.d.ts +2 -2
  487. package/dist/ui/skeleton.js +1 -1
  488. package/dist/ui/slider.cjs +1 -1
  489. package/dist/ui/slider.cjs.map +1 -1
  490. package/dist/ui/slider.d.cts +2 -2
  491. package/dist/ui/slider.d.ts +2 -2
  492. package/dist/ui/slider.js +1 -1
  493. package/dist/ui/slider.js.map +1 -1
  494. package/dist/ui/sonner.d.cts +2 -2
  495. package/dist/ui/sonner.d.ts +2 -2
  496. package/dist/ui/switch.cjs +1 -1
  497. package/dist/ui/switch.d.cts +2 -2
  498. package/dist/ui/switch.d.ts +2 -2
  499. package/dist/ui/switch.js +1 -1
  500. package/dist/ui/table.cjs +1 -1
  501. package/dist/ui/table.d.cts +9 -9
  502. package/dist/ui/table.d.ts +9 -9
  503. package/dist/ui/table.js +1 -1
  504. package/dist/ui/tabs.cjs +1 -1
  505. package/dist/ui/tabs.d.cts +5 -5
  506. package/dist/ui/tabs.d.ts +5 -5
  507. package/dist/ui/tabs.js +1 -1
  508. package/dist/ui/textarea.cjs +1 -1
  509. package/dist/ui/textarea.d.cts +2 -2
  510. package/dist/ui/textarea.d.ts +2 -2
  511. package/dist/ui/textarea.js +1 -1
  512. package/dist/ui/toggle-group.cjs +1 -1
  513. package/dist/ui/toggle-group.d.cts +4 -4
  514. package/dist/ui/toggle-group.d.ts +4 -4
  515. package/dist/ui/toggle-group.js +1 -1
  516. package/dist/ui/toggle.cjs +1 -1
  517. package/dist/ui/toggle.d.cts +1 -1
  518. package/dist/ui/toggle.d.ts +1 -1
  519. package/dist/ui/toggle.js +1 -1
  520. package/dist/ui/tooltip.cjs +1 -1
  521. package/dist/ui/tooltip.d.cts +1 -1
  522. package/dist/ui/tooltip.d.ts +1 -1
  523. package/dist/ui/tooltip.js +1 -1
  524. package/package.json +2 -1
  525. package/dist/alert-dialog-BDKOU-BT.js +0 -2
  526. package/dist/alert-dialog-BDKOU-BT.js.map +0 -1
  527. package/dist/alert-dialog-CTKVGTqb.cjs +0 -2
  528. package/dist/alert-dialog-CTKVGTqb.cjs.map +0 -1
  529. package/dist/avatar-ClIgQDJO.js +0 -2
  530. package/dist/button-119IIVCy.cjs +0 -2
  531. package/dist/button-119IIVCy.cjs.map +0 -1
  532. package/dist/button-CvQQTSka.js +0 -2
  533. package/dist/button-CvQQTSka.js.map +0 -1
  534. package/dist/button-DZYXtWzR.d.ts +0 -26
  535. package/dist/button-LfFi39Jg.d.cts +0 -26
  536. package/dist/calendar-BaIr1lqT.cjs +0 -2
  537. package/dist/calendar-BaIr1lqT.cjs.map +0 -1
  538. package/dist/calendar-CAERbEr4.js +0 -2
  539. package/dist/calendar-CAERbEr4.js.map +0 -1
  540. package/dist/error-dialog-1xq8gXX_.cjs +0 -2
  541. package/dist/error-dialog-m_6k921_.js +0 -2
  542. package/dist/form-B-KLKj5u.js +0 -2
  543. package/dist/form-wrapper-BezrUArd.js +0 -2
  544. package/dist/form-wrapper-CIH-4QPY.cjs +0 -2
  545. package/dist/image-D3D8dE6s.cjs +0 -2
  546. package/dist/image-Dm3jT9QX.js +0 -2
  547. package/dist/input-BFZuwsER.js +0 -2
  548. package/dist/input-BFZuwsER.js.map +0 -1
  549. package/dist/input-ERPHY3v4.cjs +0 -2
  550. package/dist/input-ERPHY3v4.cjs.map +0 -1
  551. package/dist/paragraph-BwSskqDY.js +0 -2
  552. package/dist/progress-DdINdNdF.js +0 -2
  553. package/dist/scroll-area-CqevC_nb.js +0 -2
  554. package/dist/scroll-area-CqevC_nb.js.map +0 -1
  555. package/dist/scroll-area-Dgjr1n1T.cjs +0 -2
  556. package/dist/scroll-area-Dgjr1n1T.cjs.map +0 -1
  557. package/dist/table-CuhHhpgi.cjs +0 -2
  558. package/dist/table-CuhHhpgi.cjs.map +0 -1
  559. package/dist/table-oROsZcz4.js +0 -2
  560. package/dist/table-oROsZcz4.js.map +0 -1
  561. package/dist/textarea-BCZiUxv7.js +0 -2
  562. package/dist/textarea-BCZiUxv7.js.map +0 -1
  563. package/dist/textarea-BtACo9UF.cjs +0 -2
  564. package/dist/textarea-BtACo9UF.cjs.map +0 -1
  565. package/dist/title-Cb4SosQb.js +0 -2
@@ -1 +1 @@
1
- {"version":3,"file":"sidebar-CMWETVDr.js","names":["open","Separator","SlotPrimitive","Tooltip"],"sources":["../packages/components/dialogs/detail-dialog/component/sidebar.tsx"],"sourcesContent":["'use client'\nimport { createContext, useCallback, useContext, useEffect, useMemo, useState } from 'react'\nimport { useIsMobile } from '@customafk/react-toolkit/hooks/useMobile'\nimport { cn } from '@customafk/react-toolkit/utils'\n\nimport { MenuIcon } from 'lucide-react'\n\nimport { Button } from '@/components/ui/button'\nimport { Input } from '@/components/ui/input'\nimport { Separator } from '@/components/ui/separator'\nimport { Sheet, SheetContent, SheetDescription, SheetHeader, SheetTitle } from '@/components/ui/sheet'\nimport { Skeleton } from '@/components/ui/skeleton'\nimport { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from '@/components/ui/tooltip'\n\nimport { cva, type VariantProps } from 'class-variance-authority'\nimport { Slot as SlotPrimitive } from 'radix-ui'\n\nconst SIDEBAR_COOKIE_NAME = 'detai_dialog_sidebar_state'\nconst SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7\nconst SIDEBAR_WIDTH = '16rem'\nconst SIDEBAR_WIDTH_MOBILE = '18rem'\nconst SIDEBAR_WIDTH_ICON = '3rem'\nconst SIDEBAR_KEYBOARD_SHORTCUT = 'p'\n\ntype SidebarContextProps = {\n state: 'expanded' | 'collapsed'\n open: boolean\n setOpen: (open: boolean) => void\n openMobile: boolean\n setOpenMobile: (open: boolean) => void\n isMobile: boolean\n toggleSidebar: () => void\n}\n\nconst SidebarContext = createContext<SidebarContextProps | null>(null)\n\nfunction useSidebar() {\n const context = useContext(SidebarContext)\n if (!context) {\n throw new Error('useSidebar must be used within a SidebarProvider.')\n }\n\n return context\n}\n\nfunction SidebarProvider({\n defaultOpen = true,\n open: openProp,\n onOpenChange: setOpenProp,\n className,\n style,\n children,\n ...props\n}: React.ComponentProps<'div'> & {\n defaultOpen?: boolean\n open?: boolean\n onOpenChange?: (open: boolean) => void\n}) {\n const isMobile = useIsMobile()\n const [openMobile, setOpenMobile] = useState(false)\n\n // This is the internal state of the sidebar.\n // We use openProp and setOpenProp for control from outside the component.\n const [_open, _setOpen] = useState(defaultOpen)\n const open = openProp ?? _open\n const setOpen = useCallback(\n (value: boolean | ((value: boolean) => boolean)) => {\n const openState = typeof value === 'function' ? value(open) : value\n if (setOpenProp) {\n setOpenProp(openState)\n } else {\n _setOpen(openState)\n }\n\n // This sets the cookie to keep the sidebar state.\n document.cookie = `${SIDEBAR_COOKIE_NAME}=${openState}; path=/; max-age=${SIDEBAR_COOKIE_MAX_AGE}`\n },\n [setOpenProp, open],\n )\n\n // Helper to toggle the sidebar.\n const toggleSidebar = useCallback(() => {\n return isMobile ? setOpenMobile((open) => !open) : setOpen((open) => !open)\n }, [isMobile, setOpen])\n\n // Adds a keyboard shortcut to toggle the sidebar.\n useEffect(() => {\n const handleKeyDown = (event: KeyboardEvent) => {\n if (event.key === SIDEBAR_KEYBOARD_SHORTCUT && (event.metaKey || event.ctrlKey)) {\n event.preventDefault()\n toggleSidebar()\n }\n }\n\n window.addEventListener('keydown', handleKeyDown)\n return () => window.removeEventListener('keydown', handleKeyDown)\n }, [toggleSidebar])\n\n // We add a state so that we can do data-state=\"expanded\" or \"collapsed\".\n // This makes it easier to style the sidebar with Tailwind classes.\n const state = open ? 'expanded' : 'collapsed'\n\n const contextValue = useMemo<SidebarContextProps>(\n () => ({\n state,\n isMobile,\n\n toggleSidebar,\n\n open,\n setOpen,\n\n openMobile,\n setOpenMobile,\n }),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [state, open, setOpen, openMobile, setOpenMobile, toggleSidebar],\n )\n\n return (\n <SidebarContext.Provider value={contextValue}>\n <TooltipProvider delayDuration={0}>\n <div\n data-slot=\"sidebar-wrapper\"\n style={\n {\n '--sidebar-width': SIDEBAR_WIDTH,\n '--sidebar-width-icon': SIDEBAR_WIDTH_ICON,\n ...style,\n } as React.CSSProperties\n }\n className={cn('group/sidebar-wrapper', 'has-data-[variant=inset]:bg-sidebar', 'flex min-h-svh w-full', className)}\n {...props}\n >\n {children}\n </div>\n </TooltipProvider>\n </SidebarContext.Provider>\n )\n}\n\nfunction Sidebar({\n side = 'left',\n variant = 'sidebar',\n collapsible = 'offcanvas',\n className,\n children,\n ...props\n}: React.ComponentProps<'div'> & {\n side?: 'left' | 'right'\n variant?: 'sidebar' | 'floating' | 'inset'\n collapsible?: 'offcanvas' | 'icon' | 'none'\n}) {\n const { state, isMobile, openMobile, setOpenMobile } = useSidebar()\n\n if (collapsible === 'none') {\n return (\n <div data-slot=\"sidebar\" className={cn('bg-sidebar text-sidebar-foreground flex h-full w-(--sidebar-width) flex-col', className)} {...props}>\n {children}\n </div>\n )\n }\n\n if (isMobile) {\n return (\n <Sheet open={openMobile} onOpenChange={setOpenMobile} {...props}>\n <SheetContent\n data-sidebar=\"sidebar\"\n data-slot=\"sidebar\"\n data-mobile=\"true\"\n className=\"bg-sidebar text-sidebar-foreground w-(--sidebar-width) p-0 [&>button]:hidden\"\n style={\n {\n '--sidebar-width': SIDEBAR_WIDTH_MOBILE,\n } as React.CSSProperties\n }\n side={side}\n >\n <SheetHeader className=\"sr-only\">\n <SheetTitle>Sidebar</SheetTitle>\n <SheetDescription>Displays the mobile sidebar.</SheetDescription>\n </SheetHeader>\n <div className=\"flex h-full w-full flex-col\">{children}</div>\n </SheetContent>\n </Sheet>\n )\n }\n\n return (\n <div\n className=\"group peer text-sidebar-foreground hidden md:block\"\n data-state={state}\n data-collapsible={state === 'collapsed' ? collapsible : ''}\n data-variant={variant}\n data-side={side}\n data-slot=\"sidebar\"\n >\n {/* This is what handles the sidebar gap on desktop */}\n <div\n data-slot=\"sidebar-gap\"\n className={cn(\n 'relative w-(--sidebar-width) bg-transparent transition-[width] duration-200 ease-linear',\n 'group-data-[collapsible=offcanvas]:w-0',\n 'group-data-[side=right]:rotate-180',\n variant === 'floating' || variant === 'inset'\n ? 'group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4)))]'\n : 'group-data-[collapsible=icon]:w-(--sidebar-width-icon)',\n )}\n />\n <div\n data-slot=\"sidebar-container\"\n className={cn(\n 'absolute inset-y-0 hidden w-(--sidebar-width) transition-[left,right,width] duration-200 ease-linear md:flex',\n side === 'left'\n ? 'left-0 group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)]'\n : 'right-0 group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)]',\n // Adjust the padding for floating and inset variants.\n variant === 'floating' || variant === 'inset'\n ? 'p-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4))+2px)]'\n : 'group-data-[collapsible=icon]:w-(--sidebar-width-icon)',\n className,\n )}\n {...props}\n >\n <div\n data-sidebar=\"sidebar\"\n data-slot=\"sidebar-inner\"\n className={cn(\n 'shadow-nav flex size-full flex-col',\n 'group-data-[variant=floating]:border-sidebar-border',\n 'group-data-[variant=floating]:rounded-lg',\n 'group-data-[variant=floating]:border',\n 'group-data-[variant=floating]:shadow-sm',\n )}\n >\n {children}\n </div>\n </div>\n </div>\n )\n}\n\nfunction DetailDialogSidebarTrigger({ className, onClick, ...props }: React.ComponentProps<typeof Button>) {\n const { toggleSidebar } = useSidebar()\n\n return (\n <Button\n data-sidebar=\"trigger\"\n data-slot=\"sidebar-trigger\"\n variant=\"ghost\"\n color=\"secondary\"\n size=\"icon\"\n className={cn('size-10 rounded-full [&_svg]:!size-6', className)}\n onClick={(event) => {\n onClick?.(event)\n toggleSidebar()\n }}\n {...props}\n >\n <MenuIcon />\n <span className=\"sr-only\">Toggle Sidebar</span>\n </Button>\n )\n}\n\nfunction DetailDialogSidebarRail({ className, ...props }: React.ComponentProps<'button'>) {\n const { toggleSidebar } = useSidebar()\n\n return (\n <button\n data-sidebar=\"rail\"\n data-slot=\"sidebar-rail\"\n aria-label=\"Toggle Sidebar\"\n tabIndex={-1}\n onClick={toggleSidebar}\n title=\"Toggle Sidebar\"\n className={cn(\n 'absolute inset-y-0 z-20 hidden w-4 -translate-x-1/2 transition-all ease-linear sm:flex',\n 'after:absolute',\n 'after:inset-y-0',\n 'after:left-1/2 after:w-0.5',\n 'hover:after:bg-sidebar-border',\n 'group-data-[side=left]:-right-4',\n 'group-data-[side=right]:left-0',\n 'in-data-[side=left]:cursor-w-resize',\n 'in-data-[side=right]:cursor-e-resize',\n '[[data-side=left][data-state=collapsed]_&]:cursor-e-resize',\n '[[data-side=right][data-state=collapsed]_&]:cursor-w-resize',\n 'hover:group-data-[collapsible=offcanvas]:bg-sidebar',\n 'group-data-[collapsible=offcanvas]:translate-x-0',\n 'group-data-[collapsible=offcanvas]:after:left-full',\n '[[data-side=left][data-collapsible=offcanvas]_&]:-right-2',\n '[[data-side=right][data-collapsible=offcanvas]_&]:-left-2',\n className,\n )}\n {...props}\n />\n )\n}\n\nfunction SidebarInset({ className, ...props }: React.ComponentProps<'main'>) {\n return (\n <main\n data-slot=\"sidebar-inset\"\n className={cn(\n 'bg-background relative flex w-full flex-1 flex-col',\n 'md:peer-data-[variant=inset]:m-2',\n 'md:peer-data-[variant=inset]:ml-0',\n 'md:peer-data-[variant=inset]:rounded-xl',\n 'md:peer-data-[variant=inset]:shadow-sm',\n 'md:peer-data-[variant=inset]:peer-data-[state=collapsed]:ml-2',\n className,\n )}\n {...props}\n />\n )\n}\n\nfunction SidebarInput({ className, ...props }: React.ComponentProps<typeof Input>) {\n return <Input data-slot=\"sidebar-input\" data-sidebar=\"input\" className={cn('bg-background h-8 w-full shadow-none', className)} {...props} />\n}\n\nfunction DetailDialogSidebarHeader({ className, ...props }: React.ComponentProps<'div'>) {\n return <div data-slot=\"sidebar-header\" data-sidebar=\"header\" className={cn('flex flex-col gap-2 p-2', className)} {...props} />\n}\n\nfunction DetailDialogSidebarFooter({ className, ...props }: React.ComponentProps<'div'>) {\n return <div data-slot=\"sidebar-footer\" data-sidebar=\"footer\" className={cn('flex flex-col gap-2 p-2', className)} {...props} />\n}\n\nfunction DetailDialogSidebarSeparator({ className, ...props }: React.ComponentProps<typeof Separator>) {\n return <Separator data-slot=\"sidebar-separator\" data-sidebar=\"separator\" className={cn('bg-sidebar-border mx-2 w-auto', className)} {...props} />\n}\n\nfunction DetailDialogSidebarContent({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"sidebar-content\"\n data-sidebar=\"content\"\n className={cn('flex min-h-0 flex-1 flex-col gap-2 overflow-auto', 'group-data-[collapsible=icon]:overflow-hidden', className)}\n {...props}\n />\n )\n}\n\nfunction DetailDialogSidebarGroup({ className, ...props }: React.ComponentProps<'div'>) {\n return <div data-slot=\"sidebar-group\" data-sidebar=\"group\" className={cn('relative flex w-full min-w-0 flex-col p-2', className)} {...props} />\n}\n\nfunction DetailDialogSidebarGroupLabel({ className, asChild = false, ...props }: React.ComponentProps<'div'> & { asChild?: boolean }) {\n const Comp = asChild ? SlotPrimitive.Slot : 'div'\n\n return (\n <Comp\n data-slot=\"sidebar-group-label\"\n data-sidebar=\"group-label\"\n className={cn(\n 'text-sidebar-foreground/70 ring-sidebar-ring flex h-8 shrink-0 items-center rounded-md px-2 text-xs font-medium outline-hidden transition-[margin,opacity] duration-200 ease-linear',\n 'focus-visible:ring-2',\n '[&>svg]:size-4',\n '[&>svg]:shrink-0',\n 'group-data-[collapsible=icon]:-mt-8',\n 'group-data-[collapsible=icon]:opacity-0',\n className,\n )}\n {...props}\n />\n )\n}\n\nfunction DetailDialogSidebarGroupAction({ className, asChild = false, ...props }: React.ComponentProps<'button'> & { asChild?: boolean }) {\n const Comp = asChild ? SlotPrimitive.Slot : 'button'\n\n return (\n <Comp\n data-slot=\"sidebar-group-action\"\n data-sidebar=\"group-action\"\n className={cn(\n 'text-sidebar-foreground ring-sidebar-ring absolute top-3.5 right-3 flex aspect-square w-5 items-center justify-center rounded-md p-0 outline-hidden transition-transform',\n 'hover:bg-sidebar-accent hover:text-sidebar-accent-foreground',\n 'focus-visible:ring-2',\n '[&>svg]:size-4',\n '[&>svg]:shrink-0',\n // Increases the hit area of the button on mobile.\n 'after:absolute',\n 'after:-inset-2',\n 'md:after:hidden',\n 'group-data-[collapsible=icon]:hidden',\n className,\n )}\n {...props}\n />\n )\n}\n\nfunction DetailDialogSidebarGroupContent({ className, ...props }: React.ComponentProps<'div'>) {\n return <div data-slot=\"sidebar-group-content\" data-sidebar=\"group-content\" className={cn('w-full text-sm', className)} {...props} />\n}\n\nfunction DetailDialogSidebarMenu({ className, ...props }: React.ComponentProps<'ul'>) {\n return <ul data-slot=\"sidebar-menu\" data-sidebar=\"menu\" className={cn('flex w-full min-w-0 flex-col gap-1', className)} {...props} />\n}\n\nfunction DetailDialogSidebarMenuItem({ className, ...props }: React.ComponentProps<'li'>) {\n return <li data-slot=\"sidebar-menu-item\" data-sidebar=\"menu-item\" className={cn('group/menu-item relative', className)} {...props} />\n}\n\nconst sidebarMenuButtonVariants = cva(\n [\n 'peer/menu-button',\n 'cursor-pointer',\n 'flex w-full items-center gap-2',\n 'overflow-hidden rounded-md p-2 outline-hidden',\n 'text-left truncate',\n 'transition-[color,width,height,padding]',\n 'hover:bg-sidebar-accent',\n 'hover:text-sidebar-accent-foreground',\n 'active:bg-sidebar-accent',\n 'active:text-sidebar-accent-foreground',\n 'disabled:pointer-events-none',\n 'disabled:opacity-50',\n 'group-has-data-[sidebar=menu-action]/menu-item:pr-8',\n 'aria-disabled:pointer-events-none',\n 'aria-disabled:opacity-50',\n 'data-[active=true]:bg-sidebar-primary-muted',\n 'data-[active=true]:font-medium',\n 'data-[active=true]:text-sidebar-primary',\n 'data-[state=open]:hover:bg-sidebar-accent',\n 'data-[state=open]:hover:text-sidebar-accent-foreground',\n 'group-data-[collapsible=icon]:size-8!',\n 'group-data-[collapsible=icon]:p-2!',\n '[&>svg]:size-4',\n '[&>svg]:shrink-0',\n '[&>span:last-child]:truncate',\n ],\n {\n variants: {\n variant: {\n default: 'hover:bg-sidebar-accent/60 hover:text-sidebar-accent-foreground/80',\n outline:\n 'bg-background shadow-[0_0_0_1px_hsl(var(--sidebar-border))] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground hover:shadow-[0_0_0_1px_hsl(var(--sidebar-accent))]',\n },\n size: {\n default: 'h-8 text-sm',\n sm: 'h-7 text-xs',\n lg: 'h-12 text-sm group-data-[collapsible=icon]:p-0!',\n },\n },\n defaultVariants: {\n variant: 'default',\n size: 'default',\n },\n },\n)\n\nfunction DetailDialogSidebarMenuButton({\n asChild = false,\n isActive = false,\n variant = 'default',\n size = 'default',\n tooltip,\n className,\n ...props\n}: React.ComponentProps<'button'> & {\n asChild?: boolean\n isActive?: boolean\n tooltip?: string | React.ComponentProps<typeof TooltipContent>\n} & VariantProps<typeof sidebarMenuButtonVariants>) {\n const Comp = asChild ? SlotPrimitive.Slot : 'button'\n const { state } = useSidebar()\n\n const button = (\n <Comp\n data-slot=\"sidebar-menu-button\"\n data-sidebar=\"menu-button\"\n data-size={size}\n data-active={isActive}\n className={cn(sidebarMenuButtonVariants({ variant, size }), className)}\n {...props}\n />\n )\n\n if (!tooltip) {\n return button\n }\n\n if (typeof tooltip === 'string') {\n tooltip = {\n children: tooltip,\n }\n }\n\n return (\n <Tooltip>\n <TooltipTrigger asChild>{button}</TooltipTrigger>\n <TooltipContent side=\"right\" align=\"center\" hidden={state !== 'collapsed'} {...tooltip} />\n </Tooltip>\n )\n}\n\nfunction DetailDialogSidebarMenuAction({\n className,\n asChild = false,\n showOnHover = false,\n ...props\n}: React.ComponentProps<'button'> & {\n asChild?: boolean\n showOnHover?: boolean\n}) {\n const Comp = asChild ? SlotPrimitive.Slot : 'button'\n\n return (\n <Comp\n data-slot=\"sidebar-menu-action\"\n data-sidebar=\"menu-action\"\n className={cn(\n 'text-sidebar-foreground ring-sidebar-ring',\n 'hover:bg-sidebar-accent',\n 'hover:text-sidebar-accent-foreground',\n 'peer-hover/menu-button:text-sidebar-accent-foreground absolute top-1.5 right-1 flex aspect-square w-5 items-center justify-center rounded-md p-0 outline-hidden transition-transform',\n 'focus-visible:ring-2',\n '[&>svg]:size-4',\n '[&>svg]:shrink-0',\n // Increases the hit area of the button on mobile.\n 'after:absolute after:-inset-2 md:after:hidden',\n 'peer-data-[size=sm]/menu-button:top-1',\n 'peer-data-[size=default]/menu-button:top-1.5',\n 'peer-data-[size=lg]/menu-button:top-2.5',\n 'group-data-[collapsible=icon]:hidden',\n showOnHover && 'peer-data-[active=true]/menu-button:text-sidebar-accent-foreground',\n showOnHover && '$group-focus-within/menu-item:opacity-100',\n showOnHover && 'group-hover/menu-item:opacity-100',\n showOnHover && 'data-[state=open]:opacity-100 md:opacity-0',\n className,\n )}\n {...props}\n />\n )\n}\n\nfunction DetailDialogSidebarMenuBadge({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"sidebar-menu-badge\"\n data-sidebar=\"menu-badge\"\n className={cn(\n 'text-sidebar-foreground pointer-events-none absolute right-1 flex h-5 min-w-5 items-center justify-center rounded-md px-1 text-xs font-medium tabular-nums select-none',\n 'peer-hover/menu-button:text-sidebar-accent-foreground',\n 'peer-data-[active=true]/menu-button:text-sidebar-accent-foreground',\n 'peer-data-[size=sm]/menu-button:top-1',\n 'peer-data-[size=default]/menu-button:top-1.5',\n 'peer-data-[size=lg]/menu-button:top-2.5',\n 'group-data-[collapsible=icon]:hidden',\n className,\n )}\n {...props}\n />\n )\n}\n\nfunction DetailDialogSidebarMenuSkeleton({\n className,\n showIcon = false,\n ...props\n}: React.ComponentProps<'div'> & {\n showIcon?: boolean\n}) {\n // Random width between 50 to 90%.\n const width = useMemo(() => {\n return `${Math.floor(Math.random() * 40) + 50}%`\n }, [])\n\n return (\n <div data-slot=\"sidebar-menu-skeleton\" data-sidebar=\"menu-skeleton\" className={cn('flex h-8 items-center gap-2 rounded-md px-2', className)} {...props}>\n {showIcon && <Skeleton className=\"size-4 rounded-md\" data-sidebar=\"menu-skeleton-icon\" />}\n <Skeleton\n className=\"h-4 max-w-(--skeleton-width) flex-1\"\n data-sidebar=\"menu-skeleton-text\"\n style={\n {\n '--skeleton-width': width,\n } as React.CSSProperties\n }\n />\n </div>\n )\n}\n\nfunction DetailDialogSidebarMenuSub({ className, ...props }: React.ComponentProps<'ul'>) {\n return (\n <ul\n data-slot=\"sidebar-menu-sub\"\n data-sidebar=\"menu-sub\"\n className={cn(\n 'border-sidebar-border mx-3.5 flex min-w-0 translate-x-px flex-col gap-1 border-l px-2.5 py-0.5',\n 'group-data-[collapsible=icon]:hidden',\n className,\n )}\n {...props}\n />\n )\n}\n\nfunction DetailDialogSidebarMenuSubItem({ className, ...props }: React.ComponentProps<'li'>) {\n return <li data-slot=\"sidebar-menu-sub-item\" data-sidebar=\"menu-sub-item\" className={cn('group/menu-sub-item relative', className)} {...props} />\n}\n\nfunction DetailDialogSidebarMenuSubButton({\n asChild = false,\n size = 'md',\n isActive = false,\n className,\n ...props\n}: React.ComponentProps<'a'> & {\n asChild?: boolean\n size?: 'sm' | 'md'\n isActive?: boolean\n}) {\n const Comp = asChild ? SlotPrimitive.Slot : 'a'\n\n return (\n <Comp\n data-slot=\"sidebar-menu-sub-button\"\n data-sidebar=\"menu-sub-button\"\n data-size={size}\n data-active={isActive}\n className={cn(\n 'text-sidebar-foreground ring-sidebar-ring',\n 'flex h-7 min-w-0 -translate-x-px items-center gap-2 overflow-hidden rounded-md px-2 outline-hidden',\n 'hover:bg-sidebar-accent',\n 'hover:text-sidebar-accent-foreground',\n 'active:bg-sidebar-accent',\n 'active:text-sidebar-accent-foreground',\n 'focus-visible:ring-2',\n 'disabled:pointer-events-none',\n 'disabled:opacity-50',\n 'aria-disabled:pointer-events-none',\n 'aria-disabled:opacity-50',\n '[&>span:last-child]:truncate',\n '[&>svg]:size-4',\n '[&>svg]:shrink-0',\n '[&>svg]:text-sidebar-accent-foreground',\n 'data-[active=true]:bg-sidebar-accent',\n 'data-[active=true]:text-sidebar-accent-foreground',\n 'group-data-[collapsible=icon]:hidden',\n size === 'sm' && 'text-xs',\n size === 'md' && 'text-sm',\n className,\n )}\n {...props}\n />\n )\n}\n\nexport {\n DetailDialogSidebarContent,\n DetailDialogSidebarFooter,\n DetailDialogSidebarGroup,\n DetailDialogSidebarGroupAction,\n DetailDialogSidebarGroupContent,\n DetailDialogSidebarGroupLabel,\n DetailDialogSidebarHeader,\n DetailDialogSidebarMenu,\n DetailDialogSidebarMenuAction,\n DetailDialogSidebarMenuBadge,\n DetailDialogSidebarMenuButton,\n DetailDialogSidebarMenuItem,\n DetailDialogSidebarMenuSkeleton,\n DetailDialogSidebarMenuSub,\n DetailDialogSidebarMenuSubButton,\n DetailDialogSidebarMenuSubItem,\n DetailDialogSidebarRail,\n DetailDialogSidebarSeparator,\n DetailDialogSidebarTrigger,\n Sidebar,\n SidebarInput,\n SidebarInset,\n SidebarProvider,\n // eslint-disable-next-line react-refresh/only-export-components\n useSidebar,\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"sidebar-BgOz0zZh.js","names":["open","Separator","SlotPrimitive","Tooltip"],"sources":["../packages/components/dialogs/detail-dialog/component/sidebar.tsx"],"sourcesContent":["'use client'\nimport { createContext, useCallback, useContext, useEffect, useMemo, useState } from 'react'\nimport { useIsMobile } from '@customafk/react-toolkit/hooks/useMobile'\nimport { cn } from '@customafk/react-toolkit/utils'\n\nimport { MenuIcon } from 'lucide-react'\n\nimport { Button } from '@/components/ui/button'\nimport { Input } from '@/components/ui/input'\nimport { Separator } from '@/components/ui/separator'\nimport { Sheet, SheetContent, SheetDescription, SheetHeader, SheetTitle } from '@/components/ui/sheet'\nimport { Skeleton } from '@/components/ui/skeleton'\nimport { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from '@/components/ui/tooltip'\n\nimport { cva, type VariantProps } from 'class-variance-authority'\nimport { Slot as SlotPrimitive } from 'radix-ui'\n\nconst SIDEBAR_COOKIE_NAME = 'detai_dialog_sidebar_state'\nconst SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7\nconst SIDEBAR_WIDTH = '16rem'\nconst SIDEBAR_WIDTH_MOBILE = '18rem'\nconst SIDEBAR_WIDTH_ICON = '3rem'\nconst SIDEBAR_KEYBOARD_SHORTCUT = 'p'\n\ntype SidebarContextProps = {\n state: 'expanded' | 'collapsed'\n open: boolean\n setOpen: (open: boolean) => void\n openMobile: boolean\n setOpenMobile: (open: boolean) => void\n isMobile: boolean\n toggleSidebar: () => void\n}\n\nconst SidebarContext = createContext<SidebarContextProps | null>(null)\n\nfunction useSidebar() {\n const context = useContext(SidebarContext)\n if (!context) {\n throw new Error('useSidebar must be used within a SidebarProvider.')\n }\n\n return context\n}\n\nfunction SidebarProvider({\n defaultOpen = true,\n open: openProp,\n onOpenChange: setOpenProp,\n className,\n style,\n children,\n ...props\n}: React.ComponentProps<'div'> & {\n defaultOpen?: boolean\n open?: boolean\n onOpenChange?: (open: boolean) => void\n}) {\n const isMobile = useIsMobile()\n const [openMobile, setOpenMobile] = useState(false)\n\n // This is the internal state of the sidebar.\n // We use openProp and setOpenProp for control from outside the component.\n const [_open, _setOpen] = useState(defaultOpen)\n const open = openProp ?? _open\n const setOpen = useCallback(\n (value: boolean | ((value: boolean) => boolean)) => {\n const openState = typeof value === 'function' ? value(open) : value\n if (setOpenProp) {\n setOpenProp(openState)\n } else {\n _setOpen(openState)\n }\n\n // This sets the cookie to keep the sidebar state.\n document.cookie = `${SIDEBAR_COOKIE_NAME}=${openState}; path=/; max-age=${SIDEBAR_COOKIE_MAX_AGE}`\n },\n [setOpenProp, open],\n )\n\n // Helper to toggle the sidebar.\n const toggleSidebar = useCallback(() => {\n return isMobile ? setOpenMobile((open) => !open) : setOpen((open) => !open)\n }, [isMobile, setOpen])\n\n // Adds a keyboard shortcut to toggle the sidebar.\n useEffect(() => {\n const handleKeyDown = (event: KeyboardEvent) => {\n if (event.key === SIDEBAR_KEYBOARD_SHORTCUT && (event.metaKey || event.ctrlKey)) {\n event.preventDefault()\n toggleSidebar()\n }\n }\n\n window.addEventListener('keydown', handleKeyDown)\n return () => window.removeEventListener('keydown', handleKeyDown)\n }, [toggleSidebar])\n\n // We add a state so that we can do data-state=\"expanded\" or \"collapsed\".\n // This makes it easier to style the sidebar with Tailwind classes.\n const state = open ? 'expanded' : 'collapsed'\n\n const contextValue = useMemo<SidebarContextProps>(\n () => ({\n state,\n isMobile,\n\n toggleSidebar,\n\n open,\n setOpen,\n\n openMobile,\n setOpenMobile,\n }),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [state, open, setOpen, openMobile, setOpenMobile, toggleSidebar],\n )\n\n return (\n <SidebarContext.Provider value={contextValue}>\n <TooltipProvider delayDuration={0}>\n <div\n data-slot=\"sidebar-wrapper\"\n style={\n {\n '--sidebar-width': SIDEBAR_WIDTH,\n '--sidebar-width-icon': SIDEBAR_WIDTH_ICON,\n ...style,\n } as React.CSSProperties\n }\n className={cn('group/sidebar-wrapper', 'has-data-[variant=inset]:bg-sidebar', 'flex min-h-dvh w-full', className)}\n {...props}\n >\n {children}\n </div>\n </TooltipProvider>\n </SidebarContext.Provider>\n )\n}\n\nfunction Sidebar({\n side = 'left',\n variant = 'sidebar',\n collapsible = 'offcanvas',\n className,\n children,\n ...props\n}: React.ComponentProps<'div'> & {\n side?: 'left' | 'right'\n variant?: 'sidebar' | 'floating' | 'inset'\n collapsible?: 'offcanvas' | 'icon' | 'none'\n}) {\n const { state, isMobile, openMobile, setOpenMobile } = useSidebar()\n\n if (collapsible === 'none') {\n return (\n <div data-slot=\"sidebar\" className={cn('bg-sidebar text-sidebar-foreground flex h-full w-(--sidebar-width) flex-col', className)} {...props}>\n {children}\n </div>\n )\n }\n\n if (isMobile) {\n return (\n <Sheet open={openMobile} onOpenChange={setOpenMobile} {...props}>\n <SheetContent\n data-sidebar=\"sidebar\"\n data-slot=\"sidebar\"\n data-mobile=\"true\"\n className=\"bg-sidebar text-sidebar-foreground w-(--sidebar-width) p-0 [&>button]:hidden\"\n style={\n {\n '--sidebar-width': SIDEBAR_WIDTH_MOBILE,\n } as React.CSSProperties\n }\n side={side}\n >\n <SheetHeader className=\"sr-only\">\n <SheetTitle>Sidebar</SheetTitle>\n <SheetDescription>Displays the mobile sidebar.</SheetDescription>\n </SheetHeader>\n <div className=\"flex h-full w-full flex-col\">{children}</div>\n </SheetContent>\n </Sheet>\n )\n }\n\n return (\n <div\n className=\"group peer text-sidebar-foreground hidden md:block\"\n data-state={state}\n data-collapsible={state === 'collapsed' ? collapsible : ''}\n data-variant={variant}\n data-side={side}\n data-slot=\"sidebar\"\n >\n {/* This is what handles the sidebar gap on desktop */}\n <div\n data-slot=\"sidebar-gap\"\n className={cn(\n 'relative w-(--sidebar-width) bg-transparent transition-[width] duration-200 ease-linear',\n 'group-data-[collapsible=offcanvas]:w-0',\n 'group-data-[side=right]:rotate-180',\n variant === 'floating' || variant === 'inset'\n ? 'group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4)))]'\n : 'group-data-[collapsible=icon]:w-(--sidebar-width-icon)',\n )}\n />\n <div\n data-slot=\"sidebar-container\"\n className={cn(\n 'absolute inset-y-0 hidden w-(--sidebar-width) transition-[left,right,width] duration-200 ease-linear md:flex',\n side === 'left'\n ? 'left-0 group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)]'\n : 'right-0 group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)]',\n // Adjust the padding for floating and inset variants.\n variant === 'floating' || variant === 'inset'\n ? 'p-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4))+2px)]'\n : 'group-data-[collapsible=icon]:w-(--sidebar-width-icon)',\n className,\n )}\n {...props}\n >\n <div\n data-sidebar=\"sidebar\"\n data-slot=\"sidebar-inner\"\n className={cn(\n 'shadow-nav flex size-full flex-col',\n 'group-data-[variant=floating]:border-sidebar-border',\n 'group-data-[variant=floating]:rounded-lg',\n 'group-data-[variant=floating]:border',\n 'group-data-[variant=floating]:shadow-sm',\n )}\n >\n {children}\n </div>\n </div>\n </div>\n )\n}\n\nfunction DetailDialogSidebarTrigger({ className, onClick, ...props }: React.ComponentProps<typeof Button>) {\n const { toggleSidebar } = useSidebar()\n\n return (\n <Button\n data-sidebar=\"trigger\"\n data-slot=\"sidebar-trigger\"\n variant=\"ghost\"\n color=\"secondary\"\n size=\"icon\"\n className={cn('size-10 rounded-full [&_svg]:!size-6', className)}\n onClick={(event) => {\n onClick?.(event)\n toggleSidebar()\n }}\n {...props}\n >\n <MenuIcon />\n <span className=\"sr-only\">Toggle Sidebar</span>\n </Button>\n )\n}\n\nfunction DetailDialogSidebarRail({ className, ...props }: React.ComponentProps<'button'>) {\n const { toggleSidebar } = useSidebar()\n\n return (\n <button\n data-sidebar=\"rail\"\n data-slot=\"sidebar-rail\"\n aria-label=\"Toggle Sidebar\"\n tabIndex={-1}\n onClick={toggleSidebar}\n title=\"Toggle Sidebar\"\n className={cn(\n 'absolute inset-y-0 z-20 hidden w-4 -translate-x-1/2 transition-all ease-linear sm:flex',\n 'after:absolute',\n 'after:inset-y-0',\n 'after:left-1/2 after:w-0.5',\n 'hover:after:bg-sidebar-border',\n 'group-data-[side=left]:-right-4',\n 'group-data-[side=right]:left-0',\n 'in-data-[side=left]:cursor-w-resize',\n 'in-data-[side=right]:cursor-e-resize',\n '[[data-side=left][data-state=collapsed]_&]:cursor-e-resize',\n '[[data-side=right][data-state=collapsed]_&]:cursor-w-resize',\n 'hover:group-data-[collapsible=offcanvas]:bg-sidebar',\n 'group-data-[collapsible=offcanvas]:translate-x-0',\n 'group-data-[collapsible=offcanvas]:after:left-full',\n '[[data-side=left][data-collapsible=offcanvas]_&]:-right-2',\n '[[data-side=right][data-collapsible=offcanvas]_&]:-left-2',\n className,\n )}\n {...props}\n />\n )\n}\n\nfunction SidebarInset({ className, ...props }: React.ComponentProps<'main'>) {\n return (\n <main\n data-slot=\"sidebar-inset\"\n className={cn(\n 'bg-background relative flex w-full flex-1 flex-col',\n 'md:peer-data-[variant=inset]:m-2',\n 'md:peer-data-[variant=inset]:ml-0',\n 'md:peer-data-[variant=inset]:rounded-xl',\n 'md:peer-data-[variant=inset]:shadow-sm',\n 'md:peer-data-[variant=inset]:peer-data-[state=collapsed]:ml-2',\n className,\n )}\n {...props}\n />\n )\n}\n\nfunction SidebarInput({ className, ...props }: React.ComponentProps<typeof Input>) {\n return <Input data-slot=\"sidebar-input\" data-sidebar=\"input\" className={cn('bg-background h-8 w-full shadow-none', className)} {...props} />\n}\n\nfunction DetailDialogSidebarHeader({ className, ...props }: React.ComponentProps<'div'>) {\n return <div data-slot=\"sidebar-header\" data-sidebar=\"header\" className={cn('flex flex-col gap-2 p-2', className)} {...props} />\n}\n\nfunction DetailDialogSidebarFooter({ className, ...props }: React.ComponentProps<'div'>) {\n return <div data-slot=\"sidebar-footer\" data-sidebar=\"footer\" className={cn('flex flex-col gap-2 p-2', className)} {...props} />\n}\n\nfunction DetailDialogSidebarSeparator({ className, ...props }: React.ComponentProps<typeof Separator>) {\n return <Separator data-slot=\"sidebar-separator\" data-sidebar=\"separator\" className={cn('bg-sidebar-border mx-2 w-auto', className)} {...props} />\n}\n\nfunction DetailDialogSidebarContent({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"sidebar-content\"\n data-sidebar=\"content\"\n className={cn('flex min-h-0 flex-1 flex-col gap-2 overflow-auto', 'group-data-[collapsible=icon]:overflow-hidden', className)}\n {...props}\n />\n )\n}\n\nfunction DetailDialogSidebarGroup({ className, ...props }: React.ComponentProps<'div'>) {\n return <div data-slot=\"sidebar-group\" data-sidebar=\"group\" className={cn('relative flex w-full min-w-0 flex-col p-2', className)} {...props} />\n}\n\nfunction DetailDialogSidebarGroupLabel({ className, asChild = false, ...props }: React.ComponentProps<'div'> & { asChild?: boolean }) {\n const Comp = asChild ? SlotPrimitive.Slot : 'div'\n\n return (\n <Comp\n data-slot=\"sidebar-group-label\"\n data-sidebar=\"group-label\"\n className={cn(\n 'text-sidebar-foreground/70 ring-sidebar-ring flex h-8 shrink-0 items-center rounded-md px-2 text-xs font-medium outline-hidden transition-[margin,opacity] duration-200 ease-linear',\n 'focus-visible:ring-2',\n '[&>svg]:size-4',\n '[&>svg]:shrink-0',\n 'group-data-[collapsible=icon]:-mt-8',\n 'group-data-[collapsible=icon]:opacity-0',\n className,\n )}\n {...props}\n />\n )\n}\n\nfunction DetailDialogSidebarGroupAction({ className, asChild = false, ...props }: React.ComponentProps<'button'> & { asChild?: boolean }) {\n const Comp = asChild ? SlotPrimitive.Slot : 'button'\n\n return (\n <Comp\n data-slot=\"sidebar-group-action\"\n data-sidebar=\"group-action\"\n className={cn(\n 'text-sidebar-foreground ring-sidebar-ring absolute top-3.5 right-3 flex aspect-square w-5 items-center justify-center rounded-md p-0 outline-hidden transition-transform',\n 'hover:bg-sidebar-accent hover:text-sidebar-accent-foreground',\n 'focus-visible:ring-2',\n '[&>svg]:size-4',\n '[&>svg]:shrink-0',\n // Increases the hit area of the button on mobile.\n 'after:absolute',\n 'after:-inset-2',\n 'md:after:hidden',\n 'group-data-[collapsible=icon]:hidden',\n className,\n )}\n {...props}\n />\n )\n}\n\nfunction DetailDialogSidebarGroupContent({ className, ...props }: React.ComponentProps<'div'>) {\n return <div data-slot=\"sidebar-group-content\" data-sidebar=\"group-content\" className={cn('w-full text-sm', className)} {...props} />\n}\n\nfunction DetailDialogSidebarMenu({ className, ...props }: React.ComponentProps<'ul'>) {\n return <ul data-slot=\"sidebar-menu\" data-sidebar=\"menu\" className={cn('flex w-full min-w-0 flex-col gap-1', className)} {...props} />\n}\n\nfunction DetailDialogSidebarMenuItem({ className, ...props }: React.ComponentProps<'li'>) {\n return <li data-slot=\"sidebar-menu-item\" data-sidebar=\"menu-item\" className={cn('group/menu-item relative', className)} {...props} />\n}\n\nconst sidebarMenuButtonVariants = cva(\n [\n 'peer/menu-button',\n 'cursor-pointer',\n 'flex w-full items-center gap-2',\n 'overflow-hidden rounded-md p-2 outline-hidden',\n 'text-left truncate',\n 'transition-[color,width,height,padding]',\n 'hover:bg-sidebar-accent',\n 'hover:text-sidebar-accent-foreground',\n 'active:bg-sidebar-accent',\n 'active:text-sidebar-accent-foreground',\n 'disabled:pointer-events-none',\n 'disabled:opacity-50',\n 'group-has-data-[sidebar=menu-action]/menu-item:pr-8',\n 'aria-disabled:pointer-events-none',\n 'aria-disabled:opacity-50',\n 'data-[active=true]:bg-sidebar-primary-muted',\n 'data-[active=true]:font-medium',\n 'data-[active=true]:text-sidebar-primary',\n 'data-[state=open]:hover:bg-sidebar-accent',\n 'data-[state=open]:hover:text-sidebar-accent-foreground',\n 'group-data-[collapsible=icon]:size-8!',\n 'group-data-[collapsible=icon]:p-2!',\n '[&>svg]:size-4',\n '[&>svg]:shrink-0',\n '[&>span:last-child]:truncate',\n ],\n {\n variants: {\n variant: {\n default: 'hover:bg-sidebar-accent/60 hover:text-sidebar-accent-foreground/80',\n outline:\n 'bg-background shadow-[0_0_0_1px_hsl(var(--sidebar-border))] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground hover:shadow-[0_0_0_1px_hsl(var(--sidebar-accent))]',\n },\n size: {\n default: 'h-8 text-sm',\n sm: 'h-7 text-xs',\n lg: 'h-12 text-sm group-data-[collapsible=icon]:p-0!',\n },\n },\n defaultVariants: {\n variant: 'default',\n size: 'default',\n },\n },\n)\n\nfunction DetailDialogSidebarMenuButton({\n asChild = false,\n isActive = false,\n variant = 'default',\n size = 'default',\n tooltip,\n className,\n ...props\n}: React.ComponentProps<'button'> & {\n asChild?: boolean\n isActive?: boolean\n tooltip?: string | React.ComponentProps<typeof TooltipContent>\n} & VariantProps<typeof sidebarMenuButtonVariants>) {\n const Comp = asChild ? SlotPrimitive.Slot : 'button'\n const { state } = useSidebar()\n\n const button = (\n <Comp\n data-slot=\"sidebar-menu-button\"\n data-sidebar=\"menu-button\"\n data-size={size}\n data-active={isActive}\n className={cn(sidebarMenuButtonVariants({ variant, size }), className)}\n {...props}\n />\n )\n\n if (!tooltip) {\n return button\n }\n\n if (typeof tooltip === 'string') {\n tooltip = {\n children: tooltip,\n }\n }\n\n return (\n <Tooltip>\n <TooltipTrigger asChild>{button}</TooltipTrigger>\n <TooltipContent side=\"right\" align=\"center\" hidden={state !== 'collapsed'} {...tooltip} />\n </Tooltip>\n )\n}\n\nfunction DetailDialogSidebarMenuAction({\n className,\n asChild = false,\n showOnHover = false,\n ...props\n}: React.ComponentProps<'button'> & {\n asChild?: boolean\n showOnHover?: boolean\n}) {\n const Comp = asChild ? SlotPrimitive.Slot : 'button'\n\n return (\n <Comp\n data-slot=\"sidebar-menu-action\"\n data-sidebar=\"menu-action\"\n className={cn(\n 'text-sidebar-foreground ring-sidebar-ring',\n 'hover:bg-sidebar-accent',\n 'hover:text-sidebar-accent-foreground',\n 'peer-hover/menu-button:text-sidebar-accent-foreground absolute top-1.5 right-1 flex aspect-square w-5 items-center justify-center rounded-md p-0 outline-hidden transition-transform',\n 'focus-visible:ring-2',\n '[&>svg]:size-4',\n '[&>svg]:shrink-0',\n // Increases the hit area of the button on mobile.\n 'after:absolute after:-inset-2 md:after:hidden',\n 'peer-data-[size=sm]/menu-button:top-1',\n 'peer-data-[size=default]/menu-button:top-1.5',\n 'peer-data-[size=lg]/menu-button:top-2.5',\n 'group-data-[collapsible=icon]:hidden',\n showOnHover && 'peer-data-[active=true]/menu-button:text-sidebar-accent-foreground',\n showOnHover && '$group-focus-within/menu-item:opacity-100',\n showOnHover && 'group-hover/menu-item:opacity-100',\n showOnHover && 'data-[state=open]:opacity-100 md:opacity-0',\n className,\n )}\n {...props}\n />\n )\n}\n\nfunction DetailDialogSidebarMenuBadge({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"sidebar-menu-badge\"\n data-sidebar=\"menu-badge\"\n className={cn(\n 'text-sidebar-foreground pointer-events-none absolute right-1 flex h-5 min-w-5 items-center justify-center rounded-md px-1 text-xs font-medium tabular-nums select-none',\n 'peer-hover/menu-button:text-sidebar-accent-foreground',\n 'peer-data-[active=true]/menu-button:text-sidebar-accent-foreground',\n 'peer-data-[size=sm]/menu-button:top-1',\n 'peer-data-[size=default]/menu-button:top-1.5',\n 'peer-data-[size=lg]/menu-button:top-2.5',\n 'group-data-[collapsible=icon]:hidden',\n className,\n )}\n {...props}\n />\n )\n}\n\nfunction DetailDialogSidebarMenuSkeleton({\n className,\n showIcon = false,\n ...props\n}: React.ComponentProps<'div'> & {\n showIcon?: boolean\n}) {\n // Random width between 50 to 90%.\n const width = useMemo(() => {\n return `${Math.floor(Math.random() * 40) + 50}%`\n }, [])\n\n return (\n <div data-slot=\"sidebar-menu-skeleton\" data-sidebar=\"menu-skeleton\" className={cn('flex h-8 items-center gap-2 rounded-md px-2', className)} {...props}>\n {showIcon && <Skeleton className=\"size-4 rounded-md\" data-sidebar=\"menu-skeleton-icon\" />}\n <Skeleton\n className=\"h-4 max-w-(--skeleton-width) flex-1\"\n data-sidebar=\"menu-skeleton-text\"\n style={\n {\n '--skeleton-width': width,\n } as React.CSSProperties\n }\n />\n </div>\n )\n}\n\nfunction DetailDialogSidebarMenuSub({ className, ...props }: React.ComponentProps<'ul'>) {\n return (\n <ul\n data-slot=\"sidebar-menu-sub\"\n data-sidebar=\"menu-sub\"\n className={cn(\n 'border-sidebar-border mx-3.5 flex min-w-0 translate-x-px flex-col gap-1 border-l px-2.5 py-0.5',\n 'group-data-[collapsible=icon]:hidden',\n className,\n )}\n {...props}\n />\n )\n}\n\nfunction DetailDialogSidebarMenuSubItem({ className, ...props }: React.ComponentProps<'li'>) {\n return <li data-slot=\"sidebar-menu-sub-item\" data-sidebar=\"menu-sub-item\" className={cn('group/menu-sub-item relative', className)} {...props} />\n}\n\nfunction DetailDialogSidebarMenuSubButton({\n asChild = false,\n size = 'md',\n isActive = false,\n className,\n ...props\n}: React.ComponentProps<'a'> & {\n asChild?: boolean\n size?: 'sm' | 'md'\n isActive?: boolean\n}) {\n const Comp = asChild ? SlotPrimitive.Slot : 'a'\n\n return (\n <Comp\n data-slot=\"sidebar-menu-sub-button\"\n data-sidebar=\"menu-sub-button\"\n data-size={size}\n data-active={isActive}\n className={cn(\n 'text-sidebar-foreground ring-sidebar-ring',\n 'flex h-7 min-w-0 -translate-x-px items-center gap-2 overflow-hidden rounded-md px-2 outline-hidden',\n 'hover:bg-sidebar-accent',\n 'hover:text-sidebar-accent-foreground',\n 'active:bg-sidebar-accent',\n 'active:text-sidebar-accent-foreground',\n 'focus-visible:ring-2',\n 'disabled:pointer-events-none',\n 'disabled:opacity-50',\n 'aria-disabled:pointer-events-none',\n 'aria-disabled:opacity-50',\n '[&>span:last-child]:truncate',\n '[&>svg]:size-4',\n '[&>svg]:shrink-0',\n '[&>svg]:text-sidebar-accent-foreground',\n 'data-[active=true]:bg-sidebar-accent',\n 'data-[active=true]:text-sidebar-accent-foreground',\n 'group-data-[collapsible=icon]:hidden',\n size === 'sm' && 'text-xs',\n size === 'md' && 'text-sm',\n className,\n )}\n {...props}\n />\n )\n}\n\nexport {\n DetailDialogSidebarContent,\n DetailDialogSidebarFooter,\n DetailDialogSidebarGroup,\n DetailDialogSidebarGroupAction,\n DetailDialogSidebarGroupContent,\n DetailDialogSidebarGroupLabel,\n DetailDialogSidebarHeader,\n DetailDialogSidebarMenu,\n DetailDialogSidebarMenuAction,\n DetailDialogSidebarMenuBadge,\n DetailDialogSidebarMenuButton,\n DetailDialogSidebarMenuItem,\n DetailDialogSidebarMenuSkeleton,\n DetailDialogSidebarMenuSub,\n DetailDialogSidebarMenuSubButton,\n DetailDialogSidebarMenuSubItem,\n DetailDialogSidebarRail,\n DetailDialogSidebarSeparator,\n DetailDialogSidebarTrigger,\n Sidebar,\n SidebarInput,\n SidebarInset,\n SidebarProvider,\n // eslint-disable-next-line react-refresh/only-export-components\n useSidebar,\n}\n"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
1
  const e=require(`./chunk-CUT6urMc.cjs`),t=e.__toESM(require(`@customafk/react-toolkit/utils`)),n=e.__toESM(require(`react/jsx-runtime`));function r({className:e,...r}){return(0,n.jsx)(`div`,{"data-slot":`skeleton`,className:(0,t.cn)(`bg-muted-muted animate-pulse rounded-md`,e),...r})}Object.defineProperty(exports,`Skeleton`,{enumerable:!0,get:function(){return r}});
2
- //# sourceMappingURL=skeleton-CmGSyYRm.cjs.map
2
+ //# sourceMappingURL=skeleton-BA-3d3bn.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"skeleton-CmGSyYRm.cjs","names":[],"sources":["../packages/components/ui/skeleton.tsx"],"sourcesContent":["'use client'\nimport { cn } from '@customafk/react-toolkit/utils'\n\nfunction Skeleton({ className, ...props }: React.ComponentProps<'div'>) {\n return <div data-slot=\"skeleton\" className={cn('bg-muted-muted animate-pulse rounded-md', className)} {...props} />\n}\n\nexport { Skeleton }\n"],"mappings":"yIAGA,SAAS,EAAS,CAAE,YAAW,GAAG,GAAsC,CACtE,OAAO,EAAA,EAAA,KAAC,MAAA,CAAI,YAAU,WAAW,WAAA,EAAA,EAAA,IAAc,0CAA2C,GAAY,GAAI"}
1
+ {"version":3,"file":"skeleton-BA-3d3bn.cjs","names":[],"sources":["../packages/components/ui/skeleton.tsx"],"sourcesContent":["'use client'\nimport { cn } from '@customafk/react-toolkit/utils'\n\nfunction Skeleton({ className, ...props }: React.ComponentProps<'div'>) {\n return <div data-slot=\"skeleton\" className={cn('bg-muted-muted animate-pulse rounded-md', className)} {...props} />\n}\n\nexport { Skeleton }\n"],"mappings":"yIAGA,SAAS,EAAS,CAAE,YAAW,GAAG,GAAsC,CACtE,OAAO,EAAA,EAAA,KAAC,MAAA,CAAI,YAAU,WAAW,WAAA,EAAA,EAAA,IAAc,0CAA2C,GAAY,GAAI"}
@@ -1,2 +1,2 @@
1
1
  import{cn as e}from"@customafk/react-toolkit/utils";import{jsx as t}from"react/jsx-runtime";function n({className:n,...r}){return t(`div`,{"data-slot":`skeleton`,className:e(`bg-muted-muted animate-pulse rounded-md`,n),...r})}export{n as Skeleton};
2
- //# sourceMappingURL=skeleton-DFF0w4en.js.map
2
+ //# sourceMappingURL=skeleton-ByN-MrQO.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"skeleton-DFF0w4en.js","names":[],"sources":["../packages/components/ui/skeleton.tsx"],"sourcesContent":["'use client'\nimport { cn } from '@customafk/react-toolkit/utils'\n\nfunction Skeleton({ className, ...props }: React.ComponentProps<'div'>) {\n return <div data-slot=\"skeleton\" className={cn('bg-muted-muted animate-pulse rounded-md', className)} {...props} />\n}\n\nexport { Skeleton }\n"],"mappings":"4FAGA,SAAS,EAAS,CAAE,YAAW,GAAG,GAAsC,CACtE,OAAO,EAAC,MAAA,CAAI,YAAU,WAAW,UAAW,EAAG,0CAA2C,GAAY,GAAI"}
1
+ {"version":3,"file":"skeleton-ByN-MrQO.js","names":[],"sources":["../packages/components/ui/skeleton.tsx"],"sourcesContent":["'use client'\nimport { cn } from '@customafk/react-toolkit/utils'\n\nfunction Skeleton({ className, ...props }: React.ComponentProps<'div'>) {\n return <div data-slot=\"skeleton\" className={cn('bg-muted-muted animate-pulse rounded-md', className)} {...props} />\n}\n\nexport { Skeleton }\n"],"mappings":"4FAGA,SAAS,EAAS,CAAE,YAAW,GAAG,GAAsC,CACtE,OAAO,EAAC,MAAA,CAAI,YAAU,WAAW,UAAW,EAAG,0CAA2C,GAAY,GAAI"}
@@ -1,2 +1,2 @@
1
- const e=require(`./chunk-CUT6urMc.cjs`),t=e.__toESM(require(`@customafk/react-toolkit/utils`)),n=e.__toESM(require(`radix-ui`)),r=e.__toESM(require(`react/jsx-runtime`));function i({className:e,...i}){return(0,r.jsx)(n.Switch.Root,{"data-slot":`switch`,className:(0,t.cn)(`peer`,`w-8 shrink-0 cursor-pointer items-center rounded-full border border-transparent shadow-xs transition-all outline-none`,`inline-flex h-5`,`data-[state=checked]:bg-primary`,`data-[state=unchecked]:bg-border-muted`,`focus-visible:border-primary-strong`,`focus-visible:ring-primary-weak`,`focus-visible:ring-4`,`disabled:cursor-not-allowed`,`disabled:opacity-50`,`data-[state=unchecked]:border-border-weak`,`data-[state=unchecked]:[&_span]:bg-accent-weak`,`data-[state=unchecked]:bg-transparent`,`data-[state=unchecked]:[&_span]:size-4`,`data-[state=unchecked]:[&_span]:translate-x-0.5`,`data-[state=unchecked]:[&_span]:shadow-none`,`data-[state=unchecked]:[&_span]:rtl:-translate-x-0.5`,e),...i,children:(0,r.jsx)(n.Switch.Thumb,{"data-slot":`switch-thumb`,className:(0,t.cn)(`bg-background`,`pointer-events-none block size-4 rounded-full ring-0 transition-transform`,`data-[state=checked]:translate-x-[calc(100%-3px)]`,`data-[state=unchecked]:translate-x-0`)})})}Object.defineProperty(exports,`Switch`,{enumerable:!0,get:function(){return i}});
2
- //# sourceMappingURL=switch-BPSKvrTw.cjs.map
1
+ const e=require(`./chunk-CUT6urMc.cjs`),t=e.__toESM(require(`@customafk/react-toolkit/utils`)),n=e.__toESM(require(`react/jsx-runtime`)),r=e.__toESM(require(`radix-ui`));function i({className:e,...i}){return(0,n.jsx)(r.Switch.Root,{"data-slot":`switch`,className:(0,t.cn)(`peer`,`w-8 shrink-0 cursor-pointer items-center rounded-full border border-transparent shadow-xs transition-all outline-none`,`inline-flex h-5`,`data-[state=checked]:bg-primary`,`data-[state=unchecked]:bg-border-muted`,`focus-visible:border-primary-strong`,`focus-visible:ring-primary-weak`,`focus-visible:ring-4`,`disabled:cursor-not-allowed`,`disabled:opacity-50`,`data-[state=unchecked]:border-border-weak`,`data-[state=unchecked]:[&_span]:bg-accent-weak`,`data-[state=unchecked]:bg-transparent`,`data-[state=unchecked]:[&_span]:size-4`,`data-[state=unchecked]:[&_span]:translate-x-0.5`,`data-[state=unchecked]:[&_span]:shadow-none`,`data-[state=unchecked]:[&_span]:rtl:-translate-x-0.5`,e),...i,children:(0,n.jsx)(r.Switch.Thumb,{"data-slot":`switch-thumb`,className:(0,t.cn)(`bg-background`,`pointer-events-none block size-4 rounded-full ring-0 transition-transform`,`data-[state=checked]:translate-x-[calc(100%-3px)]`,`data-[state=unchecked]:translate-x-0`)})})}Object.defineProperty(exports,`Switch`,{enumerable:!0,get:function(){return i}});
2
+ //# sourceMappingURL=switch-BLfDkOOl.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"switch-BPSKvrTw.cjs","names":["SwitchPrimitive"],"sources":["../packages/components/ui/switch.tsx"],"sourcesContent":["'use client'\nimport { cn } from '@customafk/react-toolkit/utils'\n\nimport { Switch as SwitchPrimitive } from 'radix-ui'\n\nfunction Switch({ className, ...props }: React.ComponentProps<typeof SwitchPrimitive.Root>) {\n return (\n <SwitchPrimitive.Root\n data-slot=\"switch\"\n className={cn(\n 'peer',\n 'w-8 shrink-0 cursor-pointer items-center rounded-full border border-transparent shadow-xs transition-all outline-none',\n 'inline-flex h-5',\n 'data-[state=checked]:bg-primary',\n 'data-[state=unchecked]:bg-border-muted',\n 'focus-visible:border-primary-strong',\n 'focus-visible:ring-primary-weak',\n 'focus-visible:ring-4',\n 'disabled:cursor-not-allowed',\n 'disabled:opacity-50',\n 'data-[state=unchecked]:border-border-weak',\n 'data-[state=unchecked]:[&_span]:bg-accent-weak',\n 'data-[state=unchecked]:bg-transparent',\n 'data-[state=unchecked]:[&_span]:size-4',\n 'data-[state=unchecked]:[&_span]:translate-x-0.5',\n 'data-[state=unchecked]:[&_span]:shadow-none',\n 'data-[state=unchecked]:[&_span]:rtl:-translate-x-0.5',\n className,\n )}\n {...props}\n >\n <SwitchPrimitive.Thumb\n data-slot=\"switch-thumb\"\n className={cn(\n 'bg-background',\n 'pointer-events-none block size-4 rounded-full ring-0 transition-transform',\n 'data-[state=checked]:translate-x-[calc(100%-3px)]',\n 'data-[state=unchecked]:translate-x-0',\n )}\n />\n </SwitchPrimitive.Root>\n )\n}\n\nexport { Switch }\n"],"mappings":"0KAKA,SAAS,EAAO,CAAE,YAAW,GAAG,GAA4D,CAC1F,OACE,EAAA,EAAA,KAACA,EAAAA,OAAgB,KAAA,CACf,YAAU,SACV,WAAA,EAAA,EAAA,IACE,OACA,wHACA,kBACA,kCACA,yCACA,sCACA,kCACA,uBACA,8BACA,sBACA,4CACA,iDACA,wCACA,yCACA,kDACA,8CACA,uDACA,GAEF,GAAI,YAEJ,EAAA,EAAA,KAACA,EAAAA,OAAgB,MAAA,CACf,YAAU,eACV,WAAA,EAAA,EAAA,IACE,gBACA,4EACA,oDACA"}
1
+ {"version":3,"file":"switch-BLfDkOOl.cjs","names":["SwitchPrimitive"],"sources":["../packages/components/ui/switch.tsx"],"sourcesContent":["'use client'\nimport { cn } from '@customafk/react-toolkit/utils'\n\nimport { Switch as SwitchPrimitive } from 'radix-ui'\n\nfunction Switch({ className, ...props }: React.ComponentProps<typeof SwitchPrimitive.Root>) {\n return (\n <SwitchPrimitive.Root\n data-slot=\"switch\"\n className={cn(\n 'peer',\n 'w-8 shrink-0 cursor-pointer items-center rounded-full border border-transparent shadow-xs transition-all outline-none',\n 'inline-flex h-5',\n 'data-[state=checked]:bg-primary',\n 'data-[state=unchecked]:bg-border-muted',\n 'focus-visible:border-primary-strong',\n 'focus-visible:ring-primary-weak',\n 'focus-visible:ring-4',\n 'disabled:cursor-not-allowed',\n 'disabled:opacity-50',\n 'data-[state=unchecked]:border-border-weak',\n 'data-[state=unchecked]:[&_span]:bg-accent-weak',\n 'data-[state=unchecked]:bg-transparent',\n 'data-[state=unchecked]:[&_span]:size-4',\n 'data-[state=unchecked]:[&_span]:translate-x-0.5',\n 'data-[state=unchecked]:[&_span]:shadow-none',\n 'data-[state=unchecked]:[&_span]:rtl:-translate-x-0.5',\n className,\n )}\n {...props}\n >\n <SwitchPrimitive.Thumb\n data-slot=\"switch-thumb\"\n className={cn(\n 'bg-background',\n 'pointer-events-none block size-4 rounded-full ring-0 transition-transform',\n 'data-[state=checked]:translate-x-[calc(100%-3px)]',\n 'data-[state=unchecked]:translate-x-0',\n )}\n />\n </SwitchPrimitive.Root>\n )\n}\n\nexport { Switch }\n"],"mappings":"0KAKA,SAAS,EAAO,CAAE,YAAW,GAAG,GAA4D,CAC1F,OACE,EAAA,EAAA,KAACA,EAAAA,OAAgB,KAAA,CACf,YAAU,SACV,WAAA,EAAA,EAAA,IACE,OACA,wHACA,kBACA,kCACA,yCACA,sCACA,kCACA,uBACA,8BACA,sBACA,4CACA,iDACA,wCACA,yCACA,kDACA,8CACA,uDACA,GAEF,GAAI,YAEJ,EAAA,EAAA,KAACA,EAAAA,OAAgB,MAAA,CACf,YAAU,eACV,WAAA,EAAA,EAAA,IACE,gBACA,4EACA,oDACA"}
@@ -1,2 +1,2 @@
1
- import{cn as e}from"@customafk/react-toolkit/utils";import{Switch as t}from"radix-ui";import{jsx as n}from"react/jsx-runtime";function r({className:r,...i}){return n(t.Root,{"data-slot":`switch`,className:e(`peer`,`w-8 shrink-0 cursor-pointer items-center rounded-full border border-transparent shadow-xs transition-all outline-none`,`inline-flex h-5`,`data-[state=checked]:bg-primary`,`data-[state=unchecked]:bg-border-muted`,`focus-visible:border-primary-strong`,`focus-visible:ring-primary-weak`,`focus-visible:ring-4`,`disabled:cursor-not-allowed`,`disabled:opacity-50`,`data-[state=unchecked]:border-border-weak`,`data-[state=unchecked]:[&_span]:bg-accent-weak`,`data-[state=unchecked]:bg-transparent`,`data-[state=unchecked]:[&_span]:size-4`,`data-[state=unchecked]:[&_span]:translate-x-0.5`,`data-[state=unchecked]:[&_span]:shadow-none`,`data-[state=unchecked]:[&_span]:rtl:-translate-x-0.5`,r),...i,children:n(t.Thumb,{"data-slot":`switch-thumb`,className:e(`bg-background`,`pointer-events-none block size-4 rounded-full ring-0 transition-transform`,`data-[state=checked]:translate-x-[calc(100%-3px)]`,`data-[state=unchecked]:translate-x-0`)})})}export{r as Switch};
2
- //# sourceMappingURL=switch-Crju8DJO.js.map
1
+ import{cn as e}from"@customafk/react-toolkit/utils";import{jsx as t}from"react/jsx-runtime";import{Switch as n}from"radix-ui";function r({className:r,...i}){return t(n.Root,{"data-slot":`switch`,className:e(`peer`,`w-8 shrink-0 cursor-pointer items-center rounded-full border border-transparent shadow-xs transition-all outline-none`,`inline-flex h-5`,`data-[state=checked]:bg-primary`,`data-[state=unchecked]:bg-border-muted`,`focus-visible:border-primary-strong`,`focus-visible:ring-primary-weak`,`focus-visible:ring-4`,`disabled:cursor-not-allowed`,`disabled:opacity-50`,`data-[state=unchecked]:border-border-weak`,`data-[state=unchecked]:[&_span]:bg-accent-weak`,`data-[state=unchecked]:bg-transparent`,`data-[state=unchecked]:[&_span]:size-4`,`data-[state=unchecked]:[&_span]:translate-x-0.5`,`data-[state=unchecked]:[&_span]:shadow-none`,`data-[state=unchecked]:[&_span]:rtl:-translate-x-0.5`,r),...i,children:t(n.Thumb,{"data-slot":`switch-thumb`,className:e(`bg-background`,`pointer-events-none block size-4 rounded-full ring-0 transition-transform`,`data-[state=checked]:translate-x-[calc(100%-3px)]`,`data-[state=unchecked]:translate-x-0`)})})}export{r as Switch};
2
+ //# sourceMappingURL=switch-C8OMYLfj.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"switch-Crju8DJO.js","names":["Switch","SwitchPrimitive"],"sources":["../packages/components/ui/switch.tsx"],"sourcesContent":["'use client'\nimport { cn } from '@customafk/react-toolkit/utils'\n\nimport { Switch as SwitchPrimitive } from 'radix-ui'\n\nfunction Switch({ className, ...props }: React.ComponentProps<typeof SwitchPrimitive.Root>) {\n return (\n <SwitchPrimitive.Root\n data-slot=\"switch\"\n className={cn(\n 'peer',\n 'w-8 shrink-0 cursor-pointer items-center rounded-full border border-transparent shadow-xs transition-all outline-none',\n 'inline-flex h-5',\n 'data-[state=checked]:bg-primary',\n 'data-[state=unchecked]:bg-border-muted',\n 'focus-visible:border-primary-strong',\n 'focus-visible:ring-primary-weak',\n 'focus-visible:ring-4',\n 'disabled:cursor-not-allowed',\n 'disabled:opacity-50',\n 'data-[state=unchecked]:border-border-weak',\n 'data-[state=unchecked]:[&_span]:bg-accent-weak',\n 'data-[state=unchecked]:bg-transparent',\n 'data-[state=unchecked]:[&_span]:size-4',\n 'data-[state=unchecked]:[&_span]:translate-x-0.5',\n 'data-[state=unchecked]:[&_span]:shadow-none',\n 'data-[state=unchecked]:[&_span]:rtl:-translate-x-0.5',\n className,\n )}\n {...props}\n >\n <SwitchPrimitive.Thumb\n data-slot=\"switch-thumb\"\n className={cn(\n 'bg-background',\n 'pointer-events-none block size-4 rounded-full ring-0 transition-transform',\n 'data-[state=checked]:translate-x-[calc(100%-3px)]',\n 'data-[state=unchecked]:translate-x-0',\n )}\n />\n </SwitchPrimitive.Root>\n )\n}\n\nexport { Switch }\n"],"mappings":"8HAKA,SAASA,EAAO,CAAE,YAAW,GAAG,GAA4D,CAC1F,OACE,EAACC,EAAgB,KAAA,CACf,YAAU,SACV,UAAW,EACT,OACA,wHACA,kBACA,kCACA,yCACA,sCACA,kCACA,uBACA,8BACA,sBACA,4CACA,iDACA,wCACA,yCACA,kDACA,8CACA,uDACA,GAEF,GAAI,WAEJ,EAACA,EAAgB,MAAA,CACf,YAAU,eACV,UAAW,EACT,gBACA,4EACA,oDACA"}
1
+ {"version":3,"file":"switch-C8OMYLfj.js","names":["Switch","SwitchPrimitive"],"sources":["../packages/components/ui/switch.tsx"],"sourcesContent":["'use client'\nimport { cn } from '@customafk/react-toolkit/utils'\n\nimport { Switch as SwitchPrimitive } from 'radix-ui'\n\nfunction Switch({ className, ...props }: React.ComponentProps<typeof SwitchPrimitive.Root>) {\n return (\n <SwitchPrimitive.Root\n data-slot=\"switch\"\n className={cn(\n 'peer',\n 'w-8 shrink-0 cursor-pointer items-center rounded-full border border-transparent shadow-xs transition-all outline-none',\n 'inline-flex h-5',\n 'data-[state=checked]:bg-primary',\n 'data-[state=unchecked]:bg-border-muted',\n 'focus-visible:border-primary-strong',\n 'focus-visible:ring-primary-weak',\n 'focus-visible:ring-4',\n 'disabled:cursor-not-allowed',\n 'disabled:opacity-50',\n 'data-[state=unchecked]:border-border-weak',\n 'data-[state=unchecked]:[&_span]:bg-accent-weak',\n 'data-[state=unchecked]:bg-transparent',\n 'data-[state=unchecked]:[&_span]:size-4',\n 'data-[state=unchecked]:[&_span]:translate-x-0.5',\n 'data-[state=unchecked]:[&_span]:shadow-none',\n 'data-[state=unchecked]:[&_span]:rtl:-translate-x-0.5',\n className,\n )}\n {...props}\n >\n <SwitchPrimitive.Thumb\n data-slot=\"switch-thumb\"\n className={cn(\n 'bg-background',\n 'pointer-events-none block size-4 rounded-full ring-0 transition-transform',\n 'data-[state=checked]:translate-x-[calc(100%-3px)]',\n 'data-[state=unchecked]:translate-x-0',\n )}\n />\n </SwitchPrimitive.Root>\n )\n}\n\nexport { Switch }\n"],"mappings":"8HAKA,SAASA,EAAO,CAAE,YAAW,GAAG,GAA4D,CAC1F,OACE,EAACC,EAAgB,KAAA,CACf,YAAU,SACV,UAAW,EACT,OACA,wHACA,kBACA,kCACA,yCACA,sCACA,kCACA,uBACA,8BACA,sBACA,4CACA,iDACA,wCACA,yCACA,kDACA,8CACA,uDACA,GAEF,GAAI,WAEJ,EAACA,EAAgB,MAAA,CACf,YAAU,eACV,UAAW,EACT,gBACA,4EACA,oDACA"}
@@ -1,2 +1,2 @@
1
- Object.defineProperty(exports,`__esModule`,{value:!0});const e=require(`../chunk-CUT6urMc.cjs`),t=e.__toESM(require(`react/jsx-runtime`)),n=e.__toESM(require(`react`)),r=e.__toESM(require(`@react-oauth/google`)),i=({isDisabled:e,onGoogleLoginSuccess:t})=>{let i=(0,n.useCallback)(async e=>{!e.clientId||!e.credential||!e.select_by||await t?.({clientId:e.clientId,credential:e.credential,select_by:e.select_by})},[t]);return(0,r.useGoogleOneTapLogin)({disabled:e,use_fedcm_for_prompt:!1,onSuccess:i}),null},a=({clientId:e,isDisabled:n,onGoogleLoginSuccess:a,children:o})=>(0,t.jsxs)(r.GoogleOAuthProvider,{clientId:e,children:[o,(0,t.jsx)(i,{isDisabled:n,onGoogleLoginSuccess:a})]});var o=a;exports.Google=i,exports.default=o;
1
+ Object.defineProperty(exports,`__esModule`,{value:!0});const e=require(`../chunk-CUT6urMc.cjs`),t=e.__toESM(require(`react`)),n=e.__toESM(require(`react/jsx-runtime`)),r=e.__toESM(require(`@react-oauth/google`)),i=({isDisabled:e,onGoogleLoginSuccess:n})=>{let i=(0,t.useCallback)(async e=>{!e.clientId||!e.credential||!e.select_by||await n?.({clientId:e.clientId,credential:e.credential,select_by:e.select_by})},[n]);return(0,r.useGoogleOneTapLogin)({disabled:e,use_fedcm_for_prompt:!1,onSuccess:i}),null},a=({clientId:e,isDisabled:t,onGoogleLoginSuccess:a,children:o})=>(0,n.jsxs)(r.GoogleOAuthProvider,{clientId:e,children:[o,(0,n.jsx)(i,{isDisabled:t,onGoogleLoginSuccess:a})]});var o=a;exports.Google=i,exports.default=o;
2
2
  //# sourceMappingURL=google.cjs.map
@@ -1,2 +1,2 @@
1
- import{jsx as e,jsxs as t}from"react/jsx-runtime";import{useCallback as n}from"react";import{GoogleOAuthProvider as r,useGoogleOneTapLogin as i}from"@react-oauth/google";const a=({isDisabled:e,onGoogleLoginSuccess:t})=>{let r=n(async e=>{!e.clientId||!e.credential||!e.select_by||await t?.({clientId:e.clientId,credential:e.credential,select_by:e.select_by})},[t]);return i({disabled:e,use_fedcm_for_prompt:!1,onSuccess:r}),null},o=({clientId:n,isDisabled:i,onGoogleLoginSuccess:o,children:s})=>t(r,{clientId:n,children:[s,e(a,{isDisabled:i,onGoogleLoginSuccess:o})]});var s=o;export{a as Google,s as default};
1
+ import{useCallback as e}from"react";import{jsx as t,jsxs as n}from"react/jsx-runtime";import{GoogleOAuthProvider as r,useGoogleOneTapLogin as i}from"@react-oauth/google";const a=({isDisabled:t,onGoogleLoginSuccess:n})=>{let r=e(async e=>{!e.clientId||!e.credential||!e.select_by||await n?.({clientId:e.clientId,credential:e.credential,select_by:e.select_by})},[n]);return i({disabled:t,use_fedcm_for_prompt:!1,onSuccess:r}),null},o=({clientId:e,isDisabled:i,onGoogleLoginSuccess:o,children:s})=>n(r,{clientId:e,children:[s,t(a,{isDisabled:i,onGoogleLoginSuccess:o})]});var s=o;export{a as Google,s as default};
2
2
  //# sourceMappingURL=google.js.map
@@ -1,2 +1,2 @@
1
- const e=require(`../chunk-CUT6urMc.cjs`),t=require(`../button-119IIVCy.cjs`),n=require(`../flex-DMgD86BT.cjs`);require(`../paragraph-CI28eVP0.cjs`),require(`../input-ERPHY3v4.cjs`);const r=require(`../select-oxr4KoHx.cjs`),i=require(`../dropdown-menu-SNcBwTOA.cjs`);require(`../scroll-area-Dgjr1n1T.cjs`);const a=require(`../table-CuhHhpgi.cjs`),o=require(`../add-new-D3b8hc2C.cjs`),s=require(`../refresh-CQyFVZx9.cjs`),c=require(`../search-input-hIVKLXXb.cjs`),l=e.__toESM(require(`lucide-react`)),u=e.__toESM(require(`@customafk/react-toolkit/utils`)),d=e.__toESM(require(`react/jsx-runtime`)),f=e.__toESM(require(`react`)),p=e.__toESM(require(`@tanstack/react-table`)),m=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}},h=({column:e})=>{let t=e.getIsSorted(),n={asc:(0,d.jsx)(l.ChevronUp,{className:`shrink-0 opacity-60`,size:16,strokeWidth:2,"aria-hidden":`true`}),desc:(0,d.jsx)(l.ChevronDown,{className:`shrink-0 opacity-60`,size:16,strokeWidth:2,"aria-hidden":`true`})};return t?n[t]:null},g=({column:e})=>{let n=e.columnDef.header;return e.getCanPin()?e.getIsPinned()?(0,d.jsx)(t.Button,{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:(0,d.jsx)(l.PinOffIcon,{className:`opacity-60`,size:16,"aria-hidden":`true`})}):(0,d.jsxs)(i.DropdownMenu,{children:[(0,d.jsx)(i.DropdownMenuTrigger,{asChild:!0,children:(0,d.jsx)(t.Button,{size:`icon`,variant:`ghost`,color:`secondary`,className:`size-7 shadow-none`,"aria-label":`Pin options for ${n} column`,title:`Pin options for ${n} column`,children:(0,d.jsx)(l.EllipsisIcon,{className:`opacity-60`,size:16,"aria-hidden":`true`})})}),(0,d.jsxs)(i.DropdownMenuContent,{align:`end`,children:[(0,d.jsxs)(i.DropdownMenuItem,{onClick:()=>e.pin(`left`),children:[(0,d.jsx)(l.ArrowLeftToLineIcon,{size:16,className:`opacity-60`,"aria-hidden":`true`}),`Stick to left`]}),(0,d.jsxs)(i.DropdownMenuItem,{onClick:()=>e.pin(`right`),children:[(0,d.jsx)(l.ArrowRightToLineIcon,{size:16,className:`opacity-60`,"aria-hidden":`true`}),`Stick to right`]})]})]}):null},_=({header:e})=>{let{column:t}=e,n=e=>{t.getCanSort()&&(e.key===`Enter`||e.key===` `)&&(e.preventDefault(),t.getToggleSortingHandler()?.(e))};return(0,d.jsxs)(`div`,{className:`flex items-center justify-between gap-2 truncate`,children:[!e.isPlaceholder&&(0,d.jsxs)(`div`,{className:(0,u.cn)(t.getCanSort()&&`flex h-full cursor-pointer items-center justify-between gap-2 select-none`),onClick:t.getToggleSortingHandler(),onKeyDown:n,tabIndex:t.getCanSort()?0:void 0,children:[(0,d.jsx)(`span`,{className:`truncate`,children:(0,p.flexRender)(t.columnDef.header,e.getContext())}),(0,d.jsx)(h,{column:t})]}),!e.isPlaceholder&&(0,d.jsx)(g,{column:t})]})},v=({table:e,isLoading:t,onClickRow:n})=>{"use no memo";return(0,d.jsxs)(a.Table,{className:(0,u.cn)(`!w-full`,`table-fixed border-separate border-spacing-0`,`[&_td]:border-border-weak`,`[&_th]:border-border-weak`,`[&_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`,`[&_tfoot_td]:border-t`),style:{width:e.getTotalSize()},children:[(0,d.jsx)(a.TableHeader,{className:`sticky top-0 z-10 backdrop-blur-xs`,children:e.getHeaderGroups().map(e=>(0,d.jsx)(a.TableRow,{children:e.headers.map(e=>{let{column:t}=e,n=t.getIsPinned(),r=n===`left`&&t.getIsLastColumn(`left`),i=n===`right`&&t.getIsFirstColumn(`right`);return(0,d.jsx)(a.TableHead,{"data-pinned":n||void 0,"data-last-col":r?`left`:i?`right`:void 0,className:(0,u.cn)(`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:e.colSpan,style:{width:e.getSize(),maxWidth:e.getSize(),...m(e.column)},children:(0,d.jsx)(_,{header:e})},e.id)})},e.id))}),(0,d.jsx)(a.TableBody,{className:(0,u.cn)(t&&`h-36`,e.getRowModel().rows?.length===0&&`h-48`),children:t?(0,d.jsx)(a.TableRow,{className:`absolute top-9 flex h-36 w-full items-center justify-center`,children:(0,d.jsx)(a.TableCell,{children:`loading...`})}):(0,d.jsx)(d.Fragment,{children:e.getRowModel().rows?.length?e.getRowModel().rows.map(e=>(0,d.jsx)(a.TableRow,{"data-state":e.getIsSelected()&&`selected`,className:`cursor-pointer border-none focus:outline-none`,onClick:()=>n?.(e?.id||e.original?.id?.toString()||e.original?.uuid||void 0),children:e.getVisibleCells().map(e=>{let{column:t}=e,n=t.getIsPinned(),r=n===`left`&&t.getIsLastColumn(`left`),i=n===`right`&&t.getIsFirstColumn(`right`);return(0,d.jsx)(a.TableCell,{style:{...m(t),width:e.column.getSize(),maxWidth:e.column.getSize()},"data-pinned":n||void 0,"data-last-col":r?`left`:i?`right`:void 0,className:(0,u.cn)(`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:(0,p.flexRender)(e.column.columnDef.cell,e.getContext())},e.id)})},e.id)):(0,d.jsx)(a.TableRow,{className:`absolute top-9 flex h-36 w-full items-center justify-center`,children:(0,d.jsx)(a.TableCell,{children:(0,d.jsxs)(`div`,{className:`text-muted-foreground flex size-full flex-col items-center justify-center gap-y-8 text-base`,children:[(0,d.jsx)(l.PackagePlusIcon,{size:48,strokeWidth:2}),(0,d.jsx)(`p`,{children:`Thêm dữ liệu để hiển thị`})]})})})})})]})},y=({onAdd:e,onRefresh:t})=>(0,d.jsxs)(n.Flex,{justify:`between`,padding:`none`,width:`full`,className:`flex-0`,children:[(0,d.jsx)(`div`,{className:`max-sm:flex-1`,children:(0,d.jsx)(c.SearchInput,{placeholder:`Search...`})}),(0,d.jsxs)(n.Flex,{wrap:!1,className:`flex-0 px-0`,children:[!!e&&(0,d.jsx)(o.AddNewBtn,{onClick:e}),(0,d.jsx)(s.RefreshBtn,{onClick:t})]})]});function b({filteredSelectedRowsLength:e,filteredRowsLength:n,pageSize:i,setPageSize:a,pageIndex:o=0,setPageIndex:s,previousPage:c,nextPage:u,canPreviousPage:f,canNextPage:p,pageCount:m=1}){"use no memo";return(0,d.jsxs)(`div`,{className:`mt-4 flex w-full flex-0 flex-col flex-wrap items-start space-y-2 px-2 sm:flex-row`,children:[(0,d.jsxs)(`div`,{className:`text-text-positive flex-1 text-sm`,children:[e,` of `,n,` row(s) selected.`]}),(0,d.jsxs)(`div`,{className:`flex w-full flex-col flex-wrap items-start space-y-2 sm:w-fit sm:space-y-4`,children:[(0,d.jsxs)(`div`,{className:`flex items-center space-x-2 sm:space-x-4`,children:[(0,d.jsx)(`p`,{className:`sr-only text-sm font-medium sm:not-sr-only sm:mr-4`,children:`Rows per page`}),(0,d.jsxs)(r.Select,{value:`${i}`,onValueChange:e=>{a?.(Number(e))},children:[(0,d.jsx)(r.SelectTrigger,{className:`h-8 w-18`,children:(0,d.jsx)(r.SelectValue,{placeholder:i})}),(0,d.jsx)(r.SelectContent,{side:`top`,children:[10,20,30,40,50].map(e=>(0,d.jsx)(r.SelectItem,{value:`${e}`,children:e},e))})]}),(0,d.jsxs)(`div`,{className:`flex items-center justify-center text-sm font-medium`,children:[`Page `,o+1,` of `,m]})]}),(0,d.jsxs)(`div`,{className:`flex w-full justify-end space-x-2 *:size-9 *:p-0`,children:[(0,d.jsxs)(t.Button,{variant:`outline`,color:`muted`,onClick:()=>s?.(0),disabled:!f,children:[(0,d.jsx)(`span`,{className:`sr-only`,children:`Go to first page`}),(0,d.jsx)(l.ChevronsLeft,{})]}),(0,d.jsxs)(t.Button,{variant:`outline`,color:`muted`,onClick:c,disabled:!f,children:[(0,d.jsx)(`span`,{className:`sr-only`,children:`Go to previous page`}),(0,d.jsx)(l.ChevronLeft,{})]}),(0,d.jsxs)(t.Button,{variant:`outline`,color:`muted`,onClick:u,disabled:!p,children:[(0,d.jsx)(`span`,{className:`sr-only`,children:`Go to next page`}),(0,d.jsx)(l.ChevronRight,{})]}),(0,d.jsxs)(t.Button,{variant:`outline`,color:`muted`,onClick:()=>{s?.(m-1)},disabled:!p,children:[(0,d.jsx)(`span`,{className:`sr-only`,children:`Go to last page`}),(0,d.jsx)(l.ChevronsRight,{})]})]})]})]})}function x({data:e,totalCount:t,isLoading:r,columns:i,pagination:a,onAdd:o,onRefresh:s,onClickRow:c,onPaginationChange:l}){"use no memo";let[u,m]=(0,f.useState)({}),[h,g]=(0,f.useState)([]),[_,x]=(0,f.useState)([]),[S,C]=(0,f.useState)({}),w=(0,f.useMemo)(()=>({columnPinning:{right:[`actions`,`update`,`delete`]},pagination:{pageIndex:0,pageSize:20}}),[]),T=(0,p.useReactTable)({initialState:w,data:e,columns:i,rowCount:t,columnResizeMode:`onChange`,manualPagination:!0,enableColumnResizing:!1,enableMultiRowSelection:!1,getCoreRowModel:(0,p.getCoreRowModel)(),getPaginationRowModel:(0,p.getPaginationRowModel)(),getSortedRowModel:(0,p.getSortedRowModel)(),getFilteredRowModel:(0,p.getFilteredRowModel)(),getFacetedRowModel:(0,p.getFacetedRowModel)(),getFacetedUniqueValues:(0,p.getFacetedUniqueValues)(),getRowId:e=>e.id||e.uuid,state:{rowSelection:u,sorting:h,columnVisibility:S,columnFilters:_,...a?{pagination:a}:{}},onRowSelectionChange:m,onSortingChange:g,onColumnVisibilityChange:C,onColumnFiltersChange:x,...l?{onPaginationChange:l}:{}});return(0,d.jsxs)(n.Flex,{vertical:!0,wrap:!1,gap:`sm`,align:`start`,className:`size-full overflow-y-auto pt-1`,children:[(0,d.jsx)(y,{onAdd:o,onRefresh:s}),(0,d.jsxs)(n.Flex,{padding:`none`,vertical:!0,wrap:!1,width:`full`,className:`flex-1 overflow-auto pb-4`,children:[(0,d.jsx)(v,{table:T,isLoading:r,onClickRow:c}),(0,d.jsx)(b,{pageSize:T.getState().pagination.pageSize,setPageSize:T.setPageSize,filteredSelectedRowsLength:T.getFilteredSelectedRowModel().rows.length,filteredRowsLength:T.getFilteredRowModel().rows.length,pageIndex:T.getState().pagination.pageIndex,setPageIndex:T.setPageIndex,previousPage:T.previousPage,nextPage:T.nextPage,canPreviousPage:T.getCanPreviousPage(),canNextPage:T.getCanNextPage(),pageCount:T.getPageCount()})]})]})}exports.Table=x;
1
+ const e=require(`../chunk-CUT6urMc.cjs`);require(`../dist-D0uO1qIz.cjs`),require(`../button-variants-CCiseNSC.cjs`);const t=require(`../button-CuV2l4ge.cjs`),n=require(`../flex-DS4mxjtf.cjs`);require(`../paragraph-BLvW7xdo.cjs`),require(`../input-GHXBt6hz.cjs`);const r=require(`../dropdown-menu-Djtt8w9D.cjs`),i=require(`../table-CJM3QVkD.cjs`),a=require(`../scroll-area-TdkUSNSy.cjs`),o=require(`../add-new-BaA0yy6U.cjs`),s=require(`../refresh-Bt9GEyuC.cjs`),c=require(`../search-input-DFgHJyOp.cjs`),l=e.__toESM(require(`lucide-react`)),u=e.__toESM(require(`@customafk/react-toolkit/utils`)),d=e.__toESM(require(`react`)),f=e.__toESM(require(`react/jsx-runtime`)),p=e.__toESM(require(`@tanstack/react-table`)),m=e.__toESM(require(`@tanstack/react-virtual`)),h=e=>{let t=e.getIsPinned();return{left:t===`left`?`${e.getStart(`left`)}px`:void 0,right:t===`right`?`${e.getAfter(`right`)}px`:void 0,position:t?`sticky`:`relative`,width:e.getSize(),zIndex:t?1:0}},g=(0,d.memo)(({column:e})=>{let t=e.getIsSorted(),n=(0,d.useMemo)(()=>({asc:(0,f.jsx)(l.ChevronUp,{className:`shrink-0 opacity-60`,size:16,strokeWidth:2,"aria-hidden":`true`}),desc:(0,f.jsx)(l.ChevronDown,{className:`shrink-0 opacity-60`,size:16,strokeWidth:2,"aria-hidden":`true`})}),[]);return t?n[t]:null});g.displayName=`SortingIndicator`;const _=(0,d.memo)(({column:e})=>{let n=typeof e.columnDef.header==`string`?e.columnDef.header:`Column`,i=(0,d.useCallback)(()=>e.pin(!1),[e]),a=(0,d.useCallback)(()=>e.pin(`left`),[e]),o=(0,d.useCallback)(()=>e.pin(`right`),[e]);return e.getCanPin()?e.getIsPinned()?(0,f.jsx)(t.Button,{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:i,children:(0,f.jsx)(l.PinOffIcon,{className:`opacity-60`,size:16,"aria-hidden":`true`})}):(0,f.jsxs)(r.DropdownMenu,{children:[(0,f.jsx)(r.DropdownMenuTrigger,{asChild:!0,children:(0,f.jsx)(t.Button,{size:`icon`,variant:`ghost`,color:`secondary`,className:`size-7 shadow-none`,"aria-label":`Pin options for ${n} column`,title:`Pin options for ${n} column`,children:(0,f.jsx)(l.EllipsisIcon,{className:`opacity-60`,size:16,"aria-hidden":`true`})})}),(0,f.jsxs)(r.DropdownMenuContent,{align:`end`,children:[(0,f.jsxs)(r.DropdownMenuItem,{onClick:a,children:[(0,f.jsx)(l.ArrowLeftToLineIcon,{size:16,className:`opacity-60`,"aria-hidden":`true`}),`Stick to left`]}),(0,f.jsxs)(r.DropdownMenuItem,{onClick:o,children:[(0,f.jsx)(l.ArrowRightToLineIcon,{size:16,className:`opacity-60`,"aria-hidden":`true`}),`Stick to right`]})]})]}):null});_.displayName=`PinControls`;const v=(0,d.memo)(({header:e})=>{let{column:t}=e,n=(0,d.useCallback)(e=>{t.getCanSort()&&(e.key===`Enter`||e.key===` `)&&(e.preventDefault(),t.getToggleSortingHandler()?.(e))},[t]),r=t.getToggleSortingHandler();return e.isPlaceholder?(0,f.jsx)(`div`,{className:`flex items-center justify-between gap-2 truncate`}):(0,f.jsxs)(`div`,{className:`flex items-center justify-between gap-2 truncate`,children:[(0,f.jsxs)(`div`,{className:(0,u.cn)(t.getCanSort()&&`flex h-full cursor-pointer items-center justify-between gap-2 select-none`),onClick:r,onKeyDown:n,tabIndex:t.getCanSort()?0:void 0,role:t.getCanSort()?`button`:void 0,children:[(0,f.jsx)(`span`,{className:`truncate`,children:(0,p.flexRender)(t.columnDef.header,e.getContext())}),(0,f.jsx)(g,{column:t})]}),(0,f.jsx)(_,{column:t})]})});v.displayName=`HeaderContent`;const y=({table:e,isLoading:t,isFetching:n,allowFetchMore:r=!0,onClickRow:o,onFetchNextPage:s})=>{"use no memo";let c=(0,d.useRef)(null),{rows:g}=e.getRowModel(),_=(0,m.useVirtualizer)({count:g.length,getScrollElement:()=>c.current,estimateSize:()=>37,measureElement:e=>e?.getBoundingClientRect().height??void 0,overscan:5}),y=(0,d.useCallback)(e=>{if(!e)return;let{scrollHeight:t,scrollTop:i,clientHeight:a}=e;t-i-a<120&&!n&&r&&s&&s()},[r,n,s]);return(0,d.useEffect)(()=>{let e=setTimeout(()=>{y(c.current)},100);return()=>clearTimeout(e)},[y]),(0,f.jsxs)(a.ScrollArea,{ref:c,className:`border-border-weak bg-background relative w-full overflow-auto rounded-lg border`,children:[(0,f.jsxs)(i.Table,{className:(0,u.cn)(`!w-full`,`grid`,`border-separate border-spacing-0`,`[&_td]:border-border-weak`,`[&_th]:border-border-weak`,`[&_th]:border-b`,`[&_th]:border-b-border-weak`,`[&_tfoot_td]:border-t`),children:[(0,f.jsx)(i.TableHeader,{className:`sticky top-0 z-10 backdrop-blur-xs`,children:e.getHeaderGroups().map(e=>(0,f.jsx)(i.TableRow,{className:`flex w-full border-none`,children:e.headers.map(e=>{let{column:t}=e,n=t.getIsPinned(),r=n===`left`&&t.getIsLastColumn(`left`),a=n===`right`&&t.getIsFirstColumn(`right`),o=n||void 0,s=r?`left`:a?`right`:void 0,c={width:e.getSize(),...h(e.column)};return(0,f.jsx)(i.TableHead,{"data-pinned":o,"data-last-col":s,className:(0,u.cn)(`relative flex 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:e.colSpan,style:c,children:(0,f.jsx)(v,{header:e})},e.id)})},e.id))}),(0,f.jsx)(i.TableBody,{style:{height:`${_.getTotalSize()}px`},className:(0,u.cn)(`relative grid w-full`,t&&`h-36`,g?.length===0&&`h-48`),children:t?(0,f.jsx)(i.TableRow,{className:`absolute top-9 flex h-36 w-full items-center justify-center`,children:(0,f.jsx)(i.TableCell,{children:`loading...`})}):(0,f.jsx)(f.Fragment,{children:_.getVirtualItems().map(e=>{let t=g[e.index],n=t?.id||(t.original&&`id`in t.original?String(t.original.id):null)||(t.original&&`uuid`in t.original?String(t.original.uuid):null),r=()=>{n&&o?.(n)};return(0,f.jsx)(i.TableRow,{"data-index":e.index,ref:e=>_.measureElement(e),className:`absolute flex w-full cursor-pointer focus:outline-none`,style:{transform:`translateY(${e.start}px)`},onClick:r,tabIndex:o?0:void 0,role:o?`button`:void 0,children:t.getVisibleCells().map(e=>{let t=e.column.getIsPinned(),n=t===`left`&&e.column.getIsLastColumn(`left`),r=t===`right`&&e.column.getIsFirstColumn(`right`);return(0,f.jsx)(i.TableCell,{"data-pinned":t||void 0,"data-last-col":n?`left`:r?`right`:void 0,style:{...h(e.column),width:e.column.getSize()},className:(0,u.cn)(`flex overflow-hidden py-2.5`,`data-pinned:bg-background/90`,`[&[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`),children:(0,p.flexRender)(e.column.columnDef.cell,e.getContext())},e.id)})},t.id)})})}),n&&(0,f.jsx)(i.TableFooter,{children:(0,f.jsx)(`div`,{className:`flex w-full justify-center py-2`,children:(0,f.jsx)(l.LoaderIcon,{size:16,className:`animate-spin`,"aria-label":`Loading more data`})})})]}),(0,f.jsx)(a.ScrollBar,{orientation:`horizontal`})]})},b=({onAdd:e,onRefresh:t})=>(0,f.jsxs)(n.Flex,{justify:`between`,padding:`none`,width:`full`,className:`flex-0`,children:[(0,f.jsx)(`div`,{className:`max-sm:flex-1`,children:(0,f.jsx)(c.SearchInput,{placeholder:`Search...`})}),(0,f.jsxs)(n.Flex,{wrap:!1,className:`flex-0 px-0`,children:[!!e&&(0,f.jsx)(o.AddNewBtn,{onClick:e}),(0,f.jsx)(s.RefreshBtn,{onClick:t})]})]});function x({data:e,totalCount:t,isLoading:r,columns:i,onAdd:a,onRefresh:o,onClickRow:s}){"use no memo";let[c,l]=(0,d.useState)({}),[u,m]=(0,d.useState)([]),[h,g]=(0,d.useState)([]),[_,v]=(0,d.useState)({}),x=(0,d.useMemo)(()=>({columnPinning:{right:[`actions`,`update`,`delete`]}}),[]),S=(0,p.useReactTable)({initialState:x,data:e,columns:i,rowCount:t,columnResizeMode:`onChange`,enableColumnResizing:!1,enableMultiRowSelection:!1,getCoreRowModel:(0,p.getCoreRowModel)(),getSortedRowModel:(0,p.getSortedRowModel)(),getFilteredRowModel:(0,p.getFilteredRowModel)(),getFacetedRowModel:(0,p.getFacetedRowModel)(),getFacetedUniqueValues:(0,p.getFacetedUniqueValues)(),getRowId:e=>e.id||e.uuid,state:{rowSelection:c,sorting:u,columnVisibility:_,columnFilters:h},onRowSelectionChange:l,onSortingChange:m,onColumnVisibilityChange:v,onColumnFiltersChange:g});return(0,f.jsxs)(n.Flex,{vertical:!0,wrap:!1,gap:`sm`,align:`start`,className:`size-full overflow-y-auto pt-1`,children:[(0,f.jsx)(b,{onAdd:a,onRefresh:o}),(0,f.jsx)(n.Flex,{padding:`none`,vertical:!0,wrap:!1,width:`full`,className:`flex-1 overflow-auto pb-4`,children:(0,f.jsx)(y,{table:S,isLoading:r,onClickRow:s})})]})}exports.Table=x;
2
2
  //# sourceMappingURL=index.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","names":["ChevronUp","ChevronDown","Button","PinOffIcon","DropdownMenu","DropdownMenuTrigger","EllipsisIcon","DropdownMenuContent","DropdownMenuItem","ArrowLeftToLineIcon","ArrowRightToLineIcon","Table","TableHeader","TableRow","TableHead","TableBody","TableCell","PackagePlusIcon","DataTableHeader: React.FC<Props>","Flex","SearchInput","AddNewBtn","RefreshBtn","Select","SelectTrigger","SelectValue","SelectContent","SelectItem","pageSize","Button","ChevronsLeft","ChevronLeft","ChevronRight","ChevronsRight","Flex"],"sources":["../../packages/components/table/data-table.tsx","../../packages/components/table/data-table-header.tsx","../../packages/components/table/data-table-pagination.tsx","../../packages/components/table/index.tsx"],"sourcesContent":["import { cn } from '@customafk/react-toolkit/utils'\n\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 { Button } from '@/components/ui/button'\nimport { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger } from '@/components/ui/dropdown-menu'\nimport { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from '@/components/ui/table'\nimport type { AnyEntity } from '@/types'\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=\"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\n return (\n <Table\n className={cn(\n '!w-full',\n 'table-fixed border-separate border-spacing-0',\n '[&_td]:border-border-weak',\n '[&_th]:border-border-weak',\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 '[&_tfoot_td]:border-t',\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 <>\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 </>\n )}\n </TableBody>\n </Table>\n )\n}\n","import { Flex } from '@/components/layouts/flex'\nimport { AddNewBtn } from '@/components/ui/buttons/add-new'\nimport { RefreshBtn } from '@/components/ui/buttons/refresh'\nimport { SearchInput } from '@/components/ui/inputs/search-input'\n\ntype Props = {\n onAdd?: () => void\n onRefresh?: () => void\n}\n\nexport const DataTableHeader: React.FC<Props> = ({ onAdd, onRefresh }) => {\n return (\n <Flex justify=\"between\" padding=\"none\" width=\"full\" className=\"flex-0\">\n <div className=\"max-sm:flex-1\">\n <SearchInput placeholder=\"Search...\" />\n </div>\n <Flex wrap={false} className=\"flex-0 px-0\">\n {!!onAdd && <AddNewBtn onClick={onAdd} />}\n <RefreshBtn onClick={onRefresh} />\n </Flex>\n </Flex>\n )\n}\n","import { 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 {\n filteredSelectedRowsLength?: number\n filteredRowsLength?: number\n\n pageSize?: number\n setPageSize?: (size: number) => void\n\n pageIndex?: number\n setPageIndex?: (index: number) => void\n\n previousPage?: () => void\n nextPage?: () => void\n\n canPreviousPage?: boolean\n canNextPage?: boolean\n\n pageCount?: number\n}\n\nexport function DataTablePagination({\n filteredSelectedRowsLength,\n filteredRowsLength,\n pageSize,\n setPageSize,\n pageIndex = 0,\n setPageIndex,\n previousPage,\n nextPage,\n canPreviousPage,\n canNextPage,\n pageCount = 1,\n}: DataTablePaginationProps) {\n 'use no memo'\n return (\n <div className=\"mt-4 flex w-full flex-0 flex-col flex-wrap items-start space-y-2 px-2 sm:flex-row\">\n <div className=\"text-text-positive flex-1 text-sm\">\n {filteredSelectedRowsLength} of {filteredRowsLength} row(s) selected.\n </div>\n\n <div className=\"flex w-full flex-col flex-wrap items-start space-y-2 sm:w-fit sm:space-y-4\">\n <div className=\"flex items-center space-x-2 sm:space-x-4\">\n <p className=\"sr-only text-sm font-medium sm:not-sr-only sm:mr-4\">Rows per page</p>\n <Select\n value={`${pageSize}`}\n onValueChange={(value) => {\n setPageSize?.(Number(value))\n }}\n >\n <SelectTrigger className=\"h-8 w-18\">\n <SelectValue placeholder={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 className=\"flex items-center justify-center text-sm font-medium\">\n Page {pageIndex + 1} of {pageCount}\n </div>\n </div>\n\n <div className=\"flex w-full justify-end space-x-2 *:size-9 *:p-0\">\n <Button variant=\"outline\" color=\"muted\" onClick={() => setPageIndex?.(0)} disabled={!canPreviousPage}>\n <span className=\"sr-only\">Go to first page</span>\n <ChevronsLeft />\n </Button>\n <Button variant=\"outline\" color=\"muted\" onClick={previousPage} disabled={!canPreviousPage}>\n <span className=\"sr-only\">Go to previous page</span>\n <ChevronLeft />\n </Button>\n <Button variant=\"outline\" color=\"muted\" onClick={nextPage} disabled={!canNextPage}>\n <span className=\"sr-only\">Go to next page</span>\n <ChevronRight />\n </Button>\n <Button\n variant=\"outline\"\n color=\"muted\"\n onClick={() => {\n setPageIndex?.(pageCount - 1)\n }}\n disabled={!canNextPage}\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 { useMemo, useState } from 'react'\n\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 { DataTableHeader } from './data-table-header'\nimport { DataTablePagination } from './data-table-pagination'\nimport { Flex } from '../layouts/flex'\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] = useState<RowSelectionState>({})\n const [sorting, setSorting] = useState<SortingState>([])\n const [columnFilters, setColumnFilters] = useState<ColumnFiltersState>([])\n const [columnVisibility, setColumnVisibility] = useState<VisibilityState>({})\n\n const initialState = 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 <DataTableHeader onAdd={onAdd} onRefresh={onRefresh} />\n <Flex padding=\"none\" vertical wrap={false} width=\"full\" className=\"flex-1 overflow-auto pb-4\">\n <DataTable table={table} isLoading={isLoading} onClickRow={onClickRow} />\n <DataTablePagination\n pageSize={table.getState().pagination.pageSize}\n setPageSize={table.setPageSize}\n filteredSelectedRowsLength={table.getFilteredSelectedRowModel().rows.length}\n filteredRowsLength={table.getFilteredRowModel().rows.length}\n pageIndex={table.getState().pagination.pageIndex}\n setPageIndex={table.setPageIndex}\n previousPage={table.previousPage}\n nextPage={table.nextPage}\n canPreviousPage={table.getCanPreviousPage()}\n canNextPage={table.getCanNextPage()}\n pageCount={table.getPageCount()}\n />\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","ScrollArea","Table","TableHeader","TableRow","TableHead","TableBody","TableCell","TableFooter","LoaderIcon","ScrollBar","DataTableHeader: React.FC<Props>","Flex","SearchInput","AddNewBtn","RefreshBtn","Flex"],"sources":["../../packages/components/table/data-table.tsx","../../packages/components/table/data-table-header.tsx","../../packages/components/table/index.tsx"],"sourcesContent":["import { memo, useCallback, useEffect, useMemo, useRef } from 'react'\nimport { cn } from '@customafk/react-toolkit/utils'\n\nimport { type Column, flexRender, type Header, type Table as ReactTable } from '@tanstack/react-table'\nimport { ArrowLeftToLineIcon, ArrowRightToLineIcon, ChevronDown, ChevronUp, EllipsisIcon, LoaderIcon, PinOffIcon } from 'lucide-react'\n\nimport { Button } from '@/components/ui/button'\nimport { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger } from '@/components/ui/dropdown-menu'\nimport { Table, TableBody, TableCell, TableFooter, TableHead, TableHeader, TableRow } from '@/components/ui/table'\nimport type { AnyEntity } from '@/types'\nimport { useVirtualizer } from '@tanstack/react-virtual'\n\nimport { ScrollArea, ScrollBar } from '../ui/scroll-area'\n\n/**\n * Computes styles for pinned columns\n * @param column Table column\n * @returns CSS styles for pinned columns\n */\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 = memo(({ column }: { column: Column<AnyEntity> }) => {\n const sortDirection = column.getIsSorted()\n\n const icons = useMemo(\n () => ({\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 )\n\n return sortDirection ? icons[sortDirection] : null\n})\n\nSortingIndicator.displayName = 'SortingIndicator'\n\nconst PinControls = memo(({ column }: { column: Column<AnyEntity> }) => {\n const columnHeader = typeof column.columnDef.header === 'string' ? column.columnDef.header : 'Column'\n\n const handleUnpin = useCallback(() => column.pin(false), [column])\n const handlePinLeft = useCallback(() => column.pin('left'), [column])\n const handlePinRight = useCallback(() => column.pin('right'), [column])\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={handleUnpin}\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=\"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={handlePinLeft}>\n <ArrowLeftToLineIcon size={16} className=\"opacity-60\" aria-hidden=\"true\" />\n Stick to left\n </DropdownMenuItem>\n <DropdownMenuItem onClick={handlePinRight}>\n <ArrowRightToLineIcon size={16} className=\"opacity-60\" aria-hidden=\"true\" />\n Stick to right\n </DropdownMenuItem>\n </DropdownMenuContent>\n </DropdownMenu>\n )\n})\n\nPinControls.displayName = 'PinControls'\n\nconst HeaderContent = memo(({ header }: { header: Header<AnyEntity, unknown> }) => {\n const { column } = header\n\n const handleSort = useCallback(\n (e: React.KeyboardEvent) => {\n if (column.getCanSort() && (e.key === 'Enter' || e.key === ' ')) {\n e.preventDefault()\n column.getToggleSortingHandler()?.(e)\n }\n },\n [column],\n )\n\n const toggleSortHandler = column.getToggleSortingHandler()\n\n if (header.isPlaceholder) {\n return <div className=\"flex items-center justify-between gap-2 truncate\" />\n }\n\n return (\n <div className=\"flex items-center justify-between gap-2 truncate\">\n <div\n className={cn(column.getCanSort() && 'flex h-full cursor-pointer items-center justify-between gap-2 select-none')}\n onClick={toggleSortHandler}\n onKeyDown={handleSort}\n tabIndex={column.getCanSort() ? 0 : undefined}\n role={column.getCanSort() ? 'button' : undefined}\n >\n <span className=\"truncate\">{flexRender(column.columnDef.header, header.getContext())}</span>\n <SortingIndicator column={column} />\n </div>\n <PinControls column={column} />\n </div>\n )\n})\n\nHeaderContent.displayName = 'HeaderContent'\n\ninterface DataTableProps {\n table: ReactTable<AnyEntity>\n columnsLength?: number\n isLoading?: boolean\n isFetching?: boolean\n allowFetchMore?: boolean\n onClickRow?: (id: string) => void\n onFetchNextPage?: () => void\n}\n\nexport const DataTable = ({ table, isLoading, isFetching, allowFetchMore = true, onClickRow, onFetchNextPage }: DataTableProps) => {\n 'use no memo'\n\n const tableContainerRef = useRef<HTMLDivElement>(null)\n\n const { rows } = table.getRowModel()\n\n // Configure virtualization for performance with large datasets\n const rowVirtualizer = useVirtualizer<HTMLDivElement, HTMLTableRowElement>({\n count: rows.length,\n getScrollElement: () => tableContainerRef.current,\n estimateSize: () => 37, // estimated row height\n measureElement: (element) => element?.getBoundingClientRect().height ?? undefined,\n overscan: 5, // Render additional rows beyond viewport for smoother scrolling\n })\n\n // Fetch more data when user approaches bottom of table\n const fetchMoreOnBottomReached = useCallback(\n (refEl: HTMLDivElement | null) => {\n if (!refEl) return\n const { scrollHeight, scrollTop, clientHeight } = refEl\n // Threshold of 120px from bottom to trigger load more\n if (scrollHeight - scrollTop - clientHeight < 120 && !isFetching && allowFetchMore && onFetchNextPage) {\n onFetchNextPage()\n }\n },\n [allowFetchMore, isFetching, onFetchNextPage],\n )\n\n // Check for more data on mount and when dependencies change\n useEffect(() => {\n const timer = setTimeout(() => {\n fetchMoreOnBottomReached(tableContainerRef.current)\n }, 100)\n return () => clearTimeout(timer)\n }, [fetchMoreOnBottomReached])\n\n return (\n <ScrollArea ref={tableContainerRef} className=\"border-border-weak bg-background relative w-full overflow-auto rounded-lg border\">\n <Table\n className={cn(\n '!w-full',\n 'grid',\n 'border-separate border-spacing-0',\n '[&_td]:border-border-weak',\n '[&_th]:border-border-weak',\n '[&_th]:border-b',\n '[&_th]:border-b-border-weak',\n '[&_tfoot_td]:border-t',\n )}\n >\n <TableHeader className=\"sticky top-0 z-10 backdrop-blur-xs\">\n {table.getHeaderGroups().map((headerGroup) => (\n <TableRow key={headerGroup.id} className=\"flex w-full border-none\">\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 const pinningState = isPinned || undefined\n const lastColState = isLastLeftPinned ? 'left' : isFirstRightPinned ? 'right' : undefined\n\n const headerStyles = {\n width: header.getSize(),\n ...getPinningStyles(header.column),\n }\n\n return (\n <TableHead\n key={header.id}\n data-pinned={pinningState}\n data-last-col={lastColState}\n className={cn(\n 'relative flex 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 colSpan={header.colSpan}\n style={headerStyles}\n >\n <HeaderContent header={header} />\n </TableHead>\n )\n })}\n </TableRow>\n ))}\n </TableHeader>\n\n <TableBody\n style={{\n height: `${rowVirtualizer.getTotalSize()}px`, //tells scrollbar how big the table is\n }}\n className={cn('relative grid w-full', isLoading && 'h-36', rows?.length === 0 && 'h-48')}\n >\n {isLoading ? (\n <TableRow className=\"absolute top-9 flex h-36 w-full items-center justify-center\">\n <TableCell>loading...</TableCell>\n </TableRow>\n ) : (\n <>\n {rowVirtualizer.getVirtualItems().map((virtualRow) => {\n const row = rows[virtualRow.index]\n const rowId =\n row?.id ||\n (row.original && 'id' in row.original ? String(row.original.id) : null) ||\n (row.original && 'uuid' in row.original ? String(row.original.uuid) : null)\n\n const handleRowClick = () => {\n if (!rowId) return\n onClickRow?.(rowId)\n }\n\n return (\n <TableRow\n key={row.id}\n data-index={virtualRow.index}\n ref={(node) => rowVirtualizer.measureElement(node)}\n className=\"absolute flex w-full cursor-pointer focus:outline-none\"\n style={{\n transform: `translateY(${virtualRow.start}px)`,\n }}\n onClick={handleRowClick}\n tabIndex={onClickRow ? 0 : undefined}\n role={onClickRow ? 'button' : undefined}\n >\n {row.getVisibleCells().map((cell) => {\n const isPinned = cell.column.getIsPinned()\n const isLastLeftPinned = isPinned === 'left' && cell.column.getIsLastColumn('left')\n const isFirstRightPinned = isPinned === 'right' && cell.column.getIsFirstColumn('right')\n\n return (\n <TableCell\n key={cell.id}\n data-pinned={isPinned || undefined}\n data-last-col={isLastLeftPinned ? 'left' : isFirstRightPinned ? 'right' : undefined}\n style={{\n ...getPinningStyles(cell.column),\n width: cell.column.getSize(),\n }}\n className={cn(\n 'flex overflow-hidden py-2.5',\n 'data-pinned:bg-background/90',\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 )}\n >\n {flexRender(cell.column.columnDef.cell, cell.getContext())}\n </TableCell>\n )\n })}\n </TableRow>\n )\n })}\n </>\n )}\n </TableBody>\n {isFetching && (\n <TableFooter>\n <div className=\"flex w-full justify-center py-2\">\n <LoaderIcon size={16} className=\"animate-spin\" aria-label=\"Loading more data\" />\n </div>\n </TableFooter>\n )}\n </Table>\n <ScrollBar orientation=\"horizontal\" />\n </ScrollArea>\n )\n}\n","import { Flex } from '@/components/layouts/flex'\nimport { AddNewBtn } from '@/components/ui/buttons/add-new'\nimport { RefreshBtn } from '@/components/ui/buttons/refresh'\nimport { SearchInput } from '@/components/ui/inputs/search-input'\n\ntype Props = {\n onAdd?: () => void\n onRefresh?: () => void\n}\n\nexport const DataTableHeader: React.FC<Props> = ({ onAdd, onRefresh }) => {\n return (\n <Flex justify=\"between\" padding=\"none\" width=\"full\" className=\"flex-0\">\n <div className=\"max-sm:flex-1\">\n <SearchInput placeholder=\"Search...\" />\n </div>\n <Flex wrap={false} className=\"flex-0 px-0\">\n {!!onAdd && <AddNewBtn onClick={onAdd} />}\n <RefreshBtn onClick={onRefresh} />\n </Flex>\n </Flex>\n )\n}\n","import { useMemo, useState } from 'react'\n\nimport type { ColumnDef, ColumnFiltersState, RowSelectionState, SortingState, VisibilityState } from '@tanstack/react-table'\nimport { getCoreRowModel, getFacetedRowModel, getFacetedUniqueValues, getFilteredRowModel, getSortedRowModel, useReactTable } from '@tanstack/react-table'\n\nimport { DataTable } from './data-table'\nimport { DataTableHeader } from './data-table-header'\nimport { Flex } from '../layouts/flex'\n\ntype Props<T> = {\n data: T[]\n totalCount?: number\n isLoading?: boolean\n columns: ColumnDef<T>[]\n onAdd?: () => void\n onRefresh?: () => void\n onClickRow?: (id: string) => void\n}\nexport function Table<T extends Record<string, unknown>>({ data, totalCount, isLoading, columns, onAdd, onRefresh, onClickRow }: Props<T>) {\n 'use no memo'\n\n const [rowSelection, setRowSelection] = useState<RowSelectionState>({})\n const [sorting, setSorting] = useState<SortingState>([])\n const [columnFilters, setColumnFilters] = useState<ColumnFiltersState>([])\n const [columnVisibility, setColumnVisibility] = useState<VisibilityState>({})\n\n const initialState = useMemo(\n () => ({\n columnPinning: { right: ['actions', 'update', 'delete'] },\n }),\n [],\n )\n\n const table = useReactTable<T>({\n initialState,\n data,\n columns,\n rowCount: totalCount,\n columnResizeMode: 'onChange',\n enableColumnResizing: false,\n enableMultiRowSelection: false,\n getCoreRowModel: getCoreRowModel(),\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 },\n onRowSelectionChange: setRowSelection,\n onSortingChange: setSorting,\n onColumnVisibilityChange: setColumnVisibility,\n onColumnFiltersChange: setColumnFilters,\n })\n\n return (\n <Flex vertical wrap={false} gap=\"sm\" align=\"start\" className=\"size-full overflow-y-auto pt-1\">\n <DataTableHeader onAdd={onAdd} onRefresh={onRefresh} />\n <Flex padding=\"none\" vertical wrap={false} width=\"full\" className=\"flex-1 overflow-auto pb-4\">\n <DataTable table={table} isLoading={isLoading} onClickRow={onClickRow} />\n </Flex>\n </Flex>\n )\n}\n"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
- import * as react_jsx_runtime10 from "react/jsx-runtime";
2
- import { ColumnDef, PaginationState } from "@tanstack/react-table";
1
+ import * as react_jsx_runtime24 from "react/jsx-runtime";
2
+ import { ColumnDef } from "@tanstack/react-table";
3
3
 
4
4
  //#region packages/components/table/index.d.ts
5
5
  type Props<T> = {
@@ -7,23 +7,19 @@ type Props<T> = {
7
7
  totalCount?: number;
8
8
  isLoading?: boolean;
9
9
  columns: ColumnDef<T>[];
10
- pagination?: PaginationState;
11
10
  onAdd?: () => void;
12
11
  onRefresh?: () => void;
13
12
  onClickRow?: (id: string) => void;
14
- onPaginationChange?: React.Dispatch<React.SetStateAction<PaginationState>>;
15
13
  };
16
14
  declare function Table<T extends Record<string, unknown>>({
17
15
  data,
18
16
  totalCount,
19
17
  isLoading,
20
18
  columns,
21
- pagination,
22
19
  onAdd,
23
20
  onRefresh,
24
- onClickRow,
25
- onPaginationChange
26
- }: Props<T>): react_jsx_runtime10.JSX.Element;
21
+ onClickRow
22
+ }: Props<T>): react_jsx_runtime24.JSX.Element;
27
23
  //#endregion
28
24
  export { Table };
29
25
  //# sourceMappingURL=index.d.cts.map
@@ -1,5 +1,5 @@
1
- import * as react_jsx_runtime59 from "react/jsx-runtime";
2
- import { ColumnDef, PaginationState } from "@tanstack/react-table";
1
+ import * as react_jsx_runtime9 from "react/jsx-runtime";
2
+ import { ColumnDef } from "@tanstack/react-table";
3
3
 
4
4
  //#region packages/components/table/index.d.ts
5
5
  type Props<T> = {
@@ -7,23 +7,19 @@ type Props<T> = {
7
7
  totalCount?: number;
8
8
  isLoading?: boolean;
9
9
  columns: ColumnDef<T>[];
10
- pagination?: PaginationState;
11
10
  onAdd?: () => void;
12
11
  onRefresh?: () => void;
13
12
  onClickRow?: (id: string) => void;
14
- onPaginationChange?: React.Dispatch<React.SetStateAction<PaginationState>>;
15
13
  };
16
14
  declare function Table<T extends Record<string, unknown>>({
17
15
  data,
18
16
  totalCount,
19
17
  isLoading,
20
18
  columns,
21
- pagination,
22
19
  onAdd,
23
20
  onRefresh,
24
- onClickRow,
25
- onPaginationChange
26
- }: Props<T>): react_jsx_runtime59.JSX.Element;
21
+ onClickRow
22
+ }: Props<T>): react_jsx_runtime9.JSX.Element;
27
23
  //#endregion
28
24
  export { Table };
29
25
  //# sourceMappingURL=index.d.ts.map
@@ -1,2 +1,2 @@
1
- import{Button as e}from"../button-CvQQTSka.js";import{Flex as t}from"../flex-BZHWRUkz.js";import"../paragraph-BwSskqDY.js";import"../input-BFZuwsER.js";import{Select as n,SelectContent as r,SelectItem as i,SelectTrigger as a,SelectValue as o}from"../select-CijI0HX0.js";import{DropdownMenu as s,DropdownMenuContent as c,DropdownMenuItem as l,DropdownMenuTrigger as u}from"../dropdown-menu-Bj39Rmxd.js";import"../scroll-area-CqevC_nb.js";import{Table as d,TableBody as f,TableCell as p,TableHead as m,TableHeader as h,TableRow as g}from"../table-oROsZcz4.js";import{AddNewBtn as _}from"../add-new-BFDOXej7.js";import{RefreshBtn as v}from"../refresh-CTcKzu_a.js";import{SearchInput as y}from"../search-input-C_7D7Nqj.js";import{ArrowLeftToLineIcon as b,ArrowRightToLineIcon as x,ChevronDown as S,ChevronLeft as C,ChevronRight as w,ChevronUp as T,ChevronsLeft as E,ChevronsRight as D,EllipsisIcon as O,PackagePlusIcon as k,PinOffIcon as A}from"lucide-react";import{cn as j}from"@customafk/react-toolkit/utils";import{Fragment as M,jsx as N,jsxs as P}from"react/jsx-runtime";import{useMemo as F,useState as I}from"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:N(T,{className:`shrink-0 opacity-60`,size:16,strokeWidth:2,"aria-hidden":`true`}),desc:N(S,{className:`shrink-0 opacity-60`,size:16,strokeWidth:2,"aria-hidden":`true`})};return t?n[t]:null},q=({column:t})=>{let n=t.columnDef.header;return t.getCanPin()?t.getIsPinned()?N(e,{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:()=>t.pin(!1),children:N(A,{className:`opacity-60`,size:16,"aria-hidden":`true`})}):P(s,{children:[N(u,{asChild:!0,children:N(e,{size:`icon`,variant:`ghost`,color:`secondary`,className:`size-7 shadow-none`,"aria-label":`Pin options for ${n} column`,title:`Pin options for ${n} column`,children:N(O,{className:`opacity-60`,size:16,"aria-hidden":`true`})})}),P(c,{align:`end`,children:[P(l,{onClick:()=>t.pin(`left`),children:[N(b,{size:16,className:`opacity-60`,"aria-hidden":`true`}),`Stick to left`]}),P(l,{onClick:()=>t.pin(`right`),children:[N(x,{size:16,className:`opacity-60`,"aria-hidden":`true`}),`Stick to right`]})]})]}):null},J=({header:e})=>{let{column:t}=e,n=e=>{t.getCanSort()&&(e.key===`Enter`||e.key===` `)&&(e.preventDefault(),t.getToggleSortingHandler()?.(e))};return P(`div`,{className:`flex items-center justify-between gap-2 truncate`,children:[!e.isPlaceholder&&P(`div`,{className:j(t.getCanSort()&&`flex h-full cursor-pointer items-center justify-between gap-2 select-none`),onClick:t.getToggleSortingHandler(),onKeyDown:n,tabIndex:t.getCanSort()?0:void 0,children:[N(`span`,{className:`truncate`,children:L(t.columnDef.header,e.getContext())}),N(K,{column:t})]}),!e.isPlaceholder&&N(q,{column:t})]})},Y=({table:e,isLoading:t,onClickRow:n})=>{"use no memo";return P(d,{className:j(`!w-full`,`table-fixed border-separate border-spacing-0`,`[&_td]:border-border-weak`,`[&_th]:border-border-weak`,`[&_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`,`[&_tfoot_td]:border-t`),style:{width:e.getTotalSize()},children:[N(h,{className:`sticky top-0 z-10 backdrop-blur-xs`,children:e.getHeaderGroups().map(e=>N(g,{children:e.headers.map(e=>{let{column:t}=e,n=t.getIsPinned(),r=n===`left`&&t.getIsLastColumn(`left`),i=n===`right`&&t.getIsFirstColumn(`right`);return N(m,{"data-pinned":n||void 0,"data-last-col":r?`left`:i?`right`:void 0,className:j(`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:e.colSpan,style:{width:e.getSize(),maxWidth:e.getSize(),...G(e.column)},children:N(J,{header:e})},e.id)})},e.id))}),N(f,{className:j(t&&`h-36`,e.getRowModel().rows?.length===0&&`h-48`),children:t?N(g,{className:`absolute top-9 flex h-36 w-full items-center justify-center`,children:N(p,{children:`loading...`})}):N(M,{children:e.getRowModel().rows?.length?e.getRowModel().rows.map(e=>N(g,{"data-state":e.getIsSelected()&&`selected`,className:`cursor-pointer border-none focus:outline-none`,onClick:()=>n?.(e?.id||e.original?.id?.toString()||e.original?.uuid||void 0),children:e.getVisibleCells().map(e=>{let{column:t}=e,n=t.getIsPinned(),r=n===`left`&&t.getIsLastColumn(`left`),i=n===`right`&&t.getIsFirstColumn(`right`);return N(p,{style:{...G(t),width:e.column.getSize(),maxWidth:e.column.getSize()},"data-pinned":n||void 0,"data-last-col":r?`left`:i?`right`:void 0,className:j(`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(e.column.columnDef.cell,e.getContext())},e.id)})},e.id)):N(g,{className:`absolute top-9 flex h-36 w-full items-center justify-center`,children:N(p,{children:P(`div`,{className:`text-muted-foreground flex size-full flex-col items-center justify-center gap-y-8 text-base`,children:[N(k,{size:48,strokeWidth:2}),N(`p`,{children:`Thêm dữ liệu để hiển thị`})]})})})})})]})},X=({onAdd:e,onRefresh:n})=>P(t,{justify:`between`,padding:`none`,width:`full`,className:`flex-0`,children:[N(`div`,{className:`max-sm:flex-1`,children:N(y,{placeholder:`Search...`})}),P(t,{wrap:!1,className:`flex-0 px-0`,children:[!!e&&N(_,{onClick:e}),N(v,{onClick:n})]})]});function Z({filteredSelectedRowsLength:t,filteredRowsLength:s,pageSize:c,setPageSize:l,pageIndex:u=0,setPageIndex:d,previousPage:f,nextPage:p,canPreviousPage:m,canNextPage:h,pageCount:g=1}){"use no memo";return P(`div`,{className:`mt-4 flex w-full flex-0 flex-col flex-wrap items-start space-y-2 px-2 sm:flex-row`,children:[P(`div`,{className:`text-text-positive flex-1 text-sm`,children:[t,` of `,s,` row(s) selected.`]}),P(`div`,{className:`flex w-full flex-col flex-wrap items-start space-y-2 sm:w-fit sm:space-y-4`,children:[P(`div`,{className:`flex items-center space-x-2 sm:space-x-4`,children:[N(`p`,{className:`sr-only text-sm font-medium sm:not-sr-only sm:mr-4`,children:`Rows per page`}),P(n,{value:`${c}`,onValueChange:e=>{l?.(Number(e))},children:[N(a,{className:`h-8 w-18`,children:N(o,{placeholder:c})}),N(r,{side:`top`,children:[10,20,30,40,50].map(e=>N(i,{value:`${e}`,children:e},e))})]}),P(`div`,{className:`flex items-center justify-center text-sm font-medium`,children:[`Page `,u+1,` of `,g]})]}),P(`div`,{className:`flex w-full justify-end space-x-2 *:size-9 *:p-0`,children:[P(e,{variant:`outline`,color:`muted`,onClick:()=>d?.(0),disabled:!m,children:[N(`span`,{className:`sr-only`,children:`Go to first page`}),N(E,{})]}),P(e,{variant:`outline`,color:`muted`,onClick:f,disabled:!m,children:[N(`span`,{className:`sr-only`,children:`Go to previous page`}),N(C,{})]}),P(e,{variant:`outline`,color:`muted`,onClick:p,disabled:!h,children:[N(`span`,{className:`sr-only`,children:`Go to next page`}),N(w,{})]}),P(e,{variant:`outline`,color:`muted`,onClick:()=>{d?.(g-1)},disabled:!h,children:[N(`span`,{className:`sr-only`,children:`Go to last page`}),N(D,{})]})]})]})]})}function Q({data:e,totalCount:n,isLoading:r,columns:i,pagination:a,onAdd:o,onRefresh:s,onClickRow:c,onPaginationChange:l}){"use no memo";let[u,d]=I({}),[f,p]=I([]),[m,h]=I([]),[g,_]=I({}),v=F(()=>({columnPinning:{right:[`actions`,`update`,`delete`]},pagination:{pageIndex:0,pageSize:20}}),[]),y=W({initialState:v,data:e,columns:i,rowCount:n,columnResizeMode:`onChange`,manualPagination:!0,enableColumnResizing:!1,enableMultiRowSelection:!1,getCoreRowModel:R(),getPaginationRowModel:H(),getSortedRowModel:U(),getFilteredRowModel:V(),getFacetedRowModel:z(),getFacetedUniqueValues:B(),getRowId:e=>e.id||e.uuid,state:{rowSelection:u,sorting:f,columnVisibility:g,columnFilters:m,...a?{pagination:a}:{}},onRowSelectionChange:d,onSortingChange:p,onColumnVisibilityChange:_,onColumnFiltersChange:h,...l?{onPaginationChange:l}:{}});return P(t,{vertical:!0,wrap:!1,gap:`sm`,align:`start`,className:`size-full overflow-y-auto pt-1`,children:[N(X,{onAdd:o,onRefresh:s}),P(t,{padding:`none`,vertical:!0,wrap:!1,width:`full`,className:`flex-1 overflow-auto pb-4`,children:[N(Y,{table:y,isLoading:r,onClickRow:c}),N(Z,{pageSize:y.getState().pagination.pageSize,setPageSize:y.setPageSize,filteredSelectedRowsLength:y.getFilteredSelectedRowModel().rows.length,filteredRowsLength:y.getFilteredRowModel().rows.length,pageIndex:y.getState().pagination.pageIndex,setPageIndex:y.setPageIndex,previousPage:y.previousPage,nextPage:y.nextPage,canPreviousPage:y.getCanPreviousPage(),canNextPage:y.getCanNextPage(),pageCount:y.getPageCount()})]})]})}export{Q as Table};
1
+ import"../dist-CkzytVha.js";import"../button-variants-Y1GTBayz.js";import{Button as e}from"../button-DhQJ9Ey8.js";import{Flex as t}from"../flex-D6XrXRQW.js";import"../paragraph-B9fp9JaI.js";import"../input-ZyZ1HKHN.js";import{DropdownMenu as n,DropdownMenuContent as r,DropdownMenuItem as i,DropdownMenuTrigger as a}from"../dropdown-menu-DS1A05D0.js";import{Table as o,TableBody as s,TableCell as c,TableFooter as l,TableHead as u,TableHeader as d,TableRow as f}from"../table-BUu5ju9Z.js";import{ScrollArea as p,ScrollBar as m}from"../scroll-area-BYi1ePct.js";import{AddNewBtn as h}from"../add-new-_5opEbrI.js";import{RefreshBtn as g}from"../refresh-BHjc0ETv.js";import{SearchInput as _}from"../search-input-DM9ePMxA.js";import{ArrowLeftToLineIcon as v,ArrowRightToLineIcon as y,ChevronDown as b,ChevronUp as x,EllipsisIcon as S,LoaderIcon as C,PinOffIcon as w}from"lucide-react";import{cn as T}from"@customafk/react-toolkit/utils";import{memo as E,useCallback as D,useEffect as O,useMemo as k,useRef as A,useState as j}from"react";import{Fragment as M,jsx as N,jsxs as P}from"react/jsx-runtime";import{flexRender as F,getCoreRowModel as I,getFacetedRowModel as L,getFacetedUniqueValues as R,getFilteredRowModel as z,getSortedRowModel as B,useReactTable as V}from"@tanstack/react-table";import{useVirtualizer as H}from"@tanstack/react-virtual";const U=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}},W=E(({column:e})=>{let t=e.getIsSorted(),n=k(()=>({asc:N(x,{className:`shrink-0 opacity-60`,size:16,strokeWidth:2,"aria-hidden":`true`}),desc:N(b,{className:`shrink-0 opacity-60`,size:16,strokeWidth:2,"aria-hidden":`true`})}),[]);return t?n[t]:null});W.displayName=`SortingIndicator`;const G=E(({column:t})=>{let o=typeof t.columnDef.header==`string`?t.columnDef.header:`Column`,s=D(()=>t.pin(!1),[t]),c=D(()=>t.pin(`left`),[t]),l=D(()=>t.pin(`right`),[t]);return t.getCanPin()?t.getIsPinned()?N(e,{size:`icon`,variant:`ghost`,color:`secondary`,className:`hover:[&_svg]:text-secondary-foreground -mr-1 size-7 shadow-none`,"aria-label":`Unpin ${o} column`,title:`Unpin ${o} column`,onClick:s,children:N(w,{className:`opacity-60`,size:16,"aria-hidden":`true`})}):P(n,{children:[N(a,{asChild:!0,children:N(e,{size:`icon`,variant:`ghost`,color:`secondary`,className:`size-7 shadow-none`,"aria-label":`Pin options for ${o} column`,title:`Pin options for ${o} column`,children:N(S,{className:`opacity-60`,size:16,"aria-hidden":`true`})})}),P(r,{align:`end`,children:[P(i,{onClick:c,children:[N(v,{size:16,className:`opacity-60`,"aria-hidden":`true`}),`Stick to left`]}),P(i,{onClick:l,children:[N(y,{size:16,className:`opacity-60`,"aria-hidden":`true`}),`Stick to right`]})]})]}):null});G.displayName=`PinControls`;const K=E(({header:e})=>{let{column:t}=e,n=D(e=>{t.getCanSort()&&(e.key===`Enter`||e.key===` `)&&(e.preventDefault(),t.getToggleSortingHandler()?.(e))},[t]),r=t.getToggleSortingHandler();return e.isPlaceholder?N(`div`,{className:`flex items-center justify-between gap-2 truncate`}):P(`div`,{className:`flex items-center justify-between gap-2 truncate`,children:[P(`div`,{className:T(t.getCanSort()&&`flex h-full cursor-pointer items-center justify-between gap-2 select-none`),onClick:r,onKeyDown:n,tabIndex:t.getCanSort()?0:void 0,role:t.getCanSort()?`button`:void 0,children:[N(`span`,{className:`truncate`,children:F(t.columnDef.header,e.getContext())}),N(W,{column:t})]}),N(G,{column:t})]})});K.displayName=`HeaderContent`;const q=({table:e,isLoading:t,isFetching:n,allowFetchMore:r=!0,onClickRow:i,onFetchNextPage:a})=>{"use no memo";let h=A(null),{rows:g}=e.getRowModel(),_=H({count:g.length,getScrollElement:()=>h.current,estimateSize:()=>37,measureElement:e=>e?.getBoundingClientRect().height??void 0,overscan:5}),v=D(e=>{if(!e)return;let{scrollHeight:t,scrollTop:i,clientHeight:o}=e;t-i-o<120&&!n&&r&&a&&a()},[r,n,a]);return O(()=>{let e=setTimeout(()=>{v(h.current)},100);return()=>clearTimeout(e)},[v]),P(p,{ref:h,className:`border-border-weak bg-background relative w-full overflow-auto rounded-lg border`,children:[P(o,{className:T(`!w-full`,`grid`,`border-separate border-spacing-0`,`[&_td]:border-border-weak`,`[&_th]:border-border-weak`,`[&_th]:border-b`,`[&_th]:border-b-border-weak`,`[&_tfoot_td]:border-t`),children:[N(d,{className:`sticky top-0 z-10 backdrop-blur-xs`,children:e.getHeaderGroups().map(e=>N(f,{className:`flex w-full border-none`,children:e.headers.map(e=>{let{column:t}=e,n=t.getIsPinned(),r=n===`left`&&t.getIsLastColumn(`left`),i=n===`right`&&t.getIsFirstColumn(`right`),a=n||void 0,o=r?`left`:i?`right`:void 0,s={width:e.getSize(),...U(e.column)};return N(u,{"data-pinned":a,"data-last-col":o,className:T(`relative flex 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:e.colSpan,style:s,children:N(K,{header:e})},e.id)})},e.id))}),N(s,{style:{height:`${_.getTotalSize()}px`},className:T(`relative grid w-full`,t&&`h-36`,g?.length===0&&`h-48`),children:t?N(f,{className:`absolute top-9 flex h-36 w-full items-center justify-center`,children:N(c,{children:`loading...`})}):N(M,{children:_.getVirtualItems().map(e=>{let t=g[e.index],n=t?.id||(t.original&&`id`in t.original?String(t.original.id):null)||(t.original&&`uuid`in t.original?String(t.original.uuid):null),r=()=>{n&&i?.(n)};return N(f,{"data-index":e.index,ref:e=>_.measureElement(e),className:`absolute flex w-full cursor-pointer focus:outline-none`,style:{transform:`translateY(${e.start}px)`},onClick:r,tabIndex:i?0:void 0,role:i?`button`:void 0,children:t.getVisibleCells().map(e=>{let t=e.column.getIsPinned(),n=t===`left`&&e.column.getIsLastColumn(`left`),r=t===`right`&&e.column.getIsFirstColumn(`right`);return N(c,{"data-pinned":t||void 0,"data-last-col":n?`left`:r?`right`:void 0,style:{...U(e.column),width:e.column.getSize()},className:T(`flex overflow-hidden py-2.5`,`data-pinned:bg-background/90`,`[&[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`),children:F(e.column.columnDef.cell,e.getContext())},e.id)})},t.id)})})}),n&&N(l,{children:N(`div`,{className:`flex w-full justify-center py-2`,children:N(C,{size:16,className:`animate-spin`,"aria-label":`Loading more data`})})})]}),N(m,{orientation:`horizontal`})]})},J=({onAdd:e,onRefresh:n})=>P(t,{justify:`between`,padding:`none`,width:`full`,className:`flex-0`,children:[N(`div`,{className:`max-sm:flex-1`,children:N(_,{placeholder:`Search...`})}),P(t,{wrap:!1,className:`flex-0 px-0`,children:[!!e&&N(h,{onClick:e}),N(g,{onClick:n})]})]});function Y({data:e,totalCount:n,isLoading:r,columns:i,onAdd:a,onRefresh:o,onClickRow:s}){"use no memo";let[c,l]=j({}),[u,d]=j([]),[f,p]=j([]),[m,h]=j({}),g=k(()=>({columnPinning:{right:[`actions`,`update`,`delete`]}}),[]),_=V({initialState:g,data:e,columns:i,rowCount:n,columnResizeMode:`onChange`,enableColumnResizing:!1,enableMultiRowSelection:!1,getCoreRowModel:I(),getSortedRowModel:B(),getFilteredRowModel:z(),getFacetedRowModel:L(),getFacetedUniqueValues:R(),getRowId:e=>e.id||e.uuid,state:{rowSelection:c,sorting:u,columnVisibility:m,columnFilters:f},onRowSelectionChange:l,onSortingChange:d,onColumnVisibilityChange:h,onColumnFiltersChange:p});return P(t,{vertical:!0,wrap:!1,gap:`sm`,align:`start`,className:`size-full overflow-y-auto pt-1`,children:[N(J,{onAdd:a,onRefresh:o}),N(t,{padding:`none`,vertical:!0,wrap:!1,width:`full`,className:`flex-1 overflow-auto pb-4`,children:N(q,{table:_,isLoading:r,onClickRow:s})})]})}export{Y as Table};
2
2
  //# sourceMappingURL=index.js.map