@greatapps/common 1.1.790 → 1.1.791

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 (785) 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/DeleteAccountModal.mjs +1 -1
  8. package/dist/components/account/DeleteAccountModal.mjs.map +1 -1
  9. package/dist/components/account/IsntPossibleDeleteAccountModal.mjs +8 -1
  10. package/dist/components/account/IsntPossibleDeleteAccountModal.mjs.map +1 -1
  11. package/dist/components/account/MyAccountModal.mjs +167 -0
  12. package/dist/components/account/MyAccountModal.mjs.map +1 -0
  13. package/dist/components/account/TwoFactorAuthModal.mjs +1 -1
  14. package/dist/components/account/TwoFactorAuthModal.mjs.map +1 -1
  15. package/dist/components/account/hooks/useAccountHubActions.mjs +85 -0
  16. package/dist/components/account/hooks/useAccountHubActions.mjs.map +1 -0
  17. package/dist/components/account/hooks/useAddCardWithPaymentSwitch.mjs +44 -0
  18. package/dist/components/account/hooks/useAddCardWithPaymentSwitch.mjs.map +1 -0
  19. package/dist/components/account/hooks/useAffiliatesActions.mjs +69 -0
  20. package/dist/components/account/hooks/useAffiliatesActions.mjs.map +1 -0
  21. package/dist/components/account/hooks/useMyAccountModal.mjs +27 -0
  22. package/dist/components/account/hooks/useMyAccountModal.mjs.map +1 -0
  23. package/dist/components/account/hooks/useProjectsActions.mjs +40 -0
  24. package/dist/components/account/hooks/useProjectsActions.mjs.map +1 -0
  25. package/dist/components/account/hooks/useSubscriptionActions.mjs +87 -0
  26. package/dist/components/account/hooks/useSubscriptionActions.mjs.map +1 -0
  27. package/dist/components/account/hooks/useTeamActions.mjs +31 -0
  28. package/dist/components/account/hooks/useTeamActions.mjs.map +1 -0
  29. package/dist/components/account/sections/AffiliatesSection.mjs +313 -0
  30. package/dist/components/account/sections/AffiliatesSection.mjs.map +1 -0
  31. package/dist/components/account/sections/ChangePasswordSection.mjs +5 -5
  32. package/dist/components/account/sections/ChangePasswordSection.mjs.map +1 -1
  33. package/dist/components/account/sections/MyProfileSection.mjs +194 -144
  34. package/dist/components/account/sections/MyProfileSection.mjs.map +1 -1
  35. package/dist/components/account/sections/PreferencesSection.mjs +60 -49
  36. package/dist/components/account/sections/PreferencesSection.mjs.map +1 -1
  37. package/dist/components/account/sections/ProjectsSection.mjs +77 -0
  38. package/dist/components/account/sections/ProjectsSection.mjs.map +1 -0
  39. package/dist/components/account/sections/SecuritySection.mjs +55 -36
  40. package/dist/components/account/sections/SecuritySection.mjs.map +1 -1
  41. package/dist/components/account/sections/SubscriptionSection.mjs +29 -0
  42. package/dist/components/account/sections/SubscriptionSection.mjs.map +1 -0
  43. package/dist/components/account/sections/TeamSection.mjs +119 -0
  44. package/dist/components/account/sections/TeamSection.mjs.map +1 -0
  45. package/dist/components/account/sections/TokenSection.mjs +41 -43
  46. package/dist/components/account/sections/TokenSection.mjs.map +1 -1
  47. package/dist/components/account/sections/affiliates/AffiliateCommissionCard.mjs +73 -0
  48. package/dist/components/account/sections/affiliates/AffiliateCommissionCard.mjs.map +1 -0
  49. package/dist/components/account/sections/affiliates/AffiliateFlows.mjs +20 -0
  50. package/dist/components/account/sections/affiliates/AffiliateFlows.mjs.map +1 -0
  51. package/dist/components/account/sections/affiliates/AffiliateLeadsSheet.mjs +99 -0
  52. package/dist/components/account/sections/affiliates/AffiliateLeadsSheet.mjs.map +1 -0
  53. package/dist/components/account/sections/affiliates/AffiliateStatsCard.mjs +31 -0
  54. package/dist/components/account/sections/affiliates/AffiliateStatsCard.mjs.map +1 -0
  55. package/dist/components/account/sections/affiliates/AffiliateStepCard.mjs +15 -0
  56. package/dist/components/account/sections/affiliates/AffiliateStepCard.mjs.map +1 -0
  57. package/dist/components/account/sections/affiliates/AffiliateTransactionsList.mjs +108 -0
  58. package/dist/components/account/sections/affiliates/AffiliateTransactionsList.mjs.map +1 -0
  59. package/dist/components/account/sections/affiliates/NoReceivingAccountModal.mjs +49 -0
  60. package/dist/components/account/sections/affiliates/NoReceivingAccountModal.mjs.map +1 -0
  61. package/dist/components/account/sections/affiliates/ReceivingAccountModal.mjs +182 -0
  62. package/dist/components/account/sections/affiliates/ReceivingAccountModal.mjs.map +1 -0
  63. package/dist/components/account/sections/affiliates/RequestWithdrawalSheet.mjs +476 -0
  64. package/dist/components/account/sections/affiliates/RequestWithdrawalSheet.mjs.map +1 -0
  65. package/dist/components/account/sections/affiliates/ViewAttachmentModal.mjs +34 -0
  66. package/dist/components/account/sections/affiliates/ViewAttachmentModal.mjs.map +1 -0
  67. package/dist/components/account/sections/affiliates/reports/AffiliatesIndicatorsChart.mjs +27 -0
  68. package/dist/components/account/sections/affiliates/reports/AffiliatesIndicatorsChart.mjs.map +1 -0
  69. package/dist/components/account/sections/affiliates/reports/AffiliatesReportsTab.mjs +30 -0
  70. package/dist/components/account/sections/affiliates/reports/AffiliatesReportsTab.mjs.map +1 -0
  71. package/dist/components/account/sections/affiliates/reports/useAffiliatesIndicatorsChart.mjs +120 -0
  72. package/dist/components/account/sections/affiliates/reports/useAffiliatesIndicatorsChart.mjs.map +1 -0
  73. package/dist/components/account/sections/projects/DeleteProjectModal.mjs +205 -0
  74. package/dist/components/account/sections/projects/DeleteProjectModal.mjs.map +1 -0
  75. package/dist/components/account/sections/projects/ProjectFlows.mjs +16 -0
  76. package/dist/components/account/sections/projects/ProjectFlows.mjs.map +1 -0
  77. package/dist/components/account/sections/projects/ProjectMembersStack.mjs +53 -0
  78. package/dist/components/account/sections/projects/ProjectMembersStack.mjs.map +1 -0
  79. package/dist/components/account/sections/projects/ProjectRow.mjs +85 -0
  80. package/dist/components/account/sections/projects/ProjectRow.mjs.map +1 -0
  81. package/dist/components/account/sections/projects/ProjectSheet.mjs +499 -0
  82. package/dist/components/account/sections/projects/ProjectSheet.mjs.map +1 -0
  83. package/dist/components/account/sections/projects/ProjectsDisabledModal.mjs +55 -0
  84. package/dist/components/account/sections/projects/ProjectsDisabledModal.mjs.map +1 -0
  85. package/dist/components/account/sections/projects/project-form.schema.mjs +28 -0
  86. package/dist/components/account/sections/projects/project-form.schema.mjs.map +1 -0
  87. package/dist/components/account/sections/shared/ConnectListRow.mjs +45 -0
  88. package/dist/components/account/sections/shared/ConnectListRow.mjs.map +1 -0
  89. package/dist/components/account/sections/shared/DateFilterPopover.mjs +51 -0
  90. package/dist/components/account/sections/shared/DateFilterPopover.mjs.map +1 -0
  91. package/dist/components/account/sections/shared/EntityAvatar.mjs +41 -0
  92. package/dist/components/account/sections/shared/EntityAvatar.mjs.map +1 -0
  93. package/dist/components/account/sections/shared/FilterPopover.mjs +62 -0
  94. package/dist/components/account/sections/shared/FilterPopover.mjs.map +1 -0
  95. package/dist/components/account/sections/shared/FormSection.mjs +14 -0
  96. package/dist/components/account/sections/shared/FormSection.mjs.map +1 -0
  97. package/dist/components/account/sections/shared/IconBox.mjs +18 -0
  98. package/dist/components/account/sections/shared/IconBox.mjs.map +1 -0
  99. package/dist/components/account/sections/shared/InfiniteScrollList.mjs +36 -0
  100. package/dist/components/account/sections/shared/InfiniteScrollList.mjs.map +1 -0
  101. package/dist/components/account/sections/shared/ListPagination.mjs +69 -0
  102. package/dist/components/account/sections/shared/ListPagination.mjs.map +1 -0
  103. package/dist/components/account/sections/shared/RowActionsMenu.mjs +52 -0
  104. package/dist/components/account/sections/shared/RowActionsMenu.mjs.map +1 -0
  105. package/dist/components/account/sections/shared/SectionLoadError.mjs +20 -0
  106. package/dist/components/account/sections/shared/SectionLoadError.mjs.map +1 -0
  107. package/dist/components/account/sections/shared/StatusBadge.mjs +26 -0
  108. package/dist/components/account/sections/shared/StatusBadge.mjs.map +1 -0
  109. package/dist/components/account/sections/shared/WorkspaceSection.mjs +10 -0
  110. package/dist/components/account/sections/shared/WorkspaceSection.mjs.map +1 -0
  111. package/dist/components/account/sections/subscription/AiCreditsUsage.mjs +106 -0
  112. package/dist/components/account/sections/subscription/AiCreditsUsage.mjs.map +1 -0
  113. package/dist/components/account/sections/subscription/BillingAddressSheet.mjs +407 -0
  114. package/dist/components/account/sections/subscription/BillingAddressSheet.mjs.map +1 -0
  115. package/dist/components/account/sections/subscription/BoletoDetailsDialog.mjs +73 -0
  116. package/dist/components/account/sections/subscription/BoletoDetailsDialog.mjs.map +1 -0
  117. package/dist/components/account/sections/subscription/BoletoGeneratedDialog.mjs +22 -0
  118. package/dist/components/account/sections/subscription/BoletoGeneratedDialog.mjs.map +1 -0
  119. package/dist/components/account/sections/subscription/CancelPlanDialog.mjs +161 -0
  120. package/dist/components/account/sections/subscription/CancelPlanDialog.mjs.map +1 -0
  121. package/dist/components/account/sections/subscription/ChargeRow.mjs +127 -0
  122. package/dist/components/account/sections/subscription/ChargeRow.mjs.map +1 -0
  123. package/dist/components/account/sections/subscription/ChargeStatusBadge.mjs +27 -0
  124. package/dist/components/account/sections/subscription/ChargeStatusBadge.mjs.map +1 -0
  125. package/dist/components/account/sections/subscription/ChargesList.mjs +88 -0
  126. package/dist/components/account/sections/subscription/ChargesList.mjs.map +1 -0
  127. package/dist/components/account/sections/subscription/ManageCardsSheet.mjs +49 -0
  128. package/dist/components/account/sections/subscription/ManageCardsSheet.mjs.map +1 -0
  129. package/dist/components/account/sections/subscription/OverdueReceiptOpener.mjs +26 -0
  130. package/dist/components/account/sections/subscription/OverdueReceiptOpener.mjs.map +1 -0
  131. package/dist/components/account/sections/subscription/PayChargeDialog.mjs +222 -0
  132. package/dist/components/account/sections/subscription/PayChargeDialog.mjs.map +1 -0
  133. package/dist/components/account/sections/subscription/PaymentConfirmationDialog.mjs +61 -0
  134. package/dist/components/account/sections/subscription/PaymentConfirmationDialog.mjs.map +1 -0
  135. package/dist/components/account/sections/subscription/PaymentMethodsCard.mjs +72 -0
  136. package/dist/components/account/sections/subscription/PaymentMethodsCard.mjs.map +1 -0
  137. package/dist/components/account/sections/subscription/PendingChangeDialog.mjs +117 -0
  138. package/dist/components/account/sections/subscription/PendingChangeDialog.mjs.map +1 -0
  139. package/dist/components/account/sections/subscription/PixDetailsDialog.mjs +165 -0
  140. package/dist/components/account/sections/subscription/PixDetailsDialog.mjs.map +1 -0
  141. package/dist/components/account/sections/subscription/PixPaymentDialog.mjs +155 -0
  142. package/dist/components/account/sections/subscription/PixPaymentDialog.mjs.map +1 -0
  143. package/dist/components/account/sections/subscription/PlanDetailsSheet.mjs +253 -0
  144. package/dist/components/account/sections/subscription/PlanDetailsSheet.mjs.map +1 -0
  145. package/dist/components/account/sections/subscription/ReceiptDetailsSheet.mjs +237 -0
  146. package/dist/components/account/sections/subscription/ReceiptDetailsSheet.mjs.map +1 -0
  147. package/dist/components/account/sections/subscription/SubscriptionFlows.mjs +40 -0
  148. package/dist/components/account/sections/subscription/SubscriptionFlows.mjs.map +1 -0
  149. package/dist/components/account/sections/subscription/SubscriptionPlanCard.mjs +303 -0
  150. package/dist/components/account/sections/subscription/SubscriptionPlanCard.mjs.map +1 -0
  151. package/dist/components/account/sections/subscription/UsageReportSheet.mjs +163 -0
  152. package/dist/components/account/sections/subscription/UsageReportSheet.mjs.map +1 -0
  153. package/dist/components/account/sections/subscription/change-plan/ChangePlanSheet.mjs +75 -0
  154. package/dist/components/account/sections/subscription/change-plan/ChangePlanSheet.mjs.map +1 -0
  155. package/dist/components/account/sections/subscription/change-plan/components/AbTestDetailsDialog.mjs +55 -0
  156. package/dist/components/account/sections/subscription/change-plan/components/AbTestDetailsDialog.mjs.map +1 -0
  157. package/dist/components/account/sections/subscription/change-plan/components/AddonsBlock.mjs +188 -0
  158. package/dist/components/account/sections/subscription/change-plan/components/AddonsBlock.mjs.map +1 -0
  159. package/dist/components/account/sections/subscription/change-plan/components/AlternativeBucketsSection.mjs +66 -0
  160. package/dist/components/account/sections/subscription/change-plan/components/AlternativeBucketsSection.mjs.map +1 -0
  161. package/dist/components/account/sections/subscription/change-plan/components/CouponBlock.mjs +42 -0
  162. package/dist/components/account/sections/subscription/change-plan/components/CouponBlock.mjs.map +1 -0
  163. package/dist/components/account/sections/subscription/change-plan/components/CouponDialog.mjs +119 -0
  164. package/dist/components/account/sections/subscription/change-plan/components/CouponDialog.mjs.map +1 -0
  165. package/dist/components/account/sections/subscription/change-plan/components/PricePreview.mjs +17 -0
  166. package/dist/components/account/sections/subscription/change-plan/components/PricePreview.mjs.map +1 -0
  167. package/dist/components/account/sections/subscription/change-plan/components/SummaryBlock.mjs +130 -0
  168. package/dist/components/account/sections/subscription/change-plan/components/SummaryBlock.mjs.map +1 -0
  169. package/dist/components/account/sections/subscription/change-plan/plan-comparison.mjs +38 -0
  170. package/dist/components/account/sections/subscription/change-plan/plan-comparison.mjs.map +1 -0
  171. package/dist/components/account/sections/subscription/change-plan/steps/PaymentSummaryStep.mjs +127 -0
  172. package/dist/components/account/sections/subscription/change-plan/steps/PaymentSummaryStep.mjs.map +1 -0
  173. package/dist/components/account/sections/subscription/change-plan/steps/PlanComparisonStep.mjs +111 -0
  174. package/dist/components/account/sections/subscription/change-plan/steps/PlanComparisonStep.mjs.map +1 -0
  175. package/dist/components/account/sections/subscription/change-plan/steps/PlanViewStep.mjs +69 -0
  176. package/dist/components/account/sections/subscription/change-plan/steps/PlanViewStep.mjs.map +1 -0
  177. package/dist/components/account/sections/subscription/change-plan/steps/ReactivationConfigStep.mjs +88 -0
  178. package/dist/components/account/sections/subscription/change-plan/steps/ReactivationConfigStep.mjs.map +1 -0
  179. package/dist/components/account/sections/subscription/change-plan/steps/ReactivationPaymentStep.mjs +115 -0
  180. package/dist/components/account/sections/subscription/change-plan/steps/ReactivationPaymentStep.mjs.map +1 -0
  181. package/dist/components/account/sections/subscription/change-plan/useChangePlanState.mjs +918 -0
  182. package/dist/components/account/sections/subscription/change-plan/useChangePlanState.mjs.map +1 -0
  183. package/dist/components/account/sections/subscription/downgrade/CannotDowngradeDialog.mjs +216 -0
  184. package/dist/components/account/sections/subscription/downgrade/CannotDowngradeDialog.mjs.map +1 -0
  185. package/dist/components/account/sections/subscription/downgrade/DowngradeReasonDialog.mjs +128 -0
  186. package/dist/components/account/sections/subscription/downgrade/DowngradeReasonDialog.mjs.map +1 -0
  187. package/dist/components/account/sections/subscription/plans/PlanCard.mjs +281 -0
  188. package/dist/components/account/sections/subscription/plans/PlanCard.mjs.map +1 -0
  189. package/dist/components/account/sections/subscription/plans/PlanCardSkeleton.mjs +53 -0
  190. package/dist/components/account/sections/subscription/plans/PlanCardSkeleton.mjs.map +1 -0
  191. package/dist/components/account/sections/subscription/plans/PlansCatalogDialog.mjs +119 -0
  192. package/dist/components/account/sections/subscription/plans/PlansCatalogDialog.mjs.map +1 -0
  193. package/dist/components/account/sections/team/DeleteUserModal.mjs +116 -0
  194. package/dist/components/account/sections/team/DeleteUserModal.mjs.map +1 -0
  195. package/dist/components/account/sections/team/TeamFlows.mjs +14 -0
  196. package/dist/components/account/sections/team/TeamFlows.mjs.map +1 -0
  197. package/dist/components/account/sections/team/TeamMemberRow.mjs +99 -0
  198. package/dist/components/account/sections/team/TeamMemberRow.mjs.map +1 -0
  199. package/dist/components/account/sections/team/UserSheet.mjs +570 -0
  200. package/dist/components/account/sections/team/UserSheet.mjs.map +1 -0
  201. package/dist/components/account/sections/team/steps/NotificationsStep.mjs +80 -0
  202. package/dist/components/account/sections/team/steps/NotificationsStep.mjs.map +1 -0
  203. package/dist/components/account/sections/team/steps/ProjectSelectionStep.mjs +180 -0
  204. package/dist/components/account/sections/team/steps/ProjectSelectionStep.mjs.map +1 -0
  205. package/dist/components/account/sections/team/steps/UserInformationStep.mjs +371 -0
  206. package/dist/components/account/sections/team/steps/UserInformationStep.mjs.map +1 -0
  207. package/dist/components/account/sections/team/user-form.schema.mjs +37 -0
  208. package/dist/components/account/sections/team/user-form.schema.mjs.map +1 -0
  209. package/dist/components/account/types/workspace-actions.type.mjs +1 -0
  210. package/dist/components/account/types/workspace-actions.type.mjs.map +1 -0
  211. package/dist/components/layouts/ProfilePopover.mjs +10 -12
  212. package/dist/components/layouts/ProfilePopover.mjs.map +1 -1
  213. package/dist/components/layouts/UsersSelectorPopover.mjs +7 -4
  214. package/dist/components/layouts/UsersSelectorPopover.mjs.map +1 -1
  215. package/dist/components/modals/AccountDeletionWarningModal.mjs +4 -5
  216. package/dist/components/modals/AccountDeletionWarningModal.mjs.map +1 -1
  217. package/dist/components/modals/AccountFrozenModal.mjs +6 -3
  218. package/dist/components/modals/AccountFrozenModal.mjs.map +1 -1
  219. package/dist/components/modals/Modals.mjs +3 -3
  220. package/dist/components/modals/Modals.mjs.map +1 -1
  221. package/dist/components/modals/PaidPlanRequiredModal.mjs +4 -5
  222. package/dist/components/modals/PaidPlanRequiredModal.mjs.map +1 -1
  223. package/dist/components/modals/cards/AddFirstCardWarningModal.mjs +63 -0
  224. package/dist/components/modals/cards/AddFirstCardWarningModal.mjs.map +1 -0
  225. package/dist/components/modals/cards/SwitchPaymentToCardModal.mjs +187 -0
  226. package/dist/components/modals/cards/SwitchPaymentToCardModal.mjs.map +1 -0
  227. package/dist/components/modals/promo/AiCreditsOfferModal/AiCreditsOfferModal.mjs +5 -4
  228. package/dist/components/modals/promo/AiCreditsOfferModal/AiCreditsOfferModal.mjs.map +1 -1
  229. package/dist/components/ui/data-display/CardItem.mjs +9 -1
  230. package/dist/components/ui/data-display/CardItem.mjs.map +1 -1
  231. package/dist/components/ui/data-display/PaymentMethodIcons.mjs +50 -0
  232. package/dist/components/ui/data-display/PaymentMethodIcons.mjs.map +1 -0
  233. package/dist/components/ui/form/BillingPeriodSelector.mjs +108 -0
  234. package/dist/components/ui/form/BillingPeriodSelector.mjs.map +1 -0
  235. package/dist/components/ui/form/PaymentMethodToggle.mjs +82 -0
  236. package/dist/components/ui/form/PaymentMethodToggle.mjs.map +1 -0
  237. package/dist/components/ui/form/RadioOptionFieldIcon.mjs +57 -0
  238. package/dist/components/ui/form/RadioOptionFieldIcon.mjs.map +1 -0
  239. package/dist/components/ui/form/SegmentedControl.mjs +56 -0
  240. package/dist/components/ui/form/SegmentedControl.mjs.map +1 -0
  241. package/dist/components/ui/overlay/Dialog.mjs +21 -4
  242. package/dist/components/ui/overlay/Dialog.mjs.map +1 -1
  243. package/dist/components/ui/overlay/Sheet.mjs +26 -8
  244. package/dist/components/ui/overlay/Sheet.mjs.map +1 -1
  245. package/dist/components/ui/overlay/layers.mjs +52 -5
  246. package/dist/components/ui/overlay/layers.mjs.map +1 -1
  247. package/dist/enums/AccountHubFlow.mjs +13 -0
  248. package/dist/enums/AccountHubFlow.mjs.map +1 -0
  249. package/dist/enums/DateFilterPeriod.mjs +22 -0
  250. package/dist/enums/DateFilterPeriod.mjs.map +1 -0
  251. package/dist/enums/WorkspaceSectionType.mjs +11 -0
  252. package/dist/enums/WorkspaceSectionType.mjs.map +1 -0
  253. package/dist/handlers.mjs +24 -0
  254. package/dist/handlers.mjs.map +1 -1
  255. package/dist/hooks/useDebounce.mjs +5 -3
  256. package/dist/hooks/useDebounce.mjs.map +1 -1
  257. package/dist/hooks/useUploadProgress.mjs +33 -0
  258. package/dist/hooks/useUploadProgress.mjs.map +1 -0
  259. package/dist/i18n/messages/en-us.mjs +863 -3
  260. package/dist/i18n/messages/en-us.mjs.map +1 -1
  261. package/dist/i18n/messages/es-es.mjs +863 -3
  262. package/dist/i18n/messages/es-es.mjs.map +1 -1
  263. package/dist/i18n/messages/pt-br.mjs +863 -3
  264. package/dist/i18n/messages/pt-br.mjs.map +1 -1
  265. package/dist/index.mjs +87 -7
  266. package/dist/index.mjs.map +1 -1
  267. package/dist/infra/http/paged.mjs +20 -0
  268. package/dist/infra/http/paged.mjs.map +1 -0
  269. package/dist/middleware.mjs +2 -0
  270. package/dist/middleware.mjs.map +1 -1
  271. package/dist/middlewares/create-auth-middleware.mjs +1 -3
  272. package/dist/middlewares/create-auth-middleware.mjs.map +1 -1
  273. package/dist/middlewares/create-legacy-account-routes-middleware.mjs +44 -0
  274. package/dist/middlewares/create-legacy-account-routes-middleware.mjs.map +1 -0
  275. package/dist/middlewares/is-route-equals.mjs +7 -0
  276. package/dist/middlewares/is-route-equals.mjs.map +1 -0
  277. package/dist/modules/accounts/actions/account-management.action.mjs +20 -1
  278. package/dist/modules/accounts/actions/account-management.action.mjs.map +1 -1
  279. package/dist/modules/accounts/constants/account-hub-link.constants.mjs +9 -0
  280. package/dist/modules/accounts/constants/account-hub-link.constants.mjs.map +1 -0
  281. package/dist/modules/accounts/constants/legacy-account-routes.constants.mjs +5 -0
  282. package/dist/modules/accounts/constants/legacy-account-routes.constants.mjs.map +1 -0
  283. package/dist/modules/accounts/handlers/list-account-members.handler.mjs +22 -0
  284. package/dist/modules/accounts/handlers/list-account-members.handler.mjs.map +1 -0
  285. package/dist/modules/accounts/hooks/add-user-projects.hook.mjs +51 -0
  286. package/dist/modules/accounts/hooks/add-user-projects.hook.mjs.map +1 -0
  287. package/dist/modules/accounts/hooks/create-account-user.hook.mjs +20 -0
  288. package/dist/modules/accounts/hooks/create-account-user.hook.mjs.map +1 -0
  289. package/dist/modules/accounts/hooks/remove-user-projects.hook.mjs +47 -0
  290. package/dist/modules/accounts/hooks/remove-user-projects.hook.mjs.map +1 -0
  291. package/dist/modules/accounts/hooks/use-account-members.hook.mjs +20 -0
  292. package/dist/modules/accounts/hooks/use-account-members.hook.mjs.map +1 -0
  293. package/dist/modules/accounts/services/account.service.mjs +59 -0
  294. package/dist/modules/accounts/services/account.service.mjs.map +1 -1
  295. package/dist/modules/accounts/types/account-hub-link.type.mjs +1 -0
  296. package/dist/modules/accounts/types/account-hub-link.type.mjs.map +1 -0
  297. package/dist/modules/accounts/utils/build-account-hub-url.mjs +16 -0
  298. package/dist/modules/accounts/utils/build-account-hub-url.mjs.map +1 -0
  299. package/dist/modules/accounts/utils/is-account-hub-flow.mjs +9 -0
  300. package/dist/modules/accounts/utils/is-account-hub-flow.mjs.map +1 -0
  301. package/dist/modules/accounts/utils/is-account-section.mjs +9 -0
  302. package/dist/modules/accounts/utils/is-account-section.mjs.map +1 -0
  303. package/dist/modules/accounts/utils/is-my-account-section.mjs +13 -0
  304. package/dist/modules/accounts/utils/is-my-account-section.mjs.map +1 -0
  305. package/dist/modules/accounts/utils/map-legacy-account-route.mjs +93 -0
  306. package/dist/modules/accounts/utils/map-legacy-account-route.mjs.map +1 -0
  307. package/dist/modules/accounts/utils/parse-account-hub-link.mjs +20 -0
  308. package/dist/modules/accounts/utils/parse-account-hub-link.mjs.map +1 -0
  309. package/dist/modules/affiliates/actions/ensure-affiliate.action.mjs +10 -0
  310. package/dist/modules/affiliates/actions/ensure-affiliate.action.mjs.map +1 -0
  311. package/dist/modules/affiliates/actions/request-deposit.action.mjs +10 -0
  312. package/dist/modules/affiliates/actions/request-deposit.action.mjs.map +1 -0
  313. package/dist/modules/affiliates/actions/update-affiliate.action.mjs +10 -0
  314. package/dist/modules/affiliates/actions/update-affiliate.action.mjs.map +1 -0
  315. package/dist/modules/affiliates/constants/affiliate.constants.mjs +11 -0
  316. package/dist/modules/affiliates/constants/affiliate.constants.mjs.map +1 -0
  317. package/dist/modules/affiliates/constants/query-keys.constants.mjs +15 -0
  318. package/dist/modules/affiliates/constants/query-keys.constants.mjs.map +1 -0
  319. package/dist/modules/affiliates/handlers/affiliate-report-analytics.handler.mjs +16 -0
  320. package/dist/modules/affiliates/handlers/affiliate-report-analytics.handler.mjs.map +1 -0
  321. package/dist/modules/affiliates/handlers/affiliate-withdrawal-limits.handler.mjs +12 -0
  322. package/dist/modules/affiliates/handlers/affiliate-withdrawal-limits.handler.mjs.map +1 -0
  323. package/dist/modules/affiliates/handlers/current-affiliate.handler.mjs +12 -0
  324. package/dist/modules/affiliates/handlers/current-affiliate.handler.mjs.map +1 -0
  325. package/dist/modules/affiliates/handlers/list-affiliate-coupons.handler.mjs +12 -0
  326. package/dist/modules/affiliates/handlers/list-affiliate-coupons.handler.mjs.map +1 -0
  327. package/dist/modules/affiliates/handlers/list-affiliate-leads.handler.mjs +22 -0
  328. package/dist/modules/affiliates/handlers/list-affiliate-leads.handler.mjs.map +1 -0
  329. package/dist/modules/affiliates/handlers/list-affiliate-transactions.handler.mjs +22 -0
  330. package/dist/modules/affiliates/handlers/list-affiliate-transactions.handler.mjs.map +1 -0
  331. package/dist/modules/affiliates/hooks/use-affiliate-coupons.hook.mjs +17 -0
  332. package/dist/modules/affiliates/hooks/use-affiliate-coupons.hook.mjs.map +1 -0
  333. package/dist/modules/affiliates/hooks/use-affiliate-leads.hook.mjs +22 -0
  334. package/dist/modules/affiliates/hooks/use-affiliate-leads.hook.mjs.map +1 -0
  335. package/dist/modules/affiliates/hooks/use-affiliate-report-analytics.hook.mjs +17 -0
  336. package/dist/modules/affiliates/hooks/use-affiliate-report-analytics.hook.mjs.map +1 -0
  337. package/dist/modules/affiliates/hooks/use-affiliate-transactions.hook.mjs +20 -0
  338. package/dist/modules/affiliates/hooks/use-affiliate-transactions.hook.mjs.map +1 -0
  339. package/dist/modules/affiliates/hooks/use-current-affiliate.hook.mjs +17 -0
  340. package/dist/modules/affiliates/hooks/use-current-affiliate.hook.mjs.map +1 -0
  341. package/dist/modules/affiliates/hooks/use-ensure-affiliate.hook.mjs +23 -0
  342. package/dist/modules/affiliates/hooks/use-ensure-affiliate.hook.mjs.map +1 -0
  343. package/dist/modules/affiliates/hooks/use-request-deposit.hook.mjs +28 -0
  344. package/dist/modules/affiliates/hooks/use-request-deposit.hook.mjs.map +1 -0
  345. package/dist/modules/affiliates/hooks/use-update-affiliate.hook.mjs +22 -0
  346. package/dist/modules/affiliates/hooks/use-update-affiliate.hook.mjs.map +1 -0
  347. package/dist/modules/affiliates/hooks/use-withdrawal-limits.hook.mjs +17 -0
  348. package/dist/modules/affiliates/hooks/use-withdrawal-limits.hook.mjs.map +1 -0
  349. package/dist/modules/affiliates/services/affiliates.service.mjs +183 -0
  350. package/dist/modules/affiliates/services/affiliates.service.mjs.map +1 -0
  351. package/dist/modules/affiliates/types/affiliate.type.mjs +100 -0
  352. package/dist/modules/affiliates/types/affiliate.type.mjs.map +1 -0
  353. package/dist/modules/affiliates/utils/get-affiliate-share-link.mjs +9 -0
  354. package/dist/modules/affiliates/utils/get-affiliate-share-link.mjs.map +1 -0
  355. package/dist/modules/charges/actions/get-nota-fiscal.action.mjs +10 -0
  356. package/dist/modules/charges/actions/get-nota-fiscal.action.mjs.map +1 -0
  357. package/dist/modules/charges/actions/refresh-pix.action.mjs +10 -0
  358. package/dist/modules/charges/actions/refresh-pix.action.mjs.map +1 -0
  359. package/dist/modules/charges/hooks/nota-fiscal.hook.mjs +13 -0
  360. package/dist/modules/charges/hooks/nota-fiscal.hook.mjs.map +1 -0
  361. package/dist/modules/charges/hooks/refresh-pix.hook.mjs +13 -0
  362. package/dist/modules/charges/hooks/refresh-pix.hook.mjs.map +1 -0
  363. package/dist/modules/charges/services/charges.service.mjs +67 -0
  364. package/dist/modules/charges/services/charges.service.mjs.map +1 -1
  365. package/dist/modules/charges/types/nota-fiscal.type.mjs +1 -0
  366. package/dist/modules/charges/types/nota-fiscal.type.mjs.map +1 -0
  367. package/dist/modules/charges/types/refresh-pix.type.mjs +1 -0
  368. package/dist/modules/charges/types/refresh-pix.type.mjs.map +1 -0
  369. package/dist/modules/charges/utils/get-charge-download-url.mjs +8 -0
  370. package/dist/modules/charges/utils/get-charge-download-url.mjs.map +1 -0
  371. package/dist/modules/coupons/constants/query-keys.constants.mjs +5 -0
  372. package/dist/modules/coupons/constants/query-keys.constants.mjs.map +1 -0
  373. package/dist/modules/coupons/handlers/find-coupon-by-code.handler.mjs +17 -0
  374. package/dist/modules/coupons/handlers/find-coupon-by-code.handler.mjs.map +1 -0
  375. package/dist/modules/coupons/handlers/find-coupon-by-id.handler.mjs +16 -0
  376. package/dist/modules/coupons/handlers/find-coupon-by-id.handler.mjs.map +1 -0
  377. package/dist/modules/coupons/hooks/use-coupon-by-code.hook.mjs +15 -0
  378. package/dist/modules/coupons/hooks/use-coupon-by-code.hook.mjs.map +1 -0
  379. package/dist/modules/coupons/hooks/use-coupon-by-id.hook.mjs +18 -0
  380. package/dist/modules/coupons/hooks/use-coupon-by-id.hook.mjs.map +1 -0
  381. package/dist/modules/coupons/services/coupons.service.mjs +44 -0
  382. package/dist/modules/coupons/services/coupons.service.mjs.map +1 -0
  383. package/dist/modules/coupons/types/coupon.type.mjs +61 -0
  384. package/dist/modules/coupons/types/coupon.type.mjs.map +1 -0
  385. package/dist/modules/coupons/utils/coupon-restrictions.mjs +60 -0
  386. package/dist/modules/coupons/utils/coupon-restrictions.mjs.map +1 -0
  387. package/dist/modules/domains/handlers/count-domains.handler.mjs +12 -0
  388. package/dist/modules/domains/handlers/count-domains.handler.mjs.map +1 -0
  389. package/dist/modules/domains/hooks/count-domains.hook.mjs +17 -0
  390. package/dist/modules/domains/hooks/count-domains.hook.mjs.map +1 -0
  391. package/dist/modules/domains/services/domains.service.mjs +18 -0
  392. package/dist/modules/domains/services/domains.service.mjs.map +1 -0
  393. package/dist/modules/ia-credits/handlers/list-ia-credit-operations.handler.mjs +15 -0
  394. package/dist/modules/ia-credits/handlers/list-ia-credit-operations.handler.mjs.map +1 -0
  395. package/dist/modules/ia-credits/hooks/ia-credit-operations.hook.mjs +28 -0
  396. package/dist/modules/ia-credits/hooks/ia-credit-operations.hook.mjs.map +1 -0
  397. package/dist/modules/ia-credits/services/ia-credits.service.mjs +23 -2
  398. package/dist/modules/ia-credits/services/ia-credits.service.mjs.map +1 -1
  399. package/dist/modules/pages/handlers/count-pages.handler.mjs +4 -2
  400. package/dist/modules/pages/handlers/count-pages.handler.mjs.map +1 -1
  401. package/dist/modules/pages/hooks/count-published-pages.hook.mjs +26 -0
  402. package/dist/modules/pages/hooks/count-published-pages.hook.mjs.map +1 -0
  403. package/dist/modules/pages/services/pages.service.mjs +3 -2
  404. package/dist/modules/pages/services/pages.service.mjs.map +1 -1
  405. package/dist/modules/plans/constants/plan-tooltips.constants.mjs +14 -0
  406. package/dist/modules/plans/constants/plan-tooltips.constants.mjs.map +1 -0
  407. package/dist/modules/plans/hooks/use-enriched-plans.hook.mjs +28 -0
  408. package/dist/modules/plans/hooks/use-enriched-plans.hook.mjs.map +1 -0
  409. package/dist/modules/plans/hooks/use-ui-plans.hook.mjs +20 -0
  410. package/dist/modules/plans/hooks/use-ui-plans.hook.mjs.map +1 -0
  411. package/dist/modules/projects/hooks/add-project-users.hook.mjs +25 -0
  412. package/dist/modules/projects/hooks/add-project-users.hook.mjs.map +1 -0
  413. package/dist/modules/projects/hooks/list-all-account-users.hook.mjs +3 -6
  414. package/dist/modules/projects/hooks/list-all-account-users.hook.mjs.map +1 -1
  415. package/dist/modules/projects/hooks/list-available-users.hook.mjs +3 -6
  416. package/dist/modules/projects/hooks/list-available-users.hook.mjs.map +1 -1
  417. package/dist/modules/projects/hooks/list-infinite-projects.hook.mjs +3 -6
  418. package/dist/modules/projects/hooks/list-infinite-projects.hook.mjs.map +1 -1
  419. package/dist/modules/projects/hooks/list-project-users.hook.mjs +3 -6
  420. package/dist/modules/projects/hooks/list-project-users.hook.mjs.map +1 -1
  421. package/dist/modules/projects/hooks/remove-project-users.hook.mjs +25 -0
  422. package/dist/modules/projects/hooks/remove-project-users.hook.mjs.map +1 -0
  423. package/dist/modules/projects/services/project-users.service.mjs +5 -0
  424. package/dist/modules/projects/services/project-users.service.mjs.map +1 -1
  425. package/dist/modules/projects/types.mjs +3 -2
  426. package/dist/modules/projects/types.mjs.map +1 -1
  427. package/dist/modules/subscriptions/actions/cancel-subscription.action.mjs +10 -0
  428. package/dist/modules/subscriptions/actions/cancel-subscription.action.mjs.map +1 -0
  429. package/dist/modules/subscriptions/actions/create-subscription.action.mjs +10 -0
  430. package/dist/modules/subscriptions/actions/create-subscription.action.mjs.map +1 -0
  431. package/dist/modules/subscriptions/actions/find-pending-pix-status.action.mjs +10 -0
  432. package/dist/modules/subscriptions/actions/find-pending-pix-status.action.mjs.map +1 -0
  433. package/dist/modules/subscriptions/actions/find-subscription-by-id.action.mjs +10 -0
  434. package/dist/modules/subscriptions/actions/find-subscription-by-id.action.mjs.map +1 -0
  435. package/dist/modules/subscriptions/constants/addons.constants.mjs +35 -0
  436. package/dist/modules/subscriptions/constants/addons.constants.mjs.map +1 -1
  437. package/dist/modules/subscriptions/constants/downgrade.constants.mjs +25 -0
  438. package/dist/modules/subscriptions/constants/downgrade.constants.mjs.map +1 -0
  439. package/dist/modules/subscriptions/constants/subscription.constants.mjs +2 -0
  440. package/dist/modules/subscriptions/constants/subscription.constants.mjs.map +1 -1
  441. package/dist/modules/subscriptions/handlers/pending-pix-status.handler.mjs +15 -0
  442. package/dist/modules/subscriptions/handlers/pending-pix-status.handler.mjs.map +1 -0
  443. package/dist/modules/subscriptions/hooks/cancel-subscription.hook.mjs +25 -0
  444. package/dist/modules/subscriptions/hooks/cancel-subscription.hook.mjs.map +1 -0
  445. package/dist/modules/subscriptions/hooks/create-subscription.hook.mjs +33 -0
  446. package/dist/modules/subscriptions/hooks/create-subscription.hook.mjs.map +1 -0
  447. package/dist/modules/subscriptions/hooks/find-subscription-by-id.hook.mjs +18 -0
  448. package/dist/modules/subscriptions/hooks/find-subscription-by-id.hook.mjs.map +1 -0
  449. package/dist/modules/subscriptions/hooks/pending-pix-status.hook.mjs +25 -0
  450. package/dist/modules/subscriptions/hooks/pending-pix-status.hook.mjs.map +1 -0
  451. package/dist/modules/subscriptions/services/subscriptions.service.mjs +71 -0
  452. package/dist/modules/subscriptions/services/subscriptions.service.mjs.map +1 -1
  453. package/dist/modules/subscriptions/types/cancel-subscription.type.mjs +9 -0
  454. package/dist/modules/subscriptions/types/cancel-subscription.type.mjs.map +1 -0
  455. package/dist/modules/subscriptions/types/create-subscription.type.mjs +62 -0
  456. package/dist/modules/subscriptions/types/create-subscription.type.mjs.map +1 -0
  457. package/dist/modules/subscriptions/types/pending-pix-status.type.mjs +28 -0
  458. package/dist/modules/subscriptions/types/pending-pix-status.type.mjs.map +1 -0
  459. package/dist/modules/subscriptions/types/subscription.type.mjs +9 -1
  460. package/dist/modules/subscriptions/types/subscription.type.mjs.map +1 -1
  461. package/dist/modules/subscriptions/utils/addon-buckets.mjs +69 -0
  462. package/dist/modules/subscriptions/utils/addon-buckets.mjs.map +1 -0
  463. package/dist/modules/subscriptions/utils/confirm-payment-if-required.mjs +8 -2
  464. package/dist/modules/subscriptions/utils/confirm-payment-if-required.mjs.map +1 -1
  465. package/dist/modules/subscriptions/utils/first-period-pricing.mjs +25 -0
  466. package/dist/modules/subscriptions/utils/first-period-pricing.mjs.map +1 -0
  467. package/dist/modules/subscriptions/utils/is-api-subscription.mjs +8 -0
  468. package/dist/modules/subscriptions/utils/is-api-subscription.mjs.map +1 -0
  469. package/dist/modules/subscriptions/utils/is-boleto-payer.mjs +17 -0
  470. package/dist/modules/subscriptions/utils/is-boleto-payer.mjs.map +1 -0
  471. package/dist/modules/subscriptions/utils/is-free-subscription.mjs +8 -0
  472. package/dist/modules/subscriptions/utils/is-free-subscription.mjs.map +1 -0
  473. package/dist/modules/subscriptions/utils/periodicity.mjs +55 -1
  474. package/dist/modules/subscriptions/utils/periodicity.mjs.map +1 -1
  475. package/dist/modules/subscriptions/utils/resolve-subscription-plan-name.mjs +27 -0
  476. package/dist/modules/subscriptions/utils/resolve-subscription-plan-name.mjs.map +1 -0
  477. package/dist/modules/users/hooks/messages.hook.mjs +3 -5
  478. package/dist/modules/users/hooks/messages.hook.mjs.map +1 -1
  479. package/dist/server.mjs +6 -0
  480. package/dist/server.mjs.map +1 -1
  481. package/dist/store/useAccountModals.mjs +9 -2
  482. package/dist/store/useAccountModals.mjs.map +1 -1
  483. package/dist/store/useAffiliateFlows.mjs +23 -0
  484. package/dist/store/useAffiliateFlows.mjs.map +1 -0
  485. package/dist/store/useProjectFlows.mjs +18 -0
  486. package/dist/store/useProjectFlows.mjs.map +1 -0
  487. package/dist/store/useSubscriptionFlows.mjs +58 -0
  488. package/dist/store/useSubscriptionFlows.mjs.map +1 -0
  489. package/dist/store/useTeamFlows.mjs +15 -0
  490. package/dist/store/useTeamFlows.mjs.map +1 -0
  491. package/dist/testing/factories/coupon.factory.mjs +19 -0
  492. package/dist/testing/factories/coupon.factory.mjs.map +1 -0
  493. package/dist/testing/factories/index.mjs +6 -0
  494. package/dist/testing/factories/index.mjs.map +1 -1
  495. package/dist/testing/factories/project-user.factory.mjs +17 -0
  496. package/dist/testing/factories/project-user.factory.mjs.map +1 -0
  497. package/dist/testing/factories/project.factory.mjs +21 -0
  498. package/dist/testing/factories/project.factory.mjs.map +1 -0
  499. package/dist/testing/react/providers.mjs +1 -1
  500. package/dist/testing/react/providers.mjs.map +1 -1
  501. package/dist/utils/browser/chart-custom-tooltip.mjs +69 -0
  502. package/dist/utils/browser/chart-custom-tooltip.mjs.map +1 -0
  503. package/dist/utils/browser/get-css-variable.mjs +9 -0
  504. package/dist/utils/browser/get-css-variable.mjs.map +1 -0
  505. package/dist/utils/constants/scrollbar.mjs +5 -0
  506. package/dist/utils/constants/scrollbar.mjs.map +1 -0
  507. package/dist/utils/date-filter-period.mjs +34 -0
  508. package/dist/utils/date-filter-period.mjs.map +1 -0
  509. package/dist/utils/file/index.mjs +11 -1
  510. package/dist/utils/file/index.mjs.map +1 -1
  511. package/dist/utils/format/initials.mjs +8 -0
  512. package/dist/utils/format/initials.mjs.map +1 -0
  513. package/dist/utils/format/masks.mjs +32 -1
  514. package/dist/utils/format/masks.mjs.map +1 -1
  515. package/dist/utils/qrcode/to-data-url.mjs +12 -0
  516. package/dist/utils/qrcode/to-data-url.mjs.map +1 -0
  517. package/dist/utils/validators/account.mjs +1 -7
  518. package/dist/utils/validators/account.mjs.map +1 -1
  519. package/package.json +15 -2
  520. package/src/components/account/AccountHubLinkHandler.tsx +39 -0
  521. package/src/components/account/AccountModalLayout.tsx +190 -0
  522. package/src/components/account/AccountModals.tsx +12 -2
  523. package/src/components/account/DeleteAccountModal.tsx +1 -1
  524. package/src/components/account/IsntPossibleDeleteAccountModal.tsx +9 -1
  525. package/src/components/account/MyAccountModal.tsx +215 -0
  526. package/src/components/account/TwoFactorAuthModal.tsx +1 -1
  527. package/src/components/account/hooks/useAccountHubActions.ts +95 -0
  528. package/src/components/account/hooks/useAddCardWithPaymentSwitch.ts +70 -0
  529. package/src/components/account/hooks/useAffiliatesActions.tsx +78 -0
  530. package/src/components/account/hooks/useMyAccountModal.ts +40 -0
  531. package/src/components/account/hooks/useProjectsActions.ts +44 -0
  532. package/src/components/account/hooks/useSubscriptionActions.ts +99 -0
  533. package/src/components/account/hooks/useTeamActions.ts +35 -0
  534. package/src/components/account/sections/AffiliatesSection.tsx +342 -0
  535. package/src/components/account/sections/ChangePasswordSection.tsx +6 -10
  536. package/src/components/account/sections/MyProfileSection.tsx +207 -143
  537. package/src/components/account/sections/PreferencesSection.tsx +55 -51
  538. package/src/components/account/sections/ProjectsSection.tsx +110 -0
  539. package/src/components/account/sections/SecuritySection.tsx +72 -62
  540. package/src/components/account/sections/SubscriptionSection.tsx +36 -0
  541. package/src/components/account/sections/TeamSection.tsx +161 -0
  542. package/src/components/account/sections/TokenSection.tsx +4 -8
  543. package/src/components/account/sections/affiliates/AffiliateCommissionCard.tsx +83 -0
  544. package/src/components/account/sections/affiliates/AffiliateFlows.tsx +20 -0
  545. package/src/components/account/sections/affiliates/AffiliateLeadsSheet.tsx +143 -0
  546. package/src/components/account/sections/affiliates/AffiliateStatsCard.tsx +56 -0
  547. package/src/components/account/sections/affiliates/AffiliateStepCard.tsx +20 -0
  548. package/src/components/account/sections/affiliates/AffiliateTransactionsList.tsx +194 -0
  549. package/src/components/account/sections/affiliates/NoReceivingAccountModal.tsx +63 -0
  550. package/src/components/account/sections/affiliates/ReceivingAccountModal.tsx +213 -0
  551. package/src/components/account/sections/affiliates/RequestWithdrawalSheet.tsx +586 -0
  552. package/src/components/account/sections/affiliates/ViewAttachmentModal.tsx +47 -0
  553. package/src/components/account/sections/affiliates/reports/AffiliatesIndicatorsChart.tsx +45 -0
  554. package/src/components/account/sections/affiliates/reports/AffiliatesReportsTab.tsx +44 -0
  555. package/src/components/account/sections/affiliates/reports/useAffiliatesIndicatorsChart.ts +148 -0
  556. package/src/components/account/sections/projects/DeleteProjectModal.tsx +246 -0
  557. package/src/components/account/sections/projects/ProjectFlows.tsx +16 -0
  558. package/src/components/account/sections/projects/ProjectMembersStack.tsx +75 -0
  559. package/src/components/account/sections/projects/ProjectRow.tsx +96 -0
  560. package/src/components/account/sections/projects/ProjectSheet.tsx +603 -0
  561. package/src/components/account/sections/projects/ProjectsDisabledModal.tsx +69 -0
  562. package/src/components/account/sections/projects/project-form.schema.ts +30 -0
  563. package/src/components/account/sections/shared/ConnectListRow.tsx +68 -0
  564. package/src/components/account/sections/shared/DateFilterPopover.tsx +58 -0
  565. package/src/components/account/sections/shared/EntityAvatar.tsx +54 -0
  566. package/src/components/account/sections/shared/FilterPopover.tsx +79 -0
  567. package/src/components/account/sections/shared/FormSection.tsx +23 -0
  568. package/src/components/account/sections/shared/IconBox.tsx +21 -0
  569. package/src/components/account/sections/shared/InfiniteScrollList.tsx +57 -0
  570. package/src/components/account/sections/shared/ListPagination.tsx +84 -0
  571. package/src/components/account/sections/shared/RowActionsMenu.tsx +66 -0
  572. package/src/components/account/sections/shared/SectionLoadError.tsx +27 -0
  573. package/src/components/account/sections/shared/StatusBadge.tsx +33 -0
  574. package/src/components/account/sections/shared/WorkspaceSection.tsx +22 -0
  575. package/src/components/account/sections/subscription/AiCreditsUsage.tsx +152 -0
  576. package/src/components/account/sections/subscription/BillingAddressSheet.tsx +460 -0
  577. package/src/components/account/sections/subscription/BoletoDetailsDialog.tsx +104 -0
  578. package/src/components/account/sections/subscription/BoletoGeneratedDialog.tsx +24 -0
  579. package/src/components/account/sections/subscription/CancelPlanDialog.tsx +221 -0
  580. package/src/components/account/sections/subscription/ChargeRow.tsx +161 -0
  581. package/src/components/account/sections/subscription/ChargeStatusBadge.tsx +29 -0
  582. package/src/components/account/sections/subscription/ChargesList.tsx +125 -0
  583. package/src/components/account/sections/subscription/ManageCardsSheet.tsx +93 -0
  584. package/src/components/account/sections/subscription/OverdueReceiptOpener.tsx +29 -0
  585. package/src/components/account/sections/subscription/PayChargeDialog.tsx +306 -0
  586. package/src/components/account/sections/subscription/PaymentConfirmationDialog.tsx +70 -0
  587. package/src/components/account/sections/subscription/PaymentMethodsCard.tsx +117 -0
  588. package/src/components/account/sections/subscription/PendingChangeDialog.tsx +168 -0
  589. package/src/components/account/sections/subscription/PixDetailsDialog.tsx +246 -0
  590. package/src/components/account/sections/subscription/PixPaymentDialog.tsx +242 -0
  591. package/src/components/account/sections/subscription/PlanDetailsSheet.tsx +380 -0
  592. package/src/components/account/sections/subscription/ReceiptDetailsSheet.tsx +318 -0
  593. package/src/components/account/sections/subscription/SubscriptionFlows.tsx +40 -0
  594. package/src/components/account/sections/subscription/SubscriptionPlanCard.tsx +433 -0
  595. package/src/components/account/sections/subscription/UsageReportSheet.tsx +244 -0
  596. package/src/components/account/sections/subscription/change-plan/ChangePlanSheet.tsx +95 -0
  597. package/src/components/account/sections/subscription/change-plan/components/AbTestDetailsDialog.tsx +57 -0
  598. package/src/components/account/sections/subscription/change-plan/components/AddonsBlock.tsx +214 -0
  599. package/src/components/account/sections/subscription/change-plan/components/AlternativeBucketsSection.tsx +92 -0
  600. package/src/components/account/sections/subscription/change-plan/components/CouponBlock.tsx +42 -0
  601. package/src/components/account/sections/subscription/change-plan/components/CouponDialog.tsx +134 -0
  602. package/src/components/account/sections/subscription/change-plan/components/PricePreview.tsx +28 -0
  603. package/src/components/account/sections/subscription/change-plan/components/SummaryBlock.tsx +194 -0
  604. package/src/components/account/sections/subscription/change-plan/plan-comparison.ts +52 -0
  605. package/src/components/account/sections/subscription/change-plan/steps/PaymentSummaryStep.tsx +161 -0
  606. package/src/components/account/sections/subscription/change-plan/steps/PlanComparisonStep.tsx +165 -0
  607. package/src/components/account/sections/subscription/change-plan/steps/PlanViewStep.tsx +89 -0
  608. package/src/components/account/sections/subscription/change-plan/steps/ReactivationConfigStep.tsx +117 -0
  609. package/src/components/account/sections/subscription/change-plan/steps/ReactivationPaymentStep.tsx +139 -0
  610. package/src/components/account/sections/subscription/change-plan/useChangePlanState.tsx +1158 -0
  611. package/src/components/account/sections/subscription/downgrade/CannotDowngradeDialog.tsx +297 -0
  612. package/src/components/account/sections/subscription/downgrade/DowngradeReasonDialog.tsx +154 -0
  613. package/src/components/account/sections/subscription/plans/PlanCard.tsx +417 -0
  614. package/src/components/account/sections/subscription/plans/PlanCardSkeleton.tsx +70 -0
  615. package/src/components/account/sections/subscription/plans/PlansCatalogDialog.tsx +156 -0
  616. package/src/components/account/sections/team/DeleteUserModal.tsx +134 -0
  617. package/src/components/account/sections/team/TeamFlows.tsx +14 -0
  618. package/src/components/account/sections/team/TeamMemberRow.tsx +151 -0
  619. package/src/components/account/sections/team/UserSheet.tsx +688 -0
  620. package/src/components/account/sections/team/steps/NotificationsStep.tsx +109 -0
  621. package/src/components/account/sections/team/steps/ProjectSelectionStep.tsx +219 -0
  622. package/src/components/account/sections/team/steps/UserInformationStep.tsx +423 -0
  623. package/src/components/account/sections/team/user-form.schema.ts +43 -0
  624. package/src/components/account/types/workspace-actions.type.ts +56 -0
  625. package/src/components/layouts/ProfilePopover.tsx +11 -12
  626. package/src/components/layouts/UsersSelectorPopover.tsx +7 -4
  627. package/src/components/modals/AccountDeletionWarningModal.tsx +4 -5
  628. package/src/components/modals/AccountFrozenModal.tsx +6 -3
  629. package/src/components/modals/Modals.tsx +6 -3
  630. package/src/components/modals/PaidPlanRequiredModal.tsx +4 -5
  631. package/src/components/modals/cards/AddFirstCardWarningModal.tsx +72 -0
  632. package/src/components/modals/cards/SwitchPaymentToCardModal.tsx +232 -0
  633. package/src/components/modals/promo/AiCreditsOfferModal/AiCreditsOfferModal.tsx +5 -4
  634. package/src/components/ui/data-display/CardItem.tsx +9 -5
  635. package/src/components/ui/data-display/PaymentMethodIcons.tsx +43 -0
  636. package/src/components/ui/form/BillingPeriodSelector.tsx +173 -0
  637. package/src/components/ui/form/PaymentMethodToggle.tsx +119 -0
  638. package/src/components/ui/form/RadioOptionFieldIcon.tsx +64 -0
  639. package/src/components/ui/form/SegmentedControl.tsx +77 -0
  640. package/src/components/ui/overlay/Dialog.tsx +21 -2
  641. package/src/components/ui/overlay/Sheet.tsx +26 -5
  642. package/src/components/ui/overlay/layers.tsx +88 -4
  643. package/src/enums/AccountHubFlow.ts +8 -0
  644. package/src/enums/DateFilterPeriod.ts +17 -0
  645. package/src/enums/WorkspaceSectionType.ts +6 -0
  646. package/src/handlers.ts +14 -0
  647. package/src/hooks/useDebounce.ts +5 -3
  648. package/src/hooks/useUploadProgress.ts +42 -0
  649. package/src/i18n/messages/en-us.ts +904 -2
  650. package/src/i18n/messages/es-es.ts +908 -2
  651. package/src/i18n/messages/pt-br.ts +908 -2
  652. package/src/index.ts +56 -1
  653. package/src/infra/http/paged.ts +24 -0
  654. package/src/middleware.ts +1 -0
  655. package/src/middlewares/create-auth-middleware.ts +1 -4
  656. package/src/middlewares/create-legacy-account-routes-middleware.ts +54 -0
  657. package/src/middlewares/is-route-equals.ts +3 -0
  658. package/src/modules/accounts/actions/account-management.action.ts +22 -1
  659. package/src/modules/accounts/constants/account-hub-link.constants.ts +3 -0
  660. package/src/modules/accounts/constants/legacy-account-routes.constants.ts +1 -0
  661. package/src/modules/accounts/handlers/list-account-members.handler.ts +23 -0
  662. package/src/modules/accounts/hooks/add-user-projects.hook.ts +72 -0
  663. package/src/modules/accounts/hooks/create-account-user.hook.ts +21 -0
  664. package/src/modules/accounts/hooks/remove-user-projects.hook.ts +68 -0
  665. package/src/modules/accounts/hooks/use-account-members.hook.ts +31 -0
  666. package/src/modules/accounts/services/account.service.ts +71 -0
  667. package/src/modules/accounts/types/account-hub-link.type.ts +13 -0
  668. package/src/modules/accounts/types.ts +9 -0
  669. package/src/modules/accounts/utils/build-account-hub-url.ts +14 -0
  670. package/src/modules/accounts/utils/is-account-hub-flow.ts +7 -0
  671. package/src/modules/accounts/utils/is-account-section.ts +7 -0
  672. package/src/modules/accounts/utils/is-my-account-section.ts +12 -0
  673. package/src/modules/accounts/utils/map-legacy-account-route.ts +108 -0
  674. package/src/modules/accounts/utils/parse-account-hub-link.ts +21 -0
  675. package/src/modules/affiliates/actions/ensure-affiliate.action.ts +9 -0
  676. package/src/modules/affiliates/actions/request-deposit.action.ts +9 -0
  677. package/src/modules/affiliates/actions/update-affiliate.action.ts +9 -0
  678. package/src/modules/affiliates/constants/affiliate.constants.ts +11 -0
  679. package/src/modules/affiliates/constants/query-keys.constants.ts +7 -0
  680. package/src/modules/affiliates/handlers/affiliate-report-analytics.handler.ts +16 -0
  681. package/src/modules/affiliates/handlers/affiliate-withdrawal-limits.handler.ts +10 -0
  682. package/src/modules/affiliates/handlers/current-affiliate.handler.ts +10 -0
  683. package/src/modules/affiliates/handlers/list-affiliate-coupons.handler.ts +10 -0
  684. package/src/modules/affiliates/handlers/list-affiliate-leads.handler.ts +23 -0
  685. package/src/modules/affiliates/handlers/list-affiliate-transactions.handler.ts +23 -0
  686. package/src/modules/affiliates/hooks/use-affiliate-coupons.hook.ts +19 -0
  687. package/src/modules/affiliates/hooks/use-affiliate-leads.hook.ts +27 -0
  688. package/src/modules/affiliates/hooks/use-affiliate-report-analytics.hook.ts +19 -0
  689. package/src/modules/affiliates/hooks/use-affiliate-transactions.hook.ts +25 -0
  690. package/src/modules/affiliates/hooks/use-current-affiliate.hook.ts +19 -0
  691. package/src/modules/affiliates/hooks/use-ensure-affiliate.hook.ts +24 -0
  692. package/src/modules/affiliates/hooks/use-request-deposit.hook.ts +29 -0
  693. package/src/modules/affiliates/hooks/use-update-affiliate.hook.ts +24 -0
  694. package/src/modules/affiliates/hooks/use-withdrawal-limits.hook.ts +20 -0
  695. package/src/modules/affiliates/services/affiliates.service.ts +240 -0
  696. package/src/modules/affiliates/types/affiliate.type.ts +180 -0
  697. package/src/modules/affiliates/utils/get-affiliate-share-link.ts +8 -0
  698. package/src/modules/charges/actions/get-nota-fiscal.action.ts +8 -0
  699. package/src/modules/charges/actions/refresh-pix.action.ts +8 -0
  700. package/src/modules/charges/hooks/nota-fiscal.hook.ts +13 -0
  701. package/src/modules/charges/hooks/refresh-pix.hook.ts +13 -0
  702. package/src/modules/charges/services/charges.service.ts +121 -0
  703. package/src/modules/charges/types/nota-fiscal.type.ts +20 -0
  704. package/src/modules/charges/types/refresh-pix.type.ts +14 -0
  705. package/src/modules/charges/utils/get-charge-download-url.ts +10 -0
  706. package/src/modules/coupons/constants/query-keys.constants.ts +1 -0
  707. package/src/modules/coupons/handlers/find-coupon-by-code.handler.ts +16 -0
  708. package/src/modules/coupons/handlers/find-coupon-by-id.handler.ts +15 -0
  709. package/src/modules/coupons/hooks/use-coupon-by-code.hook.ts +16 -0
  710. package/src/modules/coupons/hooks/use-coupon-by-id.hook.ts +20 -0
  711. package/src/modules/coupons/services/coupons.service.ts +54 -0
  712. package/src/modules/coupons/types/coupon.type.ts +70 -0
  713. package/src/modules/coupons/utils/coupon-restrictions.ts +112 -0
  714. package/src/modules/domains/handlers/count-domains.handler.ts +10 -0
  715. package/src/modules/domains/hooks/count-domains.hook.ts +17 -0
  716. package/src/modules/domains/services/domains.service.ts +18 -0
  717. package/src/modules/ia-credits/handlers/list-ia-credit-operations.handler.ts +14 -0
  718. package/src/modules/ia-credits/hooks/ia-credit-operations.hook.ts +33 -0
  719. package/src/modules/ia-credits/services/ia-credits.service.ts +32 -1
  720. package/src/modules/pages/handlers/count-pages.handler.ts +5 -2
  721. package/src/modules/pages/hooks/count-published-pages.hook.ts +26 -0
  722. package/src/modules/pages/services/pages.service.ts +3 -2
  723. package/src/modules/plans/constants/plan-tooltips.constants.ts +16 -0
  724. package/src/modules/plans/hooks/use-enriched-plans.hook.ts +31 -0
  725. package/src/modules/plans/hooks/use-ui-plans.hook.ts +22 -0
  726. package/src/modules/projects/hooks/add-project-users.hook.ts +29 -0
  727. package/src/modules/projects/hooks/list-all-account-users.hook.ts +3 -6
  728. package/src/modules/projects/hooks/list-available-users.hook.ts +3 -6
  729. package/src/modules/projects/hooks/list-infinite-projects.hook.ts +3 -6
  730. package/src/modules/projects/hooks/list-project-users.hook.ts +3 -6
  731. package/src/modules/projects/hooks/remove-project-users.hook.ts +29 -0
  732. package/src/modules/projects/services/project-users.service.ts +135 -130
  733. package/src/modules/projects/types.ts +89 -88
  734. package/src/modules/subscriptions/actions/cancel-subscription.action.ts +12 -0
  735. package/src/modules/subscriptions/actions/create-subscription.action.ts +9 -0
  736. package/src/modules/subscriptions/actions/find-pending-pix-status.action.ts +8 -0
  737. package/src/modules/subscriptions/actions/find-subscription-by-id.action.ts +8 -0
  738. package/src/modules/subscriptions/constants/addons.constants.ts +50 -0
  739. package/src/modules/subscriptions/constants/downgrade.constants.ts +30 -0
  740. package/src/modules/subscriptions/constants/subscription.constants.ts +3 -0
  741. package/src/modules/subscriptions/handlers/pending-pix-status.handler.ts +17 -0
  742. package/src/modules/subscriptions/hooks/cancel-subscription.hook.ts +28 -0
  743. package/src/modules/subscriptions/hooks/create-subscription.hook.ts +34 -0
  744. package/src/modules/subscriptions/hooks/find-subscription-by-id.hook.ts +17 -0
  745. package/src/modules/subscriptions/hooks/pending-pix-status.hook.ts +30 -0
  746. package/src/modules/subscriptions/services/subscriptions.service.ts +401 -301
  747. package/src/modules/subscriptions/types/cancel-subscription.type.ts +8 -0
  748. package/src/modules/subscriptions/types/create-subscription.type.ts +79 -0
  749. package/src/modules/subscriptions/types/pending-pix-status.type.ts +33 -0
  750. package/src/modules/subscriptions/types/subscription.type.ts +157 -147
  751. package/src/modules/subscriptions/utils/addon-buckets.ts +129 -0
  752. package/src/modules/subscriptions/utils/confirm-payment-if-required.ts +9 -2
  753. package/src/modules/subscriptions/utils/first-period-pricing.ts +63 -0
  754. package/src/modules/subscriptions/utils/is-api-subscription.ts +6 -0
  755. package/src/modules/subscriptions/utils/is-boleto-payer.ts +21 -0
  756. package/src/modules/subscriptions/utils/is-free-subscription.ts +6 -0
  757. package/src/modules/subscriptions/utils/periodicity.ts +101 -0
  758. package/src/modules/subscriptions/utils/resolve-subscription-plan-name.ts +44 -0
  759. package/src/modules/users/hooks/messages.hook.ts +3 -5
  760. package/src/server.ts +102 -99
  761. package/src/store/useAccountModals.ts +22 -5
  762. package/src/store/useAffiliateFlows.ts +46 -0
  763. package/src/store/useProjectFlows.ts +42 -0
  764. package/src/store/useSubscriptionFlows.ts +176 -0
  765. package/src/store/useTeamFlows.ts +34 -0
  766. package/src/testing/factories/coupon.factory.ts +17 -0
  767. package/src/testing/factories/index.ts +3 -0
  768. package/src/testing/factories/project-user.factory.ts +15 -0
  769. package/src/testing/factories/project.factory.ts +19 -0
  770. package/src/testing/react/providers.tsx +2 -1
  771. package/src/utils/browser/chart-custom-tooltip.ts +85 -0
  772. package/src/utils/browser/get-css-variable.ts +6 -0
  773. package/src/utils/constants/scrollbar.ts +10 -0
  774. package/src/utils/date-filter-period.ts +34 -0
  775. package/src/utils/file/index.ts +13 -0
  776. package/src/utils/format/initials.ts +10 -0
  777. package/src/utils/format/masks.ts +41 -0
  778. package/src/utils/qrcode/to-data-url.ts +23 -0
  779. package/src/utils/validators/account.ts +0 -8
  780. package/dist/components/account/ConfigurationsMyAccountModal.mjs +0 -143
  781. package/dist/components/account/ConfigurationsMyAccountModal.mjs.map +0 -1
  782. package/dist/components/account/hooks/useConfigurationsModal.mjs +0 -34
  783. package/dist/components/account/hooks/useConfigurationsModal.mjs.map +0 -1
  784. package/src/components/account/ConfigurationsMyAccountModal.tsx +0 -179
  785. package/src/components/account/hooks/useConfigurationsModal.ts +0 -45
@@ -0,0 +1,36 @@
1
+ "use client";
2
+ import { useEffect, useRef } from "react";
3
+ import { usePathname, useRouter, useSearchParams } from "next/navigation";
4
+ import useAccountHubActions from "./hooks/useAccountHubActions";
5
+ import {
6
+ ACCOUNT_HUB_COUPON_PARAM,
7
+ ACCOUNT_HUB_FLOW_PARAM,
8
+ ACCOUNT_HUB_SECTION_PARAM
9
+ } from "../../modules/accounts/constants/account-hub-link.constants";
10
+ import { parseAccountHubLink } from "../../modules/accounts/utils/parse-account-hub-link";
11
+ function AccountHubLinkHandler() {
12
+ const searchParams = useSearchParams();
13
+ const pathname = usePathname();
14
+ const router = useRouter();
15
+ const { openLink } = useAccountHubActions();
16
+ const handledQueryRef = useRef(null);
17
+ const query = searchParams.toString();
18
+ useEffect(() => {
19
+ if (handledQueryRef.current === query) return;
20
+ handledQueryRef.current = query;
21
+ const link = parseAccountHubLink(new URLSearchParams(query));
22
+ if (!link) return;
23
+ openLink(link);
24
+ const remaining = new URLSearchParams(query);
25
+ remaining.delete(ACCOUNT_HUB_SECTION_PARAM);
26
+ remaining.delete(ACCOUNT_HUB_FLOW_PARAM);
27
+ remaining.delete(ACCOUNT_HUB_COUPON_PARAM);
28
+ const remainingQuery = remaining.toString();
29
+ router.replace(remainingQuery ? `${pathname}?${remainingQuery}` : pathname, { scroll: false });
30
+ }, [query, pathname, router, openLink]);
31
+ return null;
32
+ }
33
+ export {
34
+ AccountHubLinkHandler
35
+ };
36
+ //# sourceMappingURL=AccountHubLinkHandler.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/components/account/AccountHubLinkHandler.tsx"],"sourcesContent":["'use client';\n\nimport { useEffect, useRef } from 'react';\nimport { usePathname, useRouter, useSearchParams } from 'next/navigation';\nimport useAccountHubActions from './hooks/useAccountHubActions';\nimport {\n ACCOUNT_HUB_COUPON_PARAM,\n ACCOUNT_HUB_FLOW_PARAM,\n ACCOUNT_HUB_SECTION_PARAM,\n} from '../../modules/accounts/constants/account-hub-link.constants';\nimport { parseAccountHubLink } from '../../modules/accounts/utils/parse-account-hub-link';\n\nexport function AccountHubLinkHandler() {\n const searchParams = useSearchParams();\n const pathname = usePathname();\n const router = useRouter();\n const { openLink } = useAccountHubActions();\n const handledQueryRef = useRef<string | null>(null);\n const query = searchParams.toString();\n\n useEffect(() => {\n if (handledQueryRef.current === query) return;\n handledQueryRef.current = query;\n\n const link = parseAccountHubLink(new URLSearchParams(query));\n if (!link) return;\n\n openLink(link);\n\n const remaining = new URLSearchParams(query);\n remaining.delete(ACCOUNT_HUB_SECTION_PARAM);\n remaining.delete(ACCOUNT_HUB_FLOW_PARAM);\n remaining.delete(ACCOUNT_HUB_COUPON_PARAM);\n const remainingQuery = remaining.toString();\n router.replace(remainingQuery ? `${pathname}?${remainingQuery}` : pathname, { scroll: false });\n }, [query, pathname, router, openLink]);\n\n return null;\n}\n"],"mappings":";AAEA,SAAS,WAAW,cAAc;AAClC,SAAS,aAAa,WAAW,uBAAuB;AACxD,OAAO,0BAA0B;AACjC;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP,SAAS,2BAA2B;AAE7B,SAAS,wBAAwB;AACtC,QAAM,eAAe,gBAAgB;AACrC,QAAM,WAAW,YAAY;AAC7B,QAAM,SAAS,UAAU;AACzB,QAAM,EAAE,SAAS,IAAI,qBAAqB;AAC1C,QAAM,kBAAkB,OAAsB,IAAI;AAClD,QAAM,QAAQ,aAAa,SAAS;AAEpC,YAAU,MAAM;AACd,QAAI,gBAAgB,YAAY,MAAO;AACvC,oBAAgB,UAAU;AAE1B,UAAM,OAAO,oBAAoB,IAAI,gBAAgB,KAAK,CAAC;AAC3D,QAAI,CAAC,KAAM;AAEX,aAAS,IAAI;AAEb,UAAM,YAAY,IAAI,gBAAgB,KAAK;AAC3C,cAAU,OAAO,yBAAyB;AAC1C,cAAU,OAAO,sBAAsB;AACvC,cAAU,OAAO,wBAAwB;AACzC,UAAM,iBAAiB,UAAU,SAAS;AAC1C,WAAO,QAAQ,iBAAiB,GAAG,QAAQ,IAAI,cAAc,KAAK,UAAU,EAAE,QAAQ,MAAM,CAAC;AAAA,EAC/F,GAAG,CAAC,OAAO,UAAU,QAAQ,QAAQ,CAAC;AAEtC,SAAO;AACT;","names":[]}
@@ -0,0 +1,137 @@
1
+ "use client";
2
+ import { jsx, jsxs } from "react/jsx-runtime";
3
+ import { createContext, useCallback, useContext, useEffect, useState } from "react";
4
+ import { IconX } from "@tabler/icons-react";
5
+ import { Dialog, DialogContent, DialogTitle } from "../ui/overlay/Dialog";
6
+ import { Tabs, TabsList, TabsTrigger, TabsContent } from "../ui/data-display/Tabs";
7
+ import { Skeleton } from "../ui/feedback/Skeleton";
8
+ import { cn } from "../../infra/utils/clsx";
9
+ const SectionCountContext = createContext(() => {
10
+ });
11
+ function useSectionCount(count) {
12
+ const setCount = useContext(SectionCountContext);
13
+ useEffect(() => {
14
+ setCount(count);
15
+ return () => setCount(void 0);
16
+ }, [count, setCount]);
17
+ }
18
+ const navItemClasses = cn(
19
+ "group border-0! rounded-lg flex items-center gap-2 h-10 px-2 py-3 transition-colors cursor-pointer",
20
+ // Mesma paleta do menu lateral do gpages (`navigation/NavItem`): selecionado em gray-50.
21
+ "bg-white hover:bg-gray-100 active:bg-gray-50 data-[state=active]:bg-gray-50",
22
+ "text-zinc-500 data-[state=active]:text-zinc-950",
23
+ "paragraph-small-medium data-[state=active]:paragraph-small-semibold",
24
+ "whitespace-nowrap outline-none focus-visible:ring-2 focus-visible:ring-zinc-300",
25
+ // Mobile: os itens viram uma faixa de abas rolável no topo.
26
+ "justify-center lg:justify-start lg:w-full"
27
+ );
28
+ function AccountModalLayout({
29
+ open,
30
+ onClose,
31
+ title,
32
+ sectionTitle,
33
+ activeSection,
34
+ onSectionChange,
35
+ navigation,
36
+ children,
37
+ isLoading = false
38
+ }) {
39
+ const [sectionCount, setSectionCount] = useState(void 0);
40
+ const registerCount = useCallback((count) => setSectionCount(count), []);
41
+ return /* @__PURE__ */ jsx(Dialog, { open, onOpenChange: onClose, children: /* @__PURE__ */ jsx(
42
+ DialogContent,
43
+ {
44
+ showCloseButton: false,
45
+ onOpenAutoFocus: (event) => event.preventDefault(),
46
+ className: cn(
47
+ "max-w-none! p-0 gap-0 flex flex-col lg:flex-row overflow-hidden border-0",
48
+ "rounded-t-2xl rounded-b-none h-[100dvh] w-full top-0 bottom-0 left-0 right-0 translate-x-0 translate-y-0",
49
+ "lg:rounded-lg lg:border lg:shadow-[0px_24px_70px_rgba(9,9,11,0.22)]",
50
+ "lg:top-[50%] lg:bottom-auto lg:left-[50%] lg:right-auto lg:translate-x-[-50%] lg:translate-y-[-50%]",
51
+ "lg:w-[min(1260px,calc(100vw-48px))] lg:h-[min(824px,calc(100dvh-48px))]"
52
+ ),
53
+ children: /* @__PURE__ */ jsxs(
54
+ Tabs,
55
+ {
56
+ value: activeSection,
57
+ onValueChange: onSectionChange,
58
+ orientation: "vertical",
59
+ className: "flex flex-col lg:flex-row w-full h-full flex-1 min-h-0 gap-0",
60
+ children: [
61
+ /* @__PURE__ */ jsxs(
62
+ TabsList,
63
+ {
64
+ className: cn(
65
+ "flex gap-0 bg-transparent border-b-0 shrink-0",
66
+ "lg:flex-col lg:items-stretch lg:justify-start lg:overflow-y-auto [scrollbar-width:auto] [&::-webkit-scrollbar]:w-1.5 [&::-webkit-scrollbar-track]:bg-transparent [&::-webkit-scrollbar-thumb]:rounded-full [&::-webkit-scrollbar-thumb]:bg-zinc-300",
67
+ "lg:w-[280px] lg:shrink-0 lg:border-r lg:border-zinc-200 lg:p-5",
68
+ "flex-row items-center justify-start w-full overflow-x-auto scrollbar-hide px-3 py-2 border-b border-zinc-200 lg:border-b-0",
69
+ "[mask-image:linear-gradient(to_right,transparent,black_16px,black_calc(100%-24px),transparent)] lg:[mask-image:none]"
70
+ ),
71
+ children: [
72
+ /* @__PURE__ */ jsx("span", { className: "hidden lg:block text-zinc-950 paragraph-medium-semibold", children: title }),
73
+ /* @__PURE__ */ jsx("div", { className: "flex flex-row lg:flex-col lg:mt-5 lg:gap-5 lg:w-full", children: isLoading ? /* @__PURE__ */ jsx(AccountModalNavSkeleton, {}) : navigation })
74
+ ]
75
+ }
76
+ ),
77
+ /* @__PURE__ */ jsxs("div", { className: "flex-1 min-w-0 min-h-0 flex flex-col", children: [
78
+ /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-5 border-b border-zinc-200 pt-3 pr-4 pb-3 pl-5 shrink-0", children: [
79
+ /* @__PURE__ */ jsxs(DialogTitle, { className: "text-zinc-950 paragraph-medium-semibold flex-1 min-w-0 truncate", children: [
80
+ sectionTitle,
81
+ sectionCount != null && /* @__PURE__ */ jsxs("span", { className: "text-zinc-500", children: [
82
+ " (",
83
+ sectionCount,
84
+ ")"
85
+ ] })
86
+ ] }),
87
+ /* @__PURE__ */ jsx(
88
+ "button",
89
+ {
90
+ type: "button",
91
+ onClick: onClose,
92
+ "aria-label": "Fechar",
93
+ className: "group shrink-0 inline-flex size-10 items-center justify-center rounded-lg cursor-pointer border-none transition-colors hover:bg-zinc-100",
94
+ children: /* @__PURE__ */ jsx(IconX, { size: 18, className: "text-zinc-500 group-hover:text-zinc-950" })
95
+ }
96
+ )
97
+ ] }),
98
+ /* @__PURE__ */ jsx(SectionCountContext.Provider, { value: registerCount, children: /* @__PURE__ */ jsx("div", { className: "flex-1 min-h-0 flex flex-col", children: isLoading ? /* @__PURE__ */ jsx(AccountModalContentSkeleton, {}) : children }) })
99
+ ] })
100
+ ]
101
+ }
102
+ )
103
+ }
104
+ ) });
105
+ }
106
+ function AccountModalNavSkeleton() {
107
+ return /* @__PURE__ */ jsx("div", { className: "flex flex-row lg:flex-col gap-2 lg:gap-3 w-full", children: Array.from({ length: 6 }).map((_, index) => /* @__PURE__ */ jsx(Skeleton, { className: "h-10 w-24 lg:w-full rounded-lg shrink-0" }, index)) });
108
+ }
109
+ function AccountModalContentSkeleton() {
110
+ return /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-4 p-5 lg:p-6", children: [
111
+ /* @__PURE__ */ jsx(Skeleton, { className: "h-32 w-full rounded-lg" }),
112
+ /* @__PURE__ */ jsx(Skeleton, { className: "h-24 w-full rounded-lg" })
113
+ ] });
114
+ }
115
+ function AccountModalNavGroup({ label, children }) {
116
+ return /* @__PURE__ */ jsxs("div", { className: "contents lg:flex lg:flex-col lg:gap-2", children: [
117
+ /* @__PURE__ */ jsx("span", { className: "hidden lg:block paragraph-xsmall-medium text-zinc-500", children: label }),
118
+ /* @__PURE__ */ jsx("div", { className: "contents lg:flex lg:flex-col lg:gap-0.5", children })
119
+ ] });
120
+ }
121
+ function AccountModalNavItem({ value, icon: Icon, label }) {
122
+ return /* @__PURE__ */ jsxs(TabsTrigger, { value, className: navItemClasses, children: [
123
+ /* @__PURE__ */ jsx(Icon, { size: 18, className: "shrink-0 text-zinc-500 group-data-[state=active]:text-zinc-950" }),
124
+ label
125
+ ] });
126
+ }
127
+ function AccountModalSection({ value, children }) {
128
+ return /* @__PURE__ */ jsx(TabsContent, { value, className: "h-full! relative overflow-hidden", children });
129
+ }
130
+ export {
131
+ AccountModalLayout,
132
+ AccountModalNavGroup,
133
+ AccountModalNavItem,
134
+ AccountModalSection,
135
+ useSectionCount
136
+ };
137
+ //# sourceMappingURL=AccountModalLayout.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/components/account/AccountModalLayout.tsx"],"sourcesContent":["'use client';\n\nimport { createContext, useCallback, useContext, useEffect, useState, type ReactNode } from 'react';\nimport { IconX, type TablerIcon } from '@tabler/icons-react';\nimport { Dialog, DialogContent, DialogTitle } from '../ui/overlay/Dialog';\nimport { Tabs, TabsList, TabsTrigger, TabsContent } from '../ui/data-display/Tabs';\nimport { Skeleton } from '../ui/feedback/Skeleton';\nimport { cn } from '../../infra/utils/clsx';\n\n/** Contagem exibida ao lado do título no topo; cada seção informa a sua. */\nconst SectionCountContext = createContext<(count?: number) => void>(() => {});\n\nexport function useSectionCount(count?: number) {\n const setCount = useContext(SectionCountContext);\n\n useEffect(() => {\n setCount(count);\n return () => setCount(undefined);\n }, [count, setCount]);\n}\n\nconst navItemClasses = cn(\n 'group border-0! rounded-lg flex items-center gap-2 h-10 px-2 py-3 transition-colors cursor-pointer',\n // Mesma paleta do menu lateral do gpages (`navigation/NavItem`): selecionado em gray-50.\n 'bg-white hover:bg-gray-100 active:bg-gray-50 data-[state=active]:bg-gray-50',\n 'text-zinc-500 data-[state=active]:text-zinc-950',\n 'paragraph-small-medium data-[state=active]:paragraph-small-semibold',\n 'whitespace-nowrap outline-none focus-visible:ring-2 focus-visible:ring-zinc-300',\n // Mobile: os itens viram uma faixa de abas rolável no topo.\n 'justify-center lg:justify-start lg:w-full'\n);\n\ntype AccountModalLayoutProps = {\n open: boolean;\n onClose: () => void;\n /** Título do menu lateral. */\n title: string;\n /** Título da seção aberta, no topo do conteúdo. */\n sectionTitle: string;\n activeSection: string;\n onSectionChange: (section: string) => void;\n /** Menu lateral: `AccountModalNavGroup` com `AccountModalNavItem`. */\n navigation: ReactNode;\n /** Conteúdo das seções (`AccountModalSection`). */\n children: ReactNode;\n /** Perfil ainda carregando: o menu e o conteúdo esperam em vez de cair numa seção qualquer. */\n isLoading?: boolean;\n};\n\n/**\n * Casca do modal Minha conta, no mesmo padrão do modal de configurações de página: menu lateral\n * à esquerda e, à direita, topo com o título da seção e o X sobre uma divisória.\n */\nexport function AccountModalLayout({\n open,\n onClose,\n title,\n sectionTitle,\n activeSection,\n onSectionChange,\n navigation,\n children,\n isLoading = false,\n}: AccountModalLayoutProps) {\n const [sectionCount, setSectionCount] = useState<number | undefined>(undefined);\n const registerCount = useCallback((count?: number) => setSectionCount(count), []);\n\n return (\n <Dialog open={open} onOpenChange={onClose}>\n <DialogContent\n showCloseButton={false}\n onOpenAutoFocus={(event) => event.preventDefault()}\n className={cn(\n 'max-w-none! p-0 gap-0 flex flex-col lg:flex-row overflow-hidden border-0',\n 'rounded-t-2xl rounded-b-none h-[100dvh] w-full top-0 bottom-0 left-0 right-0 translate-x-0 translate-y-0',\n 'lg:rounded-lg lg:border lg:shadow-[0px_24px_70px_rgba(9,9,11,0.22)]',\n 'lg:top-[50%] lg:bottom-auto lg:left-[50%] lg:right-auto lg:translate-x-[-50%] lg:translate-y-[-50%]',\n 'lg:w-[min(1260px,calc(100vw-48px))] lg:h-[min(824px,calc(100dvh-48px))]'\n )}\n >\n <Tabs\n value={activeSection}\n onValueChange={onSectionChange}\n orientation=\"vertical\"\n className=\"flex flex-col lg:flex-row w-full h-full flex-1 min-h-0 gap-0\"\n >\n <TabsList\n className={cn(\n 'flex gap-0 bg-transparent border-b-0 shrink-0',\n 'lg:flex-col lg:items-stretch lg:justify-start lg:overflow-y-auto [scrollbar-width:auto] [&::-webkit-scrollbar]:w-1.5 [&::-webkit-scrollbar-track]:bg-transparent [&::-webkit-scrollbar-thumb]:rounded-full [&::-webkit-scrollbar-thumb]:bg-zinc-300',\n 'lg:w-[280px] lg:shrink-0 lg:border-r lg:border-zinc-200 lg:p-5',\n 'flex-row items-center justify-start w-full overflow-x-auto scrollbar-hide px-3 py-2 border-b border-zinc-200 lg:border-b-0',\n '[mask-image:linear-gradient(to_right,transparent,black_16px,black_calc(100%-24px),transparent)] lg:[mask-image:none]'\n )}\n >\n <span className=\"hidden lg:block text-zinc-950 paragraph-medium-semibold\">{title}</span>\n <div className=\"flex flex-row lg:flex-col lg:mt-5 lg:gap-5 lg:w-full\">\n {isLoading ? <AccountModalNavSkeleton /> : navigation}\n </div>\n </TabsList>\n\n <div className=\"flex-1 min-w-0 min-h-0 flex flex-col\">\n <div className=\"flex items-center gap-5 border-b border-zinc-200 pt-3 pr-4 pb-3 pl-5 shrink-0\">\n <DialogTitle className=\"text-zinc-950 paragraph-medium-semibold flex-1 min-w-0 truncate\">\n {sectionTitle}\n {sectionCount != null && <span className=\"text-zinc-500\"> ({sectionCount})</span>}\n </DialogTitle>\n <button\n type=\"button\"\n onClick={onClose}\n aria-label=\"Fechar\"\n className=\"group shrink-0 inline-flex size-10 items-center justify-center rounded-lg cursor-pointer border-none transition-colors hover:bg-zinc-100\"\n >\n <IconX size={18} className=\"text-zinc-500 group-hover:text-zinc-950\" />\n </button>\n </div>\n\n <SectionCountContext.Provider value={registerCount}>\n <div className=\"flex-1 min-h-0 flex flex-col\">\n {isLoading ? <AccountModalContentSkeleton /> : children}\n </div>\n </SectionCountContext.Provider>\n </div>\n </Tabs>\n </DialogContent>\n </Dialog>\n );\n}\n\nfunction AccountModalNavSkeleton() {\n return (\n <div className=\"flex flex-row lg:flex-col gap-2 lg:gap-3 w-full\">\n {Array.from({ length: 6 }).map((_, index) => (\n <Skeleton key={index} className=\"h-10 w-24 lg:w-full rounded-lg shrink-0\" />\n ))}\n </div>\n );\n}\n\nfunction AccountModalContentSkeleton() {\n return (\n <div className=\"flex flex-col gap-4 p-5 lg:p-6\">\n <Skeleton className=\"h-32 w-full rounded-lg\" />\n <Skeleton className=\"h-24 w-full rounded-lg\" />\n </div>\n );\n}\n\ntype AccountModalNavGroupProps = {\n label: string;\n children: ReactNode;\n};\n\n/** Grupo do menu lateral. No mobile os itens de todos os grupos viram uma única faixa de abas. */\nexport function AccountModalNavGroup({ label, children }: AccountModalNavGroupProps) {\n return (\n <div className=\"contents lg:flex lg:flex-col lg:gap-2\">\n <span className=\"hidden lg:block paragraph-xsmall-medium text-zinc-500\">{label}</span>\n <div className=\"contents lg:flex lg:flex-col lg:gap-0.5\">{children}</div>\n </div>\n );\n}\n\ntype AccountModalNavItemProps = {\n value: string;\n icon: TablerIcon;\n label: string;\n};\n\nexport function AccountModalNavItem({ value, icon: Icon, label }: AccountModalNavItemProps) {\n return (\n <TabsTrigger value={value} className={navItemClasses}>\n <Icon size={18} className=\"shrink-0 text-zinc-500 group-data-[state=active]:text-zinc-950\" />\n {label}\n </TabsTrigger>\n );\n}\n\ntype AccountModalSectionProps = {\n value: string;\n children: ReactNode;\n};\n\nexport function AccountModalSection({ value, children }: AccountModalSectionProps) {\n return (\n <TabsContent value={value} className=\"h-full! relative overflow-hidden\">\n {children}\n </TabsContent>\n );\n}\n"],"mappings":"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","names":[]}
@@ -1,15 +1,22 @@
1
1
  "use client";
2
2
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
3
- import ConfigurationsMyAccountModal from "./ConfigurationsMyAccountModal";
3
+ import { Suspense } from "react";
4
+ import MyAccountModal from "./MyAccountModal";
5
+ import { AccountHubLinkHandler } from "./AccountHubLinkHandler";
6
+ import AddFirstCardWarningModal from "../modals/cards/AddFirstCardWarningModal";
7
+ import SwitchPaymentToCardModal from "../modals/cards/SwitchPaymentToCardModal";
4
8
  import DeleteAccountModal from "./DeleteAccountModal";
5
9
  import IsntPossibleDeleteAccountModal from "./IsntPossibleDeleteAccountModal";
6
10
  import ConfirmDeleteAccountModal from "./ConfirmDeleteAccountModal";
7
11
  function AccountModals() {
8
12
  return /* @__PURE__ */ jsxs(Fragment, { children: [
9
- /* @__PURE__ */ jsx(ConfigurationsMyAccountModal, {}),
13
+ /* @__PURE__ */ jsx(Suspense, { fallback: null, children: /* @__PURE__ */ jsx(AccountHubLinkHandler, {}) }),
14
+ /* @__PURE__ */ jsx(MyAccountModal, {}),
10
15
  /* @__PURE__ */ jsx(DeleteAccountModal, {}),
11
16
  /* @__PURE__ */ jsx(IsntPossibleDeleteAccountModal, {}),
12
- /* @__PURE__ */ jsx(ConfirmDeleteAccountModal, {})
17
+ /* @__PURE__ */ jsx(ConfirmDeleteAccountModal, {}),
18
+ /* @__PURE__ */ jsx(AddFirstCardWarningModal, {}),
19
+ /* @__PURE__ */ jsx(SwitchPaymentToCardModal, {})
13
20
  ] });
14
21
  }
15
22
  export {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/account/AccountModals.tsx"],"sourcesContent":["'use client';\n\nimport ConfigurationsMyAccountModal from './ConfigurationsMyAccountModal';\nimport DeleteAccountModal from './DeleteAccountModal';\nimport IsntPossibleDeleteAccountModal from './IsntPossibleDeleteAccountModal';\nimport ConfirmDeleteAccountModal from './ConfirmDeleteAccountModal';\n\nexport default function AccountModals() {\n return (\n <>\n <ConfigurationsMyAccountModal />\n <DeleteAccountModal />\n <IsntPossibleDeleteAccountModal />\n <ConfirmDeleteAccountModal />\n </>\n );\n}\n"],"mappings":";AASI,mBACE,KADF;AAPJ,OAAO,kCAAkC;AACzC,OAAO,wBAAwB;AAC/B,OAAO,oCAAoC;AAC3C,OAAO,+BAA+B;AAEvB,SAAR,gBAAiC;AACtC,SACE,iCACE;AAAA,wBAAC,gCAA6B;AAAA,IAC9B,oBAAC,sBAAmB;AAAA,IACpB,oBAAC,kCAA+B;AAAA,IAChC,oBAAC,6BAA0B;AAAA,KAC7B;AAEJ;","names":[]}
1
+ {"version":3,"sources":["../../../src/components/account/AccountModals.tsx"],"sourcesContent":["'use client';\n\nimport { Suspense } from 'react';\nimport MyAccountModal from './MyAccountModal';\nimport { AccountHubLinkHandler } from './AccountHubLinkHandler';\nimport AddFirstCardWarningModal from '../modals/cards/AddFirstCardWarningModal';\nimport SwitchPaymentToCardModal from '../modals/cards/SwitchPaymentToCardModal';\nimport DeleteAccountModal from './DeleteAccountModal';\nimport IsntPossibleDeleteAccountModal from './IsntPossibleDeleteAccountModal';\nimport ConfirmDeleteAccountModal from './ConfirmDeleteAccountModal';\n\nexport default function AccountModals() {\n return (\n <>\n <Suspense fallback={null}>\n <AccountHubLinkHandler />\n </Suspense>\n <MyAccountModal />\n <DeleteAccountModal />\n <IsntPossibleDeleteAccountModal />\n <ConfirmDeleteAccountModal />\n {/* Cartões: montados aqui para todo app que usa o modal ganhar o fluxo sem registrar nada. */}\n <AddFirstCardWarningModal />\n <SwitchPaymentToCardModal />\n </>\n );\n}\n"],"mappings":";AAaI,mBAEI,KAFJ;AAXJ,SAAS,gBAAgB;AACzB,OAAO,oBAAoB;AAC3B,SAAS,6BAA6B;AACtC,OAAO,8BAA8B;AACrC,OAAO,8BAA8B;AACrC,OAAO,wBAAwB;AAC/B,OAAO,oCAAoC;AAC3C,OAAO,+BAA+B;AAEvB,SAAR,gBAAiC;AACtC,SACE,iCACE;AAAA,wBAAC,YAAS,UAAU,MAClB,8BAAC,yBAAsB,GACzB;AAAA,IACA,oBAAC,kBAAe;AAAA,IAChB,oBAAC,sBAAmB;AAAA,IACpB,oBAAC,kCAA+B;AAAA,IAChC,oBAAC,6BAA0B;AAAA,IAE3B,oBAAC,4BAAyB;AAAA,IAC1B,oBAAC,4BAAyB;AAAA,KAC5B;AAEJ;","names":[]}
@@ -66,7 +66,7 @@ function DeleteAccountModal() {
66
66
  openConfirmDelete({ password });
67
67
  resetForm();
68
68
  };
69
- return /* @__PURE__ */ jsx(Dialog, { open, onOpenChange: handleClose, children: /* @__PURE__ */ jsx(DialogContent, { className: "flex flex-col p-0 gap-0 max-w-full sm:max-w-full border-0 rounded-t-2xl rounded-b-none h-[100dvh] top-0 bottom-0 left-0 right-0 translate-x-0 translate-y-0 lg:max-w-lg lg:h-auto lg:max-h-[90vh] lg:rounded-lg lg:border lg:top-[50%] lg:left-[50%] lg:right-auto lg:bottom-auto lg:translate-x-[-50%] lg:translate-y-[-50%] overflow-y-auto", children: /* @__PURE__ */ jsxs("form", { onSubmit: handleDelete, className: "flex flex-col flex-1 lg:flex-none", children: [
69
+ return /* @__PURE__ */ jsx(Dialog, { open, onOpenChange: handleClose, children: /* @__PURE__ */ jsx(DialogContent, { className: "flex flex-col p-0 gap-0 max-w-full sm:max-w-full border-0 rounded-t-2xl rounded-b-none h-[100dvh] top-0 bottom-0 left-0 right-0 translate-x-0 translate-y-0 lg:max-w-lg lg:h-auto lg:max-h-[90vh] lg:rounded-lg lg:border lg:top-[50%] lg:left-[50%] lg:right-auto lg:bottom-auto lg:translate-x-[-50%] lg:translate-y-[-50%] overflow-y-auto [scrollbar-width:auto] [&::-webkit-scrollbar]:w-1.5 [&::-webkit-scrollbar-track]:bg-transparent [&::-webkit-scrollbar-thumb]:rounded-full [&::-webkit-scrollbar-thumb]:bg-zinc-300", children: /* @__PURE__ */ jsxs("form", { onSubmit: handleDelete, className: "flex flex-col flex-1 lg:flex-none", children: [
70
70
  /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-6 p-4 lg:p-6 flex-1 lg:flex-none", children: [
71
71
  /* @__PURE__ */ jsxs(DialogHeader, { className: "p-0", children: [
72
72
  /* @__PURE__ */ jsx("div", { className: "flex items-center justify-center w-fit bg-red-50 rounded-lg p-2.5 mb-5", children: /* @__PURE__ */ jsx(IconAlertTriangle, { size: 20, className: "text-red-500" }) }),
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/account/DeleteAccountModal.tsx"],"sourcesContent":["'use client';\n\nimport { useState, useCallback, useEffect } from 'react';\nimport { useTranslations } from 'next-intl';\nimport { IconLock, IconAlertTriangle } from '@tabler/icons-react';\nimport { toast } from 'sonner';\nimport { Dialog, DialogContent, DialogDescription, DialogHeader, DialogTitle } from '../ui/overlay/Dialog';\nimport { Button } from '../ui/buttons/Button';\nimport { FormField } from '../ui/form/FormField';\nimport { SelectField } from '../ui/form/SelectField';\nimport { TextAreaField } from '../ui/form/TextAreaField';\nimport { Toast } from '../ui/feedback/Toast';\nimport usePasswordVisibility from '../../hooks/usePasswordVisibility';\nimport { useAccountModals } from '../../store/useAccountModals';\nimport { AccountSectionType } from '../../enums/AccountSectionType';\n\nexport default function DeleteAccountModal() {\n const translate = useTranslations();\n const reasonOptions = [\n { value: 'sem-funcao', label: translate('common.account.deleteAccount.reasons.noFeature') },\n { value: 'problemas', label: translate('common.account.deleteAccount.reasons.technical') },\n { value: 'suporte', label: translate('common.account.deleteAccount.reasons.support') },\n { value: 'demora', label: translate('common.account.deleteAccount.reasons.updates') },\n { value: 'temporario', label: translate('common.account.deleteAccount.reasons.temporary') },\n { value: 'outro', label: translate('common.account.deleteAccount.reasons.other') },\n ];\n const {\n activeModal,\n deleteAccountError,\n openConfigurations,\n openConfirmDelete,\n clearDeleteAccountError,\n } = useAccountModals();\n const open = activeModal === 'deleteAccount';\n\n const [reason, setReason] = useState('');\n const [description, setDescription] = useState('');\n const [password, setPassword] = useState('');\n const { showPassword, togglePassword } = usePasswordVisibility();\n\n const isFormValid = Boolean(reason && description && password);\n\n const resetForm = useCallback(() => {\n setReason('');\n setDescription('');\n setPassword('');\n }, []);\n\n // Quando o modal deixa de estar aberto, limpa o erro residual do store\n // pra não aparecer numa próxima abertura vinda de fluxo limpo.\n useEffect(() => {\n if (!open) {\n clearDeleteAccountError();\n }\n }, [open, clearDeleteAccountError]);\n\n const handleClose = () => {\n resetForm();\n openConfigurations(AccountSectionType.SECURITY);\n };\n\n const handleDelete = (e: React.FormEvent) => {\n e.preventDefault();\n if (!isFormValid) {\n toast.custom((toastId) => (\n <Toast\n variant=\"error\"\n message={translate('common.account.deleteAccount.requiredFields')}\n toastId={toastId}\n />\n ));\n return;\n }\n openConfirmDelete({ password });\n // Campos locais podem ser limpos — o payload já está no store.\n resetForm();\n };\n\n return (\n <Dialog open={open} onOpenChange={handleClose}>\n <DialogContent className=\"flex flex-col p-0 gap-0 max-w-full sm:max-w-full border-0 rounded-t-2xl rounded-b-none h-[100dvh] top-0 bottom-0 left-0 right-0 translate-x-0 translate-y-0 lg:max-w-lg lg:h-auto lg:max-h-[90vh] lg:rounded-lg lg:border lg:top-[50%] lg:left-[50%] lg:right-auto lg:bottom-auto lg:translate-x-[-50%] lg:translate-y-[-50%] overflow-y-auto\">\n <form onSubmit={handleDelete} className=\"flex flex-col flex-1 lg:flex-none\">\n <div className=\"flex flex-col gap-6 p-4 lg:p-6 flex-1 lg:flex-none\">\n <DialogHeader className=\"p-0\">\n <div className=\"flex items-center justify-center w-fit bg-red-50 rounded-lg p-2.5 mb-5\">\n <IconAlertTriangle size={20} className=\"text-red-500\" />\n </div>\n <DialogTitle>{translate('common.account.deleteAccount.title')}</DialogTitle>\n <DialogDescription className=\"paragraph-small-regular\">\n {translate.rich('common.account.deleteAccount.description', {\n b: (chunks) => (\n <span className=\"font-semibold text-gray-950\">{chunks}</span>\n ),\n })}\n </DialogDescription>\n </DialogHeader>\n\n <SelectField\n label={translate('common.account.deleteAccount.reasonLabel')}\n required\n placeholder={translate('common.account.deleteAccount.reasonPlaceholder')}\n options={reasonOptions}\n value={reason}\n onChange={(value) => setReason(value as string)}\n className=\"h-10!\"\n />\n\n <div>\n <TextAreaField\n label={translate('common.account.deleteAccount.descriptionLabel')}\n required\n placeholder={translate('common.account.deleteAccount.descriptionPlaceholder')}\n value={description}\n onChange={(e) => setDescription(e.target.value)}\n rows={4}\n maxLength={400}\n />\n <span className=\"paragraph-xsmall-medium text-gray-600 text-left mt-1 block\">\n {translate('common.account.deleteAccount.charactersCount', {\n count: String(description.length),\n })}\n </span>\n </div>\n\n <FormField\n className=\"text-gray-600\"\n label={translate('common.account.deleteAccount.passwordLabel')}\n type=\"password\"\n placeholder={translate('common.account.deleteAccount.passwordPlaceholder')}\n leftIcon={IconLock}\n value={password}\n onChange={(e) => {\n setPassword(e.target.value);\n if (deleteAccountError) clearDeleteAccountError();\n }}\n classnameContainer=\"h-10!\"\n showPassword={showPassword}\n onTogglePassword={togglePassword}\n error={!!deleteAccountError}\n errorMessage={deleteAccountError ?? undefined}\n />\n </div>\n\n <div className=\"flex flex-row items-center justify-start gap-2 p-4 lg:p-6 border-t border-gray-200 bg-white mt-auto lg:mt-0\">\n <Button\n variant=\"default\"\n className=\"h-10\"\n type=\"submit\"\n >\n {translate('common.account.deleteAccount.submit')}\n </Button>\n <Button variant=\"secondary\" className=\"h-10\" type=\"button\" onClick={handleClose}>\n {translate('common.actions.close')}\n </Button>\n </div>\n </form>\n </DialogContent>\n </Dialog>\n );\n}\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../../../src/components/account/DeleteAccountModal.tsx"],"sourcesContent":["'use client';\n\nimport { useState, useCallback, useEffect } from 'react';\nimport { useTranslations } from 'next-intl';\nimport { IconLock, IconAlertTriangle } from '@tabler/icons-react';\nimport { toast } from 'sonner';\nimport { Dialog, DialogContent, DialogDescription, DialogHeader, DialogTitle } from '../ui/overlay/Dialog';\nimport { Button } from '../ui/buttons/Button';\nimport { FormField } from '../ui/form/FormField';\nimport { SelectField } from '../ui/form/SelectField';\nimport { TextAreaField } from '../ui/form/TextAreaField';\nimport { Toast } from '../ui/feedback/Toast';\nimport usePasswordVisibility from '../../hooks/usePasswordVisibility';\nimport { useAccountModals } from '../../store/useAccountModals';\nimport { AccountSectionType } from '../../enums/AccountSectionType';\n\nexport default function DeleteAccountModal() {\n const translate = useTranslations();\n const reasonOptions = [\n { value: 'sem-funcao', label: translate('common.account.deleteAccount.reasons.noFeature') },\n { value: 'problemas', label: translate('common.account.deleteAccount.reasons.technical') },\n { value: 'suporte', label: translate('common.account.deleteAccount.reasons.support') },\n { value: 'demora', label: translate('common.account.deleteAccount.reasons.updates') },\n { value: 'temporario', label: translate('common.account.deleteAccount.reasons.temporary') },\n { value: 'outro', label: translate('common.account.deleteAccount.reasons.other') },\n ];\n const {\n activeModal,\n deleteAccountError,\n openConfigurations,\n openConfirmDelete,\n clearDeleteAccountError,\n } = useAccountModals();\n const open = activeModal === 'deleteAccount';\n\n const [reason, setReason] = useState('');\n const [description, setDescription] = useState('');\n const [password, setPassword] = useState('');\n const { showPassword, togglePassword } = usePasswordVisibility();\n\n const isFormValid = Boolean(reason && description && password);\n\n const resetForm = useCallback(() => {\n setReason('');\n setDescription('');\n setPassword('');\n }, []);\n\n // Quando o modal deixa de estar aberto, limpa o erro residual do store\n // pra não aparecer numa próxima abertura vinda de fluxo limpo.\n useEffect(() => {\n if (!open) {\n clearDeleteAccountError();\n }\n }, [open, clearDeleteAccountError]);\n\n const handleClose = () => {\n resetForm();\n openConfigurations(AccountSectionType.SECURITY);\n };\n\n const handleDelete = (e: React.FormEvent) => {\n e.preventDefault();\n if (!isFormValid) {\n toast.custom((toastId) => (\n <Toast\n variant=\"error\"\n message={translate('common.account.deleteAccount.requiredFields')}\n toastId={toastId}\n />\n ));\n return;\n }\n openConfirmDelete({ password });\n // Campos locais podem ser limpos — o payload já está no store.\n resetForm();\n };\n\n return (\n <Dialog open={open} onOpenChange={handleClose}>\n <DialogContent className=\"flex flex-col p-0 gap-0 max-w-full sm:max-w-full border-0 rounded-t-2xl rounded-b-none h-[100dvh] top-0 bottom-0 left-0 right-0 translate-x-0 translate-y-0 lg:max-w-lg lg:h-auto lg:max-h-[90vh] lg:rounded-lg lg:border lg:top-[50%] lg:left-[50%] lg:right-auto lg:bottom-auto lg:translate-x-[-50%] lg:translate-y-[-50%] overflow-y-auto [scrollbar-width:auto] [&::-webkit-scrollbar]:w-1.5 [&::-webkit-scrollbar-track]:bg-transparent [&::-webkit-scrollbar-thumb]:rounded-full [&::-webkit-scrollbar-thumb]:bg-zinc-300\">\n <form onSubmit={handleDelete} className=\"flex flex-col flex-1 lg:flex-none\">\n <div className=\"flex flex-col gap-6 p-4 lg:p-6 flex-1 lg:flex-none\">\n <DialogHeader className=\"p-0\">\n <div className=\"flex items-center justify-center w-fit bg-red-50 rounded-lg p-2.5 mb-5\">\n <IconAlertTriangle size={20} className=\"text-red-500\" />\n </div>\n <DialogTitle>{translate('common.account.deleteAccount.title')}</DialogTitle>\n <DialogDescription className=\"paragraph-small-regular\">\n {translate.rich('common.account.deleteAccount.description', {\n b: (chunks) => (\n <span className=\"font-semibold text-gray-950\">{chunks}</span>\n ),\n })}\n </DialogDescription>\n </DialogHeader>\n\n <SelectField\n label={translate('common.account.deleteAccount.reasonLabel')}\n required\n placeholder={translate('common.account.deleteAccount.reasonPlaceholder')}\n options={reasonOptions}\n value={reason}\n onChange={(value) => setReason(value as string)}\n className=\"h-10!\"\n />\n\n <div>\n <TextAreaField\n label={translate('common.account.deleteAccount.descriptionLabel')}\n required\n placeholder={translate('common.account.deleteAccount.descriptionPlaceholder')}\n value={description}\n onChange={(e) => setDescription(e.target.value)}\n rows={4}\n maxLength={400}\n />\n <span className=\"paragraph-xsmall-medium text-gray-600 text-left mt-1 block\">\n {translate('common.account.deleteAccount.charactersCount', {\n count: String(description.length),\n })}\n </span>\n </div>\n\n <FormField\n className=\"text-gray-600\"\n label={translate('common.account.deleteAccount.passwordLabel')}\n type=\"password\"\n placeholder={translate('common.account.deleteAccount.passwordPlaceholder')}\n leftIcon={IconLock}\n value={password}\n onChange={(e) => {\n setPassword(e.target.value);\n if (deleteAccountError) clearDeleteAccountError();\n }}\n classnameContainer=\"h-10!\"\n showPassword={showPassword}\n onTogglePassword={togglePassword}\n error={!!deleteAccountError}\n errorMessage={deleteAccountError ?? undefined}\n />\n </div>\n\n <div className=\"flex flex-row items-center justify-start gap-2 p-4 lg:p-6 border-t border-gray-200 bg-white mt-auto lg:mt-0\">\n <Button\n variant=\"default\"\n className=\"h-10\"\n type=\"submit\"\n >\n {translate('common.account.deleteAccount.submit')}\n </Button>\n <Button variant=\"secondary\" className=\"h-10\" type=\"button\" onClick={handleClose}>\n {translate('common.actions.close')}\n </Button>\n </div>\n </form>\n </DialogContent>\n </Dialog>\n );\n}\n"],"mappings":";AAiEQ,cAkBI,YAlBJ;AA/DR,SAAS,UAAU,aAAa,iBAAiB;AACjD,SAAS,uBAAuB;AAChC,SAAS,UAAU,yBAAyB;AAC5C,SAAS,aAAa;AACtB,SAAS,QAAQ,eAAe,mBAAmB,cAAc,mBAAmB;AACpF,SAAS,cAAc;AACvB,SAAS,iBAAiB;AAC1B,SAAS,mBAAmB;AAC5B,SAAS,qBAAqB;AAC9B,SAAS,aAAa;AACtB,OAAO,2BAA2B;AAClC,SAAS,wBAAwB;AACjC,SAAS,0BAA0B;AAEpB,SAAR,qBAAsC;AAC3C,QAAM,YAAY,gBAAgB;AAClC,QAAM,gBAAgB;AAAA,IACpB,EAAE,OAAO,cAAc,OAAO,UAAU,gDAAgD,EAAE;AAAA,IAC1F,EAAE,OAAO,aAAa,OAAO,UAAU,gDAAgD,EAAE;AAAA,IACzF,EAAE,OAAO,WAAW,OAAO,UAAU,8CAA8C,EAAE;AAAA,IACrF,EAAE,OAAO,UAAU,OAAO,UAAU,8CAA8C,EAAE;AAAA,IACpF,EAAE,OAAO,cAAc,OAAO,UAAU,gDAAgD,EAAE;AAAA,IAC1F,EAAE,OAAO,SAAS,OAAO,UAAU,4CAA4C,EAAE;AAAA,EACnF;AACA,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,IAAI,iBAAiB;AACrB,QAAM,OAAO,gBAAgB;AAE7B,QAAM,CAAC,QAAQ,SAAS,IAAI,SAAS,EAAE;AACvC,QAAM,CAAC,aAAa,cAAc,IAAI,SAAS,EAAE;AACjD,QAAM,CAAC,UAAU,WAAW,IAAI,SAAS,EAAE;AAC3C,QAAM,EAAE,cAAc,eAAe,IAAI,sBAAsB;AAE/D,QAAM,cAAc,QAAQ,UAAU,eAAe,QAAQ;AAE7D,QAAM,YAAY,YAAY,MAAM;AAClC,cAAU,EAAE;AACZ,mBAAe,EAAE;AACjB,gBAAY,EAAE;AAAA,EAChB,GAAG,CAAC,CAAC;AAIL,YAAU,MAAM;AACd,QAAI,CAAC,MAAM;AACT,8BAAwB;AAAA,IAC1B;AAAA,EACF,GAAG,CAAC,MAAM,uBAAuB,CAAC;AAElC,QAAM,cAAc,MAAM;AACxB,cAAU;AACV,uBAAmB,mBAAmB,QAAQ;AAAA,EAChD;AAEA,QAAM,eAAe,CAAC,MAAuB;AAC3C,MAAE,eAAe;AACjB,QAAI,CAAC,aAAa;AAChB,YAAM,OAAO,CAAC,YACZ;AAAA,QAAC;AAAA;AAAA,UACC,SAAQ;AAAA,UACR,SAAS,UAAU,6CAA6C;AAAA,UAChE;AAAA;AAAA,MACF,CACD;AACD;AAAA,IACF;AACA,sBAAkB,EAAE,SAAS,CAAC;AAE9B,cAAU;AAAA,EACZ;AAEA,SACE,oBAAC,UAAO,MAAY,cAAc,aAChC,8BAAC,iBAAc,WAAU,ogBACvB,+BAAC,UAAK,UAAU,cAAc,WAAU,qCACtC;AAAA,yBAAC,SAAI,WAAU,sDACb;AAAA,2BAAC,gBAAa,WAAU,OACtB;AAAA,4BAAC,SAAI,WAAU,0EACb,8BAAC,qBAAkB,MAAM,IAAI,WAAU,gBAAe,GACxD;AAAA,QACA,oBAAC,eAAa,oBAAU,oCAAoC,GAAE;AAAA,QAC9D,oBAAC,qBAAkB,WAAU,2BAC1B,oBAAU,KAAK,4CAA4C;AAAA,UAC1D,GAAG,CAAC,WACF,oBAAC,UAAK,WAAU,+BAA+B,kBAAO;AAAA,QAE1D,CAAC,GACH;AAAA,SACF;AAAA,MAEA;AAAA,QAAC;AAAA;AAAA,UACC,OAAO,UAAU,0CAA0C;AAAA,UAC3D,UAAQ;AAAA,UACR,aAAa,UAAU,gDAAgD;AAAA,UACvE,SAAS;AAAA,UACT,OAAO;AAAA,UACP,UAAU,CAAC,UAAU,UAAU,KAAe;AAAA,UAC9C,WAAU;AAAA;AAAA,MACZ;AAAA,MAEA,qBAAC,SACC;AAAA;AAAA,UAAC;AAAA;AAAA,YACC,OAAO,UAAU,+CAA+C;AAAA,YAChE,UAAQ;AAAA,YACR,aAAa,UAAU,qDAAqD;AAAA,YAC5E,OAAO;AAAA,YACP,UAAU,CAAC,MAAM,eAAe,EAAE,OAAO,KAAK;AAAA,YAC9C,MAAM;AAAA,YACN,WAAW;AAAA;AAAA,QACb;AAAA,QACA,oBAAC,UAAK,WAAU,8DACb,oBAAU,gDAAgD;AAAA,UACzD,OAAO,OAAO,YAAY,MAAM;AAAA,QAClC,CAAC,GACH;AAAA,SACF;AAAA,MAEA;AAAA,QAAC;AAAA;AAAA,UACC,WAAU;AAAA,UACV,OAAO,UAAU,4CAA4C;AAAA,UAC7D,MAAK;AAAA,UACL,aAAa,UAAU,kDAAkD;AAAA,UACzE,UAAU;AAAA,UACV,OAAO;AAAA,UACP,UAAU,CAAC,MAAM;AACf,wBAAY,EAAE,OAAO,KAAK;AAC1B,gBAAI,mBAAoB,yBAAwB;AAAA,UAClD;AAAA,UACA,oBAAmB;AAAA,UACnB;AAAA,UACA,kBAAkB;AAAA,UAClB,OAAO,CAAC,CAAC;AAAA,UACT,cAAc,sBAAsB;AAAA;AAAA,MACtC;AAAA,OACF;AAAA,IAEA,qBAAC,SAAI,WAAU,+GACb;AAAA;AAAA,QAAC;AAAA;AAAA,UACC,SAAQ;AAAA,UACR,WAAU;AAAA,UACV,MAAK;AAAA,UAEJ,oBAAU,qCAAqC;AAAA;AAAA,MAClD;AAAA,MACA,oBAAC,UAAO,SAAQ,aAAY,WAAU,QAAO,MAAK,UAAS,SAAS,aACjE,oBAAU,sBAAsB,GACnC;AAAA,OACF;AAAA,KACF,GACF,GACF;AAEJ;","names":[]}
@@ -4,12 +4,19 @@ import { useTranslations } from "next-intl";
4
4
  import { IconAlertTriangle } from "@tabler/icons-react";
5
5
  import { Dialog, DialogContent, DialogDescription, DialogHeader, DialogTitle } from "../ui/overlay/Dialog";
6
6
  import { Button } from "../ui/buttons/Button";
7
+ import { WorkspaceSectionType } from "../../enums/WorkspaceSectionType";
7
8
  import { useAccountModals } from "../../store/useAccountModals";
9
+ import useAccountHubActions from "./hooks/useAccountHubActions";
8
10
  function IsntPossibleDeleteAccountModal() {
9
11
  const translate = useTranslations();
10
12
  const { activeModal, close, config } = useAccountModals();
13
+ const { openSection } = useAccountHubActions();
11
14
  const { onGoToSubscription } = config;
12
15
  const open = activeModal === "isntPossibleDelete";
16
+ const goToSubscription = () => {
17
+ close();
18
+ openSection(WorkspaceSectionType.SUBSCRIPTION);
19
+ };
13
20
  return /* @__PURE__ */ jsx(Dialog, { open, onOpenChange: close, children: /* @__PURE__ */ jsxs(DialogContent, { className: "max-w-[calc(100%-2rem)]! w-full rounded-lg border sm:max-w-[400px]! lg:max-w-[470px]! lg:top-[50%]! lg:left-[50%]! lg:right-auto! lg:bottom-auto! lg:translate-x-[-50%]! lg:translate-y-[-50%]!", children: [
14
21
  /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-5", children: [
15
22
  /* @__PURE__ */ jsx("div", { className: "flex items-center justify-center w-fit bg-red-50 rounded-lg p-2.5", children: /* @__PURE__ */ jsx(IconAlertTriangle, { size: 20, className: "text-red-500" }) }),
@@ -28,7 +35,7 @@ function IsntPossibleDeleteAccountModal() {
28
35
  {
29
36
  variant: "secondary",
30
37
  className: "h-10 flex-1",
31
- onClick: onGoToSubscription ?? close,
38
+ onClick: onGoToSubscription ?? goToSubscription,
32
39
  children: translate("common.account.cantDelete.goToSubscription")
33
40
  }
34
41
  )
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/account/IsntPossibleDeleteAccountModal.tsx"],"sourcesContent":["'use client';\n\nimport { useTranslations } from 'next-intl';\nimport { IconAlertTriangle } from '@tabler/icons-react';\nimport { Dialog, DialogContent, DialogDescription, DialogHeader, DialogTitle } from '../ui/overlay/Dialog';\nimport { Button } from '../ui/buttons/Button';\nimport { useAccountModals } from '../../store/useAccountModals';\n\nexport default function IsntPossibleDeleteAccountModal() {\n const translate = useTranslations();\n const { activeModal, close, config } = useAccountModals();\n const { onGoToSubscription } = config;\n const open = activeModal === 'isntPossibleDelete';\n\n return (\n <Dialog open={open} onOpenChange={close}>\n <DialogContent className=\"max-w-[calc(100%-2rem)]! w-full rounded-lg border sm:max-w-[400px]! lg:max-w-[470px]! lg:top-[50%]! lg:left-[50%]! lg:right-auto! lg:bottom-auto! lg:translate-x-[-50%]! lg:translate-y-[-50%]!\">\n <div className=\"flex flex-col gap-5\">\n <div className=\"flex items-center justify-center w-fit bg-red-50 rounded-lg p-2.5\">\n <IconAlertTriangle size={20} className=\"text-red-500\" />\n </div>\n <DialogHeader className=\"p-0 gap-2\">\n <DialogTitle className=\"paragraph-medium-semibold text-gray-950\">\n {translate('common.account.cantDelete.title')}\n </DialogTitle>\n <DialogDescription className=\"paragraph-small-regular text-gray-600\">\n {translate.rich('common.account.cantDelete.description', {\n b: (chunks) => <span className=\"font-semibold text-gray-950\">{chunks}</span>,\n })}\n </DialogDescription>\n </DialogHeader>\n </div>\n\n <div className=\"h-px bg-gray-200 -mx-6\" />\n\n <div className=\"flex flex-row items-center gap-2\">\n <Button className=\"h-10 flex-1\" onClick={close}>\n {translate('common.account.cantDelete.confirm')}\n </Button>\n <Button\n variant=\"secondary\"\n className=\"h-10 flex-1\"\n onClick={onGoToSubscription ?? close}\n >\n {translate('common.account.cantDelete.goToSubscription')}\n </Button>\n </div>\n </DialogContent>\n </Dialog>\n );\n}\n"],"mappings":";AAmBY,cAEF,YAFE;AAjBZ,SAAS,uBAAuB;AAChC,SAAS,yBAAyB;AAClC,SAAS,QAAQ,eAAe,mBAAmB,cAAc,mBAAmB;AACpF,SAAS,cAAc;AACvB,SAAS,wBAAwB;AAElB,SAAR,iCAAkD;AACvD,QAAM,YAAY,gBAAgB;AAClC,QAAM,EAAE,aAAa,OAAO,OAAO,IAAI,iBAAiB;AACxD,QAAM,EAAE,mBAAmB,IAAI;AAC/B,QAAM,OAAO,gBAAgB;AAE7B,SACE,oBAAC,UAAO,MAAY,cAAc,OAChC,+BAAC,iBAAc,WAAU,mMACvB;AAAA,yBAAC,SAAI,WAAU,uBACb;AAAA,0BAAC,SAAI,WAAU,qEACb,8BAAC,qBAAkB,MAAM,IAAI,WAAU,gBAAe,GACxD;AAAA,MACA,qBAAC,gBAAa,WAAU,aACtB;AAAA,4BAAC,eAAY,WAAU,2CACpB,oBAAU,iCAAiC,GAC9C;AAAA,QACA,oBAAC,qBAAkB,WAAU,yCAC1B,oBAAU,KAAK,yCAAyC;AAAA,UACvD,GAAG,CAAC,WAAW,oBAAC,UAAK,WAAU,+BAA+B,kBAAO;AAAA,QACvE,CAAC,GACH;AAAA,SACF;AAAA,OACF;AAAA,IAEA,oBAAC,SAAI,WAAU,0BAAyB;AAAA,IAExC,qBAAC,SAAI,WAAU,oCACb;AAAA,0BAAC,UAAO,WAAU,eAAc,SAAS,OACtC,oBAAU,mCAAmC,GAChD;AAAA,MACA;AAAA,QAAC;AAAA;AAAA,UACC,SAAQ;AAAA,UACR,WAAU;AAAA,UACV,SAAS,sBAAsB;AAAA,UAE9B,oBAAU,4CAA4C;AAAA;AAAA,MACzD;AAAA,OACF;AAAA,KACF,GACF;AAEJ;","names":[]}
1
+ {"version":3,"sources":["../../../src/components/account/IsntPossibleDeleteAccountModal.tsx"],"sourcesContent":["'use client';\n\nimport { useTranslations } from 'next-intl';\nimport { IconAlertTriangle } from '@tabler/icons-react';\nimport { Dialog, DialogContent, DialogDescription, DialogHeader, DialogTitle } from '../ui/overlay/Dialog';\nimport { Button } from '../ui/buttons/Button';\nimport { WorkspaceSectionType } from '../../enums/WorkspaceSectionType';\nimport { useAccountModals } from '../../store/useAccountModals';\nimport useAccountHubActions from './hooks/useAccountHubActions';\n\nexport default function IsntPossibleDeleteAccountModal() {\n const translate = useTranslations();\n const { activeModal, close, config } = useAccountModals();\n const { openSection } = useAccountHubActions();\n const { onGoToSubscription } = config;\n const open = activeModal === 'isntPossibleDelete';\n\n const goToSubscription = () => {\n close();\n openSection(WorkspaceSectionType.SUBSCRIPTION);\n };\n\n return (\n <Dialog open={open} onOpenChange={close}>\n <DialogContent className=\"max-w-[calc(100%-2rem)]! w-full rounded-lg border sm:max-w-[400px]! lg:max-w-[470px]! lg:top-[50%]! lg:left-[50%]! lg:right-auto! lg:bottom-auto! lg:translate-x-[-50%]! lg:translate-y-[-50%]!\">\n <div className=\"flex flex-col gap-5\">\n <div className=\"flex items-center justify-center w-fit bg-red-50 rounded-lg p-2.5\">\n <IconAlertTriangle size={20} className=\"text-red-500\" />\n </div>\n <DialogHeader className=\"p-0 gap-2\">\n <DialogTitle className=\"paragraph-medium-semibold text-gray-950\">\n {translate('common.account.cantDelete.title')}\n </DialogTitle>\n <DialogDescription className=\"paragraph-small-regular text-gray-600\">\n {translate.rich('common.account.cantDelete.description', {\n b: (chunks) => <span className=\"font-semibold text-gray-950\">{chunks}</span>,\n })}\n </DialogDescription>\n </DialogHeader>\n </div>\n\n <div className=\"h-px bg-gray-200 -mx-6\" />\n\n <div className=\"flex flex-row items-center gap-2\">\n <Button className=\"h-10 flex-1\" onClick={close}>\n {translate('common.account.cantDelete.confirm')}\n </Button>\n <Button\n variant=\"secondary\"\n className=\"h-10 flex-1\"\n onClick={onGoToSubscription ?? goToSubscription}\n >\n {translate('common.account.cantDelete.goToSubscription')}\n </Button>\n </div>\n </DialogContent>\n </Dialog>\n );\n}\n"],"mappings":";AA2BY,cAEF,YAFE;AAzBZ,SAAS,uBAAuB;AAChC,SAAS,yBAAyB;AAClC,SAAS,QAAQ,eAAe,mBAAmB,cAAc,mBAAmB;AACpF,SAAS,cAAc;AACvB,SAAS,4BAA4B;AACrC,SAAS,wBAAwB;AACjC,OAAO,0BAA0B;AAElB,SAAR,iCAAkD;AACvD,QAAM,YAAY,gBAAgB;AAClC,QAAM,EAAE,aAAa,OAAO,OAAO,IAAI,iBAAiB;AACxD,QAAM,EAAE,YAAY,IAAI,qBAAqB;AAC7C,QAAM,EAAE,mBAAmB,IAAI;AAC/B,QAAM,OAAO,gBAAgB;AAE7B,QAAM,mBAAmB,MAAM;AAC7B,UAAM;AACN,gBAAY,qBAAqB,YAAY;AAAA,EAC/C;AAEA,SACE,oBAAC,UAAO,MAAY,cAAc,OAChC,+BAAC,iBAAc,WAAU,mMACvB;AAAA,yBAAC,SAAI,WAAU,uBACb;AAAA,0BAAC,SAAI,WAAU,qEACb,8BAAC,qBAAkB,MAAM,IAAI,WAAU,gBAAe,GACxD;AAAA,MACA,qBAAC,gBAAa,WAAU,aACtB;AAAA,4BAAC,eAAY,WAAU,2CACpB,oBAAU,iCAAiC,GAC9C;AAAA,QACA,oBAAC,qBAAkB,WAAU,yCAC1B,oBAAU,KAAK,yCAAyC;AAAA,UACvD,GAAG,CAAC,WAAW,oBAAC,UAAK,WAAU,+BAA+B,kBAAO;AAAA,QACvE,CAAC,GACH;AAAA,SACF;AAAA,OACF;AAAA,IAEA,oBAAC,SAAI,WAAU,0BAAyB;AAAA,IAExC,qBAAC,SAAI,WAAU,oCACb;AAAA,0BAAC,UAAO,WAAU,eAAc,SAAS,OACtC,oBAAU,mCAAmC,GAChD;AAAA,MACA;AAAA,QAAC;AAAA;AAAA,UACC,SAAQ;AAAA,UACR,WAAU;AAAA,UACV,SAAS,sBAAsB;AAAA,UAE9B,oBAAU,4CAA4C;AAAA;AAAA,MACzD;AAAA,OACF;AAAA,KACF,GACF;AAEJ;","names":[]}
@@ -0,0 +1,167 @@
1
+ "use client";
2
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
3
+ import {
4
+ IconCreditCard,
5
+ IconFolder,
6
+ IconKey,
7
+ IconLink,
8
+ IconLock,
9
+ IconSettings2,
10
+ IconUser,
11
+ IconUsers
12
+ } from "@tabler/icons-react";
13
+ import { useTranslations } from "next-intl";
14
+ import {
15
+ AccountModalLayout,
16
+ AccountModalNavGroup,
17
+ AccountModalNavItem,
18
+ AccountModalSection
19
+ } from "./AccountModalLayout";
20
+ import { MyProfileSection } from "./sections/MyProfileSection";
21
+ import { PreferencesSection } from "./sections/PreferencesSection";
22
+ import { TokenSection } from "./sections/TokenSection";
23
+ import { SecuritySection } from "./sections/SecuritySection";
24
+ import { ChangePasswordSection } from "./sections/ChangePasswordSection";
25
+ import { SubscriptionSection } from "./sections/SubscriptionSection";
26
+ import { ProjectsSection } from "./sections/ProjectsSection";
27
+ import { TeamSection } from "./sections/TeamSection";
28
+ import { AffiliatesSection } from "./sections/AffiliatesSection";
29
+ import useMyAccountModal from "./hooks/useMyAccountModal";
30
+ import { AccountSectionType } from "../../enums/AccountSectionType";
31
+ import { WorkspaceSectionType } from "../../enums/WorkspaceSectionType";
32
+ import { useAccountModals } from "../../store/useAccountModals";
33
+ import { useAuth } from "../../providers/auth.provider";
34
+ import { useManagementPermissions } from "../../modules/auth/hooks/useManagementPermissions";
35
+ import { useCurrentSubscription } from "../../modules/subscriptions/hooks/use-current-subscription.hook";
36
+ import { hasSubscriptionExpired } from "../../modules/subscriptions/utils/has-subscription-expired";
37
+ import { useExternalContracting, useWhitelabel } from "../../providers/whitelabel.provider";
38
+ function MyAccountModal() {
39
+ const translate = useTranslations();
40
+ const { activeModal, initialSection, openDeleteAccount, openIsntPossibleDelete, close } = useAccountModals();
41
+ const { isOwner, isOwnerOrAdmin } = useManagementPermissions();
42
+ const { isLoading: isProfileLoading } = useAuth();
43
+ const { isExternalContracting } = useExternalContracting();
44
+ const { whitelabel } = useWhitelabel();
45
+ const { data: { data: [subscription] = [] } = {} } = useCurrentSubscription();
46
+ const open = activeModal === "account";
47
+ const isBlockingSubscription = !!subscription && subscription.type !== "free" && subscription.type !== "trial" && subscription.active === true && !subscription.date_cancellation && !hasSubscriptionExpired(subscription.date_due);
48
+ const handleDeleteAccount = () => {
49
+ close();
50
+ if (isBlockingSubscription) {
51
+ openIsntPossibleDelete();
52
+ } else {
53
+ openDeleteAccount();
54
+ }
55
+ };
56
+ const accountSections = [
57
+ {
58
+ value: AccountSectionType.MY_PROFILE,
59
+ icon: IconUser,
60
+ label: translate("common.account.profile.title"),
61
+ visible: true,
62
+ content: /* @__PURE__ */ jsx(MyProfileSection, { onClose: close })
63
+ },
64
+ {
65
+ value: AccountSectionType.PREFERENCES,
66
+ icon: IconSettings2,
67
+ label: translate("common.preferences.title"),
68
+ visible: true,
69
+ content: /* @__PURE__ */ jsx(PreferencesSection, { onClose: close })
70
+ },
71
+ {
72
+ value: AccountSectionType.TOKEN,
73
+ icon: IconKey,
74
+ label: translate("common.account.token.title"),
75
+ visible: isOwner,
76
+ content: /* @__PURE__ */ jsx(TokenSection, {})
77
+ },
78
+ {
79
+ value: AccountSectionType.SECURITY,
80
+ icon: IconLock,
81
+ label: translate("common.account.security.title"),
82
+ visible: isOwner,
83
+ content: /* @__PURE__ */ jsx(
84
+ SecuritySection,
85
+ {
86
+ setActiveSection: (section) => setActiveSection(section),
87
+ onClose: close,
88
+ onDeleteAccount: handleDeleteAccount
89
+ }
90
+ )
91
+ }
92
+ ];
93
+ const workspaceSections = [
94
+ {
95
+ value: WorkspaceSectionType.SUBSCRIPTION,
96
+ icon: IconCreditCard,
97
+ label: translate("common.account.workspace.nav.subscription"),
98
+ visible: isOwnerOrAdmin && !isExternalContracting,
99
+ content: /* @__PURE__ */ jsx(SubscriptionSection, {})
100
+ },
101
+ {
102
+ value: WorkspaceSectionType.PROJECTS,
103
+ icon: IconFolder,
104
+ label: translate("common.account.workspace.nav.projects"),
105
+ visible: true,
106
+ content: /* @__PURE__ */ jsx(ProjectsSection, {})
107
+ },
108
+ {
109
+ value: WorkspaceSectionType.TEAM,
110
+ icon: IconUsers,
111
+ label: translate("common.account.workspace.nav.team"),
112
+ visible: true,
113
+ content: /* @__PURE__ */ jsx(TeamSection, {})
114
+ },
115
+ {
116
+ value: WorkspaceSectionType.AFFILIATES,
117
+ icon: IconLink,
118
+ label: translate("common.account.workspace.nav.affiliates"),
119
+ visible: whitelabel?.id === 1 && isOwnerOrAdmin,
120
+ content: /* @__PURE__ */ jsx(AffiliatesSection, {})
121
+ }
122
+ ];
123
+ const visibleAccountSections = accountSections.filter((section) => section.visible);
124
+ const visibleWorkspaceSections = workspaceSections.filter((section) => section.visible);
125
+ const visibleSections = [...visibleWorkspaceSections, ...visibleAccountSections];
126
+ const changePasswordSection = isOwner ? [
127
+ {
128
+ value: AccountSectionType.CHANGE_PASSWORD,
129
+ icon: IconLock,
130
+ label: translate("common.account.changePassword.title"),
131
+ visible: false,
132
+ content: /* @__PURE__ */ jsx(ChangePasswordSection, { onBack: () => setActiveSection(AccountSectionType.SECURITY) })
133
+ }
134
+ ] : [];
135
+ const { activeSection, setActiveSection } = useMyAccountModal({
136
+ isOpen: open,
137
+ initialSection,
138
+ availableSections: [...visibleSections, ...changePasswordSection].map((section) => section.value),
139
+ isReady: !isProfileLoading
140
+ });
141
+ const sectionTitle = [...visibleSections, ...changePasswordSection].find((section) => section.value === activeSection)?.label ?? translate("common.account.workspace.title");
142
+ const renderNavItems = (sections) => sections.map((section) => /* @__PURE__ */ jsx(AccountModalNavItem, { value: section.value, icon: section.icon, label: section.label }, section.value));
143
+ return /* @__PURE__ */ jsxs(
144
+ AccountModalLayout,
145
+ {
146
+ open,
147
+ onClose: close,
148
+ title: translate("common.account.workspace.title"),
149
+ sectionTitle,
150
+ activeSection: activeSection ?? "",
151
+ onSectionChange: setActiveSection,
152
+ isLoading: isProfileLoading,
153
+ navigation: /* @__PURE__ */ jsxs(Fragment, { children: [
154
+ visibleWorkspaceSections.length > 0 && /* @__PURE__ */ jsx(AccountModalNavGroup, { label: translate("common.account.workspace.groups.workspace"), children: renderNavItems(visibleWorkspaceSections) }),
155
+ /* @__PURE__ */ jsx(AccountModalNavGroup, { label: translate("common.account.workspace.groups.account"), children: renderNavItems(visibleAccountSections) })
156
+ ] }),
157
+ children: [
158
+ visibleSections.map((section) => /* @__PURE__ */ jsx(AccountModalSection, { value: section.value, children: section.content }, section.value)),
159
+ changePasswordSection.map((section) => /* @__PURE__ */ jsx(AccountModalSection, { value: section.value, children: section.content }, section.value))
160
+ ]
161
+ }
162
+ );
163
+ }
164
+ export {
165
+ MyAccountModal as default
166
+ };
167
+ //# sourceMappingURL=MyAccountModal.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/components/account/MyAccountModal.tsx"],"sourcesContent":["'use client';\n\nimport type { ReactNode } from 'react';\nimport {\n IconCreditCard,\n IconFolder,\n IconKey,\n IconLink,\n IconLock,\n IconSettings2,\n IconUser,\n IconUsers,\n type TablerIcon,\n} from '@tabler/icons-react';\nimport { useTranslations } from 'next-intl';\nimport {\n AccountModalLayout,\n AccountModalNavGroup,\n AccountModalNavItem,\n AccountModalSection,\n} from './AccountModalLayout';\nimport { MyProfileSection } from './sections/MyProfileSection';\nimport { PreferencesSection } from './sections/PreferencesSection';\nimport { TokenSection } from './sections/TokenSection';\nimport { SecuritySection } from './sections/SecuritySection';\nimport { ChangePasswordSection } from './sections/ChangePasswordSection';\nimport { SubscriptionSection } from './sections/SubscriptionSection';\nimport { ProjectsSection } from './sections/ProjectsSection';\nimport { TeamSection } from './sections/TeamSection';\nimport { AffiliatesSection } from './sections/AffiliatesSection';\nimport useMyAccountModal from './hooks/useMyAccountModal';\nimport { AccountSectionType } from '../../enums/AccountSectionType';\nimport { WorkspaceSectionType } from '../../enums/WorkspaceSectionType';\nimport { useAccountModals, type MyAccountSection } from '../../store/useAccountModals';\nimport { useAuth } from '../../providers/auth.provider';\nimport { useManagementPermissions } from '../../modules/auth/hooks/useManagementPermissions';\nimport { useCurrentSubscription } from '../../modules/subscriptions/hooks/use-current-subscription.hook';\nimport { hasSubscriptionExpired } from '../../modules/subscriptions/utils/has-subscription-expired';\nimport { useExternalContracting, useWhitelabel } from '../../providers/whitelabel.provider';\n\ntype MyAccountNavSection = {\n value: MyAccountSection;\n icon: TablerIcon;\n label: string;\n visible: boolean;\n content: ReactNode;\n};\n\n/** Modal Minha conta: assinatura, projetos, equipe e afiliados (workspace), e preferências, token e segurança. */\nexport default function MyAccountModal() {\n const translate = useTranslations();\n const { activeModal, initialSection, openDeleteAccount, openIsntPossibleDelete, close } = useAccountModals();\n const { isOwner, isOwnerOrAdmin } = useManagementPermissions();\n const { isLoading: isProfileLoading } = useAuth();\n const { isExternalContracting } = useExternalContracting();\n const { whitelabel } = useWhitelabel();\n const { data: { data: [subscription] = [] } = {} } = useCurrentSubscription();\n\n const open = activeModal === 'account';\n\n // Assinatura paga vigente impede excluir a conta: o fluxo manda para o aviso em vez da exclusão.\n const isBlockingSubscription =\n !!subscription &&\n subscription.type !== 'free' &&\n subscription.type !== 'trial' &&\n subscription.active === true &&\n !subscription.date_cancellation &&\n !hasSubscriptionExpired(subscription.date_due);\n\n const handleDeleteAccount = () => {\n close();\n if (isBlockingSubscription) {\n openIsntPossibleDelete();\n } else {\n openDeleteAccount();\n }\n };\n\n const accountSections: MyAccountNavSection[] = [\n {\n value: AccountSectionType.MY_PROFILE,\n icon: IconUser,\n label: translate('common.account.profile.title'),\n visible: true,\n content: <MyProfileSection onClose={close} />,\n },\n {\n value: AccountSectionType.PREFERENCES,\n icon: IconSettings2,\n label: translate('common.preferences.title'),\n visible: true,\n content: <PreferencesSection onClose={close} />,\n },\n {\n value: AccountSectionType.TOKEN,\n icon: IconKey,\n label: translate('common.account.token.title'),\n visible: isOwner,\n content: <TokenSection />,\n },\n {\n value: AccountSectionType.SECURITY,\n icon: IconLock,\n label: translate('common.account.security.title'),\n visible: isOwner,\n content: (\n <SecuritySection\n setActiveSection={(section) => setActiveSection(section)}\n onClose={close}\n onDeleteAccount={handleDeleteAccount}\n />\n ),\n },\n ];\n\n const workspaceSections: MyAccountNavSection[] = [\n {\n value: WorkspaceSectionType.SUBSCRIPTION,\n icon: IconCreditCard,\n label: translate('common.account.workspace.nav.subscription'),\n visible: isOwnerOrAdmin && !isExternalContracting,\n content: <SubscriptionSection />,\n },\n {\n value: WorkspaceSectionType.PROJECTS,\n icon: IconFolder,\n label: translate('common.account.workspace.nav.projects'),\n visible: true,\n content: <ProjectsSection />,\n },\n {\n value: WorkspaceSectionType.TEAM,\n icon: IconUsers,\n label: translate('common.account.workspace.nav.team'),\n visible: true,\n content: <TeamSection />,\n },\n {\n value: WorkspaceSectionType.AFFILIATES,\n icon: IconLink,\n label: translate('common.account.workspace.nav.affiliates'),\n visible: whitelabel?.id === 1 && isOwnerOrAdmin,\n content: <AffiliatesSection />,\n },\n ];\n\n const visibleAccountSections = accountSections.filter((section) => section.visible);\n const visibleWorkspaceSections = workspaceSections.filter((section) => section.visible);\n const visibleSections = [...visibleWorkspaceSections, ...visibleAccountSections];\n\n // Troca de senha não tem item no menu: abre a partir de Segurança.\n const changePasswordSection: MyAccountNavSection[] = isOwner\n ? [\n {\n value: AccountSectionType.CHANGE_PASSWORD,\n icon: IconLock,\n label: translate('common.account.changePassword.title'),\n visible: false,\n content: <ChangePasswordSection onBack={() => setActiveSection(AccountSectionType.SECURITY)} />,\n },\n ]\n : [];\n\n const { activeSection, setActiveSection } = useMyAccountModal({\n isOpen: open,\n initialSection,\n availableSections: [...visibleSections, ...changePasswordSection].map((section) => section.value),\n isReady: !isProfileLoading,\n });\n\n const sectionTitle =\n [...visibleSections, ...changePasswordSection].find((section) => section.value === activeSection)?.label ??\n translate('common.account.workspace.title');\n\n const renderNavItems = (sections: MyAccountNavSection[]) =>\n sections.map((section) => (\n <AccountModalNavItem key={section.value} value={section.value} icon={section.icon} label={section.label} />\n ));\n\n return (\n <AccountModalLayout\n open={open}\n onClose={close}\n title={translate('common.account.workspace.title')}\n sectionTitle={sectionTitle}\n activeSection={activeSection ?? ''}\n onSectionChange={setActiveSection}\n isLoading={isProfileLoading}\n navigation={\n <>\n {visibleWorkspaceSections.length > 0 && (\n <AccountModalNavGroup label={translate('common.account.workspace.groups.workspace')}>\n {renderNavItems(visibleWorkspaceSections)}\n </AccountModalNavGroup>\n )}\n <AccountModalNavGroup label={translate('common.account.workspace.groups.account')}>\n {renderNavItems(visibleAccountSections)}\n </AccountModalNavGroup>\n </>\n }\n >\n {visibleSections.map((section) => (\n <AccountModalSection key={section.value} value={section.value}>\n {section.content}\n </AccountModalSection>\n ))}\n\n {changePasswordSection.map((section) => (\n <AccountModalSection key={section.value} value={section.value}>\n {section.content}\n </AccountModalSection>\n ))}\n </AccountModalLayout>\n );\n}\n"],"mappings":"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","names":[]}
@@ -114,7 +114,7 @@ function TwoFactorAuthModal({ open, onClose, onSuccess }) {
114
114
  if (isCodeComplete) handleSubmit();
115
115
  },
116
116
  children: [
117
- /* @__PURE__ */ jsx("div", { className: "flex-1 min-h-0 overflow-y-auto overscroll-contain lg:overflow-visible", children: /* @__PURE__ */ jsxs("div", { className: "flex flex-col items-center gap-4 lg:gap-8 px-4 lg:px-5 py-4 lg:py-6 pb-60 lg:pb-6", children: [
117
+ /* @__PURE__ */ jsx("div", { className: "flex-1 min-h-0 overflow-y-auto [scrollbar-width:auto] [&::-webkit-scrollbar]:w-1.5 [&::-webkit-scrollbar-track]:bg-transparent [&::-webkit-scrollbar-thumb]:rounded-full [&::-webkit-scrollbar-thumb]:bg-zinc-300 overscroll-contain lg:overflow-visible", children: /* @__PURE__ */ jsxs("div", { className: "flex flex-col items-center gap-4 lg:gap-8 px-4 lg:px-5 py-4 lg:py-6 pb-60 lg:pb-6", children: [
118
118
  /* @__PURE__ */ jsx("p", { className: "paragraph-small-regular text-gray-950 text-center max-w-full lg:max-w-[412px]", children: translate.rich("common.account.twoFactor.instructions", {
119
119
  link: (chunks) => /* @__PURE__ */ jsx(
120
120
  "a",