@greatapps/common 1.1.371 → 1.1.374

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (338) hide show
  1. package/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 +9 -1
  28. package/dist/components/layouts/ProfilePopover.mjs.map +1 -1
  29. package/dist/components/layouts/SideBarNavigation.mjs.map +1 -1
  30. package/dist/components/layouts/UsersSelectorPopover.mjs.map +1 -1
  31. package/dist/components/layouts/WhitelabelCodes.mjs.map +1 -1
  32. package/dist/components/modals/BuyCreditsModal.mjs.map +1 -1
  33. package/dist/components/modals/ModalManager.mjs.map +1 -1
  34. package/dist/components/modals/Modals.mjs.map +1 -1
  35. package/dist/components/modals/cards/AddCardModal.mjs.map +1 -1
  36. package/dist/components/modals/cards/CardFormFields.mjs.map +1 -1
  37. package/dist/components/navigation/CancelledSubscriptionBanner.mjs.map +1 -1
  38. package/dist/components/navigation/NavItemsContext.mjs.map +1 -1
  39. package/dist/components/navigation/ProjectSelectorPopover.mjs.map +1 -1
  40. package/dist/components/navigation/shells/TabsMobileShell.mjs.map +1 -1
  41. package/dist/components/navigation/subcomponents/ProjectSelector.mjs.map +1 -1
  42. package/dist/components/pages/NotFoundPage.mjs.map +1 -1
  43. package/dist/components/pages/notifications/Notifications.mjs.map +1 -1
  44. package/dist/components/ui/buttons/Button.mjs.map +1 -1
  45. package/dist/components/ui/buttons/CancelButton.mjs.map +1 -1
  46. package/dist/components/ui/buttons/CopyButton.mjs.map +1 -1
  47. package/dist/components/ui/data-display/Accordion.mjs.map +1 -1
  48. package/dist/components/ui/data-display/Badge.mjs.map +1 -1
  49. package/dist/components/ui/data-display/Card.mjs.map +1 -1
  50. package/dist/components/ui/data-display/CardBrandIcons.mjs.map +1 -1
  51. package/dist/components/ui/data-display/CardItem.mjs.map +1 -1
  52. package/dist/components/ui/data-display/Pagination.mjs.map +1 -1
  53. package/dist/components/ui/data-display/PaymentInfoCard.mjs.map +1 -1
  54. package/dist/components/ui/data-display/ScrollArea.mjs.map +1 -1
  55. package/dist/components/ui/data-display/Separator.mjs.map +1 -1
  56. package/dist/components/ui/data-display/Table.mjs.map +1 -1
  57. package/dist/components/ui/data-display/Tabs.mjs.map +1 -1
  58. package/dist/components/ui/feedback/CircularProgress.mjs.map +1 -1
  59. package/dist/components/ui/feedback/DefaultCircularProgress.mjs.map +1 -1
  60. package/dist/components/ui/feedback/LoadingOverlay.mjs.map +1 -1
  61. package/dist/components/ui/feedback/Progress.mjs.map +1 -1
  62. package/dist/components/ui/feedback/Skeleton.mjs.map +1 -1
  63. package/dist/components/ui/feedback/Toast.mjs.map +1 -1
  64. package/dist/components/ui/form/Calendar.mjs.map +1 -1
  65. package/dist/components/ui/form/Checkbox.mjs.map +1 -1
  66. package/dist/components/ui/form/ComboboxField.mjs +1 -1
  67. package/dist/components/ui/form/ComboboxField.mjs.map +1 -1
  68. package/dist/components/ui/form/DatePicker.mjs.map +1 -1
  69. package/dist/components/ui/form/DateRangePicker.mjs.map +1 -1
  70. package/dist/components/ui/form/FormField.mjs.map +1 -1
  71. package/dist/components/ui/form/Input.mjs.map +1 -1
  72. package/dist/components/ui/form/InputOtp.mjs.map +1 -1
  73. package/dist/components/ui/form/PhoneInput.mjs.map +1 -1
  74. package/dist/components/ui/form/RadioGroup.mjs.map +1 -1
  75. package/dist/components/ui/form/Select.mjs +1 -1
  76. package/dist/components/ui/form/Select.mjs.map +1 -1
  77. package/dist/components/ui/form/SelectField.mjs +1 -1
  78. package/dist/components/ui/form/SelectField.mjs.map +1 -1
  79. package/dist/components/ui/form/Switch.mjs.map +1 -1
  80. package/dist/components/ui/form/Textarea.mjs.map +1 -1
  81. package/dist/components/ui/overlay/Command.mjs.map +1 -1
  82. package/dist/components/ui/overlay/Dialog.mjs.map +1 -1
  83. package/dist/components/ui/overlay/Popover.mjs.map +1 -1
  84. package/dist/components/ui/overlay/Sheet.mjs.map +1 -1
  85. package/dist/components/ui/overlay/Tooltip.mjs.map +1 -1
  86. package/dist/components/widgets/notifications/NotificationCard.mjs.map +1 -1
  87. package/dist/hooks/copy-to-clipboard.hook.mjs.map +1 -1
  88. package/dist/hooks/useDebounce.mjs.map +1 -1
  89. package/dist/hooks/useDebounceState.mjs.map +1 -1
  90. package/dist/hooks/useDebouncedEffect.mjs.map +1 -1
  91. package/dist/index.mjs.map +1 -1
  92. package/dist/infra/utils/clsx.mjs.map +1 -1
  93. package/dist/infra/utils/date.mjs.map +1 -1
  94. package/dist/infra/utils/parser.mjs.map +1 -1
  95. package/dist/infra/utils/percentage.mjs.map +1 -1
  96. package/dist/middleware.mjs.map +1 -1
  97. package/dist/modules/accounts/actions/account-management.action.mjs.map +1 -1
  98. package/dist/modules/accounts/actions/find-current-account.action.mjs.map +1 -1
  99. package/dist/modules/accounts/actions/list-currencies.action.mjs.map +1 -1
  100. package/dist/modules/accounts/actions/list-timezones.action.mjs.map +1 -1
  101. package/dist/modules/accounts/hooks/current-account.hook.mjs.map +1 -1
  102. package/dist/modules/accounts/hooks/useAccountManagement.mjs.map +1 -1
  103. package/dist/modules/accounts/hooks/useCurrencies.mjs.map +1 -1
  104. package/dist/modules/accounts/hooks/useTimezones.mjs.map +1 -1
  105. package/dist/modules/accounts/hooks/useViaCep.mjs.map +1 -1
  106. package/dist/modules/accounts/services/account.service.mjs.map +1 -1
  107. package/dist/modules/auth/actions/validate-session.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/utils/assert-management-permission.mjs.map +1 -1
  113. package/dist/modules/auth/utils/assert-management-subscription.mjs.map +1 -1
  114. package/dist/modules/auth/utils/build-wl-override.mjs.map +1 -1
  115. package/dist/modules/cards/actions/create-card.action.mjs.map +1 -1
  116. package/dist/modules/cards/actions/list-cards.action.mjs.map +1 -1
  117. package/dist/modules/cards/hooks/cards.hook.mjs.map +1 -1
  118. package/dist/modules/cards/hooks/create-card.hook.mjs.map +1 -1
  119. package/dist/modules/cards/services/cards.service.mjs.map +1 -1
  120. package/dist/modules/cards/types.mjs.map +1 -1
  121. package/dist/modules/ia-credits/actions/list-ia-credits.action.mjs.map +1 -1
  122. package/dist/modules/plans/actions/find-plan-by-id.action.mjs.map +1 -1
  123. package/dist/modules/plans/hooks/use-has-plan-addon.hook.mjs.map +1 -1
  124. package/dist/modules/plans/hooks/use-plan-by-id.hook.mjs.map +1 -1
  125. package/dist/modules/plans/services/plans.service.mjs.map +1 -1
  126. package/dist/modules/plans/types/plan.type.mjs.map +1 -1
  127. package/dist/modules/projects/actions/add-project-user.action.mjs.map +1 -1
  128. package/dist/modules/projects/actions/list-all-account-users.action.mjs.map +1 -1
  129. package/dist/modules/projects/actions/list-available-users.action.mjs.map +1 -1
  130. package/dist/modules/projects/actions/list-project-users.action.mjs.map +1 -1
  131. package/dist/modules/projects/actions/remove-project-user.action.mjs.map +1 -1
  132. package/dist/modules/projects/hooks/add-project-user.hook.mjs.map +1 -1
  133. package/dist/modules/projects/hooks/list-all-account-users.hook.mjs.map +1 -1
  134. package/dist/modules/projects/hooks/list-available-users.hook.mjs.map +1 -1
  135. package/dist/modules/projects/hooks/list-project-users.hook.mjs.map +1 -1
  136. package/dist/modules/projects/hooks/remove-project-user.hook.mjs.map +1 -1
  137. package/dist/modules/subscriptions/actions/calculate-subscription.action.mjs.map +1 -1
  138. package/dist/modules/subscriptions/actions/list-subscriptions.action.mjs.map +1 -1
  139. package/dist/modules/subscriptions/actions/update-subscription-plan.action.mjs.map +1 -1
  140. package/dist/modules/subscriptions/constants/query-keys.constants.mjs.map +1 -1
  141. package/dist/modules/subscriptions/hooks/calculate-subscription.hook.mjs.map +1 -1
  142. package/dist/modules/subscriptions/hooks/find-active-subscription.hook.mjs.map +1 -1
  143. package/dist/modules/subscriptions/hooks/list-subscriptions.hook.mjs.map +1 -1
  144. package/dist/modules/subscriptions/hooks/update-subscription-plan.hook.mjs.map +1 -1
  145. package/dist/modules/subscriptions/hooks/use-cancelled-subscription-guard.mjs.map +1 -1
  146. package/dist/modules/subscriptions/types/calculate-subscription.type.mjs.map +1 -1
  147. package/dist/modules/subscriptions/utils/build-plan-extras.mjs.map +1 -1
  148. package/dist/modules/subscriptions/utils/has-subscription-expired.mjs.map +1 -1
  149. package/dist/modules/subscriptions/utils/periodicity.mjs.map +1 -1
  150. package/dist/modules/subscriptions/utils/resolve-plan-extras-prices.mjs.map +1 -1
  151. package/dist/modules/users/action/find-user-by-id.action.mjs.map +1 -1
  152. package/dist/modules/users/action/list-messages.action.mjs.map +1 -1
  153. package/dist/modules/users/action/mark-all-messages-as-read.action.mjs.map +1 -1
  154. package/dist/modules/users/action/mark-message-as-read.action.mjs.map +1 -1
  155. package/dist/modules/users/hooks/messages.hook.mjs.map +1 -1
  156. package/dist/modules/users/services/messages.service.mjs.map +1 -1
  157. package/dist/modules/whitelabel/actions/find-whitelabel.action.mjs.map +1 -1
  158. package/dist/modules/whitelabel/actions/revalidate-whitelabel.action.mjs.map +1 -1
  159. package/dist/modules/whitelabel/utils/normalize-hostname.mjs.map +1 -1
  160. package/dist/providers/whitelabel.provider.mjs.map +1 -1
  161. package/dist/store/useAccountModals.mjs.map +1 -1
  162. package/dist/store/useBuyCreditsModal.mjs.map +1 -1
  163. package/dist/store/useDesktopSidebarStore.mjs.map +1 -1
  164. package/dist/store/useMdSidebarStore.mjs.map +1 -1
  165. package/dist/store/useModalManager.mjs.map +1 -1
  166. package/dist/utils/constants/br-states.mjs.map +1 -1
  167. package/dist/utils/countries.mjs.map +1 -1
  168. package/dist/utils/safeServerAction.mjs.map +1 -1
  169. package/dist/utils/withAction.mjs.map +1 -1
  170. package/package.json +89 -89
  171. package/src/components/account/AccountModals.tsx +17 -17
  172. package/src/components/account/ConfigurationsMyAccountModal.tsx +146 -146
  173. package/src/components/account/ConfirmDeleteAccountModal.tsx +55 -55
  174. package/src/components/account/ConfirmGlobalPreferencesModal.tsx +66 -66
  175. package/src/components/account/DeleteAccountModal.tsx +130 -130
  176. package/src/components/account/DisableTwoFactorAuthModal.tsx +86 -86
  177. package/src/components/account/IsntPossibleDeleteAccountModal.tsx +49 -49
  178. package/src/components/account/TwoFactorAuthModal.tsx +215 -215
  179. package/src/components/account/hooks/useChangePhoneForm.tsx +107 -107
  180. package/src/components/account/hooks/useTwoFactorAuthForm.tsx +101 -101
  181. package/src/components/account/sections/ChangeEmailModal.tsx +225 -225
  182. package/src/components/account/sections/ChangePasswordSection.tsx +64 -64
  183. package/src/components/account/sections/ChangePhoneModal.tsx +245 -245
  184. package/src/components/account/sections/MyProfileSection.tsx +327 -327
  185. package/src/components/account/sections/PreferencesSection.tsx +248 -248
  186. package/src/components/account/sections/SecuritySection.tsx +46 -46
  187. package/src/components/embeds/CrispEmbed.tsx +101 -101
  188. package/src/components/embeds/FrillEmbed.tsx +119 -119
  189. package/src/components/handlers/SearchParamsHandler.tsx +61 -61
  190. package/src/components/layouts/AppMobileNavBar.tsx +118 -118
  191. package/src/components/layouts/AppNavBar.tsx +46 -46
  192. package/src/components/layouts/CollapsibleSidebar.tsx +67 -67
  193. package/src/components/layouts/MdSideBarNavigation.tsx +56 -56
  194. package/src/components/layouts/NavBar.tsx +172 -172
  195. package/src/components/layouts/NotificationsPopover.tsx +115 -115
  196. package/src/components/layouts/ProfilePopover.tsx +178 -170
  197. package/src/components/layouts/SideBarNavigation.tsx +62 -62
  198. package/src/components/layouts/UsersSelectorPopover.tsx +234 -234
  199. package/src/components/layouts/WhitelabelCodes.tsx +59 -59
  200. package/src/components/modals/BuyCreditsModal.tsx +314 -314
  201. package/src/components/modals/ModalManager.tsx +29 -29
  202. package/src/components/modals/Modals.tsx +26 -26
  203. package/src/components/modals/cards/AddCardModal.tsx +260 -260
  204. package/src/components/modals/cards/CardFormFields.tsx +294 -294
  205. package/src/components/navigation/CancelledSubscriptionBanner.tsx +60 -60
  206. package/src/components/navigation/NavItemsContext.ts +20 -20
  207. package/src/components/navigation/ProjectSelectorPopover.tsx +160 -160
  208. package/src/components/navigation/shells/TabsMobileShell.tsx +72 -72
  209. package/src/components/navigation/subcomponents/ProjectSelector.tsx +160 -160
  210. package/src/components/pages/NotFoundPage.tsx +50 -50
  211. package/src/components/pages/notifications/Notifications.tsx +160 -160
  212. package/src/components/ui/buttons/Button.tsx +57 -57
  213. package/src/components/ui/buttons/CancelButton.tsx +14 -14
  214. package/src/components/ui/buttons/CopyButton.tsx +54 -54
  215. package/src/components/ui/data-display/Accordion.tsx +81 -81
  216. package/src/components/ui/data-display/Badge.tsx +47 -47
  217. package/src/components/ui/data-display/Card.tsx +93 -93
  218. package/src/components/ui/data-display/CardBrandIcons.tsx +336 -336
  219. package/src/components/ui/data-display/CardItem.tsx +75 -75
  220. package/src/components/ui/data-display/Pagination.tsx +126 -126
  221. package/src/components/ui/data-display/PaymentInfoCard.tsx +186 -186
  222. package/src/components/ui/data-display/ScrollArea.tsx +59 -59
  223. package/src/components/ui/data-display/Separator.tsx +29 -29
  224. package/src/components/ui/data-display/Table.tsx +117 -117
  225. package/src/components/ui/data-display/Tabs.tsx +67 -67
  226. package/src/components/ui/feedback/CircularProgress.tsx +75 -75
  227. package/src/components/ui/feedback/DefaultCircularProgress.tsx +61 -61
  228. package/src/components/ui/feedback/LoadingOverlay.tsx +31 -31
  229. package/src/components/ui/feedback/Progress.tsx +40 -40
  230. package/src/components/ui/feedback/Skeleton.tsx +5 -5
  231. package/src/components/ui/feedback/Toast.tsx +101 -101
  232. package/src/components/ui/form/Calendar.tsx +228 -228
  233. package/src/components/ui/form/Checkbox.tsx +31 -31
  234. package/src/components/ui/form/ComboboxField.tsx +154 -154
  235. package/src/components/ui/form/DatePicker.tsx +97 -97
  236. package/src/components/ui/form/DateRangePicker.tsx +108 -108
  237. package/src/components/ui/form/FormField.tsx +131 -131
  238. package/src/components/ui/form/Input.tsx +20 -20
  239. package/src/components/ui/form/InputOtp.tsx +80 -80
  240. package/src/components/ui/form/PhoneInput.tsx +208 -208
  241. package/src/components/ui/form/RadioGroup.tsx +45 -45
  242. package/src/components/ui/form/Select.tsx +200 -200
  243. package/src/components/ui/form/SelectField.tsx +1 -1
  244. package/src/components/ui/form/Switch.tsx +32 -32
  245. package/src/components/ui/form/Textarea.tsx +19 -19
  246. package/src/components/ui/overlay/Command.tsx +185 -185
  247. package/src/components/ui/overlay/Dialog.tsx +151 -151
  248. package/src/components/ui/overlay/Popover.tsx +49 -49
  249. package/src/components/ui/overlay/Sheet.tsx +166 -166
  250. package/src/components/ui/overlay/Tooltip.tsx +62 -62
  251. package/src/components/widgets/notifications/NotificationCard.tsx +68 -68
  252. package/src/hooks/copy-to-clipboard.hook.tsx +67 -67
  253. package/src/hooks/useDebounce.ts +26 -26
  254. package/src/hooks/useDebounceState.ts +11 -11
  255. package/src/hooks/useDebouncedEffect.ts +69 -69
  256. package/src/index.ts +391 -391
  257. package/src/infra/utils/clsx.ts +6 -6
  258. package/src/infra/utils/date.ts +7 -7
  259. package/src/infra/utils/parser.ts +52 -52
  260. package/src/infra/utils/percentage.ts +42 -42
  261. package/src/middleware.ts +4 -4
  262. package/src/modules/accounts/actions/account-management.action.ts +107 -107
  263. package/src/modules/accounts/actions/find-current-account.action.ts +9 -9
  264. package/src/modules/accounts/actions/list-currencies.action.ts +8 -8
  265. package/src/modules/accounts/actions/list-timezones.action.ts +8 -8
  266. package/src/modules/accounts/hooks/current-account.hook.tsx +22 -22
  267. package/src/modules/accounts/hooks/useAccountManagement.ts +85 -85
  268. package/src/modules/accounts/hooks/useCurrencies.ts +15 -15
  269. package/src/modules/accounts/hooks/useTimezones.ts +15 -15
  270. package/src/modules/accounts/hooks/useViaCep.ts +25 -25
  271. package/src/modules/accounts/services/account.service.ts +239 -239
  272. package/src/modules/accounts/types.ts +225 -225
  273. package/src/modules/auth/actions/validate-session.action.ts +56 -56
  274. package/src/modules/auth/hooks/login.hook.tsx +13 -13
  275. package/src/modules/auth/hooks/logout.hook.tsx +11 -11
  276. package/src/modules/auth/hooks/register.hook.tsx +11 -11
  277. package/src/modules/auth/hooks/useManagementPermissions.ts +45 -45
  278. package/src/modules/auth/types/management-permission.type.ts +7 -7
  279. package/src/modules/auth/utils/assert-management-permission.ts +46 -46
  280. package/src/modules/auth/utils/assert-management-subscription.ts +27 -27
  281. package/src/modules/auth/utils/build-wl-override.ts +43 -43
  282. package/src/modules/cards/actions/create-card.action.ts +9 -9
  283. package/src/modules/cards/actions/list-cards.action.ts +8 -8
  284. package/src/modules/cards/hooks/cards.hook.ts +14 -14
  285. package/src/modules/cards/hooks/create-card.hook.ts +18 -18
  286. package/src/modules/cards/services/cards.service.ts +51 -51
  287. package/src/modules/cards/types.ts +32 -32
  288. package/src/modules/ia-credits/actions/list-ia-credits.action.ts +8 -8
  289. package/src/modules/plans/actions/find-plan-by-id.action.ts +8 -8
  290. package/src/modules/plans/hooks/use-has-plan-addon.hook.ts +17 -17
  291. package/src/modules/plans/hooks/use-plan-by-id.hook.ts +13 -13
  292. package/src/modules/plans/services/plans.service.ts +36 -36
  293. package/src/modules/plans/types/plan.type.ts +21 -21
  294. package/src/modules/projects/actions/add-project-user.action.ts +9 -9
  295. package/src/modules/projects/actions/list-all-account-users.action.ts +9 -9
  296. package/src/modules/projects/actions/list-available-users.action.ts +9 -9
  297. package/src/modules/projects/actions/list-project-users.action.ts +9 -9
  298. package/src/modules/projects/actions/remove-project-user.action.ts +9 -9
  299. package/src/modules/projects/hooks/add-project-user.hook.ts +69 -69
  300. package/src/modules/projects/hooks/list-all-account-users.hook.ts +34 -34
  301. package/src/modules/projects/hooks/list-available-users.hook.ts +33 -33
  302. package/src/modules/projects/hooks/list-project-users.hook.ts +33 -33
  303. package/src/modules/projects/hooks/remove-project-user.hook.ts +69 -69
  304. package/src/modules/subscriptions/actions/calculate-subscription.action.ts +9 -9
  305. package/src/modules/subscriptions/actions/list-subscriptions.action.ts +9 -9
  306. package/src/modules/subscriptions/actions/update-subscription-plan.action.ts +14 -14
  307. package/src/modules/subscriptions/constants/query-keys.constants.ts +1 -1
  308. package/src/modules/subscriptions/hooks/calculate-subscription.hook.ts +13 -13
  309. package/src/modules/subscriptions/hooks/find-active-subscription.hook.ts +19 -19
  310. package/src/modules/subscriptions/hooks/list-subscriptions.hook.ts +16 -16
  311. package/src/modules/subscriptions/hooks/update-subscription-plan.hook.ts +25 -25
  312. package/src/modules/subscriptions/hooks/use-cancelled-subscription-guard.ts +39 -39
  313. package/src/modules/subscriptions/types/billing-period.type.ts +1 -1
  314. package/src/modules/subscriptions/types/calculate-subscription.type.ts +75 -75
  315. package/src/modules/subscriptions/utils/build-plan-extras.ts +56 -56
  316. package/src/modules/subscriptions/utils/has-subscription-expired.ts +8 -8
  317. package/src/modules/subscriptions/utils/periodicity.ts +52 -52
  318. package/src/modules/subscriptions/utils/resolve-plan-extras-prices.ts +23 -23
  319. package/src/modules/users/action/find-user-by-id.action.ts +8 -8
  320. package/src/modules/users/action/list-messages.action.ts +12 -12
  321. package/src/modules/users/action/mark-all-messages-as-read.action.ts +8 -8
  322. package/src/modules/users/action/mark-message-as-read.action.ts +8 -8
  323. package/src/modules/users/hooks/messages.hook.ts +60 -60
  324. package/src/modules/users/services/messages.service.ts +48 -48
  325. package/src/modules/whitelabel/actions/find-whitelabel.action.ts +23 -23
  326. package/src/modules/whitelabel/actions/revalidate-whitelabel.action.ts +19 -19
  327. package/src/modules/whitelabel/schema.ts +84 -84
  328. package/src/modules/whitelabel/utils/normalize-hostname.ts +26 -26
  329. package/src/providers/whitelabel.provider.tsx +54 -54
  330. package/src/store/useAccountModals.ts +55 -55
  331. package/src/store/useBuyCreditsModal.ts +21 -21
  332. package/src/store/useDesktopSidebarStore.ts +47 -47
  333. package/src/store/useMdSidebarStore.ts +34 -34
  334. package/src/store/useModalManager.ts +104 -104
  335. package/src/utils/constants/br-states.ts +29 -29
  336. package/src/utils/countries.ts +224 -224
  337. package/src/utils/safeServerAction.ts +21 -21
  338. 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();