@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
@@ -1,276 +1,213 @@
1
1
  import { CalendarDate, getLocalTimeZone, today } from "@internationalized/date";
2
2
  import { DateTime } from "luxon";
3
+ //#region src/modules/table/filterTransformers.ts
3
4
  /**
4
- * Convert CalendarDate to UTC ISO string at midnight UTC
5
- */
6
- export const calendarDateToUTC = (date) => {
7
- return DateTime.utc(date.year, date.month, date.day).toISO() ?? "";
5
+ * Convert CalendarDate to UTC ISO string at midnight UTC
6
+ */
7
+ const calendarDateToUTC = (date) => {
8
+ return DateTime.utc(date.year, date.month, date.day).toISO() ?? "";
8
9
  };
9
10
  /**
10
- * Convert CalendarDate to end of day UTC ISO string
11
- */
12
- export const calendarDateToEndOfDayUTC = (date) => {
13
- return DateTime.utc(date.year, date.month, date.day).endOf("day").toISO() ?? "";
11
+ * Convert CalendarDate to end of day UTC ISO string
12
+ */
13
+ const calendarDateToEndOfDayUTC = (date) => {
14
+ return DateTime.utc(date.year, date.month, date.day).endOf("day").toISO() ?? "";
14
15
  };
15
16
  /**
16
- * Parse UTC ISO string to CalendarDate (preserves UTC date, no timezone shift)
17
- */
17
+ * Parse UTC ISO string to CalendarDate (preserves UTC date, no timezone shift)
18
+ */
18
19
  const parseUTCToCalendarDate = (isoString) => {
19
- try {
20
- const dt = DateTime.fromISO(isoString, { zone: "utc" });
21
- if (!dt.isValid)
22
- return null;
23
- return new CalendarDate(dt.year, dt.month, dt.day);
24
- }
25
- catch {
26
- return null;
27
- }
20
+ try {
21
+ const dt = DateTime.fromISO(isoString, { zone: "utc" });
22
+ if (!dt.isValid) return null;
23
+ return new CalendarDate(dt.year, dt.month, dt.day);
24
+ } catch {
25
+ return null;
26
+ }
28
27
  };
29
28
  /**
30
- * Convert any date filter method from URL to a RangeValue for DateRangePicker
31
- * Handles: on, before, after, between, intersect
32
- * Parses UTC ISO strings as UTC to avoid timezone shifts
33
- */
34
- export const dateFilterToRangeValue = (filters, columnId) => {
35
- if (!filters)
36
- return null;
37
- const filter = filters.find((f) => f.columnId === columnId);
38
- if (!filter || filter.type !== "date")
39
- return null;
40
- const todayDate = today(getLocalTimeZone());
41
- const epochStart = new CalendarDate(1970, 1, 1);
42
- try {
43
- switch (filter.method) {
44
- case "on": {
45
- // Same day range
46
- if (typeof filter.value !== "string" || !filter.value)
47
- return null;
48
- const day = parseUTCToCalendarDate(filter.value);
49
- if (!day)
50
- return null;
51
- return {
52
- start: day,
53
- end: day,
54
- };
55
- }
56
- case "before": {
57
- // [epochStart, selectedDay]
58
- if (typeof filter.value !== "string" || !filter.value)
59
- return null;
60
- const day = parseUTCToCalendarDate(filter.value);
61
- if (!day)
62
- return null;
63
- return {
64
- start: epochStart,
65
- end: day,
66
- };
67
- }
68
- case "after": {
69
- // [selectedDay, today]
70
- if (typeof filter.value !== "string" || !filter.value)
71
- return null;
72
- const day = parseUTCToCalendarDate(filter.value);
73
- if (!day)
74
- return null;
75
- return {
76
- start: day,
77
- end: todayDate,
78
- };
79
- }
80
- case "between":
81
- case "intersect": {
82
- // [value, valueTo]
83
- if (typeof filter.value !== "string" || !filter.value || !filter.valueTo)
84
- return null;
85
- const startDate = parseUTCToCalendarDate(filter.value);
86
- const endDate = parseUTCToCalendarDate(filter.valueTo);
87
- if (!startDate || !endDate)
88
- return null;
89
- return {
90
- start: startDate,
91
- end: endDate,
92
- };
93
- }
94
- default:
95
- return null;
96
- }
97
- }
98
- catch {
99
- return null;
100
- }
29
+ * Convert any date filter method from URL to a RangeValue for DateRangePicker
30
+ * Handles: on, before, after, between, intersect
31
+ * Parses UTC ISO strings as UTC to avoid timezone shifts
32
+ */
33
+ const dateFilterToRangeValue = (filters, columnId) => {
34
+ if (!filters) return null;
35
+ const filter = filters.find((f) => f.columnId === columnId);
36
+ if (!filter || filter.type !== "date") return null;
37
+ const todayDate = today(getLocalTimeZone());
38
+ const epochStart = new CalendarDate(1970, 1, 1);
39
+ try {
40
+ switch (filter.method) {
41
+ case "on": {
42
+ if (typeof filter.value !== "string" || !filter.value) return null;
43
+ const day = parseUTCToCalendarDate(filter.value);
44
+ if (!day) return null;
45
+ return {
46
+ start: day,
47
+ end: day
48
+ };
49
+ }
50
+ case "before": {
51
+ if (typeof filter.value !== "string" || !filter.value) return null;
52
+ const day = parseUTCToCalendarDate(filter.value);
53
+ if (!day) return null;
54
+ return {
55
+ start: epochStart,
56
+ end: day
57
+ };
58
+ }
59
+ case "after": {
60
+ if (typeof filter.value !== "string" || !filter.value) return null;
61
+ const day = parseUTCToCalendarDate(filter.value);
62
+ if (!day) return null;
63
+ return {
64
+ start: day,
65
+ end: todayDate
66
+ };
67
+ }
68
+ case "between":
69
+ case "intersect": {
70
+ if (typeof filter.value !== "string" || !filter.value || !filter.valueTo) return null;
71
+ const startDate = parseUTCToCalendarDate(filter.value);
72
+ const endDate = parseUTCToCalendarDate(filter.valueTo);
73
+ if (!startDate || !endDate) return null;
74
+ return {
75
+ start: startDate,
76
+ end: endDate
77
+ };
78
+ }
79
+ default: return null;
80
+ }
81
+ } catch {
82
+ return null;
83
+ }
101
84
  };
102
85
  /**
103
- * Transform filters from backend format (QueryFilter[]) to HeroUI format (HeroUIFilter[])
104
- * Used when loading filters from URL/backend to populate HeroUI components
105
- */
106
- export const transformFiltersToHeroUI = (filtersToTransform, columnsMap, filterMethods) => {
107
- return filtersToTransform.map((filter) => {
108
- let value = null;
109
- let method = null;
110
- let columnId = filter.columnId;
111
- // Check if this intersect filter should map to Period pseudo-column
112
- if (filter.type === "date" && filter.method === "intersect" && filter.endColumnId) {
113
- const periodColumnId = `${filter.columnId}__period`;
114
- const periodColumn = columnsMap.get(periodColumnId);
115
- if (periodColumn) {
116
- // Map to Period pseudo-column
117
- columnId = periodColumnId;
118
- }
119
- }
120
- // Find the method object from the methods configuration
121
- if (filter.type) {
122
- const availableMethods = filterMethods[filter.type];
123
- const methodObj = availableMethods?.find((m) => m.value === filter.method);
124
- if (methodObj) {
125
- method = methodObj;
126
- }
127
- else if (filter.method === "isEmpty" || filter.method === "isNotEmpty") {
128
- // Handle isEmpty/isNotEmpty even if not in the provided method list
129
- method = {
130
- value: filter.method,
131
- label: filter.method === "isEmpty" ? "Is Empty" : "Is Not Empty",
132
- component: null,
133
- };
134
- }
135
- }
136
- // Transform value based on type
137
- switch (filter.type) {
138
- case "string":
139
- value = filter.value;
140
- break;
141
- case "number":
142
- value = filter.value;
143
- break;
144
- case "date":
145
- // Use the shared helper for range conversion, or parse single dates as UTC
146
- if (filter.method === "between" || filter.method === "intersect") {
147
- // For range methods, use the helper function
148
- const range = dateFilterToRangeValue([filter], filter.columnId);
149
- value = range;
150
- }
151
- else {
152
- // Single date value: parse UTC ISO string and extract UTC calendar date
153
- if (typeof filter.value === "string" && filter.value) {
154
- const day = parseUTCToCalendarDate(filter.value);
155
- value = day ? day : null;
156
- }
157
- else {
158
- value = null;
159
- }
160
- }
161
- break;
162
- case "boolean":
163
- value = filter.value;
164
- break;
165
- case "enum":
166
- if (filter.method === "oneOf" && Array.isArray(filter.value)) {
167
- // Multi-select: array of strings to SharedSelection (Set)
168
- value = new Set(filter.value);
169
- }
170
- else {
171
- // Single select: string to SharedSelection with currentKey
172
- const selection = new Set([filter.value]);
173
- // Set currentKey property
174
- Object.defineProperty(selection, "currentKey", {
175
- value: filter.value,
176
- writable: true,
177
- enumerable: false,
178
- configurable: true,
179
- });
180
- value = selection;
181
- }
182
- break;
183
- default:
184
- value = filter.value;
185
- }
186
- const column = columnsMap.get(columnId);
187
- return {
188
- columnId,
189
- type: filter.type,
190
- value,
191
- method,
192
- options: column?.options ?? null,
193
- endColumnId: column?.endColumnId ?? null,
194
- periodStartColumnId: column?.periodStartColumnId ?? null,
195
- periodEndColumnId: column?.periodEndColumnId ?? null,
196
- };
197
- });
86
+ * Transform filters from backend format (QueryFilter[]) to HeroUI format (HeroUIFilter[])
87
+ * Used when loading filters from URL/backend to populate HeroUI components
88
+ */
89
+ const transformFiltersToHeroUI = (filtersToTransform, columnsMap, filterMethods) => {
90
+ return filtersToTransform.map((filter) => {
91
+ let value = null;
92
+ let method = null;
93
+ let columnId = filter.columnId;
94
+ if (filter.type === "date" && filter.method === "intersect" && filter.endColumnId) {
95
+ const periodColumnId = `${filter.columnId}__period`;
96
+ if (columnsMap.get(periodColumnId)) columnId = periodColumnId;
97
+ }
98
+ if (filter.type) {
99
+ const methodObj = filterMethods[filter.type]?.find((m) => m.value === filter.method);
100
+ if (methodObj) method = methodObj;
101
+ else if (filter.method === "isEmpty" || filter.method === "isNotEmpty") method = {
102
+ value: filter.method,
103
+ label: filter.method === "isEmpty" ? "Is Empty" : "Is Not Empty",
104
+ component: null
105
+ };
106
+ }
107
+ switch (filter.type) {
108
+ case "string":
109
+ value = filter.value;
110
+ break;
111
+ case "number":
112
+ value = filter.value;
113
+ break;
114
+ case "date":
115
+ if (filter.method === "between" || filter.method === "intersect") value = dateFilterToRangeValue([filter], filter.columnId);
116
+ else if (typeof filter.value === "string" && filter.value) {
117
+ const day = parseUTCToCalendarDate(filter.value);
118
+ value = day ? day : null;
119
+ } else value = null;
120
+ break;
121
+ case "boolean":
122
+ value = filter.value;
123
+ break;
124
+ case "enum":
125
+ if (filter.method === "oneOf" && Array.isArray(filter.value)) value = new Set(filter.value);
126
+ else {
127
+ const selection = new Set([filter.value]);
128
+ Object.defineProperty(selection, "currentKey", {
129
+ value: filter.value,
130
+ writable: true,
131
+ enumerable: false,
132
+ configurable: true
133
+ });
134
+ value = selection;
135
+ }
136
+ break;
137
+ default: value = filter.value;
138
+ }
139
+ const column = columnsMap.get(columnId);
140
+ return {
141
+ columnId,
142
+ type: filter.type,
143
+ value,
144
+ method,
145
+ options: column?.options ?? null,
146
+ endColumnId: column?.endColumnId ?? null,
147
+ periodStartColumnId: column?.periodStartColumnId ?? null,
148
+ periodEndColumnId: column?.periodEndColumnId ?? null
149
+ };
150
+ });
198
151
  };
199
152
  /**
200
- * Transform filters from HeroUI format (HeroUIFilter[]) to backend format (QueryFilter[])
201
- * Used when applying filters to send to backend/URL
202
- */
203
- export const transformFiltersFromHeroUI = (filters) => {
204
- const filtersToApply = [];
205
- for (const filter of filters) {
206
- let value;
207
- let valueTo;
208
- // Handle isEmpty/isNotEmpty methods - they don't need a value
209
- if (filter.method?.value === "isEmpty" || filter.method?.value === "isNotEmpty") {
210
- if (filter.columnId === "")
211
- continue;
212
- const result = {
213
- columnId: filter.columnId,
214
- type: filter.type,
215
- method: filter.method.value,
216
- value: "",
217
- };
218
- filtersToApply.push(result);
219
- continue;
220
- }
221
- // Handle Period pseudo-column: map to intersect on real columns
222
- const isPeriodColumn = filter.columnId.endsWith("__period");
223
- const actualColumnId = isPeriodColumn && filter.periodStartColumnId ? filter.periodStartColumnId : filter.columnId;
224
- const actualEndColumnId = isPeriodColumn && filter.periodEndColumnId ? filter.periodEndColumnId : filter.endColumnId;
225
- switch (filter.type) {
226
- case "date":
227
- if (filter.method?.value === "between" ||
228
- filter.method?.value === "intersect" ||
229
- isPeriodColumn) {
230
- const range = filter.value;
231
- if (range?.start && range?.end) {
232
- value = calendarDateToUTC(range.start);
233
- valueTo = calendarDateToUTC(range.end);
234
- }
235
- }
236
- else {
237
- const dateValue = filter.value;
238
- if (dateValue?.year) {
239
- value = calendarDateToUTC(dateValue);
240
- }
241
- }
242
- break;
243
- case "enum": {
244
- const selection = filter.value;
245
- if (selection) {
246
- value =
247
- filter.method?.value === "oneOf"
248
- ? Array.from(selection).map(String)
249
- : String(selection.currentKey);
250
- }
251
- break;
252
- }
253
- default:
254
- value = filter.value;
255
- }
256
- // Skip filters without valid values
257
- if (!value || value === "" || filter.columnId === "")
258
- continue;
259
- if (filter.type === "enum" && Array.isArray(value) && value.length === 0)
260
- continue;
261
- // For Period columns, always use intersect method
262
- const actualMethod = isPeriodColumn ? "intersect" : filter.method.value;
263
- const result = {
264
- columnId: actualColumnId,
265
- type: filter.type,
266
- method: actualMethod,
267
- value: value,
268
- ...(valueTo && { valueTo: valueTo }),
269
- ...(actualMethod === "intersect" && actualEndColumnId
270
- ? { endColumnId: actualEndColumnId }
271
- : {}),
272
- };
273
- filtersToApply.push(result);
274
- }
275
- return filtersToApply;
153
+ * Transform filters from HeroUI format (HeroUIFilter[]) to backend format (QueryFilter[])
154
+ * Used when applying filters to send to backend/URL
155
+ */
156
+ const transformFiltersFromHeroUI = (filters) => {
157
+ const filtersToApply = [];
158
+ for (const filter of filters) {
159
+ let value;
160
+ let valueTo;
161
+ if (filter.method?.value === "isEmpty" || filter.method?.value === "isNotEmpty") {
162
+ if (filter.columnId === "") continue;
163
+ const result = {
164
+ columnId: filter.columnId,
165
+ type: filter.type,
166
+ method: filter.method.value,
167
+ value: ""
168
+ };
169
+ filtersToApply.push(result);
170
+ continue;
171
+ }
172
+ const isPeriodColumn = filter.columnId.endsWith("__period");
173
+ const actualColumnId = isPeriodColumn && filter.periodStartColumnId ? filter.periodStartColumnId : filter.columnId;
174
+ const actualEndColumnId = isPeriodColumn && filter.periodEndColumnId ? filter.periodEndColumnId : filter.endColumnId;
175
+ switch (filter.type) {
176
+ case "date":
177
+ if (filter.method?.value === "between" || filter.method?.value === "intersect" || isPeriodColumn) {
178
+ const range = filter.value;
179
+ if (range?.start && range?.end) {
180
+ value = calendarDateToUTC(range.start);
181
+ valueTo = calendarDateToUTC(range.end);
182
+ }
183
+ } else {
184
+ const dateValue = filter.value;
185
+ if (dateValue?.year) value = calendarDateToUTC(dateValue);
186
+ }
187
+ break;
188
+ case "enum": {
189
+ const selection = filter.value;
190
+ if (selection) value = filter.method?.value === "oneOf" ? Array.from(selection).map(String) : String(selection.currentKey);
191
+ break;
192
+ }
193
+ default: value = filter.value;
194
+ }
195
+ if (!value || value === "" || filter.columnId === "") continue;
196
+ if (filter.type === "enum" && Array.isArray(value) && value.length === 0) continue;
197
+ const actualMethod = isPeriodColumn ? "intersect" : filter.method.value;
198
+ const result = {
199
+ columnId: actualColumnId,
200
+ type: filter.type,
201
+ method: actualMethod,
202
+ value,
203
+ ...valueTo && { valueTo },
204
+ ...actualMethod === "intersect" && actualEndColumnId ? { endColumnId: actualEndColumnId } : {}
205
+ };
206
+ filtersToApply.push(result);
207
+ }
208
+ return filtersToApply;
276
209
  };
210
+ //#endregion
211
+ export { calendarDateToEndOfDayUTC, calendarDateToUTC, dateFilterToRangeValue, transformFiltersFromHeroUI, transformFiltersToHeroUI };
212
+
213
+ //# sourceMappingURL=filterTransformers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"filterTransformers.js","names":[],"sources":["../../../../src/modules/table/filterTransformers.ts"],"sourcesContent":["import type { DateValue, RangeValue, SharedSelection } from \"@heroui/react\";\r\nimport { CalendarDate, getLocalTimeZone, today } from \"@internationalized/date\";\r\nimport type { QueryFilter, QueryFilters } from \"@m5kdev/commons/modules/schemas/query.schema\";\r\nimport type { ColumnDataType, FilterMethod } from \"@m5kdev/commons/modules/table/filter.types\";\r\nimport { DateTime } from \"luxon\";\r\n\r\nexport type FilterValue =\r\n | string\r\n | number\r\n | string[]\r\n | DateValue\r\n | RangeValue<DateValue>\r\n | boolean\r\n | SharedSelection\r\n | null;\r\n\r\nexport interface HeroUIFilter {\r\n columnId: string;\r\n type: ColumnDataType | null;\r\n value: FilterValue;\r\n method: FilterMethod | 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\r\n/**\r\n * Convert CalendarDate to UTC ISO string at midnight UTC\r\n */\r\nexport const calendarDateToUTC = (date: CalendarDate): string => {\r\n return DateTime.utc(date.year, date.month, date.day).toISO() ?? \"\";\r\n};\r\n\r\n/**\r\n * Convert CalendarDate to end of day UTC ISO string\r\n */\r\nexport const calendarDateToEndOfDayUTC = (date: CalendarDate): string => {\r\n return DateTime.utc(date.year, date.month, date.day).endOf(\"day\").toISO() ?? \"\";\r\n};\r\n\r\n/**\r\n * Parse UTC ISO string to CalendarDate (preserves UTC date, no timezone shift)\r\n */\r\nconst parseUTCToCalendarDate = (isoString: string): CalendarDate | null => {\r\n try {\r\n const dt = DateTime.fromISO(isoString, { zone: \"utc\" });\r\n if (!dt.isValid) return null;\r\n return new CalendarDate(dt.year, dt.month, dt.day);\r\n } catch {\r\n return null;\r\n }\r\n};\r\n\r\n/**\r\n * Convert any date filter method from URL to a RangeValue for DateRangePicker\r\n * Handles: on, before, after, between, intersect\r\n * Parses UTC ISO strings as UTC to avoid timezone shifts\r\n */\r\nexport const dateFilterToRangeValue = (\r\n filters: QueryFilters | undefined,\r\n columnId: string\r\n): RangeValue<DateValue> | null => {\r\n if (!filters) return null;\r\n\r\n const filter = filters.find((f) => f.columnId === columnId);\r\n if (!filter || filter.type !== \"date\") return null;\r\n\r\n const todayDate = today(getLocalTimeZone());\r\n const epochStart = new CalendarDate(1970, 1, 1);\r\n\r\n try {\r\n switch (filter.method) {\r\n case \"on\": {\r\n // Same day range\r\n if (typeof filter.value !== \"string\" || !filter.value) return null;\r\n const day = parseUTCToCalendarDate(filter.value);\r\n if (!day) return null;\r\n return {\r\n start: day as unknown as DateValue,\r\n end: day as unknown as DateValue,\r\n } as RangeValue<DateValue>;\r\n }\r\n case \"before\": {\r\n // [epochStart, selectedDay]\r\n if (typeof filter.value !== \"string\" || !filter.value) return null;\r\n const day = parseUTCToCalendarDate(filter.value);\r\n if (!day) return null;\r\n return {\r\n start: epochStart as unknown as DateValue,\r\n end: day as unknown as DateValue,\r\n } as RangeValue<DateValue>;\r\n }\r\n case \"after\": {\r\n // [selectedDay, today]\r\n if (typeof filter.value !== \"string\" || !filter.value) return null;\r\n const day = parseUTCToCalendarDate(filter.value);\r\n if (!day) return null;\r\n return {\r\n start: day as unknown as DateValue,\r\n end: todayDate as unknown as DateValue,\r\n } as RangeValue<DateValue>;\r\n }\r\n case \"between\":\r\n case \"intersect\": {\r\n // [value, valueTo]\r\n if (typeof filter.value !== \"string\" || !filter.value || !filter.valueTo) return null;\r\n const startDate = parseUTCToCalendarDate(filter.value);\r\n const endDate = parseUTCToCalendarDate(filter.valueTo);\r\n if (!startDate || !endDate) return null;\r\n return {\r\n start: startDate as unknown as DateValue,\r\n end: endDate as unknown as DateValue,\r\n } as RangeValue<DateValue>;\r\n }\r\n default:\r\n return null;\r\n }\r\n } catch {\r\n return null;\r\n }\r\n};\r\n\r\n/**\r\n * Transform filters from backend format (QueryFilter[]) to HeroUI format (HeroUIFilter[])\r\n * Used when loading filters from URL/backend to populate HeroUI components\r\n */\r\nexport const transformFiltersToHeroUI = (\r\n filtersToTransform: QueryFilters,\r\n columnsMap: Map<\r\n string,\r\n {\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 >,\r\n filterMethods: Record<ColumnDataType, FilterMethod[]>\r\n): HeroUIFilter[] => {\r\n return filtersToTransform.map((filter) => {\r\n let value: FilterValue = null;\r\n let method: FilterMethod | null = null;\r\n let columnId = filter.columnId;\r\n\r\n // Check if this intersect filter should map to Period pseudo-column\r\n if (filter.type === \"date\" && filter.method === \"intersect\" && filter.endColumnId) {\r\n const periodColumnId = `${filter.columnId}__period`;\r\n const periodColumn = columnsMap.get(periodColumnId);\r\n if (periodColumn) {\r\n // Map to Period pseudo-column\r\n columnId = periodColumnId;\r\n }\r\n }\r\n\r\n // Find the method object from the methods configuration\r\n if (filter.type) {\r\n const availableMethods = filterMethods[filter.type as ColumnDataType];\r\n const methodObj = availableMethods?.find((m: FilterMethod) => m.value === filter.method);\r\n if (methodObj) {\r\n method = methodObj;\r\n } else if (filter.method === \"isEmpty\" || filter.method === \"isNotEmpty\") {\r\n // Handle isEmpty/isNotEmpty even if not in the provided method list\r\n method = {\r\n value: filter.method,\r\n label: filter.method === \"isEmpty\" ? \"Is Empty\" : \"Is Not Empty\",\r\n component: null,\r\n };\r\n }\r\n }\r\n\r\n // Transform value based on type\r\n switch (filter.type) {\r\n case \"string\":\r\n value = filter.value as string;\r\n break;\r\n case \"number\":\r\n value = filter.value as number;\r\n break;\r\n case \"date\":\r\n // Use the shared helper for range conversion, or parse single dates as UTC\r\n if (filter.method === \"between\" || filter.method === \"intersect\") {\r\n // For range methods, use the helper function\r\n const range = dateFilterToRangeValue([filter], filter.columnId);\r\n value = range;\r\n } else {\r\n // Single date value: parse UTC ISO string and extract UTC calendar date\r\n if (typeof filter.value === \"string\" && filter.value) {\r\n const day = parseUTCToCalendarDate(filter.value);\r\n value = day ? (day as unknown as DateValue) : null;\r\n } else {\r\n value = null;\r\n }\r\n }\r\n break;\r\n case \"boolean\":\r\n value = filter.value as boolean;\r\n break;\r\n case \"enum\":\r\n if (filter.method === \"oneOf\" && Array.isArray(filter.value)) {\r\n // Multi-select: array of strings to SharedSelection (Set)\r\n value = new Set(filter.value) as SharedSelection;\r\n } else {\r\n // Single select: string to SharedSelection with currentKey\r\n const selection = new Set([filter.value as string]) as SharedSelection;\r\n // Set currentKey property\r\n Object.defineProperty(selection, \"currentKey\", {\r\n value: filter.value as string,\r\n writable: true,\r\n enumerable: false,\r\n configurable: true,\r\n });\r\n value = selection;\r\n }\r\n break;\r\n default:\r\n value = filter.value;\r\n }\r\n\r\n const column = columnsMap.get(columnId);\r\n return {\r\n columnId,\r\n type: filter.type,\r\n value,\r\n method,\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 };\r\n });\r\n};\r\n\r\n/**\r\n * Transform filters from HeroUI format (HeroUIFilter[]) to backend format (QueryFilter[])\r\n * Used when applying filters to send to backend/URL\r\n */\r\nexport const transformFiltersFromHeroUI = (filters: HeroUIFilter[]): QueryFilters => {\r\n const filtersToApply: QueryFilters = [];\r\n\r\n for (const filter of filters) {\r\n let value: FilterValue | undefined;\r\n let valueTo: FilterValue | undefined;\r\n\r\n // Handle isEmpty/isNotEmpty methods - they don't need a value\r\n if (filter.method?.value === \"isEmpty\" || filter.method?.value === \"isNotEmpty\") {\r\n if (filter.columnId === \"\") continue;\r\n\r\n const result: QueryFilter = {\r\n columnId: filter.columnId,\r\n type: filter.type as ColumnDataType,\r\n method: filter.method.value,\r\n value: \"\",\r\n };\r\n filtersToApply.push(result);\r\n continue;\r\n }\r\n\r\n // Handle Period pseudo-column: map to intersect on real columns\r\n const isPeriodColumn = filter.columnId.endsWith(\"__period\");\r\n const actualColumnId =\r\n isPeriodColumn && filter.periodStartColumnId ? filter.periodStartColumnId : filter.columnId;\r\n const actualEndColumnId =\r\n isPeriodColumn && filter.periodEndColumnId ? filter.periodEndColumnId : filter.endColumnId;\r\n\r\n switch (filter.type) {\r\n case \"date\":\r\n if (\r\n filter.method?.value === \"between\" ||\r\n filter.method?.value === \"intersect\" ||\r\n isPeriodColumn\r\n ) {\r\n const range = filter.value as RangeValue<DateValue>;\r\n if (range?.start && range?.end) {\r\n value = calendarDateToUTC(range.start as unknown as CalendarDate);\r\n valueTo = calendarDateToUTC(range.end as unknown as CalendarDate);\r\n }\r\n } else {\r\n const dateValue = filter.value as unknown as CalendarDate;\r\n if (dateValue?.year) {\r\n value = calendarDateToUTC(dateValue);\r\n }\r\n }\r\n break;\r\n case \"enum\": {\r\n const selection = filter.value as SharedSelection;\r\n if (selection) {\r\n value =\r\n filter.method?.value === \"oneOf\"\r\n ? Array.from(selection).map(String)\r\n : String(selection.currentKey);\r\n }\r\n break;\r\n }\r\n default:\r\n value = filter.value;\r\n }\r\n\r\n // Skip filters without valid values\r\n if (!value || value === \"\" || filter.columnId === \"\") continue;\r\n if (filter.type === \"enum\" && Array.isArray(value) && value.length === 0) continue;\r\n\r\n // For Period columns, always use intersect method\r\n const actualMethod = isPeriodColumn ? \"intersect\" : (filter.method as FilterMethod).value;\r\n\r\n const result: QueryFilter = {\r\n columnId: actualColumnId,\r\n type: filter.type as ColumnDataType,\r\n method: actualMethod,\r\n value: value as string | number | boolean | string[],\r\n ...(valueTo && { valueTo: valueTo as string }),\r\n ...(actualMethod === \"intersect\" && actualEndColumnId\r\n ? { endColumnId: actualEndColumnId }\r\n : {}),\r\n };\r\n filtersToApply.push(result);\r\n }\r\n\r\n return filtersToApply;\r\n};\r\n"],"mappings":";;;;;;AA8BA,MAAa,qBAAqB,SAA+B;AAC/D,QAAO,SAAS,IAAI,KAAK,MAAM,KAAK,OAAO,KAAK,IAAI,CAAC,OAAO,IAAI;;;;;AAMlE,MAAa,6BAA6B,SAA+B;AACvE,QAAO,SAAS,IAAI,KAAK,MAAM,KAAK,OAAO,KAAK,IAAI,CAAC,MAAM,MAAM,CAAC,OAAO,IAAI;;;;;AAM/E,MAAM,0BAA0B,cAA2C;AACzE,KAAI;EACF,MAAM,KAAK,SAAS,QAAQ,WAAW,EAAE,MAAM,OAAO,CAAC;AACvD,MAAI,CAAC,GAAG,QAAS,QAAO;AACxB,SAAO,IAAI,aAAa,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI;SAC5C;AACN,SAAO;;;;;;;;AASX,MAAa,0BACX,SACA,aACiC;AACjC,KAAI,CAAC,QAAS,QAAO;CAErB,MAAM,SAAS,QAAQ,MAAM,MAAM,EAAE,aAAa,SAAS;AAC3D,KAAI,CAAC,UAAU,OAAO,SAAS,OAAQ,QAAO;CAE9C,MAAM,YAAY,MAAM,kBAAkB,CAAC;CAC3C,MAAM,aAAa,IAAI,aAAa,MAAM,GAAG,EAAE;AAE/C,KAAI;AACF,UAAQ,OAAO,QAAf;GACE,KAAK,MAAM;AAET,QAAI,OAAO,OAAO,UAAU,YAAY,CAAC,OAAO,MAAO,QAAO;IAC9D,MAAM,MAAM,uBAAuB,OAAO,MAAM;AAChD,QAAI,CAAC,IAAK,QAAO;AACjB,WAAO;KACL,OAAO;KACP,KAAK;KACN;;GAEH,KAAK,UAAU;AAEb,QAAI,OAAO,OAAO,UAAU,YAAY,CAAC,OAAO,MAAO,QAAO;IAC9D,MAAM,MAAM,uBAAuB,OAAO,MAAM;AAChD,QAAI,CAAC,IAAK,QAAO;AACjB,WAAO;KACL,OAAO;KACP,KAAK;KACN;;GAEH,KAAK,SAAS;AAEZ,QAAI,OAAO,OAAO,UAAU,YAAY,CAAC,OAAO,MAAO,QAAO;IAC9D,MAAM,MAAM,uBAAuB,OAAO,MAAM;AAChD,QAAI,CAAC,IAAK,QAAO;AACjB,WAAO;KACL,OAAO;KACP,KAAK;KACN;;GAEH,KAAK;GACL,KAAK,aAAa;AAEhB,QAAI,OAAO,OAAO,UAAU,YAAY,CAAC,OAAO,SAAS,CAAC,OAAO,QAAS,QAAO;IACjF,MAAM,YAAY,uBAAuB,OAAO,MAAM;IACtD,MAAM,UAAU,uBAAuB,OAAO,QAAQ;AACtD,QAAI,CAAC,aAAa,CAAC,QAAS,QAAO;AACnC,WAAO;KACL,OAAO;KACP,KAAK;KACN;;GAEH,QACE,QAAO;;SAEL;AACN,SAAO;;;;;;;AAQX,MAAa,4BACX,oBACA,YAYA,kBACmB;AACnB,QAAO,mBAAmB,KAAK,WAAW;EACxC,IAAI,QAAqB;EACzB,IAAI,SAA8B;EAClC,IAAI,WAAW,OAAO;AAGtB,MAAI,OAAO,SAAS,UAAU,OAAO,WAAW,eAAe,OAAO,aAAa;GACjF,MAAM,iBAAiB,GAAG,OAAO,SAAS;AAE1C,OADqB,WAAW,IAAI,eAAe,CAGjD,YAAW;;AAKf,MAAI,OAAO,MAAM;GAEf,MAAM,YADmB,cAAc,OAAO,OACV,MAAM,MAAoB,EAAE,UAAU,OAAO,OAAO;AACxF,OAAI,UACF,UAAS;YACA,OAAO,WAAW,aAAa,OAAO,WAAW,aAE1D,UAAS;IACP,OAAO,OAAO;IACd,OAAO,OAAO,WAAW,YAAY,aAAa;IAClD,WAAW;IACZ;;AAKL,UAAQ,OAAO,MAAf;GACE,KAAK;AACH,YAAQ,OAAO;AACf;GACF,KAAK;AACH,YAAQ,OAAO;AACf;GACF,KAAK;AAEH,QAAI,OAAO,WAAW,aAAa,OAAO,WAAW,YAGnD,SADc,uBAAuB,CAAC,OAAO,EAAE,OAAO,SAAS;aAI3D,OAAO,OAAO,UAAU,YAAY,OAAO,OAAO;KACpD,MAAM,MAAM,uBAAuB,OAAO,MAAM;AAChD,aAAQ,MAAO,MAA+B;UAE9C,SAAQ;AAGZ;GACF,KAAK;AACH,YAAQ,OAAO;AACf;GACF,KAAK;AACH,QAAI,OAAO,WAAW,WAAW,MAAM,QAAQ,OAAO,MAAM,CAE1D,SAAQ,IAAI,IAAI,OAAO,MAAM;SACxB;KAEL,MAAM,YAAY,IAAI,IAAI,CAAC,OAAO,MAAgB,CAAC;AAEnD,YAAO,eAAe,WAAW,cAAc;MAC7C,OAAO,OAAO;MACd,UAAU;MACV,YAAY;MACZ,cAAc;MACf,CAAC;AACF,aAAQ;;AAEV;GACF,QACE,SAAQ,OAAO;;EAGnB,MAAM,SAAS,WAAW,IAAI,SAAS;AACvC,SAAO;GACL;GACA,MAAM,OAAO;GACb;GACA;GACA,SAAS,QAAQ,WAAW;GAC5B,aAAa,QAAQ,eAAe;GACpC,qBAAqB,QAAQ,uBAAuB;GACpD,mBAAmB,QAAQ,qBAAqB;GACjD;GACD;;;;;;AAOJ,MAAa,8BAA8B,YAA0C;CACnF,MAAM,iBAA+B,EAAE;AAEvC,MAAK,MAAM,UAAU,SAAS;EAC5B,IAAI;EACJ,IAAI;AAGJ,MAAI,OAAO,QAAQ,UAAU,aAAa,OAAO,QAAQ,UAAU,cAAc;AAC/E,OAAI,OAAO,aAAa,GAAI;GAE5B,MAAM,SAAsB;IAC1B,UAAU,OAAO;IACjB,MAAM,OAAO;IACb,QAAQ,OAAO,OAAO;IACtB,OAAO;IACR;AACD,kBAAe,KAAK,OAAO;AAC3B;;EAIF,MAAM,iBAAiB,OAAO,SAAS,SAAS,WAAW;EAC3D,MAAM,iBACJ,kBAAkB,OAAO,sBAAsB,OAAO,sBAAsB,OAAO;EACrF,MAAM,oBACJ,kBAAkB,OAAO,oBAAoB,OAAO,oBAAoB,OAAO;AAEjF,UAAQ,OAAO,MAAf;GACE,KAAK;AACH,QACE,OAAO,QAAQ,UAAU,aACzB,OAAO,QAAQ,UAAU,eACzB,gBACA;KACA,MAAM,QAAQ,OAAO;AACrB,SAAI,OAAO,SAAS,OAAO,KAAK;AAC9B,cAAQ,kBAAkB,MAAM,MAAiC;AACjE,gBAAU,kBAAkB,MAAM,IAA+B;;WAE9D;KACL,MAAM,YAAY,OAAO;AACzB,SAAI,WAAW,KACb,SAAQ,kBAAkB,UAAU;;AAGxC;GACF,KAAK,QAAQ;IACX,MAAM,YAAY,OAAO;AACzB,QAAI,UACF,SACE,OAAO,QAAQ,UAAU,UACrB,MAAM,KAAK,UAAU,CAAC,IAAI,OAAO,GACjC,OAAO,UAAU,WAAW;AAEpC;;GAEF,QACE,SAAQ,OAAO;;AAInB,MAAI,CAAC,SAAS,UAAU,MAAM,OAAO,aAAa,GAAI;AACtD,MAAI,OAAO,SAAS,UAAU,MAAM,QAAQ,MAAM,IAAI,MAAM,WAAW,EAAG;EAG1E,MAAM,eAAe,iBAAiB,cAAe,OAAO,OAAwB;EAEpF,MAAM,SAAsB;GAC1B,UAAU;GACV,MAAM,OAAO;GACb,QAAQ;GACD;GACP,GAAI,WAAW,EAAW,SAAmB;GAC7C,GAAI,iBAAiB,eAAe,oBAChC,EAAE,aAAa,mBAAmB,GAClC,EAAE;GACP;AACD,iBAAe,KAAK,OAAO;;AAG7B,QAAO"}
@@ -1,3 +1,8 @@
1
- import type { BackendTRPCRouter } from "@m5kdev/backend/types";
2
- import type { createTRPCContext } from "@trpc/tanstack-react-query";
3
- export type UseBackendTRPC = ReturnType<typeof createTRPCContext<BackendTRPCRouter>>["useTRPC"];
1
+ import { BackendTRPCRouter } from "@m5kdev/backend/types";
2
+ import { createTRPCContext } from "@trpc/tanstack-react-query";
3
+
4
+ //#region src/types.d.ts
5
+ type UseBackendTRPC = ReturnType<typeof createTRPCContext<BackendTRPCRouter>>["useTRPC"];
6
+ //#endregion
7
+ export { UseBackendTRPC };
8
+ //# sourceMappingURL=types.d.ts.map
package/dist/src/types.js CHANGED
@@ -1 +0,0 @@
1
- export {};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@m5kdev/web-ui",
3
- "version": "0.6.0",
3
+ "version": "0.8.0",
4
4
  "license": "GPL-3.0-only",
5
5
  "repository": {
6
6
  "type": "git",
@@ -67,19 +67,21 @@
67
67
  "zod": "4.2.1",
68
68
  "@tanstack/react-query": "5.83.0",
69
69
  "@trpc/tanstack-react-query": "11.4.3",
70
- "@m5kdev/frontend": "0.6.0",
71
- "@m5kdev/commons": "0.6.0"
70
+ "@m5kdev/commons": "0.8.0",
71
+ "@m5kdev/frontend": "0.8.0"
72
72
  },
73
73
  "devDependencies": {
74
+ "@tsdown/css": "0.21.7",
74
75
  "@trpc/server": "11.4.3",
75
76
  "@types/luxon": "3.7.1",
76
77
  "@types/react": "19.2.7",
77
78
  "@types/react-big-calendar": "1.16.3",
78
79
  "@types/react-dom": "19.2.3",
79
80
  "globals": "16.3.0",
81
+ "tsdown": "0.21.7",
80
82
  "vite": "7.0.4",
81
- "@m5kdev/backend": "0.6.0",
82
- "@m5kdev/config": "0.6.0"
83
+ "@m5kdev/backend": "0.8.0",
84
+ "@m5kdev/config": "0.8.0"
83
85
  },
84
86
  "exports": {
85
87
  "./components/*": {
@@ -147,6 +149,6 @@
147
149
  "lint": "biome check .",
148
150
  "lint:fix": "biome check . --write",
149
151
  "check-types": "tsc --noEmit",
150
- "build": "tsc --build && cp -r translations dist/ && cp src/components/Calendar.css dist/src/components/"
152
+ "build": "tsdown"
151
153
  }
152
154
  }