erp-pro-ui 0.1.4 → 0.1.6

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 (484) hide show
  1. package/README.md +137 -28
  2. package/dist/accordion.cjs +1 -1
  3. package/dist/accordion.mjs +1 -1
  4. package/dist/alert.cjs +1 -1
  5. package/dist/alert.mjs +1 -1
  6. package/dist/animated-content.cjs +1 -1
  7. package/dist/animated-content.mjs +1 -1
  8. package/dist/animations.css +2 -2
  9. package/dist/ascii-text.cjs +1 -1
  10. package/dist/ascii-text.mjs +1 -1
  11. package/dist/background-gradient-animation.cjs +1 -1
  12. package/dist/background-gradient-animation.mjs +1 -1
  13. package/dist/button-hover-border-gradient.cjs +1 -1
  14. package/dist/button-hover-border-gradient.mjs +1 -1
  15. package/dist/button.cjs +1 -1
  16. package/dist/button.mjs +1 -1
  17. package/dist/calendar.cjs +1 -1
  18. package/dist/calendar.mjs +1 -1
  19. package/dist/card.cjs +1 -1
  20. package/dist/card.mjs +1 -1
  21. package/dist/carousel.cjs +1 -1
  22. package/dist/carousel.mjs +1 -1
  23. package/dist/catalog.cjs +6 -0
  24. package/dist/catalog.cjs.map +1 -1
  25. package/dist/catalog.d.ts +11 -1
  26. package/dist/catalog.d.ts.map +1 -1
  27. package/dist/catalog.mjs +6 -0
  28. package/dist/catalog.mjs.map +1 -1
  29. package/dist/charts.cjs +2 -1
  30. package/dist/charts.mjs +2 -2
  31. package/dist/checkbox.cjs +1 -1
  32. package/dist/checkbox.mjs +1 -1
  33. package/dist/chip.cjs +3 -1
  34. package/dist/chip.mjs +2 -2
  35. package/dist/chroma-grid.cjs +1 -1
  36. package/dist/chroma-grid.mjs +1 -1
  37. package/dist/chunks/{HoverBorderGradient-Df3PKpw6.cjs → HoverBorderGradient-C5D6lGg0.cjs} +8 -8
  38. package/dist/chunks/HoverBorderGradient-C5D6lGg0.cjs.map +1 -0
  39. package/dist/chunks/{HoverBorderGradient-DVFEIXFQ.mjs → HoverBorderGradient-CduqqQgX.mjs} +8 -8
  40. package/dist/chunks/HoverBorderGradient-CduqqQgX.mjs.map +1 -0
  41. package/dist/chunks/{accordion-Cbt-SJhj.mjs → accordion-6zxJUYXr.mjs} +8 -8
  42. package/dist/chunks/accordion-6zxJUYXr.mjs.map +1 -0
  43. package/dist/chunks/{accordion-pfJR8YYA.cjs → accordion-CmB6EidC.cjs} +8 -8
  44. package/dist/chunks/accordion-CmB6EidC.cjs.map +1 -0
  45. package/dist/chunks/alert-C5KEeQqh.cjs +81 -0
  46. package/dist/chunks/alert-C5KEeQqh.cjs.map +1 -0
  47. package/dist/chunks/alert-XVmYJgds.mjs +75 -0
  48. package/dist/chunks/alert-XVmYJgds.mjs.map +1 -0
  49. package/dist/chunks/{animated-content-CttSmLWV.cjs → animated-content-CLsFnjgr.cjs} +1 -1
  50. package/dist/chunks/{animated-content-CttSmLWV.cjs.map → animated-content-CLsFnjgr.cjs.map} +1 -1
  51. package/dist/chunks/{animated-content-C1uNg1xO.mjs → animated-content-bK6xp-vc.mjs} +1 -1
  52. package/dist/chunks/{animated-content-C1uNg1xO.mjs.map → animated-content-bK6xp-vc.mjs.map} +1 -1
  53. package/dist/chunks/{ascii-text-DlmArZXh.cjs → ascii-text-BP-BBy0-.cjs} +3 -3
  54. package/dist/chunks/{ascii-text-DlmArZXh.cjs.map → ascii-text-BP-BBy0-.cjs.map} +1 -1
  55. package/dist/chunks/{ascii-text-C5tyNsR3.mjs → ascii-text-RJxX3wCC.mjs} +1 -1
  56. package/dist/chunks/{ascii-text-C5tyNsR3.mjs.map → ascii-text-RJxX3wCC.mjs.map} +1 -1
  57. package/dist/chunks/{background-gradient-animation-BL-lnrJe.mjs → background-gradient-animation-DpKJ3ecq.mjs} +3 -3
  58. package/dist/chunks/{background-gradient-animation-BL-lnrJe.mjs.map → background-gradient-animation-DpKJ3ecq.mjs.map} +1 -1
  59. package/dist/chunks/{background-gradient-animation-CXV9GDH8.cjs → background-gradient-animation-II9hdrgB.cjs} +3 -3
  60. package/dist/chunks/{background-gradient-animation-CXV9GDH8.cjs.map → background-gradient-animation-II9hdrgB.cjs.map} +1 -1
  61. package/dist/chunks/{button-B0Lhj0AS.mjs → button-DddUhuR-.mjs} +6 -5
  62. package/dist/chunks/button-DddUhuR-.mjs.map +1 -0
  63. package/dist/chunks/{button-hover-border-gradient-CvoM60wz.mjs → button-hover-border-gradient-DFppVRI4.mjs} +3 -3
  64. package/dist/chunks/{button-hover-border-gradient-CvoM60wz.mjs.map → button-hover-border-gradient-DFppVRI4.mjs.map} +1 -1
  65. package/dist/chunks/{button-hover-border-gradient-CSHXM5Cm.cjs → button-hover-border-gradient-DX2lBG5C.cjs} +3 -3
  66. package/dist/chunks/{button-hover-border-gradient-CSHXM5Cm.cjs.map → button-hover-border-gradient-DX2lBG5C.cjs.map} +1 -1
  67. package/dist/chunks/{button-CZL6kFzT.cjs → button-xqernofO.cjs} +6 -5
  68. package/dist/chunks/button-xqernofO.cjs.map +1 -0
  69. package/dist/chunks/{calendar-DrCgT_pj.mjs → calendar-Cp84V2rY.mjs} +7 -7
  70. package/dist/chunks/calendar-Cp84V2rY.mjs.map +1 -0
  71. package/dist/chunks/{calendar-Cpp_Rc7T.cjs → calendar-DuCKr6b7.cjs} +7 -7
  72. package/dist/chunks/calendar-DuCKr6b7.cjs.map +1 -0
  73. package/dist/chunks/{card-C5_tFK6Q.cjs → card-CqPDr6Tt.cjs} +4 -4
  74. package/dist/chunks/card-CqPDr6Tt.cjs.map +1 -0
  75. package/dist/chunks/{card-Dh8wNv8N.mjs → card-SpHHNB0c.mjs} +4 -4
  76. package/dist/chunks/card-SpHHNB0c.mjs.map +1 -0
  77. package/dist/chunks/{carousel-BYwqI4cA.mjs → carousel-C1skQ65z.mjs} +14 -14
  78. package/dist/chunks/carousel-C1skQ65z.mjs.map +1 -0
  79. package/dist/chunks/{carousel-C1338X8h.cjs → carousel-YlRLOGkM.cjs} +11 -11
  80. package/dist/chunks/carousel-YlRLOGkM.cjs.map +1 -0
  81. package/dist/chunks/{charts-BYvM4TMG.mjs → charts-C-Qee_JY.mjs} +118 -19
  82. package/dist/chunks/charts-C-Qee_JY.mjs.map +1 -0
  83. package/dist/chunks/{charts-DbxyHtlX.cjs → charts-CZEYcr6X.cjs} +119 -14
  84. package/dist/chunks/charts-CZEYcr6X.cjs.map +1 -0
  85. package/dist/chunks/{checkbox-Pr49U9F1.mjs → checkbox-DjGpvMyo.mjs} +12 -12
  86. package/dist/chunks/checkbox-DjGpvMyo.mjs.map +1 -0
  87. package/dist/chunks/{checkbox-CxOcjoGP.cjs → checkbox-NM_iPd6S.cjs} +10 -10
  88. package/dist/chunks/checkbox-NM_iPd6S.cjs.map +1 -0
  89. package/dist/chunks/chip-BY83_HK7.cjs +203 -0
  90. package/dist/chunks/chip-BY83_HK7.cjs.map +1 -0
  91. package/dist/chunks/chip-CbO8-1lK.mjs +185 -0
  92. package/dist/chunks/chip-CbO8-1lK.mjs.map +1 -0
  93. package/dist/chunks/{chroma-grid-BAo6V5A7.mjs → chroma-grid-CexX28VQ.mjs} +6 -6
  94. package/dist/chunks/chroma-grid-CexX28VQ.mjs.map +1 -0
  95. package/dist/chunks/{chroma-grid-CIk0dsNS.cjs → chroma-grid-DP__XtmV.cjs} +6 -6
  96. package/dist/chunks/chroma-grid-DP__XtmV.cjs.map +1 -0
  97. package/dist/chunks/{color-palette-euKQMWlV.mjs → color-palette-BU1cI6XP.mjs} +166 -132
  98. package/dist/chunks/color-palette-BU1cI6XP.mjs.map +1 -0
  99. package/dist/chunks/{color-palette-2TuEMkAn.cjs → color-palette-ThIKMhT1.cjs} +168 -133
  100. package/dist/chunks/color-palette-ThIKMhT1.cjs.map +1 -0
  101. package/dist/chunks/{combobox-CwGubKTt.cjs → combobox-B7UIcjsI.cjs} +31 -23
  102. package/dist/chunks/combobox-B7UIcjsI.cjs.map +1 -0
  103. package/dist/chunks/{combobox-DrFmkI0F.mjs → combobox-D6WnThIQ.mjs} +30 -22
  104. package/dist/chunks/combobox-D6WnThIQ.mjs.map +1 -0
  105. package/dist/chunks/data-table-KDM8AEwU.mjs +1555 -0
  106. package/dist/chunks/data-table-KDM8AEwU.mjs.map +1 -0
  107. package/dist/chunks/data-table-z-YDzi0N.cjs +1646 -0
  108. package/dist/chunks/data-table-z-YDzi0N.cjs.map +1 -0
  109. package/dist/chunks/{date-picker-CNPORxhv.mjs → date-picker-Bh6_p4bD.mjs} +39 -19
  110. package/dist/chunks/date-picker-Bh6_p4bD.mjs.map +1 -0
  111. package/dist/chunks/{date-picker-CZo68Fkl.cjs → date-picker-CfCvp6Tj.cjs} +39 -19
  112. package/dist/chunks/date-picker-CfCvp6Tj.cjs.map +1 -0
  113. package/dist/chunks/{dialog-DUWnV9tN.mjs → dialog-BibwiFLY.mjs} +33 -30
  114. package/dist/chunks/dialog-BibwiFLY.mjs.map +1 -0
  115. package/dist/chunks/{dialog-CYFiWN8M.cjs → dialog-I141I0nc.cjs} +33 -30
  116. package/dist/chunks/dialog-I141I0nc.cjs.map +1 -0
  117. package/dist/chunks/{drawer-D82Jz6KO.mjs → drawer-DsE8Pb8e.mjs} +11 -11
  118. package/dist/chunks/drawer-DsE8Pb8e.mjs.map +1 -0
  119. package/dist/chunks/{drawer-CLjsYdxN.cjs → drawer-EC9eopGX.cjs} +11 -11
  120. package/dist/chunks/drawer-EC9eopGX.cjs.map +1 -0
  121. package/dist/chunks/{form-B2vcaHwh.mjs → form-CRwpjFWu.mjs} +10 -10
  122. package/dist/chunks/form-CRwpjFWu.mjs.map +1 -0
  123. package/dist/chunks/{form-CzH9GQc6.cjs → form-DaGyqM97.cjs} +10 -10
  124. package/dist/chunks/form-DaGyqM97.cjs.map +1 -0
  125. package/dist/chunks/{gradual-blur-B9GoY8o1.cjs → gradual-blur-Di7MBs7M.cjs} +1 -1
  126. package/dist/chunks/{gradual-blur-B9GoY8o1.cjs.map → gradual-blur-Di7MBs7M.cjs.map} +1 -1
  127. package/dist/chunks/{gradual-blur-Bl3dOMEz.mjs → gradual-blur-pt0UiMEy.mjs} +1 -1
  128. package/dist/chunks/{gradual-blur-Bl3dOMEz.mjs.map → gradual-blur-pt0UiMEy.mjs.map} +1 -1
  129. package/dist/chunks/{hover-card-xqwpmZNm.mjs → hover-card-C3Xa18Ov.mjs} +7 -8
  130. package/dist/chunks/hover-card-C3Xa18Ov.mjs.map +1 -0
  131. package/dist/chunks/{hover-card-v0QwmVBU.cjs → hover-card-D78E07hk.cjs} +7 -8
  132. package/dist/chunks/hover-card-D78E07hk.cjs.map +1 -0
  133. package/dist/chunks/{icons-BxIzP2jd.cjs → icons-CRanVZB1.cjs} +8 -8
  134. package/dist/chunks/icons-CRanVZB1.cjs.map +1 -0
  135. package/dist/chunks/{icons-DuumN7z-.mjs → icons-bx3nrxNv.mjs} +8 -8
  136. package/dist/chunks/icons-bx3nrxNv.mjs.map +1 -0
  137. package/dist/chunks/{input-Bt_r_B_c.mjs → input-CpARxvFi.mjs} +14 -14
  138. package/dist/chunks/input-CpARxvFi.mjs.map +1 -0
  139. package/dist/chunks/{input-BWM6G7jq.cjs → input-DTW_8EwG.cjs} +14 -14
  140. package/dist/chunks/input-DTW_8EwG.cjs.map +1 -0
  141. package/dist/chunks/{label-KPA-yYOF.mjs → label-BVH02Yvq.mjs} +1 -1
  142. package/dist/chunks/{label-KPA-yYOF.mjs.map → label-BVH02Yvq.mjs.map} +1 -1
  143. package/dist/chunks/{label-BWPEGVam.cjs → label-DN-Bg5i8.cjs} +1 -1
  144. package/dist/chunks/{label-BWPEGVam.cjs.map → label-DN-Bg5i8.cjs.map} +1 -1
  145. package/dist/chunks/{loading-q7IEg56I.cjs → loading-B1yrR3KX.cjs} +7 -7
  146. package/dist/chunks/{loading-q7IEg56I.cjs.map → loading-B1yrR3KX.cjs.map} +1 -1
  147. package/dist/chunks/{loading-S1TdIrbB.mjs → loading-B2Ron0Fd.mjs} +7 -7
  148. package/dist/chunks/{loading-S1TdIrbB.mjs.map → loading-B2Ron0Fd.mjs.map} +1 -1
  149. package/dist/chunks/{multi-select-combobox-D46M-AN9.mjs → multi-select-combobox-CMhAXEGZ.mjs} +15 -15
  150. package/dist/chunks/multi-select-combobox-CMhAXEGZ.mjs.map +1 -0
  151. package/dist/chunks/{multi-select-combobox-dS6bJE_e.cjs → multi-select-combobox-FEbMAPEg.cjs} +16 -16
  152. package/dist/chunks/multi-select-combobox-FEbMAPEg.cjs.map +1 -0
  153. package/dist/chunks/{otp-input-DSW9Ca_D.cjs → otp-input-B6nJC-Fl.cjs} +10 -10
  154. package/dist/chunks/otp-input-B6nJC-Fl.cjs.map +1 -0
  155. package/dist/chunks/{otp-input-DeAi4nJ_.mjs → otp-input-B7DhhsMe.mjs} +10 -10
  156. package/dist/chunks/otp-input-B7DhhsMe.mjs.map +1 -0
  157. package/dist/chunks/{overlay-TycCIFOu.mjs → overlay-C58wXorc.mjs} +1 -1
  158. package/dist/chunks/{overlay-TycCIFOu.mjs.map → overlay-C58wXorc.mjs.map} +1 -1
  159. package/dist/chunks/{overlay-DWNTyQzK.cjs → overlay-DwJgjJuu.cjs} +1 -1
  160. package/dist/chunks/{overlay-DWNTyQzK.cjs.map → overlay-DwJgjJuu.cjs.map} +1 -1
  161. package/dist/chunks/{password-strength-meter-DxMV6GAs.cjs → password-strength-meter-6vNu6p19.cjs} +13 -13
  162. package/dist/chunks/password-strength-meter-6vNu6p19.cjs.map +1 -0
  163. package/dist/chunks/{password-strength-meter-CbNSBuh_.mjs → password-strength-meter-D7gmZNjp.mjs} +13 -13
  164. package/dist/chunks/password-strength-meter-D7gmZNjp.mjs.map +1 -0
  165. package/dist/chunks/{progress-bar-BdvQtpm3.cjs → progress-bar-CbsCItvv.cjs} +78 -5
  166. package/dist/chunks/progress-bar-CbsCItvv.cjs.map +1 -0
  167. package/dist/chunks/{progress-bar-B9sy7WBT.mjs → progress-bar-D6Q9Di7D.mjs} +72 -5
  168. package/dist/chunks/progress-bar-D6Q9Di7D.mjs.map +1 -0
  169. package/dist/chunks/{radio-C9w_CoiY.mjs → radio-C6Meq2iz.mjs} +2 -2
  170. package/dist/chunks/{radio-C9w_CoiY.mjs.map → radio-C6Meq2iz.mjs.map} +1 -1
  171. package/dist/chunks/{radio-jMHDvaMY.cjs → radio-DxakS7iD.cjs} +2 -2
  172. package/dist/chunks/{radio-jMHDvaMY.cjs.map → radio-DxakS7iD.cjs.map} +1 -1
  173. package/dist/chunks/{select-B8UQ6Uq5.mjs → select-1rSJeUBQ.mjs} +25 -19
  174. package/dist/chunks/select-1rSJeUBQ.mjs.map +1 -0
  175. package/dist/chunks/{select-CCUSMvfS.cjs → select-SOmIt-BD.cjs} +25 -19
  176. package/dist/chunks/select-SOmIt-BD.cjs.map +1 -0
  177. package/dist/chunks/{skeleton-CtLumdRw.mjs → skeleton-BRx-80dg.mjs} +18 -18
  178. package/dist/chunks/skeleton-BRx-80dg.mjs.map +1 -0
  179. package/dist/chunks/{skeleton-BNea1Rcp.cjs → skeleton-o7DlA5yl.cjs} +18 -18
  180. package/dist/chunks/skeleton-o7DlA5yl.cjs.map +1 -0
  181. package/dist/chunks/{spinners-BL4ERCCw.cjs → spinners-BylPf0uk.cjs} +2 -2
  182. package/dist/chunks/{spinners-BL4ERCCw.cjs.map → spinners-BylPf0uk.cjs.map} +1 -1
  183. package/dist/chunks/{spinners-BBCWD2gw.mjs → spinners-hJaI_cBH.mjs} +2 -2
  184. package/dist/chunks/{spinners-BBCWD2gw.mjs.map → spinners-hJaI_cBH.mjs.map} +1 -1
  185. package/dist/chunks/{splash-cursor-BVSmbcIX.cjs → splash-cursor-CmqkSl6m.cjs} +1 -1
  186. package/dist/chunks/{splash-cursor-BVSmbcIX.cjs.map → splash-cursor-CmqkSl6m.cjs.map} +1 -1
  187. package/dist/chunks/{splash-cursor-rSrTnawZ.mjs → splash-cursor-Cxouip_h.mjs} +1 -1
  188. package/dist/chunks/{splash-cursor-rSrTnawZ.mjs.map → splash-cursor-Cxouip_h.mjs.map} +1 -1
  189. package/dist/chunks/{spotlight-card-DS1dy1W3.cjs → spotlight-card-B3L3K21T.cjs} +8 -8
  190. package/dist/chunks/spotlight-card-B3L3K21T.cjs.map +1 -0
  191. package/dist/chunks/{spotlight-card-BpZLMOp6.mjs → spotlight-card-DIgacTxA.mjs} +8 -8
  192. package/dist/chunks/spotlight-card-DIgacTxA.mjs.map +1 -0
  193. package/dist/chunks/{stepper-D6qQbZdg.cjs → stepper-BpjKyemI.cjs} +212 -129
  194. package/dist/chunks/stepper-BpjKyemI.cjs.map +1 -0
  195. package/dist/chunks/{stepper-DUknuW2E.mjs → stepper-JD4ZHT-b.mjs} +213 -130
  196. package/dist/chunks/stepper-JD4ZHT-b.mjs.map +1 -0
  197. package/dist/chunks/sun-to-moon-button-BOx1n6nk.cjs +311 -0
  198. package/dist/chunks/sun-to-moon-button-BOx1n6nk.cjs.map +1 -0
  199. package/dist/chunks/sun-to-moon-button-CBbDar4k.mjs +299 -0
  200. package/dist/chunks/sun-to-moon-button-CBbDar4k.mjs.map +1 -0
  201. package/dist/chunks/{switch-C5otDb4c.cjs → switch-C9suGEWg.cjs} +5 -5
  202. package/dist/chunks/switch-C9suGEWg.cjs.map +1 -0
  203. package/dist/chunks/{switch-DOVl_i_s.mjs → switch-hd7zTBD_.mjs} +5 -5
  204. package/dist/chunks/switch-hd7zTBD_.mjs.map +1 -0
  205. package/dist/chunks/{textarea-Blky_fLK.mjs → textarea-Cu26uKqq.mjs} +5 -5
  206. package/dist/chunks/textarea-Cu26uKqq.mjs.map +1 -0
  207. package/dist/chunks/{textarea-ok_NlE2p.cjs → textarea-cXgKzluG.cjs} +5 -5
  208. package/dist/chunks/textarea-cXgKzluG.cjs.map +1 -0
  209. package/dist/chunks/{theme-7DWLxJK_.cjs → theme-D6B-FaoE.cjs} +28 -5
  210. package/dist/chunks/theme-D6B-FaoE.cjs.map +1 -0
  211. package/dist/chunks/{theme-BceKeYhw.mjs → theme-koPrLKQv.mjs} +28 -5
  212. package/dist/chunks/theme-koPrLKQv.mjs.map +1 -0
  213. package/dist/chunks/{toast-CvfP7PUP.mjs → toast-CpX-22n2.mjs} +26 -26
  214. package/dist/chunks/toast-CpX-22n2.mjs.map +1 -0
  215. package/dist/chunks/{toast-Ds7_19Ap.cjs → toast-REa6FRBc.cjs} +26 -26
  216. package/dist/chunks/toast-REa6FRBc.cjs.map +1 -0
  217. package/dist/chunks/{tooltip-efHETBo1.mjs → tooltip-CASvQiFQ.mjs} +6 -7
  218. package/dist/chunks/tooltip-CASvQiFQ.mjs.map +1 -0
  219. package/dist/chunks/{tooltip-nkIqViGk.cjs → tooltip-CKF78rni.cjs} +6 -7
  220. package/dist/chunks/tooltip-CKF78rni.cjs.map +1 -0
  221. package/dist/chunks/truncated-text-DTgks5yS.mjs +45 -0
  222. package/dist/chunks/truncated-text-DTgks5yS.mjs.map +1 -0
  223. package/dist/chunks/truncated-text-istgJRUq.cjs +52 -0
  224. package/dist/chunks/truncated-text-istgJRUq.cjs.map +1 -0
  225. package/dist/chunks/{typography-CLu6Hx9j.mjs → typography-KxLf6Td8.mjs} +5 -5
  226. package/dist/chunks/typography-KxLf6Td8.mjs.map +1 -0
  227. package/dist/chunks/{typography-DaLu9tty.cjs → typography-sGmh0gZ_.cjs} +6 -6
  228. package/dist/chunks/typography-sGmh0gZ_.cjs.map +1 -0
  229. package/dist/color-palette.cjs +1 -1
  230. package/dist/color-palette.mjs +1 -1
  231. package/dist/colors.css +45 -149
  232. package/dist/combobox.cjs +1 -1
  233. package/dist/combobox.mjs +1 -1
  234. package/dist/components/data-display/card/Card.d.ts.map +1 -1
  235. package/dist/components/data-display/charts/MiniNeonSparkline.d.ts +17 -0
  236. package/dist/components/data-display/charts/MiniNeonSparkline.d.ts.map +1 -0
  237. package/dist/components/data-display/charts/ThinBreakdownBar.d.ts.map +1 -1
  238. package/dist/components/data-display/charts/index.d.ts +2 -0
  239. package/dist/components/data-display/charts/index.d.ts.map +1 -1
  240. package/dist/components/data-display/chip/Chip.d.ts.map +1 -1
  241. package/dist/components/data-display/chip/SpecialChip.d.ts +23 -0
  242. package/dist/components/data-display/chip/SpecialChip.d.ts.map +1 -0
  243. package/dist/components/data-display/chip/index.d.ts +2 -0
  244. package/dist/components/data-display/chip/index.d.ts.map +1 -1
  245. package/dist/components/data-display/color-palette/ColorPalette.d.ts.map +1 -1
  246. package/dist/components/data-display/data-table/DataTable.d.ts +49 -26
  247. package/dist/components/data-display/data-table/DataTable.d.ts.map +1 -1
  248. package/dist/components/data-display/data-table/DataTableControls.d.ts +34 -0
  249. package/dist/components/data-display/data-table/DataTableControls.d.ts.map +1 -0
  250. package/dist/components/data-display/data-table/DataTableFilters.d.ts +27 -0
  251. package/dist/components/data-display/data-table/DataTableFilters.d.ts.map +1 -0
  252. package/dist/components/data-display/data-table/DataTableRows.d.ts +34 -0
  253. package/dist/components/data-display/data-table/DataTableRows.d.ts.map +1 -0
  254. package/dist/components/data-display/data-table/DataTableToolbar.d.ts +48 -0
  255. package/dist/components/data-display/data-table/DataTableToolbar.d.ts.map +1 -0
  256. package/dist/components/data-display/data-table/TablePrimitives.d.ts +11 -0
  257. package/dist/components/data-display/data-table/TablePrimitives.d.ts.map +1 -0
  258. package/dist/components/data-display/data-table/direction.d.ts +7 -0
  259. package/dist/components/data-display/data-table/direction.d.ts.map +1 -0
  260. package/dist/components/data-display/data-table/index.d.ts +2 -2
  261. package/dist/components/data-display/data-table/index.d.ts.map +1 -1
  262. package/dist/components/data-display/loading/Loading.d.ts.map +1 -1
  263. package/dist/components/data-display/progress-bar/CircularProgress.d.ts +17 -0
  264. package/dist/components/data-display/progress-bar/CircularProgress.d.ts.map +1 -0
  265. package/dist/components/data-display/progress-bar/index.d.ts +2 -0
  266. package/dist/components/data-display/progress-bar/index.d.ts.map +1 -1
  267. package/dist/components/effects/sun-to-moon-button/ThemeSwitcherButtons.d.ts +5 -0
  268. package/dist/components/effects/sun-to-moon-button/ThemeSwitcherButtons.d.ts.map +1 -0
  269. package/dist/components/effects/sun-to-moon-button/index.d.ts +2 -0
  270. package/dist/components/effects/sun-to-moon-button/index.d.ts.map +1 -1
  271. package/dist/components/feedback/alert/Alert.d.ts +1 -1
  272. package/dist/components/feedback/alert/Alert.d.ts.map +1 -1
  273. package/dist/components/feedback/alert/types.d.ts +11 -2
  274. package/dist/components/feedback/alert/types.d.ts.map +1 -1
  275. package/dist/components/forms/button/Button.d.ts +1 -1
  276. package/dist/components/forms/button/Button.d.ts.map +1 -1
  277. package/dist/components/forms/button/index.d.ts +1 -1
  278. package/dist/components/forms/button/index.d.ts.map +1 -1
  279. package/dist/components/forms/button/types.d.ts +4 -1
  280. package/dist/components/forms/button/types.d.ts.map +1 -1
  281. package/dist/components/forms/calendar/Calendar.d.ts.map +1 -1
  282. package/dist/components/forms/checkbox/Checkbox.d.ts.map +1 -1
  283. package/dist/components/forms/combobox/Combobox.d.ts.map +1 -1
  284. package/dist/components/forms/date-picker/DatePicker.d.ts.map +1 -1
  285. package/dist/components/forms/form/Form.d.ts.map +1 -1
  286. package/dist/components/forms/input/Input.d.ts.map +1 -1
  287. package/dist/components/forms/input/types.d.ts +1 -1
  288. package/dist/components/forms/input/types.d.ts.map +1 -1
  289. package/dist/components/forms/password-strength-meter/PasswordCriteria.d.ts.map +1 -1
  290. package/dist/components/forms/password-strength-meter/PasswordStrengthMeter.d.ts.map +1 -1
  291. package/dist/components/forms/select/Select.d.ts.map +1 -1
  292. package/dist/components/navigation/accordion/Accordion.d.ts.map +1 -1
  293. package/dist/components/navigation/stepper/Stepper.d.ts +1 -1
  294. package/dist/components/navigation/stepper/Stepper.d.ts.map +1 -1
  295. package/dist/components/navigation/stepper/Stepper1.d.ts.map +1 -1
  296. package/dist/components/navigation/stepper/index.d.ts +1 -1
  297. package/dist/components/navigation/stepper/index.d.ts.map +1 -1
  298. package/dist/components/navigation/stepper/types.d.ts +3 -0
  299. package/dist/components/navigation/stepper/types.d.ts.map +1 -1
  300. package/dist/components/navigation/tabs/Tabs.d.ts +3 -0
  301. package/dist/components/navigation/tabs/Tabs.d.ts.map +1 -0
  302. package/dist/components/navigation/tabs/index.d.ts +3 -0
  303. package/dist/components/navigation/tabs/index.d.ts.map +1 -0
  304. package/dist/components/navigation/tabs/types.d.ts +21 -0
  305. package/dist/components/navigation/tabs/types.d.ts.map +1 -0
  306. package/dist/components/overlays/dialog/Dialog.d.ts.map +1 -1
  307. package/dist/components/overlays/dialog/types.d.ts +1 -0
  308. package/dist/components/overlays/dialog/types.d.ts.map +1 -1
  309. package/dist/components/overlays/drawer/Drawer.d.ts.map +1 -1
  310. package/dist/components/overlays/hover-card/HoverCard.d.ts.map +1 -1
  311. package/dist/components/overlays/toast/Toast.d.ts.map +1 -1
  312. package/dist/components/overlays/tooltip/Tooltip.d.ts.map +1 -1
  313. package/dist/components/shared/overlay.d.ts +1 -1
  314. package/dist/components/typography/Typography.d.ts.map +1 -1
  315. package/dist/components/typography/truncated-text/TruncatedText.d.ts +11 -0
  316. package/dist/components/typography/truncated-text/TruncatedText.d.ts.map +1 -0
  317. package/dist/components/typography/truncated-text/index.d.ts +3 -0
  318. package/dist/components/typography/truncated-text/index.d.ts.map +1 -0
  319. package/dist/contexts/ThemeContext.d.ts +1 -1
  320. package/dist/contexts/ThemeContext.d.ts.map +1 -1
  321. package/dist/contexts/index.d.ts +1 -1
  322. package/dist/contexts/index.d.ts.map +1 -1
  323. package/dist/data-table.cjs +11 -1
  324. package/dist/data-table.mjs +2 -2
  325. package/dist/date-picker.cjs +1 -1
  326. package/dist/date-picker.mjs +1 -1
  327. package/dist/dialog.cjs +1 -1
  328. package/dist/dialog.mjs +1 -1
  329. package/dist/docs.cjs +76 -26
  330. package/dist/docs.cjs.map +1 -1
  331. package/dist/docs.d.ts +10 -10
  332. package/dist/docs.d.ts.map +1 -1
  333. package/dist/docs.mjs +76 -26
  334. package/dist/docs.mjs.map +1 -1
  335. package/dist/drawer.cjs +1 -1
  336. package/dist/drawer.mjs +1 -1
  337. package/dist/form.cjs +1 -1
  338. package/dist/form.mjs +1 -1
  339. package/dist/foundation.css +54 -3
  340. package/dist/foundations/theme/ThemeProvider.d.ts +22 -1
  341. package/dist/foundations/theme/ThemeProvider.d.ts.map +1 -1
  342. package/dist/foundations/theme/index.d.ts +1 -1
  343. package/dist/foundations/theme/index.d.ts.map +1 -1
  344. package/dist/gradual-blur.cjs +1 -1
  345. package/dist/gradual-blur.mjs +1 -1
  346. package/dist/hover-border-gradient.cjs +1 -1
  347. package/dist/hover-border-gradient.mjs +1 -1
  348. package/dist/hover-card.cjs +1 -1
  349. package/dist/hover-card.mjs +1 -1
  350. package/dist/icons.cjs +1 -1
  351. package/dist/icons.mjs +1 -1
  352. package/dist/index.cjs +201 -48
  353. package/dist/index.cjs.map +1 -1
  354. package/dist/index.d.ts +17 -9
  355. package/dist/index.d.ts.map +1 -1
  356. package/dist/index.mjs +183 -50
  357. package/dist/index.mjs.map +1 -1
  358. package/dist/input.cjs +1 -1
  359. package/dist/input.mjs +1 -1
  360. package/dist/label.cjs +1 -1
  361. package/dist/label.mjs +1 -1
  362. package/dist/loading.cjs +1 -1
  363. package/dist/loading.mjs +1 -1
  364. package/dist/multi-select-combobox.cjs +1 -1
  365. package/dist/multi-select-combobox.mjs +1 -1
  366. package/dist/otp-input.cjs +1 -1
  367. package/dist/otp-input.mjs +1 -1
  368. package/dist/password-strength-meter.cjs +1 -1
  369. package/dist/password-strength-meter.mjs +1 -1
  370. package/dist/progress-bar.cjs +2 -1
  371. package/dist/progress-bar.mjs +2 -2
  372. package/dist/radio.cjs +1 -1
  373. package/dist/radio.mjs +1 -1
  374. package/dist/select.cjs +1 -1
  375. package/dist/select.mjs +1 -1
  376. package/dist/skeleton.cjs +1 -1
  377. package/dist/skeleton.mjs +1 -1
  378. package/dist/spinners.cjs +1 -1
  379. package/dist/spinners.mjs +1 -1
  380. package/dist/splash-cursor.cjs +1 -1
  381. package/dist/splash-cursor.mjs +1 -1
  382. package/dist/spotlight-card.cjs +1 -1
  383. package/dist/spotlight-card.mjs +1 -1
  384. package/dist/stepper.cjs +1 -1
  385. package/dist/stepper.mjs +1 -1
  386. package/dist/sun-to-moon-button.cjs +2 -1
  387. package/dist/sun-to-moon-button.mjs +2 -2
  388. package/dist/switch.cjs +1 -1
  389. package/dist/switch.mjs +1 -1
  390. package/dist/textarea.cjs +1 -1
  391. package/dist/textarea.mjs +1 -1
  392. package/dist/theme.cjs +1 -1
  393. package/dist/theme.mjs +1 -1
  394. package/dist/toast.cjs +1 -1
  395. package/dist/toast.mjs +1 -1
  396. package/dist/tokens.css +592 -298
  397. package/dist/tooltip.cjs +1 -1
  398. package/dist/tooltip.mjs +1 -1
  399. package/dist/truncated-text.cjs +3 -0
  400. package/dist/truncated-text.d.ts +2 -0
  401. package/dist/truncated-text.mjs +2 -0
  402. package/dist/typography.cjs +1 -1
  403. package/dist/typography.mjs +1 -1
  404. package/package.json +15 -9
  405. package/dist/chunks/HoverBorderGradient-DVFEIXFQ.mjs.map +0 -1
  406. package/dist/chunks/HoverBorderGradient-Df3PKpw6.cjs.map +0 -1
  407. package/dist/chunks/accordion-Cbt-SJhj.mjs.map +0 -1
  408. package/dist/chunks/accordion-pfJR8YYA.cjs.map +0 -1
  409. package/dist/chunks/alert-CtdLy4Hv.mjs +0 -40
  410. package/dist/chunks/alert-CtdLy4Hv.mjs.map +0 -1
  411. package/dist/chunks/alert-Dvz1GoL5.cjs +0 -46
  412. package/dist/chunks/alert-Dvz1GoL5.cjs.map +0 -1
  413. package/dist/chunks/button-B0Lhj0AS.mjs.map +0 -1
  414. package/dist/chunks/button-CZL6kFzT.cjs.map +0 -1
  415. package/dist/chunks/calendar-Cpp_Rc7T.cjs.map +0 -1
  416. package/dist/chunks/calendar-DrCgT_pj.mjs.map +0 -1
  417. package/dist/chunks/card-C5_tFK6Q.cjs.map +0 -1
  418. package/dist/chunks/card-Dh8wNv8N.mjs.map +0 -1
  419. package/dist/chunks/carousel-BYwqI4cA.mjs.map +0 -1
  420. package/dist/chunks/carousel-C1338X8h.cjs.map +0 -1
  421. package/dist/chunks/charts-BYvM4TMG.mjs.map +0 -1
  422. package/dist/chunks/charts-DbxyHtlX.cjs.map +0 -1
  423. package/dist/chunks/checkbox-CxOcjoGP.cjs.map +0 -1
  424. package/dist/chunks/checkbox-Pr49U9F1.mjs.map +0 -1
  425. package/dist/chunks/chip-B4ol1yPk.cjs +0 -145
  426. package/dist/chunks/chip-B4ol1yPk.cjs.map +0 -1
  427. package/dist/chunks/chip-DdnBLdpl.mjs +0 -139
  428. package/dist/chunks/chip-DdnBLdpl.mjs.map +0 -1
  429. package/dist/chunks/chroma-grid-BAo6V5A7.mjs.map +0 -1
  430. package/dist/chunks/chroma-grid-CIk0dsNS.cjs.map +0 -1
  431. package/dist/chunks/color-palette-2TuEMkAn.cjs.map +0 -1
  432. package/dist/chunks/color-palette-euKQMWlV.mjs.map +0 -1
  433. package/dist/chunks/combobox-CwGubKTt.cjs.map +0 -1
  434. package/dist/chunks/combobox-DrFmkI0F.mjs.map +0 -1
  435. package/dist/chunks/data-table-Bo80m7qV.mjs +0 -1123
  436. package/dist/chunks/data-table-Bo80m7qV.mjs.map +0 -1
  437. package/dist/chunks/data-table-W1sK5tkL.cjs +0 -1154
  438. package/dist/chunks/data-table-W1sK5tkL.cjs.map +0 -1
  439. package/dist/chunks/date-picker-CNPORxhv.mjs.map +0 -1
  440. package/dist/chunks/date-picker-CZo68Fkl.cjs.map +0 -1
  441. package/dist/chunks/dialog-CYFiWN8M.cjs.map +0 -1
  442. package/dist/chunks/dialog-DUWnV9tN.mjs.map +0 -1
  443. package/dist/chunks/drawer-CLjsYdxN.cjs.map +0 -1
  444. package/dist/chunks/drawer-D82Jz6KO.mjs.map +0 -1
  445. package/dist/chunks/form-B2vcaHwh.mjs.map +0 -1
  446. package/dist/chunks/form-CzH9GQc6.cjs.map +0 -1
  447. package/dist/chunks/hover-card-v0QwmVBU.cjs.map +0 -1
  448. package/dist/chunks/hover-card-xqwpmZNm.mjs.map +0 -1
  449. package/dist/chunks/icons-BxIzP2jd.cjs.map +0 -1
  450. package/dist/chunks/icons-DuumN7z-.mjs.map +0 -1
  451. package/dist/chunks/input-BWM6G7jq.cjs.map +0 -1
  452. package/dist/chunks/input-Bt_r_B_c.mjs.map +0 -1
  453. package/dist/chunks/multi-select-combobox-D46M-AN9.mjs.map +0 -1
  454. package/dist/chunks/multi-select-combobox-dS6bJE_e.cjs.map +0 -1
  455. package/dist/chunks/otp-input-DSW9Ca_D.cjs.map +0 -1
  456. package/dist/chunks/otp-input-DeAi4nJ_.mjs.map +0 -1
  457. package/dist/chunks/password-strength-meter-CbNSBuh_.mjs.map +0 -1
  458. package/dist/chunks/password-strength-meter-DxMV6GAs.cjs.map +0 -1
  459. package/dist/chunks/progress-bar-B9sy7WBT.mjs.map +0 -1
  460. package/dist/chunks/progress-bar-BdvQtpm3.cjs.map +0 -1
  461. package/dist/chunks/select-B8UQ6Uq5.mjs.map +0 -1
  462. package/dist/chunks/select-CCUSMvfS.cjs.map +0 -1
  463. package/dist/chunks/skeleton-BNea1Rcp.cjs.map +0 -1
  464. package/dist/chunks/skeleton-CtLumdRw.mjs.map +0 -1
  465. package/dist/chunks/spotlight-card-BpZLMOp6.mjs.map +0 -1
  466. package/dist/chunks/spotlight-card-DS1dy1W3.cjs.map +0 -1
  467. package/dist/chunks/stepper-D6qQbZdg.cjs.map +0 -1
  468. package/dist/chunks/stepper-DUknuW2E.mjs.map +0 -1
  469. package/dist/chunks/sun-to-moon-button-B2Aje05o.mjs +0 -186
  470. package/dist/chunks/sun-to-moon-button-B2Aje05o.mjs.map +0 -1
  471. package/dist/chunks/sun-to-moon-button-BmFwRBye.cjs +0 -192
  472. package/dist/chunks/sun-to-moon-button-BmFwRBye.cjs.map +0 -1
  473. package/dist/chunks/switch-C5otDb4c.cjs.map +0 -1
  474. package/dist/chunks/switch-DOVl_i_s.mjs.map +0 -1
  475. package/dist/chunks/textarea-Blky_fLK.mjs.map +0 -1
  476. package/dist/chunks/textarea-ok_NlE2p.cjs.map +0 -1
  477. package/dist/chunks/theme-7DWLxJK_.cjs.map +0 -1
  478. package/dist/chunks/theme-BceKeYhw.mjs.map +0 -1
  479. package/dist/chunks/toast-CvfP7PUP.mjs.map +0 -1
  480. package/dist/chunks/toast-Ds7_19Ap.cjs.map +0 -1
  481. package/dist/chunks/tooltip-efHETBo1.mjs.map +0 -1
  482. package/dist/chunks/tooltip-nkIqViGk.cjs.map +0 -1
  483. package/dist/chunks/typography-CLu6Hx9j.mjs.map +0 -1
  484. package/dist/chunks/typography-DaLu9tty.cjs.map +0 -1
@@ -1,1123 +0,0 @@
1
- import { H as SearchIcon, M as ChevronLeftIcon, O as ChevronsRightIcon, R as TrashIcon, T as EllipsisVerticalIcon, W as SettingsIcon, a as RefreshIcon, d as FilterXIcon, f as FilterProfileIcon, j as ChevronRightIcon, k as ChevronsLeftIcon, l as LoaderIcon, p as FilterIcon, r as SelectionIcon } from "./icons-DuumN7z-.mjs";
2
- import { t as Button } from "./button-B0Lhj0AS.mjs";
3
- import { t as Select } from "./select-B8UQ6Uq5.mjs";
4
- import { t as Checkbox } from "./checkbox-Pr49U9F1.mjs";
5
- import { t as Chip } from "./chip-DdnBLdpl.mjs";
6
- import { t as Combobox } from "./combobox-DrFmkI0F.mjs";
7
- import { t as MultiSelectCombobox } from "./multi-select-combobox-D46M-AN9.mjs";
8
- import { t as Input } from "./input-Bt_r_B_c.mjs";
9
- import { t as Switch } from "./switch-DOVl_i_s.mjs";
10
- import { t as DatePicker } from "./date-picker-CNPORxhv.mjs";
11
- import React from "react";
12
- import { Fragment, jsx, jsxs } from "react/jsx-runtime";
13
- import { flexRender, getCoreRowModel, getFilteredRowModel, getPaginationRowModel, useReactTable } from "@tanstack/react-table";
14
- //#region src/components/data-display/data-table/DataTable.tsx
15
- function renderDefaultCellValue(value) {
16
- if (value === void 0 || value === null || value === "") return "-";
17
- if (typeof value === "boolean") return value ? "Yes" : "No";
18
- if (Array.isArray(value)) return value.length > 0 ? value.join(", ") : "-";
19
- return value;
20
- }
21
- var FilterDropdown = ({ isOpen, onClose, children }) => {
22
- if (!isOpen) return null;
23
- return /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx("div", {
24
- className: "fixed inset-0 z-40",
25
- onClick: onClose,
26
- "aria-hidden": "true"
27
- }), /* @__PURE__ */ jsx("div", {
28
- className: "absolute top-full right-0 z-50 mt-2 min-w-64 overflow-hidden rounded-[4px] border border-white/45 bg-neutral-50 shadow-[0_18px_40px_rgba(15,23,42,0.18)] ring-1 ring-inset ring-white/35 backdrop-blur-2xl dark:border-white/10 dark:bg-neutral-800/50 dark:shadow-[0_22px_48px_rgba(0,0,0,0.42)] dark:ring-white/6",
29
- children
30
- })] });
31
- };
32
- var FilterButton = ({ icon, label, onClick, hasActive }) => /* @__PURE__ */ jsx(Button, {
33
- onClick,
34
- title: label,
35
- "aria-label": label,
36
- className: `h-10 min-w-10 px-0 py-0 shadow-none ${hasActive ? "border-accent/20 bg-accent-subtle text-accent hover:bg-accent-subtle hover:opacity-100" : "border-transparent bg-transparent text-neutral-600 hover:bg-neutral-100 hover:text-neutral-700 hover:opacity-100 dark:text-neutral-400 dark:hover:bg-neutral-700 dark:hover:text-neutral-200"}`,
37
- children: icon
38
- });
39
- var ColumnToggle = ({ columns, onToggle, onShowAll, onHideAll }) => /* @__PURE__ */ jsxs("div", {
40
- className: "p-4 space-y-3",
41
- children: [
42
- /* @__PURE__ */ jsx("div", {
43
- className: "flex items-center justify-between mb-3",
44
- children: /* @__PURE__ */ jsx("span", {
45
- className: "text-sm font-semibold text-neutral-900 dark:text-white",
46
- children: "COLUMNS"
47
- })
48
- }),
49
- /* @__PURE__ */ jsx("div", {
50
- className: "space-y-2 max-h-64 overflow-y-auto",
51
- children: columns.map((col) => /* @__PURE__ */ jsx("div", {
52
- className: "rounded-[8px] px-2 py-1 hover:bg-neutral-100 dark:hover:bg-neutral-700",
53
- children: /* @__PURE__ */ jsx(Checkbox, {
54
- checked: col.visible !== false,
55
- onChange: () => onToggle(col.id),
56
- label: col.label
57
- })
58
- }, col.id))
59
- }),
60
- (onShowAll || onHideAll) && /* @__PURE__ */ jsxs("div", {
61
- className: "flex gap-2 border-t border-neutral-200 pt-2 dark:border-neutral-700",
62
- children: [onShowAll && /* @__PURE__ */ jsx(Button, {
63
- onClick: onShowAll,
64
- size: "small",
65
- className: "flex-1 border-none bg-transparent px-1 py-1 text-xs font-semibold text-accent shadow-none hover:bg-transparent hover:text-accent-hover hover:opacity-100",
66
- children: "SHOW ALL"
67
- }), onHideAll && /* @__PURE__ */ jsx(Button, {
68
- onClick: onHideAll,
69
- size: "small",
70
- className: "flex-1 border-none bg-transparent px-1 py-1 text-xs font-semibold text-neutral-500 shadow-none hover:bg-transparent hover:text-neutral-600 hover:opacity-100 dark:text-neutral-300 dark:hover:text-white",
71
- children: "HIDE ALL"
72
- })]
73
- })
74
- ]
75
- });
76
- var FilterProfile = ({ isOpen, onClose, onSaveProfile }) => {
77
- const [profileName, setProfileName] = React.useState("");
78
- const handleSave = () => {
79
- if (profileName.trim()) {
80
- onSaveProfile(profileName);
81
- setProfileName("");
82
- onClose();
83
- }
84
- };
85
- if (!isOpen) return null;
86
- return /* @__PURE__ */ jsx("div", {
87
- className: "fixed inset-0 bg-black/50 flex items-center justify-center z-50",
88
- onClick: onClose,
89
- children: /* @__PURE__ */ jsxs("div", {
90
- className: "bg-white dark:bg-neutral-800 rounded-xl p-6 max-w-md w-full mx-4",
91
- onClick: (e) => e.stopPropagation(),
92
- children: [
93
- /* @__PURE__ */ jsx("h2", {
94
- className: "text-2xl font-bold text-neutral-900 dark:text-white mb-4",
95
- children: "Add new profile"
96
- }),
97
- /* @__PURE__ */ jsx("label", {
98
- className: "mb-2 block text-sm font-medium text-accent",
99
- children: "Enter filter profile name:"
100
- }),
101
- /* @__PURE__ */ jsx(Input, {
102
- type: "text",
103
- value: profileName,
104
- onChange: (e) => setProfileName(e.target.value),
105
- placeholder: "Enter value",
106
- className: "",
107
- onKeyDown: (e) => e.key === "Enter" && handleSave()
108
- }),
109
- /* @__PURE__ */ jsxs("div", {
110
- className: "flex justify-end gap-3 mt-6",
111
- children: [/* @__PURE__ */ jsx(Button, {
112
- onClick: onClose,
113
- className: "min-w-28",
114
- size: "medium",
115
- children: "Cancel"
116
- }), /* @__PURE__ */ jsx(Button, {
117
- onClick: handleSave,
118
- disabled: !profileName.trim(),
119
- className: "min-w-28",
120
- size: "medium",
121
- primary: true,
122
- children: "Save"
123
- })]
124
- })
125
- ]
126
- })
127
- });
128
- };
129
- var ICON_BUTTON_CLASS_NAME = "inline-flex items-center justify-center rounded-lg text-neutral-400 transition-colors hover:bg-neutral-100 hover:text-neutral-600 dark:hover:bg-neutral-700";
130
- var DISABLED_ICON_BUTTON_CLASS_NAME = `${ICON_BUTTON_CLASS_NAME} disabled:opacity-40 disabled:cursor-not-allowed`;
131
- var TABLE_CONTROL_ICON_CLASS_NAME = "h-[18px] w-[18px] shrink-0";
132
- var TABLE_COMPLEX_ICON_CLASS_NAME = "h-5 w-5 shrink-0";
133
- var isFilterValueEmpty = (value) => {
134
- if (value === void 0 || value === null) return true;
135
- if (typeof value === "string") return value === "";
136
- if (Array.isArray(value)) return value.length === 0;
137
- if (value instanceof Date || typeof value === "boolean") return false;
138
- if ("start" in value || "end" in value) {
139
- const rangeValue = value;
140
- return !rangeValue.start && !rangeValue.end;
141
- }
142
- return value.min === void 0 && value.max === void 0;
143
- };
144
- var isFilterActive = (value) => !isFilterValueEmpty(value);
145
- var toSelectOptions = (options) => (options || []).map((option) => ({
146
- value: option,
147
- label: option
148
- }));
149
- var getStringFilterValue = (value) => typeof value === "string" ? value : "";
150
- var getMultiStringFilterValue = (value) => {
151
- if (Array.isArray(value)) return value;
152
- return typeof value === "string" && value ? [value] : [];
153
- };
154
- var getNumberRangeFilterValue = (value) => {
155
- if (!value || typeof value !== "object" || "start" in value || "end" in value) return {};
156
- return value;
157
- };
158
- var getDateFilterValue = (value) => value instanceof Date || value === null ? value : null;
159
- var getDateRangeFilterValue = (value) => {
160
- if (value && typeof value === "object" && "start" in value && "end" in value) return value;
161
- return {
162
- start: null,
163
- end: null
164
- };
165
- };
166
- function buildGeneratedFilterOptions(columns, data) {
167
- return columns.filter((column) => column.filterable !== false).map((column) => {
168
- const uniqueValues = /* @__PURE__ */ new Set();
169
- data.forEach((row) => {
170
- const value = row[column.id];
171
- if (value !== void 0 && value !== null && value !== "") uniqueValues.add(String(value));
172
- });
173
- return {
174
- id: column.id,
175
- label: column.label,
176
- options: Array.from(uniqueValues).sort(),
177
- multiple: column.multiFilter
178
- };
179
- });
180
- }
181
- function resolveFilterOptions(columns, data, externalFilterOptions, asyncFilterOptions) {
182
- if (!externalFilterOptions?.length) return buildGeneratedFilterOptions(columns, data);
183
- return externalFilterOptions.map((filter) => {
184
- const asyncState = asyncFilterOptions[filter.id];
185
- if (!asyncState) return filter;
186
- return {
187
- ...filter,
188
- options: asyncState.options,
189
- isLoading: asyncState.isLoading
190
- };
191
- });
192
- }
193
- function matchesSearchQuery(row, searchQuery) {
194
- if (!searchQuery.trim()) return true;
195
- const query = searchQuery.toLowerCase();
196
- return Object.values(row).some((value) => {
197
- if (value === void 0 || value === null) return false;
198
- return String(value).toLowerCase().includes(query);
199
- });
200
- }
201
- function matchesFilterValue(rowValue, filterValue, filterOption) {
202
- if (isFilterValueEmpty(filterValue)) return true;
203
- switch (filterOption?.type) {
204
- case "text": return String(rowValue).toLowerCase().includes(String(filterValue).toLowerCase());
205
- case "number-range": {
206
- const rangeValue = getNumberRangeFilterValue(filterValue);
207
- const numericValue = Number(rowValue);
208
- if (rangeValue.min !== void 0 && numericValue < rangeValue.min) return false;
209
- if (rangeValue.max !== void 0 && numericValue > rangeValue.max) return false;
210
- return true;
211
- }
212
- case "date-range": {
213
- const rangeValue = getDateRangeFilterValue(filterValue);
214
- if (!rangeValue.start) return true;
215
- const timeValue = new Date(rowValue).getTime();
216
- if (timeValue < rangeValue.start.getTime()) return false;
217
- return !rangeValue.end || timeValue <= rangeValue.end.getTime();
218
- }
219
- case "date": {
220
- const selectedDate = filterValue;
221
- const rowDate = new Date(rowValue);
222
- return selectedDate.toDateString() === rowDate.toDateString();
223
- }
224
- case "switch":
225
- case "checkbox": return Boolean(rowValue) === Boolean(filterValue);
226
- default: {
227
- const rowValueString = String(rowValue).toLowerCase();
228
- if (Array.isArray(filterValue)) return filterValue.some((value) => String(value).toLowerCase() === rowValueString);
229
- return typeof filterValue !== "string" ? true : rowValueString === filterValue.toLowerCase();
230
- }
231
- }
232
- }
233
- function filterClientData(data, activeFilters, searchQuery, serverSideFiltering, filterOptions) {
234
- if (serverSideFiltering) return data;
235
- const filterOptionsMap = new Map(filterOptions.map((filterOption) => [filterOption.id, filterOption]));
236
- return data.filter((row) => {
237
- if (!matchesSearchQuery(row, searchQuery)) return false;
238
- return Object.entries(activeFilters).every(([filterId, filterValue]) => {
239
- const rowValue = row[filterId];
240
- return matchesFilterValue(rowValue, filterValue, filterOptionsMap.get(filterId));
241
- });
242
- });
243
- }
244
- function useAsyncFilterOptions(externalFilterOptions, filterSelectorOpen) {
245
- const [asyncFilterOptions, setAsyncFilterOptions] = React.useState({});
246
- const asyncFilterOptionsRef = React.useRef(asyncFilterOptions);
247
- React.useEffect(() => {
248
- asyncFilterOptionsRef.current = asyncFilterOptions;
249
- }, [asyncFilterOptions]);
250
- const fetchAsyncOptions = React.useCallback(async (filter) => {
251
- if (!filter.fetchOptions || asyncFilterOptionsRef.current[filter.id]?.options.length) return;
252
- setAsyncFilterOptions((prev) => ({
253
- ...prev,
254
- [filter.id]: {
255
- options: [],
256
- isLoading: true
257
- }
258
- }));
259
- try {
260
- const options = await filter.fetchOptions();
261
- setAsyncFilterOptions((prev) => ({
262
- ...prev,
263
- [filter.id]: {
264
- options,
265
- isLoading: false
266
- }
267
- }));
268
- } catch {
269
- setAsyncFilterOptions((prev) => ({
270
- ...prev,
271
- [filter.id]: {
272
- options: [],
273
- isLoading: false
274
- }
275
- }));
276
- }
277
- }, []);
278
- React.useEffect(() => {
279
- if (!filterSelectorOpen || !externalFilterOptions) return;
280
- externalFilterOptions.forEach((filter) => {
281
- if (filter.fetchOptions) fetchAsyncOptions(filter);
282
- });
283
- }, [
284
- externalFilterOptions,
285
- fetchAsyncOptions,
286
- filterSelectorOpen
287
- ]);
288
- return asyncFilterOptions;
289
- }
290
- function LoadingFilterField({ label }) {
291
- return /* @__PURE__ */ jsxs("div", {
292
- className: "h-10 flex items-center justify-center bg-neutral-100 dark:bg-neutral-800 rounded-md px-3",
293
- children: [/* @__PURE__ */ jsx(LoaderIcon, {
294
- className: "w-4 h-4 animate-spin text-neutral-400",
295
- "aria-hidden": "true"
296
- }), /* @__PURE__ */ jsx("span", {
297
- className: "ml-2 text-sm text-neutral-500",
298
- children: label
299
- })]
300
- });
301
- }
302
- function NumberRangeFilter({ value, onChange }) {
303
- return /* @__PURE__ */ jsxs("div", {
304
- className: "flex items-center gap-1",
305
- children: [
306
- /* @__PURE__ */ jsx(Input, {
307
- type: "number",
308
- placeholder: "Min",
309
- value: value.min ?? "",
310
- onChange: (event) => {
311
- const min = event.target.value === "" ? void 0 : Number(event.target.value);
312
- onChange({
313
- ...value,
314
- min
315
- });
316
- },
317
- className: "h-9 px-2 text-xs"
318
- }),
319
- /* @__PURE__ */ jsx("span", {
320
- className: "text-neutral-400",
321
- children: "-"
322
- }),
323
- /* @__PURE__ */ jsx(Input, {
324
- type: "number",
325
- placeholder: "Max",
326
- value: value.max ?? "",
327
- onChange: (event) => {
328
- const max = event.target.value === "" ? void 0 : Number(event.target.value);
329
- onChange({
330
- ...value,
331
- max
332
- });
333
- },
334
- className: "h-9 px-2 text-xs"
335
- })
336
- ]
337
- });
338
- }
339
- function FilterFieldControl({ filter, value, isActive, onChange }) {
340
- if (filter.isLoading) return /* @__PURE__ */ jsx(LoadingFilterField, { label: filter.label });
341
- const activeClassName = isActive ? "border-accent" : "";
342
- switch (filter.type) {
343
- case "text": return /* @__PURE__ */ jsx(Input, {
344
- value: getStringFilterValue(value),
345
- onChange: (event) => onChange(event.target.value),
346
- placeholder: filter.placeholder || filter.label,
347
- className: activeClassName
348
- });
349
- case "select": return /* @__PURE__ */ jsx(Select, {
350
- value: getStringFilterValue(value),
351
- onChange: (event) => onChange(event.target.value),
352
- placeholder: filter.placeholder || filter.label,
353
- options: toSelectOptions(filter.options),
354
- className: activeClassName
355
- });
356
- case "switch":
357
- case "checkbox": return /* @__PURE__ */ jsx(Switch, {
358
- checked: Boolean(value),
359
- onChange: (event) => onChange(event.target.checked),
360
- label: filter.label
361
- });
362
- case "date": return /* @__PURE__ */ jsx(DatePicker, {
363
- mode: "single",
364
- value: getDateFilterValue(value),
365
- onChange: (nextValue) => onChange(nextValue),
366
- placeholder: filter.placeholder || filter.label
367
- });
368
- case "date-range": return /* @__PURE__ */ jsx(DatePicker, {
369
- mode: "range",
370
- value: getDateRangeFilterValue(value),
371
- onChange: (nextValue) => onChange(nextValue),
372
- placeholder: filter.placeholder || filter.label
373
- });
374
- case "number-range": return /* @__PURE__ */ jsx(NumberRangeFilter, {
375
- value: getNumberRangeFilterValue(value),
376
- onChange
377
- });
378
- default: return filter.multiple ? /* @__PURE__ */ jsx(MultiSelectCombobox, {
379
- value: getMultiStringFilterValue(value),
380
- onChange: (values) => onChange(values),
381
- placeholder: filter.placeholder || filter.label,
382
- options: toSelectOptions(filter.options),
383
- className: isActive ? "border-accent border-2" : ""
384
- }) : /* @__PURE__ */ jsx(Combobox, {
385
- value: getStringFilterValue(value),
386
- onChange: (nextValue) => onChange(nextValue),
387
- placeholder: filter.placeholder || filter.label,
388
- options: toSelectOptions(filter.options),
389
- className: isActive ? "border-accent border-2" : ""
390
- });
391
- }
392
- }
393
- function ToolbarIconButton({ title, onClick, disabled, children }) {
394
- return /* @__PURE__ */ jsx(Button, {
395
- onClick,
396
- disabled,
397
- title,
398
- "aria-label": title,
399
- className: disabled ? `${DISABLED_ICON_BUTTON_CLASS_NAME} h-10 w-10 shrink-0 border-transparent bg-transparent px-0 py-0 text-base shadow-none hover:bg-transparent hover:opacity-100` : `${ICON_BUTTON_CLASS_NAME} h-10 w-10 shrink-0 border-transparent bg-transparent px-0 py-0 text-base shadow-none hover:opacity-100`,
400
- children
401
- });
402
- }
403
- function SearchField({ value, onChange, placeholder }) {
404
- return /* @__PURE__ */ jsxs("div", {
405
- className: "relative w-[300px]",
406
- children: [/* @__PURE__ */ jsx(SearchIcon, {
407
- className: `pointer-events-none absolute left-4 top-1/2 z-10 -translate-y-1/2 text-neutral-400 ${TABLE_CONTROL_ICON_CLASS_NAME}`,
408
- "aria-hidden": "true"
409
- }), /* @__PURE__ */ jsx(Input, {
410
- type: "text",
411
- value,
412
- onChange: (event) => onChange(event.target.value),
413
- placeholder,
414
- style: { paddingLeft: "2.75rem" }
415
- })]
416
- });
417
- }
418
- function RowActionsCell({ rowIndex, row, isOpen, onToggle, onClose, onRowAction }) {
419
- return /* @__PURE__ */ jsxs("td", {
420
- className: "px-2 py-3 text-right relative",
421
- children: [/* @__PURE__ */ jsx(Button, {
422
- onClick: () => onToggle(rowIndex),
423
- "aria-label": "Open row actions",
424
- className: "h-8 w-8 border-none bg-transparent px-0 py-0 text-neutral-500 shadow-none hover:bg-neutral-100 hover:text-neutral-700 hover:opacity-100 dark:hover:bg-neutral-600 dark:hover:text-neutral-200",
425
- children: /* @__PURE__ */ jsx(EllipsisVerticalIcon, {
426
- className: TABLE_CONTROL_ICON_CLASS_NAME,
427
- "aria-hidden": "true"
428
- })
429
- }), isOpen ? /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx("div", {
430
- className: "fixed inset-0 z-40",
431
- onClick: onClose
432
- }), /* @__PURE__ */ jsxs("div", {
433
- className: "absolute right-0 top-full mt-1 bg-white dark:bg-neutral-800 rounded-lg shadow-lg border border-neutral-200 dark:border-neutral-700 z-50 min-w-32 py-1",
434
- children: [/* @__PURE__ */ jsx(Button, {
435
- onClick: () => {
436
- onRowAction?.("edit", row);
437
- onClose();
438
- },
439
- className: "w-full justify-start rounded-none border-none bg-transparent px-4 py-2 text-sm font-normal text-neutral-700 shadow-none hover:bg-neutral-50 hover:text-neutral-900 hover:opacity-100 dark:text-neutral-200 dark:hover:bg-neutral-700 dark:hover:text-white",
440
- children: "Edit"
441
- }), /* @__PURE__ */ jsx(Button, {
442
- onClick: () => {
443
- onRowAction?.("delete", row);
444
- onClose();
445
- },
446
- className: "w-full justify-start rounded-none border-none bg-transparent px-4 py-2 text-sm font-normal text-error shadow-none hover:bg-neutral-50 hover:text-error hover:opacity-100 dark:hover:bg-neutral-700",
447
- children: "Delete"
448
- })]
449
- })] }) : null]
450
- });
451
- }
452
- function DataTablePagination({ table, totalCount, filteredCount }) {
453
- const { pageIndex, pageSize } = table.getState().pagination;
454
- const itemCount = totalCount ?? filteredCount;
455
- return /* @__PURE__ */ jsxs("div", {
456
- className: "flex items-center justify-between px-4 py-3 border-t border-neutral-200 dark:border-neutral-700 bg-neutral-50 dark:bg-neutral-800/50",
457
- children: [/* @__PURE__ */ jsx("div", {
458
- className: "flex items-center gap-2",
459
- children: /* @__PURE__ */ jsxs("span", {
460
- className: "text-sm text-neutral-600 dark:text-neutral-400",
461
- children: [
462
- "Showing ",
463
- itemCount === 0 ? 0 : pageIndex * pageSize + 1,
464
- " to ",
465
- Math.min((pageIndex + 1) * pageSize, itemCount),
466
- " of ",
467
- itemCount,
468
- " items"
469
- ]
470
- })
471
- }), /* @__PURE__ */ jsxs("div", {
472
- className: "flex flex-wrap items-center justify-end gap-2",
473
- children: [
474
- /* @__PURE__ */ jsx("span", {
475
- className: "text-sm text-neutral-600 dark:text-neutral-400",
476
- children: "Rows"
477
- }),
478
- /* @__PURE__ */ jsx(Select, {
479
- value: String(pageSize),
480
- onChange: (event) => table.setPageSize(Number(event.target.value)),
481
- "aria-label": "Rows per page",
482
- containerClassName: "w-24 min-w-24 shrink-0",
483
- triggerClassName: "px-3 font-medium text-neutral-900 dark:text-white",
484
- options: [
485
- 10,
486
- 20,
487
- 30,
488
- 50,
489
- 100
490
- ].map((size) => ({
491
- value: String(size),
492
- label: String(size)
493
- }))
494
- }),
495
- /* @__PURE__ */ jsx(ToolbarIconButton, {
496
- title: "First page",
497
- onClick: () => table.setPageIndex(0),
498
- disabled: !table.getCanPreviousPage(),
499
- children: /* @__PURE__ */ jsx(ChevronsLeftIcon, {
500
- className: TABLE_CONTROL_ICON_CLASS_NAME,
501
- "aria-hidden": "true"
502
- })
503
- }),
504
- /* @__PURE__ */ jsx(ToolbarIconButton, {
505
- title: "Previous page",
506
- onClick: () => table.previousPage(),
507
- disabled: !table.getCanPreviousPage(),
508
- children: /* @__PURE__ */ jsx(ChevronLeftIcon, {
509
- className: TABLE_CONTROL_ICON_CLASS_NAME,
510
- "aria-hidden": "true"
511
- })
512
- }),
513
- /* @__PURE__ */ jsxs("span", {
514
- className: "inline-flex h-10 shrink-0 items-center rounded-lg px-3 text-sm font-medium text-neutral-700 dark:text-neutral-300",
515
- children: [
516
- "Page ",
517
- pageIndex + 1,
518
- " of ",
519
- table.getPageCount()
520
- ]
521
- }),
522
- /* @__PURE__ */ jsx(ToolbarIconButton, {
523
- title: "Next page",
524
- onClick: () => table.nextPage(),
525
- disabled: !table.getCanNextPage(),
526
- children: /* @__PURE__ */ jsx(ChevronRightIcon, {
527
- className: TABLE_CONTROL_ICON_CLASS_NAME,
528
- "aria-hidden": "true"
529
- })
530
- }),
531
- /* @__PURE__ */ jsx(ToolbarIconButton, {
532
- title: "Last page",
533
- onClick: () => table.setPageIndex(table.getPageCount() - 1),
534
- disabled: !table.getCanNextPage(),
535
- children: /* @__PURE__ */ jsx(ChevronsRightIcon, {
536
- className: TABLE_CONTROL_ICON_CLASS_NAME,
537
- "aria-hidden": "true"
538
- })
539
- })
540
- ]
541
- })]
542
- });
543
- }
544
- function FilterSelectorMenu({ filterOptions, visibleFilters, onToggleFilter, onShowAll, onHideAll }) {
545
- return /* @__PURE__ */ jsxs("div", {
546
- className: "p-2 min-w-48 space-y-1",
547
- children: [
548
- /* @__PURE__ */ jsx("div", {
549
- className: "px-2 pb-2 text-xs font-semibold text-neutral-500 dark:text-neutral-300",
550
- children: "Show filters"
551
- }),
552
- filterOptions.map((filter) => /* @__PURE__ */ jsx("div", {
553
- className: "min-w-36",
554
- children: /* @__PURE__ */ jsx(Checkbox, {
555
- checked: visibleFilters.includes(filter.id),
556
- onChange: (event) => onToggleFilter(filter.id, event.target.checked),
557
- label: filter.label
558
- })
559
- }, filter.id)),
560
- /* @__PURE__ */ jsxs("div", {
561
- className: "flex gap-2 border-t border-neutral-200 pt-2 dark:border-neutral-700",
562
- children: [/* @__PURE__ */ jsx(Button, {
563
- onClick: onShowAll,
564
- size: "small",
565
- className: "flex-1 border-none bg-transparent px-1 py-1 text-xs font-semibold text-accent shadow-none hover:bg-transparent hover:text-accent-hover hover:opacity-100",
566
- children: "SHOW ALL"
567
- }), /* @__PURE__ */ jsx(Button, {
568
- onClick: onHideAll,
569
- size: "small",
570
- className: "flex-1 border-none bg-transparent px-1 py-1 text-xs font-semibold text-neutral-500 shadow-none hover:bg-transparent hover:text-neutral-600 hover:opacity-100 dark:text-neutral-300 dark:hover:text-white",
571
- children: "HIDE ALL"
572
- })]
573
- })
574
- ]
575
- });
576
- }
577
- function DataTableToolbar({ searchQuery, onSearchChange, searchPlaceholder, bulkDeleteEnabled, bulkSelectionActive, selectedCount, bulkActionsContent, bulkActionCard, onToggleBulkSelection, onBulkDeleteSelected, onExport, columnMenuOpen, onToggleColumnMenu, onCloseColumnMenu, columns, onColumnToggle, onShowAllColumns, onHideAllColumns }) {
578
- const hasSelectedRows = selectedCount > 0;
579
- return /* @__PURE__ */ jsxs("div", {
580
- className: "border-b border-neutral-200 px-4 py-3 dark:border-neutral-700",
581
- children: [/* @__PURE__ */ jsxs("div", {
582
- className: "flex flex-col gap-3 lg:flex-row lg:items-center lg:justify-between",
583
- children: [/* @__PURE__ */ jsxs("div", {
584
- className: "flex min-w-0 flex-1 flex-wrap items-center gap-2",
585
- children: [bulkDeleteEnabled ? /* @__PURE__ */ jsx(FilterButton, {
586
- icon: /* @__PURE__ */ jsx(SelectionIcon, {
587
- className: TABLE_COMPLEX_ICON_CLASS_NAME,
588
- "aria-hidden": "true"
589
- }),
590
- label: bulkSelectionActive ? "Disable bulk selection" : "Enable bulk selection",
591
- onClick: onToggleBulkSelection,
592
- hasActive: bulkSelectionActive
593
- }) : null, /* @__PURE__ */ jsx(SearchField, {
594
- value: searchQuery,
595
- onChange: onSearchChange,
596
- placeholder: searchPlaceholder
597
- })]
598
- }), /* @__PURE__ */ jsxs("div", {
599
- className: "flex items-center gap-1 self-end lg:self-auto",
600
- children: [/* @__PURE__ */ jsx(ToolbarIconButton, {
601
- onClick: onExport,
602
- title: "Refresh",
603
- children: /* @__PURE__ */ jsx(RefreshIcon, {
604
- className: TABLE_CONTROL_ICON_CLASS_NAME,
605
- "aria-hidden": "true"
606
- })
607
- }), /* @__PURE__ */ jsxs("div", {
608
- className: "relative",
609
- children: [/* @__PURE__ */ jsx(ToolbarIconButton, {
610
- onClick: onToggleColumnMenu,
611
- title: "Column settings",
612
- children: /* @__PURE__ */ jsx(SettingsIcon, {
613
- className: TABLE_COMPLEX_ICON_CLASS_NAME,
614
- "aria-hidden": "true"
615
- })
616
- }), /* @__PURE__ */ jsx(FilterDropdown, {
617
- isOpen: columnMenuOpen,
618
- onClose: onCloseColumnMenu,
619
- children: /* @__PURE__ */ jsx(ColumnToggle, {
620
- columns,
621
- onToggle: (columnId) => {
622
- onColumnToggle?.(columnId);
623
- },
624
- onShowAll: onShowAllColumns,
625
- onHideAll: onHideAllColumns
626
- })
627
- })]
628
- })]
629
- })]
630
- }), bulkSelectionActive && hasSelectedRows ? bulkActionCard ?? /* @__PURE__ */ jsxs("div", {
631
- className: "mt-2 flex flex-col gap-2 rounded-[4px] border border-neutral-200 bg-neutral-50 px-3 py-2 shadow-sm dark:border-neutral-700 dark:bg-neutral-800/50 dark:shadow-black/25 lg:flex-row lg:items-center lg:justify-between",
632
- children: [/* @__PURE__ */ jsxs("div", {
633
- className: "flex min-w-0 flex-wrap items-center gap-2",
634
- children: [/* @__PURE__ */ jsx(Chip, {
635
- variant: "soft",
636
- color: "primary",
637
- size: "sm",
638
- className: "uppercase tracking-wide",
639
- children: "Bulk actions"
640
- }), /* @__PURE__ */ jsxs("p", {
641
- className: "text-sm font-medium text-neutral-900 dark:text-white",
642
- children: [
643
- selectedCount,
644
- " ",
645
- selectedCount === 1 ? "row" : "rows",
646
- " ",
647
- "selected"
648
- ]
649
- })]
650
- }), /* @__PURE__ */ jsxs("div", {
651
- className: "flex flex-wrap items-center gap-2",
652
- children: [bulkActionsContent, bulkDeleteEnabled ? /* @__PURE__ */ jsxs(Button, {
653
- onClick: onBulkDeleteSelected,
654
- primary: true,
655
- size: "small",
656
- className: "border-accent/20 px-3 py-2 text-sm text-on-accent shadow-lg shadow-accent/20 hover:bg-accent-hover hover:opacity-100",
657
- children: [/* @__PURE__ */ jsx(TrashIcon, {
658
- className: "h-4 w-4",
659
- "aria-hidden": "true"
660
- }), "Delete selected"]
661
- }) : null]
662
- })]
663
- }) : null]
664
- });
665
- }
666
- function TableStateRow({ colSpan, children }) {
667
- return /* @__PURE__ */ jsx("tr", { children: /* @__PURE__ */ jsx("td", {
668
- colSpan,
669
- className: "px-4 py-12 text-center text-neutral-500",
670
- children
671
- }) });
672
- }
673
- function LoadingTableState({ colSpan }) {
674
- return /* @__PURE__ */ jsx(TableStateRow, {
675
- colSpan,
676
- children: /* @__PURE__ */ jsxs("div", {
677
- className: "flex flex-col items-center gap-3",
678
- children: [/* @__PURE__ */ jsx(LoaderIcon, {
679
- className: "w-8 h-8 animate-spin text-accent",
680
- "aria-hidden": "true"
681
- }), /* @__PURE__ */ jsx("span", { children: "Loading data..." })]
682
- })
683
- });
684
- }
685
- function EmptyTableState({ colSpan }) {
686
- return /* @__PURE__ */ jsx(TableStateRow, {
687
- colSpan,
688
- children: /* @__PURE__ */ jsxs("div", {
689
- className: "flex flex-col items-center gap-2",
690
- children: [
691
- /* @__PURE__ */ jsx("span", {
692
- className: "text-4xl",
693
- children: "🔍"
694
- }),
695
- /* @__PURE__ */ jsx("p", {
696
- className: "font-medium",
697
- children: "No results found"
698
- }),
699
- /* @__PURE__ */ jsx("p", {
700
- className: "text-sm",
701
- children: "Try adjusting the filter"
702
- })
703
- ]
704
- })
705
- });
706
- }
707
- function DataTableRows({ table, isLoading, bulkSelectionActive, selectedRowIds, onToggleRowSelection, rowMenuOpen, onToggleRowMenu, onCloseRowMenu, onRowAction }) {
708
- const colSpan = table.getVisibleLeafColumns().length + (bulkSelectionActive ? 2 : 1);
709
- if (isLoading) return /* @__PURE__ */ jsx(LoadingTableState, { colSpan });
710
- if (table.getRowModel().rows.length === 0) return /* @__PURE__ */ jsx(EmptyTableState, { colSpan });
711
- return /* @__PURE__ */ jsx(Fragment, { children: table.getRowModel().rows.map((row) => /* @__PURE__ */ jsxs("tr", {
712
- className: "border-b border-neutral-100 dark:border-neutral-700 hover:bg-neutral-50 dark:hover:bg-neutral-700/50 transition-colors",
713
- children: [
714
- bulkSelectionActive ? /* @__PURE__ */ jsx("td", {
715
- className: "w-12 px-4 py-3 align-middle",
716
- children: /* @__PURE__ */ jsx(Checkbox, {
717
- "aria-label": `Select row ${row.id}`,
718
- checked: Boolean(selectedRowIds[row.id]),
719
- onChange: (event) => onToggleRowSelection(row.id, event.target.checked)
720
- })
721
- }) : null,
722
- row.getVisibleCells().map((cell) => /* @__PURE__ */ jsx("td", {
723
- className: "px-4 py-3 text-sm text-neutral-700 dark:text-neutral-300",
724
- children: flexRender(cell.column.columnDef.cell, cell.getContext())
725
- }, cell.id)),
726
- /* @__PURE__ */ jsx(RowActionsCell, {
727
- rowIndex: row.index,
728
- row: row.original,
729
- isOpen: rowMenuOpen === row.index,
730
- onToggle: onToggleRowMenu,
731
- onClose: onCloseRowMenu,
732
- onRowAction
733
- })
734
- ]
735
- }, row.id)) });
736
- }
737
- var usesManualPagination = (totalCount, onPaginationChange) => totalCount !== void 0 || typeof onPaginationChange === "function";
738
- function DataTable({ columns, data, isLoading = false, onColumnToggle, pageSize = 10, maxHeight = "500px", onSearch, onExport, onRowAction, onBulkDelete, renderBulkActions, renderBulkActionCard, onFilterChange, onFiltersApply, serverSideFiltering = false, filterOptions: externalFilterOptions, searchPlaceholder = "Search ...", totalCount, onPaginationChange }) {
739
- const [pagination, setPagination] = React.useState({
740
- pageIndex: 0,
741
- pageSize
742
- });
743
- const [columnMenuOpen, setColumnMenuOpen] = React.useState(false);
744
- const [profileMenuOpen, setProfileMenuOpen] = React.useState(false);
745
- const [profileOpen, setProfileOpen] = React.useState(false);
746
- const [filterSelectorOpen, setFilterSelectorOpen] = React.useState(false);
747
- const [visibleFilters, setVisibleFilters] = React.useState([]);
748
- const [activeFilters, setActiveFilters] = React.useState({});
749
- const [bulkSelectionActive, setBulkSelectionActive] = React.useState(false);
750
- const [selectedRowIds, setSelectedRowIds] = React.useState({});
751
- const [rowMenuOpen, setRowMenuOpen] = React.useState(null);
752
- const [searchQuery, setSearchQuery] = React.useState("");
753
- const [columnVisibility, setColumnVisibility] = React.useState(() => Object.fromEntries(columns.map((column) => [column.id, column.visible !== false])));
754
- const columnsVisibilitySignature = React.useMemo(() => columns.map((column) => `${column.id}:${column.visible !== false}`).join("|"), [columns]);
755
- React.useEffect(() => {
756
- setColumnVisibility(Object.fromEntries(columns.map((column) => [column.id, column.visible !== false])));
757
- }, [columns, columnsVisibilitySignature]);
758
- const asyncFilterOptions = useAsyncFilterOptions(externalFilterOptions, filterSelectorOpen);
759
- const filterOptions = React.useMemo(() => {
760
- return resolveFilterOptions(columns, data, externalFilterOptions, asyncFilterOptions);
761
- }, [
762
- columns,
763
- data,
764
- externalFilterOptions,
765
- asyncFilterOptions
766
- ]);
767
- const resolvedColumns = React.useMemo(() => columns.map((column) => ({
768
- ...column,
769
- visible: columnVisibility[column.id] ?? column.visible !== false
770
- })), [columnVisibility, columns]);
771
- const visibleColumns = React.useMemo(() => resolvedColumns.filter((column) => column.visible !== false), [resolvedColumns]);
772
- const manualPagination = usesManualPagination(totalCount, onPaginationChange);
773
- const pageCount = totalCount === void 0 ? void 0 : Math.ceil(totalCount / pagination.pageSize);
774
- const filteredData = React.useMemo(() => {
775
- return filterClientData(data, activeFilters, searchQuery, serverSideFiltering, filterOptions);
776
- }, [
777
- data,
778
- activeFilters,
779
- searchQuery,
780
- serverSideFiltering,
781
- filterOptions
782
- ]);
783
- const tableColumns = React.useMemo(() => visibleColumns.map((col) => ({
784
- id: col.id,
785
- accessorKey: col.id,
786
- header: col.label,
787
- cell: (info) => {
788
- const value = info.getValue();
789
- if (col.renderCell) return col.renderCell({
790
- value,
791
- row: info.row.original,
792
- rowIndex: info.row.index,
793
- columnId: col.id
794
- });
795
- return renderDefaultCellValue(value);
796
- }
797
- })), [visibleColumns]);
798
- const updatePagination = React.useCallback((updater) => {
799
- setPagination((previous) => {
800
- const nextPagination = typeof updater === "function" ? updater(previous) : updater;
801
- if (previous.pageIndex !== nextPagination.pageIndex || previous.pageSize !== nextPagination.pageSize) onPaginationChange?.(nextPagination.pageIndex, nextPagination.pageSize);
802
- return nextPagination;
803
- });
804
- }, [onPaginationChange]);
805
- const table = useReactTable({
806
- data: filteredData,
807
- columns: tableColumns,
808
- getCoreRowModel: getCoreRowModel(),
809
- getPaginationRowModel: getPaginationRowModel(),
810
- getFilteredRowModel: getFilteredRowModel(),
811
- state: {
812
- pagination,
813
- globalFilter: searchQuery
814
- },
815
- onPaginationChange: updatePagination,
816
- manualPagination,
817
- pageCount
818
- });
819
- const visibleRows = table.getRowModel().rows;
820
- const bulkDeleteEnabled = typeof onBulkDelete === "function";
821
- const selectedRows = React.useMemo(() => visibleRows.filter((row) => selectedRowIds[row.id]).map((row) => row.original), [selectedRowIds, visibleRows]);
822
- const allVisibleRowsSelected = visibleRows.length > 0 && visibleRows.every((row) => selectedRowIds[row.id]);
823
- React.useEffect(() => {
824
- updatePagination((previous) => previous.pageIndex === 0 ? previous : {
825
- ...previous,
826
- pageIndex: 0
827
- });
828
- }, [
829
- activeFilters,
830
- searchQuery,
831
- updatePagination
832
- ]);
833
- React.useEffect(() => {
834
- setSelectedRowIds((previous) => {
835
- const visibleRowIds = new Set(visibleRows.map((row) => row.id));
836
- const nextSelection = Object.fromEntries(Object.entries(previous).filter(([rowId, isSelected]) => isSelected && visibleRowIds.has(rowId)));
837
- return Object.keys(previous).sort().join("|") === Object.keys(nextSelection).sort().join("|") ? previous : nextSelection;
838
- });
839
- }, [visibleRows]);
840
- const applyFilters = React.useCallback((nextFilters) => {
841
- setActiveFilters(nextFilters);
842
- onFilterChange?.(nextFilters);
843
- if (serverSideFiltering) onFiltersApply?.(nextFilters);
844
- }, [
845
- onFilterChange,
846
- onFiltersApply,
847
- serverSideFiltering
848
- ]);
849
- const handleSearchChange = React.useCallback((value) => {
850
- setSearchQuery(value);
851
- onSearch?.(value);
852
- }, [onSearch]);
853
- const handleFilterChange = React.useCallback((filterId, value) => {
854
- applyFilters({
855
- ...activeFilters,
856
- [filterId]: value
857
- });
858
- }, [activeFilters, applyFilters]);
859
- const handleResetFilters = React.useCallback(() => {
860
- applyFilters({});
861
- }, [applyFilters]);
862
- const handleToggleFilterVisibility = React.useCallback((filterId, isVisible) => {
863
- setVisibleFilters((previous) => {
864
- if (isVisible) return previous.includes(filterId) ? previous : [...previous, filterId];
865
- return previous.filter((id) => id !== filterId);
866
- });
867
- if (!isVisible && filterId in activeFilters) {
868
- const nextFilters = { ...activeFilters };
869
- delete nextFilters[filterId];
870
- applyFilters(nextFilters);
871
- }
872
- }, [activeFilters, applyFilters]);
873
- const handleShowAllFilters = React.useCallback(() => {
874
- setVisibleFilters(filterOptions.map((filter) => filter.id));
875
- }, [filterOptions]);
876
- const handleHideAllFilters = React.useCallback(() => {
877
- setVisibleFilters([]);
878
- handleResetFilters();
879
- }, [handleResetFilters]);
880
- const handleToggleRowMenu = React.useCallback((rowIndex) => {
881
- setRowMenuOpen((previous) => previous === rowIndex ? null : rowIndex);
882
- }, []);
883
- const handleToggleFilterSelector = React.useCallback(() => {
884
- setFilterSelectorOpen((previous) => !previous);
885
- }, []);
886
- const handleToggleProfileMenu = React.useCallback(() => {
887
- setProfileMenuOpen((previous) => !previous);
888
- }, []);
889
- const handleToggleColumnMenu = React.useCallback(() => {
890
- setColumnMenuOpen((previous) => !previous);
891
- }, []);
892
- const handleToggleColumnVisibility = React.useCallback((columnId) => {
893
- setColumnVisibility((previous) => ({
894
- ...previous,
895
- [columnId]: !(previous[columnId] ?? true)
896
- }));
897
- onColumnToggle?.(columnId);
898
- }, [onColumnToggle]);
899
- const handleShowAllColumns = React.useCallback(() => {
900
- setColumnVisibility(Object.fromEntries(columns.map((column) => [column.id, true])));
901
- }, [columns]);
902
- const handleHideAllColumns = React.useCallback(() => {
903
- setColumnVisibility(Object.fromEntries(columns.map((column) => [column.id, false])));
904
- }, [columns]);
905
- const handleToggleBulkSelection = React.useCallback(() => {
906
- setBulkSelectionActive((previous) => {
907
- if (previous) setSelectedRowIds({});
908
- return !previous;
909
- });
910
- }, []);
911
- const handleToggleRowSelection = React.useCallback((rowId, checked) => {
912
- setSelectedRowIds((previous) => {
913
- if (checked) return {
914
- ...previous,
915
- [rowId]: true
916
- };
917
- const nextSelection = { ...previous };
918
- delete nextSelection[rowId];
919
- return nextSelection;
920
- });
921
- }, []);
922
- const handleToggleAllVisibleRows = React.useCallback((checked) => {
923
- setSelectedRowIds((previous) => {
924
- const nextSelection = { ...previous };
925
- visibleRows.forEach((row) => {
926
- if (checked) nextSelection[row.id] = true;
927
- else delete nextSelection[row.id];
928
- });
929
- return nextSelection;
930
- });
931
- }, [visibleRows]);
932
- const handleBulkDeleteSelected = React.useCallback(() => {
933
- if (!onBulkDelete || selectedRows.length === 0) return;
934
- onBulkDelete(selectedRows);
935
- setSelectedRowIds({});
936
- }, [onBulkDelete, selectedRows]);
937
- const handleClearSelectedRows = React.useCallback(() => {
938
- setSelectedRowIds({});
939
- }, []);
940
- const handleDisableBulkSelection = React.useCallback(() => {
941
- setBulkSelectionActive(false);
942
- setSelectedRowIds({});
943
- }, []);
944
- const bulkActionContext = React.useMemo(() => ({
945
- selectedRows,
946
- selectedCount: selectedRows.length,
947
- clearSelection: handleClearSelectedRows,
948
- disableBulkSelection: handleDisableBulkSelection
949
- }), [
950
- handleClearSelectedRows,
951
- handleDisableBulkSelection,
952
- selectedRows
953
- ]);
954
- const bulkActionsContent = renderBulkActions?.(bulkActionContext);
955
- const bulkActionCard = renderBulkActionCard?.(bulkActionContext);
956
- const handleOpenProfile = React.useCallback(() => {
957
- setProfileOpen(true);
958
- setProfileMenuOpen(false);
959
- }, []);
960
- const hasActiveFilters = Object.values(activeFilters).some(isFilterActive);
961
- const handleSaveProfile = (profileName) => {
962
- (/* @__PURE__ */ new Date()).toISOString();
963
- };
964
- return /* @__PURE__ */ jsxs("div", {
965
- className: "space-y-0",
966
- children: [
967
- /* @__PURE__ */ jsxs("div", {
968
- className: "mb-4 flex items-center justify-between gap-4 rounded-[8px] border border-neutral-200 bg-neutral-50 px-4 py-4 dark:border-neutral-700 dark:bg-neutral-800/50",
969
- children: [/* @__PURE__ */ jsx("div", {
970
- className: "flex items-center gap-3 flex-wrap",
971
- children: filterOptions.filter((filter) => visibleFilters.includes(filter.id)).map((filter, index) => {
972
- const isActive = isFilterActive(activeFilters[filter.id]);
973
- return /* @__PURE__ */ jsx("div", {
974
- className: `min-w-[200px] ${index > 0 ? "border-l border-neutral-200 pl-3 dark:border-neutral-600" : ""}`,
975
- children: /* @__PURE__ */ jsx(FilterFieldControl, {
976
- filter,
977
- value: activeFilters[filter.id],
978
- isActive,
979
- onChange: (value) => handleFilterChange(filter.id, value)
980
- })
981
- }, filter.id);
982
- })
983
- }), /* @__PURE__ */ jsxs("div", {
984
- className: "flex items-center gap-1 ml-auto",
985
- children: [
986
- /* @__PURE__ */ jsxs("div", {
987
- className: "relative",
988
- children: [/* @__PURE__ */ jsx(ToolbarIconButton, {
989
- onClick: handleToggleFilterSelector,
990
- title: "Add filter",
991
- children: /* @__PURE__ */ jsx(FilterIcon, {
992
- className: TABLE_COMPLEX_ICON_CLASS_NAME,
993
- "aria-hidden": "true"
994
- })
995
- }), /* @__PURE__ */ jsx(FilterDropdown, {
996
- isOpen: filterSelectorOpen,
997
- onClose: () => setFilterSelectorOpen(false),
998
- children: /* @__PURE__ */ jsx(FilterSelectorMenu, {
999
- filterOptions,
1000
- visibleFilters,
1001
- onToggleFilter: handleToggleFilterVisibility,
1002
- onShowAll: handleShowAllFilters,
1003
- onHideAll: handleHideAllFilters
1004
- })
1005
- })]
1006
- }),
1007
- /* @__PURE__ */ jsx(ToolbarIconButton, {
1008
- onClick: handleResetFilters,
1009
- disabled: !hasActiveFilters,
1010
- title: "Clear filters",
1011
- children: /* @__PURE__ */ jsx(FilterXIcon, {
1012
- className: TABLE_COMPLEX_ICON_CLASS_NAME,
1013
- "aria-hidden": "true"
1014
- })
1015
- }),
1016
- /* @__PURE__ */ jsxs("div", {
1017
- className: "relative",
1018
- children: [/* @__PURE__ */ jsx(ToolbarIconButton, {
1019
- onClick: handleToggleProfileMenu,
1020
- title: "Filter profiles",
1021
- children: /* @__PURE__ */ jsx(FilterProfileIcon, {
1022
- className: TABLE_COMPLEX_ICON_CLASS_NAME,
1023
- "aria-hidden": "true"
1024
- })
1025
- }), /* @__PURE__ */ jsx(FilterDropdown, {
1026
- isOpen: profileMenuOpen,
1027
- onClose: () => setProfileMenuOpen(false),
1028
- children: /* @__PURE__ */ jsx("div", {
1029
- className: "p-2 min-w-48",
1030
- children: /* @__PURE__ */ jsx(Button, {
1031
- onClick: handleOpenProfile,
1032
- className: "w-full justify-start border-2 border-dashed border-accent/40 bg-transparent px-4 py-3 text-left text-sm font-medium text-accent shadow-none hover:bg-accent-subtle hover:opacity-100",
1033
- children: "Save new filter profile"
1034
- })
1035
- })
1036
- })]
1037
- })
1038
- ]
1039
- })]
1040
- }),
1041
- /* @__PURE__ */ jsxs("div", {
1042
- className: "bg-background-secondary rounded-lg border border-neutral-200 dark:border-neutral-700 overflow-hidden",
1043
- children: [
1044
- /* @__PURE__ */ jsx(DataTableToolbar, {
1045
- searchQuery,
1046
- onSearchChange: handleSearchChange,
1047
- searchPlaceholder,
1048
- bulkDeleteEnabled,
1049
- bulkSelectionActive,
1050
- selectedCount: selectedRows.length,
1051
- bulkActionsContent,
1052
- bulkActionCard,
1053
- onToggleBulkSelection: handleToggleBulkSelection,
1054
- onBulkDeleteSelected: handleBulkDeleteSelected,
1055
- onExport,
1056
- columnMenuOpen,
1057
- onToggleColumnMenu: handleToggleColumnMenu,
1058
- onCloseColumnMenu: () => setColumnMenuOpen(false),
1059
- columns: resolvedColumns,
1060
- onColumnToggle: handleToggleColumnVisibility,
1061
- onShowAllColumns: handleShowAllColumns,
1062
- onHideAllColumns: handleHideAllColumns
1063
- }),
1064
- /* @__PURE__ */ jsx("div", {
1065
- className: "overflow-auto",
1066
- style: { maxHeight },
1067
- children: /* @__PURE__ */ jsxs("table", {
1068
- className: "w-full min-w-[600px]",
1069
- children: [/* @__PURE__ */ jsx("thead", {
1070
- className: "sticky top-0 z-10 bg-background-secondary",
1071
- children: table.getHeaderGroups().map((headerGroup) => /* @__PURE__ */ jsxs("tr", {
1072
- className: "border-b border-neutral-200 dark:border-neutral-700",
1073
- children: [
1074
- bulkSelectionActive ? /* @__PURE__ */ jsx("th", {
1075
- className: "w-12 px-4 py-3 bg-background-secondary",
1076
- children: /* @__PURE__ */ jsx(Checkbox, {
1077
- "aria-label": "Select all visible rows",
1078
- checked: allVisibleRowsSelected,
1079
- onChange: (event) => handleToggleAllVisibleRows(event.target.checked)
1080
- })
1081
- }) : null,
1082
- headerGroup.headers.map((header) => /* @__PURE__ */ jsx("th", {
1083
- className: "bg-background-secondary px-4 py-3 text-left text-sm font-semibold text-neutral-900 dark:text-white whitespace-nowrap",
1084
- children: header.isPlaceholder ? null : flexRender(header.column.columnDef.header, header.getContext())
1085
- }, header.id)),
1086
- /* @__PURE__ */ jsx("th", { className: "w-12 bg-background-secondary" })
1087
- ]
1088
- }, headerGroup.id))
1089
- }), /* @__PURE__ */ jsx("tbody", { children: /* @__PURE__ */ jsx(DataTableRows, {
1090
- table,
1091
- isLoading,
1092
- bulkSelectionActive,
1093
- selectedRowIds,
1094
- onToggleRowSelection: handleToggleRowSelection,
1095
- rowMenuOpen,
1096
- onToggleRowMenu: handleToggleRowMenu,
1097
- onCloseRowMenu: () => setRowMenuOpen(null),
1098
- onRowAction
1099
- }) })]
1100
- })
1101
- }),
1102
- /* @__PURE__ */ jsx(DataTablePagination, {
1103
- table,
1104
- totalCount,
1105
- filteredCount: filteredData.length
1106
- })
1107
- ]
1108
- }),
1109
- /* @__PURE__ */ jsx(FilterProfile, {
1110
- isOpen: profileOpen,
1111
- onClose: () => setProfileOpen(false),
1112
- onSaveProfile: (name) => {
1113
- handleSaveProfile(name);
1114
- setProfileOpen(false);
1115
- }
1116
- })
1117
- ]
1118
- });
1119
- }
1120
- //#endregion
1121
- export { FilterProfile as a, FilterDropdown as i, DataTable as n, FilterButton as r, ColumnToggle as t };
1122
-
1123
- //# sourceMappingURL=data-table-Bo80m7qV.mjs.map