@m5kdev/web-ui 0.7.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
@@ -1,236 +1,418 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { DatePicker, DateRangePicker, Input, Select, SelectItem, } from "@heroui/react";
3
- import { getLocalTimeZone, today } from "@internationalized/date";
4
- import { PlusIcon, XIcon } from "lucide-react";
1
+ import { Button as Button$1 } from "../../../components/ui/button.js";
2
+ import { transformFiltersFromHeroUI, transformFiltersToHeroUI } from "../filterTransformers.js";
5
3
  import { useCallback, useEffect, useMemo, useState } from "react";
6
- import { Button } from "../../../components/ui/button";
7
- import { transformFiltersFromHeroUI, transformFiltersToHeroUI, } from "../filterTransformers";
4
+ import { DatePicker, DateRangePicker, Input, Select, SelectItem } from "@heroui/react";
5
+ import { jsx, jsxs } from "react/jsx-runtime";
6
+ import { PlusIcon, XIcon } from "lucide-react";
7
+ import { getLocalTimeZone, today } from "@internationalized/date";
8
+ //#region src/modules/table/components/TableFiltering.tsx
8
9
  const componentForFilterMethod = {
9
- text: (value, onChange) => (_jsx(Input, { size: "sm", "aria-label": "Select Value", className: "flex-1 min-w-0 text-sm", value: value ?? "", onChange: (e) => onChange(e.target.value) })),
10
- number: (value, onChange) => (_jsx(Input, { size: "sm", "aria-label": "Select Value", type: "number", className: "flex-1 min-w-0 text-sm", value: value?.toString() ?? "", onChange: (e) => onChange(Number.parseFloat(e.target.value) || 0) })),
11
- date: (value, onChange) => (_jsx(DatePicker, { size: "sm", "aria-label": "Select Value", className: "flex-1 min-w-0 text-sm", value: value ?? undefined, onChange: (date) => date && onChange(date), maxValue: today(getLocalTimeZone()) })),
12
- range: (value, onChange) => (_jsx(DateRangePicker, { size: "sm", "aria-label": "Select Value", className: "flex-1 min-w-0 text-sm", value: value ?? undefined, onChange: (range) => range && onChange(range), maxValue: today(getLocalTimeZone()) })),
13
- radio: (value, onChange) => (_jsxs(Select, { size: "sm", "aria-label": "Select Value", className: "flex-1 min-w-0 text-sm", selectedKeys: value ? ["true"] : ["false"], onSelectionChange: (keys) => onChange(keys.currentKey === "true"), children: [_jsx(SelectItem, { className: "text-sm", children: "True" }, "true"), _jsx(SelectItem, { className: "text-sm", children: "False" }, "false")] })),
14
- select: (value, onChange, options = []) => (_jsx(Select, { size: "sm", "aria-label": "Select Value", className: "flex-1 min-w-0 text-sm", selectedKeys: value ?? new Set(), onSelectionChange: (keys) => keys && onChange(keys), children: options.map((option) => (_jsx(SelectItem, { className: "text-sm", children: option.label }, option.value))) })),
15
- multiSelect: (value, onChange, options = []) => (_jsx(Select, { size: "sm", "aria-label": "Select Value", selectionMode: "multiple", className: "flex-1 min-w-0 text-sm", selectedKeys: value ? new Set(value) : new Set(), onSelectionChange: (keys) => onChange(keys), children: options.map((option) => (_jsx(SelectItem, { className: "text-sm", children: option.label }, option.value))) })),
10
+ text: (value, onChange) => /* @__PURE__ */ jsx(Input, {
11
+ size: "sm",
12
+ "aria-label": "Select Value",
13
+ className: "flex-1 min-w-0 text-sm",
14
+ value: value ?? "",
15
+ onChange: (e) => onChange(e.target.value)
16
+ }),
17
+ number: (value, onChange) => /* @__PURE__ */ jsx(Input, {
18
+ size: "sm",
19
+ "aria-label": "Select Value",
20
+ type: "number",
21
+ className: "flex-1 min-w-0 text-sm",
22
+ value: value?.toString() ?? "",
23
+ onChange: (e) => onChange(Number.parseFloat(e.target.value) || 0)
24
+ }),
25
+ date: (value, onChange) => /* @__PURE__ */ jsx(DatePicker, {
26
+ size: "sm",
27
+ "aria-label": "Select Value",
28
+ className: "flex-1 min-w-0 text-sm",
29
+ value: value ?? void 0,
30
+ onChange: (date) => date && onChange(date),
31
+ maxValue: today(getLocalTimeZone())
32
+ }),
33
+ range: (value, onChange) => /* @__PURE__ */ jsx(DateRangePicker, {
34
+ size: "sm",
35
+ "aria-label": "Select Value",
36
+ className: "flex-1 min-w-0 text-sm",
37
+ value: value ?? void 0,
38
+ onChange: (range) => range && onChange(range),
39
+ maxValue: today(getLocalTimeZone())
40
+ }),
41
+ radio: (value, onChange) => /* @__PURE__ */ jsxs(Select, {
42
+ size: "sm",
43
+ "aria-label": "Select Value",
44
+ className: "flex-1 min-w-0 text-sm",
45
+ selectedKeys: value ? ["true"] : ["false"],
46
+ onSelectionChange: (keys) => onChange(keys.currentKey === "true"),
47
+ children: [/* @__PURE__ */ jsx(SelectItem, {
48
+ className: "text-sm",
49
+ children: "True"
50
+ }, "true"), /* @__PURE__ */ jsx(SelectItem, {
51
+ className: "text-sm",
52
+ children: "False"
53
+ }, "false")]
54
+ }),
55
+ select: (value, onChange, options = []) => /* @__PURE__ */ jsx(Select, {
56
+ size: "sm",
57
+ "aria-label": "Select Value",
58
+ className: "flex-1 min-w-0 text-sm",
59
+ selectedKeys: value ?? /* @__PURE__ */ new Set(),
60
+ onSelectionChange: (keys) => keys && onChange(keys),
61
+ children: options.map((option) => /* @__PURE__ */ jsx(SelectItem, {
62
+ className: "text-sm",
63
+ children: option.label
64
+ }, option.value))
65
+ }),
66
+ multiSelect: (value, onChange, options = []) => /* @__PURE__ */ jsx(Select, {
67
+ size: "sm",
68
+ "aria-label": "Select Value",
69
+ selectionMode: "multiple",
70
+ className: "flex-1 min-w-0 text-sm",
71
+ selectedKeys: value ? new Set(value) : /* @__PURE__ */ new Set(),
72
+ onSelectionChange: (keys) => onChange(keys),
73
+ children: options.map((option) => /* @__PURE__ */ jsx(SelectItem, {
74
+ className: "text-sm",
75
+ children: option.label
76
+ }, option.value))
77
+ })
16
78
  };
17
79
  const defaultFilterMethods = {
18
- string: [
19
- { value: "contains", label: "Contains", component: "text" },
20
- { value: "equals", label: "Equals", component: "text" },
21
- { value: "starts_with", label: "Starts With", component: "text" },
22
- { value: "ends_with", label: "Ends With", component: "text" },
23
- ],
24
- number: [
25
- { value: "equals", label: "Equals", component: "number" },
26
- { value: "greater_than", label: "Greater Than", component: "number" },
27
- { value: "less_than", label: "Less Than", component: "number" },
28
- ],
29
- date: [
30
- { value: "on", label: "On", component: "date" },
31
- { value: "between", label: "Between", component: "range" },
32
- { value: "before", label: "Before", component: "date" },
33
- { value: "after", label: "After", component: "date" },
34
- { value: "intersect", label: "During", component: "range" },
35
- ],
36
- boolean: [{ value: "equals", label: "Equals", component: "radio" }],
37
- enum: [
38
- { value: "oneOf", label: "One Of", component: "multiSelect" },
39
- { value: "equals", label: "Equals", component: "select" },
40
- ],
80
+ string: [
81
+ {
82
+ value: "contains",
83
+ label: "Contains",
84
+ component: "text"
85
+ },
86
+ {
87
+ value: "equals",
88
+ label: "Equals",
89
+ component: "text"
90
+ },
91
+ {
92
+ value: "starts_with",
93
+ label: "Starts With",
94
+ component: "text"
95
+ },
96
+ {
97
+ value: "ends_with",
98
+ label: "Ends With",
99
+ component: "text"
100
+ }
101
+ ],
102
+ number: [
103
+ {
104
+ value: "equals",
105
+ label: "Equals",
106
+ component: "number"
107
+ },
108
+ {
109
+ value: "greater_than",
110
+ label: "Greater Than",
111
+ component: "number"
112
+ },
113
+ {
114
+ value: "less_than",
115
+ label: "Less Than",
116
+ component: "number"
117
+ }
118
+ ],
119
+ date: [
120
+ {
121
+ value: "on",
122
+ label: "On",
123
+ component: "date"
124
+ },
125
+ {
126
+ value: "between",
127
+ label: "Between",
128
+ component: "range"
129
+ },
130
+ {
131
+ value: "before",
132
+ label: "Before",
133
+ component: "date"
134
+ },
135
+ {
136
+ value: "after",
137
+ label: "After",
138
+ component: "date"
139
+ },
140
+ {
141
+ value: "intersect",
142
+ label: "During",
143
+ component: "range"
144
+ }
145
+ ],
146
+ boolean: [{
147
+ value: "equals",
148
+ label: "Equals",
149
+ component: "radio"
150
+ }],
151
+ enum: [{
152
+ value: "oneOf",
153
+ label: "One Of",
154
+ component: "multiSelect"
155
+ }, {
156
+ value: "equals",
157
+ label: "Equals",
158
+ component: "select"
159
+ }]
41
160
  };
42
161
  const SINGLE_FILTER_KEY = "single-filter";
43
162
  const mergeFilterMethods = (overrides) => ({
44
- string: overrides?.string && overrides.string.length > 0
45
- ? overrides.string
46
- : defaultFilterMethods.string,
47
- number: overrides?.number && overrides.number.length > 0
48
- ? overrides.number
49
- : defaultFilterMethods.number,
50
- date: overrides?.date && overrides.date.length > 0 ? overrides.date : defaultFilterMethods.date,
51
- boolean: overrides?.boolean && overrides.boolean.length > 0
52
- ? overrides.boolean
53
- : defaultFilterMethods.boolean,
54
- enum: overrides?.enum && overrides.enum.length > 0 ? overrides.enum : defaultFilterMethods.enum,
163
+ string: overrides?.string && overrides.string.length > 0 ? overrides.string : defaultFilterMethods.string,
164
+ number: overrides?.number && overrides.number.length > 0 ? overrides.number : defaultFilterMethods.number,
165
+ date: overrides?.date && overrides.date.length > 0 ? overrides.date : defaultFilterMethods.date,
166
+ boolean: overrides?.boolean && overrides.boolean.length > 0 ? overrides.boolean : defaultFilterMethods.boolean,
167
+ enum: overrides?.enum && overrides.enum.length > 0 ? overrides.enum : defaultFilterMethods.enum
55
168
  });
56
- export const TableFiltering = ({ columns, onFiltersChange, filters: initialFilters = [], onClose, singleFilter = false, filterMethods, }) => {
57
- const [filters, setFilters] = useState({});
58
- const effectiveFilterMethods = useMemo(() => mergeFilterMethods(filterMethods), [filterMethods]);
59
- const createEmptyFilter = useCallback(() => ({
60
- columnId: "",
61
- type: null,
62
- value: null,
63
- method: null,
64
- options: null,
65
- endColumnId: null,
66
- periodStartColumnId: null,
67
- periodEndColumnId: null,
68
- }), []);
69
- const addFilter = useCallback(() => {
70
- setFilters((prev) => {
71
- if (!singleFilter) {
72
- const filterId = crypto.randomUUID();
73
- return {
74
- ...prev,
75
- [filterId]: createEmptyFilter(),
76
- };
77
- }
78
- // single filter mode
79
- return Object.keys(prev).length > 0 ? prev : { [SINGLE_FILTER_KEY]: createEmptyFilter() };
80
- });
81
- }, [createEmptyFilter, singleFilter]);
82
- const removeFilter = useCallback((filterId) => {
83
- setFilters((prev) => {
84
- if (!singleFilter) {
85
- const { [filterId]: _, ...rest } = prev;
86
- return rest;
87
- }
88
- // single filter mode resets the lone filter
89
- return { [SINGLE_FILTER_KEY]: createEmptyFilter() };
90
- });
91
- }, [createEmptyFilter, singleFilter]);
92
- const columnsMap = useMemo(() => new Map(columns.map((column) => [column.id, column])), [columns]);
93
- useEffect(() => {
94
- // Transform initialFilters from FiltersToApply format to HeroUIFilter format
95
- const transformedFilters = transformFiltersToHeroUI(initialFilters, columnsMap, effectiveFilterMethods);
96
- if (!singleFilter) {
97
- setFilters(Object.fromEntries(transformedFilters.map((filter) => [filter.columnId, filter])));
98
- return;
99
- }
100
- const firstFilter = transformedFilters[0];
101
- setFilters({
102
- [SINGLE_FILTER_KEY]: firstFilter ?? createEmptyFilter(),
103
- });
104
- }, [createEmptyFilter, initialFilters, singleFilter, columnsMap, effectiveFilterMethods]);
105
- const selectColumn = useCallback((filterId, columnId) => {
106
- setFilters((prev) => {
107
- const oldFilter = prev[filterId];
108
- if (!oldFilter)
109
- return prev;
110
- const column = columnsMap.get(columnId);
111
- if (!column)
112
- return prev;
113
- // If Period column, auto-set intersect method
114
- const isPeriodColumn = columnId.endsWith("__period");
115
- const intersectMethod = isPeriodColumn
116
- ? (effectiveFilterMethods.date.find((m) => m.value === "intersect") ?? null)
117
- : null;
118
- return {
119
- ...prev,
120
- [filterId]: {
121
- ...oldFilter,
122
- columnId,
123
- type: column.type ?? null,
124
- options: column.options ?? null,
125
- endColumnId: column.endColumnId ?? null,
126
- periodStartColumnId: column.periodStartColumnId ?? null,
127
- periodEndColumnId: column.periodEndColumnId ?? null,
128
- method: intersectMethod,
129
- value: null,
130
- },
131
- };
132
- });
133
- }, [columnsMap, effectiveFilterMethods]);
134
- const selectMethod = useCallback((filterId, method) => {
135
- setFilters((prev) => {
136
- const oldFilter = prev[filterId];
137
- if (!oldFilter)
138
- return prev;
139
- return {
140
- ...prev,
141
- [filterId]: { ...oldFilter, method, value: null },
142
- };
143
- });
144
- }, []);
145
- const selectValue = useCallback((filterId, value) => {
146
- setFilters((prev) => {
147
- const oldFilter = prev[filterId];
148
- if (!oldFilter)
149
- return prev;
150
- return {
151
- ...prev,
152
- [filterId]: { ...oldFilter, value },
153
- };
154
- });
155
- }, []);
156
- const filterEntries = useMemo(() => Object.entries(filters), [filters]);
157
- const availableColumnsMap = useMemo(() => {
158
- const map = new Map();
159
- filterEntries.forEach(([filterId]) => {
160
- const columnsUsedByOtherFilters = new Set(filterEntries
161
- .filter(([id]) => id !== filterId)
162
- .map(([_, f]) => f.columnId)
163
- .filter((id) => id !== ""));
164
- map.set(filterId, columns.filter((column) => !columnsUsedByOtherFilters.has(column.id)));
165
- });
166
- return map;
167
- }, [filterEntries, columns]);
168
- const applyFilters = useCallback(() => {
169
- const heroUIFilters = Object.values(filters);
170
- const filtersToApply = transformFiltersFromHeroUI(heroUIFilters);
171
- onFiltersChange(filtersToApply);
172
- onClose?.();
173
- }, [filters, onFiltersChange, onClose]);
174
- return (_jsxs("div", { className: "flex flex-col gap-2 p-1 min-w-[600px]", children: [filterEntries.map(([filterId, filter]) => {
175
- const availableColumns = availableColumnsMap.get(filterId) ?? columns;
176
- return (_jsx(TableFilteringItem, { id: filterId, filter: filter, columns: availableColumns, selectColumn: selectColumn, selectMethod: selectMethod, removeFilter: removeFilter, selectValue: selectValue, filterMethods: effectiveFilterMethods }, filterId));
177
- }), !singleFilter && (_jsxs(Button, { variant: "outline", size: "sm", onClick: addFilter, children: [_jsx(PlusIcon, { className: "h-4 w-4" }), "Add Filter"] })), _jsx(Button, { onClick: applyFilters, children: singleFilter ? "Apply Filter" : "Apply Filters" })] }));
169
+ const TableFiltering = ({ columns, onFiltersChange, filters: initialFilters = [], onClose, singleFilter = false, filterMethods }) => {
170
+ const [filters, setFilters] = useState({});
171
+ const effectiveFilterMethods = useMemo(() => mergeFilterMethods(filterMethods), [filterMethods]);
172
+ const createEmptyFilter = useCallback(() => ({
173
+ columnId: "",
174
+ type: null,
175
+ value: null,
176
+ method: null,
177
+ options: null,
178
+ endColumnId: null,
179
+ periodStartColumnId: null,
180
+ periodEndColumnId: null
181
+ }), []);
182
+ const addFilter = useCallback(() => {
183
+ setFilters((prev) => {
184
+ if (!singleFilter) {
185
+ const filterId = crypto.randomUUID();
186
+ return {
187
+ ...prev,
188
+ [filterId]: createEmptyFilter()
189
+ };
190
+ }
191
+ return Object.keys(prev).length > 0 ? prev : { [SINGLE_FILTER_KEY]: createEmptyFilter() };
192
+ });
193
+ }, [createEmptyFilter, singleFilter]);
194
+ const removeFilter = useCallback((filterId) => {
195
+ setFilters((prev) => {
196
+ if (!singleFilter) {
197
+ const { [filterId]: _, ...rest } = prev;
198
+ return rest;
199
+ }
200
+ return { [SINGLE_FILTER_KEY]: createEmptyFilter() };
201
+ });
202
+ }, [createEmptyFilter, singleFilter]);
203
+ const columnsMap = useMemo(() => new Map(columns.map((column) => [column.id, column])), [columns]);
204
+ useEffect(() => {
205
+ const transformedFilters = transformFiltersToHeroUI(initialFilters, columnsMap, effectiveFilterMethods);
206
+ if (!singleFilter) {
207
+ setFilters(Object.fromEntries(transformedFilters.map((filter) => [filter.columnId, filter])));
208
+ return;
209
+ }
210
+ const firstFilter = transformedFilters[0];
211
+ setFilters({ [SINGLE_FILTER_KEY]: firstFilter ?? createEmptyFilter() });
212
+ }, [
213
+ createEmptyFilter,
214
+ initialFilters,
215
+ singleFilter,
216
+ columnsMap,
217
+ effectiveFilterMethods
218
+ ]);
219
+ const selectColumn = useCallback((filterId, columnId) => {
220
+ setFilters((prev) => {
221
+ const oldFilter = prev[filterId];
222
+ if (!oldFilter) return prev;
223
+ const column = columnsMap.get(columnId);
224
+ if (!column) return prev;
225
+ const intersectMethod = columnId.endsWith("__period") ? effectiveFilterMethods.date.find((m) => m.value === "intersect") ?? null : null;
226
+ return {
227
+ ...prev,
228
+ [filterId]: {
229
+ ...oldFilter,
230
+ columnId,
231
+ type: column.type ?? null,
232
+ options: column.options ?? null,
233
+ endColumnId: column.endColumnId ?? null,
234
+ periodStartColumnId: column.periodStartColumnId ?? null,
235
+ periodEndColumnId: column.periodEndColumnId ?? null,
236
+ method: intersectMethod,
237
+ value: null
238
+ }
239
+ };
240
+ });
241
+ }, [columnsMap, effectiveFilterMethods]);
242
+ const selectMethod = useCallback((filterId, method) => {
243
+ setFilters((prev) => {
244
+ const oldFilter = prev[filterId];
245
+ if (!oldFilter) return prev;
246
+ return {
247
+ ...prev,
248
+ [filterId]: {
249
+ ...oldFilter,
250
+ method,
251
+ value: null
252
+ }
253
+ };
254
+ });
255
+ }, []);
256
+ const selectValue = useCallback((filterId, value) => {
257
+ setFilters((prev) => {
258
+ const oldFilter = prev[filterId];
259
+ if (!oldFilter) return prev;
260
+ return {
261
+ ...prev,
262
+ [filterId]: {
263
+ ...oldFilter,
264
+ value
265
+ }
266
+ };
267
+ });
268
+ }, []);
269
+ const filterEntries = useMemo(() => Object.entries(filters), [filters]);
270
+ const availableColumnsMap = useMemo(() => {
271
+ const map = /* @__PURE__ */ new Map();
272
+ filterEntries.forEach(([filterId]) => {
273
+ const columnsUsedByOtherFilters = new Set(filterEntries.filter(([id]) => id !== filterId).map(([_, f]) => f.columnId).filter((id) => id !== ""));
274
+ map.set(filterId, columns.filter((column) => !columnsUsedByOtherFilters.has(column.id)));
275
+ });
276
+ return map;
277
+ }, [filterEntries, columns]);
278
+ const applyFilters = useCallback(() => {
279
+ onFiltersChange(transformFiltersFromHeroUI(Object.values(filters)));
280
+ onClose?.();
281
+ }, [
282
+ filters,
283
+ onFiltersChange,
284
+ onClose
285
+ ]);
286
+ return /* @__PURE__ */ jsxs("div", {
287
+ className: "flex flex-col gap-2 p-1 min-w-[600px]",
288
+ children: [
289
+ filterEntries.map(([filterId, filter]) => {
290
+ return /* @__PURE__ */ jsx(TableFilteringItem, {
291
+ id: filterId,
292
+ filter,
293
+ columns: availableColumnsMap.get(filterId) ?? columns,
294
+ selectColumn,
295
+ selectMethod,
296
+ removeFilter,
297
+ selectValue,
298
+ filterMethods: effectiveFilterMethods
299
+ }, filterId);
300
+ }),
301
+ !singleFilter && /* @__PURE__ */ jsxs(Button$1, {
302
+ variant: "outline",
303
+ size: "sm",
304
+ onClick: addFilter,
305
+ children: [/* @__PURE__ */ jsx(PlusIcon, { className: "h-4 w-4" }), "Add Filter"]
306
+ }),
307
+ /* @__PURE__ */ jsx(Button$1, {
308
+ onClick: applyFilters,
309
+ children: singleFilter ? "Apply Filter" : "Apply Filters"
310
+ })
311
+ ]
312
+ });
178
313
  };
179
- const TableFilteringItem = ({ id, filter, columns, selectColumn, selectMethod, selectValue, removeFilter, filterMethods, }) => {
180
- const handleColumnChange = useCallback((keys) => {
181
- const columnId = String(keys.currentKey);
182
- selectColumn(id, columnId);
183
- }, [id, selectColumn]);
184
- const methodsForType = useMemo(() => {
185
- if (!filter.type)
186
- return [];
187
- // Period columns only support intersect method
188
- const isPeriodColumn = filter.columnId.endsWith("__period");
189
- if (isPeriodColumn) {
190
- const intersectMethod = filterMethods.date.find((m) => m.value === "intersect");
191
- return intersectMethod ? [intersectMethod] : [];
192
- }
193
- const baseMethods = filterMethods[filter.type] ?? [];
194
- const emptyMethods = [
195
- { value: "isEmpty", label: "Is Empty", component: null },
196
- { value: "isNotEmpty", label: "Is Not Empty", component: null },
197
- ];
198
- if (filter.type !== "boolean" && filter.type !== "date") {
199
- return [...baseMethods, ...emptyMethods];
200
- }
201
- return baseMethods;
202
- }, [filter.type, filter.columnId, filter.method?.value, filterMethods]);
203
- const handleMethodChange = useCallback((keys) => {
204
- if (!filter.type)
205
- return;
206
- // Use methodsForType instead of filterMethods to include dynamically added methods
207
- const method = methodsForType.find((currentMethod) => currentMethod.value === String(keys.currentKey));
208
- if (method) {
209
- selectMethod(id, method);
210
- }
211
- }, [id, filter.type, selectMethod, methodsForType]);
212
- const handleValueChange = useCallback((value) => {
213
- selectValue(id, value);
214
- }, [id, selectValue]);
215
- const methodSelect = useMemo(() => {
216
- if (!filter.type)
217
- return null;
218
- return (_jsx(Select, { size: "sm", "aria-label": "Select Method", className: "w-40 flex-shrink-0 text-sm", selectedKeys: filter.method?.value ? [filter.method.value] : [], onSelectionChange: handleMethodChange, popoverProps: {
219
- className: "w-auto min-w-max",
220
- }, children: methodsForType.map((method) => (_jsx(SelectItem, { className: "text-sm", children: method.label }, method.value))) }));
221
- }, [filter.type, filter.method?.value, methodsForType, handleMethodChange]);
222
- const filterValueComponent = useMemo(() => {
223
- if (!filter.method?.component) {
224
- return _jsx("div", { className: "flex-1 min-w-0" });
225
- }
226
- const component = filter.method.component;
227
- const ComponentFn = componentForFilterMethod[component];
228
- if (!ComponentFn)
229
- return _jsx("div", { className: "flex-1 min-w-0" });
230
- return ComponentFn(filter.value, handleValueChange, filter.options ?? []);
231
- }, [filter.method?.component, filter.value, filter.options, handleValueChange]);
232
- const columnSelectItems = useMemo(() => columns.map((column) => (_jsx(SelectItem, { className: "text-sm", children: String(column.label) }, column.id))), [columns]);
233
- return (_jsxs("div", { className: "flex items-center gap-2 w-full", children: [_jsxs("div", { className: "flex flex-1 items-center gap-2 min-w-0", children: [_jsx(Select, { size: "sm", "aria-label": "Select Column", className: "w-40 flex-shrink-0 text-sm", selectedKeys: filter.columnId ? [filter.columnId] : [], onSelectionChange: handleColumnChange, popoverProps: {
234
- className: "w-auto min-w-max",
235
- }, children: columnSelectItems }), methodSelect, filterValueComponent] }), _jsx(Button, { variant: "outline", size: "sm", onClick: () => removeFilter(id), children: _jsx(XIcon, { className: "h-4 w-4" }) })] }));
314
+ const TableFilteringItem = ({ id, filter, columns, selectColumn, selectMethod, selectValue, removeFilter, filterMethods }) => {
315
+ const handleColumnChange = useCallback((keys) => {
316
+ selectColumn(id, String(keys.currentKey));
317
+ }, [id, selectColumn]);
318
+ const methodsForType = useMemo(() => {
319
+ if (!filter.type) return [];
320
+ if (filter.columnId.endsWith("__period")) {
321
+ const intersectMethod = filterMethods.date.find((m) => m.value === "intersect");
322
+ return intersectMethod ? [intersectMethod] : [];
323
+ }
324
+ const baseMethods = filterMethods[filter.type] ?? [];
325
+ const emptyMethods = [{
326
+ value: "isEmpty",
327
+ label: "Is Empty",
328
+ component: null
329
+ }, {
330
+ value: "isNotEmpty",
331
+ label: "Is Not Empty",
332
+ component: null
333
+ }];
334
+ if (filter.type !== "boolean" && filter.type !== "date") return [...baseMethods, ...emptyMethods];
335
+ return baseMethods;
336
+ }, [
337
+ filter.type,
338
+ filter.columnId,
339
+ filter.method?.value,
340
+ filterMethods
341
+ ]);
342
+ const handleMethodChange = useCallback((keys) => {
343
+ if (!filter.type) return;
344
+ const method = methodsForType.find((currentMethod) => currentMethod.value === String(keys.currentKey));
345
+ if (method) selectMethod(id, method);
346
+ }, [
347
+ id,
348
+ filter.type,
349
+ selectMethod,
350
+ methodsForType
351
+ ]);
352
+ const handleValueChange = useCallback((value) => {
353
+ selectValue(id, value);
354
+ }, [id, selectValue]);
355
+ const methodSelect = useMemo(() => {
356
+ if (!filter.type) return null;
357
+ return /* @__PURE__ */ jsx(Select, {
358
+ size: "sm",
359
+ "aria-label": "Select Method",
360
+ className: "w-40 flex-shrink-0 text-sm",
361
+ selectedKeys: filter.method?.value ? [filter.method.value] : [],
362
+ onSelectionChange: handleMethodChange,
363
+ popoverProps: { className: "w-auto min-w-max" },
364
+ children: methodsForType.map((method) => /* @__PURE__ */ jsx(SelectItem, {
365
+ className: "text-sm",
366
+ children: method.label
367
+ }, method.value))
368
+ });
369
+ }, [
370
+ filter.type,
371
+ filter.method?.value,
372
+ methodsForType,
373
+ handleMethodChange
374
+ ]);
375
+ const filterValueComponent = useMemo(() => {
376
+ if (!filter.method?.component) return /* @__PURE__ */ jsx("div", { className: "flex-1 min-w-0" });
377
+ const ComponentFn = componentForFilterMethod[filter.method.component];
378
+ if (!ComponentFn) return /* @__PURE__ */ jsx("div", { className: "flex-1 min-w-0" });
379
+ return ComponentFn(filter.value, handleValueChange, filter.options ?? []);
380
+ }, [
381
+ filter.method?.component,
382
+ filter.value,
383
+ filter.options,
384
+ handleValueChange
385
+ ]);
386
+ const columnSelectItems = useMemo(() => columns.map((column) => /* @__PURE__ */ jsx(SelectItem, {
387
+ className: "text-sm",
388
+ children: String(column.label)
389
+ }, column.id)), [columns]);
390
+ return /* @__PURE__ */ jsxs("div", {
391
+ className: "flex items-center gap-2 w-full",
392
+ children: [/* @__PURE__ */ jsxs("div", {
393
+ className: "flex flex-1 items-center gap-2 min-w-0",
394
+ children: [
395
+ /* @__PURE__ */ jsx(Select, {
396
+ size: "sm",
397
+ "aria-label": "Select Column",
398
+ className: "w-40 flex-shrink-0 text-sm",
399
+ selectedKeys: filter.columnId ? [filter.columnId] : [],
400
+ onSelectionChange: handleColumnChange,
401
+ popoverProps: { className: "w-auto min-w-max" },
402
+ children: columnSelectItems
403
+ }),
404
+ methodSelect,
405
+ filterValueComponent
406
+ ]
407
+ }), /* @__PURE__ */ jsx(Button$1, {
408
+ variant: "outline",
409
+ size: "sm",
410
+ onClick: () => removeFilter(id),
411
+ children: /* @__PURE__ */ jsx(XIcon, { className: "h-4 w-4" })
412
+ })]
413
+ });
236
414
  };
415
+ //#endregion
416
+ export { TableFiltering };
417
+
418
+ //# sourceMappingURL=TableFiltering.js.map