@akshar-technosoft/ui 1.3.1 → 1.3.3

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 (338) hide show
  1. package/README.md +0 -0
  2. package/dist/components/core/error.cjs +3 -0
  3. package/dist/components/core/error.cjs.map +1 -0
  4. package/dist/components/core/error.d.cts +5 -0
  5. package/dist/components/core/error.d.ts +5 -0
  6. package/dist/components/core/error.js +3 -0
  7. package/dist/components/core/error.js.map +1 -0
  8. package/dist/components/core/event-success.cjs +3 -0
  9. package/dist/components/core/event-success.cjs.map +1 -0
  10. package/dist/components/core/event-success.d.cts +5 -0
  11. package/dist/components/core/event-success.d.ts +5 -0
  12. package/dist/components/core/event-success.js +3 -0
  13. package/dist/components/core/event-success.js.map +1 -0
  14. package/dist/components/core/index.cjs +3 -0
  15. package/dist/components/core/index.cjs.map +1 -0
  16. package/dist/components/core/index.d.cts +7 -0
  17. package/dist/components/core/index.d.ts +7 -0
  18. package/dist/components/core/index.js +3 -0
  19. package/dist/components/core/index.js.map +1 -0
  20. package/dist/components/core/loader.cjs +3 -0
  21. package/dist/components/core/loader.cjs.map +1 -0
  22. package/dist/components/core/loader.d.cts +5 -0
  23. package/dist/components/core/loader.d.ts +5 -0
  24. package/dist/components/core/loader.js +3 -0
  25. package/dist/components/core/loader.js.map +1 -0
  26. package/dist/components/core/notfound.cjs +3 -0
  27. package/dist/components/core/notfound.cjs.map +1 -0
  28. package/dist/components/core/notfound.d.cts +5 -0
  29. package/dist/components/core/notfound.d.ts +5 -0
  30. package/dist/components/core/notfound.js +3 -0
  31. package/dist/components/core/notfound.js.map +1 -0
  32. package/dist/components/core/offline-content.cjs +3 -0
  33. package/dist/components/core/offline-content.cjs.map +1 -0
  34. package/dist/components/core/offline-content.d.cts +5 -0
  35. package/dist/components/core/offline-content.d.ts +5 -0
  36. package/dist/components/core/offline-content.js +3 -0
  37. package/dist/components/core/offline-content.js.map +1 -0
  38. package/dist/components/core/unauthorized.cjs +3 -0
  39. package/dist/components/core/unauthorized.cjs.map +1 -0
  40. package/dist/components/core/unauthorized.d.cts +5 -0
  41. package/dist/components/core/unauthorized.d.ts +5 -0
  42. package/dist/components/core/unauthorized.js +3 -0
  43. package/dist/components/core/unauthorized.js.map +1 -0
  44. package/dist/components/data/data-table/data-table-action-bar.cjs +3 -0
  45. package/dist/components/data/data-table/data-table-action-bar.cjs.map +1 -0
  46. package/dist/components/data/data-table/data-table-action-bar.d.cts +26 -0
  47. package/dist/components/data/data-table/data-table-action-bar.d.ts +26 -0
  48. package/dist/components/data/data-table/data-table-action-bar.js +3 -0
  49. package/dist/components/data/data-table/data-table-action-bar.js.map +1 -0
  50. package/dist/components/data/data-table/data-table-aggregation.cjs +3 -0
  51. package/dist/components/data/data-table/data-table-aggregation.cjs.map +1 -0
  52. package/dist/components/data/data-table/data-table-aggregation.d.cts +25 -0
  53. package/dist/components/data/data-table/data-table-aggregation.d.ts +25 -0
  54. package/dist/components/data/data-table/data-table-aggregation.js +3 -0
  55. package/dist/components/data/data-table/data-table-aggregation.js.map +1 -0
  56. package/dist/components/data/data-table/data-table-columns.cjs +3 -0
  57. package/dist/components/data/data-table/data-table-columns.cjs.map +1 -0
  58. package/dist/components/data/data-table/data-table-columns.d.cts +20 -0
  59. package/dist/components/data/data-table/data-table-columns.d.ts +20 -0
  60. package/dist/components/data/data-table/data-table-columns.js +3 -0
  61. package/dist/components/data/data-table/data-table-columns.js.map +1 -0
  62. package/dist/components/data/data-table/data-table-export.cjs +3 -0
  63. package/dist/components/data/data-table/data-table-export.cjs.map +1 -0
  64. package/dist/components/data/data-table/data-table-export.d.cts +38 -0
  65. package/dist/components/data/data-table/data-table-export.d.ts +38 -0
  66. package/dist/components/data/data-table/data-table-export.js +3 -0
  67. package/dist/components/data/data-table/data-table-export.js.map +1 -0
  68. package/dist/components/data/data-table/data-table-filtering.cjs +3 -0
  69. package/dist/components/data/data-table/data-table-filtering.cjs.map +1 -0
  70. package/dist/components/data/data-table/data-table-filtering.d.cts +17 -0
  71. package/dist/components/data/data-table/data-table-filtering.d.ts +17 -0
  72. package/dist/components/data/data-table/data-table-filtering.js +3 -0
  73. package/dist/components/data/data-table/data-table-filtering.js.map +1 -0
  74. package/dist/components/data/data-table/data-table-footer.cjs +3 -0
  75. package/dist/components/data/data-table/data-table-footer.cjs.map +1 -0
  76. package/dist/components/data/data-table/data-table-footer.d.cts +21 -0
  77. package/dist/components/data/data-table/data-table-footer.d.ts +21 -0
  78. package/dist/components/data/data-table/data-table-footer.js +3 -0
  79. package/dist/components/data/data-table/data-table-footer.js.map +1 -0
  80. package/dist/components/data/data-table/data-table-header.cjs +3 -0
  81. package/dist/components/data/data-table/data-table-header.cjs.map +1 -0
  82. package/dist/components/data/data-table/data-table-header.d.cts +23 -0
  83. package/dist/components/data/data-table/data-table-header.d.ts +23 -0
  84. package/dist/components/data/data-table/data-table-header.js +3 -0
  85. package/dist/components/data/data-table/data-table-header.js.map +1 -0
  86. package/dist/components/data/data-table/data-table-pagination.cjs +3 -0
  87. package/dist/components/data/data-table/data-table-pagination.cjs.map +1 -0
  88. package/dist/components/data/data-table/data-table-pagination.d.cts +14 -0
  89. package/dist/components/data/data-table/data-table-pagination.d.ts +14 -0
  90. package/dist/components/data/data-table/data-table-pagination.js +3 -0
  91. package/dist/components/data/data-table/data-table-pagination.js.map +1 -0
  92. package/dist/components/data/data-table/data-table-persist.cjs +3 -0
  93. package/dist/components/data/data-table/data-table-persist.cjs.map +1 -0
  94. package/dist/components/data/data-table/data-table-persist.d.cts +103 -0
  95. package/dist/components/data/data-table/data-table-persist.d.ts +103 -0
  96. package/dist/components/data/data-table/data-table-persist.js +3 -0
  97. package/dist/components/data/data-table/data-table-persist.js.map +1 -0
  98. package/dist/components/data/data-table/data-table-pinning.cjs +3 -0
  99. package/dist/components/data/data-table/data-table-pinning.cjs.map +1 -0
  100. package/dist/components/data/data-table/data-table-pinning.d.cts +39 -0
  101. package/dist/components/data/data-table/data-table-pinning.d.ts +39 -0
  102. package/dist/components/data/data-table/data-table-pinning.js +3 -0
  103. package/dist/components/data/data-table/data-table-pinning.js.map +1 -0
  104. package/dist/components/data/data-table/data-table-toolbar-menus.cjs +3 -0
  105. package/dist/components/data/data-table/data-table-toolbar-menus.cjs.map +1 -0
  106. package/dist/components/data/data-table/data-table-toolbar-menus.d.cts +21 -0
  107. package/dist/components/data/data-table/data-table-toolbar-menus.d.ts +21 -0
  108. package/dist/components/data/data-table/data-table-toolbar-menus.js +3 -0
  109. package/dist/components/data/data-table/data-table-toolbar-menus.js.map +1 -0
  110. package/dist/components/data/data-table/data-table-toolbar.cjs +3 -0
  111. package/dist/components/data/data-table/data-table-toolbar.cjs.map +1 -0
  112. package/dist/components/data/data-table/data-table-toolbar.d.cts +36 -0
  113. package/dist/components/data/data-table/data-table-toolbar.d.ts +36 -0
  114. package/dist/components/data/data-table/data-table-toolbar.js +3 -0
  115. package/dist/components/data/data-table/data-table-toolbar.js.map +1 -0
  116. package/dist/components/data/data-table/data-table-types.cjs +3 -0
  117. package/dist/components/data/data-table/data-table-types.cjs.map +1 -0
  118. package/dist/components/data/data-table/data-table-types.d.cts +536 -0
  119. package/dist/components/data/data-table/data-table-types.d.ts +536 -0
  120. package/dist/components/data/data-table/data-table-types.js +2 -0
  121. package/dist/components/data/data-table/data-table-types.js.map +1 -0
  122. package/dist/components/data/data-table/data-table.cjs +3 -0
  123. package/dist/components/data/data-table/data-table.cjs.map +1 -0
  124. package/dist/components/data/data-table/data-table.d.cts +10 -0
  125. package/dist/components/data/data-table/data-table.d.ts +10 -0
  126. package/dist/components/data/data-table/data-table.js +3 -0
  127. package/dist/components/data/data-table/data-table.js.map +1 -0
  128. package/dist/components/data/data-table/index.cjs +3 -0
  129. package/dist/components/data/data-table/index.cjs.map +1 -0
  130. package/dist/components/data/data-table/index.d.cts +16 -0
  131. package/dist/components/data/data-table/index.d.ts +16 -0
  132. package/dist/components/data/data-table/index.js +3 -0
  133. package/dist/components/data/data-table/index.js.map +1 -0
  134. package/dist/components/data/data-table/use-table-filter-param.cjs +3 -0
  135. package/dist/components/data/data-table/use-table-filter-param.cjs.map +1 -0
  136. package/dist/components/data/data-table/use-table-filter-param.d.cts +37 -0
  137. package/dist/components/data/data-table/use-table-filter-param.d.ts +37 -0
  138. package/dist/components/data/data-table/use-table-filter-param.js +3 -0
  139. package/dist/components/data/data-table/use-table-filter-param.js.map +1 -0
  140. package/dist/components/data/data-table/use-table-persist.cjs +3 -0
  141. package/dist/components/data/data-table/use-table-persist.cjs.map +1 -0
  142. package/dist/components/data/data-table/use-table-persist.d.cts +36 -0
  143. package/dist/components/data/data-table/use-table-persist.d.ts +36 -0
  144. package/dist/components/data/data-table/use-table-persist.js +3 -0
  145. package/dist/components/data/data-table/use-table-persist.js.map +1 -0
  146. package/dist/components/data/data-template/data-template-action-bar.cjs +3 -0
  147. package/dist/components/data/data-template/data-template-action-bar.cjs.map +1 -0
  148. package/dist/components/data/data-template/data-template-action-bar.d.cts +14 -0
  149. package/dist/components/data/data-template/data-template-action-bar.d.ts +14 -0
  150. package/dist/components/data/data-template/data-template-action-bar.js +3 -0
  151. package/dist/components/data/data-template/data-template-action-bar.js.map +1 -0
  152. package/dist/components/data/data-template/data-template-pagination.cjs +3 -0
  153. package/dist/components/data/data-template/data-template-pagination.cjs.map +1 -0
  154. package/dist/components/data/data-template/data-template-pagination.d.cts +17 -0
  155. package/dist/components/data/data-template/data-template-pagination.d.ts +17 -0
  156. package/dist/components/data/data-template/data-template-pagination.js +3 -0
  157. package/dist/components/data/data-template/data-template-pagination.js.map +1 -0
  158. package/dist/components/data/data-template/data-template-toolbar.cjs +3 -0
  159. package/dist/components/data/data-template/data-template-toolbar.cjs.map +1 -0
  160. package/dist/components/data/data-template/data-template-toolbar.d.cts +27 -0
  161. package/dist/components/data/data-template/data-template-toolbar.d.ts +27 -0
  162. package/dist/components/data/data-template/data-template-toolbar.js +3 -0
  163. package/dist/components/data/data-template/data-template-toolbar.js.map +1 -0
  164. package/dist/components/data/data-template/data-template-types.cjs +3 -0
  165. package/dist/components/data/data-template/data-template-types.cjs.map +1 -0
  166. package/dist/components/data/data-template/data-template-types.d.cts +105 -0
  167. package/dist/components/data/data-template/data-template-types.d.ts +105 -0
  168. package/dist/components/data/data-template/data-template-types.js +2 -0
  169. package/dist/components/data/data-template/data-template-types.js.map +1 -0
  170. package/dist/components/data/data-template/data-template.cjs +3 -0
  171. package/dist/components/data/data-template/data-template.cjs.map +1 -0
  172. package/dist/components/data/data-template/data-template.d.cts +8 -0
  173. package/dist/components/data/data-template/data-template.d.ts +8 -0
  174. package/dist/components/data/data-template/data-template.js +3 -0
  175. package/dist/components/data/data-template/data-template.js.map +1 -0
  176. package/dist/components/data/data-template/index.cjs +3 -0
  177. package/dist/components/data/data-template/index.cjs.map +1 -0
  178. package/dist/components/data/data-template/index.d.cts +8 -0
  179. package/dist/components/data/data-template/index.d.ts +8 -0
  180. package/dist/components/data/data-template/index.js +3 -0
  181. package/dist/components/data/data-template/index.js.map +1 -0
  182. package/dist/components/date-helper.cjs +0 -0
  183. package/dist/components/date-helper.cjs.map +0 -0
  184. package/dist/components/date-helper.d.cts +0 -0
  185. package/dist/components/date-helper.d.ts +0 -0
  186. package/dist/components/date-helper.js +0 -0
  187. package/dist/components/date-helper.js.map +0 -0
  188. package/dist/components/general.cjs +0 -0
  189. package/dist/components/general.cjs.map +0 -0
  190. package/dist/components/general.d.cts +0 -0
  191. package/dist/components/general.d.ts +0 -0
  192. package/dist/components/general.js +0 -0
  193. package/dist/components/general.js.map +0 -0
  194. package/dist/components/helper/date-filter.cjs +3 -0
  195. package/dist/components/helper/date-filter.cjs.map +1 -0
  196. package/dist/components/helper/date-filter.d.cts +19 -0
  197. package/dist/components/helper/date-filter.d.ts +19 -0
  198. package/dist/components/helper/date-filter.js +3 -0
  199. package/dist/components/helper/date-filter.js.map +1 -0
  200. package/dist/components/layouts/app-container.cjs +3 -0
  201. package/dist/components/layouts/app-container.cjs.map +1 -0
  202. package/dist/components/layouts/app-container.d.cts +11 -0
  203. package/dist/components/layouts/app-container.d.ts +11 -0
  204. package/dist/components/layouts/app-container.js +3 -0
  205. package/dist/components/layouts/app-container.js.map +1 -0
  206. package/dist/components/layouts/app-content.cjs +3 -0
  207. package/dist/components/layouts/app-content.cjs.map +1 -0
  208. package/dist/components/layouts/app-content.d.cts +53 -0
  209. package/dist/components/layouts/app-content.d.ts +53 -0
  210. package/dist/components/layouts/app-content.js +3 -0
  211. package/dist/components/layouts/app-content.js.map +1 -0
  212. package/dist/components/layouts/app-footer.cjs +3 -0
  213. package/dist/components/layouts/app-footer.cjs.map +1 -0
  214. package/dist/components/layouts/app-footer.d.cts +17 -0
  215. package/dist/components/layouts/app-footer.d.ts +17 -0
  216. package/dist/components/layouts/app-footer.js +3 -0
  217. package/dist/components/layouts/app-footer.js.map +1 -0
  218. package/dist/components/layouts/app-header.cjs +3 -0
  219. package/dist/components/layouts/app-header.cjs.map +1 -0
  220. package/dist/components/layouts/app-header.d.cts +32 -0
  221. package/dist/components/layouts/app-header.d.ts +32 -0
  222. package/dist/components/layouts/app-header.js +3 -0
  223. package/dist/components/layouts/app-header.js.map +1 -0
  224. package/dist/components/layouts/index.cjs +3 -0
  225. package/dist/components/layouts/index.cjs.map +1 -0
  226. package/dist/components/layouts/index.d.cts +7 -0
  227. package/dist/components/layouts/index.d.ts +7 -0
  228. package/dist/components/layouts/index.js +3 -0
  229. package/dist/components/layouts/index.js.map +1 -0
  230. package/dist/components/ui/badge.cjs +3 -0
  231. package/dist/components/ui/badge.cjs.map +1 -0
  232. package/dist/components/ui/badge.d.cts +13 -0
  233. package/dist/components/ui/badge.d.ts +13 -0
  234. package/dist/components/ui/badge.js +3 -0
  235. package/dist/components/ui/badge.js.map +1 -0
  236. package/dist/components/ui/button.cjs +3 -0
  237. package/dist/components/ui/button.cjs.map +1 -0
  238. package/dist/components/ui/button.d.cts +14 -0
  239. package/dist/components/ui/button.d.ts +14 -0
  240. package/dist/components/ui/button.js +3 -0
  241. package/dist/components/ui/button.js.map +1 -0
  242. package/dist/components/ui/calendar.cjs +3 -0
  243. package/dist/components/ui/calendar.cjs.map +1 -0
  244. package/dist/components/ui/calendar.d.cts +13 -0
  245. package/dist/components/ui/calendar.d.ts +13 -0
  246. package/dist/components/ui/calendar.js +3 -0
  247. package/dist/components/ui/calendar.js.map +1 -0
  248. package/dist/components/ui/card.cjs +3 -0
  249. package/dist/components/ui/card.cjs.map +1 -0
  250. package/dist/components/ui/card.d.cts +12 -0
  251. package/dist/components/ui/card.d.ts +12 -0
  252. package/dist/components/ui/card.js +3 -0
  253. package/dist/components/ui/card.js.map +1 -0
  254. package/dist/components/ui/checkbox.cjs +3 -0
  255. package/dist/components/ui/checkbox.cjs.map +1 -0
  256. package/dist/components/ui/checkbox.d.cts +7 -0
  257. package/dist/components/ui/checkbox.d.ts +7 -0
  258. package/dist/components/ui/checkbox.js +3 -0
  259. package/dist/components/ui/checkbox.js.map +1 -0
  260. package/dist/components/ui/command.cjs +3 -0
  261. package/dist/components/ui/command.cjs.map +1 -0
  262. package/dist/components/ui/command.d.cts +20 -0
  263. package/dist/components/ui/command.d.ts +20 -0
  264. package/dist/components/ui/command.js +3 -0
  265. package/dist/components/ui/command.js.map +1 -0
  266. package/dist/components/ui/dialog.cjs +3 -0
  267. package/dist/components/ui/dialog.cjs.map +1 -0
  268. package/dist/components/ui/dialog.d.cts +16 -0
  269. package/dist/components/ui/dialog.d.ts +16 -0
  270. package/dist/components/ui/dialog.js +3 -0
  271. package/dist/components/ui/dialog.js.map +1 -0
  272. package/dist/components/ui/dropdown-menu.cjs +3 -0
  273. package/dist/components/ui/dropdown-menu.cjs.map +1 -0
  274. package/dist/components/ui/dropdown-menu.d.cts +28 -0
  275. package/dist/components/ui/dropdown-menu.d.ts +28 -0
  276. package/dist/components/ui/dropdown-menu.js +3 -0
  277. package/dist/components/ui/dropdown-menu.js.map +1 -0
  278. package/dist/components/ui/input.cjs +3 -0
  279. package/dist/components/ui/input.cjs.map +1 -0
  280. package/dist/components/ui/input.d.cts +6 -0
  281. package/dist/components/ui/input.d.ts +6 -0
  282. package/dist/components/ui/input.js +3 -0
  283. package/dist/components/ui/input.js.map +1 -0
  284. package/dist/components/ui/popover.cjs +3 -0
  285. package/dist/components/ui/popover.cjs.map +1 -0
  286. package/dist/components/ui/popover.d.cts +10 -0
  287. package/dist/components/ui/popover.d.ts +10 -0
  288. package/dist/components/ui/popover.js +3 -0
  289. package/dist/components/ui/popover.js.map +1 -0
  290. package/dist/components/ui/select.cjs +3 -0
  291. package/dist/components/ui/select.cjs.map +1 -0
  292. package/dist/components/ui/select.d.cts +18 -0
  293. package/dist/components/ui/select.d.ts +18 -0
  294. package/dist/components/ui/select.js +3 -0
  295. package/dist/components/ui/select.js.map +1 -0
  296. package/dist/components/ui/separator.cjs +3 -0
  297. package/dist/components/ui/separator.cjs.map +1 -0
  298. package/dist/components/ui/separator.d.cts +7 -0
  299. package/dist/components/ui/separator.d.ts +7 -0
  300. package/dist/components/ui/separator.js +3 -0
  301. package/dist/components/ui/separator.js.map +1 -0
  302. package/dist/components/ui/sheet.cjs +3 -0
  303. package/dist/components/ui/sheet.cjs.map +1 -0
  304. package/dist/components/ui/sheet.d.cts +18 -0
  305. package/dist/components/ui/sheet.d.ts +18 -0
  306. package/dist/components/ui/sheet.js +3 -0
  307. package/dist/components/ui/sheet.js.map +1 -0
  308. package/dist/components/ui/table.cjs +3 -0
  309. package/dist/components/ui/table.cjs.map +1 -0
  310. package/dist/components/ui/table.d.cts +13 -0
  311. package/dist/components/ui/table.d.ts +13 -0
  312. package/dist/components/ui/table.js +3 -0
  313. package/dist/components/ui/table.js.map +1 -0
  314. package/dist/components/ui/toggle.cjs +3 -0
  315. package/dist/components/ui/toggle.cjs.map +1 -0
  316. package/dist/components/ui/toggle.d.cts +16 -0
  317. package/dist/components/ui/toggle.d.ts +16 -0
  318. package/dist/components/ui/toggle.js +3 -0
  319. package/dist/components/ui/toggle.js.map +1 -0
  320. package/dist/components/ui/tooltip.cjs +3 -0
  321. package/dist/components/ui/tooltip.cjs.map +1 -0
  322. package/dist/components/ui/tooltip.d.cts +10 -0
  323. package/dist/components/ui/tooltip.d.ts +10 -0
  324. package/dist/components/ui/tooltip.js +3 -0
  325. package/dist/components/ui/tooltip.js.map +1 -0
  326. package/dist/index.cjs +1 -1
  327. package/dist/index.cjs.map +1 -1
  328. package/dist/index.d.cts +28 -920
  329. package/dist/index.d.ts +28 -920
  330. package/dist/index.js +1 -1
  331. package/dist/index.js.map +1 -1
  332. package/dist/lib/utils.cjs +0 -0
  333. package/dist/lib/utils.cjs.map +0 -0
  334. package/dist/lib/utils.d.cts +0 -0
  335. package/dist/lib/utils.d.ts +0 -0
  336. package/dist/lib/utils.js +0 -0
  337. package/dist/lib/utils.js.map +0 -0
  338. package/package.json +92 -92
@@ -0,0 +1,3 @@
1
+ "use client"
2
+ "use strict";var u=Object.defineProperty;var h=Object.getOwnPropertyDescriptor;var p=Object.getOwnPropertyNames;var c=Object.prototype.hasOwnProperty;var m=(e,t)=>{for(var i in t)u(e,i,{get:t[i],enumerable:!0})},y=(e,t,i,s)=>{if(t&&typeof t=="object"||typeof t=="function")for(let f of p(t))!c.call(e,f)&&f!==i&&u(e,f,{get:()=>t[f],enumerable:!(s=h(t,f))||s.enumerable});return e};var P=e=>y(u({},"__esModule",{value:!0}),e);var T={};m(T,{collectDefaultPinned:()=>b,enforceAlwaysPinned:()=>w,getPinningStyles:()=>S,pinColumn:()=>x,stickyWidth:()=>C});module.exports=P(T);function S(e,t){if(!t)return{};let i=e.getIsPinned();if(!i)return{};let s=e.getSize();return{position:"sticky",left:i==="left"?e.getStart("left"):void 0,right:i==="right"?e.getAfter("right"):void 0,width:s,minWidth:s,maxWidth:s,boxShadow:i==="right"&&e.getIsFirstColumn("right")?"inset 1px 0 0 0 var(--border)":void 0}}var C=(e,t)=>t||e!==150?e:"auto";function b(e){let t=[],i=[],s=new Set,f=r=>{r.forEach((n,o)=>{let g=n.id??n.accessorKey,a=g!=null?String(g):"";if(a&&(n.defaultPin==="left"||n.defaultPin==="right")&&!s.has(a)){s.add(a);let d=Number.isFinite(n.pinIndex)?n.pinIndex:o;(n.defaultPin==="left"?t:i).push({id:a,order:d})}n.columns&&f(n.columns)})};f(e);let l=r=>r.sort((n,o)=>n.order-o.order).map(n=>n.id);return{left:l(t),right:l(i)}}function w(e,t){return{left:[...t,...(e.left??[]).filter(i=>!t.includes(i))],right:(e.right??[]).filter(i=>!t.includes(i))}}function x(e,t,i,s){if(i===!1)e.setColumnSizing(n=>{let o={...n};return delete o[t],o});else{let n=s.container?.querySelector(`[data-col-id="${t}"]`),o=n?Math.round(n.getBoundingClientRect().width):0;o>0&&e.setColumnSizing(g=>({...g,[t]:o}))}let{alwaysPinnedLeft:f}=s,l=e.getState().columnPinning,r={left:(l.left??[]).filter(n=>f.includes(n)),right:[...l.right??[]]};i==="right"?r.right.includes(t)||r.right.push(t):i==="left"?(r.right=r.right.filter(n=>n!==t),!r.left.includes(t)&&!f.includes(t)&&r.left.push(t)):(r.left=r.left.filter(n=>n!==t),r.right=r.right.filter(n=>n!==t)),e.setColumnPinning(r)}0&&(module.exports={collectDefaultPinned,enforceAlwaysPinned,getPinningStyles,pinColumn,stickyWidth});
3
+ //# sourceMappingURL=data-table-pinning.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/components/data/data-table/data-table-pinning.ts"],"sourcesContent":["import type { Column, ColumnPinningState, Table } from \"@tanstack/react-table\"\nimport type { CSSProperties } from \"react\"\nimport type { GroupColumnDef } from \"./data-table-types.js\"\n\n/**\n * Sticky styles for a pinned column cell — TanStack's official pinning pattern\n * (`getStart`/`getAfter` offsets; column locked to `size` so offsets stay true; 1px inset\n * shadow separates the first right-pinned column).\n */\nexport function getPinningStyles(\n column: Column<any, unknown>,\n enableColumnPinning: boolean,\n): CSSProperties {\n if (!enableColumnPinning) return {}\n const pinned = column.getIsPinned()\n if (!pinned) return {}\n\n const size = column.getSize()\n\n return {\n position: \"sticky\",\n left: pinned === \"left\" ? column.getStart(\"left\") : undefined,\n right: pinned === \"right\" ? column.getAfter(\"right\") : undefined,\n width: size,\n minWidth: size,\n maxWidth: size,\n // box-shadow (not border) stays put on sticky cells; marks the right-pinned group's left edge\n boxShadow:\n pinned === \"right\" && column.getIsFirstColumn(\"right\")\n ? \"inset 1px 0 0 0 var(--border)\"\n : undefined,\n }\n}\n\n/** Width for a non-pinned cell: explicit size or auto (150 = TanStack default = auto). */\nexport const stickyWidth = (size: number, isPinned: boolean): number | string =>\n isPinned ? size : size !== 150 ? size : \"auto\"\n\n/**\n * Resolve `defaultPin`/`pinIndex` off the raw column defs (recursing into group columns) into\n * ordered left/right id lists for the table's initial pinning state. Lower `pinIndex` sits\n * closer to the outer edge; columns without a finite `pinIndex` keep declaration order.\n * Defensive against bad input (duplicate/malformed ids, non-numeric `pinIndex`, an invalid\n * `defaultPin` value slipping through from untyped JS callers): each is skipped or falls back\n * rather than corrupting the pinning state.\n */\nexport function collectDefaultPinned<T>(columns: GroupColumnDef<T>[]): { left: string[]; right: string[] } {\n type Entry = { id: string; order: number }\n const left: Entry[] = []\n const right: Entry[] = []\n const seen = new Set<string>()\n\n const walk = (cols: GroupColumnDef<T>[]) => {\n cols.forEach((col, index) => {\n const rawId = (col as any).id ?? (col as any).accessorKey\n const id = rawId != null ? String(rawId) : \"\"\n if (id && (col.defaultPin === \"left\" || col.defaultPin === \"right\") && !seen.has(id)) {\n seen.add(id)\n const order = Number.isFinite(col.pinIndex as number) ? (col.pinIndex as number) : index\n ;(col.defaultPin === \"left\" ? left : right).push({ id, order })\n }\n if (col.columns) walk(col.columns)\n })\n }\n walk(columns)\n\n // stable sort (spec-guaranteed since ES2019): equal/duplicate `order` values keep declaration order\n const toIds = (entries: Entry[]) => entries.sort((a, b) => a.order - b.order).map((e) => e.id)\n return { left: toIds(left), right: toIds(right) }\n}\n\n/** Re-assert the always-left-pinned helper columns on every pinning change. */\nexport function enforceAlwaysPinned(next: ColumnPinningState, always: string[]): ColumnPinningState {\n return {\n left: [...always, ...(next.left ?? []).filter((id) => !always.includes(id))],\n right: (next.right ?? []).filter((id) => !always.includes(id)),\n }\n}\n\n/**\n * Pin/unpin a column. Captures the column's live rendered width on pin (so it doesn't jump to\n * its declared `size`) and drops the override on unpin.\n */\nexport function pinColumn<T>(\n table: Table<T>,\n columnId: string,\n side: \"left\" | \"right\" | false,\n opts: { container: HTMLElement | null; alwaysPinnedLeft: string[] },\n) {\n if (side === false) {\n table.setColumnSizing((prev) => {\n const next = { ...prev }\n delete next[columnId]\n return next\n })\n } else {\n const headerEl = opts.container?.querySelector<HTMLElement>(`[data-col-id=\"${columnId}\"]`)\n const width = headerEl ? Math.round(headerEl.getBoundingClientRect().width) : 0\n if (width > 0) table.setColumnSizing((prev) => ({ ...prev, [columnId]: width }))\n }\n\n const { alwaysPinnedLeft } = opts\n const current = table.getState().columnPinning\n const newPinning = {\n left: (current.left ?? []).filter((id) => alwaysPinnedLeft.includes(id)),\n right: [...(current.right ?? [])],\n }\n\n if (side === \"right\") {\n if (!newPinning.right.includes(columnId)) newPinning.right.push(columnId)\n } else if (side === \"left\") {\n newPinning.right = newPinning.right.filter((id) => id !== columnId)\n if (!newPinning.left.includes(columnId) && !alwaysPinnedLeft.includes(columnId)) {\n newPinning.left.push(columnId)\n }\n } else {\n newPinning.left = newPinning.left.filter((id) => id !== columnId)\n newPinning.right = newPinning.right.filter((id) => id !== columnId)\n }\n\n table.setColumnPinning(newPinning)\n}\n"],"mappings":"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","names":["data_table_pinning_exports","__export","collectDefaultPinned","enforceAlwaysPinned","getPinningStyles","pinColumn","stickyWidth","__toCommonJS","column","enableColumnPinning","pinned","size","isPinned","columns","left","right","seen","walk","cols","col","index","rawId","id","order","toIds","entries","a","b","e","next","always","table","columnId","side","opts","prev","headerEl","width","alwaysPinnedLeft","current","newPinning"]}
@@ -0,0 +1,39 @@
1
+ import { Column, ColumnPinningState, Table } from '@tanstack/react-table';
2
+ import { CSSProperties } from 'react';
3
+ import { GroupColumnDef } from './data-table-types.cjs';
4
+ import 'lucide-react';
5
+ import './data-table-persist.cjs';
6
+ import './data-table-export.cjs';
7
+
8
+ /**
9
+ * Sticky styles for a pinned column cell — TanStack's official pinning pattern
10
+ * (`getStart`/`getAfter` offsets; column locked to `size` so offsets stay true; 1px inset
11
+ * shadow separates the first right-pinned column).
12
+ */
13
+ declare function getPinningStyles(column: Column<any, unknown>, enableColumnPinning: boolean): CSSProperties;
14
+ /** Width for a non-pinned cell: explicit size or auto (150 = TanStack default = auto). */
15
+ declare const stickyWidth: (size: number, isPinned: boolean) => number | string;
16
+ /**
17
+ * Resolve `defaultPin`/`pinIndex` off the raw column defs (recursing into group columns) into
18
+ * ordered left/right id lists for the table's initial pinning state. Lower `pinIndex` sits
19
+ * closer to the outer edge; columns without a finite `pinIndex` keep declaration order.
20
+ * Defensive against bad input (duplicate/malformed ids, non-numeric `pinIndex`, an invalid
21
+ * `defaultPin` value slipping through from untyped JS callers): each is skipped or falls back
22
+ * rather than corrupting the pinning state.
23
+ */
24
+ declare function collectDefaultPinned<T>(columns: GroupColumnDef<T>[]): {
25
+ left: string[];
26
+ right: string[];
27
+ };
28
+ /** Re-assert the always-left-pinned helper columns on every pinning change. */
29
+ declare function enforceAlwaysPinned(next: ColumnPinningState, always: string[]): ColumnPinningState;
30
+ /**
31
+ * Pin/unpin a column. Captures the column's live rendered width on pin (so it doesn't jump to
32
+ * its declared `size`) and drops the override on unpin.
33
+ */
34
+ declare function pinColumn<T>(table: Table<T>, columnId: string, side: "left" | "right" | false, opts: {
35
+ container: HTMLElement | null;
36
+ alwaysPinnedLeft: string[];
37
+ }): void;
38
+
39
+ export { collectDefaultPinned, enforceAlwaysPinned, getPinningStyles, pinColumn, stickyWidth };
@@ -0,0 +1,39 @@
1
+ import { Column, ColumnPinningState, Table } from '@tanstack/react-table';
2
+ import { CSSProperties } from 'react';
3
+ import { GroupColumnDef } from './data-table-types.js';
4
+ import 'lucide-react';
5
+ import './data-table-persist.js';
6
+ import './data-table-export.js';
7
+
8
+ /**
9
+ * Sticky styles for a pinned column cell — TanStack's official pinning pattern
10
+ * (`getStart`/`getAfter` offsets; column locked to `size` so offsets stay true; 1px inset
11
+ * shadow separates the first right-pinned column).
12
+ */
13
+ declare function getPinningStyles(column: Column<any, unknown>, enableColumnPinning: boolean): CSSProperties;
14
+ /** Width for a non-pinned cell: explicit size or auto (150 = TanStack default = auto). */
15
+ declare const stickyWidth: (size: number, isPinned: boolean) => number | string;
16
+ /**
17
+ * Resolve `defaultPin`/`pinIndex` off the raw column defs (recursing into group columns) into
18
+ * ordered left/right id lists for the table's initial pinning state. Lower `pinIndex` sits
19
+ * closer to the outer edge; columns without a finite `pinIndex` keep declaration order.
20
+ * Defensive against bad input (duplicate/malformed ids, non-numeric `pinIndex`, an invalid
21
+ * `defaultPin` value slipping through from untyped JS callers): each is skipped or falls back
22
+ * rather than corrupting the pinning state.
23
+ */
24
+ declare function collectDefaultPinned<T>(columns: GroupColumnDef<T>[]): {
25
+ left: string[];
26
+ right: string[];
27
+ };
28
+ /** Re-assert the always-left-pinned helper columns on every pinning change. */
29
+ declare function enforceAlwaysPinned(next: ColumnPinningState, always: string[]): ColumnPinningState;
30
+ /**
31
+ * Pin/unpin a column. Captures the column's live rendered width on pin (so it doesn't jump to
32
+ * its declared `size`) and drops the override on unpin.
33
+ */
34
+ declare function pinColumn<T>(table: Table<T>, columnId: string, side: "left" | "right" | false, opts: {
35
+ container: HTMLElement | null;
36
+ alwaysPinnedLeft: string[];
37
+ }): void;
38
+
39
+ export { collectDefaultPinned, enforceAlwaysPinned, getPinningStyles, pinColumn, stickyWidth };
@@ -0,0 +1,3 @@
1
+ "use client"
2
+ function d(n,e){if(!e)return{};let i=n.getIsPinned();if(!i)return{};let s=n.getSize();return{position:"sticky",left:i==="left"?n.getStart("left"):void 0,right:i==="right"?n.getAfter("right"):void 0,width:s,minWidth:s,maxWidth:s,boxShadow:i==="right"&&n.getIsFirstColumn("right")?"inset 1px 0 0 0 var(--border)":void 0}}var h=(n,e)=>e||n!==150?n:"auto";function p(n){let e=[],i=[],s=new Set,o=r=>{r.forEach((t,f)=>{let g=t.id??t.accessorKey,a=g!=null?String(g):"";if(a&&(t.defaultPin==="left"||t.defaultPin==="right")&&!s.has(a)){s.add(a);let u=Number.isFinite(t.pinIndex)?t.pinIndex:f;(t.defaultPin==="left"?e:i).push({id:a,order:u})}t.columns&&o(t.columns)})};o(n);let l=r=>r.sort((t,f)=>t.order-f.order).map(t=>t.id);return{left:l(e),right:l(i)}}function c(n,e){return{left:[...e,...(n.left??[]).filter(i=>!e.includes(i))],right:(n.right??[]).filter(i=>!e.includes(i))}}function m(n,e,i,s){if(i===!1)n.setColumnSizing(t=>{let f={...t};return delete f[e],f});else{let t=s.container?.querySelector(`[data-col-id="${e}"]`),f=t?Math.round(t.getBoundingClientRect().width):0;f>0&&n.setColumnSizing(g=>({...g,[e]:f}))}let{alwaysPinnedLeft:o}=s,l=n.getState().columnPinning,r={left:(l.left??[]).filter(t=>o.includes(t)),right:[...l.right??[]]};i==="right"?r.right.includes(e)||r.right.push(e):i==="left"?(r.right=r.right.filter(t=>t!==e),!r.left.includes(e)&&!o.includes(e)&&r.left.push(e)):(r.left=r.left.filter(t=>t!==e),r.right=r.right.filter(t=>t!==e)),n.setColumnPinning(r)}export{p as collectDefaultPinned,c as enforceAlwaysPinned,d as getPinningStyles,m as pinColumn,h as stickyWidth};
3
+ //# sourceMappingURL=data-table-pinning.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/components/data/data-table/data-table-pinning.ts"],"sourcesContent":["import type { Column, ColumnPinningState, Table } from \"@tanstack/react-table\"\nimport type { CSSProperties } from \"react\"\nimport type { GroupColumnDef } from \"./data-table-types.js\"\n\n/**\n * Sticky styles for a pinned column cell — TanStack's official pinning pattern\n * (`getStart`/`getAfter` offsets; column locked to `size` so offsets stay true; 1px inset\n * shadow separates the first right-pinned column).\n */\nexport function getPinningStyles(\n column: Column<any, unknown>,\n enableColumnPinning: boolean,\n): CSSProperties {\n if (!enableColumnPinning) return {}\n const pinned = column.getIsPinned()\n if (!pinned) return {}\n\n const size = column.getSize()\n\n return {\n position: \"sticky\",\n left: pinned === \"left\" ? column.getStart(\"left\") : undefined,\n right: pinned === \"right\" ? column.getAfter(\"right\") : undefined,\n width: size,\n minWidth: size,\n maxWidth: size,\n // box-shadow (not border) stays put on sticky cells; marks the right-pinned group's left edge\n boxShadow:\n pinned === \"right\" && column.getIsFirstColumn(\"right\")\n ? \"inset 1px 0 0 0 var(--border)\"\n : undefined,\n }\n}\n\n/** Width for a non-pinned cell: explicit size or auto (150 = TanStack default = auto). */\nexport const stickyWidth = (size: number, isPinned: boolean): number | string =>\n isPinned ? size : size !== 150 ? size : \"auto\"\n\n/**\n * Resolve `defaultPin`/`pinIndex` off the raw column defs (recursing into group columns) into\n * ordered left/right id lists for the table's initial pinning state. Lower `pinIndex` sits\n * closer to the outer edge; columns without a finite `pinIndex` keep declaration order.\n * Defensive against bad input (duplicate/malformed ids, non-numeric `pinIndex`, an invalid\n * `defaultPin` value slipping through from untyped JS callers): each is skipped or falls back\n * rather than corrupting the pinning state.\n */\nexport function collectDefaultPinned<T>(columns: GroupColumnDef<T>[]): { left: string[]; right: string[] } {\n type Entry = { id: string; order: number }\n const left: Entry[] = []\n const right: Entry[] = []\n const seen = new Set<string>()\n\n const walk = (cols: GroupColumnDef<T>[]) => {\n cols.forEach((col, index) => {\n const rawId = (col as any).id ?? (col as any).accessorKey\n const id = rawId != null ? String(rawId) : \"\"\n if (id && (col.defaultPin === \"left\" || col.defaultPin === \"right\") && !seen.has(id)) {\n seen.add(id)\n const order = Number.isFinite(col.pinIndex as number) ? (col.pinIndex as number) : index\n ;(col.defaultPin === \"left\" ? left : right).push({ id, order })\n }\n if (col.columns) walk(col.columns)\n })\n }\n walk(columns)\n\n // stable sort (spec-guaranteed since ES2019): equal/duplicate `order` values keep declaration order\n const toIds = (entries: Entry[]) => entries.sort((a, b) => a.order - b.order).map((e) => e.id)\n return { left: toIds(left), right: toIds(right) }\n}\n\n/** Re-assert the always-left-pinned helper columns on every pinning change. */\nexport function enforceAlwaysPinned(next: ColumnPinningState, always: string[]): ColumnPinningState {\n return {\n left: [...always, ...(next.left ?? []).filter((id) => !always.includes(id))],\n right: (next.right ?? []).filter((id) => !always.includes(id)),\n }\n}\n\n/**\n * Pin/unpin a column. Captures the column's live rendered width on pin (so it doesn't jump to\n * its declared `size`) and drops the override on unpin.\n */\nexport function pinColumn<T>(\n table: Table<T>,\n columnId: string,\n side: \"left\" | \"right\" | false,\n opts: { container: HTMLElement | null; alwaysPinnedLeft: string[] },\n) {\n if (side === false) {\n table.setColumnSizing((prev) => {\n const next = { ...prev }\n delete next[columnId]\n return next\n })\n } else {\n const headerEl = opts.container?.querySelector<HTMLElement>(`[data-col-id=\"${columnId}\"]`)\n const width = headerEl ? Math.round(headerEl.getBoundingClientRect().width) : 0\n if (width > 0) table.setColumnSizing((prev) => ({ ...prev, [columnId]: width }))\n }\n\n const { alwaysPinnedLeft } = opts\n const current = table.getState().columnPinning\n const newPinning = {\n left: (current.left ?? []).filter((id) => alwaysPinnedLeft.includes(id)),\n right: [...(current.right ?? [])],\n }\n\n if (side === \"right\") {\n if (!newPinning.right.includes(columnId)) newPinning.right.push(columnId)\n } else if (side === \"left\") {\n newPinning.right = newPinning.right.filter((id) => id !== columnId)\n if (!newPinning.left.includes(columnId) && !alwaysPinnedLeft.includes(columnId)) {\n newPinning.left.push(columnId)\n }\n } else {\n newPinning.left = newPinning.left.filter((id) => id !== columnId)\n newPinning.right = newPinning.right.filter((id) => id !== columnId)\n }\n\n table.setColumnPinning(newPinning)\n}\n"],"mappings":"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","names":["getPinningStyles","column","enableColumnPinning","pinned","size","stickyWidth","isPinned","collectDefaultPinned","columns","left","right","seen","walk","cols","col","index","rawId","id","order","toIds","entries","a","b","e","enforceAlwaysPinned","next","always","pinColumn","table","columnId","side","opts","prev","headerEl","width","alwaysPinnedLeft","current","newPinning"]}
@@ -0,0 +1,3 @@
1
+ "use client"
2
+ "use strict";var D=Object.defineProperty;var E=Object.getOwnPropertyDescriptor;var U=Object.getOwnPropertyNames;var q=Object.prototype.hasOwnProperty;var $=(e,o)=>{for(var n in o)D(e,n,{get:o[n],enumerable:!0})},W=(e,o,n,i)=>{if(o&&typeof o=="object"||typeof o=="function")for(let m of U(o))!q.call(e,m)&&m!==n&&D(e,m,{get:()=>o[m],enumerable:!(i=E(o,m))||i.enumerable});return e};var J=e=>W(D({},"__esModule",{value:!0}),e);var Y={};$(Y,{AggregationsMenu:()=>Q,ColumnVisibilityMenu:()=>X,clearAllAggregations:()=>O,getColumnDisplayName:()=>M});module.exports=J(Y);var f=require("lucide-react");var S=require("radix-ui"),A=require("class-variance-authority");var I=require("clsx"),T=require("tailwind-merge");function p(...e){return(0,T.twMerge)((0,I.clsx)(e))}var _=require("react/jsx-runtime"),K=(0,A.cva)("inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-[color,box-shadow] disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive",{variants:{variant:{default:"bg-primary text-primary-foreground shadow-xs hover:bg-primary/90",destructive:"bg-destructive text-white shadow-xs hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60",outline:"border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50 dark:focus-visible:border-ring",secondary:"bg-secondary text-secondary-foreground shadow-xs hover:bg-secondary/80",ghost:"hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-9 px-4 py-2 has-[>svg]:px-3",sm:"h-8 rounded-md gap-1.5 px-3 has-[>svg]:px-2.5",lg:"h-10 rounded-md px-6 has-[>svg]:px-4",icon:"size-9"}},defaultVariants:{variant:"default",size:"default"}});function x({className:e,variant:o,size:n,asChild:i=!1,...m}){let a=i?S.Slot.Slot:"button";return(0,_.jsx)(a,{"data-slot":"button",className:p(K({variant:o,size:n,className:e})),...m})}var k=require("radix-ui"),G=require("lucide-react");var w=require("react/jsx-runtime");function L({className:e,...o}){return(0,w.jsx)(k.Checkbox.Root,{"data-slot":"checkbox",className:p("peer border-input dark:bg-input/30 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground dark:data-[state=checked]:bg-primary data-[state=checked]:border-primary focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive size-4 shrink-0 rounded-[4px] border shadow-xs transition-shadow outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50",e),...o,children:(0,w.jsx)(k.Checkbox.Indicator,{"data-slot":"checkbox-indicator",className:"flex items-center justify-center text-current transition-none",children:(0,w.jsx)(G.CheckIcon,{className:"size-3.5"})})})}var c=require("radix-ui"),v=require("lucide-react");var s=require("react/jsx-runtime");function N({...e}){return(0,s.jsx)(c.DropdownMenu.Root,{"data-slot":"dropdown-menu",...e})}function P({...e}){return(0,s.jsx)(c.DropdownMenu.Trigger,{"data-slot":"dropdown-menu-trigger",...e})}function R({className:e,sideOffset:o=4,...n}){return(0,s.jsx)(c.DropdownMenu.Portal,{children:(0,s.jsx)(c.DropdownMenu.Content,{"data-slot":"dropdown-menu-content",sideOffset:o,className:p("bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 max-h-(--radix-dropdown-menu-content-available-height) min-w-[8rem] origin-(--radix-dropdown-menu-content-transform-origin) rounded-md border p-1 shadow-md",e),...n})})}function z({...e}){return(0,s.jsx)(c.DropdownMenu.Group,{"data-slot":"dropdown-menu-group",...e})}function h({className:e,children:o,checked:n,...i}){return(0,s.jsxs)(c.DropdownMenu.CheckboxItem,{"data-slot":"dropdown-menu-checkbox-item",className:p("focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",e),checked:n,...i,children:[(0,s.jsx)("span",{className:"pointer-events-none absolute left-2 flex size-3.5 items-center justify-center",children:(0,s.jsx)(c.DropdownMenu.ItemIndicator,{children:(0,s.jsx)(v.CheckIcon,{className:"size-4"})})}),o]})}function b({className:e,inset:o,...n}){return(0,s.jsx)(c.DropdownMenu.Label,{"data-slot":"dropdown-menu-label","data-inset":o,className:p("px-2 py-1.5 text-sm font-medium data-[inset]:pl-8",e),...n})}function C({className:e,...o}){return(0,s.jsx)(c.DropdownMenu.Separator,{"data-slot":"dropdown-menu-separator",className:p("bg-border -mx-1 my-1 h-px",e),...o})}function V({...e}){return(0,s.jsx)(c.DropdownMenu.Sub,{"data-slot":"dropdown-menu-sub",...e})}function F({className:e,inset:o,children:n,...i}){return(0,s.jsxs)(c.DropdownMenu.SubTrigger,{"data-slot":"dropdown-menu-sub-trigger","data-inset":o,className:p("focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground flex cursor-default items-center rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[inset]:pl-8",e),...i,children:[n,(0,s.jsx)(v.ChevronRightIcon,{className:"ml-auto size-4"})]})}function j({className:e,...o}){return(0,s.jsx)(c.DropdownMenu.SubContent,{"data-slot":"dropdown-menu-sub-content",className:p("bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 min-w-[8rem] origin-(--radix-dropdown-menu-content-transform-origin) overflow-hidden rounded-md border p-1 shadow-lg",e),...o})}var t=require("react/jsx-runtime"),B=[{value:"sum",label:"Sum",description:"Total of all values"},{value:"average",label:"Average",description:"Mean value"},{value:"min",label:"Minimum",description:"Smallest value"},{value:"max",label:"Maximum",description:"Largest value"},{value:"count",label:"Count",description:"Number of rows"},{value:"unique",label:"Unique",description:"Count of distinct values"},{value:"median",label:"Median",description:"Middle value"}],M=(e,o)=>(o&&e.startsWith(`${o}.`)?e.replace(`${o}.`,""):e).split("_").map(i=>i.charAt(0).toUpperCase()+i.slice(1)).join(" ");function O(e,o){o&&Object.keys(e).forEach(n=>{let i=e[n];i&&o(n,{...i,enabled:!1,functions:[]})})}var H=e=>e.getAllLeafColumns().filter(o=>o.getCanHide?.()!==!1);function Q({table:e,aggregations:o,onAggregationChange:n}){let i=H(e).filter(r=>r.id==="select"||r.id==="serialNumber"?!1:r.columnDef.meta?.aggregatable?!0:e.getRowModel().rows.slice(0,5).some(u=>{let l=u.getValue(r.id);return typeof l=="number"||typeof l=="string"&&!isNaN(parseFloat(String(l)))||typeof l=="object"&&l!==null&&"props"in l}));if(i.length===0||!n)return null;let m=Object.values(o).some(r=>r?.enabled),a=r=>{let u=o[r];n(r,{enabled:!u?.enabled,functions:u?.functions||["sum","average"]})},d=(r,u)=>{let l=o[r]?.functions||[],g=l.includes(u)?l.filter(y=>y!==u):[...l,u];n(r,{enabled:g.length>0,functions:g})};return(0,t.jsxs)(N,{children:[(0,t.jsx)(P,{asChild:!0,children:(0,t.jsxs)(x,{variant:"outline",size:"sm",className:"gap-1 rounded-lg",children:[(0,t.jsx)(f.Calculator,{className:"size-4"}),(0,t.jsx)("span",{children:"Aggregations"}),(0,t.jsx)(f.ChevronDown,{className:"opacity-50 size-4"})]})}),(0,t.jsxs)(R,{align:"end",className:"w-64 rounded-lg max-h-[500px] overflow-y-auto",children:[(0,t.jsxs)(b,{className:"flex items-center justify-between px-4 py-2",children:[(0,t.jsx)("span",{className:"text-sm font-medium",children:"Column Aggregations"}),m&&(0,t.jsx)(x,{variant:"ghost",size:"sm",className:"h-6 px-2 text-xs",onClick:()=>O(o,n),children:"Clear All"})]}),(0,t.jsx)(C,{}),i.map(r=>{let u=o[r.id],l=u?.enabled;return(0,t.jsxs)(V,{children:[(0,t.jsx)(F,{className:"text-sm",children:(0,t.jsxs)("div",{className:"flex items-center w-full gap-2",children:[(0,t.jsx)(L,{checked:l,onCheckedChange:()=>a(r.id),className:"data-[state=checked]:bg-primary"}),(0,t.jsx)("span",{className:p("flex-1",l&&"font-medium text-primary"),children:M(r.id)}),l&&(0,t.jsxs)("div",{className:"flex items-center gap-1",children:[u?.functions?.slice(0,2).map(g=>(0,t.jsx)("div",{className:"w-2 h-2 rounded-full bg-primary",title:B.find(y=>y.value===g)?.label},g)),u?.functions&&u.functions.length>2&&(0,t.jsxs)("div",{className:"text-xs text-muted-foreground",children:["+",u.functions.length-2]})]})]})}),(0,t.jsxs)(j,{className:"w-48 rounded-lg",children:[(0,t.jsx)(b,{className:"px-3 py-2 text-xs font-medium text-muted-foreground",children:"Select Functions"}),B.map(g=>(0,t.jsx)(h,{checked:u?.functions?.includes(g.value)||!1,onCheckedChange:()=>d(r.id,g.value),className:"py-2 text-sm",children:(0,t.jsxs)("div",{className:"flex flex-col",children:[(0,t.jsx)("span",{children:g.label}),(0,t.jsx)("span",{className:"text-xs text-muted-foreground",children:g.description})]})},g.value))]})]},r.id)})]})]})}function X({table:e}){let o=H(e),n=e.getAllColumns().filter(a=>!e.getAllLeafColumns().includes(a)&&a.columns?.length&&a.columns.some(d=>d.getCanHide?.()!==!1)),i=new Set(n.flatMap(a=>a.columns?.filter(d=>d.getCanHide?.()!==!1).map(d=>d.id)||[])),m=o.filter(a=>!i.has(a.id));return(0,t.jsxs)(N,{children:[(0,t.jsx)(P,{asChild:!0,children:(0,t.jsxs)(x,{variant:"outline",size:"sm",className:"gap-1 rounded-lg",children:[(0,t.jsx)(f.Columns3,{className:"size-4"}),(0,t.jsx)("span",{children:"Columns"}),(0,t.jsx)(f.ChevronDown,{className:"opacity-50 size-4"})]})}),(0,t.jsxs)(R,{align:"end",className:"w-[220px] rounded-lg max-h-[400px] overflow-y-auto",children:[(0,t.jsx)(b,{className:"px-4 py-2 text-sm font-medium",children:"Toggle Columns"}),(0,t.jsx)(C,{}),m.length>0&&(0,t.jsxs)(z,{children:[(0,t.jsx)(b,{className:"px-4 py-1.5 text-sm font-medium text-muted-foreground",children:"General"}),m.map(a=>(0,t.jsx)(h,{className:"text-sm",checked:a.getIsVisible(),onCheckedChange:d=>a.toggleVisibility(!!d),children:M(a.id)},a.id))]}),n.map(a=>(0,t.jsxs)(z,{children:[(0,t.jsx)(C,{}),(0,t.jsx)(b,{className:"px-4 py-1.5 text-sm font-medium text-muted-foreground",children:a.id}),a.columns?.filter(d=>d.getCanHide?.()!==!1).map(d=>(0,t.jsx)(h,{className:"text-sm",checked:d.getIsVisible(),onCheckedChange:r=>d.toggleVisibility(!!r),children:M(d.id,a.id)},d.id))]},a.id))]})]})}0&&(module.exports={AggregationsMenu,ColumnVisibilityMenu,clearAllAggregations,getColumnDisplayName});
3
+ //# sourceMappingURL=data-table-toolbar-menus.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/components/data/data-table/data-table-toolbar-menus.tsx","../../../../src/components/ui/button.tsx","../../../../src/lib/utils.ts","../../../../src/components/ui/checkbox.tsx","../../../../src/components/ui/dropdown-menu.tsx"],"sourcesContent":["import { Calculator, ChevronDown, Columns3 } from \"lucide-react\"\nimport type { Table } from \"@tanstack/react-table\"\nimport { Button } from \"../../ui/button.jsx\"\nimport { Checkbox } from \"../../ui/checkbox.jsx\"\nimport {\n DropdownMenu,\n DropdownMenuCheckboxItem,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuLabel,\n DropdownMenuSeparator,\n DropdownMenuSub,\n DropdownMenuSubContent,\n DropdownMenuSubTrigger,\n DropdownMenuTrigger,\n} from \"../../ui/dropdown-menu.jsx\"\nimport { cn } from \"../../../lib/utils.js\"\nimport type { AggregationConfig, AggregationConfigMap, AggregationFunction } from \"./data-table-types.js\"\n\nconst AGGREGATION_FUNCTIONS: { value: AggregationFunction; label: string; description: string }[] = [\n { value: 'sum', label: 'Sum', description: 'Total of all values' },\n { value: 'average', label: 'Average', description: 'Mean value' },\n { value: 'min', label: 'Minimum', description: 'Smallest value' },\n { value: 'max', label: 'Maximum', description: 'Largest value' },\n { value: 'count', label: 'Count', description: 'Number of rows' },\n { value: 'unique', label: 'Unique', description: 'Count of distinct values' },\n { value: 'median', label: 'Median', description: 'Middle value' },\n]\n\nexport const getColumnDisplayName = (columnId: string, groupName?: string) => {\n const id = groupName && columnId.startsWith(`${groupName}.`)\n ? columnId.replace(`${groupName}.`, '')\n : columnId\n return id.split('_').map(w => w.charAt(0).toUpperCase() + w.slice(1)).join(' ')\n}\n\nexport function clearAllAggregations<T>(\n aggregations: AggregationConfigMap<T>,\n onAggregationChange?: (columnId: string, config: AggregationConfig<T>) => void,\n) {\n if (!onAggregationChange) return\n Object.keys(aggregations).forEach(columnId => {\n const config = aggregations[columnId]\n if (config) onAggregationChange(columnId, { ...config, enabled: false, functions: [] })\n })\n}\n\nconst hideableLeafColumns = <T,>(table: Table<T>) =>\n table.getAllLeafColumns().filter(c => c.getCanHide?.() !== false)\n\n/** Toolbar \"Aggregations\" dropdown. Renders null without numeric columns or a change handler. */\nexport function AggregationsMenu<T>({ table, aggregations, onAggregationChange }: {\n table: Table<T>\n aggregations: AggregationConfigMap<T>\n onAggregationChange?: (columnId: string, config: AggregationConfig<T>) => void\n}) {\n const aggregatableColumns = hideableLeafColumns(table).filter(column => {\n if (column.id === 'select' || column.id === 'serialNumber') return false\n if ((column.columnDef.meta as { aggregatable?: boolean })?.aggregatable) return true\n // auto-detect numeric columns by sampling\n return table.getRowModel().rows.slice(0, 5).some(row => {\n const value = row.getValue(column.id)\n return typeof value === 'number' ||\n (typeof value === 'string' && !isNaN(parseFloat(String(value)))) ||\n (typeof value === 'object' && value !== null && 'props' in value)\n })\n })\n\n if (aggregatableColumns.length === 0 || !onAggregationChange) return null\n\n const hasAggregations = Object.values(aggregations).some(c => c?.enabled)\n\n const toggleColumn = (columnId: string) => {\n const current = aggregations[columnId]\n onAggregationChange(columnId, {\n enabled: !current?.enabled,\n functions: current?.functions || ['sum', 'average'],\n })\n }\n\n const toggleFunction = (columnId: string, func: AggregationFunction) => {\n const current = aggregations[columnId]?.functions || []\n const next = current.includes(func) ? current.filter(f => f !== func) : [...current, func]\n onAggregationChange(columnId, { enabled: next.length > 0, functions: next })\n }\n\n return (\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <Button variant=\"outline\" size=\"sm\" className=\"gap-1 rounded-lg\">\n <Calculator className=\"size-4\" />\n <span>Aggregations</span>\n <ChevronDown className=\"opacity-50 size-4\" />\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"end\" className=\"w-64 rounded-lg max-h-[500px] overflow-y-auto\">\n <DropdownMenuLabel className=\"flex items-center justify-between px-4 py-2\">\n <span className=\"text-sm font-medium\">Column Aggregations</span>\n {hasAggregations && (\n <Button variant=\"ghost\" size=\"sm\" className=\"h-6 px-2 text-xs\"\n onClick={() => clearAllAggregations(aggregations, onAggregationChange)}>\n Clear All\n </Button>\n )}\n </DropdownMenuLabel>\n <DropdownMenuSeparator />\n\n {aggregatableColumns.map(column => {\n const columnConfig = aggregations[column.id]\n const isEnabled = columnConfig?.enabled\n\n return (\n <DropdownMenuSub key={column.id}>\n <DropdownMenuSubTrigger className=\"text-sm\">\n <div className=\"flex items-center w-full gap-2\">\n <Checkbox\n checked={isEnabled}\n onCheckedChange={() => toggleColumn(column.id)}\n className=\"data-[state=checked]:bg-primary\"\n />\n <span className={cn(\"flex-1\", isEnabled && \"font-medium text-primary\")}>\n {getColumnDisplayName(column.id)}\n </span>\n {isEnabled && (\n <div className=\"flex items-center gap-1\">\n {columnConfig?.functions?.slice(0, 2).map(func => (\n <div key={func} className=\"w-2 h-2 rounded-full bg-primary\"\n title={AGGREGATION_FUNCTIONS.find(f => f.value === func)?.label} />\n ))}\n {columnConfig?.functions && columnConfig.functions.length > 2 && (\n <div className=\"text-xs text-muted-foreground\">\n +{columnConfig.functions.length - 2}\n </div>\n )}\n </div>\n )}\n </div>\n </DropdownMenuSubTrigger>\n <DropdownMenuSubContent className=\"w-48 rounded-lg\">\n <DropdownMenuLabel className=\"px-3 py-2 text-xs font-medium text-muted-foreground\">\n Select Functions\n </DropdownMenuLabel>\n {AGGREGATION_FUNCTIONS.map(func => (\n <DropdownMenuCheckboxItem\n key={func.value}\n checked={columnConfig?.functions?.includes(func.value) || false}\n onCheckedChange={() => toggleFunction(column.id, func.value)}\n className=\"py-2 text-sm\"\n >\n <div className=\"flex flex-col\">\n <span>{func.label}</span>\n <span className=\"text-xs text-muted-foreground\">{func.description}</span>\n </div>\n </DropdownMenuCheckboxItem>\n ))}\n </DropdownMenuSubContent>\n </DropdownMenuSub>\n )\n })}\n </DropdownMenuContent>\n </DropdownMenu>\n )\n}\n\n/** Toolbar \"Columns\" visibility dropdown (grouped columns listed under their group). */\nexport function ColumnVisibilityMenu<T>({ table }: { table: Table<T> }) {\n const leafColumns = hideableLeafColumns(table)\n const groupColumns = table.getAllColumns().filter(column =>\n !table.getAllLeafColumns().includes(column) &&\n column.columns?.length &&\n column.columns.some(col => col.getCanHide?.() !== false)\n )\n const groupedIds = new Set(\n groupColumns.flatMap(g => g.columns?.filter(c => c.getCanHide?.() !== false).map(c => c.id) || [])\n )\n const ungrouped = leafColumns.filter(c => !groupedIds.has(c.id))\n\n return (\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <Button variant=\"outline\" size=\"sm\" className=\"gap-1 rounded-lg\">\n <Columns3 className=\"size-4\" />\n <span>Columns</span>\n <ChevronDown className=\"opacity-50 size-4\" />\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"end\" className=\"w-[220px] rounded-lg max-h-[400px] overflow-y-auto\">\n <DropdownMenuLabel className=\"px-4 py-2 text-sm font-medium\">\n Toggle Columns\n </DropdownMenuLabel>\n <DropdownMenuSeparator />\n\n {ungrouped.length > 0 && (\n <DropdownMenuGroup>\n <DropdownMenuLabel className=\"px-4 py-1.5 text-sm font-medium text-muted-foreground\">\n General\n </DropdownMenuLabel>\n {ungrouped.map(column => (\n <DropdownMenuCheckboxItem\n key={column.id}\n className=\"text-sm\"\n checked={column.getIsVisible()}\n onCheckedChange={(value) => column.toggleVisibility(!!value)}\n >\n {getColumnDisplayName(column.id)}\n </DropdownMenuCheckboxItem>\n ))}\n </DropdownMenuGroup>\n )}\n {groupColumns.map(group => (\n <DropdownMenuGroup key={group.id}>\n <DropdownMenuSeparator />\n <DropdownMenuLabel className=\"px-4 py-1.5 text-sm font-medium text-muted-foreground\">\n {group.id}\n </DropdownMenuLabel>\n {group.columns\n ?.filter(column => column.getCanHide?.() !== false)\n .map(column => (\n <DropdownMenuCheckboxItem\n key={column.id}\n className=\"text-sm\"\n checked={column.getIsVisible()}\n onCheckedChange={(value) => column.toggleVisibility(!!value)}\n >\n {getColumnDisplayName(column.id, group.id)}\n </DropdownMenuCheckboxItem>\n ))}\n </DropdownMenuGroup>\n ))}\n </DropdownMenuContent>\n </DropdownMenu>\n )\n}\n","import * as React from \"react\"\nimport { Slot as SlotPrimitive } from \"radix-ui\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"../../lib/utils.js\"\n\nconst buttonVariants = cva(\n \"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-[color,box-shadow] disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive\",\n {\n variants: {\n variant: {\n default:\n \"bg-primary text-primary-foreground shadow-xs hover:bg-primary/90\",\n destructive:\n \"bg-destructive text-white shadow-xs hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60\",\n outline:\n \"border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50 dark:focus-visible:border-ring\",\n secondary:\n \"bg-secondary text-secondary-foreground shadow-xs hover:bg-secondary/80\",\n ghost:\n \"hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50\",\n link: \"text-primary underline-offset-4 hover:underline\",\n },\n size: {\n default: \"h-9 px-4 py-2 has-[>svg]:px-3\",\n sm: \"h-8 rounded-md gap-1.5 px-3 has-[>svg]:px-2.5\",\n lg: \"h-10 rounded-md px-6 has-[>svg]:px-4\",\n icon: \"size-9\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n)\n\nfunction Button({\n className,\n variant,\n size,\n asChild = false,\n ...props\n}: React.ComponentProps<\"button\"> &\n VariantProps<typeof buttonVariants> & {\n asChild?: boolean\n }) {\n const Comp = asChild ? SlotPrimitive.Slot : \"button\"\n\n return (\n <Comp\n data-slot=\"button\"\n className={cn(buttonVariants({ variant, size, className }))}\n {...props}\n />\n )\n}\n\nexport { Button, buttonVariants }\n","import { clsx, type ClassValue } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}","import * as React from \"react\"\nimport { Checkbox as CheckboxPrimitive } from \"radix-ui\"\nimport { CheckIcon } from \"lucide-react\"\n\nimport { cn } from \"../../lib/utils.js\"\n\nfunction Checkbox({\n className,\n ...props\n}: React.ComponentProps<typeof CheckboxPrimitive.Root>) {\n return (\n <CheckboxPrimitive.Root\n data-slot=\"checkbox\"\n className={cn(\n \"peer border-input dark:bg-input/30 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground dark:data-[state=checked]:bg-primary data-[state=checked]:border-primary focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive size-4 shrink-0 rounded-[4px] border shadow-xs transition-shadow outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50\",\n className\n )}\n {...props}\n >\n <CheckboxPrimitive.Indicator\n data-slot=\"checkbox-indicator\"\n className=\"flex items-center justify-center text-current transition-none\"\n >\n <CheckIcon className=\"size-3.5\" />\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n )\n}\n\nexport { Checkbox }\n","import * as React from \"react\"\nimport { DropdownMenu as DropdownMenuPrimitive } from \"radix-ui\"\nimport { CheckIcon, ChevronRightIcon, CircleIcon } from \"lucide-react\"\n\nimport { cn } from \"../../lib/utils.js\"\n\nfunction DropdownMenu({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Root>) {\n return <DropdownMenuPrimitive.Root data-slot=\"dropdown-menu\" {...props} />\n}\n\nfunction DropdownMenuPortal({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Portal>) {\n return (\n <DropdownMenuPrimitive.Portal data-slot=\"dropdown-menu-portal\" {...props} />\n )\n}\n\nfunction DropdownMenuTrigger({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Trigger>) {\n return (\n <DropdownMenuPrimitive.Trigger\n data-slot=\"dropdown-menu-trigger\"\n {...props}\n />\n )\n}\n\nfunction DropdownMenuContent({\n className,\n sideOffset = 4,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Content>) {\n return (\n <DropdownMenuPrimitive.Portal>\n <DropdownMenuPrimitive.Content\n data-slot=\"dropdown-menu-content\"\n sideOffset={sideOffset}\n className={cn(\n \"bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 max-h-(--radix-dropdown-menu-content-available-height) min-w-[8rem] origin-(--radix-dropdown-menu-content-transform-origin) rounded-md border p-1 shadow-md\",\n className\n )}\n {...props}\n />\n </DropdownMenuPrimitive.Portal>\n )\n}\n\nfunction DropdownMenuGroup({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Group>) {\n return (\n <DropdownMenuPrimitive.Group data-slot=\"dropdown-menu-group\" {...props} />\n )\n}\n\nfunction DropdownMenuItem({\n className,\n inset,\n variant = \"default\",\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Item> & {\n inset?: boolean\n variant?: \"default\" | \"destructive\"\n}) {\n return (\n <DropdownMenuPrimitive.Item\n data-slot=\"dropdown-menu-item\"\n data-inset={inset}\n data-variant={variant}\n className={cn(\n \"cursor-pointer focus:bg-accent focus:text-accent-foreground data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 dark:data-[variant=destructive]:focus:bg-destructive/20 data-[variant=destructive]:focus:text-destructive data-[variant=destructive]:*:[svg]:!text-destructive [&_svg:not([class*='text-'])]:text-muted-foreground relative flex items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction DropdownMenuCheckboxItem({\n className,\n children,\n checked,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.CheckboxItem>) {\n return (\n <DropdownMenuPrimitive.CheckboxItem\n data-slot=\"dropdown-menu-checkbox-item\"\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n checked={checked}\n {...props}\n >\n <span className=\"pointer-events-none absolute left-2 flex size-3.5 items-center justify-center\">\n <DropdownMenuPrimitive.ItemIndicator>\n <CheckIcon className=\"size-4\" />\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </DropdownMenuPrimitive.CheckboxItem>\n )\n}\n\nfunction DropdownMenuRadioGroup({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.RadioGroup>) {\n return (\n <DropdownMenuPrimitive.RadioGroup\n data-slot=\"dropdown-menu-radio-group\"\n {...props}\n />\n )\n}\n\nfunction DropdownMenuRadioItem({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.RadioItem>) {\n return (\n <DropdownMenuPrimitive.RadioItem\n data-slot=\"dropdown-menu-radio-item\"\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n {...props}\n >\n <span className=\"pointer-events-none absolute left-2 flex size-3.5 items-center justify-center\">\n <DropdownMenuPrimitive.ItemIndicator>\n <CircleIcon className=\"size-2 fill-current\" />\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </DropdownMenuPrimitive.RadioItem>\n )\n}\n\nfunction DropdownMenuLabel({\n className,\n inset,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Label> & {\n inset?: boolean\n}) {\n return (\n <DropdownMenuPrimitive.Label\n data-slot=\"dropdown-menu-label\"\n data-inset={inset}\n className={cn(\n \"px-2 py-1.5 text-sm font-medium data-[inset]:pl-8\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction DropdownMenuSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Separator>) {\n return (\n <DropdownMenuPrimitive.Separator\n data-slot=\"dropdown-menu-separator\"\n className={cn(\"bg-border -mx-1 my-1 h-px\", className)}\n {...props}\n />\n )\n}\n\nfunction DropdownMenuShortcut({\n className,\n ...props\n}: React.ComponentProps<\"span\">) {\n return (\n <span\n data-slot=\"dropdown-menu-shortcut\"\n className={cn(\n \"text-muted-foreground ml-auto text-xs tracking-widest\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction DropdownMenuSub({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Sub>) {\n return <DropdownMenuPrimitive.Sub data-slot=\"dropdown-menu-sub\" {...props} />\n}\n\nfunction DropdownMenuSubTrigger({\n className,\n inset,\n children,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.SubTrigger> & {\n inset?: boolean\n}) {\n return (\n <DropdownMenuPrimitive.SubTrigger\n data-slot=\"dropdown-menu-sub-trigger\"\n data-inset={inset}\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground flex cursor-default items-center rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[inset]:pl-8\",\n className\n )}\n {...props}\n >\n {children}\n <ChevronRightIcon className=\"ml-auto size-4\" />\n </DropdownMenuPrimitive.SubTrigger>\n )\n}\n\nfunction DropdownMenuSubContent({\n className,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.SubContent>) {\n return (\n <DropdownMenuPrimitive.SubContent\n data-slot=\"dropdown-menu-sub-content\"\n className={cn(\n \"bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 min-w-[8rem] origin-(--radix-dropdown-menu-content-transform-origin) overflow-hidden rounded-md border p-1 shadow-lg\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport {\n DropdownMenu,\n DropdownMenuPortal,\n DropdownMenuTrigger,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuLabel,\n DropdownMenuItem,\n DropdownMenuCheckboxItem,\n DropdownMenuRadioGroup,\n DropdownMenuRadioItem,\n DropdownMenuSeparator,\n DropdownMenuShortcut,\n DropdownMenuSub,\n DropdownMenuSubTrigger,\n DropdownMenuSubContent,\n}\n"],"mappings":"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","names":["data_table_toolbar_menus_exports","__export","AggregationsMenu","ColumnVisibilityMenu","clearAllAggregations","getColumnDisplayName","__toCommonJS","import_lucide_react","import_radix_ui","import_class_variance_authority","import_clsx","import_tailwind_merge","cn","inputs","import_jsx_runtime","buttonVariants","Button","className","variant","size","asChild","props","Comp","SlotPrimitive","cn","import_radix_ui","import_lucide_react","import_jsx_runtime","Checkbox","className","props","CheckboxPrimitive","cn","import_radix_ui","import_lucide_react","import_jsx_runtime","DropdownMenu","props","DropdownMenuPrimitive","DropdownMenuTrigger","props","DropdownMenuPrimitive","DropdownMenuContent","className","sideOffset","cn","DropdownMenuGroup","DropdownMenuCheckboxItem","className","children","checked","props","DropdownMenuPrimitive","cn","DropdownMenuLabel","className","inset","props","DropdownMenuPrimitive","cn","DropdownMenuSeparator","DropdownMenuSub","props","DropdownMenuPrimitive","DropdownMenuSubTrigger","className","inset","children","cn","DropdownMenuSubContent","import_jsx_runtime","AGGREGATION_FUNCTIONS","getColumnDisplayName","columnId","groupName","w","clearAllAggregations","aggregations","onAggregationChange","config","hideableLeafColumns","table","c","AggregationsMenu","aggregatableColumns","column","row","value","hasAggregations","toggleColumn","current","toggleFunction","func","next","f","DropdownMenu","DropdownMenuTrigger","Button","DropdownMenuContent","DropdownMenuLabel","DropdownMenuSeparator","columnConfig","isEnabled","DropdownMenuSub","DropdownMenuSubTrigger","Checkbox","cn","DropdownMenuSubContent","DropdownMenuCheckboxItem","ColumnVisibilityMenu","leafColumns","groupColumns","col","groupedIds","g","ungrouped","DropdownMenuGroup","group"]}
@@ -0,0 +1,21 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import { Table } from '@tanstack/react-table';
3
+ import { AggregationConfigMap, AggregationConfig } from './data-table-types.cjs';
4
+ import 'lucide-react';
5
+ import './data-table-persist.cjs';
6
+ import './data-table-export.cjs';
7
+
8
+ declare const getColumnDisplayName: (columnId: string, groupName?: string) => string;
9
+ declare function clearAllAggregations<T>(aggregations: AggregationConfigMap<T>, onAggregationChange?: (columnId: string, config: AggregationConfig<T>) => void): void;
10
+ /** Toolbar "Aggregations" dropdown. Renders null without numeric columns or a change handler. */
11
+ declare function AggregationsMenu<T>({ table, aggregations, onAggregationChange }: {
12
+ table: Table<T>;
13
+ aggregations: AggregationConfigMap<T>;
14
+ onAggregationChange?: (columnId: string, config: AggregationConfig<T>) => void;
15
+ }): react_jsx_runtime.JSX.Element | null;
16
+ /** Toolbar "Columns" visibility dropdown (grouped columns listed under their group). */
17
+ declare function ColumnVisibilityMenu<T>({ table }: {
18
+ table: Table<T>;
19
+ }): react_jsx_runtime.JSX.Element;
20
+
21
+ export { AggregationsMenu, ColumnVisibilityMenu, clearAllAggregations, getColumnDisplayName };
@@ -0,0 +1,21 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import { Table } from '@tanstack/react-table';
3
+ import { AggregationConfigMap, AggregationConfig } from './data-table-types.js';
4
+ import 'lucide-react';
5
+ import './data-table-persist.js';
6
+ import './data-table-export.js';
7
+
8
+ declare const getColumnDisplayName: (columnId: string, groupName?: string) => string;
9
+ declare function clearAllAggregations<T>(aggregations: AggregationConfigMap<T>, onAggregationChange?: (columnId: string, config: AggregationConfig<T>) => void): void;
10
+ /** Toolbar "Aggregations" dropdown. Renders null without numeric columns or a change handler. */
11
+ declare function AggregationsMenu<T>({ table, aggregations, onAggregationChange }: {
12
+ table: Table<T>;
13
+ aggregations: AggregationConfigMap<T>;
14
+ onAggregationChange?: (columnId: string, config: AggregationConfig<T>) => void;
15
+ }): react_jsx_runtime.JSX.Element | null;
16
+ /** Toolbar "Columns" visibility dropdown (grouped columns listed under their group). */
17
+ declare function ColumnVisibilityMenu<T>({ table }: {
18
+ table: Table<T>;
19
+ }): react_jsx_runtime.JSX.Element;
20
+
21
+ export { AggregationsMenu, ColumnVisibilityMenu, clearAllAggregations, getColumnDisplayName };
@@ -0,0 +1,3 @@
1
+ "use client"
2
+ import{Calculator as q,ChevronDown as _,Columns3 as $}from"lucide-react";import{Slot as F}from"radix-ui";import{cva as j}from"class-variance-authority";import{clsx as L}from"clsx";import{twMerge as V}from"tailwind-merge";function p(...e){return V(L(e))}import{jsx as O}from"react/jsx-runtime";var B=j("inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-[color,box-shadow] disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive",{variants:{variant:{default:"bg-primary text-primary-foreground shadow-xs hover:bg-primary/90",destructive:"bg-destructive text-white shadow-xs hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60",outline:"border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50 dark:focus-visible:border-ring",secondary:"bg-secondary text-secondary-foreground shadow-xs hover:bg-secondary/80",ghost:"hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-9 px-4 py-2 has-[>svg]:px-3",sm:"h-8 rounded-md gap-1.5 px-3 has-[>svg]:px-2.5",lg:"h-10 rounded-md px-6 has-[>svg]:px-4",icon:"size-9"}},defaultVariants:{variant:"default",size:"default"}});function v({className:e,variant:t,size:n,asChild:i=!1,...f}){let a=i?F.Slot:"button";return O(a,{"data-slot":"button",className:p(B({variant:t,size:n,className:e})),...f})}import{Checkbox as P}from"radix-ui";import{CheckIcon as H}from"lucide-react";import{jsx as C}from"react/jsx-runtime";function R({className:e,...t}){return C(P.Root,{"data-slot":"checkbox",className:p("peer border-input dark:bg-input/30 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground dark:data-[state=checked]:bg-primary data-[state=checked]:border-primary focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive size-4 shrink-0 rounded-[4px] border shadow-xs transition-shadow outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50",e),...t,children:C(P.Indicator,{"data-slot":"checkbox-indicator",className:"flex items-center justify-center text-current transition-none",children:C(H,{className:"size-3.5"})})})}import{DropdownMenu as m}from"radix-ui";import{CheckIcon as E,ChevronRightIcon as U,CircleIcon as ue}from"lucide-react";import{jsx as c,jsxs as S}from"react/jsx-runtime";function M({...e}){return c(m.Root,{"data-slot":"dropdown-menu",...e})}function y({...e}){return c(m.Trigger,{"data-slot":"dropdown-menu-trigger",...e})}function D({className:e,sideOffset:t=4,...n}){return c(m.Portal,{children:c(m.Content,{"data-slot":"dropdown-menu-content",sideOffset:t,className:p("bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 max-h-(--radix-dropdown-menu-content-available-height) min-w-[8rem] origin-(--radix-dropdown-menu-content-transform-origin) rounded-md border p-1 shadow-md",e),...n})})}function k({...e}){return c(m.Group,{"data-slot":"dropdown-menu-group",...e})}function x({className:e,children:t,checked:n,...i}){return S(m.CheckboxItem,{"data-slot":"dropdown-menu-checkbox-item",className:p("focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",e),checked:n,...i,children:[c("span",{className:"pointer-events-none absolute left-2 flex size-3.5 items-center justify-center",children:c(m.ItemIndicator,{children:c(E,{className:"size-4"})})}),t]})}function b({className:e,inset:t,...n}){return c(m.Label,{"data-slot":"dropdown-menu-label","data-inset":t,className:p("px-2 py-1.5 text-sm font-medium data-[inset]:pl-8",e),...n})}function w({className:e,...t}){return c(m.Separator,{"data-slot":"dropdown-menu-separator",className:p("bg-border -mx-1 my-1 h-px",e),...t})}function z({...e}){return c(m.Sub,{"data-slot":"dropdown-menu-sub",...e})}function I({className:e,inset:t,children:n,...i}){return S(m.SubTrigger,{"data-slot":"dropdown-menu-sub-trigger","data-inset":t,className:p("focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground flex cursor-default items-center rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[inset]:pl-8",e),...i,children:[n,c(U,{className:"ml-auto size-4"})]})}function T({className:e,...t}){return c(m.SubContent,{"data-slot":"dropdown-menu-sub-content",className:p("bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 min-w-[8rem] origin-(--radix-dropdown-menu-content-transform-origin) overflow-hidden rounded-md border p-1 shadow-lg",e),...t})}import{jsx as o,jsxs as u}from"react/jsx-runtime";var A=[{value:"sum",label:"Sum",description:"Total of all values"},{value:"average",label:"Average",description:"Mean value"},{value:"min",label:"Minimum",description:"Smallest value"},{value:"max",label:"Maximum",description:"Largest value"},{value:"count",label:"Count",description:"Number of rows"},{value:"unique",label:"Unique",description:"Count of distinct values"},{value:"median",label:"Median",description:"Middle value"}],N=(e,t)=>(t&&e.startsWith(`${t}.`)?e.replace(`${t}.`,""):e).split("_").map(i=>i.charAt(0).toUpperCase()+i.slice(1)).join(" ");function W(e,t){t&&Object.keys(e).forEach(n=>{let i=e[n];i&&t(n,{...i,enabled:!1,functions:[]})})}var G=e=>e.getAllLeafColumns().filter(t=>t.getCanHide?.()!==!1);function xe({table:e,aggregations:t,onAggregationChange:n}){let i=G(e).filter(r=>r.id==="select"||r.id==="serialNumber"?!1:r.columnDef.meta?.aggregatable?!0:e.getRowModel().rows.slice(0,5).some(d=>{let l=d.getValue(r.id);return typeof l=="number"||typeof l=="string"&&!isNaN(parseFloat(String(l)))||typeof l=="object"&&l!==null&&"props"in l}));if(i.length===0||!n)return null;let f=Object.values(t).some(r=>r?.enabled),a=r=>{let d=t[r];n(r,{enabled:!d?.enabled,functions:d?.functions||["sum","average"]})},s=(r,d)=>{let l=t[r]?.functions||[],g=l.includes(d)?l.filter(h=>h!==d):[...l,d];n(r,{enabled:g.length>0,functions:g})};return u(M,{children:[o(y,{asChild:!0,children:u(v,{variant:"outline",size:"sm",className:"gap-1 rounded-lg",children:[o(q,{className:"size-4"}),o("span",{children:"Aggregations"}),o(_,{className:"opacity-50 size-4"})]})}),u(D,{align:"end",className:"w-64 rounded-lg max-h-[500px] overflow-y-auto",children:[u(b,{className:"flex items-center justify-between px-4 py-2",children:[o("span",{className:"text-sm font-medium",children:"Column Aggregations"}),f&&o(v,{variant:"ghost",size:"sm",className:"h-6 px-2 text-xs",onClick:()=>W(t,n),children:"Clear All"})]}),o(w,{}),i.map(r=>{let d=t[r.id],l=d?.enabled;return u(z,{children:[o(I,{className:"text-sm",children:u("div",{className:"flex items-center w-full gap-2",children:[o(R,{checked:l,onCheckedChange:()=>a(r.id),className:"data-[state=checked]:bg-primary"}),o("span",{className:p("flex-1",l&&"font-medium text-primary"),children:N(r.id)}),l&&u("div",{className:"flex items-center gap-1",children:[d?.functions?.slice(0,2).map(g=>o("div",{className:"w-2 h-2 rounded-full bg-primary",title:A.find(h=>h.value===g)?.label},g)),d?.functions&&d.functions.length>2&&u("div",{className:"text-xs text-muted-foreground",children:["+",d.functions.length-2]})]})]})}),u(T,{className:"w-48 rounded-lg",children:[o(b,{className:"px-3 py-2 text-xs font-medium text-muted-foreground",children:"Select Functions"}),A.map(g=>o(x,{checked:d?.functions?.includes(g.value)||!1,onCheckedChange:()=>s(r.id,g.value),className:"py-2 text-sm",children:u("div",{className:"flex flex-col",children:[o("span",{children:g.label}),o("span",{className:"text-xs text-muted-foreground",children:g.description})]})},g.value))]})]},r.id)})]})]})}function we({table:e}){let t=G(e),n=e.getAllColumns().filter(a=>!e.getAllLeafColumns().includes(a)&&a.columns?.length&&a.columns.some(s=>s.getCanHide?.()!==!1)),i=new Set(n.flatMap(a=>a.columns?.filter(s=>s.getCanHide?.()!==!1).map(s=>s.id)||[])),f=t.filter(a=>!i.has(a.id));return u(M,{children:[o(y,{asChild:!0,children:u(v,{variant:"outline",size:"sm",className:"gap-1 rounded-lg",children:[o($,{className:"size-4"}),o("span",{children:"Columns"}),o(_,{className:"opacity-50 size-4"})]})}),u(D,{align:"end",className:"w-[220px] rounded-lg max-h-[400px] overflow-y-auto",children:[o(b,{className:"px-4 py-2 text-sm font-medium",children:"Toggle Columns"}),o(w,{}),f.length>0&&u(k,{children:[o(b,{className:"px-4 py-1.5 text-sm font-medium text-muted-foreground",children:"General"}),f.map(a=>o(x,{className:"text-sm",checked:a.getIsVisible(),onCheckedChange:s=>a.toggleVisibility(!!s),children:N(a.id)},a.id))]}),n.map(a=>u(k,{children:[o(w,{}),o(b,{className:"px-4 py-1.5 text-sm font-medium text-muted-foreground",children:a.id}),a.columns?.filter(s=>s.getCanHide?.()!==!1).map(s=>o(x,{className:"text-sm",checked:s.getIsVisible(),onCheckedChange:r=>s.toggleVisibility(!!r),children:N(s.id,a.id)},s.id))]},a.id))]})]})}export{xe as AggregationsMenu,we as ColumnVisibilityMenu,W as clearAllAggregations,N as getColumnDisplayName};
3
+ //# sourceMappingURL=data-table-toolbar-menus.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/components/data/data-table/data-table-toolbar-menus.tsx","../../../../src/components/ui/button.tsx","../../../../src/lib/utils.ts","../../../../src/components/ui/checkbox.tsx","../../../../src/components/ui/dropdown-menu.tsx"],"sourcesContent":["import { Calculator, ChevronDown, Columns3 } from \"lucide-react\"\nimport type { Table } from \"@tanstack/react-table\"\nimport { Button } from \"../../ui/button.jsx\"\nimport { Checkbox } from \"../../ui/checkbox.jsx\"\nimport {\n DropdownMenu,\n DropdownMenuCheckboxItem,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuLabel,\n DropdownMenuSeparator,\n DropdownMenuSub,\n DropdownMenuSubContent,\n DropdownMenuSubTrigger,\n DropdownMenuTrigger,\n} from \"../../ui/dropdown-menu.jsx\"\nimport { cn } from \"../../../lib/utils.js\"\nimport type { AggregationConfig, AggregationConfigMap, AggregationFunction } from \"./data-table-types.js\"\n\nconst AGGREGATION_FUNCTIONS: { value: AggregationFunction; label: string; description: string }[] = [\n { value: 'sum', label: 'Sum', description: 'Total of all values' },\n { value: 'average', label: 'Average', description: 'Mean value' },\n { value: 'min', label: 'Minimum', description: 'Smallest value' },\n { value: 'max', label: 'Maximum', description: 'Largest value' },\n { value: 'count', label: 'Count', description: 'Number of rows' },\n { value: 'unique', label: 'Unique', description: 'Count of distinct values' },\n { value: 'median', label: 'Median', description: 'Middle value' },\n]\n\nexport const getColumnDisplayName = (columnId: string, groupName?: string) => {\n const id = groupName && columnId.startsWith(`${groupName}.`)\n ? columnId.replace(`${groupName}.`, '')\n : columnId\n return id.split('_').map(w => w.charAt(0).toUpperCase() + w.slice(1)).join(' ')\n}\n\nexport function clearAllAggregations<T>(\n aggregations: AggregationConfigMap<T>,\n onAggregationChange?: (columnId: string, config: AggregationConfig<T>) => void,\n) {\n if (!onAggregationChange) return\n Object.keys(aggregations).forEach(columnId => {\n const config = aggregations[columnId]\n if (config) onAggregationChange(columnId, { ...config, enabled: false, functions: [] })\n })\n}\n\nconst hideableLeafColumns = <T,>(table: Table<T>) =>\n table.getAllLeafColumns().filter(c => c.getCanHide?.() !== false)\n\n/** Toolbar \"Aggregations\" dropdown. Renders null without numeric columns or a change handler. */\nexport function AggregationsMenu<T>({ table, aggregations, onAggregationChange }: {\n table: Table<T>\n aggregations: AggregationConfigMap<T>\n onAggregationChange?: (columnId: string, config: AggregationConfig<T>) => void\n}) {\n const aggregatableColumns = hideableLeafColumns(table).filter(column => {\n if (column.id === 'select' || column.id === 'serialNumber') return false\n if ((column.columnDef.meta as { aggregatable?: boolean })?.aggregatable) return true\n // auto-detect numeric columns by sampling\n return table.getRowModel().rows.slice(0, 5).some(row => {\n const value = row.getValue(column.id)\n return typeof value === 'number' ||\n (typeof value === 'string' && !isNaN(parseFloat(String(value)))) ||\n (typeof value === 'object' && value !== null && 'props' in value)\n })\n })\n\n if (aggregatableColumns.length === 0 || !onAggregationChange) return null\n\n const hasAggregations = Object.values(aggregations).some(c => c?.enabled)\n\n const toggleColumn = (columnId: string) => {\n const current = aggregations[columnId]\n onAggregationChange(columnId, {\n enabled: !current?.enabled,\n functions: current?.functions || ['sum', 'average'],\n })\n }\n\n const toggleFunction = (columnId: string, func: AggregationFunction) => {\n const current = aggregations[columnId]?.functions || []\n const next = current.includes(func) ? current.filter(f => f !== func) : [...current, func]\n onAggregationChange(columnId, { enabled: next.length > 0, functions: next })\n }\n\n return (\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <Button variant=\"outline\" size=\"sm\" className=\"gap-1 rounded-lg\">\n <Calculator className=\"size-4\" />\n <span>Aggregations</span>\n <ChevronDown className=\"opacity-50 size-4\" />\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"end\" className=\"w-64 rounded-lg max-h-[500px] overflow-y-auto\">\n <DropdownMenuLabel className=\"flex items-center justify-between px-4 py-2\">\n <span className=\"text-sm font-medium\">Column Aggregations</span>\n {hasAggregations && (\n <Button variant=\"ghost\" size=\"sm\" className=\"h-6 px-2 text-xs\"\n onClick={() => clearAllAggregations(aggregations, onAggregationChange)}>\n Clear All\n </Button>\n )}\n </DropdownMenuLabel>\n <DropdownMenuSeparator />\n\n {aggregatableColumns.map(column => {\n const columnConfig = aggregations[column.id]\n const isEnabled = columnConfig?.enabled\n\n return (\n <DropdownMenuSub key={column.id}>\n <DropdownMenuSubTrigger className=\"text-sm\">\n <div className=\"flex items-center w-full gap-2\">\n <Checkbox\n checked={isEnabled}\n onCheckedChange={() => toggleColumn(column.id)}\n className=\"data-[state=checked]:bg-primary\"\n />\n <span className={cn(\"flex-1\", isEnabled && \"font-medium text-primary\")}>\n {getColumnDisplayName(column.id)}\n </span>\n {isEnabled && (\n <div className=\"flex items-center gap-1\">\n {columnConfig?.functions?.slice(0, 2).map(func => (\n <div key={func} className=\"w-2 h-2 rounded-full bg-primary\"\n title={AGGREGATION_FUNCTIONS.find(f => f.value === func)?.label} />\n ))}\n {columnConfig?.functions && columnConfig.functions.length > 2 && (\n <div className=\"text-xs text-muted-foreground\">\n +{columnConfig.functions.length - 2}\n </div>\n )}\n </div>\n )}\n </div>\n </DropdownMenuSubTrigger>\n <DropdownMenuSubContent className=\"w-48 rounded-lg\">\n <DropdownMenuLabel className=\"px-3 py-2 text-xs font-medium text-muted-foreground\">\n Select Functions\n </DropdownMenuLabel>\n {AGGREGATION_FUNCTIONS.map(func => (\n <DropdownMenuCheckboxItem\n key={func.value}\n checked={columnConfig?.functions?.includes(func.value) || false}\n onCheckedChange={() => toggleFunction(column.id, func.value)}\n className=\"py-2 text-sm\"\n >\n <div className=\"flex flex-col\">\n <span>{func.label}</span>\n <span className=\"text-xs text-muted-foreground\">{func.description}</span>\n </div>\n </DropdownMenuCheckboxItem>\n ))}\n </DropdownMenuSubContent>\n </DropdownMenuSub>\n )\n })}\n </DropdownMenuContent>\n </DropdownMenu>\n )\n}\n\n/** Toolbar \"Columns\" visibility dropdown (grouped columns listed under their group). */\nexport function ColumnVisibilityMenu<T>({ table }: { table: Table<T> }) {\n const leafColumns = hideableLeafColumns(table)\n const groupColumns = table.getAllColumns().filter(column =>\n !table.getAllLeafColumns().includes(column) &&\n column.columns?.length &&\n column.columns.some(col => col.getCanHide?.() !== false)\n )\n const groupedIds = new Set(\n groupColumns.flatMap(g => g.columns?.filter(c => c.getCanHide?.() !== false).map(c => c.id) || [])\n )\n const ungrouped = leafColumns.filter(c => !groupedIds.has(c.id))\n\n return (\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <Button variant=\"outline\" size=\"sm\" className=\"gap-1 rounded-lg\">\n <Columns3 className=\"size-4\" />\n <span>Columns</span>\n <ChevronDown className=\"opacity-50 size-4\" />\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"end\" className=\"w-[220px] rounded-lg max-h-[400px] overflow-y-auto\">\n <DropdownMenuLabel className=\"px-4 py-2 text-sm font-medium\">\n Toggle Columns\n </DropdownMenuLabel>\n <DropdownMenuSeparator />\n\n {ungrouped.length > 0 && (\n <DropdownMenuGroup>\n <DropdownMenuLabel className=\"px-4 py-1.5 text-sm font-medium text-muted-foreground\">\n General\n </DropdownMenuLabel>\n {ungrouped.map(column => (\n <DropdownMenuCheckboxItem\n key={column.id}\n className=\"text-sm\"\n checked={column.getIsVisible()}\n onCheckedChange={(value) => column.toggleVisibility(!!value)}\n >\n {getColumnDisplayName(column.id)}\n </DropdownMenuCheckboxItem>\n ))}\n </DropdownMenuGroup>\n )}\n {groupColumns.map(group => (\n <DropdownMenuGroup key={group.id}>\n <DropdownMenuSeparator />\n <DropdownMenuLabel className=\"px-4 py-1.5 text-sm font-medium text-muted-foreground\">\n {group.id}\n </DropdownMenuLabel>\n {group.columns\n ?.filter(column => column.getCanHide?.() !== false)\n .map(column => (\n <DropdownMenuCheckboxItem\n key={column.id}\n className=\"text-sm\"\n checked={column.getIsVisible()}\n onCheckedChange={(value) => column.toggleVisibility(!!value)}\n >\n {getColumnDisplayName(column.id, group.id)}\n </DropdownMenuCheckboxItem>\n ))}\n </DropdownMenuGroup>\n ))}\n </DropdownMenuContent>\n </DropdownMenu>\n )\n}\n","import * as React from \"react\"\nimport { Slot as SlotPrimitive } from \"radix-ui\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"../../lib/utils.js\"\n\nconst buttonVariants = cva(\n \"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-[color,box-shadow] disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive\",\n {\n variants: {\n variant: {\n default:\n \"bg-primary text-primary-foreground shadow-xs hover:bg-primary/90\",\n destructive:\n \"bg-destructive text-white shadow-xs hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60\",\n outline:\n \"border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50 dark:focus-visible:border-ring\",\n secondary:\n \"bg-secondary text-secondary-foreground shadow-xs hover:bg-secondary/80\",\n ghost:\n \"hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50\",\n link: \"text-primary underline-offset-4 hover:underline\",\n },\n size: {\n default: \"h-9 px-4 py-2 has-[>svg]:px-3\",\n sm: \"h-8 rounded-md gap-1.5 px-3 has-[>svg]:px-2.5\",\n lg: \"h-10 rounded-md px-6 has-[>svg]:px-4\",\n icon: \"size-9\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n)\n\nfunction Button({\n className,\n variant,\n size,\n asChild = false,\n ...props\n}: React.ComponentProps<\"button\"> &\n VariantProps<typeof buttonVariants> & {\n asChild?: boolean\n }) {\n const Comp = asChild ? SlotPrimitive.Slot : \"button\"\n\n return (\n <Comp\n data-slot=\"button\"\n className={cn(buttonVariants({ variant, size, className }))}\n {...props}\n />\n )\n}\n\nexport { Button, buttonVariants }\n","import { clsx, type ClassValue } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}","import * as React from \"react\"\nimport { Checkbox as CheckboxPrimitive } from \"radix-ui\"\nimport { CheckIcon } from \"lucide-react\"\n\nimport { cn } from \"../../lib/utils.js\"\n\nfunction Checkbox({\n className,\n ...props\n}: React.ComponentProps<typeof CheckboxPrimitive.Root>) {\n return (\n <CheckboxPrimitive.Root\n data-slot=\"checkbox\"\n className={cn(\n \"peer border-input dark:bg-input/30 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground dark:data-[state=checked]:bg-primary data-[state=checked]:border-primary focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive size-4 shrink-0 rounded-[4px] border shadow-xs transition-shadow outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50\",\n className\n )}\n {...props}\n >\n <CheckboxPrimitive.Indicator\n data-slot=\"checkbox-indicator\"\n className=\"flex items-center justify-center text-current transition-none\"\n >\n <CheckIcon className=\"size-3.5\" />\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n )\n}\n\nexport { Checkbox }\n","import * as React from \"react\"\nimport { DropdownMenu as DropdownMenuPrimitive } from \"radix-ui\"\nimport { CheckIcon, ChevronRightIcon, CircleIcon } from \"lucide-react\"\n\nimport { cn } from \"../../lib/utils.js\"\n\nfunction DropdownMenu({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Root>) {\n return <DropdownMenuPrimitive.Root data-slot=\"dropdown-menu\" {...props} />\n}\n\nfunction DropdownMenuPortal({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Portal>) {\n return (\n <DropdownMenuPrimitive.Portal data-slot=\"dropdown-menu-portal\" {...props} />\n )\n}\n\nfunction DropdownMenuTrigger({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Trigger>) {\n return (\n <DropdownMenuPrimitive.Trigger\n data-slot=\"dropdown-menu-trigger\"\n {...props}\n />\n )\n}\n\nfunction DropdownMenuContent({\n className,\n sideOffset = 4,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Content>) {\n return (\n <DropdownMenuPrimitive.Portal>\n <DropdownMenuPrimitive.Content\n data-slot=\"dropdown-menu-content\"\n sideOffset={sideOffset}\n className={cn(\n \"bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 max-h-(--radix-dropdown-menu-content-available-height) min-w-[8rem] origin-(--radix-dropdown-menu-content-transform-origin) rounded-md border p-1 shadow-md\",\n className\n )}\n {...props}\n />\n </DropdownMenuPrimitive.Portal>\n )\n}\n\nfunction DropdownMenuGroup({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Group>) {\n return (\n <DropdownMenuPrimitive.Group data-slot=\"dropdown-menu-group\" {...props} />\n )\n}\n\nfunction DropdownMenuItem({\n className,\n inset,\n variant = \"default\",\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Item> & {\n inset?: boolean\n variant?: \"default\" | \"destructive\"\n}) {\n return (\n <DropdownMenuPrimitive.Item\n data-slot=\"dropdown-menu-item\"\n data-inset={inset}\n data-variant={variant}\n className={cn(\n \"cursor-pointer focus:bg-accent focus:text-accent-foreground data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 dark:data-[variant=destructive]:focus:bg-destructive/20 data-[variant=destructive]:focus:text-destructive data-[variant=destructive]:*:[svg]:!text-destructive [&_svg:not([class*='text-'])]:text-muted-foreground relative flex items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction DropdownMenuCheckboxItem({\n className,\n children,\n checked,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.CheckboxItem>) {\n return (\n <DropdownMenuPrimitive.CheckboxItem\n data-slot=\"dropdown-menu-checkbox-item\"\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n checked={checked}\n {...props}\n >\n <span className=\"pointer-events-none absolute left-2 flex size-3.5 items-center justify-center\">\n <DropdownMenuPrimitive.ItemIndicator>\n <CheckIcon className=\"size-4\" />\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </DropdownMenuPrimitive.CheckboxItem>\n )\n}\n\nfunction DropdownMenuRadioGroup({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.RadioGroup>) {\n return (\n <DropdownMenuPrimitive.RadioGroup\n data-slot=\"dropdown-menu-radio-group\"\n {...props}\n />\n )\n}\n\nfunction DropdownMenuRadioItem({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.RadioItem>) {\n return (\n <DropdownMenuPrimitive.RadioItem\n data-slot=\"dropdown-menu-radio-item\"\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n {...props}\n >\n <span className=\"pointer-events-none absolute left-2 flex size-3.5 items-center justify-center\">\n <DropdownMenuPrimitive.ItemIndicator>\n <CircleIcon className=\"size-2 fill-current\" />\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </DropdownMenuPrimitive.RadioItem>\n )\n}\n\nfunction DropdownMenuLabel({\n className,\n inset,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Label> & {\n inset?: boolean\n}) {\n return (\n <DropdownMenuPrimitive.Label\n data-slot=\"dropdown-menu-label\"\n data-inset={inset}\n className={cn(\n \"px-2 py-1.5 text-sm font-medium data-[inset]:pl-8\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction DropdownMenuSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Separator>) {\n return (\n <DropdownMenuPrimitive.Separator\n data-slot=\"dropdown-menu-separator\"\n className={cn(\"bg-border -mx-1 my-1 h-px\", className)}\n {...props}\n />\n )\n}\n\nfunction DropdownMenuShortcut({\n className,\n ...props\n}: React.ComponentProps<\"span\">) {\n return (\n <span\n data-slot=\"dropdown-menu-shortcut\"\n className={cn(\n \"text-muted-foreground ml-auto text-xs tracking-widest\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction DropdownMenuSub({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Sub>) {\n return <DropdownMenuPrimitive.Sub data-slot=\"dropdown-menu-sub\" {...props} />\n}\n\nfunction DropdownMenuSubTrigger({\n className,\n inset,\n children,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.SubTrigger> & {\n inset?: boolean\n}) {\n return (\n <DropdownMenuPrimitive.SubTrigger\n data-slot=\"dropdown-menu-sub-trigger\"\n data-inset={inset}\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground flex cursor-default items-center rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[inset]:pl-8\",\n className\n )}\n {...props}\n >\n {children}\n <ChevronRightIcon className=\"ml-auto size-4\" />\n </DropdownMenuPrimitive.SubTrigger>\n )\n}\n\nfunction DropdownMenuSubContent({\n className,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.SubContent>) {\n return (\n <DropdownMenuPrimitive.SubContent\n data-slot=\"dropdown-menu-sub-content\"\n className={cn(\n \"bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 min-w-[8rem] origin-(--radix-dropdown-menu-content-transform-origin) overflow-hidden rounded-md border p-1 shadow-lg\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport {\n DropdownMenu,\n DropdownMenuPortal,\n DropdownMenuTrigger,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuLabel,\n DropdownMenuItem,\n DropdownMenuCheckboxItem,\n DropdownMenuRadioGroup,\n DropdownMenuRadioItem,\n DropdownMenuSeparator,\n DropdownMenuShortcut,\n DropdownMenuSub,\n DropdownMenuSubTrigger,\n DropdownMenuSubContent,\n}\n"],"mappings":"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","names":["Calculator","ChevronDown","Columns3","SlotPrimitive","cva","clsx","twMerge","cn","inputs","jsx","buttonVariants","cva","Button","className","variant","size","asChild","props","Comp","SlotPrimitive","cn","CheckboxPrimitive","CheckIcon","jsx","Checkbox","className","props","CheckboxPrimitive","cn","CheckIcon","DropdownMenuPrimitive","CheckIcon","ChevronRightIcon","CircleIcon","jsx","jsxs","DropdownMenu","props","DropdownMenuPrimitive","DropdownMenuTrigger","props","jsx","DropdownMenuPrimitive","DropdownMenuContent","className","sideOffset","cn","DropdownMenuGroup","DropdownMenuCheckboxItem","className","children","checked","props","jsxs","DropdownMenuPrimitive","cn","jsx","CheckIcon","DropdownMenuLabel","className","inset","props","jsx","DropdownMenuPrimitive","cn","DropdownMenuSeparator","DropdownMenuSub","props","jsx","DropdownMenuPrimitive","DropdownMenuSubTrigger","className","inset","children","jsxs","cn","ChevronRightIcon","DropdownMenuSubContent","jsx","jsxs","AGGREGATION_FUNCTIONS","getColumnDisplayName","columnId","groupName","w","clearAllAggregations","aggregations","onAggregationChange","config","hideableLeafColumns","table","c","AggregationsMenu","aggregatableColumns","column","row","value","hasAggregations","toggleColumn","current","toggleFunction","func","next","f","DropdownMenu","DropdownMenuTrigger","Button","Calculator","ChevronDown","DropdownMenuContent","DropdownMenuLabel","DropdownMenuSeparator","columnConfig","isEnabled","DropdownMenuSub","DropdownMenuSubTrigger","Checkbox","cn","DropdownMenuSubContent","DropdownMenuCheckboxItem","ColumnVisibilityMenu","leafColumns","groupColumns","col","groupedIds","g","ungrouped","Columns3","DropdownMenuGroup","group"]}
@@ -0,0 +1,3 @@
1
+ "use client"
2
+ "use strict";var pt=Object.create;var ae=Object.defineProperty;var mt=Object.getOwnPropertyDescriptor;var gt=Object.getOwnPropertyNames;var ft=Object.getPrototypeOf,bt=Object.prototype.hasOwnProperty;var vt=(e,o)=>{for(var n in o)ae(e,n,{get:o[n],enumerable:!0})},Te=(e,o,n,i)=>{if(o&&typeof o=="object"||typeof o=="function")for(let u of gt(o))!bt.call(e,u)&&u!==n&&ae(e,u,{get:()=>o[u],enumerable:!(i=mt(o,u))||i.enumerable});return e};var xt=(e,o,n)=>(n=e!=null?pt(ft(e)):{},Te(o||!e||!e.__esModule?ae(n,"default",{value:e,enumerable:!0}):n,e)),ht=e=>Te(ae({},"__esModule",{value:!0}),e);var Nt={};vt(Nt,{DataTableToolbar:()=>Pt});module.exports=ht(Nt);var f=require("lucide-react");var _e=require("radix-ui"),Ie=require("class-variance-authority");var ze=require("clsx"),Re=require("tailwind-merge");function r(...e){return(0,Re.twMerge)((0,ze.clsx)(e))}var Fe=require("react/jsx-runtime"),ie=(0,Ie.cva)("inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-[color,box-shadow] disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive",{variants:{variant:{default:"bg-primary text-primary-foreground shadow-xs hover:bg-primary/90",destructive:"bg-destructive text-white shadow-xs hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60",outline:"border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50 dark:focus-visible:border-ring",secondary:"bg-secondary text-secondary-foreground shadow-xs hover:bg-secondary/80",ghost:"hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-9 px-4 py-2 has-[>svg]:px-3",sm:"h-8 rounded-md gap-1.5 px-3 has-[>svg]:px-2.5",lg:"h-10 rounded-md px-6 has-[>svg]:px-4",icon:"size-9"}},defaultVariants:{variant:"default",size:"default"}});function C({className:e,variant:o,size:n,asChild:i=!1,...u}){let d=i?_e.Slot.Slot:"button";return(0,Fe.jsx)(d,{"data-slot":"button",className:r(ie({variant:o,size:n,className:e})),...u})}var Ae=require("react/jsx-runtime");function me({className:e,type:o,...n}){return(0,Ae.jsx)("input",{type:o,"data-slot":"input",className:r("file:text-foreground placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground dark:bg-input/30 border-input flex h-9 w-full min-w-0 rounded-md border bg-transparent px-3 py-1 text-base shadow-xs transition-[color,box-shadow] outline-none file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm","focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]","aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive",e),...n})}var N=require("radix-ui"),W=require("lucide-react");var h=require("react/jsx-runtime");function j({...e}){return(0,h.jsx)(N.DropdownMenu.Root,{"data-slot":"dropdown-menu",...e})}function O({...e}){return(0,h.jsx)(N.DropdownMenu.Trigger,{"data-slot":"dropdown-menu-trigger",...e})}function U({className:e,sideOffset:o=4,...n}){return(0,h.jsx)(N.DropdownMenu.Portal,{children:(0,h.jsx)(N.DropdownMenu.Content,{"data-slot":"dropdown-menu-content",sideOffset:o,className:r("bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 max-h-(--radix-dropdown-menu-content-available-height) min-w-[8rem] origin-(--radix-dropdown-menu-content-transform-origin) rounded-md border p-1 shadow-md",e),...n})})}function ge({...e}){return(0,h.jsx)(N.DropdownMenu.Group,{"data-slot":"dropdown-menu-group",...e})}function V({className:e,inset:o,variant:n="default",...i}){return(0,h.jsx)(N.DropdownMenu.Item,{"data-slot":"dropdown-menu-item","data-inset":o,"data-variant":n,className:r("cursor-pointer focus:bg-accent focus:text-accent-foreground data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 dark:data-[variant=destructive]:focus:bg-destructive/20 data-[variant=destructive]:focus:text-destructive data-[variant=destructive]:*:[svg]:!text-destructive [&_svg:not([class*='text-'])]:text-muted-foreground relative flex items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",e),...i})}function se({className:e,children:o,checked:n,...i}){return(0,h.jsxs)(N.DropdownMenu.CheckboxItem,{"data-slot":"dropdown-menu-checkbox-item",className:r("focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",e),checked:n,...i,children:[(0,h.jsx)("span",{className:"pointer-events-none absolute left-2 flex size-3.5 items-center justify-center",children:(0,h.jsx)(N.DropdownMenu.ItemIndicator,{children:(0,h.jsx)(W.CheckIcon,{className:"size-4"})})}),o]})}function z({className:e,inset:o,...n}){return(0,h.jsx)(N.DropdownMenu.Label,{"data-slot":"dropdown-menu-label","data-inset":o,className:r("px-2 py-1.5 text-sm font-medium data-[inset]:pl-8",e),...n})}function B({className:e,...o}){return(0,h.jsx)(N.DropdownMenu.Separator,{"data-slot":"dropdown-menu-separator",className:r("bg-border -mx-1 my-1 h-px",e),...o})}function Ve({...e}){return(0,h.jsx)(N.DropdownMenu.Sub,{"data-slot":"dropdown-menu-sub",...e})}function Be({className:e,inset:o,children:n,...i}){return(0,h.jsxs)(N.DropdownMenu.SubTrigger,{"data-slot":"dropdown-menu-sub-trigger","data-inset":o,className:r("focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground flex cursor-default items-center rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[inset]:pl-8",e),...i,children:[n,(0,h.jsx)(W.ChevronRightIcon,{className:"ml-auto size-4"})]})}function Le({className:e,...o}){return(0,h.jsx)(N.DropdownMenu.SubContent,{"data-slot":"dropdown-menu-sub-content",className:r("bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 min-w-[8rem] origin-(--radix-dropdown-menu-content-transform-origin) overflow-hidden rounded-md border p-1 shadow-lg",e),...o})}var wt=new Set(["select","serialNumber"]);function Ge(e){let o=e.getVisibleLeafColumns().filter(i=>wt.has(i.id)?!1:!!i.columnDef.exportValue||!!i.accessorFn),n=e.getPrePaginationRowModel().rows;return{columns:o.map(i=>{let u=i.columnDef;return{id:i.id,header:u.exportHeader??(typeof u.header=="string"?u.header:i.id)}}),rows:n.map(i=>o.map(u=>{let d=u.columnDef;return d.exportValue?d.exportValue(i.original):i.getValue(u.id)})),originals:n.map(i=>i.original)}}var I=require("react");var Q=require("react"),$e=require("lucide-react"),He=require("date-fns");var K=require("radix-ui");var Y=require("react/jsx-runtime");function Ee({...e}){return(0,Y.jsx)(K.Popover.Root,{"data-slot":"popover",...e})}function je({...e}){return(0,Y.jsx)(K.Popover.Trigger,{"data-slot":"popover-trigger",...e})}function Oe({className:e,align:o="center",sideOffset:n=4,...i}){return(0,Y.jsx)(K.Popover.Portal,{children:(0,Y.jsx)(K.Popover.Content,{"data-slot":"popover-content",align:o,sideOffset:n,className:r("bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-72 origin-(--radix-popover-content-transform-origin) rounded-md border p-4 shadow-md outline-hidden",e),...i})})}var le=xt(require("react"),1),$=require("lucide-react"),J=require("react-day-picker");var R=require("react/jsx-runtime");function Ue({className:e,classNames:o,showOutsideDays:n=!0,captionLayout:i="label",buttonVariant:u="ghost",formatters:d,components:b,...m}){let s=(0,J.getDefaultClassNames)();return(0,R.jsx)(J.DayPicker,{showOutsideDays:n,className:r("bg-background group/calendar p-3 [--cell-size:--spacing(8)] [[data-slot=card-content]_&]:bg-transparent [[data-slot=popover-content]_&]:bg-transparent",String.raw`rtl:**:[.rdp-button\_next>svg]:rotate-180`,String.raw`rtl:**:[.rdp-button\_previous>svg]:rotate-180`,e),captionLayout:i,formatters:{formatMonthDropdown:p=>p.toLocaleString("default",{month:"short"}),...d},classNames:{root:r("w-fit",s.root),months:r("flex gap-4 flex-col md:flex-row relative",s.months),month:r("flex flex-col w-full gap-4",s.month),nav:r("flex items-center gap-1 w-full absolute top-0 inset-x-0 justify-between",s.nav),button_previous:r(ie({variant:u}),"size-(--cell-size) aria-disabled:opacity-50 p-0 select-none",s.button_previous),button_next:r(ie({variant:u}),"size-(--cell-size) aria-disabled:opacity-50 p-0 select-none",s.button_next),month_caption:r("flex items-center justify-center h-(--cell-size) w-full px-(--cell-size)",s.month_caption),dropdowns:r("w-full flex items-center text-sm font-medium justify-center h-(--cell-size) gap-1.5",s.dropdowns),dropdown_root:r("relative has-focus:border-ring border border-input shadow-xs has-focus:ring-ring/50 has-focus:ring-[3px] rounded-md",s.dropdown_root),dropdown:r("absolute bg-popover inset-0 opacity-0",s.dropdown),caption_label:r("select-none font-medium",i==="label"?"text-sm":"rounded-md pl-2 pr-1 flex items-center gap-1 text-sm h-8 [&>svg]:text-muted-foreground [&>svg]:size-3.5",s.caption_label),table:"w-full border-collapse",weekdays:r("flex",s.weekdays),weekday:r("text-muted-foreground rounded-md flex-1 font-normal text-[0.8rem] select-none",s.weekday),week:r("flex w-full mt-2",s.week),week_number_header:r("select-none w-(--cell-size)",s.week_number_header),week_number:r("text-[0.8rem] select-none text-muted-foreground",s.week_number),day:r("relative w-full h-full p-0 text-center [&:first-child[data-selected=true]_button]:rounded-l-md [&:last-child[data-selected=true]_button]:rounded-r-md group/day aspect-square select-none",s.day),range_start:r("rounded-l-md bg-accent",s.range_start),range_middle:r("rounded-none",s.range_middle),range_end:r("rounded-r-md bg-accent",s.range_end),today:r("bg-accent text-accent-foreground rounded-md data-[selected=true]:rounded-none",s.today),outside:r("text-muted-foreground aria-selected:text-muted-foreground",s.outside),disabled:r("text-muted-foreground opacity-50",s.disabled),hidden:r("invisible",s.hidden),...o},components:{Root:({className:p,rootRef:g,...w})=>(0,R.jsx)("div",{"data-slot":"calendar",ref:g,className:r(p),...w}),Chevron:({className:p,orientation:g,...w})=>g==="left"?(0,R.jsx)($.ChevronLeftIcon,{className:r("size-4",p),...w}):g==="right"?(0,R.jsx)($.ChevronRightIcon,{className:r("size-4",p),...w}):(0,R.jsx)($.ChevronDownIcon,{className:r("size-4",p),...w}),DayButton:yt,WeekNumber:({children:p,...g})=>(0,R.jsx)("td",{...g,children:(0,R.jsx)("div",{className:"flex size-(--cell-size) items-center justify-center text-center",children:p})}),...b},...m})}function yt({className:e,day:o,modifiers:n,...i}){let u=(0,J.getDefaultClassNames)(),d=le.useRef(null);return le.useEffect(()=>{n.focused&&d.current?.focus()},[n.focused]),(0,R.jsx)(C,{ref:d,variant:"ghost",size:"icon","data-day":o.date.toLocaleDateString(),"data-selected-single":n.selected&&!n.range_start&&!n.range_end&&!n.range_middle,"data-range-start":n.range_start,"data-range-end":n.range_end,"data-range-middle":n.range_middle,className:r("data-[selected-single=true]:bg-primary data-[selected-single=true]:text-primary-foreground data-[range-middle=true]:bg-accent data-[range-middle=true]:text-accent-foreground data-[range-start=true]:bg-primary data-[range-start=true]:text-primary-foreground data-[range-end=true]:bg-primary data-[range-end=true]:text-primary-foreground group-data-[focused=true]/day:border-ring group-data-[focused=true]/day:ring-ring/50 dark:hover:text-accent-foreground flex aspect-square size-auto w-full min-w-(--cell-size) flex-col gap-1 leading-none font-normal group-data-[focused=true]/day:relative group-data-[focused=true]/day:z-10 group-data-[focused=true]/day:ring-[3px] data-[range-end=true]:rounded-md data-[range-end=true]:rounded-r-md data-[range-middle=true]:rounded-none data-[range-start=true]:rounded-md data-[range-start=true]:rounded-l-md [&>span]:text-xs [&>span]:opacity-70",u.day,e),...i})}var M=require("react/jsx-runtime");function qe({value:e,onChange:o,placeholder:n,mode:i,externalSearch:u,onExternalChange:d,dateFormat:b,triggerClassName:m}){let s=b?b.replace(/Y/g,"y").replace(/D/g,"d"):null,[p,g]=(0,Q.useState)(!1),[w,F]=(0,Q.useState)(e);(0,Q.useEffect)(()=>{F(e)},[e]);let H=c=>{if(c==null)return null;if(c instanceof Date)return isNaN(c.getTime())?null:c;let y=new Date(c);return isNaN(y.getTime())?null:y},_=(c,y)=>{let T=H(c);return T?(0,He.format)(T,y):null},A=c=>{u?d?.(c):o?.(c)},Z=()=>{A(w),g(!1)},ue=()=>{F(e),g(!1)},ce=()=>{let c=i==="single"?null:{from:null,to:null};F(c),A(c),g(!1)},ee=()=>{let c=e;if(!c)return n;if(i==="single")return _(c,s||"PPP")??n;if(c.from&&c.to){let y=_(c.from,s||"MMM dd"),T=_(c.to,s||"MMM dd, yyyy");return y&&T?`${y} - ${T}`:n}if(c.from){let y=_(c.from,s||"MMM dd, yyyy");return y?`From ${y}`:n}if(c.to){let y=_(c.to,s||"MMM dd, yyyy");return y?`To ${y}`:n}return n},te=c=>{F(i==="single"?c:c||{from:null,to:null})};return(0,M.jsxs)(Ee,{open:p,onOpenChange:g,children:[(0,M.jsx)(je,{className:"h-8",asChild:!0,children:(0,M.jsxs)(C,{variant:"outline",className:r("w-full justify-start text-left font-normal h-8 rounded-lg",ee()===n&&"text-muted-foreground",m),children:[(0,M.jsx)($e.Calendar,{className:"mr-2 h-4 w-4 shrink-0"}),ee()]})}),(0,M.jsxs)(Oe,{className:"w-auto p-0",align:"start",children:[(0,M.jsx)("div",{className:"p-3",children:(0,M.jsx)(Ue,{mode:i,selected:w,onSelect:te,numberOfMonths:i==="range"?2:1,className:"rounded-md border",...i==="range"&&{required:!0}})}),(0,M.jsxs)("div",{className:"flex items-center justify-between p-3 border-t",children:[(0,M.jsx)(C,{variant:"ghost",size:"sm",onClick:ce,children:"Clear"}),(0,M.jsxs)("div",{className:"flex gap-2",children:[(0,M.jsx)(C,{variant:"outline",size:"sm",onClick:ue,children:"Cancel"}),(0,M.jsx)(C,{size:"sm",onClick:Z,disabled:i==="range"&&(!w?.from||!w?.to),children:"Apply"})]})]})]})]})}var L=require("lucide-react");var fe=require("radix-ui"),Xe=require("lucide-react");var de=require("react/jsx-runtime");function We({className:e,...o}){return(0,de.jsx)(fe.Checkbox.Root,{"data-slot":"checkbox",className:r("peer border-input dark:bg-input/30 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground dark:data-[state=checked]:bg-primary data-[state=checked]:border-primary focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive size-4 shrink-0 rounded-[4px] border shadow-xs transition-shadow outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50",e),...o,children:(0,de.jsx)(fe.Checkbox.Indicator,{"data-slot":"checkbox-indicator",className:"flex items-center justify-center text-current transition-none",children:(0,de.jsx)(Xe.CheckIcon,{className:"size-3.5"})})})}var l=require("react/jsx-runtime"),Ke=[{value:"sum",label:"Sum",description:"Total of all values"},{value:"average",label:"Average",description:"Mean value"},{value:"min",label:"Minimum",description:"Smallest value"},{value:"max",label:"Maximum",description:"Largest value"},{value:"count",label:"Count",description:"Number of rows"},{value:"unique",label:"Unique",description:"Count of distinct values"},{value:"median",label:"Median",description:"Middle value"}],be=(e,o)=>(o&&e.startsWith(`${o}.`)?e.replace(`${o}.`,""):e).split("_").map(i=>i.charAt(0).toUpperCase()+i.slice(1)).join(" ");function ve(e,o){o&&Object.keys(e).forEach(n=>{let i=e[n];i&&o(n,{...i,enabled:!1,functions:[]})})}var Ye=e=>e.getAllLeafColumns().filter(o=>o.getCanHide?.()!==!1);function Je({table:e,aggregations:o,onAggregationChange:n}){let i=Ye(e).filter(m=>m.id==="select"||m.id==="serialNumber"?!1:m.columnDef.meta?.aggregatable?!0:e.getRowModel().rows.slice(0,5).some(s=>{let p=s.getValue(m.id);return typeof p=="number"||typeof p=="string"&&!isNaN(parseFloat(String(p)))||typeof p=="object"&&p!==null&&"props"in p}));if(i.length===0||!n)return null;let u=Object.values(o).some(m=>m?.enabled),d=m=>{let s=o[m];n(m,{enabled:!s?.enabled,functions:s?.functions||["sum","average"]})},b=(m,s)=>{let p=o[m]?.functions||[],g=p.includes(s)?p.filter(w=>w!==s):[...p,s];n(m,{enabled:g.length>0,functions:g})};return(0,l.jsxs)(j,{children:[(0,l.jsx)(O,{asChild:!0,children:(0,l.jsxs)(C,{variant:"outline",size:"sm",className:"gap-1 rounded-lg",children:[(0,l.jsx)(L.Calculator,{className:"size-4"}),(0,l.jsx)("span",{children:"Aggregations"}),(0,l.jsx)(L.ChevronDown,{className:"opacity-50 size-4"})]})}),(0,l.jsxs)(U,{align:"end",className:"w-64 rounded-lg max-h-[500px] overflow-y-auto",children:[(0,l.jsxs)(z,{className:"flex items-center justify-between px-4 py-2",children:[(0,l.jsx)("span",{className:"text-sm font-medium",children:"Column Aggregations"}),u&&(0,l.jsx)(C,{variant:"ghost",size:"sm",className:"h-6 px-2 text-xs",onClick:()=>ve(o,n),children:"Clear All"})]}),(0,l.jsx)(B,{}),i.map(m=>{let s=o[m.id],p=s?.enabled;return(0,l.jsxs)(Ve,{children:[(0,l.jsx)(Be,{className:"text-sm",children:(0,l.jsxs)("div",{className:"flex items-center w-full gap-2",children:[(0,l.jsx)(We,{checked:p,onCheckedChange:()=>d(m.id),className:"data-[state=checked]:bg-primary"}),(0,l.jsx)("span",{className:r("flex-1",p&&"font-medium text-primary"),children:be(m.id)}),p&&(0,l.jsxs)("div",{className:"flex items-center gap-1",children:[s?.functions?.slice(0,2).map(g=>(0,l.jsx)("div",{className:"w-2 h-2 rounded-full bg-primary",title:Ke.find(w=>w.value===g)?.label},g)),s?.functions&&s.functions.length>2&&(0,l.jsxs)("div",{className:"text-xs text-muted-foreground",children:["+",s.functions.length-2]})]})]})}),(0,l.jsxs)(Le,{className:"w-48 rounded-lg",children:[(0,l.jsx)(z,{className:"px-3 py-2 text-xs font-medium text-muted-foreground",children:"Select Functions"}),Ke.map(g=>(0,l.jsx)(se,{checked:s?.functions?.includes(g.value)||!1,onCheckedChange:()=>b(m.id,g.value),className:"py-2 text-sm",children:(0,l.jsxs)("div",{className:"flex flex-col",children:[(0,l.jsx)("span",{children:g.label}),(0,l.jsx)("span",{className:"text-xs text-muted-foreground",children:g.description})]})},g.value))]})]},m.id)})]})]})}function Qe({table:e}){let o=Ye(e),n=e.getAllColumns().filter(d=>!e.getAllLeafColumns().includes(d)&&d.columns?.length&&d.columns.some(b=>b.getCanHide?.()!==!1)),i=new Set(n.flatMap(d=>d.columns?.filter(b=>b.getCanHide?.()!==!1).map(b=>b.id)||[])),u=o.filter(d=>!i.has(d.id));return(0,l.jsxs)(j,{children:[(0,l.jsx)(O,{asChild:!0,children:(0,l.jsxs)(C,{variant:"outline",size:"sm",className:"gap-1 rounded-lg",children:[(0,l.jsx)(L.Columns3,{className:"size-4"}),(0,l.jsx)("span",{children:"Columns"}),(0,l.jsx)(L.ChevronDown,{className:"opacity-50 size-4"})]})}),(0,l.jsxs)(U,{align:"end",className:"w-[220px] rounded-lg max-h-[400px] overflow-y-auto",children:[(0,l.jsx)(z,{className:"px-4 py-2 text-sm font-medium",children:"Toggle Columns"}),(0,l.jsx)(B,{}),u.length>0&&(0,l.jsxs)(ge,{children:[(0,l.jsx)(z,{className:"px-4 py-1.5 text-sm font-medium text-muted-foreground",children:"General"}),u.map(d=>(0,l.jsx)(se,{className:"text-sm",checked:d.getIsVisible(),onCheckedChange:b=>d.toggleVisibility(!!b),children:be(d.id)},d.id))]}),n.map(d=>(0,l.jsxs)(ge,{children:[(0,l.jsx)(B,{}),(0,l.jsx)(z,{className:"px-4 py-1.5 text-sm font-medium text-muted-foreground",children:d.id}),d.columns?.filter(b=>b.getCanHide?.()!==!1).map(b=>(0,l.jsx)(se,{className:"text-sm",checked:b.getIsVisible(),onCheckedChange:m=>b.toggleVisibility(!!m),children:be(b.id,d.id)},b.id))]},d.id))]})]})}var S=require("radix-ui"),G=require("lucide-react");var x=require("react/jsx-runtime");function Ze({...e}){return(0,x.jsx)(S.Select.Root,{"data-slot":"select",...e})}function et({...e}){return(0,x.jsx)(S.Select.Value,{"data-slot":"select-value",...e})}function tt({className:e,size:o="default",children:n,...i}){return(0,x.jsxs)(S.Select.Trigger,{"data-slot":"select-trigger","data-size":o,className:r("border-input data-[placeholder]:text-muted-foreground [&_svg:not([class*='text-'])]:text-muted-foreground focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 dark:hover:bg-input/50 flex w-fit items-center justify-between gap-2 rounded-md border bg-transparent px-3 py-2 text-sm whitespace-nowrap shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 data-[size=default]:h-9 data-[size=sm]:h-8 *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-2 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",e),...i,children:[n,(0,x.jsx)(S.Select.Icon,{asChild:!0,children:(0,x.jsx)(G.ChevronDownIcon,{className:"size-4 opacity-50"})})]})}function ot({className:e,children:o,position:n="popper",...i}){return(0,x.jsx)(S.Select.Portal,{children:(0,x.jsxs)(S.Select.Content,{"data-slot":"select-content",className:r("bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 relative z-50 max-h-(--radix-select-content-available-height) min-w-[8rem] origin-(--radix-select-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border shadow-md",n==="popper"&&"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1",e),position:n,...i,children:[(0,x.jsx)(Ct,{}),(0,x.jsx)(S.Select.Viewport,{className:r("p-1",n==="popper"&&"h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)] scroll-my-1"),children:o}),(0,x.jsx)(Dt,{})]})})}function xe({className:e,children:o,...n}){return(0,x.jsxs)(S.Select.Item,{"data-slot":"select-item",className:r("focus:bg-accent focus:text-accent-foreground [&_svg:not([class*='text-'])]:text-muted-foreground relative flex w-full cursor-default items-center gap-2 rounded-sm py-1.5 pr-8 pl-2 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2",e),...n,children:[(0,x.jsx)("span",{className:"absolute right-2 flex size-3.5 items-center justify-center",children:(0,x.jsx)(S.Select.ItemIndicator,{children:(0,x.jsx)(G.CheckIcon,{className:"size-4"})})}),(0,x.jsx)(S.Select.ItemText,{children:o})]})}function Ct({className:e,...o}){return(0,x.jsx)(S.Select.ScrollUpButton,{"data-slot":"select-scroll-up-button",className:r("flex cursor-default items-center justify-center py-1",e),...o,children:(0,x.jsx)(G.ChevronUpIcon,{className:"size-4"})})}function Dt({className:e,...o}){return(0,x.jsx)(S.Select.ScrollDownButton,{"data-slot":"select-scroll-down-button",className:r("flex cursor-default items-center justify-center py-1",e),...o,children:(0,x.jsx)(G.ChevronDownIcon,{className:"size-4"})})}var a=require("react/jsx-runtime"),D=e=>e.id??e.key;function Pt({table:e,filters:o=[],globalFilter:n,onGlobalFilterChange:i,enableGlobalFilter:u=!0,onExport:d,onRefresh:b,loading:m=!1,enableColumnVisibility:s=!0,onClearSorting:p,onClearFilters:g,enableColumnPinning:w=!1,enableSorting:F=!0,onExternalSearch:H,initialExternalValues:_,aggregations:A={},onAggregationChange:Z,groupedFilterLabel:ue="Global",showFilterChips:ce=!0,initialGroupedField:ee,onGroupedFieldChange:te}){let[c,y]=(0,I.useState)(_??{}),[T,he]=(0,I.useState)(ee??"all"),pe=(0,I.useRef)(_??{}),oe=(0,I.useRef)(void 0);(0,I.useEffect)(()=>()=>clearTimeout(oe.current),[]);let we=(t,v,k=!1)=>{let P={...pe.current,[t]:v};pe.current=P,y(P),clearTimeout(oe.current),k?oe.current=setTimeout(()=>H?.(P),500):H?.(P)},ye=()=>{clearTimeout(oe.current),pe.current={},y({}),he("all"),te?.("all"),g(),H?.({})},q=t=>o.find(k=>D(k)===t)?.externalSearch?c[t]??"":e.getColumn(t)?.getFilterValue(),ne=(t,v)=>{let k=o.find(P=>D(P)===t);k?.externalSearch?we(t,v,k.type==="text"):e.getColumn(t)?.setFilterValue(v)},nt=t=>{he(t),te?.(t),t!=="all"&&i("")},rt=Object.values(A).some(t=>t?.enabled),at=t=>!!t.externalSearch||!!e.getColumn(D(t)),Ce=t=>{let v=q(D(t));return v==null||v===""?!1:typeof v=="object"?!!(v.from||v.to):!0},De=t=>t.type==="date"||t.type==="daterange",it=t=>{ne(D(t),De(t)?null:"")},st=t=>{let v=q(D(t));return t.type==="select"?t.options?.find(k=>k.value===v)?.label??String(v):De(t)?"set":String(v)},Pe=(t,v)=>{let k=v?.embedded;if(t.type==="select"){let P=D(t),ke=q(P);return(0,a.jsxs)(Ze,{value:ke?String(ke):"",onValueChange:E=>ne(P,E==="__all__"?"":E),children:[(0,a.jsx)(tt,{size:"sm",className:r("w-full",k?"border border-transparent rounded-l-none rounded-r-lg shadow-none relative focus-visible:z-10 focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]":"rounded-lg"),children:(0,a.jsxs)("span",{className:"flex items-center gap-2 truncate",children:[t.icon&&(0,a.jsx)(t.icon,{className:"size-4 shrink-0 text-muted-foreground"}),(0,a.jsx)(et,{placeholder:t.placeholder})]})}),(0,a.jsxs)(ot,{className:"rounded-lg",children:[(0,a.jsx)(xe,{value:"__all__",children:"All"}),t.options?.map(E=>(0,a.jsx)(xe,{value:E.value,children:E.label},E.value))]})]})}return t.type==="date"||t.type==="daterange"?(0,a.jsx)(qe,{value:q(D(t)),onChange:P=>ne(D(t),P),placeholder:t.placeholder,mode:t.type==="daterange"?"range":"single",dateFormat:t.dateFormat,externalSearch:t.externalSearch,onExternalChange:P=>we(D(t),P),triggerClassName:k?"border border-transparent rounded-l-none rounded-r-lg shadow-none relative focus-visible:z-10 focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]":void 0}):(0,a.jsxs)("div",{className:"relative w-full",children:[t.icon&&(0,a.jsx)(t.icon,{className:"absolute -translate-y-1/2 size-4 left-3 top-1/2 text-muted-foreground"}),(0,a.jsx)(me,{placeholder:t.placeholder,value:q(D(t))??"",onChange:P=>{ne(D(t),P.target.value)},className:r("h-8",t.icon&&"pl-9",k?"border border-transparent rounded-l-none rounded-r-lg shadow-none relative focus-visible:z-10 focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]":"rounded-lg"),type:t.type==="number"?"number":"text"})]})},Ne=o.filter(t=>(t.placement??"bar")==="bar"),re=o.filter(t=>t.placement==="menu"),X=u&&re.length>0,lt=re.filter(Ce),Me=e.getState().columnFilters.length>0||!!n||o.some(Ce),{left:dt=[],right:ut=[]}=e.getState().columnPinning,ct=dt.some(t=>t!=="serialNumber"&&t!=="select")||ut.length>0,Se=[{value:"all",label:"All Fields"},...re.map(t=>({value:D(t),label:t.placeholder}))];return(0,a.jsxs)("div",{className:"flex flex-wrap items-center gap-3",children:[Ne.length>0&&(0,a.jsx)(f.Filter,{className:"size-4 text-muted-foreground shrink-0"}),Ne.map(t=>at(t)?(0,a.jsx)("div",{className:r("relative min-w-[150px]",t.width),children:Pe(t)},D(t)):null),ce&&lt.map(t=>(0,a.jsxs)("span",{className:"inline-flex items-center gap-1 h-8 px-2 rounded-lg border bg-muted/50 text-sm",children:[(0,a.jsxs)("span",{className:"text-muted-foreground",children:[t.placeholder,":"]}),(0,a.jsx)("span",{className:"font-medium truncate max-w-[120px]",children:st(t)}),(0,a.jsx)("button",{type:"button",onClick:()=>it(t),className:"ml-1 p-0.5 rounded hover:bg-accent","aria-label":`Clear ${t.placeholder}`,children:(0,a.jsx)(f.X,{className:"size-3.5"})})]},`chip-${D(t)}`)),Me&&(0,a.jsxs)(C,{variant:"ghost",size:"sm",onClick:ye,className:"h-8 px-2 rounded-lg text-muted-foreground hover:text-foreground",children:[(0,a.jsx)(f.FilterX,{className:"size-4"}),"Clear Filters"]}),(0,a.jsxs)("div",{className:"flex flex-wrap items-center gap-2 ml-auto",children:[u&&(0,a.jsxs)("div",{className:r("flex items-center",X&&"bg-background border rounded-lg"),children:[X&&(0,a.jsxs)(j,{children:[(0,a.jsx)(O,{asChild:!0,children:(0,a.jsxs)(C,{variant:"ghost",size:"sm",className:"gap-1 border border-transparent border-r-border rounded-l-lg rounded-r-none hover:bg-transparent shrink-0 relative focus-visible:z-10 focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]",children:[(0,a.jsx)("span",{className:"text-sm font-medium max-w-28 truncate",children:T==="all"?ue:Se.find(t=>t.value===T)?.label}),(0,a.jsx)(f.ChevronDown,{className:"opacity-50 size-4"})]})}),(0,a.jsx)(U,{align:"start",className:"w-48 rounded-lg",children:Se.map(t=>(0,a.jsxs)(V,{onClick:()=>nt(t.value),className:"flex items-center justify-between",children:[(0,a.jsx)("span",{children:t.label}),T===t.value&&(0,a.jsx)(f.Check,{className:"size-4 text-primary"})]},t.value))})]}),(()=>{let t=X&&T!=="all"?re.find(v=>D(v)===T):void 0;return t?(0,a.jsx)("div",{className:"w-48",children:Pe(t,{embedded:!0})}):(0,a.jsxs)("div",{className:"relative",children:[(0,a.jsx)(f.Search,{className:"absolute -translate-y-1/2 size-4 left-3 top-1/2 text-muted-foreground"}),(0,a.jsx)(me,{placeholder:X?"Search all fields...":"Global search...",value:n??"",onChange:v=>i(v.target.value),className:r("pl-9 h-8 w-48",X&&"border border-transparent rounded-l-none rounded-r-lg shadow-none relative focus-visible:z-10 focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]")})]})})()]}),(0,a.jsx)(Je,{table:e,aggregations:A,onAggregationChange:Z}),s&&(0,a.jsx)(Qe,{table:e}),(0,a.jsxs)(j,{children:[(0,a.jsx)(O,{asChild:!0,children:(0,a.jsx)(C,{variant:"outline",size:"sm",className:"rounded-lg",children:(0,a.jsx)(f.Settings2,{className:"size-4"})})}),(0,a.jsxs)(U,{align:"end",className:"w-[200px] rounded-lg",children:[(0,a.jsx)(z,{children:"Table Settings"}),(0,a.jsx)(B,{}),d&&(0,a.jsxs)(V,{onClick:()=>{let t=Ge(e);d(t.originals,t)},children:[(0,a.jsx)(f.Download,{className:"size-4"}),"Export"]}),F&&(0,a.jsxs)(V,{onClick:p,disabled:e.getState().sorting.length===0,children:[(0,a.jsx)(f.ArrowUpDown,{className:"size-4"}),"Clear All Sorting"]}),(0,a.jsxs)(V,{onClick:ye,disabled:!Me,children:[(0,a.jsx)(f.Filter,{className:"size-4"}),"Clear All Filters"]}),Object.keys(A).length>0&&(0,a.jsxs)(V,{onClick:()=>ve(A,Z),disabled:!rt,children:[(0,a.jsx)(f.Calculator,{className:"size-4"}),"Clear Aggregations"]}),w&&(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(B,{}),(0,a.jsx)(z,{children:"Column Pinning"}),(0,a.jsxs)(V,{onClick:()=>e.setColumnPinning({left:[],right:[]}),disabled:!ct,children:[(0,a.jsx)(f.PinOff,{className:"size-4"}),"Reset All Pinning"]})]})]})]}),b&&(0,a.jsx)(C,{variant:"outline",size:"sm",onClick:b,disabled:m,className:"rounded-lg",children:(0,a.jsx)(f.RefreshCw,{className:r("h-4 w-4",m&&"animate-spin")})})]})]})}0&&(module.exports={DataTableToolbar});
3
+ //# sourceMappingURL=data-table-toolbar.cjs.map