@greatapps/common 1.1.430 → 1.1.432

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