@greatapps/common 1.1.790 → 1.1.792

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 (791) hide show
  1. package/dist/components/account/AccountHubLinkHandler.mjs +36 -0
  2. package/dist/components/account/AccountHubLinkHandler.mjs.map +1 -0
  3. package/dist/components/account/AccountModalLayout.mjs +137 -0
  4. package/dist/components/account/AccountModalLayout.mjs.map +1 -0
  5. package/dist/components/account/AccountModals.mjs +10 -3
  6. package/dist/components/account/AccountModals.mjs.map +1 -1
  7. package/dist/components/account/AccountUnsavedChangesDialog.mjs +34 -0
  8. package/dist/components/account/AccountUnsavedChangesDialog.mjs.map +1 -0
  9. package/dist/components/account/DeleteAccountModal.mjs +1 -1
  10. package/dist/components/account/DeleteAccountModal.mjs.map +1 -1
  11. package/dist/components/account/IsntPossibleDeleteAccountModal.mjs +8 -1
  12. package/dist/components/account/IsntPossibleDeleteAccountModal.mjs.map +1 -1
  13. package/dist/components/account/MyAccountModal.mjs +173 -0
  14. package/dist/components/account/MyAccountModal.mjs.map +1 -0
  15. package/dist/components/account/TwoFactorAuthModal.mjs +1 -1
  16. package/dist/components/account/TwoFactorAuthModal.mjs.map +1 -1
  17. package/dist/components/account/hooks/useAccountHubActions.mjs +85 -0
  18. package/dist/components/account/hooks/useAccountHubActions.mjs.map +1 -0
  19. package/dist/components/account/hooks/useAddCardWithPaymentSwitch.mjs +44 -0
  20. package/dist/components/account/hooks/useAddCardWithPaymentSwitch.mjs.map +1 -0
  21. package/dist/components/account/hooks/useAffiliatesActions.mjs +69 -0
  22. package/dist/components/account/hooks/useAffiliatesActions.mjs.map +1 -0
  23. package/dist/components/account/hooks/useMyAccountModal.mjs +27 -0
  24. package/dist/components/account/hooks/useMyAccountModal.mjs.map +1 -0
  25. package/dist/components/account/hooks/useProjectsActions.mjs +40 -0
  26. package/dist/components/account/hooks/useProjectsActions.mjs.map +1 -0
  27. package/dist/components/account/hooks/useSubscriptionActions.mjs +87 -0
  28. package/dist/components/account/hooks/useSubscriptionActions.mjs.map +1 -0
  29. package/dist/components/account/hooks/useTeamActions.mjs +31 -0
  30. package/dist/components/account/hooks/useTeamActions.mjs.map +1 -0
  31. package/dist/components/account/sections/AffiliatesSection.mjs +313 -0
  32. package/dist/components/account/sections/AffiliatesSection.mjs.map +1 -0
  33. package/dist/components/account/sections/ChangePasswordSection.mjs +5 -5
  34. package/dist/components/account/sections/ChangePasswordSection.mjs.map +1 -1
  35. package/dist/components/account/sections/MyProfileSection.mjs +212 -164
  36. package/dist/components/account/sections/MyProfileSection.mjs.map +1 -1
  37. package/dist/components/account/sections/PreferencesSection.mjs +74 -68
  38. package/dist/components/account/sections/PreferencesSection.mjs.map +1 -1
  39. package/dist/components/account/sections/ProjectsSection.mjs +77 -0
  40. package/dist/components/account/sections/ProjectsSection.mjs.map +1 -0
  41. package/dist/components/account/sections/SecuritySection.mjs +55 -36
  42. package/dist/components/account/sections/SecuritySection.mjs.map +1 -1
  43. package/dist/components/account/sections/SubscriptionSection.mjs +29 -0
  44. package/dist/components/account/sections/SubscriptionSection.mjs.map +1 -0
  45. package/dist/components/account/sections/TeamSection.mjs +119 -0
  46. package/dist/components/account/sections/TeamSection.mjs.map +1 -0
  47. package/dist/components/account/sections/TokenSection.mjs +41 -43
  48. package/dist/components/account/sections/TokenSection.mjs.map +1 -1
  49. package/dist/components/account/sections/affiliates/AffiliateCommissionCard.mjs +73 -0
  50. package/dist/components/account/sections/affiliates/AffiliateCommissionCard.mjs.map +1 -0
  51. package/dist/components/account/sections/affiliates/AffiliateFlows.mjs +20 -0
  52. package/dist/components/account/sections/affiliates/AffiliateFlows.mjs.map +1 -0
  53. package/dist/components/account/sections/affiliates/AffiliateLeadsSheet.mjs +99 -0
  54. package/dist/components/account/sections/affiliates/AffiliateLeadsSheet.mjs.map +1 -0
  55. package/dist/components/account/sections/affiliates/AffiliateStatsCard.mjs +31 -0
  56. package/dist/components/account/sections/affiliates/AffiliateStatsCard.mjs.map +1 -0
  57. package/dist/components/account/sections/affiliates/AffiliateStepCard.mjs +15 -0
  58. package/dist/components/account/sections/affiliates/AffiliateStepCard.mjs.map +1 -0
  59. package/dist/components/account/sections/affiliates/AffiliateTransactionsList.mjs +108 -0
  60. package/dist/components/account/sections/affiliates/AffiliateTransactionsList.mjs.map +1 -0
  61. package/dist/components/account/sections/affiliates/NoReceivingAccountModal.mjs +49 -0
  62. package/dist/components/account/sections/affiliates/NoReceivingAccountModal.mjs.map +1 -0
  63. package/dist/components/account/sections/affiliates/ReceivingAccountModal.mjs +182 -0
  64. package/dist/components/account/sections/affiliates/ReceivingAccountModal.mjs.map +1 -0
  65. package/dist/components/account/sections/affiliates/RequestWithdrawalSheet.mjs +476 -0
  66. package/dist/components/account/sections/affiliates/RequestWithdrawalSheet.mjs.map +1 -0
  67. package/dist/components/account/sections/affiliates/ViewAttachmentModal.mjs +34 -0
  68. package/dist/components/account/sections/affiliates/ViewAttachmentModal.mjs.map +1 -0
  69. package/dist/components/account/sections/affiliates/reports/AffiliatesIndicatorsChart.mjs +27 -0
  70. package/dist/components/account/sections/affiliates/reports/AffiliatesIndicatorsChart.mjs.map +1 -0
  71. package/dist/components/account/sections/affiliates/reports/AffiliatesReportsTab.mjs +30 -0
  72. package/dist/components/account/sections/affiliates/reports/AffiliatesReportsTab.mjs.map +1 -0
  73. package/dist/components/account/sections/affiliates/reports/useAffiliatesIndicatorsChart.mjs +120 -0
  74. package/dist/components/account/sections/affiliates/reports/useAffiliatesIndicatorsChart.mjs.map +1 -0
  75. package/dist/components/account/sections/projects/DeleteProjectModal.mjs +205 -0
  76. package/dist/components/account/sections/projects/DeleteProjectModal.mjs.map +1 -0
  77. package/dist/components/account/sections/projects/ProjectFlows.mjs +16 -0
  78. package/dist/components/account/sections/projects/ProjectFlows.mjs.map +1 -0
  79. package/dist/components/account/sections/projects/ProjectMembersStack.mjs +53 -0
  80. package/dist/components/account/sections/projects/ProjectMembersStack.mjs.map +1 -0
  81. package/dist/components/account/sections/projects/ProjectRow.mjs +85 -0
  82. package/dist/components/account/sections/projects/ProjectRow.mjs.map +1 -0
  83. package/dist/components/account/sections/projects/ProjectSheet.mjs +499 -0
  84. package/dist/components/account/sections/projects/ProjectSheet.mjs.map +1 -0
  85. package/dist/components/account/sections/projects/ProjectsDisabledModal.mjs +55 -0
  86. package/dist/components/account/sections/projects/ProjectsDisabledModal.mjs.map +1 -0
  87. package/dist/components/account/sections/projects/project-form.schema.mjs +28 -0
  88. package/dist/components/account/sections/projects/project-form.schema.mjs.map +1 -0
  89. package/dist/components/account/sections/shared/ConnectListRow.mjs +45 -0
  90. package/dist/components/account/sections/shared/ConnectListRow.mjs.map +1 -0
  91. package/dist/components/account/sections/shared/DateFilterPopover.mjs +51 -0
  92. package/dist/components/account/sections/shared/DateFilterPopover.mjs.map +1 -0
  93. package/dist/components/account/sections/shared/EntityAvatar.mjs +41 -0
  94. package/dist/components/account/sections/shared/EntityAvatar.mjs.map +1 -0
  95. package/dist/components/account/sections/shared/FilterPopover.mjs +62 -0
  96. package/dist/components/account/sections/shared/FilterPopover.mjs.map +1 -0
  97. package/dist/components/account/sections/shared/FormSection.mjs +14 -0
  98. package/dist/components/account/sections/shared/FormSection.mjs.map +1 -0
  99. package/dist/components/account/sections/shared/IconBox.mjs +18 -0
  100. package/dist/components/account/sections/shared/IconBox.mjs.map +1 -0
  101. package/dist/components/account/sections/shared/InfiniteScrollList.mjs +36 -0
  102. package/dist/components/account/sections/shared/InfiniteScrollList.mjs.map +1 -0
  103. package/dist/components/account/sections/shared/ListPagination.mjs +69 -0
  104. package/dist/components/account/sections/shared/ListPagination.mjs.map +1 -0
  105. package/dist/components/account/sections/shared/RowActionsMenu.mjs +52 -0
  106. package/dist/components/account/sections/shared/RowActionsMenu.mjs.map +1 -0
  107. package/dist/components/account/sections/shared/SectionLoadError.mjs +20 -0
  108. package/dist/components/account/sections/shared/SectionLoadError.mjs.map +1 -0
  109. package/dist/components/account/sections/shared/StatusBadge.mjs +26 -0
  110. package/dist/components/account/sections/shared/StatusBadge.mjs.map +1 -0
  111. package/dist/components/account/sections/shared/WorkspaceSection.mjs +10 -0
  112. package/dist/components/account/sections/shared/WorkspaceSection.mjs.map +1 -0
  113. package/dist/components/account/sections/subscription/AiCreditsUsage.mjs +106 -0
  114. package/dist/components/account/sections/subscription/AiCreditsUsage.mjs.map +1 -0
  115. package/dist/components/account/sections/subscription/BillingAddressSheet.mjs +407 -0
  116. package/dist/components/account/sections/subscription/BillingAddressSheet.mjs.map +1 -0
  117. package/dist/components/account/sections/subscription/BoletoDetailsDialog.mjs +73 -0
  118. package/dist/components/account/sections/subscription/BoletoDetailsDialog.mjs.map +1 -0
  119. package/dist/components/account/sections/subscription/BoletoGeneratedDialog.mjs +22 -0
  120. package/dist/components/account/sections/subscription/BoletoGeneratedDialog.mjs.map +1 -0
  121. package/dist/components/account/sections/subscription/CancelPlanDialog.mjs +161 -0
  122. package/dist/components/account/sections/subscription/CancelPlanDialog.mjs.map +1 -0
  123. package/dist/components/account/sections/subscription/ChargeRow.mjs +127 -0
  124. package/dist/components/account/sections/subscription/ChargeRow.mjs.map +1 -0
  125. package/dist/components/account/sections/subscription/ChargeStatusBadge.mjs +27 -0
  126. package/dist/components/account/sections/subscription/ChargeStatusBadge.mjs.map +1 -0
  127. package/dist/components/account/sections/subscription/ChargesList.mjs +88 -0
  128. package/dist/components/account/sections/subscription/ChargesList.mjs.map +1 -0
  129. package/dist/components/account/sections/subscription/ManageCardsSheet.mjs +49 -0
  130. package/dist/components/account/sections/subscription/ManageCardsSheet.mjs.map +1 -0
  131. package/dist/components/account/sections/subscription/OverdueReceiptOpener.mjs +26 -0
  132. package/dist/components/account/sections/subscription/OverdueReceiptOpener.mjs.map +1 -0
  133. package/dist/components/account/sections/subscription/PayChargeDialog.mjs +222 -0
  134. package/dist/components/account/sections/subscription/PayChargeDialog.mjs.map +1 -0
  135. package/dist/components/account/sections/subscription/PaymentConfirmationDialog.mjs +61 -0
  136. package/dist/components/account/sections/subscription/PaymentConfirmationDialog.mjs.map +1 -0
  137. package/dist/components/account/sections/subscription/PaymentMethodsCard.mjs +72 -0
  138. package/dist/components/account/sections/subscription/PaymentMethodsCard.mjs.map +1 -0
  139. package/dist/components/account/sections/subscription/PendingChangeDialog.mjs +117 -0
  140. package/dist/components/account/sections/subscription/PendingChangeDialog.mjs.map +1 -0
  141. package/dist/components/account/sections/subscription/PixDetailsDialog.mjs +165 -0
  142. package/dist/components/account/sections/subscription/PixDetailsDialog.mjs.map +1 -0
  143. package/dist/components/account/sections/subscription/PixPaymentDialog.mjs +155 -0
  144. package/dist/components/account/sections/subscription/PixPaymentDialog.mjs.map +1 -0
  145. package/dist/components/account/sections/subscription/PlanDetailsSheet.mjs +253 -0
  146. package/dist/components/account/sections/subscription/PlanDetailsSheet.mjs.map +1 -0
  147. package/dist/components/account/sections/subscription/ReceiptDetailsSheet.mjs +237 -0
  148. package/dist/components/account/sections/subscription/ReceiptDetailsSheet.mjs.map +1 -0
  149. package/dist/components/account/sections/subscription/SubscriptionFlows.mjs +40 -0
  150. package/dist/components/account/sections/subscription/SubscriptionFlows.mjs.map +1 -0
  151. package/dist/components/account/sections/subscription/SubscriptionPlanCard.mjs +303 -0
  152. package/dist/components/account/sections/subscription/SubscriptionPlanCard.mjs.map +1 -0
  153. package/dist/components/account/sections/subscription/UsageReportSheet.mjs +163 -0
  154. package/dist/components/account/sections/subscription/UsageReportSheet.mjs.map +1 -0
  155. package/dist/components/account/sections/subscription/change-plan/ChangePlanSheet.mjs +75 -0
  156. package/dist/components/account/sections/subscription/change-plan/ChangePlanSheet.mjs.map +1 -0
  157. package/dist/components/account/sections/subscription/change-plan/components/AbTestDetailsDialog.mjs +55 -0
  158. package/dist/components/account/sections/subscription/change-plan/components/AbTestDetailsDialog.mjs.map +1 -0
  159. package/dist/components/account/sections/subscription/change-plan/components/AddonsBlock.mjs +188 -0
  160. package/dist/components/account/sections/subscription/change-plan/components/AddonsBlock.mjs.map +1 -0
  161. package/dist/components/account/sections/subscription/change-plan/components/AlternativeBucketsSection.mjs +66 -0
  162. package/dist/components/account/sections/subscription/change-plan/components/AlternativeBucketsSection.mjs.map +1 -0
  163. package/dist/components/account/sections/subscription/change-plan/components/CouponBlock.mjs +42 -0
  164. package/dist/components/account/sections/subscription/change-plan/components/CouponBlock.mjs.map +1 -0
  165. package/dist/components/account/sections/subscription/change-plan/components/CouponDialog.mjs +119 -0
  166. package/dist/components/account/sections/subscription/change-plan/components/CouponDialog.mjs.map +1 -0
  167. package/dist/components/account/sections/subscription/change-plan/components/PricePreview.mjs +17 -0
  168. package/dist/components/account/sections/subscription/change-plan/components/PricePreview.mjs.map +1 -0
  169. package/dist/components/account/sections/subscription/change-plan/components/SummaryBlock.mjs +130 -0
  170. package/dist/components/account/sections/subscription/change-plan/components/SummaryBlock.mjs.map +1 -0
  171. package/dist/components/account/sections/subscription/change-plan/plan-comparison.mjs +38 -0
  172. package/dist/components/account/sections/subscription/change-plan/plan-comparison.mjs.map +1 -0
  173. package/dist/components/account/sections/subscription/change-plan/steps/PaymentSummaryStep.mjs +127 -0
  174. package/dist/components/account/sections/subscription/change-plan/steps/PaymentSummaryStep.mjs.map +1 -0
  175. package/dist/components/account/sections/subscription/change-plan/steps/PlanComparisonStep.mjs +111 -0
  176. package/dist/components/account/sections/subscription/change-plan/steps/PlanComparisonStep.mjs.map +1 -0
  177. package/dist/components/account/sections/subscription/change-plan/steps/PlanViewStep.mjs +69 -0
  178. package/dist/components/account/sections/subscription/change-plan/steps/PlanViewStep.mjs.map +1 -0
  179. package/dist/components/account/sections/subscription/change-plan/steps/ReactivationConfigStep.mjs +88 -0
  180. package/dist/components/account/sections/subscription/change-plan/steps/ReactivationConfigStep.mjs.map +1 -0
  181. package/dist/components/account/sections/subscription/change-plan/steps/ReactivationPaymentStep.mjs +115 -0
  182. package/dist/components/account/sections/subscription/change-plan/steps/ReactivationPaymentStep.mjs.map +1 -0
  183. package/dist/components/account/sections/subscription/change-plan/useChangePlanState.mjs +918 -0
  184. package/dist/components/account/sections/subscription/change-plan/useChangePlanState.mjs.map +1 -0
  185. package/dist/components/account/sections/subscription/downgrade/CannotDowngradeDialog.mjs +216 -0
  186. package/dist/components/account/sections/subscription/downgrade/CannotDowngradeDialog.mjs.map +1 -0
  187. package/dist/components/account/sections/subscription/downgrade/DowngradeReasonDialog.mjs +128 -0
  188. package/dist/components/account/sections/subscription/downgrade/DowngradeReasonDialog.mjs.map +1 -0
  189. package/dist/components/account/sections/subscription/plans/PlanCard.mjs +281 -0
  190. package/dist/components/account/sections/subscription/plans/PlanCard.mjs.map +1 -0
  191. package/dist/components/account/sections/subscription/plans/PlanCardSkeleton.mjs +53 -0
  192. package/dist/components/account/sections/subscription/plans/PlanCardSkeleton.mjs.map +1 -0
  193. package/dist/components/account/sections/subscription/plans/PlansCatalogDialog.mjs +119 -0
  194. package/dist/components/account/sections/subscription/plans/PlansCatalogDialog.mjs.map +1 -0
  195. package/dist/components/account/sections/team/DeleteUserModal.mjs +116 -0
  196. package/dist/components/account/sections/team/DeleteUserModal.mjs.map +1 -0
  197. package/dist/components/account/sections/team/TeamFlows.mjs +14 -0
  198. package/dist/components/account/sections/team/TeamFlows.mjs.map +1 -0
  199. package/dist/components/account/sections/team/TeamMemberRow.mjs +99 -0
  200. package/dist/components/account/sections/team/TeamMemberRow.mjs.map +1 -0
  201. package/dist/components/account/sections/team/UserSheet.mjs +570 -0
  202. package/dist/components/account/sections/team/UserSheet.mjs.map +1 -0
  203. package/dist/components/account/sections/team/steps/NotificationsStep.mjs +80 -0
  204. package/dist/components/account/sections/team/steps/NotificationsStep.mjs.map +1 -0
  205. package/dist/components/account/sections/team/steps/ProjectSelectionStep.mjs +180 -0
  206. package/dist/components/account/sections/team/steps/ProjectSelectionStep.mjs.map +1 -0
  207. package/dist/components/account/sections/team/steps/UserInformationStep.mjs +371 -0
  208. package/dist/components/account/sections/team/steps/UserInformationStep.mjs.map +1 -0
  209. package/dist/components/account/sections/team/user-form.schema.mjs +37 -0
  210. package/dist/components/account/sections/team/user-form.schema.mjs.map +1 -0
  211. package/dist/components/account/types/workspace-actions.type.mjs +1 -0
  212. package/dist/components/account/types/workspace-actions.type.mjs.map +1 -0
  213. package/dist/components/layouts/ProfilePopover.mjs +10 -12
  214. package/dist/components/layouts/ProfilePopover.mjs.map +1 -1
  215. package/dist/components/layouts/UsersSelectorPopover.mjs +7 -4
  216. package/dist/components/layouts/UsersSelectorPopover.mjs.map +1 -1
  217. package/dist/components/modals/AccountDeletionWarningModal.mjs +4 -5
  218. package/dist/components/modals/AccountDeletionWarningModal.mjs.map +1 -1
  219. package/dist/components/modals/AccountFrozenModal.mjs +6 -3
  220. package/dist/components/modals/AccountFrozenModal.mjs.map +1 -1
  221. package/dist/components/modals/Modals.mjs +3 -3
  222. package/dist/components/modals/Modals.mjs.map +1 -1
  223. package/dist/components/modals/PaidPlanRequiredModal.mjs +4 -5
  224. package/dist/components/modals/PaidPlanRequiredModal.mjs.map +1 -1
  225. package/dist/components/modals/cards/AddFirstCardWarningModal.mjs +63 -0
  226. package/dist/components/modals/cards/AddFirstCardWarningModal.mjs.map +1 -0
  227. package/dist/components/modals/cards/SwitchPaymentToCardModal.mjs +187 -0
  228. package/dist/components/modals/cards/SwitchPaymentToCardModal.mjs.map +1 -0
  229. package/dist/components/modals/promo/AiCreditsOfferModal/AiCreditsOfferModal.mjs +5 -4
  230. package/dist/components/modals/promo/AiCreditsOfferModal/AiCreditsOfferModal.mjs.map +1 -1
  231. package/dist/components/ui/data-display/CardItem.mjs +9 -1
  232. package/dist/components/ui/data-display/CardItem.mjs.map +1 -1
  233. package/dist/components/ui/data-display/PaymentMethodIcons.mjs +50 -0
  234. package/dist/components/ui/data-display/PaymentMethodIcons.mjs.map +1 -0
  235. package/dist/components/ui/form/BillingPeriodSelector.mjs +108 -0
  236. package/dist/components/ui/form/BillingPeriodSelector.mjs.map +1 -0
  237. package/dist/components/ui/form/PaymentMethodToggle.mjs +82 -0
  238. package/dist/components/ui/form/PaymentMethodToggle.mjs.map +1 -0
  239. package/dist/components/ui/form/RadioOptionFieldIcon.mjs +57 -0
  240. package/dist/components/ui/form/RadioOptionFieldIcon.mjs.map +1 -0
  241. package/dist/components/ui/form/SegmentedControl.mjs +56 -0
  242. package/dist/components/ui/form/SegmentedControl.mjs.map +1 -0
  243. package/dist/components/ui/overlay/Dialog.mjs +21 -4
  244. package/dist/components/ui/overlay/Dialog.mjs.map +1 -1
  245. package/dist/components/ui/overlay/Sheet.mjs +26 -8
  246. package/dist/components/ui/overlay/Sheet.mjs.map +1 -1
  247. package/dist/components/ui/overlay/layers.mjs +52 -5
  248. package/dist/components/ui/overlay/layers.mjs.map +1 -1
  249. package/dist/enums/AccountHubFlow.mjs +13 -0
  250. package/dist/enums/AccountHubFlow.mjs.map +1 -0
  251. package/dist/enums/DateFilterPeriod.mjs +22 -0
  252. package/dist/enums/DateFilterPeriod.mjs.map +1 -0
  253. package/dist/enums/WorkspaceSectionType.mjs +11 -0
  254. package/dist/enums/WorkspaceSectionType.mjs.map +1 -0
  255. package/dist/handlers.mjs +24 -0
  256. package/dist/handlers.mjs.map +1 -1
  257. package/dist/hooks/useDebounce.mjs +5 -3
  258. package/dist/hooks/useDebounce.mjs.map +1 -1
  259. package/dist/hooks/useUploadProgress.mjs +33 -0
  260. package/dist/hooks/useUploadProgress.mjs.map +1 -0
  261. package/dist/i18n/messages/en-us.mjs +868 -3
  262. package/dist/i18n/messages/en-us.mjs.map +1 -1
  263. package/dist/i18n/messages/es-es.mjs +868 -3
  264. package/dist/i18n/messages/es-es.mjs.map +1 -1
  265. package/dist/i18n/messages/pt-br.mjs +868 -3
  266. package/dist/i18n/messages/pt-br.mjs.map +1 -1
  267. package/dist/index.mjs +87 -7
  268. package/dist/index.mjs.map +1 -1
  269. package/dist/infra/http/paged.mjs +20 -0
  270. package/dist/infra/http/paged.mjs.map +1 -0
  271. package/dist/middleware.mjs +2 -0
  272. package/dist/middleware.mjs.map +1 -1
  273. package/dist/middlewares/create-auth-middleware.mjs +2 -4
  274. package/dist/middlewares/create-auth-middleware.mjs.map +1 -1
  275. package/dist/middlewares/create-legacy-account-routes-middleware.mjs +44 -0
  276. package/dist/middlewares/create-legacy-account-routes-middleware.mjs.map +1 -0
  277. package/dist/middlewares/is-route-equals.mjs +7 -0
  278. package/dist/middlewares/is-route-equals.mjs.map +1 -0
  279. package/dist/modules/accounts/actions/account-management.action.mjs +20 -1
  280. package/dist/modules/accounts/actions/account-management.action.mjs.map +1 -1
  281. package/dist/modules/accounts/constants/account-hub-link.constants.mjs +9 -0
  282. package/dist/modules/accounts/constants/account-hub-link.constants.mjs.map +1 -0
  283. package/dist/modules/accounts/constants/legacy-account-routes.constants.mjs +5 -0
  284. package/dist/modules/accounts/constants/legacy-account-routes.constants.mjs.map +1 -0
  285. package/dist/modules/accounts/handlers/list-account-members.handler.mjs +22 -0
  286. package/dist/modules/accounts/handlers/list-account-members.handler.mjs.map +1 -0
  287. package/dist/modules/accounts/hooks/add-user-projects.hook.mjs +51 -0
  288. package/dist/modules/accounts/hooks/add-user-projects.hook.mjs.map +1 -0
  289. package/dist/modules/accounts/hooks/create-account-user.hook.mjs +20 -0
  290. package/dist/modules/accounts/hooks/create-account-user.hook.mjs.map +1 -0
  291. package/dist/modules/accounts/hooks/remove-user-projects.hook.mjs +47 -0
  292. package/dist/modules/accounts/hooks/remove-user-projects.hook.mjs.map +1 -0
  293. package/dist/modules/accounts/hooks/use-account-members.hook.mjs +20 -0
  294. package/dist/modules/accounts/hooks/use-account-members.hook.mjs.map +1 -0
  295. package/dist/modules/accounts/services/account.service.mjs +59 -0
  296. package/dist/modules/accounts/services/account.service.mjs.map +1 -1
  297. package/dist/modules/accounts/types/account-hub-link.type.mjs +1 -0
  298. package/dist/modules/accounts/types/account-hub-link.type.mjs.map +1 -0
  299. package/dist/modules/accounts/utils/build-account-hub-url.mjs +16 -0
  300. package/dist/modules/accounts/utils/build-account-hub-url.mjs.map +1 -0
  301. package/dist/modules/accounts/utils/is-account-hub-flow.mjs +9 -0
  302. package/dist/modules/accounts/utils/is-account-hub-flow.mjs.map +1 -0
  303. package/dist/modules/accounts/utils/is-account-section.mjs +9 -0
  304. package/dist/modules/accounts/utils/is-account-section.mjs.map +1 -0
  305. package/dist/modules/accounts/utils/is-my-account-section.mjs +13 -0
  306. package/dist/modules/accounts/utils/is-my-account-section.mjs.map +1 -0
  307. package/dist/modules/accounts/utils/map-legacy-account-route.mjs +93 -0
  308. package/dist/modules/accounts/utils/map-legacy-account-route.mjs.map +1 -0
  309. package/dist/modules/accounts/utils/parse-account-hub-link.mjs +20 -0
  310. package/dist/modules/accounts/utils/parse-account-hub-link.mjs.map +1 -0
  311. package/dist/modules/affiliates/actions/ensure-affiliate.action.mjs +10 -0
  312. package/dist/modules/affiliates/actions/ensure-affiliate.action.mjs.map +1 -0
  313. package/dist/modules/affiliates/actions/request-deposit.action.mjs +10 -0
  314. package/dist/modules/affiliates/actions/request-deposit.action.mjs.map +1 -0
  315. package/dist/modules/affiliates/actions/update-affiliate.action.mjs +10 -0
  316. package/dist/modules/affiliates/actions/update-affiliate.action.mjs.map +1 -0
  317. package/dist/modules/affiliates/constants/affiliate.constants.mjs +11 -0
  318. package/dist/modules/affiliates/constants/affiliate.constants.mjs.map +1 -0
  319. package/dist/modules/affiliates/constants/query-keys.constants.mjs +15 -0
  320. package/dist/modules/affiliates/constants/query-keys.constants.mjs.map +1 -0
  321. package/dist/modules/affiliates/handlers/affiliate-report-analytics.handler.mjs +16 -0
  322. package/dist/modules/affiliates/handlers/affiliate-report-analytics.handler.mjs.map +1 -0
  323. package/dist/modules/affiliates/handlers/affiliate-withdrawal-limits.handler.mjs +12 -0
  324. package/dist/modules/affiliates/handlers/affiliate-withdrawal-limits.handler.mjs.map +1 -0
  325. package/dist/modules/affiliates/handlers/current-affiliate.handler.mjs +12 -0
  326. package/dist/modules/affiliates/handlers/current-affiliate.handler.mjs.map +1 -0
  327. package/dist/modules/affiliates/handlers/list-affiliate-coupons.handler.mjs +12 -0
  328. package/dist/modules/affiliates/handlers/list-affiliate-coupons.handler.mjs.map +1 -0
  329. package/dist/modules/affiliates/handlers/list-affiliate-leads.handler.mjs +22 -0
  330. package/dist/modules/affiliates/handlers/list-affiliate-leads.handler.mjs.map +1 -0
  331. package/dist/modules/affiliates/handlers/list-affiliate-transactions.handler.mjs +22 -0
  332. package/dist/modules/affiliates/handlers/list-affiliate-transactions.handler.mjs.map +1 -0
  333. package/dist/modules/affiliates/hooks/use-affiliate-coupons.hook.mjs +17 -0
  334. package/dist/modules/affiliates/hooks/use-affiliate-coupons.hook.mjs.map +1 -0
  335. package/dist/modules/affiliates/hooks/use-affiliate-leads.hook.mjs +22 -0
  336. package/dist/modules/affiliates/hooks/use-affiliate-leads.hook.mjs.map +1 -0
  337. package/dist/modules/affiliates/hooks/use-affiliate-report-analytics.hook.mjs +17 -0
  338. package/dist/modules/affiliates/hooks/use-affiliate-report-analytics.hook.mjs.map +1 -0
  339. package/dist/modules/affiliates/hooks/use-affiliate-transactions.hook.mjs +20 -0
  340. package/dist/modules/affiliates/hooks/use-affiliate-transactions.hook.mjs.map +1 -0
  341. package/dist/modules/affiliates/hooks/use-current-affiliate.hook.mjs +17 -0
  342. package/dist/modules/affiliates/hooks/use-current-affiliate.hook.mjs.map +1 -0
  343. package/dist/modules/affiliates/hooks/use-ensure-affiliate.hook.mjs +23 -0
  344. package/dist/modules/affiliates/hooks/use-ensure-affiliate.hook.mjs.map +1 -0
  345. package/dist/modules/affiliates/hooks/use-request-deposit.hook.mjs +28 -0
  346. package/dist/modules/affiliates/hooks/use-request-deposit.hook.mjs.map +1 -0
  347. package/dist/modules/affiliates/hooks/use-update-affiliate.hook.mjs +22 -0
  348. package/dist/modules/affiliates/hooks/use-update-affiliate.hook.mjs.map +1 -0
  349. package/dist/modules/affiliates/hooks/use-withdrawal-limits.hook.mjs +17 -0
  350. package/dist/modules/affiliates/hooks/use-withdrawal-limits.hook.mjs.map +1 -0
  351. package/dist/modules/affiliates/services/affiliates.service.mjs +183 -0
  352. package/dist/modules/affiliates/services/affiliates.service.mjs.map +1 -0
  353. package/dist/modules/affiliates/types/affiliate.type.mjs +100 -0
  354. package/dist/modules/affiliates/types/affiliate.type.mjs.map +1 -0
  355. package/dist/modules/affiliates/utils/get-affiliate-share-link.mjs +9 -0
  356. package/dist/modules/affiliates/utils/get-affiliate-share-link.mjs.map +1 -0
  357. package/dist/modules/charges/actions/get-nota-fiscal.action.mjs +10 -0
  358. package/dist/modules/charges/actions/get-nota-fiscal.action.mjs.map +1 -0
  359. package/dist/modules/charges/actions/refresh-pix.action.mjs +10 -0
  360. package/dist/modules/charges/actions/refresh-pix.action.mjs.map +1 -0
  361. package/dist/modules/charges/hooks/nota-fiscal.hook.mjs +13 -0
  362. package/dist/modules/charges/hooks/nota-fiscal.hook.mjs.map +1 -0
  363. package/dist/modules/charges/hooks/refresh-pix.hook.mjs +13 -0
  364. package/dist/modules/charges/hooks/refresh-pix.hook.mjs.map +1 -0
  365. package/dist/modules/charges/services/charges.service.mjs +67 -0
  366. package/dist/modules/charges/services/charges.service.mjs.map +1 -1
  367. package/dist/modules/charges/types/nota-fiscal.type.mjs +1 -0
  368. package/dist/modules/charges/types/nota-fiscal.type.mjs.map +1 -0
  369. package/dist/modules/charges/types/refresh-pix.type.mjs +1 -0
  370. package/dist/modules/charges/types/refresh-pix.type.mjs.map +1 -0
  371. package/dist/modules/charges/utils/get-charge-download-url.mjs +8 -0
  372. package/dist/modules/charges/utils/get-charge-download-url.mjs.map +1 -0
  373. package/dist/modules/coupons/constants/query-keys.constants.mjs +5 -0
  374. package/dist/modules/coupons/constants/query-keys.constants.mjs.map +1 -0
  375. package/dist/modules/coupons/handlers/find-coupon-by-code.handler.mjs +17 -0
  376. package/dist/modules/coupons/handlers/find-coupon-by-code.handler.mjs.map +1 -0
  377. package/dist/modules/coupons/handlers/find-coupon-by-id.handler.mjs +16 -0
  378. package/dist/modules/coupons/handlers/find-coupon-by-id.handler.mjs.map +1 -0
  379. package/dist/modules/coupons/hooks/use-coupon-by-code.hook.mjs +15 -0
  380. package/dist/modules/coupons/hooks/use-coupon-by-code.hook.mjs.map +1 -0
  381. package/dist/modules/coupons/hooks/use-coupon-by-id.hook.mjs +18 -0
  382. package/dist/modules/coupons/hooks/use-coupon-by-id.hook.mjs.map +1 -0
  383. package/dist/modules/coupons/services/coupons.service.mjs +44 -0
  384. package/dist/modules/coupons/services/coupons.service.mjs.map +1 -0
  385. package/dist/modules/coupons/types/coupon.type.mjs +61 -0
  386. package/dist/modules/coupons/types/coupon.type.mjs.map +1 -0
  387. package/dist/modules/coupons/utils/coupon-restrictions.mjs +60 -0
  388. package/dist/modules/coupons/utils/coupon-restrictions.mjs.map +1 -0
  389. package/dist/modules/domains/handlers/count-domains.handler.mjs +12 -0
  390. package/dist/modules/domains/handlers/count-domains.handler.mjs.map +1 -0
  391. package/dist/modules/domains/hooks/count-domains.hook.mjs +17 -0
  392. package/dist/modules/domains/hooks/count-domains.hook.mjs.map +1 -0
  393. package/dist/modules/domains/services/domains.service.mjs +18 -0
  394. package/dist/modules/domains/services/domains.service.mjs.map +1 -0
  395. package/dist/modules/ia-credits/handlers/list-ia-credit-operations.handler.mjs +15 -0
  396. package/dist/modules/ia-credits/handlers/list-ia-credit-operations.handler.mjs.map +1 -0
  397. package/dist/modules/ia-credits/hooks/ia-credit-operations.hook.mjs +28 -0
  398. package/dist/modules/ia-credits/hooks/ia-credit-operations.hook.mjs.map +1 -0
  399. package/dist/modules/ia-credits/services/ia-credits.service.mjs +23 -2
  400. package/dist/modules/ia-credits/services/ia-credits.service.mjs.map +1 -1
  401. package/dist/modules/pages/handlers/count-pages.handler.mjs +4 -2
  402. package/dist/modules/pages/handlers/count-pages.handler.mjs.map +1 -1
  403. package/dist/modules/pages/hooks/count-published-pages.hook.mjs +26 -0
  404. package/dist/modules/pages/hooks/count-published-pages.hook.mjs.map +1 -0
  405. package/dist/modules/pages/services/pages.service.mjs +3 -2
  406. package/dist/modules/pages/services/pages.service.mjs.map +1 -1
  407. package/dist/modules/plans/constants/plan-tooltips.constants.mjs +14 -0
  408. package/dist/modules/plans/constants/plan-tooltips.constants.mjs.map +1 -0
  409. package/dist/modules/plans/hooks/use-enriched-plans.hook.mjs +28 -0
  410. package/dist/modules/plans/hooks/use-enriched-plans.hook.mjs.map +1 -0
  411. package/dist/modules/plans/hooks/use-ui-plans.hook.mjs +20 -0
  412. package/dist/modules/plans/hooks/use-ui-plans.hook.mjs.map +1 -0
  413. package/dist/modules/projects/hooks/add-project-users.hook.mjs +25 -0
  414. package/dist/modules/projects/hooks/add-project-users.hook.mjs.map +1 -0
  415. package/dist/modules/projects/hooks/list-all-account-users.hook.mjs +3 -6
  416. package/dist/modules/projects/hooks/list-all-account-users.hook.mjs.map +1 -1
  417. package/dist/modules/projects/hooks/list-available-users.hook.mjs +3 -6
  418. package/dist/modules/projects/hooks/list-available-users.hook.mjs.map +1 -1
  419. package/dist/modules/projects/hooks/list-infinite-projects.hook.mjs +3 -6
  420. package/dist/modules/projects/hooks/list-infinite-projects.hook.mjs.map +1 -1
  421. package/dist/modules/projects/hooks/list-project-users.hook.mjs +3 -6
  422. package/dist/modules/projects/hooks/list-project-users.hook.mjs.map +1 -1
  423. package/dist/modules/projects/hooks/remove-project-users.hook.mjs +25 -0
  424. package/dist/modules/projects/hooks/remove-project-users.hook.mjs.map +1 -0
  425. package/dist/modules/projects/services/project-users.service.mjs +5 -0
  426. package/dist/modules/projects/services/project-users.service.mjs.map +1 -1
  427. package/dist/modules/projects/types.mjs +3 -2
  428. package/dist/modules/projects/types.mjs.map +1 -1
  429. package/dist/modules/subscriptions/actions/cancel-subscription.action.mjs +10 -0
  430. package/dist/modules/subscriptions/actions/cancel-subscription.action.mjs.map +1 -0
  431. package/dist/modules/subscriptions/actions/create-subscription.action.mjs +10 -0
  432. package/dist/modules/subscriptions/actions/create-subscription.action.mjs.map +1 -0
  433. package/dist/modules/subscriptions/actions/find-pending-pix-status.action.mjs +10 -0
  434. package/dist/modules/subscriptions/actions/find-pending-pix-status.action.mjs.map +1 -0
  435. package/dist/modules/subscriptions/actions/find-subscription-by-id.action.mjs +10 -0
  436. package/dist/modules/subscriptions/actions/find-subscription-by-id.action.mjs.map +1 -0
  437. package/dist/modules/subscriptions/constants/addons.constants.mjs +35 -0
  438. package/dist/modules/subscriptions/constants/addons.constants.mjs.map +1 -1
  439. package/dist/modules/subscriptions/constants/downgrade.constants.mjs +25 -0
  440. package/dist/modules/subscriptions/constants/downgrade.constants.mjs.map +1 -0
  441. package/dist/modules/subscriptions/constants/subscription.constants.mjs +2 -0
  442. package/dist/modules/subscriptions/constants/subscription.constants.mjs.map +1 -1
  443. package/dist/modules/subscriptions/handlers/pending-pix-status.handler.mjs +15 -0
  444. package/dist/modules/subscriptions/handlers/pending-pix-status.handler.mjs.map +1 -0
  445. package/dist/modules/subscriptions/hooks/cancel-subscription.hook.mjs +25 -0
  446. package/dist/modules/subscriptions/hooks/cancel-subscription.hook.mjs.map +1 -0
  447. package/dist/modules/subscriptions/hooks/create-subscription.hook.mjs +33 -0
  448. package/dist/modules/subscriptions/hooks/create-subscription.hook.mjs.map +1 -0
  449. package/dist/modules/subscriptions/hooks/find-subscription-by-id.hook.mjs +18 -0
  450. package/dist/modules/subscriptions/hooks/find-subscription-by-id.hook.mjs.map +1 -0
  451. package/dist/modules/subscriptions/hooks/pending-pix-status.hook.mjs +25 -0
  452. package/dist/modules/subscriptions/hooks/pending-pix-status.hook.mjs.map +1 -0
  453. package/dist/modules/subscriptions/services/subscriptions.service.mjs +71 -0
  454. package/dist/modules/subscriptions/services/subscriptions.service.mjs.map +1 -1
  455. package/dist/modules/subscriptions/types/cancel-subscription.type.mjs +9 -0
  456. package/dist/modules/subscriptions/types/cancel-subscription.type.mjs.map +1 -0
  457. package/dist/modules/subscriptions/types/create-subscription.type.mjs +62 -0
  458. package/dist/modules/subscriptions/types/create-subscription.type.mjs.map +1 -0
  459. package/dist/modules/subscriptions/types/pending-pix-status.type.mjs +28 -0
  460. package/dist/modules/subscriptions/types/pending-pix-status.type.mjs.map +1 -0
  461. package/dist/modules/subscriptions/types/subscription.type.mjs +9 -1
  462. package/dist/modules/subscriptions/types/subscription.type.mjs.map +1 -1
  463. package/dist/modules/subscriptions/utils/addon-buckets.mjs +69 -0
  464. package/dist/modules/subscriptions/utils/addon-buckets.mjs.map +1 -0
  465. package/dist/modules/subscriptions/utils/confirm-payment-if-required.mjs +8 -2
  466. package/dist/modules/subscriptions/utils/confirm-payment-if-required.mjs.map +1 -1
  467. package/dist/modules/subscriptions/utils/first-period-pricing.mjs +25 -0
  468. package/dist/modules/subscriptions/utils/first-period-pricing.mjs.map +1 -0
  469. package/dist/modules/subscriptions/utils/is-api-subscription.mjs +8 -0
  470. package/dist/modules/subscriptions/utils/is-api-subscription.mjs.map +1 -0
  471. package/dist/modules/subscriptions/utils/is-boleto-payer.mjs +17 -0
  472. package/dist/modules/subscriptions/utils/is-boleto-payer.mjs.map +1 -0
  473. package/dist/modules/subscriptions/utils/is-free-subscription.mjs +8 -0
  474. package/dist/modules/subscriptions/utils/is-free-subscription.mjs.map +1 -0
  475. package/dist/modules/subscriptions/utils/periodicity.mjs +55 -1
  476. package/dist/modules/subscriptions/utils/periodicity.mjs.map +1 -1
  477. package/dist/modules/subscriptions/utils/resolve-subscription-plan-name.mjs +27 -0
  478. package/dist/modules/subscriptions/utils/resolve-subscription-plan-name.mjs.map +1 -0
  479. package/dist/modules/users/hooks/messages.hook.mjs +3 -5
  480. package/dist/modules/users/hooks/messages.hook.mjs.map +1 -1
  481. package/dist/server.mjs +6 -0
  482. package/dist/server.mjs.map +1 -1
  483. package/dist/store/useAccountModals.mjs +9 -2
  484. package/dist/store/useAccountModals.mjs.map +1 -1
  485. package/dist/store/useAccountUnsavedChanges.mjs +31 -0
  486. package/dist/store/useAccountUnsavedChanges.mjs.map +1 -0
  487. package/dist/store/useAffiliateFlows.mjs +23 -0
  488. package/dist/store/useAffiliateFlows.mjs.map +1 -0
  489. package/dist/store/useProjectFlows.mjs +18 -0
  490. package/dist/store/useProjectFlows.mjs.map +1 -0
  491. package/dist/store/useSubscriptionFlows.mjs +58 -0
  492. package/dist/store/useSubscriptionFlows.mjs.map +1 -0
  493. package/dist/store/useTeamFlows.mjs +15 -0
  494. package/dist/store/useTeamFlows.mjs.map +1 -0
  495. package/dist/testing/factories/coupon.factory.mjs +19 -0
  496. package/dist/testing/factories/coupon.factory.mjs.map +1 -0
  497. package/dist/testing/factories/index.mjs +6 -0
  498. package/dist/testing/factories/index.mjs.map +1 -1
  499. package/dist/testing/factories/project-user.factory.mjs +17 -0
  500. package/dist/testing/factories/project-user.factory.mjs.map +1 -0
  501. package/dist/testing/factories/project.factory.mjs +21 -0
  502. package/dist/testing/factories/project.factory.mjs.map +1 -0
  503. package/dist/testing/react/providers.mjs +1 -1
  504. package/dist/testing/react/providers.mjs.map +1 -1
  505. package/dist/utils/browser/chart-custom-tooltip.mjs +69 -0
  506. package/dist/utils/browser/chart-custom-tooltip.mjs.map +1 -0
  507. package/dist/utils/browser/get-css-variable.mjs +9 -0
  508. package/dist/utils/browser/get-css-variable.mjs.map +1 -0
  509. package/dist/utils/constants/scrollbar.mjs +5 -0
  510. package/dist/utils/constants/scrollbar.mjs.map +1 -0
  511. package/dist/utils/date-filter-period.mjs +34 -0
  512. package/dist/utils/date-filter-period.mjs.map +1 -0
  513. package/dist/utils/file/index.mjs +11 -1
  514. package/dist/utils/file/index.mjs.map +1 -1
  515. package/dist/utils/format/initials.mjs +8 -0
  516. package/dist/utils/format/initials.mjs.map +1 -0
  517. package/dist/utils/format/masks.mjs +32 -1
  518. package/dist/utils/format/masks.mjs.map +1 -1
  519. package/dist/utils/qrcode/to-data-url.mjs +12 -0
  520. package/dist/utils/qrcode/to-data-url.mjs.map +1 -0
  521. package/dist/utils/validators/account.mjs +1 -7
  522. package/dist/utils/validators/account.mjs.map +1 -1
  523. package/package.json +15 -2
  524. package/src/components/account/AccountHubLinkHandler.tsx +39 -0
  525. package/src/components/account/AccountModalLayout.tsx +190 -0
  526. package/src/components/account/AccountModals.tsx +12 -2
  527. package/src/components/account/AccountUnsavedChangesDialog.tsx +49 -0
  528. package/src/components/account/DeleteAccountModal.tsx +1 -1
  529. package/src/components/account/IsntPossibleDeleteAccountModal.tsx +9 -1
  530. package/src/components/account/MyAccountModal.tsx +222 -0
  531. package/src/components/account/TwoFactorAuthModal.tsx +1 -1
  532. package/src/components/account/hooks/useAccountHubActions.ts +95 -0
  533. package/src/components/account/hooks/useAddCardWithPaymentSwitch.ts +70 -0
  534. package/src/components/account/hooks/useAffiliatesActions.tsx +78 -0
  535. package/src/components/account/hooks/useMyAccountModal.ts +40 -0
  536. package/src/components/account/hooks/useProjectsActions.ts +44 -0
  537. package/src/components/account/hooks/useSubscriptionActions.ts +99 -0
  538. package/src/components/account/hooks/useTeamActions.ts +35 -0
  539. package/src/components/account/sections/AffiliatesSection.tsx +342 -0
  540. package/src/components/account/sections/ChangePasswordSection.tsx +6 -10
  541. package/src/components/account/sections/MyProfileSection.tsx +215 -147
  542. package/src/components/account/sections/PreferencesSection.tsx +71 -71
  543. package/src/components/account/sections/ProjectsSection.tsx +110 -0
  544. package/src/components/account/sections/SecuritySection.tsx +72 -62
  545. package/src/components/account/sections/SubscriptionSection.tsx +36 -0
  546. package/src/components/account/sections/TeamSection.tsx +161 -0
  547. package/src/components/account/sections/TokenSection.tsx +4 -8
  548. package/src/components/account/sections/affiliates/AffiliateCommissionCard.tsx +83 -0
  549. package/src/components/account/sections/affiliates/AffiliateFlows.tsx +20 -0
  550. package/src/components/account/sections/affiliates/AffiliateLeadsSheet.tsx +143 -0
  551. package/src/components/account/sections/affiliates/AffiliateStatsCard.tsx +56 -0
  552. package/src/components/account/sections/affiliates/AffiliateStepCard.tsx +20 -0
  553. package/src/components/account/sections/affiliates/AffiliateTransactionsList.tsx +194 -0
  554. package/src/components/account/sections/affiliates/NoReceivingAccountModal.tsx +63 -0
  555. package/src/components/account/sections/affiliates/ReceivingAccountModal.tsx +213 -0
  556. package/src/components/account/sections/affiliates/RequestWithdrawalSheet.tsx +586 -0
  557. package/src/components/account/sections/affiliates/ViewAttachmentModal.tsx +47 -0
  558. package/src/components/account/sections/affiliates/reports/AffiliatesIndicatorsChart.tsx +45 -0
  559. package/src/components/account/sections/affiliates/reports/AffiliatesReportsTab.tsx +44 -0
  560. package/src/components/account/sections/affiliates/reports/useAffiliatesIndicatorsChart.ts +148 -0
  561. package/src/components/account/sections/projects/DeleteProjectModal.tsx +246 -0
  562. package/src/components/account/sections/projects/ProjectFlows.tsx +16 -0
  563. package/src/components/account/sections/projects/ProjectMembersStack.tsx +75 -0
  564. package/src/components/account/sections/projects/ProjectRow.tsx +96 -0
  565. package/src/components/account/sections/projects/ProjectSheet.tsx +603 -0
  566. package/src/components/account/sections/projects/ProjectsDisabledModal.tsx +69 -0
  567. package/src/components/account/sections/projects/project-form.schema.ts +30 -0
  568. package/src/components/account/sections/shared/ConnectListRow.tsx +68 -0
  569. package/src/components/account/sections/shared/DateFilterPopover.tsx +58 -0
  570. package/src/components/account/sections/shared/EntityAvatar.tsx +54 -0
  571. package/src/components/account/sections/shared/FilterPopover.tsx +79 -0
  572. package/src/components/account/sections/shared/FormSection.tsx +23 -0
  573. package/src/components/account/sections/shared/IconBox.tsx +21 -0
  574. package/src/components/account/sections/shared/InfiniteScrollList.tsx +57 -0
  575. package/src/components/account/sections/shared/ListPagination.tsx +84 -0
  576. package/src/components/account/sections/shared/RowActionsMenu.tsx +66 -0
  577. package/src/components/account/sections/shared/SectionLoadError.tsx +27 -0
  578. package/src/components/account/sections/shared/StatusBadge.tsx +33 -0
  579. package/src/components/account/sections/shared/WorkspaceSection.tsx +22 -0
  580. package/src/components/account/sections/subscription/AiCreditsUsage.tsx +152 -0
  581. package/src/components/account/sections/subscription/BillingAddressSheet.tsx +460 -0
  582. package/src/components/account/sections/subscription/BoletoDetailsDialog.tsx +104 -0
  583. package/src/components/account/sections/subscription/BoletoGeneratedDialog.tsx +24 -0
  584. package/src/components/account/sections/subscription/CancelPlanDialog.tsx +221 -0
  585. package/src/components/account/sections/subscription/ChargeRow.tsx +161 -0
  586. package/src/components/account/sections/subscription/ChargeStatusBadge.tsx +29 -0
  587. package/src/components/account/sections/subscription/ChargesList.tsx +125 -0
  588. package/src/components/account/sections/subscription/ManageCardsSheet.tsx +93 -0
  589. package/src/components/account/sections/subscription/OverdueReceiptOpener.tsx +29 -0
  590. package/src/components/account/sections/subscription/PayChargeDialog.tsx +306 -0
  591. package/src/components/account/sections/subscription/PaymentConfirmationDialog.tsx +70 -0
  592. package/src/components/account/sections/subscription/PaymentMethodsCard.tsx +117 -0
  593. package/src/components/account/sections/subscription/PendingChangeDialog.tsx +168 -0
  594. package/src/components/account/sections/subscription/PixDetailsDialog.tsx +246 -0
  595. package/src/components/account/sections/subscription/PixPaymentDialog.tsx +242 -0
  596. package/src/components/account/sections/subscription/PlanDetailsSheet.tsx +380 -0
  597. package/src/components/account/sections/subscription/ReceiptDetailsSheet.tsx +318 -0
  598. package/src/components/account/sections/subscription/SubscriptionFlows.tsx +40 -0
  599. package/src/components/account/sections/subscription/SubscriptionPlanCard.tsx +433 -0
  600. package/src/components/account/sections/subscription/UsageReportSheet.tsx +244 -0
  601. package/src/components/account/sections/subscription/change-plan/ChangePlanSheet.tsx +95 -0
  602. package/src/components/account/sections/subscription/change-plan/components/AbTestDetailsDialog.tsx +57 -0
  603. package/src/components/account/sections/subscription/change-plan/components/AddonsBlock.tsx +214 -0
  604. package/src/components/account/sections/subscription/change-plan/components/AlternativeBucketsSection.tsx +92 -0
  605. package/src/components/account/sections/subscription/change-plan/components/CouponBlock.tsx +42 -0
  606. package/src/components/account/sections/subscription/change-plan/components/CouponDialog.tsx +134 -0
  607. package/src/components/account/sections/subscription/change-plan/components/PricePreview.tsx +28 -0
  608. package/src/components/account/sections/subscription/change-plan/components/SummaryBlock.tsx +194 -0
  609. package/src/components/account/sections/subscription/change-plan/plan-comparison.ts +52 -0
  610. package/src/components/account/sections/subscription/change-plan/steps/PaymentSummaryStep.tsx +161 -0
  611. package/src/components/account/sections/subscription/change-plan/steps/PlanComparisonStep.tsx +165 -0
  612. package/src/components/account/sections/subscription/change-plan/steps/PlanViewStep.tsx +89 -0
  613. package/src/components/account/sections/subscription/change-plan/steps/ReactivationConfigStep.tsx +117 -0
  614. package/src/components/account/sections/subscription/change-plan/steps/ReactivationPaymentStep.tsx +139 -0
  615. package/src/components/account/sections/subscription/change-plan/useChangePlanState.tsx +1158 -0
  616. package/src/components/account/sections/subscription/downgrade/CannotDowngradeDialog.tsx +297 -0
  617. package/src/components/account/sections/subscription/downgrade/DowngradeReasonDialog.tsx +154 -0
  618. package/src/components/account/sections/subscription/plans/PlanCard.tsx +417 -0
  619. package/src/components/account/sections/subscription/plans/PlanCardSkeleton.tsx +70 -0
  620. package/src/components/account/sections/subscription/plans/PlansCatalogDialog.tsx +156 -0
  621. package/src/components/account/sections/team/DeleteUserModal.tsx +134 -0
  622. package/src/components/account/sections/team/TeamFlows.tsx +14 -0
  623. package/src/components/account/sections/team/TeamMemberRow.tsx +151 -0
  624. package/src/components/account/sections/team/UserSheet.tsx +688 -0
  625. package/src/components/account/sections/team/steps/NotificationsStep.tsx +109 -0
  626. package/src/components/account/sections/team/steps/ProjectSelectionStep.tsx +219 -0
  627. package/src/components/account/sections/team/steps/UserInformationStep.tsx +423 -0
  628. package/src/components/account/sections/team/user-form.schema.ts +43 -0
  629. package/src/components/account/types/workspace-actions.type.ts +56 -0
  630. package/src/components/layouts/ProfilePopover.tsx +11 -12
  631. package/src/components/layouts/UsersSelectorPopover.tsx +7 -4
  632. package/src/components/modals/AccountDeletionWarningModal.tsx +4 -5
  633. package/src/components/modals/AccountFrozenModal.tsx +6 -3
  634. package/src/components/modals/Modals.tsx +6 -3
  635. package/src/components/modals/PaidPlanRequiredModal.tsx +4 -5
  636. package/src/components/modals/cards/AddFirstCardWarningModal.tsx +72 -0
  637. package/src/components/modals/cards/SwitchPaymentToCardModal.tsx +232 -0
  638. package/src/components/modals/promo/AiCreditsOfferModal/AiCreditsOfferModal.tsx +5 -4
  639. package/src/components/ui/data-display/CardItem.tsx +9 -5
  640. package/src/components/ui/data-display/PaymentMethodIcons.tsx +43 -0
  641. package/src/components/ui/form/BillingPeriodSelector.tsx +173 -0
  642. package/src/components/ui/form/PaymentMethodToggle.tsx +119 -0
  643. package/src/components/ui/form/RadioOptionFieldIcon.tsx +64 -0
  644. package/src/components/ui/form/SegmentedControl.tsx +77 -0
  645. package/src/components/ui/overlay/Dialog.tsx +21 -2
  646. package/src/components/ui/overlay/Sheet.tsx +26 -5
  647. package/src/components/ui/overlay/layers.tsx +88 -4
  648. package/src/enums/AccountHubFlow.ts +8 -0
  649. package/src/enums/DateFilterPeriod.ts +17 -0
  650. package/src/enums/WorkspaceSectionType.ts +6 -0
  651. package/src/handlers.ts +14 -0
  652. package/src/hooks/useDebounce.ts +5 -3
  653. package/src/hooks/useUploadProgress.ts +42 -0
  654. package/src/i18n/messages/en-us.ts +909 -2
  655. package/src/i18n/messages/es-es.ts +913 -2
  656. package/src/i18n/messages/pt-br.ts +913 -2
  657. package/src/index.ts +56 -1
  658. package/src/infra/http/paged.ts +24 -0
  659. package/src/middleware.ts +1 -0
  660. package/src/middlewares/create-auth-middleware.ts +2 -5
  661. package/src/middlewares/create-legacy-account-routes-middleware.ts +54 -0
  662. package/src/middlewares/is-route-equals.ts +3 -0
  663. package/src/modules/accounts/actions/account-management.action.ts +22 -1
  664. package/src/modules/accounts/constants/account-hub-link.constants.ts +3 -0
  665. package/src/modules/accounts/constants/legacy-account-routes.constants.ts +1 -0
  666. package/src/modules/accounts/handlers/list-account-members.handler.ts +23 -0
  667. package/src/modules/accounts/hooks/add-user-projects.hook.ts +72 -0
  668. package/src/modules/accounts/hooks/create-account-user.hook.ts +21 -0
  669. package/src/modules/accounts/hooks/remove-user-projects.hook.ts +68 -0
  670. package/src/modules/accounts/hooks/use-account-members.hook.ts +31 -0
  671. package/src/modules/accounts/services/account.service.ts +71 -0
  672. package/src/modules/accounts/types/account-hub-link.type.ts +13 -0
  673. package/src/modules/accounts/types.ts +9 -0
  674. package/src/modules/accounts/utils/build-account-hub-url.ts +14 -0
  675. package/src/modules/accounts/utils/is-account-hub-flow.ts +7 -0
  676. package/src/modules/accounts/utils/is-account-section.ts +7 -0
  677. package/src/modules/accounts/utils/is-my-account-section.ts +12 -0
  678. package/src/modules/accounts/utils/map-legacy-account-route.ts +108 -0
  679. package/src/modules/accounts/utils/parse-account-hub-link.ts +21 -0
  680. package/src/modules/affiliates/actions/ensure-affiliate.action.ts +9 -0
  681. package/src/modules/affiliates/actions/request-deposit.action.ts +9 -0
  682. package/src/modules/affiliates/actions/update-affiliate.action.ts +9 -0
  683. package/src/modules/affiliates/constants/affiliate.constants.ts +11 -0
  684. package/src/modules/affiliates/constants/query-keys.constants.ts +7 -0
  685. package/src/modules/affiliates/handlers/affiliate-report-analytics.handler.ts +16 -0
  686. package/src/modules/affiliates/handlers/affiliate-withdrawal-limits.handler.ts +10 -0
  687. package/src/modules/affiliates/handlers/current-affiliate.handler.ts +10 -0
  688. package/src/modules/affiliates/handlers/list-affiliate-coupons.handler.ts +10 -0
  689. package/src/modules/affiliates/handlers/list-affiliate-leads.handler.ts +23 -0
  690. package/src/modules/affiliates/handlers/list-affiliate-transactions.handler.ts +23 -0
  691. package/src/modules/affiliates/hooks/use-affiliate-coupons.hook.ts +19 -0
  692. package/src/modules/affiliates/hooks/use-affiliate-leads.hook.ts +27 -0
  693. package/src/modules/affiliates/hooks/use-affiliate-report-analytics.hook.ts +19 -0
  694. package/src/modules/affiliates/hooks/use-affiliate-transactions.hook.ts +25 -0
  695. package/src/modules/affiliates/hooks/use-current-affiliate.hook.ts +19 -0
  696. package/src/modules/affiliates/hooks/use-ensure-affiliate.hook.ts +24 -0
  697. package/src/modules/affiliates/hooks/use-request-deposit.hook.ts +29 -0
  698. package/src/modules/affiliates/hooks/use-update-affiliate.hook.ts +24 -0
  699. package/src/modules/affiliates/hooks/use-withdrawal-limits.hook.ts +20 -0
  700. package/src/modules/affiliates/services/affiliates.service.ts +240 -0
  701. package/src/modules/affiliates/types/affiliate.type.ts +180 -0
  702. package/src/modules/affiliates/utils/get-affiliate-share-link.ts +8 -0
  703. package/src/modules/charges/actions/get-nota-fiscal.action.ts +8 -0
  704. package/src/modules/charges/actions/refresh-pix.action.ts +8 -0
  705. package/src/modules/charges/hooks/nota-fiscal.hook.ts +13 -0
  706. package/src/modules/charges/hooks/refresh-pix.hook.ts +13 -0
  707. package/src/modules/charges/services/charges.service.ts +121 -0
  708. package/src/modules/charges/types/nota-fiscal.type.ts +20 -0
  709. package/src/modules/charges/types/refresh-pix.type.ts +14 -0
  710. package/src/modules/charges/utils/get-charge-download-url.ts +10 -0
  711. package/src/modules/coupons/constants/query-keys.constants.ts +1 -0
  712. package/src/modules/coupons/handlers/find-coupon-by-code.handler.ts +16 -0
  713. package/src/modules/coupons/handlers/find-coupon-by-id.handler.ts +15 -0
  714. package/src/modules/coupons/hooks/use-coupon-by-code.hook.ts +16 -0
  715. package/src/modules/coupons/hooks/use-coupon-by-id.hook.ts +20 -0
  716. package/src/modules/coupons/services/coupons.service.ts +54 -0
  717. package/src/modules/coupons/types/coupon.type.ts +70 -0
  718. package/src/modules/coupons/utils/coupon-restrictions.ts +112 -0
  719. package/src/modules/domains/handlers/count-domains.handler.ts +10 -0
  720. package/src/modules/domains/hooks/count-domains.hook.ts +17 -0
  721. package/src/modules/domains/services/domains.service.ts +18 -0
  722. package/src/modules/ia-credits/handlers/list-ia-credit-operations.handler.ts +14 -0
  723. package/src/modules/ia-credits/hooks/ia-credit-operations.hook.ts +33 -0
  724. package/src/modules/ia-credits/services/ia-credits.service.ts +32 -1
  725. package/src/modules/pages/handlers/count-pages.handler.ts +5 -2
  726. package/src/modules/pages/hooks/count-published-pages.hook.ts +26 -0
  727. package/src/modules/pages/services/pages.service.ts +3 -2
  728. package/src/modules/plans/constants/plan-tooltips.constants.ts +16 -0
  729. package/src/modules/plans/hooks/use-enriched-plans.hook.ts +31 -0
  730. package/src/modules/plans/hooks/use-ui-plans.hook.ts +22 -0
  731. package/src/modules/projects/hooks/add-project-users.hook.ts +29 -0
  732. package/src/modules/projects/hooks/list-all-account-users.hook.ts +3 -6
  733. package/src/modules/projects/hooks/list-available-users.hook.ts +3 -6
  734. package/src/modules/projects/hooks/list-infinite-projects.hook.ts +3 -6
  735. package/src/modules/projects/hooks/list-project-users.hook.ts +3 -6
  736. package/src/modules/projects/hooks/remove-project-users.hook.ts +29 -0
  737. package/src/modules/projects/services/project-users.service.ts +135 -130
  738. package/src/modules/projects/types.ts +89 -88
  739. package/src/modules/subscriptions/actions/cancel-subscription.action.ts +12 -0
  740. package/src/modules/subscriptions/actions/create-subscription.action.ts +9 -0
  741. package/src/modules/subscriptions/actions/find-pending-pix-status.action.ts +8 -0
  742. package/src/modules/subscriptions/actions/find-subscription-by-id.action.ts +8 -0
  743. package/src/modules/subscriptions/constants/addons.constants.ts +50 -0
  744. package/src/modules/subscriptions/constants/downgrade.constants.ts +30 -0
  745. package/src/modules/subscriptions/constants/subscription.constants.ts +3 -0
  746. package/src/modules/subscriptions/handlers/pending-pix-status.handler.ts +17 -0
  747. package/src/modules/subscriptions/hooks/cancel-subscription.hook.ts +28 -0
  748. package/src/modules/subscriptions/hooks/create-subscription.hook.ts +34 -0
  749. package/src/modules/subscriptions/hooks/find-subscription-by-id.hook.ts +17 -0
  750. package/src/modules/subscriptions/hooks/pending-pix-status.hook.ts +30 -0
  751. package/src/modules/subscriptions/services/subscriptions.service.ts +401 -301
  752. package/src/modules/subscriptions/types/cancel-subscription.type.ts +8 -0
  753. package/src/modules/subscriptions/types/create-subscription.type.ts +79 -0
  754. package/src/modules/subscriptions/types/pending-pix-status.type.ts +33 -0
  755. package/src/modules/subscriptions/types/subscription.type.ts +157 -147
  756. package/src/modules/subscriptions/utils/addon-buckets.ts +129 -0
  757. package/src/modules/subscriptions/utils/confirm-payment-if-required.ts +9 -2
  758. package/src/modules/subscriptions/utils/first-period-pricing.ts +63 -0
  759. package/src/modules/subscriptions/utils/is-api-subscription.ts +6 -0
  760. package/src/modules/subscriptions/utils/is-boleto-payer.ts +21 -0
  761. package/src/modules/subscriptions/utils/is-free-subscription.ts +6 -0
  762. package/src/modules/subscriptions/utils/periodicity.ts +101 -0
  763. package/src/modules/subscriptions/utils/resolve-subscription-plan-name.ts +44 -0
  764. package/src/modules/users/hooks/messages.hook.ts +3 -5
  765. package/src/server.ts +102 -99
  766. package/src/store/useAccountModals.ts +22 -5
  767. package/src/store/useAccountUnsavedChanges.ts +52 -0
  768. package/src/store/useAffiliateFlows.ts +46 -0
  769. package/src/store/useProjectFlows.ts +42 -0
  770. package/src/store/useSubscriptionFlows.ts +176 -0
  771. package/src/store/useTeamFlows.ts +34 -0
  772. package/src/testing/factories/coupon.factory.ts +17 -0
  773. package/src/testing/factories/index.ts +3 -0
  774. package/src/testing/factories/project-user.factory.ts +15 -0
  775. package/src/testing/factories/project.factory.ts +19 -0
  776. package/src/testing/react/providers.tsx +2 -1
  777. package/src/utils/browser/chart-custom-tooltip.ts +85 -0
  778. package/src/utils/browser/get-css-variable.ts +6 -0
  779. package/src/utils/constants/scrollbar.ts +10 -0
  780. package/src/utils/date-filter-period.ts +34 -0
  781. package/src/utils/file/index.ts +13 -0
  782. package/src/utils/format/initials.ts +10 -0
  783. package/src/utils/format/masks.ts +41 -0
  784. package/src/utils/qrcode/to-data-url.ts +23 -0
  785. package/src/utils/validators/account.ts +0 -8
  786. package/dist/components/account/ConfigurationsMyAccountModal.mjs +0 -143
  787. package/dist/components/account/ConfigurationsMyAccountModal.mjs.map +0 -1
  788. package/dist/components/account/hooks/useConfigurationsModal.mjs +0 -34
  789. package/dist/components/account/hooks/useConfigurationsModal.mjs.map +0 -1
  790. package/src/components/account/ConfigurationsMyAccountModal.tsx +0 -179
  791. package/src/components/account/hooks/useConfigurationsModal.ts +0 -45
@@ -0,0 +1,44 @@
1
+ import { NextResponse } from "next/server";
2
+ import { continueChain, stopChain } from "./types";
3
+ import { isRouteEquals } from "./is-route-equals";
4
+ import { LEGACY_ACCOUNT_ROUTES } from "../modules/accounts/constants/legacy-account-routes.constants";
5
+ import { mapLegacyAccountRoute } from "../modules/accounts/utils/map-legacy-account-route";
6
+ import { whitelabelService } from "../modules/whitelabel/services/whitelabel.service";
7
+ import { isSameSiteUrl, resolveSafeRedirect } from "../utils/redirect";
8
+ function createLegacyAccountRoutesMiddleware(options) {
9
+ return async (request) => {
10
+ const { pathname, searchParams } = request.nextUrl;
11
+ const token = process.env.DUMMY_AUTH_TOKEN || request.cookies.get("greatapps")?.value;
12
+ if (!token) return continueChain();
13
+ const isAuthRoute = isRouteEquals(pathname, options.authRoutes);
14
+ const isLegacyRoute = LEGACY_ACCOUNT_ROUTES.includes(pathname);
15
+ if (!isAuthRoute && !isLegacyRoute) return continueChain();
16
+ const host = request.headers.get("host") || "";
17
+ const whitelabel = await whitelabelService.getTokenByDomain(host).catch(() => null);
18
+ const pagesUrl = whitelabel?.pages_url;
19
+ if (!pagesUrl || !isSameSiteUrl(pagesUrl, host)) {
20
+ console.error("[legacy-account-routes] pages_url ausente ou fora do site do host da requisi\xE7\xE3o", {
21
+ host,
22
+ pathname,
23
+ whitelabelId: whitelabel?.id,
24
+ pagesUrl
25
+ });
26
+ return continueChain();
27
+ }
28
+ if (isAuthRoute) {
29
+ const redirect = searchParams.get("redirect");
30
+ const target = resolveSafeRedirect(redirect, host.split(":")[0], pagesUrl);
31
+ const destination2 = target.startsWith("/") ? new URL(target, pagesUrl) : new URL(target);
32
+ return stopChain(NextResponse.redirect(destination2));
33
+ }
34
+ const mapped = mapLegacyAccountRoute(pathname, searchParams);
35
+ if (!mapped) return continueChain();
36
+ const destination = new URL(mapped.pathname, pagesUrl);
37
+ destination.search = mapped.searchParams.toString();
38
+ return stopChain(NextResponse.redirect(destination));
39
+ };
40
+ }
41
+ export {
42
+ createLegacyAccountRoutesMiddleware
43
+ };
44
+ //# sourceMappingURL=create-legacy-account-routes-middleware.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/middlewares/create-legacy-account-routes-middleware.ts"],"sourcesContent":["import { NextRequest, NextResponse } from 'next/server';\n\nimport { continueChain, MiddlewareFunction, stopChain } from './types';\nimport { isRouteEquals } from './is-route-equals';\nimport { LEGACY_ACCOUNT_ROUTES } from '../modules/accounts/constants/legacy-account-routes.constants';\nimport { mapLegacyAccountRoute } from '../modules/accounts/utils/map-legacy-account-route';\nimport { whitelabelService } from '../modules/whitelabel/services/whitelabel.service';\nimport { isSameSiteUrl, resolveSafeRedirect } from '../utils/redirect';\n\ninterface CreateLegacyAccountRoutesMiddlewareOptions {\n authRoutes: string[];\n}\n\nexport function createLegacyAccountRoutesMiddleware(\n options: CreateLegacyAccountRoutesMiddlewareOptions\n): MiddlewareFunction {\n return async (request: NextRequest) => {\n const { pathname, searchParams } = request.nextUrl;\n const token = process.env.DUMMY_AUTH_TOKEN || request.cookies.get('greatapps')?.value;\n if (!token) return continueChain();\n\n const isAuthRoute = isRouteEquals(pathname, options.authRoutes);\n const isLegacyRoute = LEGACY_ACCOUNT_ROUTES.includes(pathname);\n if (!isAuthRoute && !isLegacyRoute) return continueChain();\n\n const host = request.headers.get('host') || '';\n const whitelabel = await whitelabelService.getTokenByDomain(host).catch(() => null);\n const pagesUrl = whitelabel?.pages_url;\n\n if (!pagesUrl || !isSameSiteUrl(pagesUrl, host)) {\n console.error('[legacy-account-routes] pages_url ausente ou fora do site do host da requisição', {\n host,\n pathname,\n whitelabelId: whitelabel?.id,\n pagesUrl,\n });\n return continueChain();\n }\n\n if (isAuthRoute) {\n const redirect = searchParams.get('redirect');\n const target = resolveSafeRedirect(redirect, host.split(':')[0], pagesUrl);\n const destination = target.startsWith('/') ? new URL(target, pagesUrl) : new URL(target);\n return stopChain(NextResponse.redirect(destination));\n }\n\n const mapped = mapLegacyAccountRoute(pathname, searchParams);\n if (!mapped) return continueChain();\n\n const destination = new URL(mapped.pathname, pagesUrl);\n destination.search = mapped.searchParams.toString();\n return stopChain(NextResponse.redirect(destination));\n };\n}\n"],"mappings":"AAAA,SAAsB,oBAAoB;AAE1C,SAAS,eAAmC,iBAAiB;AAC7D,SAAS,qBAAqB;AAC9B,SAAS,6BAA6B;AACtC,SAAS,6BAA6B;AACtC,SAAS,yBAAyB;AAClC,SAAS,eAAe,2BAA2B;AAM5C,SAAS,oCACd,SACoB;AACpB,SAAO,OAAO,YAAyB;AACrC,UAAM,EAAE,UAAU,aAAa,IAAI,QAAQ;AAC3C,UAAM,QAAQ,QAAQ,IAAI,oBAAoB,QAAQ,QAAQ,IAAI,WAAW,GAAG;AAChF,QAAI,CAAC,MAAO,QAAO,cAAc;AAEjC,UAAM,cAAc,cAAc,UAAU,QAAQ,UAAU;AAC9D,UAAM,gBAAgB,sBAAsB,SAAS,QAAQ;AAC7D,QAAI,CAAC,eAAe,CAAC,cAAe,QAAO,cAAc;AAEzD,UAAM,OAAO,QAAQ,QAAQ,IAAI,MAAM,KAAK;AAC5C,UAAM,aAAa,MAAM,kBAAkB,iBAAiB,IAAI,EAAE,MAAM,MAAM,IAAI;AAClF,UAAM,WAAW,YAAY;AAE7B,QAAI,CAAC,YAAY,CAAC,cAAc,UAAU,IAAI,GAAG;AAC/C,cAAQ,MAAM,yFAAmF;AAAA,QAC/F;AAAA,QACA;AAAA,QACA,cAAc,YAAY;AAAA,QAC1B;AAAA,MACF,CAAC;AACD,aAAO,cAAc;AAAA,IACvB;AAEA,QAAI,aAAa;AACf,YAAM,WAAW,aAAa,IAAI,UAAU;AAC5C,YAAM,SAAS,oBAAoB,UAAU,KAAK,MAAM,GAAG,EAAE,CAAC,GAAG,QAAQ;AACzE,YAAMA,eAAc,OAAO,WAAW,GAAG,IAAI,IAAI,IAAI,QAAQ,QAAQ,IAAI,IAAI,IAAI,MAAM;AACvF,aAAO,UAAU,aAAa,SAASA,YAAW,CAAC;AAAA,IACrD;AAEA,UAAM,SAAS,sBAAsB,UAAU,YAAY;AAC3D,QAAI,CAAC,OAAQ,QAAO,cAAc;AAElC,UAAM,cAAc,IAAI,IAAI,OAAO,UAAU,QAAQ;AACrD,gBAAY,SAAS,OAAO,aAAa,SAAS;AAClD,WAAO,UAAU,aAAa,SAAS,WAAW,CAAC;AAAA,EACrD;AACF;","names":["destination"]}
@@ -0,0 +1,7 @@
1
+ function isRouteEquals(pathname, routes) {
2
+ return routes.some((route) => pathname === route || pathname.startsWith(`${route}/`));
3
+ }
4
+ export {
5
+ isRouteEquals
6
+ };
7
+ //# sourceMappingURL=is-route-equals.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/middlewares/is-route-equals.ts"],"sourcesContent":["export function isRouteEquals(pathname: string, routes: string[]): boolean {\n return routes.some((route) => pathname === route || pathname.startsWith(`${route}/`));\n}\n"],"mappings":"AAAO,SAAS,cAAc,UAAkB,QAA2B;AACzE,SAAO,OAAO,KAAK,CAAC,UAAU,aAAa,SAAS,SAAS,WAAW,GAAG,KAAK,GAAG,CAAC;AACtF;","names":[]}
@@ -54,7 +54,23 @@ async function deleteAccountAction(data) {
54
54
  return safeMutationAction(() => accountService.deleteAccount(data));
55
55
  }
56
56
  async function createAccountUserAction(user) {
57
- return safeMutationAction(() => accountService.createAccountUser(user));
57
+ return safeMutationAction(async () => {
58
+ const userResult = await findUserById();
59
+ const profile = userResult.success ? userResult.data?.profile : void 0;
60
+ if (profile !== UserProfile.owner && profile !== UserProfile.admin) {
61
+ throw new ApiError("Voc\xEA n\xE3o tem permiss\xE3o para executar esta a\xE7\xE3o", "FORBIDDEN", 403);
62
+ }
63
+ return accountService.createAccountUser(user);
64
+ });
65
+ }
66
+ async function checkUserExistsAction(email) {
67
+ return safeServerAction(() => accountService.checkUserExists(email));
68
+ }
69
+ async function addUserProjectsAction(userId, projectIds) {
70
+ return safeMutationAction(() => accountService.addUserProjects(userId, projectIds));
71
+ }
72
+ async function removeUserProjectsAction(userId, projectIds) {
73
+ return safeMutationAction(() => accountService.removeUserProjects(userId, projectIds));
58
74
  }
59
75
  async function changePasswordAction(data) {
60
76
  return safeMutationAction(() => accountService.changePassword(data));
@@ -94,7 +110,9 @@ async function disableTwoFactorAction(code) {
94
110
  });
95
111
  }
96
112
  export {
113
+ addUserProjectsAction,
97
114
  changePasswordAction,
115
+ checkUserExistsAction,
98
116
  confirmEmailChangeAction,
99
117
  confirmPhoneChangeAction,
100
118
  confirmTwoFactorAction,
@@ -104,6 +122,7 @@ export {
104
122
  disableTwoFactorAction,
105
123
  generateTwoFactorAction,
106
124
  listAccountUsersAction,
125
+ removeUserProjectsAction,
107
126
  requestEmailChangeAction,
108
127
  requestPhoneChangeAction,
109
128
  updateAccountAction,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/modules/accounts/actions/account-management.action.ts"],"sourcesContent":["'use server';\n\nimport { safeServerAction } from '../../../utils/safeServerAction';\nimport { safeMutationAction } from '../../../utils/safeMutationAction';\nimport { accountService } from '../services/account.service';\nimport type {\n AccountUsersPaginationParams,\n ChangePasswordRequest,\n CreateAccountUserRequest,\n DeleteAccountRequest,\n UpdateAccountRequest,\n UpdateAccountUserRequest,\n UpdateBillingDataRequest,\n} from '../types';\nimport { twoFactorService } from '../services/two-factor.service';\nimport { findUserById } from '../../users/action/find-user-by-id.action';\nimport { UserProfile } from '../../users/schema';\nimport { ApiError } from '../../../infra/api/types';\n\nexport async function listAccountUsersAction(params?: AccountUsersPaginationParams) {\n return safeServerAction(async () => {\n const { users, total } = await accountService.listAccountUsers(params);\n return { data: users, total };\n });\n}\n\nexport async function updateUserAction(user: UpdateAccountUserRequest) {\n return safeMutationAction(() => accountService.updateAccountUser(user));\n}\n\nexport async function updateAccountUserByIdAction(\n userId: number,\n user: UpdateAccountUserRequest\n) {\n return safeMutationAction(() => accountService.updateAccountUserById(userId, user));\n}\n\nexport async function updateAccountAction(data: UpdateAccountRequest) {\n return safeMutationAction(async () => {\n if (data.name !== undefined) {\n const userResult = await findUserById();\n if (!userResult.success || userResult.data?.profile !== UserProfile.owner) {\n throw new ApiError(\n 'Apenas o proprietário da conta pode alterar o nome da empresa',\n 'FORBIDDEN',\n 403\n );\n }\n }\n\n return accountService.updateAccount(data);\n });\n}\n\n/**\n * Cadastro de cobrança/fiscal. Restrito a owner/admin — mesmo recorte de\n * `manage_subscriptions` no `assertManagementPermission`, replicado aqui pra não\n * arrastar a checagem de assinatura vigente junto (a conta pode estar em atraso\n * e ainda assim precisa poder regularizar o cadastro).\n */\nexport async function updateBillingDataAction(data: UpdateBillingDataRequest) {\n return safeMutationAction(async () => {\n const userResult = await findUserById();\n const profile = userResult.success ? userResult.data?.profile : undefined;\n\n if (profile !== UserProfile.owner && profile !== UserProfile.admin) {\n throw new ApiError(\n 'Apenas o proprietário ou um administrador pode alterar os dados de cobrança',\n 'FORBIDDEN',\n 403\n );\n }\n\n return accountService.updateAccount(data);\n });\n}\n\nexport async function deleteAccountUserAction(userId: number) {\n return safeMutationAction(() => accountService.deleteAccountUser(userId));\n}\n\nexport async function deleteAccountAction(data: DeleteAccountRequest) {\n return safeMutationAction(() => accountService.deleteAccount(data));\n}\n\nexport async function createAccountUserAction(user: CreateAccountUserRequest) {\n return safeMutationAction(() => accountService.createAccountUser(user));\n}\n\nexport async function changePasswordAction(data: ChangePasswordRequest) {\n return safeMutationAction(() => accountService.changePassword(data));\n}\n\nexport async function requestEmailChangeAction(newEmail: string) {\n return safeMutationAction(() => accountService.requestContactReset('email', newEmail));\n}\n\nexport async function confirmEmailChangeAction(token: string, newEmail: string) {\n return safeMutationAction(() => accountService.confirmContactReset('email', token, newEmail));\n}\n\nexport async function requestPhoneChangeAction(newPhone: string, ddi?: string) {\n return safeMutationAction(() => accountService.requestContactReset('phone', newPhone, ddi));\n}\n\nexport async function confirmPhoneChangeAction(token: string, newPhone: string, ddi?: string) {\n return safeMutationAction(() => accountService.confirmContactReset('phone', token, newPhone, ddi));\n}\n\nexport async function generateTwoFactorAction() {\n return safeMutationAction(async () => {\n const result = await twoFactorService.generate();\n return {\n qrcode: result.data.qrcode,\n backupCodes: result.data.backup_codes,\n };\n });\n}\n\nexport async function confirmTwoFactorAction(code: string) {\n return safeMutationAction(async () => {\n await twoFactorService.confirm(code);\n await accountService.updateAccountUser({ two_factor_authentication: true });\n });\n}\n\nexport async function disableTwoFactorAction(code: string) {\n return safeMutationAction(async () => {\n await twoFactorService.verify(code);\n await twoFactorService.disable();\n await accountService.updateAccountUser({ two_factor_authentication: false });\n });\n}\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../../../../src/modules/accounts/actions/account-management.action.ts"],"sourcesContent":["'use server';\n\nimport { safeServerAction } from '../../../utils/safeServerAction';\nimport { safeMutationAction } from '../../../utils/safeMutationAction';\nimport { accountService } from '../services/account.service';\nimport type {\n AccountUsersPaginationParams,\n ChangePasswordRequest,\n CreateAccountUserRequest,\n DeleteAccountRequest,\n UpdateAccountRequest,\n UpdateAccountUserRequest,\n UpdateBillingDataRequest,\n} from '../types';\nimport { twoFactorService } from '../services/two-factor.service';\nimport { findUserById } from '../../users/action/find-user-by-id.action';\nimport { UserProfile } from '../../users/schema';\nimport { ApiError } from '../../../infra/api/types';\n\nexport async function listAccountUsersAction(params?: AccountUsersPaginationParams) {\n return safeServerAction(async () => {\n const { users, total } = await accountService.listAccountUsers(params);\n return { data: users, total };\n });\n}\n\nexport async function updateUserAction(user: UpdateAccountUserRequest) {\n return safeMutationAction(() => accountService.updateAccountUser(user));\n}\n\nexport async function updateAccountUserByIdAction(\n userId: number,\n user: UpdateAccountUserRequest\n) {\n return safeMutationAction(() => accountService.updateAccountUserById(userId, user));\n}\n\nexport async function updateAccountAction(data: UpdateAccountRequest) {\n return safeMutationAction(async () => {\n if (data.name !== undefined) {\n const userResult = await findUserById();\n if (!userResult.success || userResult.data?.profile !== UserProfile.owner) {\n throw new ApiError(\n 'Apenas o proprietário da conta pode alterar o nome da empresa',\n 'FORBIDDEN',\n 403\n );\n }\n }\n\n return accountService.updateAccount(data);\n });\n}\n\n/**\n * Cadastro de cobrança/fiscal. Restrito a owner/admin — mesmo recorte de\n * `manage_subscriptions` no `assertManagementPermission`, replicado aqui pra não\n * arrastar a checagem de assinatura vigente junto (a conta pode estar em atraso\n * e ainda assim precisa poder regularizar o cadastro).\n */\nexport async function updateBillingDataAction(data: UpdateBillingDataRequest) {\n return safeMutationAction(async () => {\n const userResult = await findUserById();\n const profile = userResult.success ? userResult.data?.profile : undefined;\n\n if (profile !== UserProfile.owner && profile !== UserProfile.admin) {\n throw new ApiError(\n 'Apenas o proprietário ou um administrador pode alterar os dados de cobrança',\n 'FORBIDDEN',\n 403\n );\n }\n\n return accountService.updateAccount(data);\n });\n}\n\nexport async function deleteAccountUserAction(userId: number) {\n return safeMutationAction(() => accountService.deleteAccountUser(userId));\n}\n\nexport async function deleteAccountAction(data: DeleteAccountRequest) {\n return safeMutationAction(() => accountService.deleteAccount(data));\n}\n\nexport async function createAccountUserAction(user: CreateAccountUserRequest) {\n return safeMutationAction(async () => {\n const userResult = await findUserById();\n const profile = userResult.success ? userResult.data?.profile : undefined;\n\n if (profile !== UserProfile.owner && profile !== UserProfile.admin) {\n throw new ApiError('Você não tem permissão para executar esta ação', 'FORBIDDEN', 403);\n }\n\n return accountService.createAccountUser(user);\n });\n}\n\nexport async function checkUserExistsAction(email: string) {\n return safeServerAction(() => accountService.checkUserExists(email));\n}\n\nexport async function addUserProjectsAction(userId: number, projectIds: number[]) {\n return safeMutationAction(() => accountService.addUserProjects(userId, projectIds));\n}\n\nexport async function removeUserProjectsAction(userId: number, projectIds: number[]) {\n return safeMutationAction(() => accountService.removeUserProjects(userId, projectIds));\n}\n\nexport async function changePasswordAction(data: ChangePasswordRequest) {\n return safeMutationAction(() => accountService.changePassword(data));\n}\n\nexport async function requestEmailChangeAction(newEmail: string) {\n return safeMutationAction(() => accountService.requestContactReset('email', newEmail));\n}\n\nexport async function confirmEmailChangeAction(token: string, newEmail: string) {\n return safeMutationAction(() => accountService.confirmContactReset('email', token, newEmail));\n}\n\nexport async function requestPhoneChangeAction(newPhone: string, ddi?: string) {\n return safeMutationAction(() => accountService.requestContactReset('phone', newPhone, ddi));\n}\n\nexport async function confirmPhoneChangeAction(token: string, newPhone: string, ddi?: string) {\n return safeMutationAction(() => accountService.confirmContactReset('phone', token, newPhone, ddi));\n}\n\nexport async function generateTwoFactorAction() {\n return safeMutationAction(async () => {\n const result = await twoFactorService.generate();\n return {\n qrcode: result.data.qrcode,\n backupCodes: result.data.backup_codes,\n };\n });\n}\n\nexport async function confirmTwoFactorAction(code: string) {\n return safeMutationAction(async () => {\n await twoFactorService.confirm(code);\n await accountService.updateAccountUser({ two_factor_authentication: true });\n });\n}\n\nexport async function disableTwoFactorAction(code: string) {\n return safeMutationAction(async () => {\n await twoFactorService.verify(code);\n await twoFactorService.disable();\n await accountService.updateAccountUser({ two_factor_authentication: false });\n });\n}\n"],"mappings":"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","names":[]}
@@ -0,0 +1,9 @@
1
+ const ACCOUNT_HUB_SECTION_PARAM = "account";
2
+ const ACCOUNT_HUB_FLOW_PARAM = "flow";
3
+ const ACCOUNT_HUB_COUPON_PARAM = "coupon";
4
+ export {
5
+ ACCOUNT_HUB_COUPON_PARAM,
6
+ ACCOUNT_HUB_FLOW_PARAM,
7
+ ACCOUNT_HUB_SECTION_PARAM
8
+ };
9
+ //# sourceMappingURL=account-hub-link.constants.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/modules/accounts/constants/account-hub-link.constants.ts"],"sourcesContent":["export const ACCOUNT_HUB_SECTION_PARAM = 'account';\nexport const ACCOUNT_HUB_FLOW_PARAM = 'flow';\nexport const ACCOUNT_HUB_COUPON_PARAM = 'coupon';\n"],"mappings":"AAAO,MAAM,4BAA4B;AAClC,MAAM,yBAAyB;AAC/B,MAAM,2BAA2B;","names":[]}
@@ -0,0 +1,5 @@
1
+ const LEGACY_ACCOUNT_ROUTES = ["/", "/subscriptions", "/my-projects", "/my-teams", "/affiliates", "/notifications"];
2
+ export {
3
+ LEGACY_ACCOUNT_ROUTES
4
+ };
5
+ //# sourceMappingURL=legacy-account-routes.constants.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/modules/accounts/constants/legacy-account-routes.constants.ts"],"sourcesContent":["export const LEGACY_ACCOUNT_ROUTES = ['/', '/subscriptions', '/my-projects', '/my-teams', '/affiliates', '/notifications'];\n"],"mappings":"AAAO,MAAM,wBAAwB,CAAC,KAAK,kBAAkB,gBAAgB,aAAa,eAAe,gBAAgB;","names":[]}
@@ -0,0 +1,22 @@
1
+ import "server-only";
2
+ import { parseNumericFields } from "../../../infra/route/parse-numeric";
3
+ import { safeRouteHandler } from "../../../infra/route/safe-route-handler";
4
+ import { searchParamsToParams } from "../../../infra/route/search-params";
5
+ import { accountService } from "../services/account.service";
6
+ const NUMERIC_FIELDS = ["page", "limit", "notInProject", "firstId"];
7
+ function createListAccountMembersHandler() {
8
+ return async function GET(req) {
9
+ return safeRouteHandler(
10
+ () => accountService.listAccountMembers(
11
+ parseNumericFields(
12
+ searchParamsToParams(req.nextUrl.searchParams),
13
+ NUMERIC_FIELDS
14
+ )
15
+ )
16
+ );
17
+ };
18
+ }
19
+ export {
20
+ createListAccountMembersHandler
21
+ };
22
+ //# sourceMappingURL=list-account-members.handler.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/modules/accounts/handlers/list-account-members.handler.ts"],"sourcesContent":["import 'server-only';\n\nimport type { NextRequest } from 'next/server';\nimport { parseNumericFields } from '../../../infra/route/parse-numeric';\nimport { safeRouteHandler } from '../../../infra/route/safe-route-handler';\nimport { searchParamsToParams } from '../../../infra/route/search-params';\nimport { accountService } from '../services/account.service';\nimport type { AccountUsersPaginationParams } from '../types';\n\nconst NUMERIC_FIELDS = ['page', 'limit', 'notInProject', 'firstId'] as const;\n\nexport function createListAccountMembersHandler() {\n return async function GET(req: NextRequest) {\n return safeRouteHandler(() =>\n accountService.listAccountMembers(\n parseNumericFields<AccountUsersPaginationParams>(\n searchParamsToParams<AccountUsersPaginationParams>(req.nextUrl.searchParams),\n NUMERIC_FIELDS\n )\n )\n );\n };\n}\n"],"mappings":"AAAA,OAAO;AAGP,SAAS,0BAA0B;AACnC,SAAS,wBAAwB;AACjC,SAAS,4BAA4B;AACrC,SAAS,sBAAsB;AAG/B,MAAM,iBAAiB,CAAC,QAAQ,SAAS,gBAAgB,SAAS;AAE3D,SAAS,kCAAkC;AAChD,SAAO,eAAe,IAAI,KAAkB;AAC1C,WAAO;AAAA,MAAiB,MACtB,eAAe;AAAA,QACb;AAAA,UACE,qBAAmD,IAAI,QAAQ,YAAY;AAAA,UAC3E;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;","names":[]}
@@ -0,0 +1,51 @@
1
+ "use client";
2
+ import { useMutation, useQueryClient } from "@tanstack/react-query";
3
+ import { useTranslations } from "next-intl";
4
+ import { withAction } from "../../../utils/withAction";
5
+ import { useAuthQueryKey } from "../../../hooks/useAuthQueryKey";
6
+ import { addUserProjectsAction } from "../actions/account-management.action";
7
+ import { ACCOUNT_USERS_QUERY_KEY } from "./useAccountManagement";
8
+ function useAddUserProjects() {
9
+ const translate = useTranslations();
10
+ const queryClient = useQueryClient();
11
+ const accountUsersKey = useAuthQueryKey([...ACCOUNT_USERS_QUERY_KEY]);
12
+ const membersKey = useAuthQueryKey([...ACCOUNT_USERS_QUERY_KEY, "members"]);
13
+ return useMutation({
14
+ mutationFn: async (variables) => {
15
+ if (!variables.userId) {
16
+ throw new Error(translate("common.account.workspace.team.invalidUser"));
17
+ }
18
+ if (variables.projects.length === 0) return;
19
+ return withAction(addUserProjectsAction)(
20
+ variables.userId,
21
+ variables.projects.map((project) => project.id)
22
+ );
23
+ },
24
+ onMutate: async (variables) => {
25
+ await queryClient.cancelQueries({ queryKey: membersKey });
26
+ const previousData = queryClient.getQueriesData({ queryKey: membersKey });
27
+ previousData.forEach(([key, data]) => {
28
+ if (!data) return;
29
+ const users = data.users.map((user) => {
30
+ if (user.id !== variables.userId) return user;
31
+ const existingIds = new Set((user.projects || []).map((project) => project.id));
32
+ const projectsToAppend = variables.projects.filter((project) => !existingIds.has(project.id));
33
+ const projects = [...user.projects || [], ...projectsToAppend];
34
+ return { ...user, projects, total_projects: projects.length };
35
+ });
36
+ queryClient.setQueryData(key, { ...data, users });
37
+ });
38
+ return { previousData };
39
+ },
40
+ onError: (_error, _variables, context) => {
41
+ context?.previousData.forEach(([key, data]) => queryClient.setQueryData(key, data));
42
+ },
43
+ onSettled: () => {
44
+ queryClient.invalidateQueries({ queryKey: accountUsersKey });
45
+ }
46
+ });
47
+ }
48
+ export {
49
+ useAddUserProjects
50
+ };
51
+ //# sourceMappingURL=add-user-projects.hook.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/modules/accounts/hooks/add-user-projects.hook.ts"],"sourcesContent":["'use client';\n\nimport { useMutation, useQueryClient, type QueryKey } from '@tanstack/react-query';\nimport { useTranslations } from 'next-intl';\nimport { withAction } from '../../../utils/withAction';\nimport { useAuthQueryKey } from '../../../hooks/useAuthQueryKey';\nimport { addUserProjectsAction } from '../actions/account-management.action';\nimport { ACCOUNT_USERS_QUERY_KEY } from './useAccountManagement';\nimport type { AccountMembersPage } from './use-account-members.hook';\n\ntype AddUserProjectsVariables = {\n userId?: number;\n projects: { id: number; title: string }[];\n};\n\ntype AddUserProjectsContext = {\n previousData: [QueryKey, AccountMembersPage | undefined][];\n};\n\n/** Vincula projetos ao usuário, já refletindo a mudança na lista da equipe antes da resposta. */\nexport function useAddUserProjects() {\n const translate = useTranslations();\n const queryClient = useQueryClient();\n const accountUsersKey = useAuthQueryKey([...ACCOUNT_USERS_QUERY_KEY]);\n const membersKey = useAuthQueryKey([...ACCOUNT_USERS_QUERY_KEY, 'members']);\n\n return useMutation({\n mutationFn: async (variables: AddUserProjectsVariables) => {\n if (!variables.userId) {\n throw new Error(translate('common.account.workspace.team.invalidUser'));\n }\n if (variables.projects.length === 0) return;\n\n return withAction(addUserProjectsAction)(\n variables.userId,\n variables.projects.map((project) => project.id)\n );\n },\n\n onMutate: async (variables): Promise<AddUserProjectsContext> => {\n await queryClient.cancelQueries({ queryKey: membersKey });\n\n const previousData = queryClient.getQueriesData<AccountMembersPage>({ queryKey: membersKey });\n\n previousData.forEach(([key, data]) => {\n if (!data) return;\n\n const users = data.users.map((user) => {\n if (user.id !== variables.userId) return user;\n\n const existingIds = new Set((user.projects || []).map((project) => project.id));\n const projectsToAppend = variables.projects.filter((project) => !existingIds.has(project.id));\n const projects = [...(user.projects || []), ...projectsToAppend];\n\n return { ...user, projects, total_projects: projects.length };\n });\n\n queryClient.setQueryData(key, { ...data, users });\n });\n\n return { previousData };\n },\n\n onError: (_error, _variables, context) => {\n context?.previousData.forEach(([key, data]) => queryClient.setQueryData(key, data));\n },\n\n onSettled: () => {\n queryClient.invalidateQueries({ queryKey: accountUsersKey });\n },\n });\n}\n"],"mappings":";AAEA,SAAS,aAAa,sBAAqC;AAC3D,SAAS,uBAAuB;AAChC,SAAS,kBAAkB;AAC3B,SAAS,uBAAuB;AAChC,SAAS,6BAA6B;AACtC,SAAS,+BAA+B;AAajC,SAAS,qBAAqB;AACnC,QAAM,YAAY,gBAAgB;AAClC,QAAM,cAAc,eAAe;AACnC,QAAM,kBAAkB,gBAAgB,CAAC,GAAG,uBAAuB,CAAC;AACpE,QAAM,aAAa,gBAAgB,CAAC,GAAG,yBAAyB,SAAS,CAAC;AAE1E,SAAO,YAAY;AAAA,IACjB,YAAY,OAAO,cAAwC;AACzD,UAAI,CAAC,UAAU,QAAQ;AACrB,cAAM,IAAI,MAAM,UAAU,2CAA2C,CAAC;AAAA,MACxE;AACA,UAAI,UAAU,SAAS,WAAW,EAAG;AAErC,aAAO,WAAW,qBAAqB;AAAA,QACrC,UAAU;AAAA,QACV,UAAU,SAAS,IAAI,CAAC,YAAY,QAAQ,EAAE;AAAA,MAChD;AAAA,IACF;AAAA,IAEA,UAAU,OAAO,cAA+C;AAC9D,YAAM,YAAY,cAAc,EAAE,UAAU,WAAW,CAAC;AAExD,YAAM,eAAe,YAAY,eAAmC,EAAE,UAAU,WAAW,CAAC;AAE5F,mBAAa,QAAQ,CAAC,CAAC,KAAK,IAAI,MAAM;AACpC,YAAI,CAAC,KAAM;AAEX,cAAM,QAAQ,KAAK,MAAM,IAAI,CAAC,SAAS;AACrC,cAAI,KAAK,OAAO,UAAU,OAAQ,QAAO;AAEzC,gBAAM,cAAc,IAAI,KAAK,KAAK,YAAY,CAAC,GAAG,IAAI,CAAC,YAAY,QAAQ,EAAE,CAAC;AAC9E,gBAAM,mBAAmB,UAAU,SAAS,OAAO,CAAC,YAAY,CAAC,YAAY,IAAI,QAAQ,EAAE,CAAC;AAC5F,gBAAM,WAAW,CAAC,GAAI,KAAK,YAAY,CAAC,GAAI,GAAG,gBAAgB;AAE/D,iBAAO,EAAE,GAAG,MAAM,UAAU,gBAAgB,SAAS,OAAO;AAAA,QAC9D,CAAC;AAED,oBAAY,aAAa,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC;AAAA,MAClD,CAAC;AAED,aAAO,EAAE,aAAa;AAAA,IACxB;AAAA,IAEA,SAAS,CAAC,QAAQ,YAAY,YAAY;AACxC,eAAS,aAAa,QAAQ,CAAC,CAAC,KAAK,IAAI,MAAM,YAAY,aAAa,KAAK,IAAI,CAAC;AAAA,IACpF;AAAA,IAEA,WAAW,MAAM;AACf,kBAAY,kBAAkB,EAAE,UAAU,gBAAgB,CAAC;AAAA,IAC7D;AAAA,EACF,CAAC;AACH;","names":[]}
@@ -0,0 +1,20 @@
1
+ "use client";
2
+ import { useMutation, useQueryClient } from "@tanstack/react-query";
3
+ import { withAction } from "../../../utils/withAction";
4
+ import { useAuthQueryKey } from "../../../hooks/useAuthQueryKey";
5
+ import { createAccountUserAction } from "../actions/account-management.action";
6
+ import { ACCOUNT_USERS_QUERY_KEY } from "./useAccountManagement";
7
+ function useCreateAccountUser() {
8
+ const queryClient = useQueryClient();
9
+ const accountUsersKey = useAuthQueryKey([...ACCOUNT_USERS_QUERY_KEY]);
10
+ return useMutation({
11
+ mutationFn: (user) => withAction(createAccountUserAction)(user),
12
+ onSuccess: () => {
13
+ queryClient.invalidateQueries({ queryKey: accountUsersKey });
14
+ }
15
+ });
16
+ }
17
+ export {
18
+ useCreateAccountUser
19
+ };
20
+ //# sourceMappingURL=create-account-user.hook.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/modules/accounts/hooks/create-account-user.hook.ts"],"sourcesContent":["'use client';\n\nimport { useMutation, useQueryClient } from '@tanstack/react-query';\nimport { withAction } from '../../../utils/withAction';\nimport { useAuthQueryKey } from '../../../hooks/useAuthQueryKey';\nimport { createAccountUserAction } from '../actions/account-management.action';\nimport { ACCOUNT_USERS_QUERY_KEY } from './useAccountManagement';\nimport type { CreateAccountUserRequest } from '../types';\n\n/** Cadastro de usuário da conta (envia o convite por e-mail). Restrito a owner/admin na action. */\nexport function useCreateAccountUser() {\n const queryClient = useQueryClient();\n const accountUsersKey = useAuthQueryKey([...ACCOUNT_USERS_QUERY_KEY]);\n\n return useMutation({\n mutationFn: (user: CreateAccountUserRequest) => withAction(createAccountUserAction)(user),\n onSuccess: () => {\n queryClient.invalidateQueries({ queryKey: accountUsersKey });\n },\n });\n}\n"],"mappings":";AAEA,SAAS,aAAa,sBAAsB;AAC5C,SAAS,kBAAkB;AAC3B,SAAS,uBAAuB;AAChC,SAAS,+BAA+B;AACxC,SAAS,+BAA+B;AAIjC,SAAS,uBAAuB;AACrC,QAAM,cAAc,eAAe;AACnC,QAAM,kBAAkB,gBAAgB,CAAC,GAAG,uBAAuB,CAAC;AAEpE,SAAO,YAAY;AAAA,IACjB,YAAY,CAAC,SAAmC,WAAW,uBAAuB,EAAE,IAAI;AAAA,IACxF,WAAW,MAAM;AACf,kBAAY,kBAAkB,EAAE,UAAU,gBAAgB,CAAC;AAAA,IAC7D;AAAA,EACF,CAAC;AACH;","names":[]}
@@ -0,0 +1,47 @@
1
+ "use client";
2
+ import { useMutation, useQueryClient } from "@tanstack/react-query";
3
+ import { useTranslations } from "next-intl";
4
+ import { withAction } from "../../../utils/withAction";
5
+ import { useAuthQueryKey } from "../../../hooks/useAuthQueryKey";
6
+ import { removeUserProjectsAction } from "../actions/account-management.action";
7
+ import { ACCOUNT_USERS_QUERY_KEY } from "./useAccountManagement";
8
+ function useRemoveUserProjects() {
9
+ const translate = useTranslations();
10
+ const queryClient = useQueryClient();
11
+ const accountUsersKey = useAuthQueryKey([...ACCOUNT_USERS_QUERY_KEY]);
12
+ const membersKey = useAuthQueryKey([...ACCOUNT_USERS_QUERY_KEY, "members"]);
13
+ return useMutation({
14
+ mutationFn: async (variables) => {
15
+ if (!variables.userId) {
16
+ throw new Error(translate("common.account.workspace.team.invalidUserRemove"));
17
+ }
18
+ if (variables.projectIds.length === 0) return;
19
+ return withAction(removeUserProjectsAction)(variables.userId, variables.projectIds);
20
+ },
21
+ onMutate: async (variables) => {
22
+ await queryClient.cancelQueries({ queryKey: membersKey });
23
+ const previousData = queryClient.getQueriesData({ queryKey: membersKey });
24
+ const idsToRemove = new Set(variables.projectIds);
25
+ previousData.forEach(([key, data]) => {
26
+ if (!data) return;
27
+ const users = data.users.map((user) => {
28
+ if (user.id !== variables.userId) return user;
29
+ const projects = (user.projects || []).filter((project) => !idsToRemove.has(project.id));
30
+ return { ...user, projects, total_projects: projects.length };
31
+ });
32
+ queryClient.setQueryData(key, { ...data, users });
33
+ });
34
+ return { previousData };
35
+ },
36
+ onError: (_error, _variables, context) => {
37
+ context?.previousData.forEach(([key, data]) => queryClient.setQueryData(key, data));
38
+ },
39
+ onSettled: () => {
40
+ queryClient.invalidateQueries({ queryKey: accountUsersKey });
41
+ }
42
+ });
43
+ }
44
+ export {
45
+ useRemoveUserProjects
46
+ };
47
+ //# sourceMappingURL=remove-user-projects.hook.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/modules/accounts/hooks/remove-user-projects.hook.ts"],"sourcesContent":["'use client';\n\nimport { useMutation, useQueryClient, type QueryKey } from '@tanstack/react-query';\nimport { useTranslations } from 'next-intl';\nimport { withAction } from '../../../utils/withAction';\nimport { useAuthQueryKey } from '../../../hooks/useAuthQueryKey';\nimport { removeUserProjectsAction } from '../actions/account-management.action';\nimport { ACCOUNT_USERS_QUERY_KEY } from './useAccountManagement';\nimport type { AccountMembersPage } from './use-account-members.hook';\n\ntype RemoveUserProjectsVariables = {\n userId?: number;\n projectIds: number[];\n};\n\ntype RemoveUserProjectsContext = {\n previousData: [QueryKey, AccountMembersPage | undefined][];\n};\n\n/** Desvincula projetos do usuário, já refletindo a mudança na lista da equipe antes da resposta. */\nexport function useRemoveUserProjects() {\n const translate = useTranslations();\n const queryClient = useQueryClient();\n const accountUsersKey = useAuthQueryKey([...ACCOUNT_USERS_QUERY_KEY]);\n const membersKey = useAuthQueryKey([...ACCOUNT_USERS_QUERY_KEY, 'members']);\n\n return useMutation({\n mutationFn: async (variables: RemoveUserProjectsVariables) => {\n if (!variables.userId) {\n throw new Error(translate('common.account.workspace.team.invalidUserRemove'));\n }\n if (variables.projectIds.length === 0) return;\n\n return withAction(removeUserProjectsAction)(variables.userId, variables.projectIds);\n },\n\n onMutate: async (variables): Promise<RemoveUserProjectsContext> => {\n await queryClient.cancelQueries({ queryKey: membersKey });\n\n const previousData = queryClient.getQueriesData<AccountMembersPage>({ queryKey: membersKey });\n const idsToRemove = new Set(variables.projectIds);\n\n previousData.forEach(([key, data]) => {\n if (!data) return;\n\n const users = data.users.map((user) => {\n if (user.id !== variables.userId) return user;\n\n const projects = (user.projects || []).filter((project) => !idsToRemove.has(project.id));\n\n return { ...user, projects, total_projects: projects.length };\n });\n\n queryClient.setQueryData(key, { ...data, users });\n });\n\n return { previousData };\n },\n\n onError: (_error, _variables, context) => {\n context?.previousData.forEach(([key, data]) => queryClient.setQueryData(key, data));\n },\n\n onSettled: () => {\n queryClient.invalidateQueries({ queryKey: accountUsersKey });\n },\n });\n}\n"],"mappings":";AAEA,SAAS,aAAa,sBAAqC;AAC3D,SAAS,uBAAuB;AAChC,SAAS,kBAAkB;AAC3B,SAAS,uBAAuB;AAChC,SAAS,gCAAgC;AACzC,SAAS,+BAA+B;AAajC,SAAS,wBAAwB;AACtC,QAAM,YAAY,gBAAgB;AAClC,QAAM,cAAc,eAAe;AACnC,QAAM,kBAAkB,gBAAgB,CAAC,GAAG,uBAAuB,CAAC;AACpE,QAAM,aAAa,gBAAgB,CAAC,GAAG,yBAAyB,SAAS,CAAC;AAE1E,SAAO,YAAY;AAAA,IACjB,YAAY,OAAO,cAA2C;AAC5D,UAAI,CAAC,UAAU,QAAQ;AACrB,cAAM,IAAI,MAAM,UAAU,iDAAiD,CAAC;AAAA,MAC9E;AACA,UAAI,UAAU,WAAW,WAAW,EAAG;AAEvC,aAAO,WAAW,wBAAwB,EAAE,UAAU,QAAQ,UAAU,UAAU;AAAA,IACpF;AAAA,IAEA,UAAU,OAAO,cAAkD;AACjE,YAAM,YAAY,cAAc,EAAE,UAAU,WAAW,CAAC;AAExD,YAAM,eAAe,YAAY,eAAmC,EAAE,UAAU,WAAW,CAAC;AAC5F,YAAM,cAAc,IAAI,IAAI,UAAU,UAAU;AAEhD,mBAAa,QAAQ,CAAC,CAAC,KAAK,IAAI,MAAM;AACpC,YAAI,CAAC,KAAM;AAEX,cAAM,QAAQ,KAAK,MAAM,IAAI,CAAC,SAAS;AACrC,cAAI,KAAK,OAAO,UAAU,OAAQ,QAAO;AAEzC,gBAAM,YAAY,KAAK,YAAY,CAAC,GAAG,OAAO,CAAC,YAAY,CAAC,YAAY,IAAI,QAAQ,EAAE,CAAC;AAEvF,iBAAO,EAAE,GAAG,MAAM,UAAU,gBAAgB,SAAS,OAAO;AAAA,QAC9D,CAAC;AAED,oBAAY,aAAa,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC;AAAA,MAClD,CAAC;AAED,aAAO,EAAE,aAAa;AAAA,IACxB;AAAA,IAEA,SAAS,CAAC,QAAQ,YAAY,YAAY;AACxC,eAAS,aAAa,QAAQ,CAAC,CAAC,KAAK,IAAI,MAAM,YAAY,aAAa,KAAK,IAAI,CAAC;AAAA,IACpF;AAAA,IAEA,WAAW,MAAM;AACf,kBAAY,kBAAkB,EAAE,UAAU,gBAAgB,CAAC;AAAA,IAC7D;AAAA,EACF,CAAC;AACH;","names":[]}
@@ -0,0 +1,20 @@
1
+ "use client";
2
+ import { keepPreviousData, useQuery } from "@tanstack/react-query";
3
+ import { apiFetch } from "../../../infra/http/api-fetch";
4
+ import { useAuthQueryKey } from "../../../hooks/useAuthQueryKey";
5
+ import { ACCOUNT_USERS_QUERY_KEY } from "./useAccountManagement";
6
+ function useAccountMembers(params, options = {}) {
7
+ const queryKey = useAuthQueryKey([...ACCOUNT_USERS_QUERY_KEY, "members", params]);
8
+ return useQuery({
9
+ queryKey,
10
+ queryFn: ({ signal }) => apiFetch("/api/account/members", { params, signal }),
11
+ placeholderData: keepPreviousData,
12
+ staleTime: 6e4,
13
+ retry: false,
14
+ enabled: options.enabled ?? true
15
+ });
16
+ }
17
+ export {
18
+ useAccountMembers
19
+ };
20
+ //# sourceMappingURL=use-account-members.hook.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/modules/accounts/hooks/use-account-members.hook.ts"],"sourcesContent":["'use client';\n\nimport { keepPreviousData, useQuery } from '@tanstack/react-query';\nimport { apiFetch } from '../../../infra/http/api-fetch';\nimport { useAuthQueryKey } from '../../../hooks/useAuthQueryKey';\nimport type { User } from '../../users/schema';\nimport type { AccountUsersPaginationParams } from '../types';\nimport { ACCOUNT_USERS_QUERY_KEY } from './useAccountManagement';\n\nexport interface AccountMembersPage {\n users: User[];\n total: number;\n}\n\n/**\n * Lista paginada da equipe (`/api/account/members`). Fica sob `ACCOUNT_USERS_QUERY_KEY` e no formato\n * `{ users, total }` para receber as invalidações e updates otimistas das mutations de usuário.\n */\nexport function useAccountMembers(params: AccountUsersPaginationParams, options: { enabled?: boolean } = {}) {\n const queryKey = useAuthQueryKey([...ACCOUNT_USERS_QUERY_KEY, 'members', params]);\n\n return useQuery({\n queryKey,\n queryFn: ({ signal }) =>\n apiFetch<AccountMembersPage>('/api/account/members', { params, signal }),\n placeholderData: keepPreviousData,\n staleTime: 60_000,\n retry: false,\n enabled: options.enabled ?? true,\n });\n}\n"],"mappings":";AAEA,SAAS,kBAAkB,gBAAgB;AAC3C,SAAS,gBAAgB;AACzB,SAAS,uBAAuB;AAGhC,SAAS,+BAA+B;AAWjC,SAAS,kBAAkB,QAAsC,UAAiC,CAAC,GAAG;AAC3G,QAAM,WAAW,gBAAgB,CAAC,GAAG,yBAAyB,WAAW,MAAM,CAAC;AAEhF,SAAO,SAAS;AAAA,IACd;AAAA,IACA,SAAS,CAAC,EAAE,OAAO,MACjB,SAA6B,wBAAwB,EAAE,QAAQ,OAAO,CAAC;AAAA,IACzE,iBAAiB;AAAA,IACjB,WAAW;AAAA,IACX,OAAO;AAAA,IACP,SAAS,QAAQ,WAAW;AAAA,EAC9B,CAAC;AACH;","names":[]}
@@ -2,6 +2,7 @@ import "server-only";
2
2
  import { api } from "../../../infra/api/client";
3
3
  import { ApiError } from "../../../infra/api/types";
4
4
  import { buildQueryParams } from "../../../infra/utils/params";
5
+ import { assertAccountNotFrozen } from "../../auth/utils/assert-account-not-frozen";
5
6
  import { getUserContext } from "../../auth/utils/get-user-context";
6
7
  import { fileToBase64 } from "../../../utils/file/index";
7
8
  import { buildWlOverride } from "../../auth/utils/build-wl-override";
@@ -36,6 +37,28 @@ class AccountService {
36
37
  total: response.total || 0
37
38
  };
38
39
  }
40
+ /**
41
+ * Usuários da conta com projetos (`total_projects`, `projects`), escopados ao usuário logado:
42
+ * collaborator/viewer só veem quem divide projeto com eles.
43
+ */
44
+ async listAccountMembers(params) {
45
+ const { id_account, id_user } = await getUserContext();
46
+ const queryParams = buildQueryParams({ ...params, scopeUserId: id_user });
47
+ const response = await api.apps.get(
48
+ `/accounts/${id_account}/users?${queryParams}`
49
+ );
50
+ if (response.status === 0) {
51
+ throw new ApiError(
52
+ response.message || "Erro ao listar usu\xE1rios",
53
+ "LIST_ACCOUNT_USERS_FAILED",
54
+ 400
55
+ );
56
+ }
57
+ return {
58
+ users: response.data || [],
59
+ total: response.total || 0
60
+ };
61
+ }
39
62
  async changeUserPhoto(userId, photo) {
40
63
  const { id_account } = await getUserContext();
41
64
  const base64 = await fileToBase64(photo);
@@ -162,6 +185,42 @@ class AccountService {
162
185
  );
163
186
  }
164
187
  }
188
+ /** Checagem de e-mail já cadastrado, usada no cadastro de usuário antes de avançar de passo. */
189
+ async checkUserExists(email) {
190
+ const response = await api.apps.post("/users/action/exists", { email });
191
+ return { exists: response.exist };
192
+ }
193
+ async addUserProjects(userId, projectIds) {
194
+ await assertAccountNotFrozen();
195
+ const { id_account } = await getUserContext();
196
+ const response = await api.apps.post(
197
+ `/accounts/${id_account}/users/${userId}/action/addProjectsBatch`,
198
+ { projects: projectIds }
199
+ );
200
+ if (response.status === 0) {
201
+ throw new ApiError(
202
+ response.message || "Erro ao vincular projetos ao usu\xE1rio",
203
+ "ADD_USER_PROJECTS_FAILED",
204
+ 400
205
+ );
206
+ }
207
+ return response;
208
+ }
209
+ async removeUserProjects(userId, projectIds) {
210
+ const { id_account } = await getUserContext();
211
+ const response = await api.apps.post(
212
+ `/accounts/${id_account}/users/${userId}/action/removeProjectsBatch`,
213
+ { projects: projectIds }
214
+ );
215
+ if (response.status === 0) {
216
+ throw new ApiError(
217
+ response.message || "Erro ao desvincular projetos do usu\xE1rio",
218
+ "REMOVE_USER_PROJECTS_FAILED",
219
+ 400
220
+ );
221
+ }
222
+ return response;
223
+ }
165
224
  async changePassword(data) {
166
225
  const { id_account, id_user } = await getUserContext();
167
226
  const response = await api.apps.put(
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/modules/accounts/services/account.service.ts"],"sourcesContent":["import 'server-only';\n\nimport { api } from '../../../infra/api/client';\nimport { ApiError } from '../../../infra/api/types';\nimport { buildQueryParams } from '../../../infra/utils/params';\nimport { getUserContext } from '../../auth/utils/get-user-context';\nimport { fileToBase64 } from '../../../utils/file/index';\nimport type { RequestConfig } from '../../../infra/api/client';\nimport { buildWlOverride } from '../../auth/utils/build-wl-override';\nimport type {\n Account,\n AccountUsersPaginationParams,\n ChangePasswordRequest,\n ChangePasswordResponse,\n ChangeUserPhotoResponse,\n CreateAccountUserRequest,\n CreateAccountUserResponse,\n DeleteAccountRequest,\n DeleteAccountResponse,\n DeleteAccountUserResponse,\n GetAccountDataResponse,\n ListAccountUsersResponse,\n UpdateAccountRequest,\n UpdateAccountResponse,\n UpdateAccountUserRequest,\n UpdateAccountUserResponse,\n} from '../types';\n\nclass AccountService {\n async findCurrentAccount(config?: RequestConfig): Promise<Account> {\n const { id_wl, id_account } = await getUserContext();\n const effectiveConfig = config ?? await buildWlOverride(id_wl);\n const response = await api.apps.get<GetAccountDataResponse>(`/accounts/${id_account}`, effectiveConfig);\n\n if (response.status === 0 || !response.data?.[0]) {\n throw new ApiError(\n response.message || 'Erro ao buscar dados da conta',\n 'GET_ACCOUNT_FAILED',\n 400\n );\n }\n\n return response.data[0];\n }\n\n async listAccountUsers(params?: Partial<AccountUsersPaginationParams>) {\n const { id_account } = await getUserContext();\n const queryParams = buildQueryParams(params);\n const endpoint = `/accounts/${id_account}/users?${queryParams}`;\n const response = await api.apps.get<ListAccountUsersResponse>(endpoint);\n\n if (response.status === 0) {\n throw new ApiError(\n response.message || 'Erro ao listar usuários',\n 'LIST_ACCOUNT_USERS_FAILED',\n 400\n );\n }\n\n return {\n users: response.data || [],\n total: response.total || 0,\n };\n }\n\n async changeUserPhoto(userId: number, photo: File): Promise<ChangeUserPhotoResponse> {\n const { id_account } = await getUserContext();\n const base64 = await fileToBase64(photo);\n const response = await api.apps.put<ChangeUserPhotoResponse>(\n `/accounts/${id_account}/users/${userId}/file/photo`,\n { file: base64 }\n );\n\n if (response.status === 0) {\n throw new ApiError(\n response.message || 'Erro ao mudar foto do usuário',\n 'CHANGE_USER_PHOTO_FAILED',\n 400\n );\n }\n\n return response;\n }\n\n async deleteAccountUser(userId: number): Promise<DeleteAccountUserResponse> {\n const { id_account } = await getUserContext();\n const response = await api.apps.delete<DeleteAccountUserResponse>(\n `/accounts/${id_account}/users/${userId}`\n );\n\n if (response.status === 0) {\n throw new ApiError(response.message || 'Erro ao deletar usuário', 'DELETE_USER_FAILED', 400);\n }\n\n return response;\n }\n\n async deleteAccount(data: DeleteAccountRequest): Promise<DeleteAccountResponse> {\n const { id_account } = await getUserContext();\n const response = await api.apps.delete<DeleteAccountResponse>(\n `/accounts/${id_account}`,\n { body: JSON.stringify(data) }\n );\n\n if (response.status === 0) {\n throw new ApiError(response.message || 'Erro ao deletar conta', 'DELETE_ACCOUNT_FAILED', 400);\n }\n\n return response;\n }\n\n async createAccountUser(user: CreateAccountUserRequest): Promise<CreateAccountUserResponse> {\n const { id_account } = await getUserContext();\n const response = await api.apps.post<CreateAccountUserResponse>(\n `/accounts/${id_account}/users`,\n {\n ...user,\n photo: user.photo ? await fileToBase64(user.photo) : null,\n }\n );\n\n if (response.status === 0) {\n throw new ApiError(response.message || 'Erro ao criar usuário', 'CREATE_USER_FAILED', 400);\n }\n\n return response;\n }\n\n private async resolvePhotoField(user: UpdateAccountUserRequest): Promise<{ photo?: string | null }> {\n if (user.photo === undefined) return {};\n const photo =\n user.photo != null && typeof user.photo !== 'string'\n ? await fileToBase64(user.photo)\n : user.photo;\n return { photo };\n }\n\n async updateAccountUser(user: UpdateAccountUserRequest): Promise<UpdateAccountUserResponse> {\n const { id_account, id_user } = await getUserContext();\n const response = await api.apps.put<UpdateAccountUserResponse>(\n `/accounts/${id_account}/users/${id_user}`,\n { ...user, ...(await this.resolvePhotoField(user)) }\n );\n\n if (response.status === 0) {\n throw new ApiError(\n response.message || 'Erro ao atualizar usuário',\n 'UPDATE_USER_FAILED',\n 400\n );\n }\n\n return response;\n }\n\n async updateAccountUserById(\n userId: number,\n user: UpdateAccountUserRequest\n ): Promise<UpdateAccountUserResponse> {\n const { id_account } = await getUserContext();\n const response = await api.apps.put<UpdateAccountUserResponse>(\n `/accounts/${id_account}/users/${userId}`,\n { ...user, ...(await this.resolvePhotoField(user)) }\n );\n\n if (response.status === 0) {\n throw new ApiError(\n response.message || 'Erro ao atualizar usuário',\n 'UPDATE_USER_FAILED',\n 400\n );\n }\n\n return response;\n }\n\n async updateAccount(data: UpdateAccountRequest): Promise<UpdateAccountResponse> {\n const { id_account } = await getUserContext();\n const response = await api.apps.put<UpdateAccountResponse>(`/accounts/${id_account}`, data);\n\n if (response.status === 0) {\n throw new ApiError(\n response.message || 'Erro ao atualizar conta',\n 'UPDATE_ACCOUNT_FAILED',\n 400\n );\n }\n\n return response;\n }\n\n async requestContactReset(type: 'email' | 'phone', newContact: string, ddi?: string): Promise<void> {\n const { id_account, id_user } = await getUserContext();\n const response = await api.apps.post<{ status: number; message: string }>(\n `/accounts/${id_account}/users/${id_user}/resetContact/request`,\n { type, newContact, ...(ddi ? { ddi } : {}) }\n );\n\n if (response.status === 0) {\n throw new ApiError(\n response.message || 'Erro ao solicitar alteração',\n 'REQUEST_CONTACT_RESET_FAILED',\n 400\n );\n }\n }\n\n async confirmContactReset(type: 'email' | 'phone', token: string, newContact: string, ddi?: string): Promise<void> {\n const { id_account, id_user } = await getUserContext();\n const response = await api.apps.post<{ status: number; message: string }>(\n `/accounts/${id_account}/users/${id_user}/resetContact/confirm`,\n { type, token, newContact, ...(ddi ? { ddi } : {}) }\n );\n\n if (response.status === 0) {\n throw new ApiError(\n response.message || 'Código inválido ou expirado',\n 'CONFIRM_CONTACT_RESET_FAILED',\n 400\n );\n }\n }\n\n async changePassword(data: ChangePasswordRequest): Promise<ChangePasswordResponse> {\n const { id_account, id_user } = await getUserContext();\n const response = await api.apps.put<ChangePasswordResponse>(\n `/accounts/${id_account}/users/${id_user}/action/changePassword`,\n data\n );\n\n if (response.status === 0) {\n throw new ApiError(\n response.message || 'Erro ao alterar senha',\n 'CHANGE_PASSWORD_FAILED',\n 400\n );\n }\n\n return response;\n }\n}\n\nexport const accountService = new AccountService();\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../../../../src/modules/accounts/services/account.service.ts"],"sourcesContent":["import 'server-only';\n\nimport { api } from '../../../infra/api/client';\nimport { ApiError } from '../../../infra/api/types';\nimport { buildQueryParams } from '../../../infra/utils/params';\nimport { assertAccountNotFrozen } from '../../auth/utils/assert-account-not-frozen';\nimport { getUserContext } from '../../auth/utils/get-user-context';\nimport { fileToBase64 } from '../../../utils/file/index';\nimport type { RequestConfig } from '../../../infra/api/client';\nimport { buildWlOverride } from '../../auth/utils/build-wl-override';\nimport type {\n Account,\n AccountUserProjectsResponse,\n AccountUsersPaginationParams,\n ChangePasswordRequest,\n ChangePasswordResponse,\n ChangeUserPhotoResponse,\n CreateAccountUserRequest,\n CreateAccountUserResponse,\n DeleteAccountRequest,\n DeleteAccountResponse,\n DeleteAccountUserResponse,\n GetAccountDataResponse,\n ListAccountUsersResponse,\n UpdateAccountRequest,\n UpdateAccountResponse,\n UpdateAccountUserRequest,\n UpdateAccountUserResponse,\n} from '../types';\n\nclass AccountService {\n async findCurrentAccount(config?: RequestConfig): Promise<Account> {\n const { id_wl, id_account } = await getUserContext();\n const effectiveConfig = config ?? await buildWlOverride(id_wl);\n const response = await api.apps.get<GetAccountDataResponse>(`/accounts/${id_account}`, effectiveConfig);\n\n if (response.status === 0 || !response.data?.[0]) {\n throw new ApiError(\n response.message || 'Erro ao buscar dados da conta',\n 'GET_ACCOUNT_FAILED',\n 400\n );\n }\n\n return response.data[0];\n }\n\n async listAccountUsers(params?: Partial<AccountUsersPaginationParams>) {\n const { id_account } = await getUserContext();\n const queryParams = buildQueryParams(params);\n const endpoint = `/accounts/${id_account}/users?${queryParams}`;\n const response = await api.apps.get<ListAccountUsersResponse>(endpoint);\n\n if (response.status === 0) {\n throw new ApiError(\n response.message || 'Erro ao listar usuários',\n 'LIST_ACCOUNT_USERS_FAILED',\n 400\n );\n }\n\n return {\n users: response.data || [],\n total: response.total || 0,\n };\n }\n\n /**\n * Usuários da conta com projetos (`total_projects`, `projects`), escopados ao usuário logado:\n * collaborator/viewer só veem quem divide projeto com eles.\n */\n async listAccountMembers(params?: Partial<AccountUsersPaginationParams>) {\n const { id_account, id_user } = await getUserContext();\n const queryParams = buildQueryParams({ ...params, scopeUserId: id_user });\n const response = await api.apps.get<ListAccountUsersResponse>(\n `/accounts/${id_account}/users?${queryParams}`\n );\n\n if (response.status === 0) {\n throw new ApiError(\n response.message || 'Erro ao listar usuários',\n 'LIST_ACCOUNT_USERS_FAILED',\n 400\n );\n }\n\n return {\n users: response.data || [],\n total: response.total || 0,\n };\n }\n\n async changeUserPhoto(userId: number, photo: File): Promise<ChangeUserPhotoResponse> {\n const { id_account } = await getUserContext();\n const base64 = await fileToBase64(photo);\n const response = await api.apps.put<ChangeUserPhotoResponse>(\n `/accounts/${id_account}/users/${userId}/file/photo`,\n { file: base64 }\n );\n\n if (response.status === 0) {\n throw new ApiError(\n response.message || 'Erro ao mudar foto do usuário',\n 'CHANGE_USER_PHOTO_FAILED',\n 400\n );\n }\n\n return response;\n }\n\n async deleteAccountUser(userId: number): Promise<DeleteAccountUserResponse> {\n const { id_account } = await getUserContext();\n const response = await api.apps.delete<DeleteAccountUserResponse>(\n `/accounts/${id_account}/users/${userId}`\n );\n\n if (response.status === 0) {\n throw new ApiError(response.message || 'Erro ao deletar usuário', 'DELETE_USER_FAILED', 400);\n }\n\n return response;\n }\n\n async deleteAccount(data: DeleteAccountRequest): Promise<DeleteAccountResponse> {\n const { id_account } = await getUserContext();\n const response = await api.apps.delete<DeleteAccountResponse>(\n `/accounts/${id_account}`,\n { body: JSON.stringify(data) }\n );\n\n if (response.status === 0) {\n throw new ApiError(response.message || 'Erro ao deletar conta', 'DELETE_ACCOUNT_FAILED', 400);\n }\n\n return response;\n }\n\n async createAccountUser(user: CreateAccountUserRequest): Promise<CreateAccountUserResponse> {\n const { id_account } = await getUserContext();\n const response = await api.apps.post<CreateAccountUserResponse>(\n `/accounts/${id_account}/users`,\n {\n ...user,\n photo: user.photo ? await fileToBase64(user.photo) : null,\n }\n );\n\n if (response.status === 0) {\n throw new ApiError(response.message || 'Erro ao criar usuário', 'CREATE_USER_FAILED', 400);\n }\n\n return response;\n }\n\n private async resolvePhotoField(user: UpdateAccountUserRequest): Promise<{ photo?: string | null }> {\n if (user.photo === undefined) return {};\n const photo =\n user.photo != null && typeof user.photo !== 'string'\n ? await fileToBase64(user.photo)\n : user.photo;\n return { photo };\n }\n\n async updateAccountUser(user: UpdateAccountUserRequest): Promise<UpdateAccountUserResponse> {\n const { id_account, id_user } = await getUserContext();\n const response = await api.apps.put<UpdateAccountUserResponse>(\n `/accounts/${id_account}/users/${id_user}`,\n { ...user, ...(await this.resolvePhotoField(user)) }\n );\n\n if (response.status === 0) {\n throw new ApiError(\n response.message || 'Erro ao atualizar usuário',\n 'UPDATE_USER_FAILED',\n 400\n );\n }\n\n return response;\n }\n\n async updateAccountUserById(\n userId: number,\n user: UpdateAccountUserRequest\n ): Promise<UpdateAccountUserResponse> {\n const { id_account } = await getUserContext();\n const response = await api.apps.put<UpdateAccountUserResponse>(\n `/accounts/${id_account}/users/${userId}`,\n { ...user, ...(await this.resolvePhotoField(user)) }\n );\n\n if (response.status === 0) {\n throw new ApiError(\n response.message || 'Erro ao atualizar usuário',\n 'UPDATE_USER_FAILED',\n 400\n );\n }\n\n return response;\n }\n\n async updateAccount(data: UpdateAccountRequest): Promise<UpdateAccountResponse> {\n const { id_account } = await getUserContext();\n const response = await api.apps.put<UpdateAccountResponse>(`/accounts/${id_account}`, data);\n\n if (response.status === 0) {\n throw new ApiError(\n response.message || 'Erro ao atualizar conta',\n 'UPDATE_ACCOUNT_FAILED',\n 400\n );\n }\n\n return response;\n }\n\n async requestContactReset(type: 'email' | 'phone', newContact: string, ddi?: string): Promise<void> {\n const { id_account, id_user } = await getUserContext();\n const response = await api.apps.post<{ status: number; message: string }>(\n `/accounts/${id_account}/users/${id_user}/resetContact/request`,\n { type, newContact, ...(ddi ? { ddi } : {}) }\n );\n\n if (response.status === 0) {\n throw new ApiError(\n response.message || 'Erro ao solicitar alteração',\n 'REQUEST_CONTACT_RESET_FAILED',\n 400\n );\n }\n }\n\n async confirmContactReset(type: 'email' | 'phone', token: string, newContact: string, ddi?: string): Promise<void> {\n const { id_account, id_user } = await getUserContext();\n const response = await api.apps.post<{ status: number; message: string }>(\n `/accounts/${id_account}/users/${id_user}/resetContact/confirm`,\n { type, token, newContact, ...(ddi ? { ddi } : {}) }\n );\n\n if (response.status === 0) {\n throw new ApiError(\n response.message || 'Código inválido ou expirado',\n 'CONFIRM_CONTACT_RESET_FAILED',\n 400\n );\n }\n }\n\n /** Checagem de e-mail já cadastrado, usada no cadastro de usuário antes de avançar de passo. */\n async checkUserExists(email: string): Promise<{ exists: boolean }> {\n const response = await api.apps.post<{ exist: boolean }>('/users/action/exists', { email });\n\n return { exists: response.exist };\n }\n\n async addUserProjects(userId: number, projectIds: number[]): Promise<AccountUserProjectsResponse> {\n await assertAccountNotFrozen();\n const { id_account } = await getUserContext();\n const response = await api.apps.post<AccountUserProjectsResponse>(\n `/accounts/${id_account}/users/${userId}/action/addProjectsBatch`,\n { projects: projectIds }\n );\n\n if (response.status === 0) {\n throw new ApiError(\n response.message || 'Erro ao vincular projetos ao usuário',\n 'ADD_USER_PROJECTS_FAILED',\n 400\n );\n }\n\n return response;\n }\n\n async removeUserProjects(userId: number, projectIds: number[]): Promise<AccountUserProjectsResponse> {\n const { id_account } = await getUserContext();\n const response = await api.apps.post<AccountUserProjectsResponse>(\n `/accounts/${id_account}/users/${userId}/action/removeProjectsBatch`,\n { projects: projectIds }\n );\n\n if (response.status === 0) {\n throw new ApiError(\n response.message || 'Erro ao desvincular projetos do usuário',\n 'REMOVE_USER_PROJECTS_FAILED',\n 400\n );\n }\n\n return response;\n }\n\n async changePassword(data: ChangePasswordRequest): Promise<ChangePasswordResponse> {\n const { id_account, id_user } = await getUserContext();\n const response = await api.apps.put<ChangePasswordResponse>(\n `/accounts/${id_account}/users/${id_user}/action/changePassword`,\n data\n );\n\n if (response.status === 0) {\n throw new ApiError(\n response.message || 'Erro ao alterar senha',\n 'CHANGE_PASSWORD_FAILED',\n 400\n );\n }\n\n return response;\n }\n}\n\nexport const accountService = new AccountService();\n"],"mappings":"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","names":[]}
@@ -0,0 +1 @@
1
+ //# sourceMappingURL=account-hub-link.type.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -0,0 +1,16 @@
1
+ import {
2
+ ACCOUNT_HUB_COUPON_PARAM,
3
+ ACCOUNT_HUB_FLOW_PARAM,
4
+ ACCOUNT_HUB_SECTION_PARAM
5
+ } from "../constants/account-hub-link.constants";
6
+ function buildAccountHubUrl(baseUrl, link, pathname = "/") {
7
+ const url = new URL(pathname, baseUrl);
8
+ url.searchParams.set(ACCOUNT_HUB_SECTION_PARAM, link.section);
9
+ if (link.flow) url.searchParams.set(ACCOUNT_HUB_FLOW_PARAM, link.flow);
10
+ if (link.couponCode) url.searchParams.set(ACCOUNT_HUB_COUPON_PARAM, link.couponCode);
11
+ return url.toString();
12
+ }
13
+ export {
14
+ buildAccountHubUrl
15
+ };
16
+ //# sourceMappingURL=build-account-hub-url.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/modules/accounts/utils/build-account-hub-url.ts"],"sourcesContent":["import {\n ACCOUNT_HUB_COUPON_PARAM,\n ACCOUNT_HUB_FLOW_PARAM,\n ACCOUNT_HUB_SECTION_PARAM,\n} from '../constants/account-hub-link.constants';\nimport type { AccountHubLink } from '../types/account-hub-link.type';\n\nexport function buildAccountHubUrl(baseUrl: string, link: AccountHubLink, pathname = '/'): string {\n const url = new URL(pathname, baseUrl);\n url.searchParams.set(ACCOUNT_HUB_SECTION_PARAM, link.section);\n if (link.flow) url.searchParams.set(ACCOUNT_HUB_FLOW_PARAM, link.flow);\n if (link.couponCode) url.searchParams.set(ACCOUNT_HUB_COUPON_PARAM, link.couponCode);\n return url.toString();\n}\n"],"mappings":"AAAA;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAGA,SAAS,mBAAmB,SAAiB,MAAsB,WAAW,KAAa;AAChG,QAAM,MAAM,IAAI,IAAI,UAAU,OAAO;AACrC,MAAI,aAAa,IAAI,2BAA2B,KAAK,OAAO;AAC5D,MAAI,KAAK,KAAM,KAAI,aAAa,IAAI,wBAAwB,KAAK,IAAI;AACrE,MAAI,KAAK,WAAY,KAAI,aAAa,IAAI,0BAA0B,KAAK,UAAU;AACnF,SAAO,IAAI,SAAS;AACtB;","names":[]}
@@ -0,0 +1,9 @@
1
+ import { AccountHubFlow } from "../../../enums/AccountHubFlow";
2
+ const ACCOUNT_HUB_FLOW_VALUES = Object.values(AccountHubFlow);
3
+ function isAccountHubFlow(value) {
4
+ return ACCOUNT_HUB_FLOW_VALUES.includes(value);
5
+ }
6
+ export {
7
+ isAccountHubFlow
8
+ };
9
+ //# sourceMappingURL=is-account-hub-flow.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/modules/accounts/utils/is-account-hub-flow.ts"],"sourcesContent":["import { AccountHubFlow } from '../../../enums/AccountHubFlow';\n\nconst ACCOUNT_HUB_FLOW_VALUES: readonly string[] = Object.values(AccountHubFlow);\n\nexport function isAccountHubFlow(value: string): value is AccountHubFlow {\n return ACCOUNT_HUB_FLOW_VALUES.includes(value);\n}\n"],"mappings":"AAAA,SAAS,sBAAsB;AAE/B,MAAM,0BAA6C,OAAO,OAAO,cAAc;AAExE,SAAS,iBAAiB,OAAwC;AACvE,SAAO,wBAAwB,SAAS,KAAK;AAC/C;","names":[]}
@@ -0,0 +1,9 @@
1
+ import { AccountSectionType } from "../../../enums/AccountSectionType";
2
+ const ACCOUNT_SECTION_VALUES = Object.values(AccountSectionType);
3
+ function isAccountSectionType(value) {
4
+ return ACCOUNT_SECTION_VALUES.includes(value);
5
+ }
6
+ export {
7
+ isAccountSectionType
8
+ };
9
+ //# sourceMappingURL=is-account-section.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/modules/accounts/utils/is-account-section.ts"],"sourcesContent":["import { AccountSectionType } from '../../../enums/AccountSectionType';\n\nconst ACCOUNT_SECTION_VALUES: readonly string[] = Object.values(AccountSectionType);\n\nexport function isAccountSectionType(value: string): value is AccountSectionType {\n return ACCOUNT_SECTION_VALUES.includes(value);\n}\n"],"mappings":"AAAA,SAAS,0BAA0B;AAEnC,MAAM,yBAA4C,OAAO,OAAO,kBAAkB;AAE3E,SAAS,qBAAqB,OAA4C;AAC/E,SAAO,uBAAuB,SAAS,KAAK;AAC9C;","names":[]}
@@ -0,0 +1,13 @@
1
+ import { AccountSectionType } from "../../../enums/AccountSectionType";
2
+ import { WorkspaceSectionType } from "../../../enums/WorkspaceSectionType";
3
+ const MY_ACCOUNT_SECTION_VALUES = [
4
+ ...Object.values(AccountSectionType),
5
+ ...Object.values(WorkspaceSectionType)
6
+ ];
7
+ function isMyAccountSection(value) {
8
+ return MY_ACCOUNT_SECTION_VALUES.includes(value);
9
+ }
10
+ export {
11
+ isMyAccountSection
12
+ };
13
+ //# sourceMappingURL=is-my-account-section.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/modules/accounts/utils/is-my-account-section.ts"],"sourcesContent":["import { AccountSectionType } from '../../../enums/AccountSectionType';\nimport { WorkspaceSectionType } from '../../../enums/WorkspaceSectionType';\nimport type { MyAccountSection } from '../../../store/useAccountModals';\n\nconst MY_ACCOUNT_SECTION_VALUES: readonly string[] = [\n ...Object.values(AccountSectionType),\n ...Object.values(WorkspaceSectionType),\n];\n\nexport function isMyAccountSection(value: string): value is MyAccountSection {\n return MY_ACCOUNT_SECTION_VALUES.includes(value);\n}\n"],"mappings":"AAAA,SAAS,0BAA0B;AACnC,SAAS,4BAA4B;AAGrC,MAAM,4BAA+C;AAAA,EACnD,GAAG,OAAO,OAAO,kBAAkB;AAAA,EACnC,GAAG,OAAO,OAAO,oBAAoB;AACvC;AAEO,SAAS,mBAAmB,OAA0C;AAC3E,SAAO,0BAA0B,SAAS,KAAK;AACjD;","names":[]}