@greatapps/common 1.1.380 → 1.1.381

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 (345) hide show
  1. package/dist/components/account/AccountModals.mjs.map +1 -1
  2. package/dist/components/account/ConfigurationsMyAccountModal.mjs +1 -1
  3. package/dist/components/account/ConfigurationsMyAccountModal.mjs.map +1 -1
  4. package/dist/components/account/ConfirmDeleteAccountModal.mjs.map +1 -1
  5. package/dist/components/account/ConfirmGlobalPreferencesModal.mjs.map +1 -1
  6. package/dist/components/account/DeleteAccountModal.mjs.map +1 -1
  7. package/dist/components/account/DisableTwoFactorAuthModal.mjs.map +1 -1
  8. package/dist/components/account/IsntPossibleDeleteAccountModal.mjs.map +1 -1
  9. package/dist/components/account/TwoFactorAuthModal.mjs.map +1 -1
  10. package/dist/components/account/hooks/useChangePhoneForm.mjs.map +1 -1
  11. package/dist/components/account/hooks/useTwoFactorAuthForm.mjs.map +1 -1
  12. package/dist/components/account/sections/ChangeEmailModal.mjs.map +1 -1
  13. package/dist/components/account/sections/ChangePasswordSection.mjs.map +1 -1
  14. package/dist/components/account/sections/ChangePhoneModal.mjs.map +1 -1
  15. package/dist/components/account/sections/MyProfileSection.mjs.map +1 -1
  16. package/dist/components/account/sections/PreferencesSection.mjs.map +1 -1
  17. package/dist/components/account/sections/SecuritySection.mjs.map +1 -1
  18. package/dist/components/embeds/CrispEmbed.mjs.map +1 -1
  19. package/dist/components/embeds/FrillEmbed.mjs.map +1 -1
  20. package/dist/components/handlers/SearchParamsHandler.mjs.map +1 -1
  21. package/dist/components/layouts/AppMobileNavBar.mjs.map +1 -1
  22. package/dist/components/layouts/AppNavBar.mjs.map +1 -1
  23. package/dist/components/layouts/CollapsibleSidebar.mjs.map +1 -1
  24. package/dist/components/layouts/MdSideBarNavigation.mjs.map +1 -1
  25. package/dist/components/layouts/NavBar.mjs.map +1 -1
  26. package/dist/components/layouts/NotificationsPopover.mjs.map +1 -1
  27. package/dist/components/layouts/ProfilePopover.mjs.map +1 -1
  28. package/dist/components/layouts/SideBarNavigation.mjs.map +1 -1
  29. package/dist/components/layouts/UsersSelectorPopover.mjs.map +1 -1
  30. package/dist/components/layouts/WhitelabelCodes.mjs.map +1 -1
  31. package/dist/components/modals/BuyCreditsModal.mjs.map +1 -1
  32. package/dist/components/modals/ModalManager.mjs.map +1 -1
  33. package/dist/components/modals/Modals.mjs.map +1 -1
  34. package/dist/components/modals/cards/AddCardModal.mjs.map +1 -1
  35. package/dist/components/modals/cards/CardFormFields.mjs.map +1 -1
  36. package/dist/components/navigation/CancelledSubscriptionBanner.mjs.map +1 -1
  37. package/dist/components/navigation/NavItemsContext.mjs.map +1 -1
  38. package/dist/components/navigation/ProjectSelectorPopover.mjs.map +1 -1
  39. package/dist/components/navigation/shells/TabsMobileShell.mjs.map +1 -1
  40. package/dist/components/navigation/subcomponents/ProjectSelector.mjs.map +1 -1
  41. package/dist/components/pages/NotFoundPage.mjs.map +1 -1
  42. package/dist/components/pages/notifications/Notifications.mjs.map +1 -1
  43. package/dist/components/ui/buttons/Button.mjs.map +1 -1
  44. package/dist/components/ui/buttons/CancelButton.mjs.map +1 -1
  45. package/dist/components/ui/buttons/CopyButton.mjs.map +1 -1
  46. package/dist/components/ui/data-display/Accordion.mjs.map +1 -1
  47. package/dist/components/ui/data-display/Badge.mjs.map +1 -1
  48. package/dist/components/ui/data-display/Card.mjs.map +1 -1
  49. package/dist/components/ui/data-display/CardBrandIcons.mjs.map +1 -1
  50. package/dist/components/ui/data-display/CardItem.mjs.map +1 -1
  51. package/dist/components/ui/data-display/Pagination.mjs.map +1 -1
  52. package/dist/components/ui/data-display/PaymentInfoCard.mjs.map +1 -1
  53. package/dist/components/ui/data-display/ScrollArea.mjs.map +1 -1
  54. package/dist/components/ui/data-display/Separator.mjs.map +1 -1
  55. package/dist/components/ui/data-display/Table.mjs.map +1 -1
  56. package/dist/components/ui/data-display/Tabs.mjs.map +1 -1
  57. package/dist/components/ui/feedback/CircularProgress.mjs.map +1 -1
  58. package/dist/components/ui/feedback/DefaultCircularProgress.mjs.map +1 -1
  59. package/dist/components/ui/feedback/LoadingOverlay.mjs.map +1 -1
  60. package/dist/components/ui/feedback/Progress.mjs.map +1 -1
  61. package/dist/components/ui/feedback/Skeleton.mjs.map +1 -1
  62. package/dist/components/ui/feedback/Toast.mjs.map +1 -1
  63. package/dist/components/ui/form/Calendar.mjs.map +1 -1
  64. package/dist/components/ui/form/Checkbox.mjs.map +1 -1
  65. package/dist/components/ui/form/ComboboxField.mjs.map +1 -1
  66. package/dist/components/ui/form/DatePicker.mjs.map +1 -1
  67. package/dist/components/ui/form/DateRangePicker.mjs.map +1 -1
  68. package/dist/components/ui/form/FormField.mjs.map +1 -1
  69. package/dist/components/ui/form/Input.mjs.map +1 -1
  70. package/dist/components/ui/form/InputOtp.mjs.map +1 -1
  71. package/dist/components/ui/form/PhoneInput.mjs.map +1 -1
  72. package/dist/components/ui/form/RadioGroup.mjs.map +1 -1
  73. package/dist/components/ui/form/Select.mjs +1 -1
  74. package/dist/components/ui/form/Select.mjs.map +1 -1
  75. package/dist/components/ui/form/Switch.mjs.map +1 -1
  76. package/dist/components/ui/form/Textarea.mjs.map +1 -1
  77. package/dist/components/ui/overlay/Command.mjs.map +1 -1
  78. package/dist/components/ui/overlay/Dialog.mjs.map +1 -1
  79. package/dist/components/ui/overlay/Popover.mjs.map +1 -1
  80. package/dist/components/ui/overlay/Sheet.mjs.map +1 -1
  81. package/dist/components/ui/overlay/Tooltip.mjs.map +1 -1
  82. package/dist/components/widgets/notifications/NotificationCard.mjs.map +1 -1
  83. package/dist/hooks/copy-to-clipboard.hook.mjs.map +1 -1
  84. package/dist/hooks/useDebounce.mjs.map +1 -1
  85. package/dist/hooks/useDebounceState.mjs.map +1 -1
  86. package/dist/hooks/useDebouncedEffect.mjs.map +1 -1
  87. package/dist/index.mjs.map +1 -1
  88. package/dist/infra/utils/clsx.mjs.map +1 -1
  89. package/dist/infra/utils/date.mjs.map +1 -1
  90. package/dist/infra/utils/parser.mjs.map +1 -1
  91. package/dist/infra/utils/percentage.mjs.map +1 -1
  92. package/dist/middleware.mjs.map +1 -1
  93. package/dist/modules/accounts/actions/account-management.action.mjs.map +1 -1
  94. package/dist/modules/accounts/actions/find-current-account.action.mjs.map +1 -1
  95. package/dist/modules/accounts/actions/list-currencies.action.mjs.map +1 -1
  96. package/dist/modules/accounts/actions/list-timezones.action.mjs.map +1 -1
  97. package/dist/modules/accounts/hooks/current-account.hook.mjs.map +1 -1
  98. package/dist/modules/accounts/hooks/useAccountManagement.mjs.map +1 -1
  99. package/dist/modules/accounts/hooks/useCurrencies.mjs.map +1 -1
  100. package/dist/modules/accounts/hooks/useTimezones.mjs.map +1 -1
  101. package/dist/modules/accounts/hooks/useViaCep.mjs.map +1 -1
  102. package/dist/modules/accounts/services/account.service.mjs.map +1 -1
  103. package/dist/modules/accounts/services/two-factor.service.mjs +3 -2
  104. package/dist/modules/accounts/services/two-factor.service.mjs.map +1 -1
  105. package/dist/modules/auth/actions/validate-session.action.mjs.map +1 -1
  106. package/dist/modules/auth/actions/verify-two-factor.action.mjs +2 -2
  107. package/dist/modules/auth/actions/verify-two-factor.action.mjs.map +1 -1
  108. package/dist/modules/auth/hooks/login.hook.mjs.map +1 -1
  109. package/dist/modules/auth/hooks/logout.hook.mjs.map +1 -1
  110. package/dist/modules/auth/hooks/register.hook.mjs.map +1 -1
  111. package/dist/modules/auth/hooks/useManagementPermissions.mjs.map +1 -1
  112. package/dist/modules/auth/hooks/useUserQuery.mjs +2 -2
  113. package/dist/modules/auth/hooks/useUserQuery.mjs.map +1 -1
  114. package/dist/modules/auth/services/auth.service.mjs +3 -2
  115. package/dist/modules/auth/services/auth.service.mjs.map +1 -1
  116. package/dist/modules/auth/utils/assert-management-permission.mjs.map +1 -1
  117. package/dist/modules/auth/utils/assert-management-subscription.mjs.map +1 -1
  118. package/dist/modules/auth/utils/build-wl-override.mjs.map +1 -1
  119. package/dist/modules/cards/actions/create-card.action.mjs.map +1 -1
  120. package/dist/modules/cards/actions/list-cards.action.mjs.map +1 -1
  121. package/dist/modules/cards/hooks/cards.hook.mjs.map +1 -1
  122. package/dist/modules/cards/hooks/create-card.hook.mjs.map +1 -1
  123. package/dist/modules/cards/services/cards.service.mjs.map +1 -1
  124. package/dist/modules/cards/types.mjs.map +1 -1
  125. package/dist/modules/ia-credits/actions/list-ia-credits.action.mjs.map +1 -1
  126. package/dist/modules/plans/actions/find-plan-by-id.action.mjs.map +1 -1
  127. package/dist/modules/plans/hooks/use-has-plan-addon.hook.mjs.map +1 -1
  128. package/dist/modules/plans/hooks/use-plan-by-id.hook.mjs.map +1 -1
  129. package/dist/modules/plans/services/plans.service.mjs.map +1 -1
  130. package/dist/modules/plans/types/plan.type.mjs.map +1 -1
  131. package/dist/modules/projects/actions/add-project-user.action.mjs.map +1 -1
  132. package/dist/modules/projects/actions/list-all-account-users.action.mjs.map +1 -1
  133. package/dist/modules/projects/actions/list-available-users.action.mjs.map +1 -1
  134. package/dist/modules/projects/actions/list-project-users.action.mjs.map +1 -1
  135. package/dist/modules/projects/actions/remove-project-user.action.mjs.map +1 -1
  136. package/dist/modules/projects/hooks/add-project-user.hook.mjs.map +1 -1
  137. package/dist/modules/projects/hooks/list-all-account-users.hook.mjs.map +1 -1
  138. package/dist/modules/projects/hooks/list-available-users.hook.mjs.map +1 -1
  139. package/dist/modules/projects/hooks/list-project-users.hook.mjs.map +1 -1
  140. package/dist/modules/projects/hooks/remove-project-user.hook.mjs.map +1 -1
  141. package/dist/modules/subscriptions/actions/calculate-subscription.action.mjs.map +1 -1
  142. package/dist/modules/subscriptions/actions/list-subscriptions.action.mjs.map +1 -1
  143. package/dist/modules/subscriptions/actions/update-subscription-plan.action.mjs.map +1 -1
  144. package/dist/modules/subscriptions/constants/query-keys.constants.mjs.map +1 -1
  145. package/dist/modules/subscriptions/hooks/calculate-subscription.hook.mjs.map +1 -1
  146. package/dist/modules/subscriptions/hooks/find-active-subscription.hook.mjs.map +1 -1
  147. package/dist/modules/subscriptions/hooks/list-subscriptions.hook.mjs.map +1 -1
  148. package/dist/modules/subscriptions/hooks/update-subscription-plan.hook.mjs.map +1 -1
  149. package/dist/modules/subscriptions/hooks/use-cancelled-subscription-guard.mjs.map +1 -1
  150. package/dist/modules/subscriptions/types/calculate-subscription.type.mjs.map +1 -1
  151. package/dist/modules/subscriptions/utils/build-plan-extras.mjs.map +1 -1
  152. package/dist/modules/subscriptions/utils/has-subscription-expired.mjs.map +1 -1
  153. package/dist/modules/subscriptions/utils/periodicity.mjs.map +1 -1
  154. package/dist/modules/subscriptions/utils/resolve-plan-extras-prices.mjs.map +1 -1
  155. package/dist/modules/users/action/find-user-by-id.action.mjs.map +1 -1
  156. package/dist/modules/users/action/list-messages.action.mjs.map +1 -1
  157. package/dist/modules/users/action/mark-all-messages-as-read.action.mjs.map +1 -1
  158. package/dist/modules/users/action/mark-message-as-read.action.mjs.map +1 -1
  159. package/dist/modules/users/hooks/messages.hook.mjs.map +1 -1
  160. package/dist/modules/users/services/messages.service.mjs.map +1 -1
  161. package/dist/modules/whitelabel/actions/find-whitelabel.action.mjs.map +1 -1
  162. package/dist/modules/whitelabel/actions/revalidate-whitelabel.action.mjs.map +1 -1
  163. package/dist/modules/whitelabel/utils/normalize-hostname.mjs.map +1 -1
  164. package/dist/providers/whitelabel.provider.mjs.map +1 -1
  165. package/dist/store/useAccountModals.mjs.map +1 -1
  166. package/dist/store/useBuyCreditsModal.mjs.map +1 -1
  167. package/dist/store/useDesktopSidebarStore.mjs.map +1 -1
  168. package/dist/store/useMdSidebarStore.mjs.map +1 -1
  169. package/dist/store/useModalManager.mjs.map +1 -1
  170. package/dist/utils/constants/br-states.mjs.map +1 -1
  171. package/dist/utils/countries.mjs.map +1 -1
  172. package/dist/utils/safeServerAction.mjs.map +1 -1
  173. package/dist/utils/withAction.mjs.map +1 -1
  174. package/package.json +89 -89
  175. package/src/components/account/AccountModals.tsx +17 -17
  176. package/src/components/account/ConfigurationsMyAccountModal.tsx +146 -146
  177. package/src/components/account/ConfirmDeleteAccountModal.tsx +55 -55
  178. package/src/components/account/ConfirmGlobalPreferencesModal.tsx +66 -66
  179. package/src/components/account/DeleteAccountModal.tsx +130 -130
  180. package/src/components/account/DisableTwoFactorAuthModal.tsx +86 -86
  181. package/src/components/account/IsntPossibleDeleteAccountModal.tsx +49 -49
  182. package/src/components/account/TwoFactorAuthModal.tsx +215 -215
  183. package/src/components/account/hooks/useChangePhoneForm.tsx +107 -107
  184. package/src/components/account/hooks/useTwoFactorAuthForm.tsx +101 -101
  185. package/src/components/account/sections/ChangeEmailModal.tsx +225 -225
  186. package/src/components/account/sections/ChangePasswordSection.tsx +64 -64
  187. package/src/components/account/sections/ChangePhoneModal.tsx +245 -245
  188. package/src/components/account/sections/MyProfileSection.tsx +327 -327
  189. package/src/components/account/sections/PreferencesSection.tsx +248 -248
  190. package/src/components/account/sections/SecuritySection.tsx +46 -46
  191. package/src/components/embeds/CrispEmbed.tsx +101 -101
  192. package/src/components/embeds/FrillEmbed.tsx +119 -119
  193. package/src/components/handlers/SearchParamsHandler.tsx +61 -61
  194. package/src/components/layouts/AppMobileNavBar.tsx +118 -118
  195. package/src/components/layouts/AppNavBar.tsx +46 -46
  196. package/src/components/layouts/CollapsibleSidebar.tsx +67 -67
  197. package/src/components/layouts/MdSideBarNavigation.tsx +56 -56
  198. package/src/components/layouts/NavBar.tsx +172 -172
  199. package/src/components/layouts/NotificationsPopover.tsx +115 -115
  200. package/src/components/layouts/ProfilePopover.tsx +174 -174
  201. package/src/components/layouts/SideBarNavigation.tsx +62 -62
  202. package/src/components/layouts/UsersSelectorPopover.tsx +234 -234
  203. package/src/components/layouts/WhitelabelCodes.tsx +59 -59
  204. package/src/components/modals/BuyCreditsModal.tsx +314 -314
  205. package/src/components/modals/ModalManager.tsx +29 -29
  206. package/src/components/modals/Modals.tsx +26 -26
  207. package/src/components/modals/cards/AddCardModal.tsx +260 -260
  208. package/src/components/modals/cards/CardFormFields.tsx +294 -294
  209. package/src/components/navigation/CancelledSubscriptionBanner.tsx +60 -60
  210. package/src/components/navigation/NavItemsContext.ts +20 -20
  211. package/src/components/navigation/ProjectSelectorPopover.tsx +194 -194
  212. package/src/components/navigation/shells/TabsMobileShell.tsx +72 -72
  213. package/src/components/navigation/subcomponents/ProjectSelector.tsx +190 -190
  214. package/src/components/pages/NotFoundPage.tsx +67 -67
  215. package/src/components/pages/notifications/Notifications.tsx +160 -160
  216. package/src/components/ui/buttons/Button.tsx +57 -57
  217. package/src/components/ui/buttons/CancelButton.tsx +14 -14
  218. package/src/components/ui/buttons/CopyButton.tsx +54 -54
  219. package/src/components/ui/data-display/Accordion.tsx +81 -81
  220. package/src/components/ui/data-display/Badge.tsx +47 -47
  221. package/src/components/ui/data-display/Card.tsx +93 -93
  222. package/src/components/ui/data-display/CardBrandIcons.tsx +336 -336
  223. package/src/components/ui/data-display/CardItem.tsx +75 -75
  224. package/src/components/ui/data-display/Pagination.tsx +126 -126
  225. package/src/components/ui/data-display/PaymentInfoCard.tsx +186 -186
  226. package/src/components/ui/data-display/ScrollArea.tsx +59 -59
  227. package/src/components/ui/data-display/Separator.tsx +29 -29
  228. package/src/components/ui/data-display/Table.tsx +117 -117
  229. package/src/components/ui/data-display/Tabs.tsx +67 -67
  230. package/src/components/ui/feedback/CircularProgress.tsx +75 -75
  231. package/src/components/ui/feedback/DefaultCircularProgress.tsx +61 -61
  232. package/src/components/ui/feedback/LoadingOverlay.tsx +31 -31
  233. package/src/components/ui/feedback/Progress.tsx +40 -40
  234. package/src/components/ui/feedback/Skeleton.tsx +5 -5
  235. package/src/components/ui/feedback/Toast.tsx +101 -101
  236. package/src/components/ui/form/Calendar.tsx +228 -228
  237. package/src/components/ui/form/Checkbox.tsx +31 -31
  238. package/src/components/ui/form/ComboboxField.tsx +154 -154
  239. package/src/components/ui/form/DatePicker.tsx +97 -97
  240. package/src/components/ui/form/DateRangePicker.tsx +108 -108
  241. package/src/components/ui/form/FormField.tsx +131 -131
  242. package/src/components/ui/form/Input.tsx +20 -20
  243. package/src/components/ui/form/InputOtp.tsx +80 -80
  244. package/src/components/ui/form/PhoneInput.tsx +208 -208
  245. package/src/components/ui/form/RadioGroup.tsx +45 -45
  246. package/src/components/ui/form/Select.tsx +200 -200
  247. package/src/components/ui/form/Switch.tsx +32 -32
  248. package/src/components/ui/form/Textarea.tsx +19 -19
  249. package/src/components/ui/overlay/Command.tsx +185 -185
  250. package/src/components/ui/overlay/Dialog.tsx +151 -151
  251. package/src/components/ui/overlay/Popover.tsx +49 -49
  252. package/src/components/ui/overlay/Sheet.tsx +166 -166
  253. package/src/components/ui/overlay/Tooltip.tsx +62 -62
  254. package/src/components/widgets/notifications/NotificationCard.tsx +68 -68
  255. package/src/hooks/copy-to-clipboard.hook.tsx +67 -67
  256. package/src/hooks/useDebounce.ts +26 -26
  257. package/src/hooks/useDebounceState.ts +11 -11
  258. package/src/hooks/useDebouncedEffect.ts +69 -69
  259. package/src/index.ts +391 -391
  260. package/src/infra/utils/clsx.ts +6 -6
  261. package/src/infra/utils/date.ts +7 -7
  262. package/src/infra/utils/parser.ts +52 -52
  263. package/src/infra/utils/percentage.ts +42 -42
  264. package/src/middleware.ts +4 -4
  265. package/src/modules/accounts/actions/account-management.action.ts +107 -107
  266. package/src/modules/accounts/actions/find-current-account.action.ts +9 -9
  267. package/src/modules/accounts/actions/list-currencies.action.ts +8 -8
  268. package/src/modules/accounts/actions/list-timezones.action.ts +8 -8
  269. package/src/modules/accounts/hooks/current-account.hook.tsx +22 -22
  270. package/src/modules/accounts/hooks/useAccountManagement.ts +85 -85
  271. package/src/modules/accounts/hooks/useCurrencies.ts +15 -15
  272. package/src/modules/accounts/hooks/useTimezones.ts +15 -15
  273. package/src/modules/accounts/hooks/useViaCep.ts +25 -25
  274. package/src/modules/accounts/services/account.service.ts +239 -239
  275. package/src/modules/accounts/services/two-factor.service.ts +3 -2
  276. package/src/modules/accounts/types.ts +225 -225
  277. package/src/modules/auth/actions/validate-session.action.ts +56 -56
  278. package/src/modules/auth/actions/verify-two-factor.action.ts +2 -2
  279. package/src/modules/auth/hooks/login.hook.tsx +13 -13
  280. package/src/modules/auth/hooks/logout.hook.tsx +11 -11
  281. package/src/modules/auth/hooks/register.hook.tsx +11 -11
  282. package/src/modules/auth/hooks/useManagementPermissions.ts +45 -45
  283. package/src/modules/auth/hooks/useUserQuery.ts +2 -2
  284. package/src/modules/auth/services/auth.service.ts +3 -1
  285. package/src/modules/auth/types/management-permission.type.ts +7 -7
  286. package/src/modules/auth/utils/assert-management-permission.ts +46 -46
  287. package/src/modules/auth/utils/assert-management-subscription.ts +27 -27
  288. package/src/modules/auth/utils/build-wl-override.ts +43 -43
  289. package/src/modules/cards/actions/create-card.action.ts +9 -9
  290. package/src/modules/cards/actions/list-cards.action.ts +8 -8
  291. package/src/modules/cards/hooks/cards.hook.ts +14 -14
  292. package/src/modules/cards/hooks/create-card.hook.ts +18 -18
  293. package/src/modules/cards/services/cards.service.ts +51 -51
  294. package/src/modules/cards/types.ts +32 -32
  295. package/src/modules/ia-credits/actions/list-ia-credits.action.ts +8 -8
  296. package/src/modules/plans/actions/find-plan-by-id.action.ts +8 -8
  297. package/src/modules/plans/hooks/use-has-plan-addon.hook.ts +17 -17
  298. package/src/modules/plans/hooks/use-plan-by-id.hook.ts +13 -13
  299. package/src/modules/plans/services/plans.service.ts +36 -36
  300. package/src/modules/plans/types/plan.type.ts +21 -21
  301. package/src/modules/projects/actions/add-project-user.action.ts +9 -9
  302. package/src/modules/projects/actions/list-all-account-users.action.ts +9 -9
  303. package/src/modules/projects/actions/list-available-users.action.ts +9 -9
  304. package/src/modules/projects/actions/list-project-users.action.ts +9 -9
  305. package/src/modules/projects/actions/remove-project-user.action.ts +9 -9
  306. package/src/modules/projects/hooks/add-project-user.hook.ts +69 -69
  307. package/src/modules/projects/hooks/list-all-account-users.hook.ts +34 -34
  308. package/src/modules/projects/hooks/list-available-users.hook.ts +33 -33
  309. package/src/modules/projects/hooks/list-project-users.hook.ts +33 -33
  310. package/src/modules/projects/hooks/remove-project-user.hook.ts +69 -69
  311. package/src/modules/subscriptions/actions/calculate-subscription.action.ts +9 -9
  312. package/src/modules/subscriptions/actions/list-subscriptions.action.ts +9 -9
  313. package/src/modules/subscriptions/actions/update-subscription-plan.action.ts +14 -14
  314. package/src/modules/subscriptions/constants/query-keys.constants.ts +1 -1
  315. package/src/modules/subscriptions/hooks/calculate-subscription.hook.ts +13 -13
  316. package/src/modules/subscriptions/hooks/find-active-subscription.hook.ts +19 -19
  317. package/src/modules/subscriptions/hooks/list-subscriptions.hook.ts +16 -16
  318. package/src/modules/subscriptions/hooks/update-subscription-plan.hook.ts +25 -25
  319. package/src/modules/subscriptions/hooks/use-cancelled-subscription-guard.ts +39 -39
  320. package/src/modules/subscriptions/types/billing-period.type.ts +1 -1
  321. package/src/modules/subscriptions/types/calculate-subscription.type.ts +75 -75
  322. package/src/modules/subscriptions/utils/build-plan-extras.ts +56 -56
  323. package/src/modules/subscriptions/utils/has-subscription-expired.ts +8 -8
  324. package/src/modules/subscriptions/utils/periodicity.ts +52 -52
  325. package/src/modules/subscriptions/utils/resolve-plan-extras-prices.ts +23 -23
  326. package/src/modules/users/action/find-user-by-id.action.ts +8 -8
  327. package/src/modules/users/action/list-messages.action.ts +12 -12
  328. package/src/modules/users/action/mark-all-messages-as-read.action.ts +8 -8
  329. package/src/modules/users/action/mark-message-as-read.action.ts +8 -8
  330. package/src/modules/users/hooks/messages.hook.ts +60 -60
  331. package/src/modules/users/services/messages.service.ts +48 -48
  332. package/src/modules/whitelabel/actions/find-whitelabel.action.ts +23 -23
  333. package/src/modules/whitelabel/actions/revalidate-whitelabel.action.ts +19 -19
  334. package/src/modules/whitelabel/schema.ts +84 -84
  335. package/src/modules/whitelabel/utils/normalize-hostname.ts +26 -26
  336. package/src/providers/whitelabel.provider.tsx +54 -54
  337. package/src/store/useAccountModals.ts +55 -55
  338. package/src/store/useBuyCreditsModal.ts +21 -21
  339. package/src/store/useDesktopSidebarStore.ts +47 -47
  340. package/src/store/useMdSidebarStore.ts +34 -34
  341. package/src/store/useModalManager.ts +104 -104
  342. package/src/utils/constants/br-states.ts +29 -29
  343. package/src/utils/countries.ts +224 -224
  344. package/src/utils/safeServerAction.ts +21 -21
  345. package/src/utils/withAction.ts +13 -13
@@ -1,239 +1,239 @@
1
- import 'server-only';
2
-
3
- import { api } from '../../../infra/api/client';
4
- import { ApiError } from '../../../infra/api/types';
5
- import { buildQueryParams } from '../../../infra/utils/params';
6
- import { getUserContext } from '../../auth/utils/get-user-context';
7
- import { fileToBase64 } from '../../../utils/file/index';
8
- import type { RequestConfig } from '../../../infra/api/client';
9
- import { buildWlOverride } from '../../auth/utils/build-wl-override';
10
- import type {
11
- Account,
12
- AccountUsersPaginationParams,
13
- ChangePasswordRequest,
14
- ChangePasswordResponse,
15
- ChangeUserPhotoResponse,
16
- CreateAccountUserRequest,
17
- CreateAccountUserResponse,
18
- DeleteAccountResponse,
19
- DeleteAccountUserResponse,
20
- GetAccountDataResponse,
21
- ListAccountUsersResponse,
22
- UpdateAccountRequest,
23
- UpdateAccountResponse,
24
- UpdateAccountUserRequest,
25
- UpdateAccountUserResponse,
26
- } from '../types';
27
-
28
- class AccountService {
29
- async findCurrentAccount(config?: RequestConfig): Promise<Account> {
30
- const { id_wl, id_account } = await getUserContext();
31
- const effectiveConfig = config ?? await buildWlOverride(id_wl);
32
- const response = await api.apps.get<GetAccountDataResponse>(`/accounts/${id_account}`, effectiveConfig);
33
-
34
- if (response.status === 0 || !response.data?.[0]) {
35
- throw new ApiError(
36
- response.message || 'Erro ao buscar dados da conta',
37
- 'GET_ACCOUNT_FAILED',
38
- 400
39
- );
40
- }
41
-
42
- return response.data[0];
43
- }
44
-
45
- async listAccountUsers(params?: Partial<AccountUsersPaginationParams>) {
46
- const { id_account } = await getUserContext();
47
- const queryParams = buildQueryParams(params);
48
- const endpoint = `/accounts/${id_account}/users?${queryParams}`;
49
- const response = await api.apps.get<ListAccountUsersResponse>(endpoint);
50
-
51
- if (response.status === 0) {
52
- throw new ApiError(
53
- response.message || 'Erro ao listar usuários',
54
- 'LIST_ACCOUNT_USERS_FAILED',
55
- 400
56
- );
57
- }
58
-
59
- return {
60
- users: response.data || [],
61
- total: response.total || 0,
62
- };
63
- }
64
-
65
- async changeUserPhoto(userId: number, photo: File): Promise<ChangeUserPhotoResponse> {
66
- const { id_account } = await getUserContext();
67
- const base64 = await fileToBase64(photo);
68
- const response = await api.apps.put<ChangeUserPhotoResponse>(
69
- `/accounts/${id_account}/users/${userId}/file/photo`,
70
- { file: base64 }
71
- );
72
-
73
- if (response.status === 0) {
74
- throw new ApiError(
75
- response.message || 'Erro ao mudar foto do usuário',
76
- 'CHANGE_USER_PHOTO_FAILED',
77
- 400
78
- );
79
- }
80
-
81
- return response;
82
- }
83
-
84
- async deleteAccountUser(userId: number): Promise<DeleteAccountUserResponse> {
85
- const { id_account } = await getUserContext();
86
- const response = await api.apps.delete<DeleteAccountUserResponse>(
87
- `/accounts/${id_account}/users/${userId}`
88
- );
89
-
90
- if (response.status === 0) {
91
- throw new ApiError(response.message || 'Erro ao deletar usuário', 'DELETE_USER_FAILED', 400);
92
- }
93
-
94
- return response;
95
- }
96
-
97
- async deleteAccount(): Promise<DeleteAccountResponse> {
98
- const { id_account } = await getUserContext();
99
- const response = await api.apps.delete<DeleteAccountResponse>(`/accounts/${id_account}`);
100
-
101
- if (response.status === 0) {
102
- throw new ApiError(response.message || 'Erro ao deletar conta', 'DELETE_ACCOUNT_FAILED', 400);
103
- }
104
-
105
- return response;
106
- }
107
-
108
- async createAccountUser(user: CreateAccountUserRequest): Promise<CreateAccountUserResponse> {
109
- const { id_account } = await getUserContext();
110
- const response = await api.apps.post<CreateAccountUserResponse>(
111
- `/accounts/${id_account}/users`,
112
- {
113
- ...user,
114
- photo: user.photo ? await fileToBase64(user.photo) : null,
115
- }
116
- );
117
-
118
- if (response.status === 0) {
119
- throw new ApiError(response.message || 'Erro ao criar usuário', 'CREATE_USER_FAILED', 400);
120
- }
121
-
122
- return response;
123
- }
124
-
125
- private async resolvePhotoField(user: UpdateAccountUserRequest): Promise<{ photo?: string | null }> {
126
- if (user.photo === undefined) return {};
127
- const photo =
128
- user.photo != null && typeof user.photo !== 'string'
129
- ? await fileToBase64(user.photo)
130
- : user.photo;
131
- return { photo };
132
- }
133
-
134
- async updateAccountUser(user: UpdateAccountUserRequest): Promise<UpdateAccountUserResponse> {
135
- const { id_account, id_user } = await getUserContext();
136
- const response = await api.apps.put<UpdateAccountUserResponse>(
137
- `/accounts/${id_account}/users/${id_user}`,
138
- { ...user, ...(await this.resolvePhotoField(user)) }
139
- );
140
-
141
- if (response.status === 0) {
142
- throw new ApiError(
143
- response.message || 'Erro ao atualizar usuário',
144
- 'UPDATE_USER_FAILED',
145
- 400
146
- );
147
- }
148
-
149
- return response;
150
- }
151
-
152
- async updateAccountUserById(
153
- userId: number,
154
- user: UpdateAccountUserRequest
155
- ): Promise<UpdateAccountUserResponse> {
156
- const { id_account } = await getUserContext();
157
- const response = await api.apps.put<UpdateAccountUserResponse>(
158
- `/accounts/${id_account}/users/${userId}`,
159
- { ...user, ...(await this.resolvePhotoField(user)) }
160
- );
161
-
162
- if (response.status === 0) {
163
- throw new ApiError(
164
- response.message || 'Erro ao atualizar usuário',
165
- 'UPDATE_USER_FAILED',
166
- 400
167
- );
168
- }
169
-
170
- return response;
171
- }
172
-
173
- async updateAccount(data: UpdateAccountRequest): Promise<UpdateAccountResponse> {
174
- const { id_account } = await getUserContext();
175
- const response = await api.apps.put<UpdateAccountResponse>(`/accounts/${id_account}`, data);
176
-
177
- if (response.status === 0) {
178
- throw new ApiError(
179
- response.message || 'Erro ao atualizar conta',
180
- 'UPDATE_ACCOUNT_FAILED',
181
- 400
182
- );
183
- }
184
-
185
- return response;
186
- }
187
-
188
- async requestContactReset(type: 'email' | 'phone', newContact: string, ddi?: string): Promise<void> {
189
- const { id_account, id_user } = await getUserContext();
190
- const response = await api.apps.post<{ status: number; message: string }>(
191
- `/accounts/${id_account}/users/${id_user}/resetContact/request`,
192
- { type, newContact, ...(ddi ? { ddi } : {}) }
193
- );
194
-
195
- if (response.status === 0) {
196
- throw new ApiError(
197
- response.message || 'Erro ao solicitar alteração',
198
- 'REQUEST_CONTACT_RESET_FAILED',
199
- 400
200
- );
201
- }
202
- }
203
-
204
- async confirmContactReset(type: 'email' | 'phone', token: string, newContact: string, ddi?: string): Promise<void> {
205
- const { id_account, id_user } = await getUserContext();
206
- const response = await api.apps.post<{ status: number; message: string }>(
207
- `/accounts/${id_account}/users/${id_user}/resetContact/confirm`,
208
- { type, token, newContact, ...(ddi ? { ddi } : {}) }
209
- );
210
-
211
- if (response.status === 0) {
212
- throw new ApiError(
213
- response.message || 'Código inválido ou expirado',
214
- 'CONFIRM_CONTACT_RESET_FAILED',
215
- 400
216
- );
217
- }
218
- }
219
-
220
- async changePassword(data: ChangePasswordRequest): Promise<ChangePasswordResponse> {
221
- const { id_account, id_user } = await getUserContext();
222
- const response = await api.apps.put<ChangePasswordResponse>(
223
- `/accounts/${id_account}/users/${id_user}/action/changePassword`,
224
- data
225
- );
226
-
227
- if (response.status === 0) {
228
- throw new ApiError(
229
- response.message || 'Erro ao alterar senha',
230
- 'CHANGE_PASSWORD_FAILED',
231
- 400
232
- );
233
- }
234
-
235
- return response;
236
- }
237
- }
238
-
239
- export const accountService = new AccountService();
1
+ import 'server-only';
2
+
3
+ import { api } from '../../../infra/api/client';
4
+ import { ApiError } from '../../../infra/api/types';
5
+ import { buildQueryParams } from '../../../infra/utils/params';
6
+ import { getUserContext } from '../../auth/utils/get-user-context';
7
+ import { fileToBase64 } from '../../../utils/file/index';
8
+ import type { RequestConfig } from '../../../infra/api/client';
9
+ import { buildWlOverride } from '../../auth/utils/build-wl-override';
10
+ import type {
11
+ Account,
12
+ AccountUsersPaginationParams,
13
+ ChangePasswordRequest,
14
+ ChangePasswordResponse,
15
+ ChangeUserPhotoResponse,
16
+ CreateAccountUserRequest,
17
+ CreateAccountUserResponse,
18
+ DeleteAccountResponse,
19
+ DeleteAccountUserResponse,
20
+ GetAccountDataResponse,
21
+ ListAccountUsersResponse,
22
+ UpdateAccountRequest,
23
+ UpdateAccountResponse,
24
+ UpdateAccountUserRequest,
25
+ UpdateAccountUserResponse,
26
+ } from '../types';
27
+
28
+ class AccountService {
29
+ async findCurrentAccount(config?: RequestConfig): Promise<Account> {
30
+ const { id_wl, id_account } = await getUserContext();
31
+ const effectiveConfig = config ?? await buildWlOverride(id_wl);
32
+ const response = await api.apps.get<GetAccountDataResponse>(`/accounts/${id_account}`, effectiveConfig);
33
+
34
+ if (response.status === 0 || !response.data?.[0]) {
35
+ throw new ApiError(
36
+ response.message || 'Erro ao buscar dados da conta',
37
+ 'GET_ACCOUNT_FAILED',
38
+ 400
39
+ );
40
+ }
41
+
42
+ return response.data[0];
43
+ }
44
+
45
+ async listAccountUsers(params?: Partial<AccountUsersPaginationParams>) {
46
+ const { id_account } = await getUserContext();
47
+ const queryParams = buildQueryParams(params);
48
+ const endpoint = `/accounts/${id_account}/users?${queryParams}`;
49
+ const response = await api.apps.get<ListAccountUsersResponse>(endpoint);
50
+
51
+ if (response.status === 0) {
52
+ throw new ApiError(
53
+ response.message || 'Erro ao listar usuários',
54
+ 'LIST_ACCOUNT_USERS_FAILED',
55
+ 400
56
+ );
57
+ }
58
+
59
+ return {
60
+ users: response.data || [],
61
+ total: response.total || 0,
62
+ };
63
+ }
64
+
65
+ async changeUserPhoto(userId: number, photo: File): Promise<ChangeUserPhotoResponse> {
66
+ const { id_account } = await getUserContext();
67
+ const base64 = await fileToBase64(photo);
68
+ const response = await api.apps.put<ChangeUserPhotoResponse>(
69
+ `/accounts/${id_account}/users/${userId}/file/photo`,
70
+ { file: base64 }
71
+ );
72
+
73
+ if (response.status === 0) {
74
+ throw new ApiError(
75
+ response.message || 'Erro ao mudar foto do usuário',
76
+ 'CHANGE_USER_PHOTO_FAILED',
77
+ 400
78
+ );
79
+ }
80
+
81
+ return response;
82
+ }
83
+
84
+ async deleteAccountUser(userId: number): Promise<DeleteAccountUserResponse> {
85
+ const { id_account } = await getUserContext();
86
+ const response = await api.apps.delete<DeleteAccountUserResponse>(
87
+ `/accounts/${id_account}/users/${userId}`
88
+ );
89
+
90
+ if (response.status === 0) {
91
+ throw new ApiError(response.message || 'Erro ao deletar usuário', 'DELETE_USER_FAILED', 400);
92
+ }
93
+
94
+ return response;
95
+ }
96
+
97
+ async deleteAccount(): Promise<DeleteAccountResponse> {
98
+ const { id_account } = await getUserContext();
99
+ const response = await api.apps.delete<DeleteAccountResponse>(`/accounts/${id_account}`);
100
+
101
+ if (response.status === 0) {
102
+ throw new ApiError(response.message || 'Erro ao deletar conta', 'DELETE_ACCOUNT_FAILED', 400);
103
+ }
104
+
105
+ return response;
106
+ }
107
+
108
+ async createAccountUser(user: CreateAccountUserRequest): Promise<CreateAccountUserResponse> {
109
+ const { id_account } = await getUserContext();
110
+ const response = await api.apps.post<CreateAccountUserResponse>(
111
+ `/accounts/${id_account}/users`,
112
+ {
113
+ ...user,
114
+ photo: user.photo ? await fileToBase64(user.photo) : null,
115
+ }
116
+ );
117
+
118
+ if (response.status === 0) {
119
+ throw new ApiError(response.message || 'Erro ao criar usuário', 'CREATE_USER_FAILED', 400);
120
+ }
121
+
122
+ return response;
123
+ }
124
+
125
+ private async resolvePhotoField(user: UpdateAccountUserRequest): Promise<{ photo?: string | null }> {
126
+ if (user.photo === undefined) return {};
127
+ const photo =
128
+ user.photo != null && typeof user.photo !== 'string'
129
+ ? await fileToBase64(user.photo)
130
+ : user.photo;
131
+ return { photo };
132
+ }
133
+
134
+ async updateAccountUser(user: UpdateAccountUserRequest): Promise<UpdateAccountUserResponse> {
135
+ const { id_account, id_user } = await getUserContext();
136
+ const response = await api.apps.put<UpdateAccountUserResponse>(
137
+ `/accounts/${id_account}/users/${id_user}`,
138
+ { ...user, ...(await this.resolvePhotoField(user)) }
139
+ );
140
+
141
+ if (response.status === 0) {
142
+ throw new ApiError(
143
+ response.message || 'Erro ao atualizar usuário',
144
+ 'UPDATE_USER_FAILED',
145
+ 400
146
+ );
147
+ }
148
+
149
+ return response;
150
+ }
151
+
152
+ async updateAccountUserById(
153
+ userId: number,
154
+ user: UpdateAccountUserRequest
155
+ ): Promise<UpdateAccountUserResponse> {
156
+ const { id_account } = await getUserContext();
157
+ const response = await api.apps.put<UpdateAccountUserResponse>(
158
+ `/accounts/${id_account}/users/${userId}`,
159
+ { ...user, ...(await this.resolvePhotoField(user)) }
160
+ );
161
+
162
+ if (response.status === 0) {
163
+ throw new ApiError(
164
+ response.message || 'Erro ao atualizar usuário',
165
+ 'UPDATE_USER_FAILED',
166
+ 400
167
+ );
168
+ }
169
+
170
+ return response;
171
+ }
172
+
173
+ async updateAccount(data: UpdateAccountRequest): Promise<UpdateAccountResponse> {
174
+ const { id_account } = await getUserContext();
175
+ const response = await api.apps.put<UpdateAccountResponse>(`/accounts/${id_account}`, data);
176
+
177
+ if (response.status === 0) {
178
+ throw new ApiError(
179
+ response.message || 'Erro ao atualizar conta',
180
+ 'UPDATE_ACCOUNT_FAILED',
181
+ 400
182
+ );
183
+ }
184
+
185
+ return response;
186
+ }
187
+
188
+ async requestContactReset(type: 'email' | 'phone', newContact: string, ddi?: string): Promise<void> {
189
+ const { id_account, id_user } = await getUserContext();
190
+ const response = await api.apps.post<{ status: number; message: string }>(
191
+ `/accounts/${id_account}/users/${id_user}/resetContact/request`,
192
+ { type, newContact, ...(ddi ? { ddi } : {}) }
193
+ );
194
+
195
+ if (response.status === 0) {
196
+ throw new ApiError(
197
+ response.message || 'Erro ao solicitar alteração',
198
+ 'REQUEST_CONTACT_RESET_FAILED',
199
+ 400
200
+ );
201
+ }
202
+ }
203
+
204
+ async confirmContactReset(type: 'email' | 'phone', token: string, newContact: string, ddi?: string): Promise<void> {
205
+ const { id_account, id_user } = await getUserContext();
206
+ const response = await api.apps.post<{ status: number; message: string }>(
207
+ `/accounts/${id_account}/users/${id_user}/resetContact/confirm`,
208
+ { type, token, newContact, ...(ddi ? { ddi } : {}) }
209
+ );
210
+
211
+ if (response.status === 0) {
212
+ throw new ApiError(
213
+ response.message || 'Código inválido ou expirado',
214
+ 'CONFIRM_CONTACT_RESET_FAILED',
215
+ 400
216
+ );
217
+ }
218
+ }
219
+
220
+ async changePassword(data: ChangePasswordRequest): Promise<ChangePasswordResponse> {
221
+ const { id_account, id_user } = await getUserContext();
222
+ const response = await api.apps.put<ChangePasswordResponse>(
223
+ `/accounts/${id_account}/users/${id_user}/action/changePassword`,
224
+ data
225
+ );
226
+
227
+ if (response.status === 0) {
228
+ throw new ApiError(
229
+ response.message || 'Erro ao alterar senha',
230
+ 'CHANGE_PASSWORD_FAILED',
231
+ 400
232
+ );
233
+ }
234
+
235
+ return response;
236
+ }
237
+ }
238
+
239
+ export const accountService = new AccountService();
@@ -45,8 +45,9 @@ class TwoFactorService {
45
45
  return response;
46
46
  }
47
47
 
48
- async confirm(code: string): Promise<TwoFactorActionResponse> {
49
- const response = await this.request<TwoFactorActionResponse>('confirm', { code });
48
+ async confirm(code: string, options?: { window?: number }): Promise<TwoFactorActionResponse> {
49
+ const path = options?.window !== undefined ? `confirm?window=${options.window}` : 'confirm';
50
+ const response = await this.request<TwoFactorActionResponse>(path, { code });
50
51
 
51
52
  if (response.status === 0) {
52
53
  throw new ApiError(response.message || 'Código inválido', 'CONFIRM_2FA_FAILED', 400);