@m5kdev/web-ui 0.6.0 → 0.8.0

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 (377) hide show
  1. package/dist/src/animations/card.motion.d.ts +7 -2
  2. package/dist/src/animations/card.motion.js +25 -6
  3. package/dist/src/animations/card.motion.js.map +1 -0
  4. package/dist/src/components/AvatarUpload.d.ts +14 -5
  5. package/dist/src/components/AvatarUpload.js +105 -63
  6. package/dist/src/components/AvatarUpload.js.map +1 -0
  7. package/dist/src/components/Button.d.ts +14 -4
  8. package/dist/src/components/Button.js +13 -4
  9. package/dist/src/components/Button.js.map +1 -0
  10. package/dist/src/components/Calendar.d.ts +33 -31
  11. package/dist/src/components/Calendar.js +14 -6
  12. package/dist/src/components/Calendar.js.map +1 -0
  13. package/dist/src/components/{Calendar.css → Calendar2.css} +757 -684
  14. package/dist/src/components/CardsSelect.d.ts +25 -21
  15. package/dist/src/components/CardsSelect.js +75 -42
  16. package/dist/src/components/CardsSelect.js.map +1 -0
  17. package/dist/src/components/CollapsibleSidebarMenuItem.d.ts +22 -9
  18. package/dist/src/components/CollapsibleSidebarMenuItem.js +31 -8
  19. package/dist/src/components/CollapsibleSidebarMenuItem.js.map +1 -0
  20. package/dist/src/components/ColorPicker.d.ts +15 -4
  21. package/dist/src/components/ColorPicker.js +46 -16
  22. package/dist/src/components/ColorPicker.js.map +1 -0
  23. package/dist/src/components/CopyButton.d.ts +18 -6
  24. package/dist/src/components/CopyButton.js +28 -19
  25. package/dist/src/components/CopyButton.js.map +1 -0
  26. package/dist/src/components/CropDialog.d.ts +20 -8
  27. package/dist/src/components/CropDialog.js +108 -62
  28. package/dist/src/components/CropDialog.js.map +1 -0
  29. package/dist/src/components/DialogProvider.d.ts +22 -14
  30. package/dist/src/components/DialogProvider.js +67 -45
  31. package/dist/src/components/DialogProvider.js.map +1 -0
  32. package/dist/src/components/ErrorFallback.d.ts +13 -4
  33. package/dist/src/components/ErrorFallback.js +29 -4
  34. package/dist/src/components/ErrorFallback.js.map +1 -0
  35. package/dist/src/components/FileDropzone.d.ts +12 -4
  36. package/dist/src/components/FileDropzone.js +98 -60
  37. package/dist/src/components/FileDropzone.js.map +1 -0
  38. package/dist/src/components/MultiSelectDropdown.d.ts +25 -22
  39. package/dist/src/components/MultiSelectDropdown.js +99 -49
  40. package/dist/src/components/MultiSelectDropdown.js.map +1 -0
  41. package/dist/src/components/Orb.d.ts +17 -6
  42. package/dist/src/components/Orb.js +263 -255
  43. package/dist/src/components/Orb.js.map +1 -0
  44. package/dist/src/components/PageAlert.d.ts +20 -15
  45. package/dist/src/components/PageAlert.js +67 -39
  46. package/dist/src/components/PageAlert.js.map +1 -0
  47. package/dist/src/components/SelectChips.d.ts +21 -10
  48. package/dist/src/components/SelectChips.js +21 -9
  49. package/dist/src/components/SelectChips.js.map +1 -0
  50. package/dist/src/components/SidebarItem.d.ts +18 -7
  51. package/dist/src/components/SidebarItem.js +16 -4
  52. package/dist/src/components/SidebarItem.js.map +1 -0
  53. package/dist/src/components/Steps.d.ts +21 -16
  54. package/dist/src/components/Steps.js +193 -27
  55. package/dist/src/components/Steps.js.map +1 -0
  56. package/dist/src/components/TablerIconPicker.d.ts +13 -2
  57. package/dist/src/components/TablerIconPicker.js +4254 -4234
  58. package/dist/src/components/TablerIconPicker.js.map +1 -0
  59. package/dist/src/components/app-header.d.ts +14 -6
  60. package/dist/src/components/app-header.js +27 -6
  61. package/dist/src/components/app-header.js.map +1 -0
  62. package/dist/src/components/blur-card.d.ts +25 -11
  63. package/dist/src/components/blur-card.js +134 -31
  64. package/dist/src/components/blur-card.js.map +1 -0
  65. package/dist/src/components/features-section-demo-1.d.ts +22 -6
  66. package/dist/src/components/features-section-demo-1.js +119 -47
  67. package/dist/src/components/features-section-demo-1.js.map +1 -0
  68. package/dist/src/components/features-section-demo-2.d.ts +7 -1
  69. package/dist/src/components/features-section-demo-2.js +80 -49
  70. package/dist/src/components/features-section-demo-2.js.map +1 -0
  71. package/dist/src/components/features-section-demo-3.d.ts +16 -8
  72. package/dist/src/components/features-section-demo-3.js +239 -103
  73. package/dist/src/components/features-section-demo-3.js.map +1 -0
  74. package/dist/src/components/mode-toggle.d.ts +7 -1
  75. package/dist/src/components/mode-toggle.js +42 -7
  76. package/dist/src/components/mode-toggle.js.map +1 -0
  77. package/dist/src/components/nav-main.d.ts +20 -12
  78. package/dist/src/components/nav-main.js +31 -5
  79. package/dist/src/components/nav-main.js.map +1 -0
  80. package/dist/src/components/pricing-cards.d.ts +7 -1
  81. package/dist/src/components/pricing-cards.js +125 -24
  82. package/dist/src/components/pricing-cards.js.map +1 -0
  83. package/dist/src/components/shared/ButtonCopy.d.ts +17 -6
  84. package/dist/src/components/shared/ButtonCopy.js +31 -20
  85. package/dist/src/components/shared/ButtonCopy.js.map +1 -0
  86. package/dist/src/components/team-switcher.d.ts +16 -8
  87. package/dist/src/components/team-switcher.js +70 -8
  88. package/dist/src/components/team-switcher.js.map +1 -0
  89. package/dist/src/components/theme-provider.d.ts +18 -8
  90. package/dist/src/components/theme-provider.js +42 -38
  91. package/dist/src/components/theme-provider.js.map +1 -0
  92. package/dist/src/components/typewriter.d.ts +35 -14
  93. package/dist/src/components/typewriter.js +45 -36
  94. package/dist/src/components/typewriter.js.map +1 -0
  95. package/dist/src/components/ui/alert-dialog.d.ts +48 -13
  96. package/dist/src/components/ui/alert-dialog.js +58 -15
  97. package/dist/src/components/ui/alert-dialog.js.map +1 -0
  98. package/dist/src/components/ui/alert.d.ts +24 -8
  99. package/dist/src/components/ui/alert.js +28 -15
  100. package/dist/src/components/ui/alert.js.map +1 -0
  101. package/dist/src/components/ui/avatar.d.ts +9 -5
  102. package/dist/src/components/ui/avatar.js +23 -7
  103. package/dist/src/components/ui/avatar.js.map +1 -0
  104. package/dist/src/components/ui/badge.d.ts +17 -8
  105. package/dist/src/components/ui/badge.js +17 -14
  106. package/dist/src/components/ui/badge.js.map +1 -0
  107. package/dist/src/components/ui/bento-grid.d.ts +26 -11
  108. package/dist/src/components/ui/bento-grid.js +30 -6
  109. package/dist/src/components/ui/bento-grid.js.map +1 -0
  110. package/dist/src/components/ui/bento-grid2.d.ts +30 -14
  111. package/dist/src/components/ui/bento-grid2.js +45 -9
  112. package/dist/src/components/ui/bento-grid2.js.map +1 -0
  113. package/dist/src/components/ui/breadcrumb.d.ts +27 -15
  114. package/dist/src/components/ui/breadcrumb.js +54 -14
  115. package/dist/src/components/ui/breadcrumb.js.map +1 -0
  116. package/dist/src/components/ui/button.d.ts +14 -9
  117. package/dist/src/components/ui/button.js +37 -26
  118. package/dist/src/components/ui/button.js.map +1 -0
  119. package/dist/src/components/ui/card.d.ts +12 -8
  120. package/dist/src/components/ui/card.js +38 -10
  121. package/dist/src/components/ui/card.js.map +1 -0
  122. package/dist/src/components/ui/checkbox.d.ts +6 -2
  123. package/dist/src/components/ui/checkbox.js +17 -5
  124. package/dist/src/components/ui/checkbox.js.map +1 -0
  125. package/dist/src/components/ui/collapsible.d.ts +9 -4
  126. package/dist/src/components/ui/collapsible.js +5 -1
  127. package/dist/src/components/ui/collapsible.js.map +1 -0
  128. package/dist/src/components/ui/dialog.d.ts +44 -12
  129. package/dist/src/components/ui/dialog.js +64 -14
  130. package/dist/src/components/ui/dialog.js.map +1 -0
  131. package/dist/src/components/ui/dropdown-menu.d.ts +32 -24
  132. package/dist/src/components/ui/dropdown-menu.js +64 -14
  133. package/dist/src/components/ui/dropdown-menu.js.map +1 -0
  134. package/dist/src/components/ui/floating-navbar.d.ts +18 -9
  135. package/dist/src/components/ui/floating-navbar.js +49 -35
  136. package/dist/src/components/ui/floating-navbar.js.map +1 -0
  137. package/dist/src/components/ui/form.d.ts +30 -21
  138. package/dist/src/components/ui/form.js +76 -44
  139. package/dist/src/components/ui/form.js.map +1 -0
  140. package/dist/src/components/ui/image.d.ts +6 -2
  141. package/dist/src/components/ui/image.js +51 -11
  142. package/dist/src/components/ui/image.js.map +1 -0
  143. package/dist/src/components/ui/input.d.ts +6 -2
  144. package/dist/src/components/ui/input.js +14 -5
  145. package/dist/src/components/ui/input.js.map +1 -0
  146. package/dist/src/components/ui/label.d.ts +8 -3
  147. package/dist/src/components/ui/label.js +13 -5
  148. package/dist/src/components/ui/label.js.map +1 -0
  149. package/dist/src/components/ui/pagination.d.ts +39 -12
  150. package/dist/src/components/ui/pagination.js +64 -14
  151. package/dist/src/components/ui/pagination.js.map +1 -0
  152. package/dist/src/components/ui/progress.d.ts +6 -2
  153. package/dist/src/components/ui/progress.js +16 -4
  154. package/dist/src/components/ui/progress.js.map +1 -0
  155. package/dist/src/components/ui/resizable-navbar.d.ts +84 -43
  156. package/dist/src/components/ui/resizable-navbar.js +126 -74
  157. package/dist/src/components/ui/resizable-navbar.js.map +1 -0
  158. package/dist/src/components/ui/segment-control.d.ts +10 -7
  159. package/dist/src/components/ui/segment-control.js +83 -38
  160. package/dist/src/components/ui/segment-control.js.map +1 -0
  161. package/dist/src/components/ui/select.d.ts +16 -12
  162. package/dist/src/components/ui/select.js +63 -14
  163. package/dist/src/components/ui/select.js.map +1 -0
  164. package/dist/src/components/ui/separator.d.ts +6 -2
  165. package/dist/src/components/ui/separator.js +14 -4
  166. package/dist/src/components/ui/separator.js.map +1 -0
  167. package/dist/src/components/ui/sheet.d.ts +30 -19
  168. package/dist/src/components/ui/sheet.js +52 -23
  169. package/dist/src/components/ui/sheet.js.map +1 -0
  170. package/dist/src/components/ui/sidebar.d.ts +69 -62
  171. package/dist/src/components/ui/sidebar.js +326 -171
  172. package/dist/src/components/ui/sidebar.js.map +1 -0
  173. package/dist/src/components/ui/skeleton.d.ts +9 -1
  174. package/dist/src/components/ui/skeleton.js +10 -3
  175. package/dist/src/components/ui/skeleton.js.map +1 -0
  176. package/dist/src/components/ui/slider.d.ts +6 -2
  177. package/dist/src/components/ui/slider.js +16 -4
  178. package/dist/src/components/ui/slider.js.map +1 -0
  179. package/dist/src/components/ui/sonner.d.ts +10 -3
  180. package/dist/src/components/ui/sonner.js +18 -11
  181. package/dist/src/components/ui/sonner.js.map +1 -0
  182. package/dist/src/components/ui/spinner.d.ts +21 -10
  183. package/dist/src/components/ui/spinner.js +24 -24
  184. package/dist/src/components/ui/spinner.js.map +1 -0
  185. package/dist/src/components/ui/switch.d.ts +6 -2
  186. package/dist/src/components/ui/switch.js +13 -4
  187. package/dist/src/components/ui/switch.js.map +1 -0
  188. package/dist/src/components/ui/table.d.ts +39 -10
  189. package/dist/src/components/ui/table.js +51 -11
  190. package/dist/src/components/ui/table.js.map +1 -0
  191. package/dist/src/components/ui/tabs.d.ts +23 -6
  192. package/dist/src/components/ui/tabs.js +27 -7
  193. package/dist/src/components/ui/tabs.js.map +1 -0
  194. package/dist/src/components/ui/textarea.d.ts +10 -2
  195. package/dist/src/components/ui/textarea.js +11 -3
  196. package/dist/src/components/ui/textarea.js.map +1 -0
  197. package/dist/src/components/ui/timeline.d.ts +16 -9
  198. package/dist/src/components/ui/timeline.js +87 -24
  199. package/dist/src/components/ui/timeline.js.map +1 -0
  200. package/dist/src/components/ui/toast.d.ts +19 -14
  201. package/dist/src/components/ui/toast.js +48 -22
  202. package/dist/src/components/ui/toast.js.map +1 -0
  203. package/dist/src/components/ui/tooltip.d.ts +23 -6
  204. package/dist/src/components/ui/tooltip.js +27 -7
  205. package/dist/src/components/ui/tooltip.js.map +1 -0
  206. package/dist/src/components/ui/typewriter-effect.d.ts +28 -14
  207. package/dist/src/components/ui/typewriter-effect.js +102 -72
  208. package/dist/src/components/ui/typewriter-effect.js.map +1 -0
  209. package/dist/src/hooks/use-mobile.d.ts +5 -1
  210. package/dist/src/hooks/use-mobile.js +18 -13
  211. package/dist/src/hooks/use-mobile.js.map +1 -0
  212. package/dist/src/hooks/useDialog.d.ts +8 -4
  213. package/dist/src/hooks/useDialog.js +24 -20
  214. package/dist/src/hooks/useDialog.js.map +1 -0
  215. package/dist/src/icons/GoogleIcon.d.ts +9 -5
  216. package/dist/src/icons/GoogleIcon.js +32 -3
  217. package/dist/src/icons/GoogleIcon.js.map +1 -0
  218. package/dist/src/icons/LinkedInIcon.d.ts +9 -5
  219. package/dist/src/icons/LinkedInIcon.js +27 -3
  220. package/dist/src/icons/LinkedInIcon.js.map +1 -0
  221. package/dist/src/icons/MicrosoftIcon.d.ts +9 -5
  222. package/dist/src/icons/MicrosoftIcon.js +31 -3
  223. package/dist/src/icons/MicrosoftIcon.js.map +1 -0
  224. package/dist/src/lib/chatwoot.d.ts +19 -10
  225. package/dist/src/lib/chatwoot.js +25 -27
  226. package/dist/src/lib/chatwoot.js.map +1 -0
  227. package/dist/src/lib/utils.d.ts +7 -2
  228. package/dist/src/lib/utils.js +7 -2
  229. package/dist/src/lib/utils.js.map +1 -0
  230. package/dist/src/modules/app/components/AppLoader.d.ts +8 -2
  231. package/dist/src/modules/app/components/AppLoader.js +14 -3
  232. package/dist/src/modules/app/components/AppLoader.js.map +1 -0
  233. package/dist/src/modules/app/components/AppShell.d.ts +15 -6
  234. package/dist/src/modules/app/components/AppShell.js +14 -5
  235. package/dist/src/modules/app/components/AppShell.js.map +1 -0
  236. package/dist/src/modules/app/components/AppSidebar.d.ts +16 -6
  237. package/dist/src/modules/app/components/AppSidebar.js +17 -4
  238. package/dist/src/modules/app/components/AppSidebar.js.map +1 -0
  239. package/dist/src/modules/app/components/AppSidebarContent.d.ts +22 -13
  240. package/dist/src/modules/app/components/AppSidebarContent.js +34 -5
  241. package/dist/src/modules/app/components/AppSidebarContent.js.map +1 -0
  242. package/dist/src/modules/app/components/AppSidebarHeader.d.ts +18 -8
  243. package/dist/src/modules/app/components/AppSidebarHeader.js +37 -6
  244. package/dist/src/modules/app/components/AppSidebarHeader.js.map +1 -0
  245. package/dist/src/modules/app/components/AppSidebarInvites.d.ts +11 -3
  246. package/dist/src/modules/app/components/AppSidebarInvites.js +39 -8
  247. package/dist/src/modules/app/components/AppSidebarInvites.js.map +1 -0
  248. package/dist/src/modules/app/components/AppSidebarUser.d.ts +20 -10
  249. package/dist/src/modules/app/components/AppSidebarUser.js +121 -12
  250. package/dist/src/modules/app/components/AppSidebarUser.js.map +1 -0
  251. package/dist/src/modules/auth/components/AdminUserManagement.d.ts +11 -4
  252. package/dist/src/modules/auth/components/AdminUserManagement.js +970 -418
  253. package/dist/src/modules/auth/components/AdminUserManagement.js.map +1 -0
  254. package/dist/src/modules/auth/components/AdminWaitlist.d.ts +11 -4
  255. package/dist/src/modules/auth/components/AdminWaitlist.js +284 -115
  256. package/dist/src/modules/auth/components/AdminWaitlist.js.map +1 -0
  257. package/dist/src/modules/auth/components/AuthLayout.d.ts +12 -4
  258. package/dist/src/modules/auth/components/AuthLayout.js +17 -3
  259. package/dist/src/modules/auth/components/AuthLayout.js.map +1 -0
  260. package/dist/src/modules/auth/components/AuthProviders.d.ts +17 -6
  261. package/dist/src/modules/auth/components/AuthProviders.js +80 -41
  262. package/dist/src/modules/auth/components/AuthProviders.js.map +1 -0
  263. package/dist/src/modules/auth/components/AuthRouter.d.ts +16 -7
  264. package/dist/src/modules/auth/components/AuthRouter.js +46 -10
  265. package/dist/src/modules/auth/components/AuthRouter.js.map +1 -0
  266. package/dist/src/modules/auth/components/ClaimAccountRoute.d.ts +12 -4
  267. package/dist/src/modules/auth/components/ClaimAccountRoute.js +202 -139
  268. package/dist/src/modules/auth/components/ClaimAccountRoute.js.map +1 -0
  269. package/dist/src/modules/auth/components/ErrorAuthRoute.d.ts +7 -1
  270. package/dist/src/modules/auth/components/ErrorAuthRoute.js +125 -89
  271. package/dist/src/modules/auth/components/ErrorAuthRoute.js.map +1 -0
  272. package/dist/src/modules/auth/components/ForgotPasswordForm.d.ts +7 -1
  273. package/dist/src/modules/auth/components/ForgotPasswordForm.js +49 -23
  274. package/dist/src/modules/auth/components/ForgotPasswordForm.js.map +1 -0
  275. package/dist/src/modules/auth/components/ForgotPasswordRoute.d.ts +7 -1
  276. package/dist/src/modules/auth/components/ForgotPasswordRoute.js +34 -6
  277. package/dist/src/modules/auth/components/ForgotPasswordRoute.js.map +1 -0
  278. package/dist/src/modules/auth/components/InviteFriends.d.ts +12 -4
  279. package/dist/src/modules/auth/components/InviteFriends.js +275 -69
  280. package/dist/src/modules/auth/components/InviteFriends.js.map +1 -0
  281. package/dist/src/modules/auth/components/LastUsedBadge.d.ts +17 -5
  282. package/dist/src/modules/auth/components/LastUsedBadge.js +16 -6
  283. package/dist/src/modules/auth/components/LastUsedBadge.js.map +1 -0
  284. package/dist/src/modules/auth/components/LoginForm.d.ts +11 -3
  285. package/dist/src/modules/auth/components/LoginForm.js +107 -40
  286. package/dist/src/modules/auth/components/LoginForm.js.map +1 -0
  287. package/dist/src/modules/auth/components/LoginRoute.d.ts +11 -3
  288. package/dist/src/modules/auth/components/LoginRoute.js +41 -8
  289. package/dist/src/modules/auth/components/LoginRoute.js.map +1 -0
  290. package/dist/src/modules/auth/components/LogoutRoute.d.ts +7 -1
  291. package/dist/src/modules/auth/components/LogoutRoute.js +18 -12
  292. package/dist/src/modules/auth/components/LogoutRoute.js.map +1 -0
  293. package/dist/src/modules/auth/components/OrganizationAcceptInvitationRoute.d.ts +21 -8
  294. package/dist/src/modules/auth/components/OrganizationAcceptInvitationRoute.js +107 -97
  295. package/dist/src/modules/auth/components/OrganizationAcceptInvitationRoute.js.map +1 -0
  296. package/dist/src/modules/auth/components/OrganizationMembersRoute.d.ts +58 -48
  297. package/dist/src/modules/auth/components/OrganizationMembersRoute.js +448 -349
  298. package/dist/src/modules/auth/components/OrganizationMembersRoute.js.map +1 -0
  299. package/dist/src/modules/auth/components/OrganizationPreferences.d.ts +27 -16
  300. package/dist/src/modules/auth/components/OrganizationPreferences.js +129 -124
  301. package/dist/src/modules/auth/components/OrganizationPreferences.js.map +1 -0
  302. package/dist/src/modules/auth/components/OrganizationSettingsRoute.d.ts +27 -18
  303. package/dist/src/modules/auth/components/OrganizationSettingsRoute.js +184 -144
  304. package/dist/src/modules/auth/components/OrganizationSettingsRoute.js.map +1 -0
  305. package/dist/src/modules/auth/components/OrganizationSwitcher.d.ts +17 -6
  306. package/dist/src/modules/auth/components/OrganizationSwitcher.js +91 -69
  307. package/dist/src/modules/auth/components/OrganizationSwitcher.js.map +1 -0
  308. package/dist/src/modules/auth/components/PreferencesEditor.d.ts +44 -33
  309. package/dist/src/modules/auth/components/PreferencesEditor.js +82 -58
  310. package/dist/src/modules/auth/components/PreferencesEditor.js.map +1 -0
  311. package/dist/src/modules/auth/components/ProfileRoute.d.ts +7 -1
  312. package/dist/src/modules/auth/components/ProfileRoute.js +79 -36
  313. package/dist/src/modules/auth/components/ProfileRoute.js.map +1 -0
  314. package/dist/src/modules/auth/components/RangeNuqsDatePicker.d.ts +44 -30
  315. package/dist/src/modules/auth/components/RangeNuqsDatePicker.js +234 -242
  316. package/dist/src/modules/auth/components/RangeNuqsDatePicker.js.map +1 -0
  317. package/dist/src/modules/auth/components/ResetPasswordForm.d.ts +7 -1
  318. package/dist/src/modules/auth/components/ResetPasswordForm.js +97 -35
  319. package/dist/src/modules/auth/components/ResetPasswordForm.js.map +1 -0
  320. package/dist/src/modules/auth/components/ResetPasswordRoute.d.ts +7 -1
  321. package/dist/src/modules/auth/components/ResetPasswordRoute.js +34 -6
  322. package/dist/src/modules/auth/components/ResetPasswordRoute.js.map +1 -0
  323. package/dist/src/modules/auth/components/SignupFormRoute.d.ts +15 -5
  324. package/dist/src/modules/auth/components/SignupFormRoute.js +142 -99
  325. package/dist/src/modules/auth/components/SignupFormRoute.js.map +1 -0
  326. package/dist/src/modules/auth/components/SignupRoute.d.ts +13 -5
  327. package/dist/src/modules/auth/components/SignupRoute.js +59 -13
  328. package/dist/src/modules/auth/components/SignupRoute.js.map +1 -0
  329. package/dist/src/modules/auth/components/UserPreferences.d.ts +22 -11
  330. package/dist/src/modules/auth/components/UserPreferences.js +24 -12
  331. package/dist/src/modules/auth/components/UserPreferences.js.map +1 -0
  332. package/dist/src/modules/auth/components/WaitlistCard.d.ts +11 -4
  333. package/dist/src/modules/auth/components/WaitlistCard.js +63 -28
  334. package/dist/src/modules/auth/components/WaitlistCard.js.map +1 -0
  335. package/dist/src/modules/auth/components/WaitlistCodeValidation.d.ts +13 -5
  336. package/dist/src/modules/auth/components/WaitlistCodeValidation.js +42 -40
  337. package/dist/src/modules/auth/components/WaitlistCodeValidation.js.map +1 -0
  338. package/dist/src/modules/billing/components/BillingBetaPage.d.ts +15 -6
  339. package/dist/src/modules/billing/components/BillingBetaPage.js +155 -8
  340. package/dist/src/modules/billing/components/BillingBetaPage.js.map +1 -0
  341. package/dist/src/modules/billing/components/BillingInvoicePage.d.ts +13 -5
  342. package/dist/src/modules/billing/components/BillingInvoicePage.js +160 -30
  343. package/dist/src/modules/billing/components/BillingInvoicePage.js.map +1 -0
  344. package/dist/src/modules/billing/components/BillingPlanSelect.d.ts +11 -4
  345. package/dist/src/modules/billing/components/BillingPlanSelect.js +10 -7
  346. package/dist/src/modules/billing/components/BillingPlanSelect.js.map +1 -0
  347. package/dist/src/modules/billing/components/BillingRouter.d.ts +15 -7
  348. package/dist/src/modules/billing/components/BillingRouter.js +19 -6
  349. package/dist/src/modules/billing/components/BillingRouter.js.map +1 -0
  350. package/dist/src/modules/billing/components/BillingSinglePlanSelect.d.ts +17 -7
  351. package/dist/src/modules/billing/components/BillingSinglePlanSelect.js +163 -42
  352. package/dist/src/modules/billing/components/BillingSinglePlanSelect.js.map +1 -0
  353. package/dist/src/modules/table/components/ColumnOrderAndVisibility.d.ts +18 -8
  354. package/dist/src/modules/table/components/ColumnOrderAndVisibility.js +81 -38
  355. package/dist/src/modules/table/components/ColumnOrderAndVisibility.js.map +1 -0
  356. package/dist/src/modules/table/components/NuqsTable.d.ts +33 -21
  357. package/dist/src/modules/table/components/NuqsTable.js +295 -221
  358. package/dist/src/modules/table/components/NuqsTable.js.map +1 -0
  359. package/dist/src/modules/table/components/TableFiltering.d.ts +33 -21
  360. package/dist/src/modules/table/components/TableFiltering.js +408 -226
  361. package/dist/src/modules/table/components/TableFiltering.js.map +1 -0
  362. package/dist/src/modules/table/components/TableGroupBy.d.ts +18 -8
  363. package/dist/src/modules/table/components/TableGroupBy.js +56 -16
  364. package/dist/src/modules/table/components/TableGroupBy.js.map +1 -0
  365. package/dist/src/modules/table/components/TablePagination.d.ts +17 -7
  366. package/dist/src/modules/table/components/TablePagination.js +64 -32
  367. package/dist/src/modules/table/components/TablePagination.js.map +1 -0
  368. package/dist/src/modules/table/components/table.types.d.ts +15 -10
  369. package/dist/src/modules/table/components/table.types.js +0 -1
  370. package/dist/src/modules/table/filterTransformers.d.ts +35 -30
  371. package/dist/src/modules/table/filterTransformers.js +198 -261
  372. package/dist/src/modules/table/filterTransformers.js.map +1 -0
  373. package/dist/src/types.d.ts +8 -3
  374. package/dist/src/types.js +0 -1
  375. package/package.json +8 -6
  376. package/dist/translations/en/web-ui.json +0 -209
  377. package/dist/tsconfig.lib.tsbuildinfo +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TableFiltering.js","names":["Button"],"sources":["../../../../../src/modules/table/components/TableFiltering.tsx"],"sourcesContent":["import {\r\n DatePicker,\r\n DateRangePicker,\r\n type DateValue,\r\n Input,\r\n Select,\r\n SelectItem,\r\n type SharedSelection,\r\n} from \"@heroui/react\";\r\nimport { getLocalTimeZone, today } from \"@internationalized/date\";\r\nimport type { QueryFilters } from \"@m5kdev/commons/modules/schemas/query.schema\";\r\nimport type {\r\n ColumnDataType,\r\n ComponentForFilterMethod,\r\n FilterMethod,\r\n FilterMethods,\r\n} from \"@m5kdev/commons/modules/table/filter.types\";\r\nimport { PlusIcon, XIcon } from \"lucide-react\";\r\nimport type { ReactNode } from \"react\";\r\nimport { useCallback, useEffect, useMemo, useState } from \"react\";\r\nimport { Button } from \"../../../components/ui/button\";\r\nimport {\r\n type FilterValue,\r\n type HeroUIFilter,\r\n transformFiltersFromHeroUI,\r\n transformFiltersToHeroUI,\r\n} from \"../filterTransformers\";\r\n\r\ntype ComponentRenderer = (\r\n value: FilterValue,\r\n onChange: (value: FilterValue) => void,\r\n options?: { label: string; value: string }[]\r\n) => ReactNode;\r\n\r\nconst componentForFilterMethod: Record<ComponentForFilterMethod, ComponentRenderer> = {\r\n text: (value, onChange) => (\r\n <Input\r\n size=\"sm\"\r\n aria-label=\"Select Value\"\r\n className=\"flex-1 min-w-0 text-sm\"\r\n value={(value as string) ?? \"\"}\r\n onChange={(e) => onChange(e.target.value)}\r\n />\r\n ),\r\n number: (value, onChange) => (\r\n <Input\r\n size=\"sm\"\r\n aria-label=\"Select Value\"\r\n type=\"number\"\r\n className=\"flex-1 min-w-0 text-sm\"\r\n value={(value as number | null)?.toString() ?? \"\"}\r\n onChange={(e) => onChange(Number.parseFloat(e.target.value) || 0)}\r\n />\r\n ),\r\n date: (value, onChange) => (\r\n <DatePicker\r\n size=\"sm\"\r\n aria-label=\"Select Value\"\r\n className=\"flex-1 min-w-0 text-sm\"\r\n value={(value as any) ?? undefined}\r\n onChange={(date) => date && onChange(date as FilterValue)}\r\n maxValue={today(getLocalTimeZone()) as unknown as DateValue}\r\n />\r\n ),\r\n range: (value, onChange) => (\r\n <DateRangePicker\r\n size=\"sm\"\r\n aria-label=\"Select Value\"\r\n className=\"flex-1 min-w-0 text-sm\"\r\n value={(value as any) ?? undefined}\r\n onChange={(range) => range && onChange(range as FilterValue)}\r\n maxValue={today(getLocalTimeZone()) as unknown as DateValue}\r\n />\r\n ),\r\n radio: (value, onChange) => (\r\n <Select\r\n size=\"sm\"\r\n aria-label=\"Select Value\"\r\n className=\"flex-1 min-w-0 text-sm\"\r\n selectedKeys={(value as boolean | null) ? [\"true\"] : [\"false\"]}\r\n onSelectionChange={(keys) => onChange(keys.currentKey === \"true\")}\r\n >\r\n <SelectItem key=\"true\" className=\"text-sm\">\r\n True\r\n </SelectItem>\r\n <SelectItem key=\"false\" className=\"text-sm\">\r\n False\r\n </SelectItem>\r\n </Select>\r\n ),\r\n select: (value, onChange, options = []) => (\r\n <Select\r\n size=\"sm\"\r\n aria-label=\"Select Value\"\r\n className=\"flex-1 min-w-0 text-sm\"\r\n selectedKeys={(value as SharedSelection) ?? new Set()}\r\n onSelectionChange={(keys) => keys && onChange(keys as FilterValue)}\r\n >\r\n {options.map((option) => (\r\n <SelectItem key={option.value} className=\"text-sm\">\r\n {option.label}\r\n </SelectItem>\r\n ))}\r\n </Select>\r\n ),\r\n multiSelect: (value, onChange, options = []) => (\r\n <Select\r\n size=\"sm\"\r\n aria-label=\"Select Value\"\r\n selectionMode=\"multiple\"\r\n className=\"flex-1 min-w-0 text-sm\"\r\n selectedKeys={value ? new Set(value as SharedSelection) : new Set()}\r\n onSelectionChange={(keys) => onChange(keys as FilterValue)}\r\n >\r\n {options.map((option) => (\r\n <SelectItem key={option.value} className=\"text-sm\">\r\n {option.label}\r\n </SelectItem>\r\n ))}\r\n </Select>\r\n ),\r\n};\r\n\r\nconst defaultFilterMethods: FilterMethods = {\r\n string: [\r\n { value: \"contains\", label: \"Contains\", component: \"text\" },\r\n { value: \"equals\", label: \"Equals\", component: \"text\" },\r\n { value: \"starts_with\", label: \"Starts With\", component: \"text\" },\r\n { value: \"ends_with\", label: \"Ends With\", component: \"text\" },\r\n ],\r\n number: [\r\n { value: \"equals\", label: \"Equals\", component: \"number\" },\r\n { value: \"greater_than\", label: \"Greater Than\", component: \"number\" },\r\n { value: \"less_than\", label: \"Less Than\", component: \"number\" },\r\n ],\r\n date: [\r\n { value: \"on\", label: \"On\", component: \"date\" },\r\n { value: \"between\", label: \"Between\", component: \"range\" },\r\n { value: \"before\", label: \"Before\", component: \"date\" },\r\n { value: \"after\", label: \"After\", component: \"date\" },\r\n { value: \"intersect\", label: \"During\", component: \"range\" },\r\n ],\r\n boolean: [{ value: \"equals\", label: \"Equals\", component: \"radio\" }],\r\n enum: [\r\n { value: \"oneOf\", label: \"One Of\", component: \"multiSelect\" },\r\n { value: \"equals\", label: \"Equals\", component: \"select\" },\r\n ],\r\n};\r\n\r\nconst SINGLE_FILTER_KEY = \"single-filter\";\r\n\r\ntype TableFilteringProps = {\r\n columns: {\r\n id: string;\r\n label: string;\r\n type?: ColumnDataType | null;\r\n options?: { label: string; value: string }[] | null;\r\n endColumnId?: string | null;\r\n periodStartColumnId?: string | null;\r\n periodEndColumnId?: string | null;\r\n }[];\r\n onFiltersChange: (filters: QueryFilters) => void;\r\n filters: QueryFilters;\r\n onClose?: () => void;\r\n singleFilter?: boolean;\r\n filterMethods?: Partial<FilterMethods>;\r\n};\r\n\r\nconst mergeFilterMethods = (overrides?: Partial<FilterMethods>): FilterMethods => ({\r\n string:\r\n overrides?.string && overrides.string.length > 0\r\n ? overrides.string\r\n : defaultFilterMethods.string,\r\n number:\r\n overrides?.number && overrides.number.length > 0\r\n ? overrides.number\r\n : defaultFilterMethods.number,\r\n date: overrides?.date && overrides.date.length > 0 ? overrides.date : defaultFilterMethods.date,\r\n boolean:\r\n overrides?.boolean && overrides.boolean.length > 0\r\n ? overrides.boolean\r\n : defaultFilterMethods.boolean,\r\n enum: overrides?.enum && overrides.enum.length > 0 ? overrides.enum : defaultFilterMethods.enum,\r\n});\r\n\r\nexport const TableFiltering = ({\r\n columns,\r\n onFiltersChange,\r\n filters: initialFilters = [],\r\n onClose,\r\n singleFilter = false,\r\n filterMethods,\r\n}: TableFilteringProps) => {\r\n const [filters, setFilters] = useState<Record<string, HeroUIFilter>>({});\r\n const effectiveFilterMethods = useMemo(() => mergeFilterMethods(filterMethods), [filterMethods]);\r\n\r\n const createEmptyFilter = useCallback(\r\n (): HeroUIFilter => ({\r\n columnId: \"\",\r\n type: null,\r\n value: null,\r\n method: null,\r\n options: null,\r\n endColumnId: null,\r\n periodStartColumnId: null,\r\n periodEndColumnId: null,\r\n }),\r\n []\r\n );\r\n\r\n const addFilter = useCallback(() => {\r\n setFilters((prev) => {\r\n if (!singleFilter) {\r\n const filterId = crypto.randomUUID();\r\n return {\r\n ...prev,\r\n [filterId]: createEmptyFilter(),\r\n };\r\n }\r\n\r\n // single filter mode\r\n return Object.keys(prev).length > 0 ? prev : { [SINGLE_FILTER_KEY]: createEmptyFilter() };\r\n });\r\n }, [createEmptyFilter, singleFilter]);\r\n\r\n const removeFilter = useCallback(\r\n (filterId: string) => {\r\n setFilters((prev) => {\r\n if (!singleFilter) {\r\n const { [filterId]: _, ...rest } = prev;\r\n return rest;\r\n }\r\n\r\n // single filter mode resets the lone filter\r\n return { [SINGLE_FILTER_KEY]: createEmptyFilter() };\r\n });\r\n },\r\n [createEmptyFilter, singleFilter]\r\n );\r\n\r\n const columnsMap = useMemo(\r\n () => new Map(columns.map((column) => [column.id, column])),\r\n [columns]\r\n );\r\n\r\n useEffect(() => {\r\n // Transform initialFilters from FiltersToApply format to HeroUIFilter format\r\n const transformedFilters = transformFiltersToHeroUI(\r\n initialFilters,\r\n columnsMap,\r\n effectiveFilterMethods\r\n );\r\n\r\n if (!singleFilter) {\r\n setFilters(Object.fromEntries(transformedFilters.map((filter) => [filter.columnId, filter])));\r\n return;\r\n }\r\n\r\n const firstFilter = transformedFilters[0];\r\n setFilters({\r\n [SINGLE_FILTER_KEY]: firstFilter ?? createEmptyFilter(),\r\n });\r\n }, [createEmptyFilter, initialFilters, singleFilter, columnsMap, effectiveFilterMethods]);\r\n\r\n const selectColumn = useCallback(\r\n (filterId: string, columnId: string) => {\r\n setFilters((prev) => {\r\n const oldFilter = prev[filterId];\r\n if (!oldFilter) return prev;\r\n const column = columnsMap.get(columnId);\r\n if (!column) return prev;\r\n\r\n // If Period column, auto-set intersect method\r\n const isPeriodColumn = columnId.endsWith(\"__period\");\r\n const intersectMethod = isPeriodColumn\r\n ? (effectiveFilterMethods.date.find((m) => m.value === \"intersect\") ?? null)\r\n : null;\r\n\r\n return {\r\n ...prev,\r\n [filterId]: {\r\n ...oldFilter,\r\n columnId,\r\n type: column.type ?? null,\r\n options: column.options ?? null,\r\n endColumnId: column.endColumnId ?? null,\r\n periodStartColumnId: column.periodStartColumnId ?? null,\r\n periodEndColumnId: column.periodEndColumnId ?? null,\r\n method: intersectMethod,\r\n value: null,\r\n },\r\n };\r\n });\r\n },\r\n [columnsMap, effectiveFilterMethods]\r\n );\r\n\r\n const selectMethod = useCallback((filterId: string, method: FilterMethod) => {\r\n setFilters((prev) => {\r\n const oldFilter = prev[filterId];\r\n if (!oldFilter) return prev;\r\n return {\r\n ...prev,\r\n [filterId]: { ...oldFilter, method, value: null },\r\n };\r\n });\r\n }, []);\r\n\r\n const selectValue = useCallback((filterId: string, value: FilterValue) => {\r\n setFilters((prev) => {\r\n const oldFilter = prev[filterId];\r\n if (!oldFilter) return prev;\r\n return {\r\n ...prev,\r\n [filterId]: { ...oldFilter, value },\r\n };\r\n });\r\n }, []);\r\n\r\n const filterEntries = useMemo(() => Object.entries(filters), [filters]);\r\n\r\n const availableColumnsMap = useMemo(() => {\r\n const map = new Map<string, typeof columns>();\r\n filterEntries.forEach(([filterId]) => {\r\n const columnsUsedByOtherFilters = new Set(\r\n filterEntries\r\n .filter(([id]) => id !== filterId)\r\n .map(([_, f]) => f.columnId)\r\n .filter((id) => id !== \"\")\r\n );\r\n map.set(\r\n filterId,\r\n columns.filter((column) => !columnsUsedByOtherFilters.has(column.id))\r\n );\r\n });\r\n return map;\r\n }, [filterEntries, columns]);\r\n\r\n const applyFilters = useCallback(() => {\r\n const heroUIFilters = Object.values(filters);\r\n const filtersToApply = transformFiltersFromHeroUI(heroUIFilters);\r\n onFiltersChange(filtersToApply);\r\n onClose?.();\r\n }, [filters, onFiltersChange, onClose]);\r\n\r\n return (\r\n <div className=\"flex flex-col gap-2 p-1 min-w-[600px]\">\r\n {filterEntries.map(([filterId, filter]) => {\r\n const availableColumns = availableColumnsMap.get(filterId) ?? columns;\r\n return (\r\n <TableFilteringItem\r\n key={filterId}\r\n id={filterId}\r\n filter={filter}\r\n columns={availableColumns}\r\n selectColumn={selectColumn}\r\n selectMethod={selectMethod}\r\n removeFilter={removeFilter}\r\n selectValue={selectValue}\r\n filterMethods={effectiveFilterMethods}\r\n />\r\n );\r\n })}\r\n {!singleFilter && (\r\n <Button variant=\"outline\" size=\"sm\" onClick={addFilter}>\r\n <PlusIcon className=\"h-4 w-4\" />\r\n Add Filter\r\n </Button>\r\n )}\r\n <Button onClick={applyFilters}>{singleFilter ? \"Apply Filter\" : \"Apply Filters\"}</Button>\r\n </div>\r\n );\r\n};\r\n\r\nconst TableFilteringItem = ({\r\n id,\r\n filter,\r\n columns,\r\n selectColumn,\r\n selectMethod,\r\n selectValue,\r\n removeFilter,\r\n filterMethods,\r\n}: {\r\n id: string;\r\n filter: HeroUIFilter;\r\n columns: {\r\n id: string;\r\n label: string;\r\n type?: ColumnDataType | null;\r\n options?: { label: string; value: string }[] | null;\r\n endColumnId?: string | null;\r\n periodStartColumnId?: string | null;\r\n periodEndColumnId?: string | null;\r\n }[];\r\n selectColumn: (filterId: string, columnId: string) => void;\r\n selectMethod: (filterId: string, method: FilterMethod) => void;\r\n selectValue: (filterId: string, value: FilterValue) => void;\r\n removeFilter: (filterId: string) => void;\r\n filterMethods: FilterMethods;\r\n}) => {\r\n const handleColumnChange = useCallback(\r\n (keys: any) => {\r\n const columnId = String(keys.currentKey);\r\n selectColumn(id, columnId);\r\n },\r\n [id, selectColumn]\r\n );\r\n\r\n const methodsForType = useMemo(() => {\r\n if (!filter.type) return [];\r\n\r\n // Period columns only support intersect method\r\n const isPeriodColumn = filter.columnId.endsWith(\"__period\");\r\n if (isPeriodColumn) {\r\n const intersectMethod = filterMethods.date.find((m) => m.value === \"intersect\");\r\n return intersectMethod ? [intersectMethod] : [];\r\n }\r\n\r\n const baseMethods = filterMethods[filter.type as ColumnDataType] ?? [];\r\n const emptyMethods: FilterMethod[] = [\r\n { value: \"isEmpty\", label: \"Is Empty\", component: null },\r\n { value: \"isNotEmpty\", label: \"Is Not Empty\", component: null },\r\n ];\r\n\r\n if (filter.type !== \"boolean\" && filter.type !== \"date\") {\r\n return [...baseMethods, ...emptyMethods];\r\n }\r\n\r\n return baseMethods;\r\n }, [filter.type, filter.columnId, filter.method?.value, filterMethods]);\r\n\r\n const handleMethodChange = useCallback(\r\n (keys: any) => {\r\n if (!filter.type) return;\r\n // Use methodsForType instead of filterMethods to include dynamically added methods\r\n const method = methodsForType.find(\r\n (currentMethod: FilterMethod) => currentMethod.value === String(keys.currentKey)\r\n );\r\n if (method) {\r\n selectMethod(id, method);\r\n }\r\n },\r\n [id, filter.type, selectMethod, methodsForType]\r\n );\r\n\r\n const handleValueChange = useCallback(\r\n (value: FilterValue) => {\r\n selectValue(id, value);\r\n },\r\n [id, selectValue]\r\n );\r\n\r\n const methodSelect = useMemo(() => {\r\n if (!filter.type) return null;\r\n return (\r\n <Select\r\n size=\"sm\"\r\n aria-label=\"Select Method\"\r\n className=\"w-40 flex-shrink-0 text-sm\"\r\n selectedKeys={filter.method?.value ? [filter.method.value] : []}\r\n onSelectionChange={handleMethodChange}\r\n popoverProps={{\r\n className: \"w-auto min-w-max\",\r\n }}\r\n >\r\n {methodsForType.map((method: FilterMethod) => (\r\n <SelectItem key={method.value} className=\"text-sm\">\r\n {method.label}\r\n </SelectItem>\r\n ))}\r\n </Select>\r\n );\r\n }, [filter.type, filter.method?.value, methodsForType, handleMethodChange]);\r\n\r\n const filterValueComponent = useMemo(() => {\r\n if (!filter.method?.component) {\r\n return <div className=\"flex-1 min-w-0\" />;\r\n }\r\n const component = filter.method.component as ComponentForFilterMethod;\r\n const ComponentFn =\r\n componentForFilterMethod[component as keyof typeof componentForFilterMethod];\r\n if (!ComponentFn) return <div className=\"flex-1 min-w-0\" />;\r\n return ComponentFn(filter.value as any, handleValueChange, filter.options ?? []);\r\n }, [filter.method?.component, filter.value, filter.options, handleValueChange]);\r\n\r\n const columnSelectItems = useMemo(\r\n () =>\r\n columns.map((column) => (\r\n <SelectItem key={column.id} className=\"text-sm\">\r\n {String(column.label)}\r\n </SelectItem>\r\n )),\r\n [columns]\r\n );\r\n\r\n return (\r\n <div className=\"flex items-center gap-2 w-full\">\r\n <div className=\"flex flex-1 items-center gap-2 min-w-0\">\r\n <Select\r\n size=\"sm\"\r\n aria-label=\"Select Column\"\r\n className=\"w-40 flex-shrink-0 text-sm\"\r\n selectedKeys={filter.columnId ? [filter.columnId] : []}\r\n onSelectionChange={handleColumnChange}\r\n popoverProps={{\r\n className: \"w-auto min-w-max\",\r\n }}\r\n >\r\n {columnSelectItems}\r\n </Select>\r\n {methodSelect}\r\n {filterValueComponent}\r\n </div>\r\n <Button variant=\"outline\" size=\"sm\" onClick={() => removeFilter(id)}>\r\n <XIcon className=\"h-4 w-4\" />\r\n </Button>\r\n </div>\r\n );\r\n};\r\n"],"mappings":";;;;;;;;AAkCA,MAAM,2BAAgF;CACpF,OAAO,OAAO,aACZ,oBAAC,OAAD;EACE,MAAK;EACL,cAAW;EACX,WAAU;EACV,OAAQ,SAAoB;EAC5B,WAAW,MAAM,SAAS,EAAE,OAAO,MAAM;EACzC,CAAA;CAEJ,SAAS,OAAO,aACd,oBAAC,OAAD;EACE,MAAK;EACL,cAAW;EACX,MAAK;EACL,WAAU;EACV,OAAQ,OAAyB,UAAU,IAAI;EAC/C,WAAW,MAAM,SAAS,OAAO,WAAW,EAAE,OAAO,MAAM,IAAI,EAAE;EACjE,CAAA;CAEJ,OAAO,OAAO,aACZ,oBAAC,YAAD;EACE,MAAK;EACL,cAAW;EACX,WAAU;EACV,OAAQ,SAAiB,KAAA;EACzB,WAAW,SAAS,QAAQ,SAAS,KAAoB;EACzD,UAAU,MAAM,kBAAkB,CAAC;EACnC,CAAA;CAEJ,QAAQ,OAAO,aACb,oBAAC,iBAAD;EACE,MAAK;EACL,cAAW;EACX,WAAU;EACV,OAAQ,SAAiB,KAAA;EACzB,WAAW,UAAU,SAAS,SAAS,MAAqB;EAC5D,UAAU,MAAM,kBAAkB,CAAC;EACnC,CAAA;CAEJ,QAAQ,OAAO,aACb,qBAAC,QAAD;EACE,MAAK;EACL,cAAW;EACX,WAAU;EACV,cAAe,QAA2B,CAAC,OAAO,GAAG,CAAC,QAAQ;EAC9D,oBAAoB,SAAS,SAAS,KAAK,eAAe,OAAO;YALnE,CAOE,oBAAC,YAAD;GAAuB,WAAU;aAAU;GAE9B,EAFG,OAEH,EACb,oBAAC,YAAD;GAAwB,WAAU;aAAU;GAE/B,EAFG,QAEH,CACN;;CAEX,SAAS,OAAO,UAAU,UAAU,EAAE,KACpC,oBAAC,QAAD;EACE,MAAK;EACL,cAAW;EACX,WAAU;EACV,cAAe,yBAA6B,IAAI,KAAK;EACrD,oBAAoB,SAAS,QAAQ,SAAS,KAAoB;YAEjE,QAAQ,KAAK,WACZ,oBAAC,YAAD;GAA+B,WAAU;aACtC,OAAO;GACG,EAFI,OAAO,MAEX,CACb;EACK,CAAA;CAEX,cAAc,OAAO,UAAU,UAAU,EAAE,KACzC,oBAAC,QAAD;EACE,MAAK;EACL,cAAW;EACX,eAAc;EACd,WAAU;EACV,cAAc,QAAQ,IAAI,IAAI,MAAyB,mBAAG,IAAI,KAAK;EACnE,oBAAoB,SAAS,SAAS,KAAoB;YAEzD,QAAQ,KAAK,WACZ,oBAAC,YAAD;GAA+B,WAAU;aACtC,OAAO;GACG,EAFI,OAAO,MAEX,CACb;EACK,CAAA;CAEZ;AAED,MAAM,uBAAsC;CAC1C,QAAQ;EACN;GAAE,OAAO;GAAY,OAAO;GAAY,WAAW;GAAQ;EAC3D;GAAE,OAAO;GAAU,OAAO;GAAU,WAAW;GAAQ;EACvD;GAAE,OAAO;GAAe,OAAO;GAAe,WAAW;GAAQ;EACjE;GAAE,OAAO;GAAa,OAAO;GAAa,WAAW;GAAQ;EAC9D;CACD,QAAQ;EACN;GAAE,OAAO;GAAU,OAAO;GAAU,WAAW;GAAU;EACzD;GAAE,OAAO;GAAgB,OAAO;GAAgB,WAAW;GAAU;EACrE;GAAE,OAAO;GAAa,OAAO;GAAa,WAAW;GAAU;EAChE;CACD,MAAM;EACJ;GAAE,OAAO;GAAM,OAAO;GAAM,WAAW;GAAQ;EAC/C;GAAE,OAAO;GAAW,OAAO;GAAW,WAAW;GAAS;EAC1D;GAAE,OAAO;GAAU,OAAO;GAAU,WAAW;GAAQ;EACvD;GAAE,OAAO;GAAS,OAAO;GAAS,WAAW;GAAQ;EACrD;GAAE,OAAO;GAAa,OAAO;GAAU,WAAW;GAAS;EAC5D;CACD,SAAS,CAAC;EAAE,OAAO;EAAU,OAAO;EAAU,WAAW;EAAS,CAAC;CACnE,MAAM,CACJ;EAAE,OAAO;EAAS,OAAO;EAAU,WAAW;EAAe,EAC7D;EAAE,OAAO;EAAU,OAAO;EAAU,WAAW;EAAU,CAC1D;CACF;AAED,MAAM,oBAAoB;AAmB1B,MAAM,sBAAsB,eAAuD;CACjF,QACE,WAAW,UAAU,UAAU,OAAO,SAAS,IAC3C,UAAU,SACV,qBAAqB;CAC3B,QACE,WAAW,UAAU,UAAU,OAAO,SAAS,IAC3C,UAAU,SACV,qBAAqB;CAC3B,MAAM,WAAW,QAAQ,UAAU,KAAK,SAAS,IAAI,UAAU,OAAO,qBAAqB;CAC3F,SACE,WAAW,WAAW,UAAU,QAAQ,SAAS,IAC7C,UAAU,UACV,qBAAqB;CAC3B,MAAM,WAAW,QAAQ,UAAU,KAAK,SAAS,IAAI,UAAU,OAAO,qBAAqB;CAC5F;AAED,MAAa,kBAAkB,EAC7B,SACA,iBACA,SAAS,iBAAiB,EAAE,EAC5B,SACA,eAAe,OACf,oBACyB;CACzB,MAAM,CAAC,SAAS,cAAc,SAAuC,EAAE,CAAC;CACxE,MAAM,yBAAyB,cAAc,mBAAmB,cAAc,EAAE,CAAC,cAAc,CAAC;CAEhG,MAAM,oBAAoB,mBACH;EACnB,UAAU;EACV,MAAM;EACN,OAAO;EACP,QAAQ;EACR,SAAS;EACT,aAAa;EACb,qBAAqB;EACrB,mBAAmB;EACpB,GACD,EAAE,CACH;CAED,MAAM,YAAY,kBAAkB;AAClC,cAAY,SAAS;AACnB,OAAI,CAAC,cAAc;IACjB,MAAM,WAAW,OAAO,YAAY;AACpC,WAAO;KACL,GAAG;MACF,WAAW,mBAAmB;KAChC;;AAIH,UAAO,OAAO,KAAK,KAAK,CAAC,SAAS,IAAI,OAAO,GAAG,oBAAoB,mBAAmB,EAAE;IACzF;IACD,CAAC,mBAAmB,aAAa,CAAC;CAErC,MAAM,eAAe,aAClB,aAAqB;AACpB,cAAY,SAAS;AACnB,OAAI,CAAC,cAAc;IACjB,MAAM,GAAG,WAAW,GAAG,GAAG,SAAS;AACnC,WAAO;;AAIT,UAAO,GAAG,oBAAoB,mBAAmB,EAAE;IACnD;IAEJ,CAAC,mBAAmB,aAAa,CAClC;CAED,MAAM,aAAa,cACX,IAAI,IAAI,QAAQ,KAAK,WAAW,CAAC,OAAO,IAAI,OAAO,CAAC,CAAC,EAC3D,CAAC,QAAQ,CACV;AAED,iBAAgB;EAEd,MAAM,qBAAqB,yBACzB,gBACA,YACA,uBACD;AAED,MAAI,CAAC,cAAc;AACjB,cAAW,OAAO,YAAY,mBAAmB,KAAK,WAAW,CAAC,OAAO,UAAU,OAAO,CAAC,CAAC,CAAC;AAC7F;;EAGF,MAAM,cAAc,mBAAmB;AACvC,aAAW,GACR,oBAAoB,eAAe,mBAAmB,EACxD,CAAC;IACD;EAAC;EAAmB;EAAgB;EAAc;EAAY;EAAuB,CAAC;CAEzF,MAAM,eAAe,aAClB,UAAkB,aAAqB;AACtC,cAAY,SAAS;GACnB,MAAM,YAAY,KAAK;AACvB,OAAI,CAAC,UAAW,QAAO;GACvB,MAAM,SAAS,WAAW,IAAI,SAAS;AACvC,OAAI,CAAC,OAAQ,QAAO;GAIpB,MAAM,kBADiB,SAAS,SAAS,WAAW,GAE/C,uBAAuB,KAAK,MAAM,MAAM,EAAE,UAAU,YAAY,IAAI,OACrE;AAEJ,UAAO;IACL,GAAG;KACF,WAAW;KACV,GAAG;KACH;KACA,MAAM,OAAO,QAAQ;KACrB,SAAS,OAAO,WAAW;KAC3B,aAAa,OAAO,eAAe;KACnC,qBAAqB,OAAO,uBAAuB;KACnD,mBAAmB,OAAO,qBAAqB;KAC/C,QAAQ;KACR,OAAO;KACR;IACF;IACD;IAEJ,CAAC,YAAY,uBAAuB,CACrC;CAED,MAAM,eAAe,aAAa,UAAkB,WAAyB;AAC3E,cAAY,SAAS;GACnB,MAAM,YAAY,KAAK;AACvB,OAAI,CAAC,UAAW,QAAO;AACvB,UAAO;IACL,GAAG;KACF,WAAW;KAAE,GAAG;KAAW;KAAQ,OAAO;KAAM;IAClD;IACD;IACD,EAAE,CAAC;CAEN,MAAM,cAAc,aAAa,UAAkB,UAAuB;AACxE,cAAY,SAAS;GACnB,MAAM,YAAY,KAAK;AACvB,OAAI,CAAC,UAAW,QAAO;AACvB,UAAO;IACL,GAAG;KACF,WAAW;KAAE,GAAG;KAAW;KAAO;IACpC;IACD;IACD,EAAE,CAAC;CAEN,MAAM,gBAAgB,cAAc,OAAO,QAAQ,QAAQ,EAAE,CAAC,QAAQ,CAAC;CAEvE,MAAM,sBAAsB,cAAc;EACxC,MAAM,sBAAM,IAAI,KAA6B;AAC7C,gBAAc,SAAS,CAAC,cAAc;GACpC,MAAM,4BAA4B,IAAI,IACpC,cACG,QAAQ,CAAC,QAAQ,OAAO,SAAS,CACjC,KAAK,CAAC,GAAG,OAAO,EAAE,SAAS,CAC3B,QAAQ,OAAO,OAAO,GAAG,CAC7B;AACD,OAAI,IACF,UACA,QAAQ,QAAQ,WAAW,CAAC,0BAA0B,IAAI,OAAO,GAAG,CAAC,CACtE;IACD;AACF,SAAO;IACN,CAAC,eAAe,QAAQ,CAAC;CAE5B,MAAM,eAAe,kBAAkB;AAGrC,kBADuB,2BADD,OAAO,OAAO,QAAQ,CACoB,CACjC;AAC/B,aAAW;IACV;EAAC;EAAS;EAAiB;EAAQ,CAAC;AAEvC,QACE,qBAAC,OAAD;EAAK,WAAU;YAAf;GACG,cAAc,KAAK,CAAC,UAAU,YAAY;AAEzC,WACE,oBAAC,oBAAD;KAEE,IAAI;KACI;KACR,SANqB,oBAAoB,IAAI,SAAS,IAAI;KAO5C;KACA;KACA;KACD;KACb,eAAe;KACf,EATK,SASL;KAEJ;GACD,CAAC,gBACA,qBAACA,UAAD;IAAQ,SAAQ;IAAU,MAAK;IAAK,SAAS;cAA7C,CACE,oBAAC,UAAD,EAAU,WAAU,WAAY,CAAA,EAAA,aAEzB;;GAEX,oBAACA,UAAD;IAAQ,SAAS;cAAe,eAAe,iBAAiB;IAAyB,CAAA;GACrF;;;AAIV,MAAM,sBAAsB,EAC1B,IACA,QACA,SACA,cACA,cACA,aACA,cACA,oBAkBI;CACJ,MAAM,qBAAqB,aACxB,SAAc;AAEb,eAAa,IADI,OAAO,KAAK,WAAW,CACd;IAE5B,CAAC,IAAI,aAAa,CACnB;CAED,MAAM,iBAAiB,cAAc;AACnC,MAAI,CAAC,OAAO,KAAM,QAAO,EAAE;AAI3B,MADuB,OAAO,SAAS,SAAS,WAAW,EACvC;GAClB,MAAM,kBAAkB,cAAc,KAAK,MAAM,MAAM,EAAE,UAAU,YAAY;AAC/E,UAAO,kBAAkB,CAAC,gBAAgB,GAAG,EAAE;;EAGjD,MAAM,cAAc,cAAc,OAAO,SAA2B,EAAE;EACtE,MAAM,eAA+B,CACnC;GAAE,OAAO;GAAW,OAAO;GAAY,WAAW;GAAM,EACxD;GAAE,OAAO;GAAc,OAAO;GAAgB,WAAW;GAAM,CAChE;AAED,MAAI,OAAO,SAAS,aAAa,OAAO,SAAS,OAC/C,QAAO,CAAC,GAAG,aAAa,GAAG,aAAa;AAG1C,SAAO;IACN;EAAC,OAAO;EAAM,OAAO;EAAU,OAAO,QAAQ;EAAO;EAAc,CAAC;CAEvE,MAAM,qBAAqB,aACxB,SAAc;AACb,MAAI,CAAC,OAAO,KAAM;EAElB,MAAM,SAAS,eAAe,MAC3B,kBAAgC,cAAc,UAAU,OAAO,KAAK,WAAW,CACjF;AACD,MAAI,OACF,cAAa,IAAI,OAAO;IAG5B;EAAC;EAAI,OAAO;EAAM;EAAc;EAAe,CAChD;CAED,MAAM,oBAAoB,aACvB,UAAuB;AACtB,cAAY,IAAI,MAAM;IAExB,CAAC,IAAI,YAAY,CAClB;CAED,MAAM,eAAe,cAAc;AACjC,MAAI,CAAC,OAAO,KAAM,QAAO;AACzB,SACE,oBAAC,QAAD;GACE,MAAK;GACL,cAAW;GACX,WAAU;GACV,cAAc,OAAO,QAAQ,QAAQ,CAAC,OAAO,OAAO,MAAM,GAAG,EAAE;GAC/D,mBAAmB;GACnB,cAAc,EACZ,WAAW,oBACZ;aAEA,eAAe,KAAK,WACnB,oBAAC,YAAD;IAA+B,WAAU;cACtC,OAAO;IACG,EAFI,OAAO,MAEX,CACb;GACK,CAAA;IAEV;EAAC,OAAO;EAAM,OAAO,QAAQ;EAAO;EAAgB;EAAmB,CAAC;CAE3E,MAAM,uBAAuB,cAAc;AACzC,MAAI,CAAC,OAAO,QAAQ,UAClB,QAAO,oBAAC,OAAD,EAAK,WAAU,kBAAmB,CAAA;EAG3C,MAAM,cACJ,yBAFgB,OAAO,OAAO;AAGhC,MAAI,CAAC,YAAa,QAAO,oBAAC,OAAD,EAAK,WAAU,kBAAmB,CAAA;AAC3D,SAAO,YAAY,OAAO,OAAc,mBAAmB,OAAO,WAAW,EAAE,CAAC;IAC/E;EAAC,OAAO,QAAQ;EAAW,OAAO;EAAO,OAAO;EAAS;EAAkB,CAAC;CAE/E,MAAM,oBAAoB,cAEtB,QAAQ,KAAK,WACX,oBAAC,YAAD;EAA4B,WAAU;YACnC,OAAO,OAAO,MAAM;EACV,EAFI,OAAO,GAEX,CACb,EACJ,CAAC,QAAQ,CACV;AAED,QACE,qBAAC,OAAD;EAAK,WAAU;YAAf,CACE,qBAAC,OAAD;GAAK,WAAU;aAAf;IACE,oBAAC,QAAD;KACE,MAAK;KACL,cAAW;KACX,WAAU;KACV,cAAc,OAAO,WAAW,CAAC,OAAO,SAAS,GAAG,EAAE;KACtD,mBAAmB;KACnB,cAAc,EACZ,WAAW,oBACZ;eAEA;KACM,CAAA;IACR;IACA;IACG;MACN,oBAACA,UAAD;GAAQ,SAAQ;GAAU,MAAK;GAAK,eAAe,aAAa,GAAG;aACjE,oBAAC,OAAD,EAAO,WAAU,WAAY,CAAA;GACtB,CAAA,CACL"}
@@ -1,12 +1,22 @@
1
+ import * as _$react_jsx_runtime0 from "react/jsx-runtime";
2
+
3
+ //#region src/modules/table/components/TableGroupBy.d.ts
1
4
  interface TableGroupByColumn {
2
- id: string;
3
- label: string;
5
+ id: string;
6
+ label: string;
4
7
  }
5
8
  interface TableGroupByProps {
6
- columns: TableGroupByColumn[];
7
- activeGrouping: string[];
8
- onGroupingChange: (columnIds: string[]) => void;
9
- onClose: () => void;
9
+ columns: TableGroupByColumn[];
10
+ activeGrouping: string[];
11
+ onGroupingChange: (columnIds: string[]) => void;
12
+ onClose: () => void;
10
13
  }
11
- export declare const TableGroupBy: ({ columns, activeGrouping, onGroupingChange, onClose, }: TableGroupByProps) => import("react/jsx-runtime").JSX.Element;
12
- export {};
14
+ declare const TableGroupBy: ({
15
+ columns,
16
+ activeGrouping,
17
+ onGroupingChange,
18
+ onClose
19
+ }: TableGroupByProps) => _$react_jsx_runtime0.JSX.Element;
20
+ //#endregion
21
+ export { TableGroupBy };
22
+ //# sourceMappingURL=TableGroupBy.d.ts.map
@@ -1,18 +1,58 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
1
+ import { cn } from "../../../lib/utils.js";
2
+ import { Button } from "../../../components/ui/button.js";
2
3
  import { useState } from "react";
3
- import { Button } from "../../../components/ui/button";
4
- import { cn } from "../../../lib/utils";
5
- export const TableGroupBy = ({ columns, activeGrouping, onGroupingChange, onClose, }) => {
6
- const [selected, setSelected] = useState(activeGrouping);
7
- const toggle = (id) => {
8
- setSelected((prev) => (prev.includes(id) ? prev.filter((s) => s !== id) : [...prev, id]));
9
- };
10
- const onApply = () => {
11
- onGroupingChange(selected);
12
- onClose();
13
- };
14
- const onClear = () => {
15
- setSelected([]);
16
- };
17
- return (_jsxs("div", { className: "flex flex-col gap-2 p-1 min-w-[180px]", children: [_jsx("div", { className: "flex flex-col gap-0.5", children: columns.map((col) => (_jsxs("button", { type: "button", className: cn("text-left px-2 py-1.5 rounded text-sm hover:bg-muted transition-colors flex items-center gap-2", selected.includes(col.id) && "bg-muted font-medium"), onClick: () => toggle(col.id), children: [_jsx("span", { className: cn("h-4 w-4 rounded border border-muted-foreground/40 flex items-center justify-center shrink-0 text-xs", selected.includes(col.id) && "bg-primary border-primary text-primary-foreground"), children: selected.includes(col.id) ? "✓" : "" }), col.label, selected.includes(col.id) && selected.length > 1 && (_jsx("span", { className: "text-muted-foreground text-xs ml-auto", children: selected.indexOf(col.id) + 1 }))] }, col.id))) }), _jsxs("div", { className: "flex gap-1.5", children: [_jsx(Button, { size: "sm", variant: "outline", onClick: onClear, className: "flex-1", children: "Clear" }), _jsx(Button, { size: "sm", onClick: onApply, className: "flex-1", children: "Apply" })] })] }));
4
+ import { jsx, jsxs } from "react/jsx-runtime";
5
+ //#region src/modules/table/components/TableGroupBy.tsx
6
+ const TableGroupBy = ({ columns, activeGrouping, onGroupingChange, onClose }) => {
7
+ const [selected, setSelected] = useState(activeGrouping);
8
+ const toggle = (id) => {
9
+ setSelected((prev) => prev.includes(id) ? prev.filter((s) => s !== id) : [...prev, id]);
10
+ };
11
+ const onApply = () => {
12
+ onGroupingChange(selected);
13
+ onClose();
14
+ };
15
+ const onClear = () => {
16
+ setSelected([]);
17
+ };
18
+ return /* @__PURE__ */ jsxs("div", {
19
+ className: "flex flex-col gap-2 p-1 min-w-[180px]",
20
+ children: [/* @__PURE__ */ jsx("div", {
21
+ className: "flex flex-col gap-0.5",
22
+ children: columns.map((col) => /* @__PURE__ */ jsxs("button", {
23
+ type: "button",
24
+ className: cn("text-left px-2 py-1.5 rounded text-sm hover:bg-muted transition-colors flex items-center gap-2", selected.includes(col.id) && "bg-muted font-medium"),
25
+ onClick: () => toggle(col.id),
26
+ children: [
27
+ /* @__PURE__ */ jsx("span", {
28
+ className: cn("h-4 w-4 rounded border border-muted-foreground/40 flex items-center justify-center shrink-0 text-xs", selected.includes(col.id) && "bg-primary border-primary text-primary-foreground"),
29
+ children: selected.includes(col.id) ? "✓" : ""
30
+ }),
31
+ col.label,
32
+ selected.includes(col.id) && selected.length > 1 && /* @__PURE__ */ jsx("span", {
33
+ className: "text-muted-foreground text-xs ml-auto",
34
+ children: selected.indexOf(col.id) + 1
35
+ })
36
+ ]
37
+ }, col.id))
38
+ }), /* @__PURE__ */ jsxs("div", {
39
+ className: "flex gap-1.5",
40
+ children: [/* @__PURE__ */ jsx(Button, {
41
+ size: "sm",
42
+ variant: "outline",
43
+ onClick: onClear,
44
+ className: "flex-1",
45
+ children: "Clear"
46
+ }), /* @__PURE__ */ jsx(Button, {
47
+ size: "sm",
48
+ onClick: onApply,
49
+ className: "flex-1",
50
+ children: "Apply"
51
+ })]
52
+ })]
53
+ });
18
54
  };
55
+ //#endregion
56
+ export { TableGroupBy };
57
+
58
+ //# sourceMappingURL=TableGroupBy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TableGroupBy.js","names":[],"sources":["../../../../../src/modules/table/components/TableGroupBy.tsx"],"sourcesContent":["import { useState } from \"react\";\r\nimport { Button } from \"../../../components/ui/button\";\r\nimport { cn } from \"../../../lib/utils\";\r\n\r\ninterface TableGroupByColumn {\r\n id: string;\r\n label: string;\r\n}\r\n\r\ninterface TableGroupByProps {\r\n columns: TableGroupByColumn[];\r\n activeGrouping: string[];\r\n onGroupingChange: (columnIds: string[]) => void;\r\n onClose: () => void;\r\n}\r\n\r\nexport const TableGroupBy = ({\r\n columns,\r\n activeGrouping,\r\n onGroupingChange,\r\n onClose,\r\n}: TableGroupByProps) => {\r\n const [selected, setSelected] = useState<string[]>(activeGrouping);\r\n\r\n const toggle = (id: string) => {\r\n setSelected((prev) => (prev.includes(id) ? prev.filter((s) => s !== id) : [...prev, id]));\r\n };\r\n\r\n const onApply = () => {\r\n onGroupingChange(selected);\r\n onClose();\r\n };\r\n\r\n const onClear = () => {\r\n setSelected([]);\r\n };\r\n\r\n return (\r\n <div className=\"flex flex-col gap-2 p-1 min-w-[180px]\">\r\n <div className=\"flex flex-col gap-0.5\">\r\n {columns.map((col) => (\r\n <button\r\n key={col.id}\r\n type=\"button\"\r\n className={cn(\r\n \"text-left px-2 py-1.5 rounded text-sm hover:bg-muted transition-colors flex items-center gap-2\",\r\n selected.includes(col.id) && \"bg-muted font-medium\"\r\n )}\r\n onClick={() => toggle(col.id)}\r\n >\r\n <span\r\n className={cn(\r\n \"h-4 w-4 rounded border border-muted-foreground/40 flex items-center justify-center shrink-0 text-xs\",\r\n selected.includes(col.id) && \"bg-primary border-primary text-primary-foreground\"\r\n )}\r\n >\r\n {selected.includes(col.id) ? \"✓\" : \"\"}\r\n </span>\r\n {col.label}\r\n {selected.includes(col.id) && selected.length > 1 && (\r\n <span className=\"text-muted-foreground text-xs ml-auto\">\r\n {selected.indexOf(col.id) + 1}\r\n </span>\r\n )}\r\n </button>\r\n ))}\r\n </div>\r\n <div className=\"flex gap-1.5\">\r\n <Button size=\"sm\" variant=\"outline\" onClick={onClear} className=\"flex-1\">\r\n Clear\r\n </Button>\r\n <Button size=\"sm\" onClick={onApply} className=\"flex-1\">\r\n Apply\r\n </Button>\r\n </div>\r\n </div>\r\n );\r\n};\r\n"],"mappings":";;;;;AAgBA,MAAa,gBAAgB,EAC3B,SACA,gBACA,kBACA,cACuB;CACvB,MAAM,CAAC,UAAU,eAAe,SAAmB,eAAe;CAElE,MAAM,UAAU,OAAe;AAC7B,eAAa,SAAU,KAAK,SAAS,GAAG,GAAG,KAAK,QAAQ,MAAM,MAAM,GAAG,GAAG,CAAC,GAAG,MAAM,GAAG,CAAE;;CAG3F,MAAM,gBAAgB;AACpB,mBAAiB,SAAS;AAC1B,WAAS;;CAGX,MAAM,gBAAgB;AACpB,cAAY,EAAE,CAAC;;AAGjB,QACE,qBAAC,OAAD;EAAK,WAAU;YAAf,CACE,oBAAC,OAAD;GAAK,WAAU;aACZ,QAAQ,KAAK,QACZ,qBAAC,UAAD;IAEE,MAAK;IACL,WAAW,GACT,kGACA,SAAS,SAAS,IAAI,GAAG,IAAI,uBAC9B;IACD,eAAe,OAAO,IAAI,GAAG;cAP/B;KASE,oBAAC,QAAD;MACE,WAAW,GACT,uGACA,SAAS,SAAS,IAAI,GAAG,IAAI,oDAC9B;gBAEA,SAAS,SAAS,IAAI,GAAG,GAAG,MAAM;MAC9B,CAAA;KACN,IAAI;KACJ,SAAS,SAAS,IAAI,GAAG,IAAI,SAAS,SAAS,KAC9C,oBAAC,QAAD;MAAM,WAAU;gBACb,SAAS,QAAQ,IAAI,GAAG,GAAG;MACvB,CAAA;KAEF;MAtBF,IAAI,GAsBF,CACT;GACE,CAAA,EACN,qBAAC,OAAD;GAAK,WAAU;aAAf,CACE,oBAAC,QAAD;IAAQ,MAAK;IAAK,SAAQ;IAAU,SAAS;IAAS,WAAU;cAAS;IAEhE,CAAA,EACT,oBAAC,QAAD;IAAQ,MAAK;IAAK,SAAS;IAAS,WAAU;cAAS;IAE9C,CAAA,CACL;KACF"}
@@ -1,9 +1,19 @@
1
- import type { TableProps } from "@m5kdev/frontend/modules/table/hooks/useNuqsTable";
1
+ import * as _$react_jsx_runtime0 from "react/jsx-runtime";
2
+ import { TableProps } from "@m5kdev/frontend/modules/table/hooks/useNuqsTable";
3
+
4
+ //#region src/modules/table/components/TablePagination.d.ts
2
5
  interface TablePaginationProps {
3
- pageCount: number;
4
- page: TableProps["page"];
5
- limit: TableProps["limit"];
6
- setPagination: TableProps["setPagination"];
6
+ pageCount: number;
7
+ page: TableProps["page"];
8
+ limit: TableProps["limit"];
9
+ setPagination: TableProps["setPagination"];
7
10
  }
8
- export declare const TablePagination: ({ pageCount, page, limit, setPagination, }: TablePaginationProps) => import("react/jsx-runtime").JSX.Element;
9
- export {};
11
+ declare const TablePagination: ({
12
+ pageCount,
13
+ page,
14
+ limit,
15
+ setPagination
16
+ }: TablePaginationProps) => _$react_jsx_runtime0.JSX.Element;
17
+ //#endregion
18
+ export { TablePagination };
19
+ //# sourceMappingURL=TablePagination.d.ts.map
@@ -1,34 +1,66 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
1
+ import { Input } from "../../../components/ui/input.js";
2
+ import { Pagination, PaginationContent, PaginationNext, PaginationPrevious } from "../../../components/ui/pagination.js";
2
3
  import { useEffect, useState } from "react";
3
- import { Input } from "../../../components/ui/input";
4
- import { Pagination, PaginationContent, PaginationNext, PaginationPrevious, } from "../../../components/ui/pagination";
5
- export const TablePagination = ({ pageCount, page = 1, limit = 10, setPagination, }) => {
6
- const [inputValue, setInputValue] = useState(String(page));
7
- useEffect(() => {
8
- setInputValue(String(page));
9
- }, [page]);
10
- const commitPage = () => {
11
- const newPage = Number(inputValue);
12
- if (Number.isFinite(newPage) && newPage >= 1 && newPage <= pageCount) {
13
- setPagination?.({ pageIndex: newPage - 1, pageSize: limit });
14
- }
15
- else {
16
- setInputValue(String(page));
17
- }
18
- };
19
- const isFirstPage = page === 1;
20
- const isLastPage = page >= pageCount;
21
- return (_jsx(Pagination, { children: _jsxs(PaginationContent, { children: [_jsx(PaginationPrevious, { isActive: !isFirstPage, "aria-disabled": isFirstPage, className: isFirstPage ? "pointer-events-none opacity-50" : undefined, onClick: () => {
22
- if (!isFirstPage) {
23
- setPagination?.({ pageIndex: page - 2, pageSize: limit });
24
- }
25
- } }), _jsxs("div", { className: "flex items-center gap-1.5", children: [_jsx(Input, { type: "number", value: inputValue, min: 1, max: pageCount, onChange: (e) => setInputValue(e.target.value), onBlur: commitPage, onKeyDown: (e) => {
26
- if (e.key === "Enter") {
27
- commitPage();
28
- }
29
- } }), _jsxs("span", { className: "text-sm text-muted-foreground whitespace-nowrap", children: ["/ ", pageCount] })] }), _jsx(PaginationNext, { isActive: !isLastPage, "aria-disabled": isLastPage, className: isLastPage ? "pointer-events-none opacity-50" : undefined, onClick: () => {
30
- if (!isLastPage) {
31
- setPagination?.({ pageIndex: page, pageSize: limit });
32
- }
33
- } })] }) }));
4
+ import { jsx, jsxs } from "react/jsx-runtime";
5
+ //#region src/modules/table/components/TablePagination.tsx
6
+ const TablePagination = ({ pageCount, page = 1, limit = 10, setPagination }) => {
7
+ const [inputValue, setInputValue] = useState(String(page));
8
+ useEffect(() => {
9
+ setInputValue(String(page));
10
+ }, [page]);
11
+ const commitPage = () => {
12
+ const newPage = Number(inputValue);
13
+ if (Number.isFinite(newPage) && newPage >= 1 && newPage <= pageCount) setPagination?.({
14
+ pageIndex: newPage - 1,
15
+ pageSize: limit
16
+ });
17
+ else setInputValue(String(page));
18
+ };
19
+ const isFirstPage = page === 1;
20
+ const isLastPage = page >= pageCount;
21
+ return /* @__PURE__ */ jsx(Pagination, { children: /* @__PURE__ */ jsxs(PaginationContent, { children: [
22
+ /* @__PURE__ */ jsx(PaginationPrevious, {
23
+ isActive: !isFirstPage,
24
+ "aria-disabled": isFirstPage,
25
+ className: isFirstPage ? "pointer-events-none opacity-50" : void 0,
26
+ onClick: () => {
27
+ if (!isFirstPage) setPagination?.({
28
+ pageIndex: page - 2,
29
+ pageSize: limit
30
+ });
31
+ }
32
+ }),
33
+ /* @__PURE__ */ jsxs("div", {
34
+ className: "flex items-center gap-1.5",
35
+ children: [/* @__PURE__ */ jsx(Input, {
36
+ type: "number",
37
+ value: inputValue,
38
+ min: 1,
39
+ max: pageCount,
40
+ onChange: (e) => setInputValue(e.target.value),
41
+ onBlur: commitPage,
42
+ onKeyDown: (e) => {
43
+ if (e.key === "Enter") commitPage();
44
+ }
45
+ }), /* @__PURE__ */ jsxs("span", {
46
+ className: "text-sm text-muted-foreground whitespace-nowrap",
47
+ children: ["/ ", pageCount]
48
+ })]
49
+ }),
50
+ /* @__PURE__ */ jsx(PaginationNext, {
51
+ isActive: !isLastPage,
52
+ "aria-disabled": isLastPage,
53
+ className: isLastPage ? "pointer-events-none opacity-50" : void 0,
54
+ onClick: () => {
55
+ if (!isLastPage) setPagination?.({
56
+ pageIndex: page,
57
+ pageSize: limit
58
+ });
59
+ }
60
+ })
61
+ ] }) });
34
62
  };
63
+ //#endregion
64
+ export { TablePagination };
65
+
66
+ //# sourceMappingURL=TablePagination.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TablePagination.js","names":[],"sources":["../../../../../src/modules/table/components/TablePagination.tsx"],"sourcesContent":["import type { TableProps } from \"@m5kdev/frontend/modules/table/hooks/useNuqsTable\";\r\nimport { useEffect, useState } from \"react\";\r\nimport { Input } from \"../../../components/ui/input\";\r\nimport {\r\n Pagination,\r\n PaginationContent,\r\n PaginationNext,\r\n PaginationPrevious,\r\n} from \"../../../components/ui/pagination\";\r\n\r\ninterface TablePaginationProps {\r\n pageCount: number;\r\n page: TableProps[\"page\"];\r\n limit: TableProps[\"limit\"];\r\n setPagination: TableProps[\"setPagination\"];\r\n}\r\n\r\nexport const TablePagination = ({\r\n pageCount,\r\n page = 1,\r\n limit = 10,\r\n setPagination,\r\n}: TablePaginationProps) => {\r\n const [inputValue, setInputValue] = useState(String(page));\r\n\r\n useEffect(() => {\r\n setInputValue(String(page));\r\n }, [page]);\r\n\r\n const commitPage = () => {\r\n const newPage = Number(inputValue);\r\n if (Number.isFinite(newPage) && newPage >= 1 && newPage <= pageCount) {\r\n setPagination?.({ pageIndex: newPage - 1, pageSize: limit });\r\n } else {\r\n setInputValue(String(page));\r\n }\r\n };\r\n\r\n const isFirstPage = page === 1;\r\n const isLastPage = page >= pageCount;\r\n return (\r\n <Pagination>\r\n <PaginationContent>\r\n <PaginationPrevious\r\n isActive={!isFirstPage}\r\n aria-disabled={isFirstPage}\r\n className={isFirstPage ? \"pointer-events-none opacity-50\" : undefined}\r\n onClick={() => {\r\n if (!isFirstPage) {\r\n setPagination?.({ pageIndex: page - 2, pageSize: limit });\r\n }\r\n }}\r\n />\r\n <div className=\"flex items-center gap-1.5\">\r\n <Input\r\n type=\"number\"\r\n value={inputValue}\r\n min={1}\r\n max={pageCount}\r\n onChange={(e) => setInputValue(e.target.value)}\r\n onBlur={commitPage}\r\n onKeyDown={(e) => {\r\n if (e.key === \"Enter\") {\r\n commitPage();\r\n }\r\n }}\r\n />\r\n <span className=\"text-sm text-muted-foreground whitespace-nowrap\">/ {pageCount}</span>\r\n </div>\r\n <PaginationNext\r\n isActive={!isLastPage}\r\n aria-disabled={isLastPage}\r\n className={isLastPage ? \"pointer-events-none opacity-50\" : undefined}\r\n onClick={() => {\r\n if (!isLastPage) {\r\n setPagination?.({ pageIndex: page, pageSize: limit });\r\n }\r\n }}\r\n />\r\n </PaginationContent>\r\n </Pagination>\r\n );\r\n};\r\n"],"mappings":";;;;;AAiBA,MAAa,mBAAmB,EAC9B,WACA,OAAO,GACP,QAAQ,IACR,oBAC0B;CAC1B,MAAM,CAAC,YAAY,iBAAiB,SAAS,OAAO,KAAK,CAAC;AAE1D,iBAAgB;AACd,gBAAc,OAAO,KAAK,CAAC;IAC1B,CAAC,KAAK,CAAC;CAEV,MAAM,mBAAmB;EACvB,MAAM,UAAU,OAAO,WAAW;AAClC,MAAI,OAAO,SAAS,QAAQ,IAAI,WAAW,KAAK,WAAW,UACzD,iBAAgB;GAAE,WAAW,UAAU;GAAG,UAAU;GAAO,CAAC;MAE5D,eAAc,OAAO,KAAK,CAAC;;CAI/B,MAAM,cAAc,SAAS;CAC7B,MAAM,aAAa,QAAQ;AAC3B,QACE,oBAAC,YAAD,EAAA,UACE,qBAAC,mBAAD,EAAA,UAAA;EACE,oBAAC,oBAAD;GACE,UAAU,CAAC;GACX,iBAAe;GACf,WAAW,cAAc,mCAAmC,KAAA;GAC5D,eAAe;AACb,QAAI,CAAC,YACH,iBAAgB;KAAE,WAAW,OAAO;KAAG,UAAU;KAAO,CAAC;;GAG7D,CAAA;EACF,qBAAC,OAAD;GAAK,WAAU;aAAf,CACE,oBAAC,OAAD;IACE,MAAK;IACL,OAAO;IACP,KAAK;IACL,KAAK;IACL,WAAW,MAAM,cAAc,EAAE,OAAO,MAAM;IAC9C,QAAQ;IACR,YAAY,MAAM;AAChB,SAAI,EAAE,QAAQ,QACZ,aAAY;;IAGhB,CAAA,EACF,qBAAC,QAAD;IAAM,WAAU;cAAhB,CAAkE,MAAG,UAAiB;MAClF;;EACN,oBAAC,gBAAD;GACE,UAAU,CAAC;GACX,iBAAe;GACf,WAAW,aAAa,mCAAmC,KAAA;GAC3D,eAAe;AACb,QAAI,CAAC,WACH,iBAAgB;KAAE,WAAW;KAAM,UAAU;KAAO,CAAC;;GAGzD,CAAA;EACgB,EAAA,CAAA,EACT,CAAA"}
@@ -1,12 +1,17 @@
1
- import type { ColumnDataType as CommonColumnDataType } from "@m5kdev/commons/modules/table/filter.types";
2
- export type ColumnDataType = CommonColumnDataType;
3
- export type ColumnItem = {
4
- id: string;
1
+ import { ColumnDataType as ColumnDataType$1 } from "@m5kdev/commons/modules/table/filter.types";
2
+
3
+ //#region src/modules/table/components/table.types.d.ts
4
+ type ColumnDataType = ColumnDataType$1;
5
+ type ColumnItem = {
6
+ id: string;
7
+ label: string;
8
+ visibility: boolean;
9
+ options?: {
5
10
  label: string;
6
- visibility: boolean;
7
- options?: {
8
- label: string;
9
- value: string;
10
- }[];
11
- type?: ColumnDataType;
11
+ value: string;
12
+ }[];
13
+ type?: ColumnDataType;
12
14
  };
15
+ //#endregion
16
+ export { ColumnDataType, ColumnItem };
17
+ //# sourceMappingURL=table.types.d.ts.map
@@ -1 +0,0 @@
1
- export {};
@@ -1,53 +1,58 @@
1
- import type { DateValue, RangeValue, SharedSelection } from "@heroui/react";
1
+ import { DateValue, RangeValue, SharedSelection } from "@heroui/react";
2
2
  import { CalendarDate } from "@internationalized/date";
3
- import type { QueryFilters } from "@m5kdev/commons/modules/schemas/query.schema";
4
- import type { ColumnDataType, FilterMethod } from "@m5kdev/commons/modules/table/filter.types";
5
- export type FilterValue = string | number | string[] | DateValue | RangeValue<DateValue> | boolean | SharedSelection | null;
6
- export interface HeroUIFilter {
7
- columnId: string;
8
- type: ColumnDataType | null;
9
- value: FilterValue;
10
- method: FilterMethod | null;
11
- options?: {
12
- label: string;
13
- value: string;
14
- }[] | null;
15
- endColumnId?: string | null;
16
- periodStartColumnId?: string | null;
17
- periodEndColumnId?: string | null;
3
+ import { ColumnDataType, FilterMethod } from "@m5kdev/commons/modules/table/filter.types";
4
+ import { QueryFilters } from "@m5kdev/commons/modules/schemas/query.schema";
5
+
6
+ //#region src/modules/table/filterTransformers.d.ts
7
+ type FilterValue = string | number | string[] | DateValue | RangeValue<DateValue> | boolean | SharedSelection | null;
8
+ interface HeroUIFilter {
9
+ columnId: string;
10
+ type: ColumnDataType | null;
11
+ value: FilterValue;
12
+ method: FilterMethod | null;
13
+ options?: {
14
+ label: string;
15
+ value: string;
16
+ }[] | null;
17
+ endColumnId?: string | null;
18
+ periodStartColumnId?: string | null;
19
+ periodEndColumnId?: string | null;
18
20
  }
19
21
  /**
20
22
  * Convert CalendarDate to UTC ISO string at midnight UTC
21
23
  */
22
- export declare const calendarDateToUTC: (date: CalendarDate) => string;
24
+ declare const calendarDateToUTC: (date: CalendarDate) => string;
23
25
  /**
24
26
  * Convert CalendarDate to end of day UTC ISO string
25
27
  */
26
- export declare const calendarDateToEndOfDayUTC: (date: CalendarDate) => string;
28
+ declare const calendarDateToEndOfDayUTC: (date: CalendarDate) => string;
27
29
  /**
28
30
  * Convert any date filter method from URL to a RangeValue for DateRangePicker
29
31
  * Handles: on, before, after, between, intersect
30
32
  * Parses UTC ISO strings as UTC to avoid timezone shifts
31
33
  */
32
- export declare const dateFilterToRangeValue: (filters: QueryFilters | undefined, columnId: string) => RangeValue<DateValue> | null;
34
+ declare const dateFilterToRangeValue: (filters: QueryFilters | undefined, columnId: string) => RangeValue<DateValue> | null;
33
35
  /**
34
36
  * Transform filters from backend format (QueryFilter[]) to HeroUI format (HeroUIFilter[])
35
37
  * Used when loading filters from URL/backend to populate HeroUI components
36
38
  */
37
- export declare const transformFiltersToHeroUI: (filtersToTransform: QueryFilters, columnsMap: Map<string, {
38
- id: string;
39
+ declare const transformFiltersToHeroUI: (filtersToTransform: QueryFilters, columnsMap: Map<string, {
40
+ id: string;
41
+ label: string;
42
+ type?: ColumnDataType | null;
43
+ options?: {
39
44
  label: string;
40
- type?: ColumnDataType | null;
41
- options?: {
42
- label: string;
43
- value: string;
44
- }[] | null;
45
- endColumnId?: string | null;
46
- periodStartColumnId?: string | null;
47
- periodEndColumnId?: string | null;
45
+ value: string;
46
+ }[] | null;
47
+ endColumnId?: string | null;
48
+ periodStartColumnId?: string | null;
49
+ periodEndColumnId?: string | null;
48
50
  }>, filterMethods: Record<ColumnDataType, FilterMethod[]>) => HeroUIFilter[];
49
51
  /**
50
52
  * Transform filters from HeroUI format (HeroUIFilter[]) to backend format (QueryFilter[])
51
53
  * Used when applying filters to send to backend/URL
52
54
  */
53
- export declare const transformFiltersFromHeroUI: (filters: HeroUIFilter[]) => QueryFilters;
55
+ declare const transformFiltersFromHeroUI: (filters: HeroUIFilter[]) => QueryFilters;
56
+ //#endregion
57
+ export { FilterValue, HeroUIFilter, calendarDateToEndOfDayUTC, calendarDateToUTC, dateFilterToRangeValue, transformFiltersFromHeroUI, transformFiltersToHeroUI };
58
+ //# sourceMappingURL=filterTransformers.d.ts.map