@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.
- package/dist/components/account/AccountHubLinkHandler.mjs +36 -0
- package/dist/components/account/AccountHubLinkHandler.mjs.map +1 -0
- package/dist/components/account/AccountModalLayout.mjs +137 -0
- package/dist/components/account/AccountModalLayout.mjs.map +1 -0
- package/dist/components/account/AccountModals.mjs +10 -3
- package/dist/components/account/AccountModals.mjs.map +1 -1
- package/dist/components/account/DeleteAccountModal.mjs +1 -1
- package/dist/components/account/DeleteAccountModal.mjs.map +1 -1
- package/dist/components/account/IsntPossibleDeleteAccountModal.mjs +8 -1
- package/dist/components/account/IsntPossibleDeleteAccountModal.mjs.map +1 -1
- package/dist/components/account/MyAccountModal.mjs +167 -0
- package/dist/components/account/MyAccountModal.mjs.map +1 -0
- package/dist/components/account/TwoFactorAuthModal.mjs +1 -1
- package/dist/components/account/TwoFactorAuthModal.mjs.map +1 -1
- package/dist/components/account/hooks/useAccountHubActions.mjs +85 -0
- package/dist/components/account/hooks/useAccountHubActions.mjs.map +1 -0
- package/dist/components/account/hooks/useAddCardWithPaymentSwitch.mjs +44 -0
- package/dist/components/account/hooks/useAddCardWithPaymentSwitch.mjs.map +1 -0
- package/dist/components/account/hooks/useAffiliatesActions.mjs +69 -0
- package/dist/components/account/hooks/useAffiliatesActions.mjs.map +1 -0
- package/dist/components/account/hooks/useMyAccountModal.mjs +27 -0
- package/dist/components/account/hooks/useMyAccountModal.mjs.map +1 -0
- package/dist/components/account/hooks/useProjectsActions.mjs +40 -0
- package/dist/components/account/hooks/useProjectsActions.mjs.map +1 -0
- package/dist/components/account/hooks/useSubscriptionActions.mjs +87 -0
- package/dist/components/account/hooks/useSubscriptionActions.mjs.map +1 -0
- package/dist/components/account/hooks/useTeamActions.mjs +31 -0
- package/dist/components/account/hooks/useTeamActions.mjs.map +1 -0
- package/dist/components/account/sections/AffiliatesSection.mjs +313 -0
- package/dist/components/account/sections/AffiliatesSection.mjs.map +1 -0
- package/dist/components/account/sections/ChangePasswordSection.mjs +5 -5
- package/dist/components/account/sections/ChangePasswordSection.mjs.map +1 -1
- package/dist/components/account/sections/MyProfileSection.mjs +194 -144
- package/dist/components/account/sections/MyProfileSection.mjs.map +1 -1
- package/dist/components/account/sections/PreferencesSection.mjs +60 -49
- package/dist/components/account/sections/PreferencesSection.mjs.map +1 -1
- package/dist/components/account/sections/ProjectsSection.mjs +77 -0
- package/dist/components/account/sections/ProjectsSection.mjs.map +1 -0
- package/dist/components/account/sections/SecuritySection.mjs +55 -36
- package/dist/components/account/sections/SecuritySection.mjs.map +1 -1
- package/dist/components/account/sections/SubscriptionSection.mjs +29 -0
- package/dist/components/account/sections/SubscriptionSection.mjs.map +1 -0
- package/dist/components/account/sections/TeamSection.mjs +119 -0
- package/dist/components/account/sections/TeamSection.mjs.map +1 -0
- package/dist/components/account/sections/TokenSection.mjs +41 -43
- package/dist/components/account/sections/TokenSection.mjs.map +1 -1
- package/dist/components/account/sections/affiliates/AffiliateCommissionCard.mjs +73 -0
- package/dist/components/account/sections/affiliates/AffiliateCommissionCard.mjs.map +1 -0
- package/dist/components/account/sections/affiliates/AffiliateFlows.mjs +20 -0
- package/dist/components/account/sections/affiliates/AffiliateFlows.mjs.map +1 -0
- package/dist/components/account/sections/affiliates/AffiliateLeadsSheet.mjs +99 -0
- package/dist/components/account/sections/affiliates/AffiliateLeadsSheet.mjs.map +1 -0
- package/dist/components/account/sections/affiliates/AffiliateStatsCard.mjs +31 -0
- package/dist/components/account/sections/affiliates/AffiliateStatsCard.mjs.map +1 -0
- package/dist/components/account/sections/affiliates/AffiliateStepCard.mjs +15 -0
- package/dist/components/account/sections/affiliates/AffiliateStepCard.mjs.map +1 -0
- package/dist/components/account/sections/affiliates/AffiliateTransactionsList.mjs +108 -0
- package/dist/components/account/sections/affiliates/AffiliateTransactionsList.mjs.map +1 -0
- package/dist/components/account/sections/affiliates/NoReceivingAccountModal.mjs +49 -0
- package/dist/components/account/sections/affiliates/NoReceivingAccountModal.mjs.map +1 -0
- package/dist/components/account/sections/affiliates/ReceivingAccountModal.mjs +182 -0
- package/dist/components/account/sections/affiliates/ReceivingAccountModal.mjs.map +1 -0
- package/dist/components/account/sections/affiliates/RequestWithdrawalSheet.mjs +476 -0
- package/dist/components/account/sections/affiliates/RequestWithdrawalSheet.mjs.map +1 -0
- package/dist/components/account/sections/affiliates/ViewAttachmentModal.mjs +34 -0
- package/dist/components/account/sections/affiliates/ViewAttachmentModal.mjs.map +1 -0
- package/dist/components/account/sections/affiliates/reports/AffiliatesIndicatorsChart.mjs +27 -0
- package/dist/components/account/sections/affiliates/reports/AffiliatesIndicatorsChart.mjs.map +1 -0
- package/dist/components/account/sections/affiliates/reports/AffiliatesReportsTab.mjs +30 -0
- package/dist/components/account/sections/affiliates/reports/AffiliatesReportsTab.mjs.map +1 -0
- package/dist/components/account/sections/affiliates/reports/useAffiliatesIndicatorsChart.mjs +120 -0
- package/dist/components/account/sections/affiliates/reports/useAffiliatesIndicatorsChart.mjs.map +1 -0
- package/dist/components/account/sections/projects/DeleteProjectModal.mjs +205 -0
- package/dist/components/account/sections/projects/DeleteProjectModal.mjs.map +1 -0
- package/dist/components/account/sections/projects/ProjectFlows.mjs +16 -0
- package/dist/components/account/sections/projects/ProjectFlows.mjs.map +1 -0
- package/dist/components/account/sections/projects/ProjectMembersStack.mjs +53 -0
- package/dist/components/account/sections/projects/ProjectMembersStack.mjs.map +1 -0
- package/dist/components/account/sections/projects/ProjectRow.mjs +85 -0
- package/dist/components/account/sections/projects/ProjectRow.mjs.map +1 -0
- package/dist/components/account/sections/projects/ProjectSheet.mjs +499 -0
- package/dist/components/account/sections/projects/ProjectSheet.mjs.map +1 -0
- package/dist/components/account/sections/projects/ProjectsDisabledModal.mjs +55 -0
- package/dist/components/account/sections/projects/ProjectsDisabledModal.mjs.map +1 -0
- package/dist/components/account/sections/projects/project-form.schema.mjs +28 -0
- package/dist/components/account/sections/projects/project-form.schema.mjs.map +1 -0
- package/dist/components/account/sections/shared/ConnectListRow.mjs +45 -0
- package/dist/components/account/sections/shared/ConnectListRow.mjs.map +1 -0
- package/dist/components/account/sections/shared/DateFilterPopover.mjs +51 -0
- package/dist/components/account/sections/shared/DateFilterPopover.mjs.map +1 -0
- package/dist/components/account/sections/shared/EntityAvatar.mjs +41 -0
- package/dist/components/account/sections/shared/EntityAvatar.mjs.map +1 -0
- package/dist/components/account/sections/shared/FilterPopover.mjs +62 -0
- package/dist/components/account/sections/shared/FilterPopover.mjs.map +1 -0
- package/dist/components/account/sections/shared/FormSection.mjs +14 -0
- package/dist/components/account/sections/shared/FormSection.mjs.map +1 -0
- package/dist/components/account/sections/shared/IconBox.mjs +18 -0
- package/dist/components/account/sections/shared/IconBox.mjs.map +1 -0
- package/dist/components/account/sections/shared/InfiniteScrollList.mjs +36 -0
- package/dist/components/account/sections/shared/InfiniteScrollList.mjs.map +1 -0
- package/dist/components/account/sections/shared/ListPagination.mjs +69 -0
- package/dist/components/account/sections/shared/ListPagination.mjs.map +1 -0
- package/dist/components/account/sections/shared/RowActionsMenu.mjs +52 -0
- package/dist/components/account/sections/shared/RowActionsMenu.mjs.map +1 -0
- package/dist/components/account/sections/shared/SectionLoadError.mjs +20 -0
- package/dist/components/account/sections/shared/SectionLoadError.mjs.map +1 -0
- package/dist/components/account/sections/shared/StatusBadge.mjs +26 -0
- package/dist/components/account/sections/shared/StatusBadge.mjs.map +1 -0
- package/dist/components/account/sections/shared/WorkspaceSection.mjs +10 -0
- package/dist/components/account/sections/shared/WorkspaceSection.mjs.map +1 -0
- package/dist/components/account/sections/subscription/AiCreditsUsage.mjs +106 -0
- package/dist/components/account/sections/subscription/AiCreditsUsage.mjs.map +1 -0
- package/dist/components/account/sections/subscription/BillingAddressSheet.mjs +407 -0
- package/dist/components/account/sections/subscription/BillingAddressSheet.mjs.map +1 -0
- package/dist/components/account/sections/subscription/BoletoDetailsDialog.mjs +73 -0
- package/dist/components/account/sections/subscription/BoletoDetailsDialog.mjs.map +1 -0
- package/dist/components/account/sections/subscription/BoletoGeneratedDialog.mjs +22 -0
- package/dist/components/account/sections/subscription/BoletoGeneratedDialog.mjs.map +1 -0
- package/dist/components/account/sections/subscription/CancelPlanDialog.mjs +161 -0
- package/dist/components/account/sections/subscription/CancelPlanDialog.mjs.map +1 -0
- package/dist/components/account/sections/subscription/ChargeRow.mjs +127 -0
- package/dist/components/account/sections/subscription/ChargeRow.mjs.map +1 -0
- package/dist/components/account/sections/subscription/ChargeStatusBadge.mjs +27 -0
- package/dist/components/account/sections/subscription/ChargeStatusBadge.mjs.map +1 -0
- package/dist/components/account/sections/subscription/ChargesList.mjs +88 -0
- package/dist/components/account/sections/subscription/ChargesList.mjs.map +1 -0
- package/dist/components/account/sections/subscription/ManageCardsSheet.mjs +49 -0
- package/dist/components/account/sections/subscription/ManageCardsSheet.mjs.map +1 -0
- package/dist/components/account/sections/subscription/OverdueReceiptOpener.mjs +26 -0
- package/dist/components/account/sections/subscription/OverdueReceiptOpener.mjs.map +1 -0
- package/dist/components/account/sections/subscription/PayChargeDialog.mjs +222 -0
- package/dist/components/account/sections/subscription/PayChargeDialog.mjs.map +1 -0
- package/dist/components/account/sections/subscription/PaymentConfirmationDialog.mjs +61 -0
- package/dist/components/account/sections/subscription/PaymentConfirmationDialog.mjs.map +1 -0
- package/dist/components/account/sections/subscription/PaymentMethodsCard.mjs +72 -0
- package/dist/components/account/sections/subscription/PaymentMethodsCard.mjs.map +1 -0
- package/dist/components/account/sections/subscription/PendingChangeDialog.mjs +117 -0
- package/dist/components/account/sections/subscription/PendingChangeDialog.mjs.map +1 -0
- package/dist/components/account/sections/subscription/PixDetailsDialog.mjs +165 -0
- package/dist/components/account/sections/subscription/PixDetailsDialog.mjs.map +1 -0
- package/dist/components/account/sections/subscription/PixPaymentDialog.mjs +155 -0
- package/dist/components/account/sections/subscription/PixPaymentDialog.mjs.map +1 -0
- package/dist/components/account/sections/subscription/PlanDetailsSheet.mjs +253 -0
- package/dist/components/account/sections/subscription/PlanDetailsSheet.mjs.map +1 -0
- package/dist/components/account/sections/subscription/ReceiptDetailsSheet.mjs +237 -0
- package/dist/components/account/sections/subscription/ReceiptDetailsSheet.mjs.map +1 -0
- package/dist/components/account/sections/subscription/SubscriptionFlows.mjs +40 -0
- package/dist/components/account/sections/subscription/SubscriptionFlows.mjs.map +1 -0
- package/dist/components/account/sections/subscription/SubscriptionPlanCard.mjs +303 -0
- package/dist/components/account/sections/subscription/SubscriptionPlanCard.mjs.map +1 -0
- package/dist/components/account/sections/subscription/UsageReportSheet.mjs +163 -0
- package/dist/components/account/sections/subscription/UsageReportSheet.mjs.map +1 -0
- package/dist/components/account/sections/subscription/change-plan/ChangePlanSheet.mjs +75 -0
- package/dist/components/account/sections/subscription/change-plan/ChangePlanSheet.mjs.map +1 -0
- package/dist/components/account/sections/subscription/change-plan/components/AbTestDetailsDialog.mjs +55 -0
- package/dist/components/account/sections/subscription/change-plan/components/AbTestDetailsDialog.mjs.map +1 -0
- package/dist/components/account/sections/subscription/change-plan/components/AddonsBlock.mjs +188 -0
- package/dist/components/account/sections/subscription/change-plan/components/AddonsBlock.mjs.map +1 -0
- package/dist/components/account/sections/subscription/change-plan/components/AlternativeBucketsSection.mjs +66 -0
- package/dist/components/account/sections/subscription/change-plan/components/AlternativeBucketsSection.mjs.map +1 -0
- package/dist/components/account/sections/subscription/change-plan/components/CouponBlock.mjs +42 -0
- package/dist/components/account/sections/subscription/change-plan/components/CouponBlock.mjs.map +1 -0
- package/dist/components/account/sections/subscription/change-plan/components/CouponDialog.mjs +119 -0
- package/dist/components/account/sections/subscription/change-plan/components/CouponDialog.mjs.map +1 -0
- package/dist/components/account/sections/subscription/change-plan/components/PricePreview.mjs +17 -0
- package/dist/components/account/sections/subscription/change-plan/components/PricePreview.mjs.map +1 -0
- package/dist/components/account/sections/subscription/change-plan/components/SummaryBlock.mjs +130 -0
- package/dist/components/account/sections/subscription/change-plan/components/SummaryBlock.mjs.map +1 -0
- package/dist/components/account/sections/subscription/change-plan/plan-comparison.mjs +38 -0
- package/dist/components/account/sections/subscription/change-plan/plan-comparison.mjs.map +1 -0
- package/dist/components/account/sections/subscription/change-plan/steps/PaymentSummaryStep.mjs +127 -0
- package/dist/components/account/sections/subscription/change-plan/steps/PaymentSummaryStep.mjs.map +1 -0
- package/dist/components/account/sections/subscription/change-plan/steps/PlanComparisonStep.mjs +111 -0
- package/dist/components/account/sections/subscription/change-plan/steps/PlanComparisonStep.mjs.map +1 -0
- package/dist/components/account/sections/subscription/change-plan/steps/PlanViewStep.mjs +69 -0
- package/dist/components/account/sections/subscription/change-plan/steps/PlanViewStep.mjs.map +1 -0
- package/dist/components/account/sections/subscription/change-plan/steps/ReactivationConfigStep.mjs +88 -0
- package/dist/components/account/sections/subscription/change-plan/steps/ReactivationConfigStep.mjs.map +1 -0
- package/dist/components/account/sections/subscription/change-plan/steps/ReactivationPaymentStep.mjs +115 -0
- package/dist/components/account/sections/subscription/change-plan/steps/ReactivationPaymentStep.mjs.map +1 -0
- package/dist/components/account/sections/subscription/change-plan/useChangePlanState.mjs +918 -0
- package/dist/components/account/sections/subscription/change-plan/useChangePlanState.mjs.map +1 -0
- package/dist/components/account/sections/subscription/downgrade/CannotDowngradeDialog.mjs +216 -0
- package/dist/components/account/sections/subscription/downgrade/CannotDowngradeDialog.mjs.map +1 -0
- package/dist/components/account/sections/subscription/downgrade/DowngradeReasonDialog.mjs +128 -0
- package/dist/components/account/sections/subscription/downgrade/DowngradeReasonDialog.mjs.map +1 -0
- package/dist/components/account/sections/subscription/plans/PlanCard.mjs +281 -0
- package/dist/components/account/sections/subscription/plans/PlanCard.mjs.map +1 -0
- package/dist/components/account/sections/subscription/plans/PlanCardSkeleton.mjs +53 -0
- package/dist/components/account/sections/subscription/plans/PlanCardSkeleton.mjs.map +1 -0
- package/dist/components/account/sections/subscription/plans/PlansCatalogDialog.mjs +119 -0
- package/dist/components/account/sections/subscription/plans/PlansCatalogDialog.mjs.map +1 -0
- package/dist/components/account/sections/team/DeleteUserModal.mjs +116 -0
- package/dist/components/account/sections/team/DeleteUserModal.mjs.map +1 -0
- package/dist/components/account/sections/team/TeamFlows.mjs +14 -0
- package/dist/components/account/sections/team/TeamFlows.mjs.map +1 -0
- package/dist/components/account/sections/team/TeamMemberRow.mjs +99 -0
- package/dist/components/account/sections/team/TeamMemberRow.mjs.map +1 -0
- package/dist/components/account/sections/team/UserSheet.mjs +570 -0
- package/dist/components/account/sections/team/UserSheet.mjs.map +1 -0
- package/dist/components/account/sections/team/steps/NotificationsStep.mjs +80 -0
- package/dist/components/account/sections/team/steps/NotificationsStep.mjs.map +1 -0
- package/dist/components/account/sections/team/steps/ProjectSelectionStep.mjs +180 -0
- package/dist/components/account/sections/team/steps/ProjectSelectionStep.mjs.map +1 -0
- package/dist/components/account/sections/team/steps/UserInformationStep.mjs +371 -0
- package/dist/components/account/sections/team/steps/UserInformationStep.mjs.map +1 -0
- package/dist/components/account/sections/team/user-form.schema.mjs +37 -0
- package/dist/components/account/sections/team/user-form.schema.mjs.map +1 -0
- package/dist/components/account/types/workspace-actions.type.mjs +1 -0
- package/dist/components/account/types/workspace-actions.type.mjs.map +1 -0
- package/dist/components/layouts/ProfilePopover.mjs +10 -12
- package/dist/components/layouts/ProfilePopover.mjs.map +1 -1
- package/dist/components/layouts/UsersSelectorPopover.mjs +7 -4
- package/dist/components/layouts/UsersSelectorPopover.mjs.map +1 -1
- package/dist/components/modals/AccountDeletionWarningModal.mjs +4 -5
- package/dist/components/modals/AccountDeletionWarningModal.mjs.map +1 -1
- package/dist/components/modals/AccountFrozenModal.mjs +6 -3
- package/dist/components/modals/AccountFrozenModal.mjs.map +1 -1
- package/dist/components/modals/Modals.mjs +3 -3
- package/dist/components/modals/Modals.mjs.map +1 -1
- package/dist/components/modals/PaidPlanRequiredModal.mjs +4 -5
- package/dist/components/modals/PaidPlanRequiredModal.mjs.map +1 -1
- package/dist/components/modals/cards/AddFirstCardWarningModal.mjs +63 -0
- package/dist/components/modals/cards/AddFirstCardWarningModal.mjs.map +1 -0
- package/dist/components/modals/cards/SwitchPaymentToCardModal.mjs +187 -0
- package/dist/components/modals/cards/SwitchPaymentToCardModal.mjs.map +1 -0
- package/dist/components/modals/promo/AiCreditsOfferModal/AiCreditsOfferModal.mjs +5 -4
- package/dist/components/modals/promo/AiCreditsOfferModal/AiCreditsOfferModal.mjs.map +1 -1
- package/dist/components/ui/data-display/CardItem.mjs +9 -1
- package/dist/components/ui/data-display/CardItem.mjs.map +1 -1
- package/dist/components/ui/data-display/PaymentMethodIcons.mjs +50 -0
- package/dist/components/ui/data-display/PaymentMethodIcons.mjs.map +1 -0
- package/dist/components/ui/form/BillingPeriodSelector.mjs +108 -0
- package/dist/components/ui/form/BillingPeriodSelector.mjs.map +1 -0
- package/dist/components/ui/form/PaymentMethodToggle.mjs +82 -0
- package/dist/components/ui/form/PaymentMethodToggle.mjs.map +1 -0
- package/dist/components/ui/form/RadioOptionFieldIcon.mjs +57 -0
- package/dist/components/ui/form/RadioOptionFieldIcon.mjs.map +1 -0
- package/dist/components/ui/form/SegmentedControl.mjs +56 -0
- package/dist/components/ui/form/SegmentedControl.mjs.map +1 -0
- package/dist/components/ui/overlay/Dialog.mjs +21 -4
- package/dist/components/ui/overlay/Dialog.mjs.map +1 -1
- package/dist/components/ui/overlay/Sheet.mjs +26 -8
- package/dist/components/ui/overlay/Sheet.mjs.map +1 -1
- package/dist/components/ui/overlay/layers.mjs +52 -5
- package/dist/components/ui/overlay/layers.mjs.map +1 -1
- package/dist/enums/AccountHubFlow.mjs +13 -0
- package/dist/enums/AccountHubFlow.mjs.map +1 -0
- package/dist/enums/DateFilterPeriod.mjs +22 -0
- package/dist/enums/DateFilterPeriod.mjs.map +1 -0
- package/dist/enums/WorkspaceSectionType.mjs +11 -0
- package/dist/enums/WorkspaceSectionType.mjs.map +1 -0
- package/dist/handlers.mjs +24 -0
- package/dist/handlers.mjs.map +1 -1
- package/dist/hooks/useDebounce.mjs +5 -3
- package/dist/hooks/useDebounce.mjs.map +1 -1
- package/dist/hooks/useUploadProgress.mjs +33 -0
- package/dist/hooks/useUploadProgress.mjs.map +1 -0
- package/dist/i18n/messages/en-us.mjs +863 -3
- package/dist/i18n/messages/en-us.mjs.map +1 -1
- package/dist/i18n/messages/es-es.mjs +863 -3
- package/dist/i18n/messages/es-es.mjs.map +1 -1
- package/dist/i18n/messages/pt-br.mjs +863 -3
- package/dist/i18n/messages/pt-br.mjs.map +1 -1
- package/dist/index.mjs +87 -7
- package/dist/index.mjs.map +1 -1
- package/dist/infra/http/paged.mjs +20 -0
- package/dist/infra/http/paged.mjs.map +1 -0
- package/dist/middleware.mjs +2 -0
- package/dist/middleware.mjs.map +1 -1
- package/dist/middlewares/create-auth-middleware.mjs +1 -3
- package/dist/middlewares/create-auth-middleware.mjs.map +1 -1
- package/dist/middlewares/create-legacy-account-routes-middleware.mjs +44 -0
- package/dist/middlewares/create-legacy-account-routes-middleware.mjs.map +1 -0
- package/dist/middlewares/is-route-equals.mjs +7 -0
- package/dist/middlewares/is-route-equals.mjs.map +1 -0
- package/dist/modules/accounts/actions/account-management.action.mjs +20 -1
- package/dist/modules/accounts/actions/account-management.action.mjs.map +1 -1
- package/dist/modules/accounts/constants/account-hub-link.constants.mjs +9 -0
- package/dist/modules/accounts/constants/account-hub-link.constants.mjs.map +1 -0
- package/dist/modules/accounts/constants/legacy-account-routes.constants.mjs +5 -0
- package/dist/modules/accounts/constants/legacy-account-routes.constants.mjs.map +1 -0
- package/dist/modules/accounts/handlers/list-account-members.handler.mjs +22 -0
- package/dist/modules/accounts/handlers/list-account-members.handler.mjs.map +1 -0
- package/dist/modules/accounts/hooks/add-user-projects.hook.mjs +51 -0
- package/dist/modules/accounts/hooks/add-user-projects.hook.mjs.map +1 -0
- package/dist/modules/accounts/hooks/create-account-user.hook.mjs +20 -0
- package/dist/modules/accounts/hooks/create-account-user.hook.mjs.map +1 -0
- package/dist/modules/accounts/hooks/remove-user-projects.hook.mjs +47 -0
- package/dist/modules/accounts/hooks/remove-user-projects.hook.mjs.map +1 -0
- package/dist/modules/accounts/hooks/use-account-members.hook.mjs +20 -0
- package/dist/modules/accounts/hooks/use-account-members.hook.mjs.map +1 -0
- package/dist/modules/accounts/services/account.service.mjs +59 -0
- package/dist/modules/accounts/services/account.service.mjs.map +1 -1
- package/dist/modules/accounts/types/account-hub-link.type.mjs +1 -0
- package/dist/modules/accounts/types/account-hub-link.type.mjs.map +1 -0
- package/dist/modules/accounts/utils/build-account-hub-url.mjs +16 -0
- package/dist/modules/accounts/utils/build-account-hub-url.mjs.map +1 -0
- package/dist/modules/accounts/utils/is-account-hub-flow.mjs +9 -0
- package/dist/modules/accounts/utils/is-account-hub-flow.mjs.map +1 -0
- package/dist/modules/accounts/utils/is-account-section.mjs +9 -0
- package/dist/modules/accounts/utils/is-account-section.mjs.map +1 -0
- package/dist/modules/accounts/utils/is-my-account-section.mjs +13 -0
- package/dist/modules/accounts/utils/is-my-account-section.mjs.map +1 -0
- package/dist/modules/accounts/utils/map-legacy-account-route.mjs +93 -0
- package/dist/modules/accounts/utils/map-legacy-account-route.mjs.map +1 -0
- package/dist/modules/accounts/utils/parse-account-hub-link.mjs +20 -0
- package/dist/modules/accounts/utils/parse-account-hub-link.mjs.map +1 -0
- package/dist/modules/affiliates/actions/ensure-affiliate.action.mjs +10 -0
- package/dist/modules/affiliates/actions/ensure-affiliate.action.mjs.map +1 -0
- package/dist/modules/affiliates/actions/request-deposit.action.mjs +10 -0
- package/dist/modules/affiliates/actions/request-deposit.action.mjs.map +1 -0
- package/dist/modules/affiliates/actions/update-affiliate.action.mjs +10 -0
- package/dist/modules/affiliates/actions/update-affiliate.action.mjs.map +1 -0
- package/dist/modules/affiliates/constants/affiliate.constants.mjs +11 -0
- package/dist/modules/affiliates/constants/affiliate.constants.mjs.map +1 -0
- package/dist/modules/affiliates/constants/query-keys.constants.mjs +15 -0
- package/dist/modules/affiliates/constants/query-keys.constants.mjs.map +1 -0
- package/dist/modules/affiliates/handlers/affiliate-report-analytics.handler.mjs +16 -0
- package/dist/modules/affiliates/handlers/affiliate-report-analytics.handler.mjs.map +1 -0
- package/dist/modules/affiliates/handlers/affiliate-withdrawal-limits.handler.mjs +12 -0
- package/dist/modules/affiliates/handlers/affiliate-withdrawal-limits.handler.mjs.map +1 -0
- package/dist/modules/affiliates/handlers/current-affiliate.handler.mjs +12 -0
- package/dist/modules/affiliates/handlers/current-affiliate.handler.mjs.map +1 -0
- package/dist/modules/affiliates/handlers/list-affiliate-coupons.handler.mjs +12 -0
- package/dist/modules/affiliates/handlers/list-affiliate-coupons.handler.mjs.map +1 -0
- package/dist/modules/affiliates/handlers/list-affiliate-leads.handler.mjs +22 -0
- package/dist/modules/affiliates/handlers/list-affiliate-leads.handler.mjs.map +1 -0
- package/dist/modules/affiliates/handlers/list-affiliate-transactions.handler.mjs +22 -0
- package/dist/modules/affiliates/handlers/list-affiliate-transactions.handler.mjs.map +1 -0
- package/dist/modules/affiliates/hooks/use-affiliate-coupons.hook.mjs +17 -0
- package/dist/modules/affiliates/hooks/use-affiliate-coupons.hook.mjs.map +1 -0
- package/dist/modules/affiliates/hooks/use-affiliate-leads.hook.mjs +22 -0
- package/dist/modules/affiliates/hooks/use-affiliate-leads.hook.mjs.map +1 -0
- package/dist/modules/affiliates/hooks/use-affiliate-report-analytics.hook.mjs +17 -0
- package/dist/modules/affiliates/hooks/use-affiliate-report-analytics.hook.mjs.map +1 -0
- package/dist/modules/affiliates/hooks/use-affiliate-transactions.hook.mjs +20 -0
- package/dist/modules/affiliates/hooks/use-affiliate-transactions.hook.mjs.map +1 -0
- package/dist/modules/affiliates/hooks/use-current-affiliate.hook.mjs +17 -0
- package/dist/modules/affiliates/hooks/use-current-affiliate.hook.mjs.map +1 -0
- package/dist/modules/affiliates/hooks/use-ensure-affiliate.hook.mjs +23 -0
- package/dist/modules/affiliates/hooks/use-ensure-affiliate.hook.mjs.map +1 -0
- package/dist/modules/affiliates/hooks/use-request-deposit.hook.mjs +28 -0
- package/dist/modules/affiliates/hooks/use-request-deposit.hook.mjs.map +1 -0
- package/dist/modules/affiliates/hooks/use-update-affiliate.hook.mjs +22 -0
- package/dist/modules/affiliates/hooks/use-update-affiliate.hook.mjs.map +1 -0
- package/dist/modules/affiliates/hooks/use-withdrawal-limits.hook.mjs +17 -0
- package/dist/modules/affiliates/hooks/use-withdrawal-limits.hook.mjs.map +1 -0
- package/dist/modules/affiliates/services/affiliates.service.mjs +183 -0
- package/dist/modules/affiliates/services/affiliates.service.mjs.map +1 -0
- package/dist/modules/affiliates/types/affiliate.type.mjs +100 -0
- package/dist/modules/affiliates/types/affiliate.type.mjs.map +1 -0
- package/dist/modules/affiliates/utils/get-affiliate-share-link.mjs +9 -0
- package/dist/modules/affiliates/utils/get-affiliate-share-link.mjs.map +1 -0
- package/dist/modules/charges/actions/get-nota-fiscal.action.mjs +10 -0
- package/dist/modules/charges/actions/get-nota-fiscal.action.mjs.map +1 -0
- package/dist/modules/charges/actions/refresh-pix.action.mjs +10 -0
- package/dist/modules/charges/actions/refresh-pix.action.mjs.map +1 -0
- package/dist/modules/charges/hooks/nota-fiscal.hook.mjs +13 -0
- package/dist/modules/charges/hooks/nota-fiscal.hook.mjs.map +1 -0
- package/dist/modules/charges/hooks/refresh-pix.hook.mjs +13 -0
- package/dist/modules/charges/hooks/refresh-pix.hook.mjs.map +1 -0
- package/dist/modules/charges/services/charges.service.mjs +67 -0
- package/dist/modules/charges/services/charges.service.mjs.map +1 -1
- package/dist/modules/charges/types/nota-fiscal.type.mjs +1 -0
- package/dist/modules/charges/types/nota-fiscal.type.mjs.map +1 -0
- package/dist/modules/charges/types/refresh-pix.type.mjs +1 -0
- package/dist/modules/charges/types/refresh-pix.type.mjs.map +1 -0
- package/dist/modules/charges/utils/get-charge-download-url.mjs +8 -0
- package/dist/modules/charges/utils/get-charge-download-url.mjs.map +1 -0
- package/dist/modules/coupons/constants/query-keys.constants.mjs +5 -0
- package/dist/modules/coupons/constants/query-keys.constants.mjs.map +1 -0
- package/dist/modules/coupons/handlers/find-coupon-by-code.handler.mjs +17 -0
- package/dist/modules/coupons/handlers/find-coupon-by-code.handler.mjs.map +1 -0
- package/dist/modules/coupons/handlers/find-coupon-by-id.handler.mjs +16 -0
- package/dist/modules/coupons/handlers/find-coupon-by-id.handler.mjs.map +1 -0
- package/dist/modules/coupons/hooks/use-coupon-by-code.hook.mjs +15 -0
- package/dist/modules/coupons/hooks/use-coupon-by-code.hook.mjs.map +1 -0
- package/dist/modules/coupons/hooks/use-coupon-by-id.hook.mjs +18 -0
- package/dist/modules/coupons/hooks/use-coupon-by-id.hook.mjs.map +1 -0
- package/dist/modules/coupons/services/coupons.service.mjs +44 -0
- package/dist/modules/coupons/services/coupons.service.mjs.map +1 -0
- package/dist/modules/coupons/types/coupon.type.mjs +61 -0
- package/dist/modules/coupons/types/coupon.type.mjs.map +1 -0
- package/dist/modules/coupons/utils/coupon-restrictions.mjs +60 -0
- package/dist/modules/coupons/utils/coupon-restrictions.mjs.map +1 -0
- package/dist/modules/domains/handlers/count-domains.handler.mjs +12 -0
- package/dist/modules/domains/handlers/count-domains.handler.mjs.map +1 -0
- package/dist/modules/domains/hooks/count-domains.hook.mjs +17 -0
- package/dist/modules/domains/hooks/count-domains.hook.mjs.map +1 -0
- package/dist/modules/domains/services/domains.service.mjs +18 -0
- package/dist/modules/domains/services/domains.service.mjs.map +1 -0
- package/dist/modules/ia-credits/handlers/list-ia-credit-operations.handler.mjs +15 -0
- package/dist/modules/ia-credits/handlers/list-ia-credit-operations.handler.mjs.map +1 -0
- package/dist/modules/ia-credits/hooks/ia-credit-operations.hook.mjs +28 -0
- package/dist/modules/ia-credits/hooks/ia-credit-operations.hook.mjs.map +1 -0
- package/dist/modules/ia-credits/services/ia-credits.service.mjs +23 -2
- package/dist/modules/ia-credits/services/ia-credits.service.mjs.map +1 -1
- package/dist/modules/pages/handlers/count-pages.handler.mjs +4 -2
- package/dist/modules/pages/handlers/count-pages.handler.mjs.map +1 -1
- package/dist/modules/pages/hooks/count-published-pages.hook.mjs +26 -0
- package/dist/modules/pages/hooks/count-published-pages.hook.mjs.map +1 -0
- package/dist/modules/pages/services/pages.service.mjs +3 -2
- package/dist/modules/pages/services/pages.service.mjs.map +1 -1
- package/dist/modules/plans/constants/plan-tooltips.constants.mjs +14 -0
- package/dist/modules/plans/constants/plan-tooltips.constants.mjs.map +1 -0
- package/dist/modules/plans/hooks/use-enriched-plans.hook.mjs +28 -0
- package/dist/modules/plans/hooks/use-enriched-plans.hook.mjs.map +1 -0
- package/dist/modules/plans/hooks/use-ui-plans.hook.mjs +20 -0
- package/dist/modules/plans/hooks/use-ui-plans.hook.mjs.map +1 -0
- package/dist/modules/projects/hooks/add-project-users.hook.mjs +25 -0
- package/dist/modules/projects/hooks/add-project-users.hook.mjs.map +1 -0
- package/dist/modules/projects/hooks/list-all-account-users.hook.mjs +3 -6
- package/dist/modules/projects/hooks/list-all-account-users.hook.mjs.map +1 -1
- package/dist/modules/projects/hooks/list-available-users.hook.mjs +3 -6
- package/dist/modules/projects/hooks/list-available-users.hook.mjs.map +1 -1
- package/dist/modules/projects/hooks/list-infinite-projects.hook.mjs +3 -6
- package/dist/modules/projects/hooks/list-infinite-projects.hook.mjs.map +1 -1
- package/dist/modules/projects/hooks/list-project-users.hook.mjs +3 -6
- package/dist/modules/projects/hooks/list-project-users.hook.mjs.map +1 -1
- package/dist/modules/projects/hooks/remove-project-users.hook.mjs +25 -0
- package/dist/modules/projects/hooks/remove-project-users.hook.mjs.map +1 -0
- package/dist/modules/projects/services/project-users.service.mjs +5 -0
- package/dist/modules/projects/services/project-users.service.mjs.map +1 -1
- package/dist/modules/projects/types.mjs +3 -2
- package/dist/modules/projects/types.mjs.map +1 -1
- package/dist/modules/subscriptions/actions/cancel-subscription.action.mjs +10 -0
- package/dist/modules/subscriptions/actions/cancel-subscription.action.mjs.map +1 -0
- package/dist/modules/subscriptions/actions/create-subscription.action.mjs +10 -0
- package/dist/modules/subscriptions/actions/create-subscription.action.mjs.map +1 -0
- package/dist/modules/subscriptions/actions/find-pending-pix-status.action.mjs +10 -0
- package/dist/modules/subscriptions/actions/find-pending-pix-status.action.mjs.map +1 -0
- package/dist/modules/subscriptions/actions/find-subscription-by-id.action.mjs +10 -0
- package/dist/modules/subscriptions/actions/find-subscription-by-id.action.mjs.map +1 -0
- package/dist/modules/subscriptions/constants/addons.constants.mjs +35 -0
- package/dist/modules/subscriptions/constants/addons.constants.mjs.map +1 -1
- package/dist/modules/subscriptions/constants/downgrade.constants.mjs +25 -0
- package/dist/modules/subscriptions/constants/downgrade.constants.mjs.map +1 -0
- package/dist/modules/subscriptions/constants/subscription.constants.mjs +2 -0
- package/dist/modules/subscriptions/constants/subscription.constants.mjs.map +1 -1
- package/dist/modules/subscriptions/handlers/pending-pix-status.handler.mjs +15 -0
- package/dist/modules/subscriptions/handlers/pending-pix-status.handler.mjs.map +1 -0
- package/dist/modules/subscriptions/hooks/cancel-subscription.hook.mjs +25 -0
- package/dist/modules/subscriptions/hooks/cancel-subscription.hook.mjs.map +1 -0
- package/dist/modules/subscriptions/hooks/create-subscription.hook.mjs +33 -0
- package/dist/modules/subscriptions/hooks/create-subscription.hook.mjs.map +1 -0
- package/dist/modules/subscriptions/hooks/find-subscription-by-id.hook.mjs +18 -0
- package/dist/modules/subscriptions/hooks/find-subscription-by-id.hook.mjs.map +1 -0
- package/dist/modules/subscriptions/hooks/pending-pix-status.hook.mjs +25 -0
- package/dist/modules/subscriptions/hooks/pending-pix-status.hook.mjs.map +1 -0
- package/dist/modules/subscriptions/services/subscriptions.service.mjs +71 -0
- package/dist/modules/subscriptions/services/subscriptions.service.mjs.map +1 -1
- package/dist/modules/subscriptions/types/cancel-subscription.type.mjs +9 -0
- package/dist/modules/subscriptions/types/cancel-subscription.type.mjs.map +1 -0
- package/dist/modules/subscriptions/types/create-subscription.type.mjs +62 -0
- package/dist/modules/subscriptions/types/create-subscription.type.mjs.map +1 -0
- package/dist/modules/subscriptions/types/pending-pix-status.type.mjs +28 -0
- package/dist/modules/subscriptions/types/pending-pix-status.type.mjs.map +1 -0
- package/dist/modules/subscriptions/types/subscription.type.mjs +9 -1
- package/dist/modules/subscriptions/types/subscription.type.mjs.map +1 -1
- package/dist/modules/subscriptions/utils/addon-buckets.mjs +69 -0
- package/dist/modules/subscriptions/utils/addon-buckets.mjs.map +1 -0
- package/dist/modules/subscriptions/utils/confirm-payment-if-required.mjs +8 -2
- package/dist/modules/subscriptions/utils/confirm-payment-if-required.mjs.map +1 -1
- package/dist/modules/subscriptions/utils/first-period-pricing.mjs +25 -0
- package/dist/modules/subscriptions/utils/first-period-pricing.mjs.map +1 -0
- package/dist/modules/subscriptions/utils/is-api-subscription.mjs +8 -0
- package/dist/modules/subscriptions/utils/is-api-subscription.mjs.map +1 -0
- package/dist/modules/subscriptions/utils/is-boleto-payer.mjs +17 -0
- package/dist/modules/subscriptions/utils/is-boleto-payer.mjs.map +1 -0
- package/dist/modules/subscriptions/utils/is-free-subscription.mjs +8 -0
- package/dist/modules/subscriptions/utils/is-free-subscription.mjs.map +1 -0
- package/dist/modules/subscriptions/utils/periodicity.mjs +55 -1
- package/dist/modules/subscriptions/utils/periodicity.mjs.map +1 -1
- package/dist/modules/subscriptions/utils/resolve-subscription-plan-name.mjs +27 -0
- package/dist/modules/subscriptions/utils/resolve-subscription-plan-name.mjs.map +1 -0
- package/dist/modules/users/hooks/messages.hook.mjs +3 -5
- package/dist/modules/users/hooks/messages.hook.mjs.map +1 -1
- package/dist/server.mjs +6 -0
- package/dist/server.mjs.map +1 -1
- package/dist/store/useAccountModals.mjs +9 -2
- package/dist/store/useAccountModals.mjs.map +1 -1
- package/dist/store/useAffiliateFlows.mjs +23 -0
- package/dist/store/useAffiliateFlows.mjs.map +1 -0
- package/dist/store/useProjectFlows.mjs +18 -0
- package/dist/store/useProjectFlows.mjs.map +1 -0
- package/dist/store/useSubscriptionFlows.mjs +58 -0
- package/dist/store/useSubscriptionFlows.mjs.map +1 -0
- package/dist/store/useTeamFlows.mjs +15 -0
- package/dist/store/useTeamFlows.mjs.map +1 -0
- package/dist/testing/factories/coupon.factory.mjs +19 -0
- package/dist/testing/factories/coupon.factory.mjs.map +1 -0
- package/dist/testing/factories/index.mjs +6 -0
- package/dist/testing/factories/index.mjs.map +1 -1
- package/dist/testing/factories/project-user.factory.mjs +17 -0
- package/dist/testing/factories/project-user.factory.mjs.map +1 -0
- package/dist/testing/factories/project.factory.mjs +21 -0
- package/dist/testing/factories/project.factory.mjs.map +1 -0
- package/dist/testing/react/providers.mjs +1 -1
- package/dist/testing/react/providers.mjs.map +1 -1
- package/dist/utils/browser/chart-custom-tooltip.mjs +69 -0
- package/dist/utils/browser/chart-custom-tooltip.mjs.map +1 -0
- package/dist/utils/browser/get-css-variable.mjs +9 -0
- package/dist/utils/browser/get-css-variable.mjs.map +1 -0
- package/dist/utils/constants/scrollbar.mjs +5 -0
- package/dist/utils/constants/scrollbar.mjs.map +1 -0
- package/dist/utils/date-filter-period.mjs +34 -0
- package/dist/utils/date-filter-period.mjs.map +1 -0
- package/dist/utils/file/index.mjs +11 -1
- package/dist/utils/file/index.mjs.map +1 -1
- package/dist/utils/format/initials.mjs +8 -0
- package/dist/utils/format/initials.mjs.map +1 -0
- package/dist/utils/format/masks.mjs +32 -1
- package/dist/utils/format/masks.mjs.map +1 -1
- package/dist/utils/qrcode/to-data-url.mjs +12 -0
- package/dist/utils/qrcode/to-data-url.mjs.map +1 -0
- package/dist/utils/validators/account.mjs +1 -7
- package/dist/utils/validators/account.mjs.map +1 -1
- package/package.json +15 -2
- package/src/components/account/AccountHubLinkHandler.tsx +39 -0
- package/src/components/account/AccountModalLayout.tsx +190 -0
- package/src/components/account/AccountModals.tsx +12 -2
- package/src/components/account/DeleteAccountModal.tsx +1 -1
- package/src/components/account/IsntPossibleDeleteAccountModal.tsx +9 -1
- package/src/components/account/MyAccountModal.tsx +215 -0
- package/src/components/account/TwoFactorAuthModal.tsx +1 -1
- package/src/components/account/hooks/useAccountHubActions.ts +95 -0
- package/src/components/account/hooks/useAddCardWithPaymentSwitch.ts +70 -0
- package/src/components/account/hooks/useAffiliatesActions.tsx +78 -0
- package/src/components/account/hooks/useMyAccountModal.ts +40 -0
- package/src/components/account/hooks/useProjectsActions.ts +44 -0
- package/src/components/account/hooks/useSubscriptionActions.ts +99 -0
- package/src/components/account/hooks/useTeamActions.ts +35 -0
- package/src/components/account/sections/AffiliatesSection.tsx +342 -0
- package/src/components/account/sections/ChangePasswordSection.tsx +6 -10
- package/src/components/account/sections/MyProfileSection.tsx +207 -143
- package/src/components/account/sections/PreferencesSection.tsx +55 -51
- package/src/components/account/sections/ProjectsSection.tsx +110 -0
- package/src/components/account/sections/SecuritySection.tsx +72 -62
- package/src/components/account/sections/SubscriptionSection.tsx +36 -0
- package/src/components/account/sections/TeamSection.tsx +161 -0
- package/src/components/account/sections/TokenSection.tsx +4 -8
- package/src/components/account/sections/affiliates/AffiliateCommissionCard.tsx +83 -0
- package/src/components/account/sections/affiliates/AffiliateFlows.tsx +20 -0
- package/src/components/account/sections/affiliates/AffiliateLeadsSheet.tsx +143 -0
- package/src/components/account/sections/affiliates/AffiliateStatsCard.tsx +56 -0
- package/src/components/account/sections/affiliates/AffiliateStepCard.tsx +20 -0
- package/src/components/account/sections/affiliates/AffiliateTransactionsList.tsx +194 -0
- package/src/components/account/sections/affiliates/NoReceivingAccountModal.tsx +63 -0
- package/src/components/account/sections/affiliates/ReceivingAccountModal.tsx +213 -0
- package/src/components/account/sections/affiliates/RequestWithdrawalSheet.tsx +586 -0
- package/src/components/account/sections/affiliates/ViewAttachmentModal.tsx +47 -0
- package/src/components/account/sections/affiliates/reports/AffiliatesIndicatorsChart.tsx +45 -0
- package/src/components/account/sections/affiliates/reports/AffiliatesReportsTab.tsx +44 -0
- package/src/components/account/sections/affiliates/reports/useAffiliatesIndicatorsChart.ts +148 -0
- package/src/components/account/sections/projects/DeleteProjectModal.tsx +246 -0
- package/src/components/account/sections/projects/ProjectFlows.tsx +16 -0
- package/src/components/account/sections/projects/ProjectMembersStack.tsx +75 -0
- package/src/components/account/sections/projects/ProjectRow.tsx +96 -0
- package/src/components/account/sections/projects/ProjectSheet.tsx +603 -0
- package/src/components/account/sections/projects/ProjectsDisabledModal.tsx +69 -0
- package/src/components/account/sections/projects/project-form.schema.ts +30 -0
- package/src/components/account/sections/shared/ConnectListRow.tsx +68 -0
- package/src/components/account/sections/shared/DateFilterPopover.tsx +58 -0
- package/src/components/account/sections/shared/EntityAvatar.tsx +54 -0
- package/src/components/account/sections/shared/FilterPopover.tsx +79 -0
- package/src/components/account/sections/shared/FormSection.tsx +23 -0
- package/src/components/account/sections/shared/IconBox.tsx +21 -0
- package/src/components/account/sections/shared/InfiniteScrollList.tsx +57 -0
- package/src/components/account/sections/shared/ListPagination.tsx +84 -0
- package/src/components/account/sections/shared/RowActionsMenu.tsx +66 -0
- package/src/components/account/sections/shared/SectionLoadError.tsx +27 -0
- package/src/components/account/sections/shared/StatusBadge.tsx +33 -0
- package/src/components/account/sections/shared/WorkspaceSection.tsx +22 -0
- package/src/components/account/sections/subscription/AiCreditsUsage.tsx +152 -0
- package/src/components/account/sections/subscription/BillingAddressSheet.tsx +460 -0
- package/src/components/account/sections/subscription/BoletoDetailsDialog.tsx +104 -0
- package/src/components/account/sections/subscription/BoletoGeneratedDialog.tsx +24 -0
- package/src/components/account/sections/subscription/CancelPlanDialog.tsx +221 -0
- package/src/components/account/sections/subscription/ChargeRow.tsx +161 -0
- package/src/components/account/sections/subscription/ChargeStatusBadge.tsx +29 -0
- package/src/components/account/sections/subscription/ChargesList.tsx +125 -0
- package/src/components/account/sections/subscription/ManageCardsSheet.tsx +93 -0
- package/src/components/account/sections/subscription/OverdueReceiptOpener.tsx +29 -0
- package/src/components/account/sections/subscription/PayChargeDialog.tsx +306 -0
- package/src/components/account/sections/subscription/PaymentConfirmationDialog.tsx +70 -0
- package/src/components/account/sections/subscription/PaymentMethodsCard.tsx +117 -0
- package/src/components/account/sections/subscription/PendingChangeDialog.tsx +168 -0
- package/src/components/account/sections/subscription/PixDetailsDialog.tsx +246 -0
- package/src/components/account/sections/subscription/PixPaymentDialog.tsx +242 -0
- package/src/components/account/sections/subscription/PlanDetailsSheet.tsx +380 -0
- package/src/components/account/sections/subscription/ReceiptDetailsSheet.tsx +318 -0
- package/src/components/account/sections/subscription/SubscriptionFlows.tsx +40 -0
- package/src/components/account/sections/subscription/SubscriptionPlanCard.tsx +433 -0
- package/src/components/account/sections/subscription/UsageReportSheet.tsx +244 -0
- package/src/components/account/sections/subscription/change-plan/ChangePlanSheet.tsx +95 -0
- package/src/components/account/sections/subscription/change-plan/components/AbTestDetailsDialog.tsx +57 -0
- package/src/components/account/sections/subscription/change-plan/components/AddonsBlock.tsx +214 -0
- package/src/components/account/sections/subscription/change-plan/components/AlternativeBucketsSection.tsx +92 -0
- package/src/components/account/sections/subscription/change-plan/components/CouponBlock.tsx +42 -0
- package/src/components/account/sections/subscription/change-plan/components/CouponDialog.tsx +134 -0
- package/src/components/account/sections/subscription/change-plan/components/PricePreview.tsx +28 -0
- package/src/components/account/sections/subscription/change-plan/components/SummaryBlock.tsx +194 -0
- package/src/components/account/sections/subscription/change-plan/plan-comparison.ts +52 -0
- package/src/components/account/sections/subscription/change-plan/steps/PaymentSummaryStep.tsx +161 -0
- package/src/components/account/sections/subscription/change-plan/steps/PlanComparisonStep.tsx +165 -0
- package/src/components/account/sections/subscription/change-plan/steps/PlanViewStep.tsx +89 -0
- package/src/components/account/sections/subscription/change-plan/steps/ReactivationConfigStep.tsx +117 -0
- package/src/components/account/sections/subscription/change-plan/steps/ReactivationPaymentStep.tsx +139 -0
- package/src/components/account/sections/subscription/change-plan/useChangePlanState.tsx +1158 -0
- package/src/components/account/sections/subscription/downgrade/CannotDowngradeDialog.tsx +297 -0
- package/src/components/account/sections/subscription/downgrade/DowngradeReasonDialog.tsx +154 -0
- package/src/components/account/sections/subscription/plans/PlanCard.tsx +417 -0
- package/src/components/account/sections/subscription/plans/PlanCardSkeleton.tsx +70 -0
- package/src/components/account/sections/subscription/plans/PlansCatalogDialog.tsx +156 -0
- package/src/components/account/sections/team/DeleteUserModal.tsx +134 -0
- package/src/components/account/sections/team/TeamFlows.tsx +14 -0
- package/src/components/account/sections/team/TeamMemberRow.tsx +151 -0
- package/src/components/account/sections/team/UserSheet.tsx +688 -0
- package/src/components/account/sections/team/steps/NotificationsStep.tsx +109 -0
- package/src/components/account/sections/team/steps/ProjectSelectionStep.tsx +219 -0
- package/src/components/account/sections/team/steps/UserInformationStep.tsx +423 -0
- package/src/components/account/sections/team/user-form.schema.ts +43 -0
- package/src/components/account/types/workspace-actions.type.ts +56 -0
- package/src/components/layouts/ProfilePopover.tsx +11 -12
- package/src/components/layouts/UsersSelectorPopover.tsx +7 -4
- package/src/components/modals/AccountDeletionWarningModal.tsx +4 -5
- package/src/components/modals/AccountFrozenModal.tsx +6 -3
- package/src/components/modals/Modals.tsx +6 -3
- package/src/components/modals/PaidPlanRequiredModal.tsx +4 -5
- package/src/components/modals/cards/AddFirstCardWarningModal.tsx +72 -0
- package/src/components/modals/cards/SwitchPaymentToCardModal.tsx +232 -0
- package/src/components/modals/promo/AiCreditsOfferModal/AiCreditsOfferModal.tsx +5 -4
- package/src/components/ui/data-display/CardItem.tsx +9 -5
- package/src/components/ui/data-display/PaymentMethodIcons.tsx +43 -0
- package/src/components/ui/form/BillingPeriodSelector.tsx +173 -0
- package/src/components/ui/form/PaymentMethodToggle.tsx +119 -0
- package/src/components/ui/form/RadioOptionFieldIcon.tsx +64 -0
- package/src/components/ui/form/SegmentedControl.tsx +77 -0
- package/src/components/ui/overlay/Dialog.tsx +21 -2
- package/src/components/ui/overlay/Sheet.tsx +26 -5
- package/src/components/ui/overlay/layers.tsx +88 -4
- package/src/enums/AccountHubFlow.ts +8 -0
- package/src/enums/DateFilterPeriod.ts +17 -0
- package/src/enums/WorkspaceSectionType.ts +6 -0
- package/src/handlers.ts +14 -0
- package/src/hooks/useDebounce.ts +5 -3
- package/src/hooks/useUploadProgress.ts +42 -0
- package/src/i18n/messages/en-us.ts +904 -2
- package/src/i18n/messages/es-es.ts +908 -2
- package/src/i18n/messages/pt-br.ts +908 -2
- package/src/index.ts +56 -1
- package/src/infra/http/paged.ts +24 -0
- package/src/middleware.ts +1 -0
- package/src/middlewares/create-auth-middleware.ts +1 -4
- package/src/middlewares/create-legacy-account-routes-middleware.ts +54 -0
- package/src/middlewares/is-route-equals.ts +3 -0
- package/src/modules/accounts/actions/account-management.action.ts +22 -1
- package/src/modules/accounts/constants/account-hub-link.constants.ts +3 -0
- package/src/modules/accounts/constants/legacy-account-routes.constants.ts +1 -0
- package/src/modules/accounts/handlers/list-account-members.handler.ts +23 -0
- package/src/modules/accounts/hooks/add-user-projects.hook.ts +72 -0
- package/src/modules/accounts/hooks/create-account-user.hook.ts +21 -0
- package/src/modules/accounts/hooks/remove-user-projects.hook.ts +68 -0
- package/src/modules/accounts/hooks/use-account-members.hook.ts +31 -0
- package/src/modules/accounts/services/account.service.ts +71 -0
- package/src/modules/accounts/types/account-hub-link.type.ts +13 -0
- package/src/modules/accounts/types.ts +9 -0
- package/src/modules/accounts/utils/build-account-hub-url.ts +14 -0
- package/src/modules/accounts/utils/is-account-hub-flow.ts +7 -0
- package/src/modules/accounts/utils/is-account-section.ts +7 -0
- package/src/modules/accounts/utils/is-my-account-section.ts +12 -0
- package/src/modules/accounts/utils/map-legacy-account-route.ts +108 -0
- package/src/modules/accounts/utils/parse-account-hub-link.ts +21 -0
- package/src/modules/affiliates/actions/ensure-affiliate.action.ts +9 -0
- package/src/modules/affiliates/actions/request-deposit.action.ts +9 -0
- package/src/modules/affiliates/actions/update-affiliate.action.ts +9 -0
- package/src/modules/affiliates/constants/affiliate.constants.ts +11 -0
- package/src/modules/affiliates/constants/query-keys.constants.ts +7 -0
- package/src/modules/affiliates/handlers/affiliate-report-analytics.handler.ts +16 -0
- package/src/modules/affiliates/handlers/affiliate-withdrawal-limits.handler.ts +10 -0
- package/src/modules/affiliates/handlers/current-affiliate.handler.ts +10 -0
- package/src/modules/affiliates/handlers/list-affiliate-coupons.handler.ts +10 -0
- package/src/modules/affiliates/handlers/list-affiliate-leads.handler.ts +23 -0
- package/src/modules/affiliates/handlers/list-affiliate-transactions.handler.ts +23 -0
- package/src/modules/affiliates/hooks/use-affiliate-coupons.hook.ts +19 -0
- package/src/modules/affiliates/hooks/use-affiliate-leads.hook.ts +27 -0
- package/src/modules/affiliates/hooks/use-affiliate-report-analytics.hook.ts +19 -0
- package/src/modules/affiliates/hooks/use-affiliate-transactions.hook.ts +25 -0
- package/src/modules/affiliates/hooks/use-current-affiliate.hook.ts +19 -0
- package/src/modules/affiliates/hooks/use-ensure-affiliate.hook.ts +24 -0
- package/src/modules/affiliates/hooks/use-request-deposit.hook.ts +29 -0
- package/src/modules/affiliates/hooks/use-update-affiliate.hook.ts +24 -0
- package/src/modules/affiliates/hooks/use-withdrawal-limits.hook.ts +20 -0
- package/src/modules/affiliates/services/affiliates.service.ts +240 -0
- package/src/modules/affiliates/types/affiliate.type.ts +180 -0
- package/src/modules/affiliates/utils/get-affiliate-share-link.ts +8 -0
- package/src/modules/charges/actions/get-nota-fiscal.action.ts +8 -0
- package/src/modules/charges/actions/refresh-pix.action.ts +8 -0
- package/src/modules/charges/hooks/nota-fiscal.hook.ts +13 -0
- package/src/modules/charges/hooks/refresh-pix.hook.ts +13 -0
- package/src/modules/charges/services/charges.service.ts +121 -0
- package/src/modules/charges/types/nota-fiscal.type.ts +20 -0
- package/src/modules/charges/types/refresh-pix.type.ts +14 -0
- package/src/modules/charges/utils/get-charge-download-url.ts +10 -0
- package/src/modules/coupons/constants/query-keys.constants.ts +1 -0
- package/src/modules/coupons/handlers/find-coupon-by-code.handler.ts +16 -0
- package/src/modules/coupons/handlers/find-coupon-by-id.handler.ts +15 -0
- package/src/modules/coupons/hooks/use-coupon-by-code.hook.ts +16 -0
- package/src/modules/coupons/hooks/use-coupon-by-id.hook.ts +20 -0
- package/src/modules/coupons/services/coupons.service.ts +54 -0
- package/src/modules/coupons/types/coupon.type.ts +70 -0
- package/src/modules/coupons/utils/coupon-restrictions.ts +112 -0
- package/src/modules/domains/handlers/count-domains.handler.ts +10 -0
- package/src/modules/domains/hooks/count-domains.hook.ts +17 -0
- package/src/modules/domains/services/domains.service.ts +18 -0
- package/src/modules/ia-credits/handlers/list-ia-credit-operations.handler.ts +14 -0
- package/src/modules/ia-credits/hooks/ia-credit-operations.hook.ts +33 -0
- package/src/modules/ia-credits/services/ia-credits.service.ts +32 -1
- package/src/modules/pages/handlers/count-pages.handler.ts +5 -2
- package/src/modules/pages/hooks/count-published-pages.hook.ts +26 -0
- package/src/modules/pages/services/pages.service.ts +3 -2
- package/src/modules/plans/constants/plan-tooltips.constants.ts +16 -0
- package/src/modules/plans/hooks/use-enriched-plans.hook.ts +31 -0
- package/src/modules/plans/hooks/use-ui-plans.hook.ts +22 -0
- package/src/modules/projects/hooks/add-project-users.hook.ts +29 -0
- package/src/modules/projects/hooks/list-all-account-users.hook.ts +3 -6
- package/src/modules/projects/hooks/list-available-users.hook.ts +3 -6
- package/src/modules/projects/hooks/list-infinite-projects.hook.ts +3 -6
- package/src/modules/projects/hooks/list-project-users.hook.ts +3 -6
- package/src/modules/projects/hooks/remove-project-users.hook.ts +29 -0
- package/src/modules/projects/services/project-users.service.ts +135 -130
- package/src/modules/projects/types.ts +89 -88
- package/src/modules/subscriptions/actions/cancel-subscription.action.ts +12 -0
- package/src/modules/subscriptions/actions/create-subscription.action.ts +9 -0
- package/src/modules/subscriptions/actions/find-pending-pix-status.action.ts +8 -0
- package/src/modules/subscriptions/actions/find-subscription-by-id.action.ts +8 -0
- package/src/modules/subscriptions/constants/addons.constants.ts +50 -0
- package/src/modules/subscriptions/constants/downgrade.constants.ts +30 -0
- package/src/modules/subscriptions/constants/subscription.constants.ts +3 -0
- package/src/modules/subscriptions/handlers/pending-pix-status.handler.ts +17 -0
- package/src/modules/subscriptions/hooks/cancel-subscription.hook.ts +28 -0
- package/src/modules/subscriptions/hooks/create-subscription.hook.ts +34 -0
- package/src/modules/subscriptions/hooks/find-subscription-by-id.hook.ts +17 -0
- package/src/modules/subscriptions/hooks/pending-pix-status.hook.ts +30 -0
- package/src/modules/subscriptions/services/subscriptions.service.ts +401 -301
- package/src/modules/subscriptions/types/cancel-subscription.type.ts +8 -0
- package/src/modules/subscriptions/types/create-subscription.type.ts +79 -0
- package/src/modules/subscriptions/types/pending-pix-status.type.ts +33 -0
- package/src/modules/subscriptions/types/subscription.type.ts +157 -147
- package/src/modules/subscriptions/utils/addon-buckets.ts +129 -0
- package/src/modules/subscriptions/utils/confirm-payment-if-required.ts +9 -2
- package/src/modules/subscriptions/utils/first-period-pricing.ts +63 -0
- package/src/modules/subscriptions/utils/is-api-subscription.ts +6 -0
- package/src/modules/subscriptions/utils/is-boleto-payer.ts +21 -0
- package/src/modules/subscriptions/utils/is-free-subscription.ts +6 -0
- package/src/modules/subscriptions/utils/periodicity.ts +101 -0
- package/src/modules/subscriptions/utils/resolve-subscription-plan-name.ts +44 -0
- package/src/modules/users/hooks/messages.hook.ts +3 -5
- package/src/server.ts +102 -99
- package/src/store/useAccountModals.ts +22 -5
- package/src/store/useAffiliateFlows.ts +46 -0
- package/src/store/useProjectFlows.ts +42 -0
- package/src/store/useSubscriptionFlows.ts +176 -0
- package/src/store/useTeamFlows.ts +34 -0
- package/src/testing/factories/coupon.factory.ts +17 -0
- package/src/testing/factories/index.ts +3 -0
- package/src/testing/factories/project-user.factory.ts +15 -0
- package/src/testing/factories/project.factory.ts +19 -0
- package/src/testing/react/providers.tsx +2 -1
- package/src/utils/browser/chart-custom-tooltip.ts +85 -0
- package/src/utils/browser/get-css-variable.ts +6 -0
- package/src/utils/constants/scrollbar.ts +10 -0
- package/src/utils/date-filter-period.ts +34 -0
- package/src/utils/file/index.ts +13 -0
- package/src/utils/format/initials.ts +10 -0
- package/src/utils/format/masks.ts +41 -0
- package/src/utils/qrcode/to-data-url.ts +23 -0
- package/src/utils/validators/account.ts +0 -8
- package/dist/components/account/ConfigurationsMyAccountModal.mjs +0 -143
- package/dist/components/account/ConfigurationsMyAccountModal.mjs.map +0 -1
- package/dist/components/account/hooks/useConfigurationsModal.mjs +0 -34
- package/dist/components/account/hooks/useConfigurationsModal.mjs.map +0 -1
- package/src/components/account/ConfigurationsMyAccountModal.tsx +0 -179
- 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
|
|
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(
|
|
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
|
|
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":"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","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 ??
|
|
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 ??
|
|
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",
|