@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,294 +1,294 @@
1
- 'use client';
2
-
3
- import { UseFormReturn } from 'react-hook-form';
4
- import { useViaCep } from '../../../modules/accounts/hooks/useViaCep';
5
- import { FormField } from '../../ui/form/FormField';
6
- import { SelectField } from '../../ui/form/SelectField';
7
- import { formatCPF, formatCNPJ, formatPostalCode } from '../../../utils/format/masks';
8
- import z from 'zod';
9
- import { CardCvcElement, CardExpiryElement, CardNumberElement } from '@stripe/react-stripe-js';
10
-
11
- const stripeElementOptions = {
12
- style: {
13
- base: {
14
- fontSize: '16px',
15
- color: '#030712',
16
- fontFamily: 'Inter, sans-serif',
17
- '::placeholder': {
18
- color: '#9ca3af',
19
- },
20
- },
21
- },
22
- };
23
-
24
- export const cardFormSchema = z
25
- .object({
26
- name: z.string().min(1, 'Nome é obrigatório'),
27
- country: z.string().min(1, 'País é obrigatório'),
28
- personType: z.enum(['pf', 'pj']),
29
- cpf: z.string().optional(),
30
- cnpj: z.string().optional(),
31
- fullName: z.string().min(1, 'Nome completo é obrigatório'),
32
- cep: z.string().min(9, 'CEP é obrigatório'),
33
- street: z.string().min(1, 'Endereço é obrigatório'),
34
- streetNumber: z.string().min(1, 'Número é obrigatório'),
35
- city: z.string().min(1, 'Cidade é obrigatória'),
36
- state: z.string().min(1, 'UF é obrigatório'),
37
- complement: z.string().optional(),
38
- })
39
- .refine(
40
- (data) => {
41
- if (data.personType === 'pf') return !!data.cpf && data.cpf.length >= 14;
42
- return !!data.cnpj && data.cnpj.length >= 18;
43
- },
44
- {
45
- message: 'Documento é obrigatório',
46
- path: ['cpf'],
47
- }
48
- );
49
-
50
- export type CardFormData = z.infer<typeof cardFormSchema>;
51
-
52
- export type StripeElementsStatus = {
53
- cardNumber: boolean;
54
- cardExpiry: boolean;
55
- cardCvc: boolean;
56
- };
57
-
58
- export const STEP1_FIELDS = ['name', 'country', 'personType', 'cpf', 'cnpj'] as const;
59
-
60
- type CardFormFieldsProps = {
61
- readonly form: UseFormReturn<CardFormData>;
62
- readonly onStripeChange: (field: keyof StripeElementsStatus, complete: boolean) => void;
63
- readonly stripeErrors: { cardNumber?: string; cardExpiry?: string; cardCvc?: string };
64
- };
65
-
66
- export function CardFormFields({ form, onStripeChange, stripeErrors }: CardFormFieldsProps) {
67
- const {
68
- register,
69
- watch,
70
- setValue,
71
- formState: { errors },
72
- } = form;
73
-
74
- const personType = watch('personType');
75
-
76
- return (
77
- <div className="flex flex-col gap-5">
78
- <FormField
79
- label="Nome impresso no cartão"
80
- placeholder="Digite aqui"
81
- {...register('name')}
82
- error={!!errors.name}
83
- errorMessage={errors.name?.message}
84
- />
85
-
86
- <div className="flex flex-col gap-1.5">
87
- <label className="paragraph-xsmall-semibold text-zinc-600">Número do cartão</label>
88
- <div className="h-10 px-3 flex items-center w-full border border-zinc-200 rounded-lg bg-white transition-colors focus-within:border-zinc-400 relative">
89
- <div className="w-full">
90
- <CardNumberElement
91
- options={{ ...stripeElementOptions, showIcon: true }}
92
- onChange={(e: { complete: boolean }) => onStripeChange('cardNumber', e.complete)}
93
- />
94
- </div>
95
- </div>
96
- {stripeErrors.cardNumber && (
97
- <p className="paragraph-xsmall-semibold text-red-600">{stripeErrors.cardNumber}</p>
98
- )}
99
- </div>
100
-
101
- <div className="flex gap-4">
102
- <div className="flex-1 flex flex-col gap-1.5">
103
- <label className="paragraph-xsmall-semibold text-zinc-600">Data de validade</label>
104
- <div className="h-10 px-3 flex items-center w-full border border-zinc-200 rounded-lg bg-white transition-colors focus-within:border-zinc-400">
105
- <div className="w-full">
106
- <CardExpiryElement
107
- options={stripeElementOptions}
108
- onChange={(e: { complete: boolean }) => onStripeChange('cardExpiry', e.complete)}
109
- />
110
- </div>
111
- </div>
112
- {stripeErrors.cardExpiry && (
113
- <p className="paragraph-xsmall-semibold text-red-600">{stripeErrors.cardExpiry}</p>
114
- )}
115
- </div>
116
-
117
- <div className="flex-1 flex flex-col gap-1.5">
118
- <label className="paragraph-xsmall-semibold text-zinc-600">CVC</label>
119
- <div className="h-10 px-3 flex items-center w-full border border-zinc-200 rounded-lg bg-white transition-colors focus-within:border-zinc-400">
120
- <div className="w-full">
121
- <CardCvcElement
122
- options={stripeElementOptions}
123
- onChange={(e: { complete: boolean }) => onStripeChange('cardCvc', e.complete)}
124
- />
125
- </div>
126
- </div>
127
- {stripeErrors.cardCvc && (
128
- <p className="paragraph-xsmall-semibold text-red-600">{stripeErrors.cardCvc}</p>
129
- )}
130
- </div>
131
- </div>
132
-
133
- <SelectField
134
- label="País"
135
- placeholder="Selecione"
136
- value={watch('country')}
137
- onChange={(value) => setValue('country', value as string)}
138
- options={[
139
- { value: 'BR', label: 'Brasil' },
140
- { value: 'ES', label: 'Espanha' },
141
- { value: 'US', label: 'Estados Unidos' },
142
- ]}
143
- />
144
-
145
- <div className="flex gap-4">
146
- <SelectField
147
- label="Tipo de pessoa"
148
- placeholder="Selecione"
149
- value={personType}
150
- onChange={(value) => {
151
- setValue('personType', value as 'pf' | 'pj');
152
- setValue('cpf', '');
153
- setValue('cnpj', '');
154
- }}
155
- options={[
156
- { value: 'pf', label: 'Pessoa física' },
157
- { value: 'pj', label: 'Pessoa jurídica' },
158
- ]}
159
- containerClassName="flex-1"
160
- />
161
- <div className="flex-1">
162
- {personType === 'pj' ? (
163
- <FormField
164
- label="CNPJ"
165
- placeholder="__.___.___/____-__"
166
- {...register('cnpj', {
167
- onChange: (e) => {
168
- setValue('cnpj', formatCNPJ(e.target.value));
169
- },
170
- })}
171
- error={!!errors.cpf}
172
- errorMessage={errors.cpf?.message}
173
- />
174
- ) : (
175
- <FormField
176
- label="CPF"
177
- placeholder="___.___.___-__"
178
- {...register('cpf', {
179
- onChange: (e) => {
180
- setValue('cpf', formatCPF(e.target.value));
181
- },
182
- })}
183
- error={!!errors.cpf}
184
- errorMessage={errors.cpf?.message}
185
- />
186
- )}
187
- </div>
188
- </div>
189
- </div>
190
- );
191
- }
192
-
193
- type BillingFormFieldsProps = {
194
- readonly form: UseFormReturn<CardFormData>;
195
- };
196
-
197
- export function BillingFormFields({ form }: BillingFormFieldsProps) {
198
- const {
199
- register,
200
- setValue,
201
- formState: { errors },
202
- } = form;
203
-
204
- const { mutateAsync: lookupCep } = useViaCep();
205
-
206
- const handleCepChange = (rawValue: string) => {
207
- const masked = formatPostalCode(rawValue);
208
- setValue('cep', masked);
209
-
210
- const digits = rawValue.replace(/\D/g, '');
211
- if (digits.length === 8) {
212
- lookupCep(digits).then((data) => {
213
- setValue('street', data.logradouro, { shouldValidate: true });
214
- setValue('city', data.localidade, { shouldValidate: true });
215
- setValue('state', data.uf, { shouldValidate: true });
216
- }).catch(() => {
217
- // silently ignore — user can fill manually
218
- });
219
- }
220
- };
221
-
222
- return (
223
- <div className="flex flex-col gap-5">
224
- <FormField
225
- label="Nome completo"
226
- placeholder="Digite aqui"
227
- {...register('fullName')}
228
- error={!!errors.fullName}
229
- errorMessage={errors.fullName?.message}
230
- />
231
-
232
- <FormField
233
- label="CEP"
234
- placeholder="_____-___"
235
- {...register('cep', {
236
- onChange: (e) => handleCepChange(e.target.value),
237
- })}
238
- error={!!errors.cep}
239
- errorMessage={errors.cep?.message}
240
- />
241
-
242
- <div className="flex gap-4">
243
- <div className="flex-[4]">
244
- <FormField
245
- label="Endereço"
246
- placeholder=""
247
- {...register('street')}
248
- error={!!errors.street}
249
- errorMessage={errors.street?.message}
250
- />
251
- </div>
252
- <div className="flex-[1]">
253
- <FormField
254
- label="Número"
255
- placeholder=""
256
- {...register('streetNumber')}
257
- error={!!errors.streetNumber}
258
- errorMessage={errors.streetNumber?.message}
259
- />
260
- </div>
261
- </div>
262
-
263
- <div className="flex gap-4">
264
- <div className="flex-1">
265
- <FormField
266
- label="Cidade"
267
- placeholder=""
268
- {...register('city')}
269
- error={!!errors.city}
270
- errorMessage={errors.city?.message}
271
- />
272
- </div>
273
- <div className="flex-1">
274
- <FormField
275
- label="UF"
276
- placeholder=""
277
- {...register('state')}
278
- error={!!errors.state}
279
- errorMessage={errors.state?.message}
280
- />
281
- </div>
282
- </div>
283
-
284
- <FormField
285
- label="Complemento"
286
- optional
287
- placeholder=""
288
- {...register('complement')}
289
- error={!!errors.complement}
290
- errorMessage={errors.complement?.message}
291
- />
292
- </div>
293
- );
294
- }
1
+ 'use client';
2
+
3
+ import { UseFormReturn } from 'react-hook-form';
4
+ import { useViaCep } from '../../../modules/accounts/hooks/useViaCep';
5
+ import { FormField } from '../../ui/form/FormField';
6
+ import { SelectField } from '../../ui/form/SelectField';
7
+ import { formatCPF, formatCNPJ, formatPostalCode } from '../../../utils/format/masks';
8
+ import z from 'zod';
9
+ import { CardCvcElement, CardExpiryElement, CardNumberElement } from '@stripe/react-stripe-js';
10
+
11
+ const stripeElementOptions = {
12
+ style: {
13
+ base: {
14
+ fontSize: '16px',
15
+ color: '#030712',
16
+ fontFamily: 'Inter, sans-serif',
17
+ '::placeholder': {
18
+ color: '#9ca3af',
19
+ },
20
+ },
21
+ },
22
+ };
23
+
24
+ export const cardFormSchema = z
25
+ .object({
26
+ name: z.string().min(1, 'Nome é obrigatório'),
27
+ country: z.string().min(1, 'País é obrigatório'),
28
+ personType: z.enum(['pf', 'pj']),
29
+ cpf: z.string().optional(),
30
+ cnpj: z.string().optional(),
31
+ fullName: z.string().min(1, 'Nome completo é obrigatório'),
32
+ cep: z.string().min(9, 'CEP é obrigatório'),
33
+ street: z.string().min(1, 'Endereço é obrigatório'),
34
+ streetNumber: z.string().min(1, 'Número é obrigatório'),
35
+ city: z.string().min(1, 'Cidade é obrigatória'),
36
+ state: z.string().min(1, 'UF é obrigatório'),
37
+ complement: z.string().optional(),
38
+ })
39
+ .refine(
40
+ (data) => {
41
+ if (data.personType === 'pf') return !!data.cpf && data.cpf.length >= 14;
42
+ return !!data.cnpj && data.cnpj.length >= 18;
43
+ },
44
+ {
45
+ message: 'Documento é obrigatório',
46
+ path: ['cpf'],
47
+ }
48
+ );
49
+
50
+ export type CardFormData = z.infer<typeof cardFormSchema>;
51
+
52
+ export type StripeElementsStatus = {
53
+ cardNumber: boolean;
54
+ cardExpiry: boolean;
55
+ cardCvc: boolean;
56
+ };
57
+
58
+ export const STEP1_FIELDS = ['name', 'country', 'personType', 'cpf', 'cnpj'] as const;
59
+
60
+ type CardFormFieldsProps = {
61
+ readonly form: UseFormReturn<CardFormData>;
62
+ readonly onStripeChange: (field: keyof StripeElementsStatus, complete: boolean) => void;
63
+ readonly stripeErrors: { cardNumber?: string; cardExpiry?: string; cardCvc?: string };
64
+ };
65
+
66
+ export function CardFormFields({ form, onStripeChange, stripeErrors }: CardFormFieldsProps) {
67
+ const {
68
+ register,
69
+ watch,
70
+ setValue,
71
+ formState: { errors },
72
+ } = form;
73
+
74
+ const personType = watch('personType');
75
+
76
+ return (
77
+ <div className="flex flex-col gap-5">
78
+ <FormField
79
+ label="Nome impresso no cartão"
80
+ placeholder="Digite aqui"
81
+ {...register('name')}
82
+ error={!!errors.name}
83
+ errorMessage={errors.name?.message}
84
+ />
85
+
86
+ <div className="flex flex-col gap-1.5">
87
+ <label className="paragraph-xsmall-semibold text-zinc-600">Número do cartão</label>
88
+ <div className="h-10 px-3 flex items-center w-full border border-zinc-200 rounded-lg bg-white transition-colors focus-within:border-zinc-400 relative">
89
+ <div className="w-full">
90
+ <CardNumberElement
91
+ options={{ ...stripeElementOptions, showIcon: true }}
92
+ onChange={(e: { complete: boolean }) => onStripeChange('cardNumber', e.complete)}
93
+ />
94
+ </div>
95
+ </div>
96
+ {stripeErrors.cardNumber && (
97
+ <p className="paragraph-xsmall-semibold text-red-600">{stripeErrors.cardNumber}</p>
98
+ )}
99
+ </div>
100
+
101
+ <div className="flex gap-4">
102
+ <div className="flex-1 flex flex-col gap-1.5">
103
+ <label className="paragraph-xsmall-semibold text-zinc-600">Data de validade</label>
104
+ <div className="h-10 px-3 flex items-center w-full border border-zinc-200 rounded-lg bg-white transition-colors focus-within:border-zinc-400">
105
+ <div className="w-full">
106
+ <CardExpiryElement
107
+ options={stripeElementOptions}
108
+ onChange={(e: { complete: boolean }) => onStripeChange('cardExpiry', e.complete)}
109
+ />
110
+ </div>
111
+ </div>
112
+ {stripeErrors.cardExpiry && (
113
+ <p className="paragraph-xsmall-semibold text-red-600">{stripeErrors.cardExpiry}</p>
114
+ )}
115
+ </div>
116
+
117
+ <div className="flex-1 flex flex-col gap-1.5">
118
+ <label className="paragraph-xsmall-semibold text-zinc-600">CVC</label>
119
+ <div className="h-10 px-3 flex items-center w-full border border-zinc-200 rounded-lg bg-white transition-colors focus-within:border-zinc-400">
120
+ <div className="w-full">
121
+ <CardCvcElement
122
+ options={stripeElementOptions}
123
+ onChange={(e: { complete: boolean }) => onStripeChange('cardCvc', e.complete)}
124
+ />
125
+ </div>
126
+ </div>
127
+ {stripeErrors.cardCvc && (
128
+ <p className="paragraph-xsmall-semibold text-red-600">{stripeErrors.cardCvc}</p>
129
+ )}
130
+ </div>
131
+ </div>
132
+
133
+ <SelectField
134
+ label="País"
135
+ placeholder="Selecione"
136
+ value={watch('country')}
137
+ onChange={(value) => setValue('country', value as string)}
138
+ options={[
139
+ { value: 'BR', label: 'Brasil' },
140
+ { value: 'ES', label: 'Espanha' },
141
+ { value: 'US', label: 'Estados Unidos' },
142
+ ]}
143
+ />
144
+
145
+ <div className="flex gap-4">
146
+ <SelectField
147
+ label="Tipo de pessoa"
148
+ placeholder="Selecione"
149
+ value={personType}
150
+ onChange={(value) => {
151
+ setValue('personType', value as 'pf' | 'pj');
152
+ setValue('cpf', '');
153
+ setValue('cnpj', '');
154
+ }}
155
+ options={[
156
+ { value: 'pf', label: 'Pessoa física' },
157
+ { value: 'pj', label: 'Pessoa jurídica' },
158
+ ]}
159
+ containerClassName="flex-1"
160
+ />
161
+ <div className="flex-1">
162
+ {personType === 'pj' ? (
163
+ <FormField
164
+ label="CNPJ"
165
+ placeholder="__.___.___/____-__"
166
+ {...register('cnpj', {
167
+ onChange: (e) => {
168
+ setValue('cnpj', formatCNPJ(e.target.value));
169
+ },
170
+ })}
171
+ error={!!errors.cpf}
172
+ errorMessage={errors.cpf?.message}
173
+ />
174
+ ) : (
175
+ <FormField
176
+ label="CPF"
177
+ placeholder="___.___.___-__"
178
+ {...register('cpf', {
179
+ onChange: (e) => {
180
+ setValue('cpf', formatCPF(e.target.value));
181
+ },
182
+ })}
183
+ error={!!errors.cpf}
184
+ errorMessage={errors.cpf?.message}
185
+ />
186
+ )}
187
+ </div>
188
+ </div>
189
+ </div>
190
+ );
191
+ }
192
+
193
+ type BillingFormFieldsProps = {
194
+ readonly form: UseFormReturn<CardFormData>;
195
+ };
196
+
197
+ export function BillingFormFields({ form }: BillingFormFieldsProps) {
198
+ const {
199
+ register,
200
+ setValue,
201
+ formState: { errors },
202
+ } = form;
203
+
204
+ const { mutateAsync: lookupCep } = useViaCep();
205
+
206
+ const handleCepChange = (rawValue: string) => {
207
+ const masked = formatPostalCode(rawValue);
208
+ setValue('cep', masked);
209
+
210
+ const digits = rawValue.replace(/\D/g, '');
211
+ if (digits.length === 8) {
212
+ lookupCep(digits).then((data) => {
213
+ setValue('street', data.logradouro, { shouldValidate: true });
214
+ setValue('city', data.localidade, { shouldValidate: true });
215
+ setValue('state', data.uf, { shouldValidate: true });
216
+ }).catch(() => {
217
+ // silently ignore — user can fill manually
218
+ });
219
+ }
220
+ };
221
+
222
+ return (
223
+ <div className="flex flex-col gap-5">
224
+ <FormField
225
+ label="Nome completo"
226
+ placeholder="Digite aqui"
227
+ {...register('fullName')}
228
+ error={!!errors.fullName}
229
+ errorMessage={errors.fullName?.message}
230
+ />
231
+
232
+ <FormField
233
+ label="CEP"
234
+ placeholder="_____-___"
235
+ {...register('cep', {
236
+ onChange: (e) => handleCepChange(e.target.value),
237
+ })}
238
+ error={!!errors.cep}
239
+ errorMessage={errors.cep?.message}
240
+ />
241
+
242
+ <div className="flex gap-4">
243
+ <div className="flex-[4]">
244
+ <FormField
245
+ label="Endereço"
246
+ placeholder=""
247
+ {...register('street')}
248
+ error={!!errors.street}
249
+ errorMessage={errors.street?.message}
250
+ />
251
+ </div>
252
+ <div className="flex-[1]">
253
+ <FormField
254
+ label="Número"
255
+ placeholder=""
256
+ {...register('streetNumber')}
257
+ error={!!errors.streetNumber}
258
+ errorMessage={errors.streetNumber?.message}
259
+ />
260
+ </div>
261
+ </div>
262
+
263
+ <div className="flex gap-4">
264
+ <div className="flex-1">
265
+ <FormField
266
+ label="Cidade"
267
+ placeholder=""
268
+ {...register('city')}
269
+ error={!!errors.city}
270
+ errorMessage={errors.city?.message}
271
+ />
272
+ </div>
273
+ <div className="flex-1">
274
+ <FormField
275
+ label="UF"
276
+ placeholder=""
277
+ {...register('state')}
278
+ error={!!errors.state}
279
+ errorMessage={errors.state?.message}
280
+ />
281
+ </div>
282
+ </div>
283
+
284
+ <FormField
285
+ label="Complemento"
286
+ optional
287
+ placeholder=""
288
+ {...register('complement')}
289
+ error={!!errors.complement}
290
+ errorMessage={errors.complement?.message}
291
+ />
292
+ </div>
293
+ );
294
+ }