@greatapps/common 1.1.700 → 1.1.701

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (561) hide show
  1. package/dist/components/account/ConfigurationsMyAccountModal.mjs +1 -1
  2. package/dist/components/account/ConfigurationsMyAccountModal.mjs.map +1 -1
  3. package/dist/components/account/ConfirmDeleteAccountModal.mjs.map +1 -1
  4. package/dist/components/account/ConfirmGlobalPreferencesModal.mjs.map +1 -1
  5. package/dist/components/account/DeleteAccountModal.mjs.map +1 -1
  6. package/dist/components/account/DisableTwoFactorAuthModal.mjs.map +1 -1
  7. package/dist/components/account/IsntPossibleDeleteAccountModal.mjs.map +1 -1
  8. package/dist/components/account/TwoFactorAuthModal.mjs.map +1 -1
  9. package/dist/components/account/hooks/useChangePhoneForm.mjs.map +1 -1
  10. package/dist/components/account/hooks/useTwoFactorAuthForm.mjs.map +1 -1
  11. package/dist/components/account/sections/ChangeEmailModal.mjs.map +1 -1
  12. package/dist/components/account/sections/ChangePasswordSection.mjs.map +1 -1
  13. package/dist/components/account/sections/ChangePhoneModal.mjs.map +1 -1
  14. package/dist/components/account/sections/MyProfileSection.mjs.map +1 -1
  15. package/dist/components/account/sections/PreferencesSection.mjs.map +1 -1
  16. package/dist/components/account/sections/SecuritySection.mjs.map +1 -1
  17. package/dist/components/account/sections/TokenSection.mjs.map +1 -1
  18. package/dist/components/embeds/ClarityEmbed.mjs.map +1 -1
  19. package/dist/components/embeds/CrispEmbed.mjs.map +1 -1
  20. package/dist/components/embeds/EmbedWidgets.mjs.map +1 -1
  21. package/dist/components/embeds/FrillEmbed.mjs.map +1 -1
  22. package/dist/components/layouts/AppMobileNavBar.mjs.map +1 -1
  23. package/dist/components/layouts/AppNavBar.mjs.map +1 -1
  24. package/dist/components/layouts/MdSideBarNavigation.mjs.map +1 -1
  25. package/dist/components/layouts/NavBar.mjs.map +1 -1
  26. package/dist/components/layouts/NotificationsPopover.mjs.map +1 -1
  27. package/dist/components/layouts/ProfilePopover.mjs.map +1 -1
  28. package/dist/components/layouts/SideBarNavigation.mjs.map +1 -1
  29. package/dist/components/layouts/UsersSelectorPopover.mjs.map +1 -1
  30. package/dist/components/layouts/WhitelabelCodes.mjs.map +1 -1
  31. package/dist/components/modals/BuyCreditsModal.mjs.map +1 -1
  32. package/dist/components/modals/CreditsDisabledModal.mjs.map +1 -1
  33. package/dist/components/modals/HexaPromoModal.mjs +2 -2
  34. package/dist/components/modals/HexaPromoModal.mjs.map +1 -1
  35. package/dist/components/modals/HexaPromoModalGate.mjs.map +1 -1
  36. package/dist/components/modals/Modals.mjs.map +1 -1
  37. package/dist/components/modals/PaidPlanRequiredModal.mjs.map +1 -1
  38. package/dist/components/modals/cards/AddCardModal.mjs.map +1 -1
  39. package/dist/components/modals/cards/CannotDeleteCardModal.mjs.map +1 -1
  40. package/dist/components/modals/cards/CardFormFields.mjs.map +1 -1
  41. package/dist/components/modals/cards/DeleteCardModal.mjs.map +1 -1
  42. package/dist/components/navigation/CancelledSubscriptionBanner.mjs.map +1 -1
  43. package/dist/components/navigation/NavItemsContext.mjs.map +1 -1
  44. package/dist/components/navigation/OverdueInvoiceBanner.mjs.map +1 -1
  45. package/dist/components/navigation/PendingCancellationBanner.mjs.map +1 -1
  46. package/dist/components/navigation/ProjectSelectorPopover.mjs.map +1 -1
  47. package/dist/components/navigation/SubscriptionBanner.mjs.map +1 -1
  48. package/dist/components/navigation/TrialBanner.mjs.map +1 -1
  49. package/dist/components/navigation/UpcomingInvoiceBanner.mjs.map +1 -1
  50. package/dist/components/navigation/shells/TabsMobileShell.mjs.map +1 -1
  51. package/dist/components/navigation/subcomponents/BottomLinks.mjs.map +1 -1
  52. package/dist/components/navigation/subcomponents/ProjectSelector.mjs.map +1 -1
  53. package/dist/components/pages/NotFoundPage.mjs.map +1 -1
  54. package/dist/components/pages/notifications/Notifications.mjs.map +1 -1
  55. package/dist/components/ui/buttons/Button.mjs.map +1 -1
  56. package/dist/components/ui/buttons/CancelButton.mjs.map +1 -1
  57. package/dist/components/ui/buttons/CopyButton.mjs.map +1 -1
  58. package/dist/components/ui/data-display/Accordion.mjs.map +1 -1
  59. package/dist/components/ui/data-display/Badge.mjs.map +1 -1
  60. package/dist/components/ui/data-display/Card.mjs.map +1 -1
  61. package/dist/components/ui/data-display/CardBrandIcons.mjs.map +1 -1
  62. package/dist/components/ui/data-display/CardItem.mjs.map +1 -1
  63. package/dist/components/ui/data-display/Pagination.mjs.map +1 -1
  64. package/dist/components/ui/data-display/PaymentInfoCard.mjs.map +1 -1
  65. package/dist/components/ui/data-display/ScrollArea.mjs.map +1 -1
  66. package/dist/components/ui/data-display/Separator.mjs.map +1 -1
  67. package/dist/components/ui/data-display/Table.mjs.map +1 -1
  68. package/dist/components/ui/data-display/Tabs.mjs.map +1 -1
  69. package/dist/components/ui/feedback/CircularProgress.mjs.map +1 -1
  70. package/dist/components/ui/feedback/DefaultCircularProgress.mjs.map +1 -1
  71. package/dist/components/ui/feedback/LoadingOverlay.mjs.map +1 -1
  72. package/dist/components/ui/feedback/Progress.mjs.map +1 -1
  73. package/dist/components/ui/feedback/Skeleton.mjs.map +1 -1
  74. package/dist/components/ui/feedback/Toast.mjs.map +1 -1
  75. package/dist/components/ui/form/Calendar.mjs.map +1 -1
  76. package/dist/components/ui/form/Checkbox.mjs.map +1 -1
  77. package/dist/components/ui/form/ComboboxField.mjs.map +1 -1
  78. package/dist/components/ui/form/DatePicker.mjs.map +1 -1
  79. package/dist/components/ui/form/DateRangePicker.mjs.map +1 -1
  80. package/dist/components/ui/form/FormField.mjs.map +1 -1
  81. package/dist/components/ui/form/Input.mjs.map +1 -1
  82. package/dist/components/ui/form/InputOtp.mjs.map +1 -1
  83. package/dist/components/ui/form/PhoneInput.mjs.map +1 -1
  84. package/dist/components/ui/form/RadioGroup.mjs.map +1 -1
  85. package/dist/components/ui/form/Select.mjs +1 -1
  86. package/dist/components/ui/form/Select.mjs.map +1 -1
  87. package/dist/components/ui/form/Switch.mjs.map +1 -1
  88. package/dist/components/ui/form/Textarea.mjs.map +1 -1
  89. package/dist/components/ui/overlay/Command.mjs.map +1 -1
  90. package/dist/components/ui/overlay/Dialog.mjs.map +1 -1
  91. package/dist/components/ui/overlay/Popover.mjs.map +1 -1
  92. package/dist/components/ui/overlay/Sheet.mjs.map +1 -1
  93. package/dist/components/ui/overlay/Tooltip.mjs.map +1 -1
  94. package/dist/components/widgets/ImageUpload/ImageCropModal.mjs.map +1 -1
  95. package/dist/components/widgets/ImageUpload/ImageTooSmallModal.mjs.map +1 -1
  96. package/dist/components/widgets/ImageUpload/ImageUpload.mjs.map +1 -1
  97. package/dist/components/widgets/ImageUpload/index.mjs.map +1 -1
  98. package/dist/components/widgets/notifications/NotificationCard.mjs.map +1 -1
  99. package/dist/handlers.mjs.map +1 -1
  100. package/dist/hooks/copy-to-clipboard.hook.mjs.map +1 -1
  101. package/dist/hooks/useAuthQueryKey.mjs.map +1 -1
  102. package/dist/hooks/useBrandLoadingIcon.mjs.map +1 -1
  103. package/dist/hooks/useRouter.mjs.map +1 -1
  104. package/dist/http.mjs.map +1 -1
  105. package/dist/i18n/config.mjs.map +1 -1
  106. package/dist/i18n/country-language.mjs.map +1 -1
  107. package/dist/i18n/messages/en-us.mjs.map +1 -1
  108. package/dist/i18n/messages/es-es.mjs.map +1 -1
  109. package/dist/i18n/messages/index.mjs.map +1 -1
  110. package/dist/i18n/messages/pt-br.mjs.map +1 -1
  111. package/dist/i18n/normalize.mjs.map +1 -1
  112. package/dist/i18n/resolve-locale.mjs.map +1 -1
  113. package/dist/i18n.mjs.map +1 -1
  114. package/dist/index.mjs.map +1 -1
  115. package/dist/infra/http/api-fetch.mjs.map +1 -1
  116. package/dist/infra/route/parse-id.mjs.map +1 -1
  117. package/dist/infra/route/parse-numeric.mjs.map +1 -1
  118. package/dist/infra/route/safe-route-handler.mjs.map +1 -1
  119. package/dist/infra/route/search-params.mjs.map +1 -1
  120. package/dist/infra/utils/array.mjs.map +1 -1
  121. package/dist/infra/utils/date.mjs.map +1 -1
  122. package/dist/middleware.mjs.map +1 -1
  123. package/dist/modules/accounts/actions/account-management.action.mjs.map +1 -1
  124. package/dist/modules/accounts/actions/find-current-account.action.mjs.map +1 -1
  125. package/dist/modules/accounts/actions/get-account-token.action.mjs.map +1 -1
  126. package/dist/modules/accounts/actions/list-currencies.action.mjs.map +1 -1
  127. package/dist/modules/accounts/actions/list-timezones.action.mjs.map +1 -1
  128. package/dist/modules/accounts/hooks/current-account.hook.mjs.map +1 -1
  129. package/dist/modules/accounts/hooks/use-account-token.hook.mjs.map +1 -1
  130. package/dist/modules/accounts/hooks/use-currency-formatter.hook.mjs.map +1 -1
  131. package/dist/modules/accounts/hooks/useAccountManagement.mjs.map +1 -1
  132. package/dist/modules/accounts/hooks/useCurrencies.mjs.map +1 -1
  133. package/dist/modules/accounts/hooks/useTimezones.mjs.map +1 -1
  134. package/dist/modules/accounts/hooks/useViaCep.mjs.map +1 -1
  135. package/dist/modules/accounts/services/account-token.service.mjs.map +1 -1
  136. package/dist/modules/accounts/services/account.service.mjs.map +1 -1
  137. package/dist/modules/auth/actions/social-google-login.action.mjs.map +1 -1
  138. package/dist/modules/auth/actions/social-google-onboarding.action.mjs.map +1 -1
  139. package/dist/modules/auth/actions/unlink-google.action.mjs.map +1 -1
  140. package/dist/modules/auth/actions/validate-session.action.mjs.map +1 -1
  141. package/dist/modules/auth/actions/verify-two-factor.action.mjs.map +1 -1
  142. package/dist/modules/auth/hooks/login.hook.mjs.map +1 -1
  143. package/dist/modules/auth/hooks/logout.hook.mjs.map +1 -1
  144. package/dist/modules/auth/hooks/register.hook.mjs.map +1 -1
  145. package/dist/modules/auth/hooks/social-google-login.hook.mjs.map +1 -1
  146. package/dist/modules/auth/hooks/social-google-onboarding.hook.mjs.map +1 -1
  147. package/dist/modules/auth/hooks/unlink-google.hook.mjs.map +1 -1
  148. package/dist/modules/auth/hooks/useManagementPermissions.mjs.map +1 -1
  149. package/dist/modules/auth/hooks/useUserQuery.mjs.map +1 -1
  150. package/dist/modules/auth/utils/assert-management-permission.mjs.map +1 -1
  151. package/dist/modules/auth/utils/assert-management-subscription.mjs.map +1 -1
  152. package/dist/modules/auth/utils/assert-paid-subscription.mjs.map +1 -1
  153. package/dist/modules/auth/utils/assert-subscription-addon.mjs.map +1 -1
  154. package/dist/modules/auth/utils/build-wl-override.mjs.map +1 -1
  155. package/dist/modules/auth/utils/require-token-not-expired.mjs.map +1 -1
  156. package/dist/modules/auth/utils/require-valid-session.mjs.map +1 -1
  157. package/dist/modules/cards/actions/create-card.action.mjs.map +1 -1
  158. package/dist/modules/cards/actions/create-setup-intent.action.mjs.map +1 -1
  159. package/dist/modules/cards/actions/delete-card.action.mjs.map +1 -1
  160. package/dist/modules/cards/actions/set-default-card.action.mjs.map +1 -1
  161. package/dist/modules/cards/handlers/find-card-by-id.handler.mjs.map +1 -1
  162. package/dist/modules/cards/handlers/list-cards.handler.mjs.map +1 -1
  163. package/dist/modules/cards/hooks/card-by-id.hook.mjs.map +1 -1
  164. package/dist/modules/cards/hooks/cards.hook.mjs.map +1 -1
  165. package/dist/modules/cards/hooks/create-card.hook.mjs.map +1 -1
  166. package/dist/modules/cards/hooks/create-setup-intent.hook.mjs.map +1 -1
  167. package/dist/modules/cards/hooks/delete-card.hook.mjs.map +1 -1
  168. package/dist/modules/cards/hooks/delete-confirmation.hook.mjs.map +1 -1
  169. package/dist/modules/cards/hooks/handle-delete-card.hook.mjs.map +1 -1
  170. package/dist/modules/cards/hooks/set-default-card.hook.mjs.map +1 -1
  171. package/dist/modules/cards/services/cards.service.mjs.map +1 -1
  172. package/dist/modules/cards/types.mjs.map +1 -1
  173. package/dist/modules/charges/actions/charge-action.action.mjs.map +1 -1
  174. package/dist/modules/charges/handlers/find-charge-by-id.handler.mjs.map +1 -1
  175. package/dist/modules/charges/handlers/list-charges.handler.mjs.map +1 -1
  176. package/dist/modules/charges/hooks/charge-action.hook.mjs.map +1 -1
  177. package/dist/modules/charges/hooks/charge-by-id.hook.mjs.map +1 -1
  178. package/dist/modules/charges/hooks/charges.hook.mjs.map +1 -1
  179. package/dist/modules/charges/services/charges.service.mjs.map +1 -1
  180. package/dist/modules/charges/types/charge.type.mjs.map +1 -1
  181. package/dist/modules/ia-credits/handlers/list-ia-credits.handler.mjs.map +1 -1
  182. package/dist/modules/ia-credits/hooks/ia-credits.hook.mjs.map +1 -1
  183. package/dist/modules/images/actions/process-image.action.mjs.map +1 -1
  184. package/dist/modules/images/constants/image.constants.mjs.map +1 -1
  185. package/dist/modules/images/hooks/use-image-upload.hook.mjs.map +1 -1
  186. package/dist/modules/images/services/image-processing.service.mjs.map +1 -1
  187. package/dist/modules/images/utils/base64.mjs.map +1 -1
  188. package/dist/modules/images/utils/compress-image.mjs.map +1 -1
  189. package/dist/modules/images/utils/crop-image.mjs.map +1 -1
  190. package/dist/modules/images/utils/validate-image.mjs.map +1 -1
  191. package/dist/modules/pages/constants/query-keys.constants.mjs.map +1 -1
  192. package/dist/modules/pages/handlers/count-pages.handler.mjs.map +1 -1
  193. package/dist/modules/pages/hooks/count-pages.hook.mjs.map +1 -1
  194. package/dist/modules/pages/services/pages.service.mjs.map +1 -1
  195. package/dist/modules/plans/handlers/find-plan-by-id.handler.mjs.map +1 -1
  196. package/dist/modules/plans/handlers/list-plans.handler.mjs.map +1 -1
  197. package/dist/modules/plans/hooks/list-plans.hook.mjs.map +1 -1
  198. package/dist/modules/plans/hooks/use-has-plan-addon.hook.mjs.map +1 -1
  199. package/dist/modules/plans/hooks/use-plan-by-id.hook.mjs.map +1 -1
  200. package/dist/modules/plans/services/plans.service.mjs.map +1 -1
  201. package/dist/modules/plans/types/plan.type.mjs.map +1 -1
  202. package/dist/modules/plans/utils/map-api-plan-to-ui.mjs.map +1 -1
  203. package/dist/modules/projects/actions/add-project-user.action.mjs.map +1 -1
  204. package/dist/modules/projects/actions/create-project.action.mjs.map +1 -1
  205. package/dist/modules/projects/actions/delete-project.action.mjs.map +1 -1
  206. package/dist/modules/projects/actions/find-project.action.mjs.map +1 -1
  207. package/dist/modules/projects/actions/list-project-users.action.mjs.map +1 -1
  208. package/dist/modules/projects/actions/list-projects.action.mjs.map +1 -1
  209. package/dist/modules/projects/actions/remove-project-user.action.mjs.map +1 -1
  210. package/dist/modules/projects/actions/update-project.action.mjs.map +1 -1
  211. package/dist/modules/projects/handlers/find-project.handler.mjs.map +1 -1
  212. package/dist/modules/projects/handlers/list-all-account-users.handler.mjs.map +1 -1
  213. package/dist/modules/projects/handlers/list-available-users.handler.mjs.map +1 -1
  214. package/dist/modules/projects/handlers/list-project-users.handler.mjs.map +1 -1
  215. package/dist/modules/projects/handlers/list-projects.handler.mjs.map +1 -1
  216. package/dist/modules/projects/hooks/add-project-user.hook.mjs.map +1 -1
  217. package/dist/modules/projects/hooks/create-project.hook.mjs.map +1 -1
  218. package/dist/modules/projects/hooks/delete-project.hook.mjs.map +1 -1
  219. package/dist/modules/projects/hooks/find-project.hook.mjs.map +1 -1
  220. package/dist/modules/projects/hooks/list-all-account-users.hook.mjs.map +1 -1
  221. package/dist/modules/projects/hooks/list-available-users.hook.mjs.map +1 -1
  222. package/dist/modules/projects/hooks/list-infinite-projects.hook.mjs.map +1 -1
  223. package/dist/modules/projects/hooks/list-project-users.hook.mjs.map +1 -1
  224. package/dist/modules/projects/hooks/list-projects.hook.mjs.map +1 -1
  225. package/dist/modules/projects/hooks/remove-project-user.hook.mjs.map +1 -1
  226. package/dist/modules/projects/hooks/update-project.hook.mjs.map +1 -1
  227. package/dist/modules/projects/services/projects.service.mjs.map +1 -1
  228. package/dist/modules/subscriptions/actions/calculate-subscription.action.mjs.map +1 -1
  229. package/dist/modules/subscriptions/actions/list-subscriptions.action.mjs.map +1 -1
  230. package/dist/modules/subscriptions/actions/update-subscription-payment.action.mjs.map +1 -1
  231. package/dist/modules/subscriptions/actions/update-subscription-plan.action.mjs.map +1 -1
  232. package/dist/modules/subscriptions/constants/query-keys.constants.mjs.map +1 -1
  233. package/dist/modules/subscriptions/constants/subscription.constants.mjs.map +1 -1
  234. package/dist/modules/subscriptions/handlers/list-subscriptions.handler.mjs.map +1 -1
  235. package/dist/modules/subscriptions/hooks/calculate-subscription.hook.mjs.map +1 -1
  236. package/dist/modules/subscriptions/hooks/find-active-subscription.hook.mjs.map +1 -1
  237. package/dist/modules/subscriptions/hooks/list-subscriptions.hook.mjs.map +1 -1
  238. package/dist/modules/subscriptions/hooks/update-subscription-payment.hook.mjs.map +1 -1
  239. package/dist/modules/subscriptions/hooks/update-subscription-plan.hook.mjs.map +1 -1
  240. package/dist/modules/subscriptions/hooks/use-cancelled-subscription-guard.mjs.map +1 -1
  241. package/dist/modules/subscriptions/types/calculate-subscription.type.mjs.map +1 -1
  242. package/dist/modules/subscriptions/types/pix-pending.type.mjs.map +1 -1
  243. package/dist/modules/subscriptions/utils/build-plan-extras.mjs.map +1 -1
  244. package/dist/modules/subscriptions/utils/get-subscription-cancellation-state.mjs.map +1 -1
  245. package/dist/modules/subscriptions/utils/get-subscription-expiry-date.mjs.map +1 -1
  246. package/dist/modules/subscriptions/utils/has-subscription-expired.mjs.map +1 -1
  247. package/dist/modules/subscriptions/utils/periodicity.mjs.map +1 -1
  248. package/dist/modules/subscriptions/utils/resolve-plan-extras-prices.mjs.map +1 -1
  249. package/dist/modules/users/action/find-user-by-id.action.mjs.map +1 -1
  250. package/dist/modules/users/action/mark-all-messages-as-read.action.mjs.map +1 -1
  251. package/dist/modules/users/action/mark-message-as-read.action.mjs.map +1 -1
  252. package/dist/modules/users/handlers/list-messages.handler.mjs.map +1 -1
  253. package/dist/modules/users/hooks/messages.hook.mjs.map +1 -1
  254. package/dist/modules/users/services/messages.service.mjs.map +1 -1
  255. package/dist/modules/whitelabel/actions/find-whitelabel.action.mjs.map +1 -1
  256. package/dist/modules/whitelabel/actions/revalidate-whitelabel.action.mjs.map +1 -1
  257. package/dist/modules/whitelabel/utils/normalize-hostname.mjs.map +1 -1
  258. package/dist/providers/auth.provider.mjs.map +1 -1
  259. package/dist/providers/navigation.provider.mjs.map +1 -1
  260. package/dist/providers/whitelabel.provider.mjs.map +1 -1
  261. package/dist/route.mjs.map +1 -1
  262. package/dist/store/useAccountModals.mjs.map +1 -1
  263. package/dist/store/useBuyCreditsModal.mjs.map +1 -1
  264. package/dist/store/useCreditsDisabledModal.mjs.map +1 -1
  265. package/dist/store/useDesktopSidebarStore.mjs.map +1 -1
  266. package/dist/store/useHexaPromoModal.mjs.map +1 -1
  267. package/dist/store/useMdSidebarStore.mjs.map +1 -1
  268. package/dist/store/usePaidPlanRequiredModal.mjs.map +1 -1
  269. package/dist/utils/constants/br-states.mjs.map +1 -1
  270. package/dist/utils/cookies/hexa-promo.mjs.map +1 -1
  271. package/dist/utils/countries.mjs.map +1 -1
  272. package/dist/utils/format/currency.mjs.map +1 -1
  273. package/dist/utils/intl/cookie-domain.mjs.map +1 -1
  274. package/dist/utils/intl/locale-cookie.mjs.map +1 -1
  275. package/dist/utils/next-navigation.mjs.map +1 -1
  276. package/dist/utils/redirect.mjs.map +1 -1
  277. package/dist/utils/safeMutationAction.mjs.map +1 -1
  278. package/dist/utils/safeServerAction.mjs.map +1 -1
  279. package/dist/utils/withAction.mjs.map +1 -1
  280. package/package.json +115 -115
  281. package/src/components/account/ConfigurationsMyAccountModal.tsx +179 -179
  282. package/src/components/account/ConfirmDeleteAccountModal.tsx +110 -110
  283. package/src/components/account/ConfirmGlobalPreferencesModal.tsx +68 -68
  284. package/src/components/account/DeleteAccountModal.tsx +160 -160
  285. package/src/components/account/DisableTwoFactorAuthModal.tsx +92 -92
  286. package/src/components/account/IsntPossibleDeleteAccountModal.tsx +51 -51
  287. package/src/components/account/TwoFactorAuthModal.tsx +220 -220
  288. package/src/components/account/hooks/useChangePhoneForm.tsx +113 -113
  289. package/src/components/account/hooks/useTwoFactorAuthForm.tsx +116 -116
  290. package/src/components/account/sections/ChangeEmailModal.tsx +239 -239
  291. package/src/components/account/sections/ChangePasswordSection.tsx +68 -68
  292. package/src/components/account/sections/ChangePhoneModal.tsx +273 -273
  293. package/src/components/account/sections/MyProfileSection.tsx +276 -276
  294. package/src/components/account/sections/PreferencesSection.tsx +278 -278
  295. package/src/components/account/sections/SecuritySection.tsx +102 -102
  296. package/src/components/account/sections/TokenSection.tsx +85 -85
  297. package/src/components/embeds/ClarityEmbed.tsx +70 -70
  298. package/src/components/embeds/CrispEmbed.tsx +195 -195
  299. package/src/components/embeds/EmbedWidgets.tsx +62 -62
  300. package/src/components/embeds/FrillEmbed.tsx +146 -146
  301. package/src/components/layouts/AppMobileNavBar.tsx +214 -214
  302. package/src/components/layouts/AppNavBar.tsx +40 -40
  303. package/src/components/layouts/MdSideBarNavigation.tsx +56 -56
  304. package/src/components/layouts/NavBar.tsx +228 -228
  305. package/src/components/layouts/NotificationsPopover.tsx +120 -120
  306. package/src/components/layouts/ProfilePopover.tsx +191 -191
  307. package/src/components/layouts/SideBarNavigation.tsx +65 -65
  308. package/src/components/layouts/UsersSelectorPopover.tsx +236 -236
  309. package/src/components/layouts/WhitelabelCodes.tsx +59 -59
  310. package/src/components/modals/BuyCreditsModal.tsx +390 -390
  311. package/src/components/modals/CreditsDisabledModal.tsx +62 -62
  312. package/src/components/modals/HexaPromoModal.tsx +212 -212
  313. package/src/components/modals/HexaPromoModalGate.tsx +80 -80
  314. package/src/components/modals/Modals.tsx +25 -25
  315. package/src/components/modals/PaidPlanRequiredModal.tsx +60 -60
  316. package/src/components/modals/cards/AddCardModal.tsx +420 -420
  317. package/src/components/modals/cards/CannotDeleteCardModal.tsx +124 -124
  318. package/src/components/modals/cards/CardFormFields.tsx +363 -363
  319. package/src/components/modals/cards/DeleteCardModal.tsx +136 -136
  320. package/src/components/navigation/CancelledSubscriptionBanner.tsx +62 -62
  321. package/src/components/navigation/NavItemsContext.ts +20 -20
  322. package/src/components/navigation/OverdueInvoiceBanner.tsx +51 -51
  323. package/src/components/navigation/PendingCancellationBanner.tsx +60 -60
  324. package/src/components/navigation/ProjectSelectorPopover.tsx +180 -180
  325. package/src/components/navigation/SubscriptionBanner.tsx +94 -94
  326. package/src/components/navigation/TrialBanner.tsx +54 -54
  327. package/src/components/navigation/UpcomingInvoiceBanner.tsx +55 -55
  328. package/src/components/navigation/shells/TabsMobileShell.tsx +74 -74
  329. package/src/components/navigation/subcomponents/BottomLinks.tsx +85 -85
  330. package/src/components/navigation/subcomponents/ProjectSelector.tsx +184 -184
  331. package/src/components/pages/NotFoundPage.tsx +75 -75
  332. package/src/components/pages/notifications/Notifications.tsx +190 -190
  333. package/src/components/ui/buttons/Button.tsx +77 -77
  334. package/src/components/ui/buttons/CancelButton.tsx +14 -14
  335. package/src/components/ui/buttons/CopyButton.tsx +59 -59
  336. package/src/components/ui/data-display/Accordion.tsx +81 -81
  337. package/src/components/ui/data-display/Badge.tsx +47 -47
  338. package/src/components/ui/data-display/Card.tsx +93 -93
  339. package/src/components/ui/data-display/CardBrandIcons.tsx +336 -336
  340. package/src/components/ui/data-display/CardItem.tsx +135 -135
  341. package/src/components/ui/data-display/Pagination.tsx +126 -126
  342. package/src/components/ui/data-display/PaymentInfoCard.tsx +193 -193
  343. package/src/components/ui/data-display/ScrollArea.tsx +59 -59
  344. package/src/components/ui/data-display/Separator.tsx +29 -29
  345. package/src/components/ui/data-display/Table.tsx +117 -117
  346. package/src/components/ui/data-display/Tabs.tsx +67 -67
  347. package/src/components/ui/feedback/CircularProgress.tsx +79 -79
  348. package/src/components/ui/feedback/DefaultCircularProgress.tsx +67 -67
  349. package/src/components/ui/feedback/LoadingOverlay.tsx +30 -30
  350. package/src/components/ui/feedback/Progress.tsx +40 -40
  351. package/src/components/ui/feedback/Skeleton.tsx +5 -5
  352. package/src/components/ui/feedback/Toast.tsx +104 -104
  353. package/src/components/ui/form/Calendar.tsx +228 -228
  354. package/src/components/ui/form/Checkbox.tsx +31 -31
  355. package/src/components/ui/form/ComboboxField.tsx +159 -159
  356. package/src/components/ui/form/DatePicker.tsx +100 -100
  357. package/src/components/ui/form/DateRangePicker.tsx +111 -111
  358. package/src/components/ui/form/FormField.tsx +133 -133
  359. package/src/components/ui/form/Input.tsx +20 -20
  360. package/src/components/ui/form/InputOtp.tsx +80 -80
  361. package/src/components/ui/form/PhoneInput.tsx +210 -210
  362. package/src/components/ui/form/RadioGroup.tsx +45 -45
  363. package/src/components/ui/form/Select.tsx +200 -200
  364. package/src/components/ui/form/Switch.tsx +32 -32
  365. package/src/components/ui/form/Textarea.tsx +19 -19
  366. package/src/components/ui/overlay/Command.tsx +185 -185
  367. package/src/components/ui/overlay/Dialog.tsx +153 -153
  368. package/src/components/ui/overlay/Popover.tsx +49 -49
  369. package/src/components/ui/overlay/Sheet.tsx +170 -170
  370. package/src/components/ui/overlay/Tooltip.tsx +62 -62
  371. package/src/components/widgets/ImageUpload/ImageCropModal.tsx +392 -392
  372. package/src/components/widgets/ImageUpload/ImageTooSmallModal.tsx +62 -62
  373. package/src/components/widgets/ImageUpload/ImageUpload.tsx +131 -131
  374. package/src/components/widgets/ImageUpload/index.ts +3 -3
  375. package/src/components/widgets/notifications/NotificationCard.tsx +73 -73
  376. package/src/handlers.ts +22 -22
  377. package/src/hooks/copy-to-clipboard.hook.tsx +67 -67
  378. package/src/hooks/useAuthQueryKey.ts +32 -32
  379. package/src/hooks/useBrandLoadingIcon.tsx +18 -18
  380. package/src/hooks/useRouter.ts +38 -38
  381. package/src/http.ts +1 -1
  382. package/src/i18n/config.ts +17 -17
  383. package/src/i18n/country-language.ts +60 -60
  384. package/src/i18n/messages/en-us.ts +519 -519
  385. package/src/i18n/messages/es-es.ts +520 -520
  386. package/src/i18n/messages/index.ts +24 -24
  387. package/src/i18n/messages/pt-br.ts +543 -543
  388. package/src/i18n/normalize.ts +15 -15
  389. package/src/i18n/resolve-locale.ts +77 -77
  390. package/src/i18n.ts +10 -10
  391. package/src/index.ts +587 -587
  392. package/src/infra/http/api-fetch.ts +39 -39
  393. package/src/infra/route/parse-id.ts +9 -9
  394. package/src/infra/route/parse-numeric.ts +16 -16
  395. package/src/infra/route/safe-route-handler.ts +16 -16
  396. package/src/infra/route/search-params.ts +9 -9
  397. package/src/infra/utils/array.ts +167 -167
  398. package/src/infra/utils/date.ts +59 -59
  399. package/src/middleware.ts +4 -4
  400. package/src/modules/accounts/actions/account-management.action.ts +109 -109
  401. package/src/modules/accounts/actions/find-current-account.action.ts +9 -9
  402. package/src/modules/accounts/actions/get-account-token.action.ts +8 -8
  403. package/src/modules/accounts/actions/list-currencies.action.ts +8 -8
  404. package/src/modules/accounts/actions/list-timezones.action.ts +8 -8
  405. package/src/modules/accounts/hooks/current-account.hook.tsx +26 -26
  406. package/src/modules/accounts/hooks/use-account-token.hook.tsx +14 -14
  407. package/src/modules/accounts/hooks/use-currency-formatter.hook.tsx +32 -32
  408. package/src/modules/accounts/hooks/useAccountManagement.ts +95 -95
  409. package/src/modules/accounts/hooks/useCurrencies.ts +18 -18
  410. package/src/modules/accounts/hooks/useTimezones.ts +18 -18
  411. package/src/modules/accounts/hooks/useViaCep.ts +25 -25
  412. package/src/modules/accounts/services/account-token.service.ts +52 -52
  413. package/src/modules/accounts/services/account.service.ts +243 -243
  414. package/src/modules/accounts/types.ts +230 -230
  415. package/src/modules/auth/actions/social-google-login.action.ts +12 -12
  416. package/src/modules/auth/actions/social-google-onboarding.action.ts +13 -13
  417. package/src/modules/auth/actions/unlink-google.action.ts +8 -8
  418. package/src/modules/auth/actions/validate-session.action.ts +70 -70
  419. package/src/modules/auth/actions/verify-two-factor.action.ts +19 -19
  420. package/src/modules/auth/hooks/login.hook.tsx +13 -13
  421. package/src/modules/auth/hooks/logout.hook.tsx +11 -11
  422. package/src/modules/auth/hooks/register.hook.tsx +11 -11
  423. package/src/modules/auth/hooks/social-google-login.hook.tsx +13 -13
  424. package/src/modules/auth/hooks/social-google-onboarding.hook.tsx +13 -13
  425. package/src/modules/auth/hooks/unlink-google.hook.tsx +13 -13
  426. package/src/modules/auth/hooks/useManagementPermissions.ts +52 -52
  427. package/src/modules/auth/hooks/useUserQuery.ts +103 -103
  428. package/src/modules/auth/types/management-permission.type.ts +14 -14
  429. package/src/modules/auth/utils/assert-management-permission.ts +56 -56
  430. package/src/modules/auth/utils/assert-management-subscription.ts +38 -38
  431. package/src/modules/auth/utils/assert-paid-subscription.ts +47 -47
  432. package/src/modules/auth/utils/assert-subscription-addon.ts +42 -42
  433. package/src/modules/auth/utils/build-wl-override.ts +43 -43
  434. package/src/modules/auth/utils/require-token-not-expired.ts +53 -53
  435. package/src/modules/auth/utils/require-valid-session.ts +35 -35
  436. package/src/modules/cards/actions/create-card.action.ts +9 -9
  437. package/src/modules/cards/actions/create-setup-intent.action.ts +8 -8
  438. package/src/modules/cards/actions/delete-card.action.ts +8 -8
  439. package/src/modules/cards/actions/set-default-card.action.ts +8 -8
  440. package/src/modules/cards/handlers/find-card-by-id.handler.ts +15 -15
  441. package/src/modules/cards/handlers/list-cards.handler.ts +10 -10
  442. package/src/modules/cards/hooks/card-by-id.hook.ts +17 -17
  443. package/src/modules/cards/hooks/cards.hook.ts +22 -22
  444. package/src/modules/cards/hooks/create-card.hook.ts +30 -30
  445. package/src/modules/cards/hooks/create-setup-intent.hook.ts +11 -11
  446. package/src/modules/cards/hooks/delete-card.hook.ts +52 -52
  447. package/src/modules/cards/hooks/delete-confirmation.hook.ts +40 -40
  448. package/src/modules/cards/hooks/handle-delete-card.hook.ts +47 -47
  449. package/src/modules/cards/hooks/set-default-card.hook.ts +55 -55
  450. package/src/modules/cards/services/cards.service.ts +136 -136
  451. package/src/modules/cards/types.ts +52 -52
  452. package/src/modules/charges/actions/charge-action.action.ts +13 -13
  453. package/src/modules/charges/handlers/find-charge-by-id.handler.ts +14 -14
  454. package/src/modules/charges/handlers/list-charges.handler.ts +15 -15
  455. package/src/modules/charges/hooks/charge-action.hook.ts +24 -24
  456. package/src/modules/charges/hooks/charge-by-id.hook.ts +19 -19
  457. package/src/modules/charges/hooks/charges.hook.ts +19 -19
  458. package/src/modules/charges/services/charges.service.ts +63 -63
  459. package/src/modules/charges/types/charge.type.ts +68 -68
  460. package/src/modules/ia-credits/handlers/list-ia-credits.handler.ts +14 -14
  461. package/src/modules/ia-credits/hooks/ia-credits.hook.ts +103 -103
  462. package/src/modules/images/actions/process-image.action.ts +40 -40
  463. package/src/modules/images/constants/image.constants.ts +11 -11
  464. package/src/modules/images/hooks/use-image-upload.hook.ts +153 -153
  465. package/src/modules/images/services/image-processing.service.ts +75 -75
  466. package/src/modules/images/types/image.type.ts +54 -54
  467. package/src/modules/images/utils/base64.ts +26 -26
  468. package/src/modules/images/utils/compress-image.ts +20 -20
  469. package/src/modules/images/utils/crop-image.ts +68 -68
  470. package/src/modules/images/utils/validate-image.ts +86 -86
  471. package/src/modules/pages/constants/query-keys.constants.ts +1 -1
  472. package/src/modules/pages/handlers/count-pages.handler.ts +12 -12
  473. package/src/modules/pages/hooks/count-pages.hook.ts +21 -21
  474. package/src/modules/pages/services/pages.service.ts +27 -27
  475. package/src/modules/plans/handlers/find-plan-by-id.handler.ts +14 -14
  476. package/src/modules/plans/handlers/list-plans.handler.ts +22 -22
  477. package/src/modules/plans/hooks/list-plans.hook.ts +23 -23
  478. package/src/modules/plans/hooks/use-has-plan-addon.hook.ts +14 -14
  479. package/src/modules/plans/hooks/use-plan-by-id.hook.ts +39 -39
  480. package/src/modules/plans/services/plans.service.ts +136 -136
  481. package/src/modules/plans/types/plan.type.ts +79 -79
  482. package/src/modules/plans/utils/map-api-plan-to-ui.ts +167 -167
  483. package/src/modules/projects/actions/add-project-user.action.ts +9 -9
  484. package/src/modules/projects/actions/create-project.action.ts +9 -9
  485. package/src/modules/projects/actions/delete-project.action.ts +8 -8
  486. package/src/modules/projects/actions/find-project.action.ts +8 -8
  487. package/src/modules/projects/actions/list-project-users.action.ts +9 -9
  488. package/src/modules/projects/actions/list-projects.action.ts +16 -16
  489. package/src/modules/projects/actions/remove-project-user.action.ts +9 -9
  490. package/src/modules/projects/actions/update-project.action.ts +9 -9
  491. package/src/modules/projects/handlers/find-project.handler.ts +15 -15
  492. package/src/modules/projects/handlers/list-all-account-users.handler.ts +23 -23
  493. package/src/modules/projects/handlers/list-available-users.handler.ts +26 -26
  494. package/src/modules/projects/handlers/list-project-users.handler.ts +26 -26
  495. package/src/modules/projects/handlers/list-projects.handler.ts +23 -23
  496. package/src/modules/projects/hooks/add-project-user.hook.ts +72 -72
  497. package/src/modules/projects/hooks/create-project.hook.ts +120 -120
  498. package/src/modules/projects/hooks/delete-project.hook.ts +58 -58
  499. package/src/modules/projects/hooks/find-project.hook.ts +18 -18
  500. package/src/modules/projects/hooks/list-all-account-users.hook.ts +40 -40
  501. package/src/modules/projects/hooks/list-available-users.hook.ts +39 -39
  502. package/src/modules/projects/hooks/list-infinite-projects.hook.ts +44 -44
  503. package/src/modules/projects/hooks/list-project-users.hook.ts +39 -39
  504. package/src/modules/projects/hooks/list-projects.hook.ts +23 -23
  505. package/src/modules/projects/hooks/remove-project-user.hook.ts +72 -72
  506. package/src/modules/projects/hooks/update-project.hook.ts +86 -86
  507. package/src/modules/projects/services/projects.service.ts +156 -156
  508. package/src/modules/subscriptions/actions/calculate-subscription.action.ts +9 -9
  509. package/src/modules/subscriptions/actions/list-subscriptions.action.ts +9 -9
  510. package/src/modules/subscriptions/actions/update-subscription-payment.action.ts +13 -13
  511. package/src/modules/subscriptions/actions/update-subscription-plan.action.ts +14 -14
  512. package/src/modules/subscriptions/constants/query-keys.constants.ts +3 -3
  513. package/src/modules/subscriptions/constants/subscription.constants.ts +1 -1
  514. package/src/modules/subscriptions/handlers/list-subscriptions.handler.ts +17 -17
  515. package/src/modules/subscriptions/hooks/calculate-subscription.hook.ts +13 -13
  516. package/src/modules/subscriptions/hooks/find-active-subscription.hook.ts +22 -22
  517. package/src/modules/subscriptions/hooks/list-subscriptions.hook.ts +22 -22
  518. package/src/modules/subscriptions/hooks/update-subscription-payment.hook.ts +25 -25
  519. package/src/modules/subscriptions/hooks/update-subscription-plan.hook.ts +28 -28
  520. package/src/modules/subscriptions/hooks/use-cancelled-subscription-guard.ts +44 -44
  521. package/src/modules/subscriptions/types/billing-period.type.ts +1 -1
  522. package/src/modules/subscriptions/types/calculate-subscription.type.ts +116 -116
  523. package/src/modules/subscriptions/types/pix-pending.type.ts +38 -38
  524. package/src/modules/subscriptions/utils/build-plan-extras.ts +56 -56
  525. package/src/modules/subscriptions/utils/get-subscription-cancellation-state.ts +37 -37
  526. package/src/modules/subscriptions/utils/get-subscription-expiry-date.ts +33 -33
  527. package/src/modules/subscriptions/utils/has-subscription-expired.ts +11 -11
  528. package/src/modules/subscriptions/utils/periodicity.ts +79 -79
  529. package/src/modules/subscriptions/utils/resolve-plan-extras-prices.ts +23 -23
  530. package/src/modules/users/action/find-user-by-id.action.ts +8 -8
  531. package/src/modules/users/action/mark-all-messages-as-read.action.ts +8 -8
  532. package/src/modules/users/action/mark-message-as-read.action.ts +8 -8
  533. package/src/modules/users/handlers/list-messages.handler.ts +39 -39
  534. package/src/modules/users/hooks/messages.hook.ts +69 -69
  535. package/src/modules/users/services/messages.service.ts +49 -49
  536. package/src/modules/whitelabel/actions/find-whitelabel.action.ts +23 -23
  537. package/src/modules/whitelabel/actions/revalidate-whitelabel.action.ts +19 -19
  538. package/src/modules/whitelabel/schema.ts +84 -84
  539. package/src/modules/whitelabel/utils/normalize-hostname.ts +26 -26
  540. package/src/providers/auth.provider.tsx +267 -267
  541. package/src/providers/navigation.provider.tsx +99 -99
  542. package/src/providers/whitelabel.provider.tsx +90 -90
  543. package/src/route.ts +4 -4
  544. package/src/store/useAccountModals.ts +85 -85
  545. package/src/store/useBuyCreditsModal.ts +21 -21
  546. package/src/store/useCreditsDisabledModal.ts +11 -11
  547. package/src/store/useDesktopSidebarStore.ts +47 -47
  548. package/src/store/useHexaPromoModal.ts +13 -13
  549. package/src/store/useMdSidebarStore.ts +34 -34
  550. package/src/store/usePaidPlanRequiredModal.ts +19 -19
  551. package/src/utils/constants/br-states.ts +29 -29
  552. package/src/utils/cookies/hexa-promo.ts +114 -114
  553. package/src/utils/countries.ts +224 -224
  554. package/src/utils/format/currency.ts +70 -70
  555. package/src/utils/intl/cookie-domain.ts +29 -29
  556. package/src/utils/intl/locale-cookie.ts +18 -18
  557. package/src/utils/next-navigation.ts +7 -7
  558. package/src/utils/redirect.ts +78 -78
  559. package/src/utils/safeMutationAction.ts +24 -24
  560. package/src/utils/safeServerAction.ts +21 -21
  561. package/src/utils/withAction.ts +13 -13
@@ -1,62 +1,62 @@
1
- 'use client';
2
-
3
- import {
4
- Dialog,
5
- DialogContent,
6
- DialogDescription,
7
- DialogHeader,
8
- DialogTitle,
9
- } from '../ui/overlay/Dialog';
10
- import { Button } from '../ui/buttons/Button';
11
- import { Separator } from '../ui/data-display/Separator';
12
- import { IconAlertTriangle } from '@tabler/icons-react';
13
- import { useTranslations } from 'next-intl';
14
- import { useCreditsDisabledModal } from '../../store/useCreditsDisabledModal';
15
-
16
- export default function CreditsDisabledModal() {
17
- const translate = useTranslations();
18
- const { open, closeModal } = useCreditsDisabledModal();
19
-
20
- return (
21
- <Dialog
22
- open={open}
23
- onOpenChange={(nextOpen) => {
24
- if (!nextOpen) closeModal();
25
- }}
26
- >
27
- <DialogContent
28
- onOpenAutoFocus={(e) => e.preventDefault()}
29
- className="flex flex-col p-0 gap-0 md:w-[410px]! lg:w-[410px]! max-w-[410px]! max-[410px]:w-[calc(100%-32px)] duration-0!"
30
- >
31
- <DialogHeader className="gap-3 text-left p-5">
32
- <div className="flex items-center justify-center w-10 h-10 bg-gray-100 rounded-lg">
33
- <IconAlertTriangle size={20} className="text-gray-950" />
34
- </div>
35
- <div className="flex flex-col gap-2">
36
- <DialogTitle className="paragraph-medium-semibold text-zinc-950">
37
- {translate('common.credits.disabled.title')}
38
- </DialogTitle>
39
- <DialogDescription className="paragraph-small-regular text-zinc-600" asChild>
40
- <div className="flex flex-col gap-3">
41
- <p>{translate('common.credits.disabled.descriptionLine1')}</p>
42
- <p>{translate('common.credits.disabled.descriptionLine2')}</p>
43
- </div>
44
- </DialogDescription>
45
- </div>
46
- </DialogHeader>
47
-
48
- <Separator />
49
-
50
- <div className="flex items-center gap-2 p-5">
51
- <Button
52
- variant="secondary"
53
- className="h-10! transition-colors"
54
- onClick={() => closeModal()}
55
- >
56
- {translate('common.credits.disabled.understood')}
57
- </Button>
58
- </div>
59
- </DialogContent>
60
- </Dialog>
61
- );
62
- }
1
+ 'use client';
2
+
3
+ import {
4
+ Dialog,
5
+ DialogContent,
6
+ DialogDescription,
7
+ DialogHeader,
8
+ DialogTitle,
9
+ } from '../ui/overlay/Dialog';
10
+ import { Button } from '../ui/buttons/Button';
11
+ import { Separator } from '../ui/data-display/Separator';
12
+ import { IconAlertTriangle } from '@tabler/icons-react';
13
+ import { useTranslations } from 'next-intl';
14
+ import { useCreditsDisabledModal } from '../../store/useCreditsDisabledModal';
15
+
16
+ export default function CreditsDisabledModal() {
17
+ const translate = useTranslations();
18
+ const { open, closeModal } = useCreditsDisabledModal();
19
+
20
+ return (
21
+ <Dialog
22
+ open={open}
23
+ onOpenChange={(nextOpen) => {
24
+ if (!nextOpen) closeModal();
25
+ }}
26
+ >
27
+ <DialogContent
28
+ onOpenAutoFocus={(e) => e.preventDefault()}
29
+ className="flex flex-col p-0 gap-0 md:w-[410px]! lg:w-[410px]! max-w-[410px]! max-[410px]:w-[calc(100%-32px)] duration-0!"
30
+ >
31
+ <DialogHeader className="gap-3 text-left p-5">
32
+ <div className="flex items-center justify-center w-10 h-10 bg-gray-100 rounded-lg">
33
+ <IconAlertTriangle size={20} className="text-gray-950" />
34
+ </div>
35
+ <div className="flex flex-col gap-2">
36
+ <DialogTitle className="paragraph-medium-semibold text-zinc-950">
37
+ {translate('common.credits.disabled.title')}
38
+ </DialogTitle>
39
+ <DialogDescription className="paragraph-small-regular text-zinc-600" asChild>
40
+ <div className="flex flex-col gap-3">
41
+ <p>{translate('common.credits.disabled.descriptionLine1')}</p>
42
+ <p>{translate('common.credits.disabled.descriptionLine2')}</p>
43
+ </div>
44
+ </DialogDescription>
45
+ </div>
46
+ </DialogHeader>
47
+
48
+ <Separator />
49
+
50
+ <div className="flex items-center gap-2 p-5">
51
+ <Button
52
+ variant="secondary"
53
+ className="h-10! transition-colors"
54
+ onClick={() => closeModal()}
55
+ >
56
+ {translate('common.credits.disabled.understood')}
57
+ </Button>
58
+ </div>
59
+ </DialogContent>
60
+ </Dialog>
61
+ );
62
+ }
@@ -1,212 +1,212 @@
1
- 'use client';
2
-
3
- import { toast } from 'sonner';
4
- import {
5
- IconCheck,
6
- IconCopy,
7
- IconInfoCircle,
8
- IconStar,
9
- IconTicket,
10
- IconX,
11
- } from '@tabler/icons-react';
12
- import { Dialog, DialogClose, DialogContent, DialogTitle } from '../ui/overlay/Dialog';
13
- import { Toast } from '../ui/feedback/Toast';
14
- import { Button } from '../ui/buttons/Button';
15
- import useCopyToClipboard from '../../hooks/copy-to-clipboard.hook';
16
- import { useModalManager } from '../../store/useModalManager';
17
- import { useWhitelabelUrls } from '../../providers/whitelabel.provider';
18
- import { cn } from '../../infra/utils/clsx';
19
-
20
- interface HexaCombo {
21
- coupon: string;
22
- name: string;
23
- features: string[];
24
- highlighted: boolean;
25
- }
26
-
27
- // Campanha "Rumo ao Hexa" — exclusiva da whitelabel 1 (público pt-br). O texto é fixo de
28
- // propósito: a modal precisa renderizar também no gapps, que não tem provider de next-intl.
29
- const COPY = {
30
- title: 'Rumo ao Hexa!',
31
- subtitlePrefix: 'Ofertas exclusivas até ',
32
- subtitleDate: '24/06',
33
- mostChosen: 'Mais escolhido',
34
- couponLabel: 'Cupom',
35
- choosePlan: 'Escolher plano',
36
- couponCopied: 'Cupom copiado!',
37
- close: 'Fechar',
38
- footerPrefix: 'Válido para a ',
39
- footerBold: 'primeira contratação',
40
- footerSuffix: ' dos planos Essencial, Negócio ou Agência',
41
- };
42
-
43
- const COMBOS: HexaCombo[] = [
44
- {
45
- coupon: 'MENSAL10',
46
- name: 'Combo convocação',
47
- highlighted: false,
48
- features: ['10% OFF no plano mensal', 'Webinars exclusivos'],
49
- },
50
- {
51
- coupon: 'SEMESTRAL10',
52
- name: 'Combo Hexa',
53
- highlighted: true,
54
- features: ['10% OFF no plano semestral', '3 templates exclusivos', 'Webinars exclusivos'],
55
- },
56
- {
57
- coupon: 'ANUAL10',
58
- name: 'Combo escalação',
59
- highlighted: false,
60
- features: ['10% OFF no plano anual', '3 templates exclusivos'],
61
- },
62
- ];
63
-
64
- // Cores promocionais (verde/amarelo do Brasil) — específicas desta campanha, fora do design
65
- // system, por isso ficam hardcoded apenas aqui.
66
- const GRADIENT = 'linear-gradient(180deg, #08c44f 0%, #7bd237 46.6%, #ffe31b 100%)';
67
-
68
- export default function HexaPromoModal() {
69
- const { activeModal, closeModal } = useModalManager();
70
- const { accountsUrl } = useWhitelabelUrls();
71
- const isOpen = activeModal === 'hexaPromoModal';
72
-
73
- const goToPlans = (coupon: string) => {
74
- closeModal();
75
- const url = `${accountsUrl}/subscriptions?tab=plans&coupon=${encodeURIComponent(coupon)}`;
76
- window.location.assign(url);
77
- };
78
-
79
- return (
80
- <Dialog open={isOpen} onOpenChange={() => closeModal()}>
81
- <DialogContent
82
- showCloseButton={false}
83
- onOpenAutoFocus={(e) => e.preventDefault()}
84
- className="border-0 bg-transparent p-0 shadow-none w-[calc(100%-32px)] sm:max-w-[940px] md:w-[924px] lg:w-[924px]"
85
- >
86
- <DialogTitle className="sr-only">{COPY.title}</DialogTitle>
87
-
88
- <div className="rounded-[12px] p-1" style={{ background: GRADIENT }}>
89
- <div className="relative overflow-hidden rounded-[10px] bg-white p-8 shadow-[0px_2px_10px_0px_rgba(26,26,26,0.05)]">
90
- {/* Arte decorativa (festão/bandeira) no canto superior direito */}
91
- <img
92
- src="/promo/hexa-confetti.png"
93
- alt=""
94
- aria-hidden
95
- className="pointer-events-none absolute -top-10 right-0 w-[280px] select-none"
96
- />
97
-
98
- <DialogClose className="absolute right-3 top-3 z-10 flex size-8 items-center justify-center rounded-lg p-2 text-zinc-500 transition-colors hover:bg-zinc-100 hover:text-zinc-950 focus:outline-none">
99
- <span className="sr-only">{COPY.close}</span>
100
- <IconX className="size-[18px]" />
101
- </DialogClose>
102
-
103
- {/* Header: logo + bandeira */}
104
- <div className="relative z-[1] flex w-fit items-center gap-[9px] rounded-lg bg-zinc-100 px-[9px] py-2">
105
- <img src="/promo/hexa-logo.svg" alt="" aria-hidden className="size-6 select-none" />
106
- <img src="/promo/hexa-flag.png" alt="" aria-hidden className="size-6 rounded select-none" />
107
- </div>
108
-
109
- {/* Título */}
110
- <div className="relative z-[1] mt-4 flex flex-col gap-1">
111
- <h2 className="font-['Outfit'] text-[32px] font-semibold leading-8 text-zinc-950">
112
- {COPY.title}
113
- </h2>
114
- <p className="paragraph-medium-medium text-zinc-950">
115
- {COPY.subtitlePrefix}
116
- <span className="font-bold">{COPY.subtitleDate}</span>
117
- </p>
118
- </div>
119
-
120
- {/* Cards */}
121
- <div className="relative z-[1] mt-10 flex flex-col items-stretch gap-3 md:flex-row">
122
- {COMBOS.map((combo) => (
123
- <ComboCard key={combo.coupon} combo={combo} onChoose={() => goToPlans(combo.coupon)} />
124
- ))}
125
- </div>
126
-
127
- {/* Rodapé informativo */}
128
- <div className="relative z-[1] mt-3 flex items-center justify-center gap-2.5 rounded-[10px] bg-zinc-100 p-3 text-center">
129
- <IconInfoCircle className="size-4 shrink-0 text-zinc-950" />
130
- <p className="paragraph-small-medium text-zinc-950">
131
- {COPY.footerPrefix}
132
- <span className="font-semibold">{COPY.footerBold}</span>
133
- {COPY.footerSuffix}
134
- </p>
135
- </div>
136
- </div>
137
- </div>
138
- </DialogContent>
139
- </Dialog>
140
- );
141
- }
142
-
143
- interface ComboCardProps {
144
- combo: HexaCombo;
145
- onChoose: () => void;
146
- }
147
-
148
- function ComboCard({ combo, onChoose }: ComboCardProps) {
149
- const { isCopied, copy } = useCopyToClipboard({
150
- onSuccess: () => {
151
- toast.custom((t) => <Toast variant="success" message={COPY.couponCopied} toastId={t} />);
152
- },
153
- });
154
-
155
- return (
156
- <div
157
- className={cn(
158
- 'relative flex flex-1 flex-col rounded-[10px] border bg-white pb-3 md:w-[276px]',
159
- combo.highlighted ? 'border-cyan-500' : 'border-zinc-200',
160
- )}
161
- >
162
- {combo.highlighted && (
163
- <div className="absolute left-1/2 top-0 z-[1] flex h-6 -translate-x-1/2 -translate-y-1/2 items-center justify-center gap-[5px] rounded-md border-4 border-white bg-cyan-100 px-2">
164
- <IconStar className="size-3 text-cyan-600" />
165
- <span className="paragraph-xsmall-semibold whitespace-nowrap text-cyan-600">
166
- {COPY.mostChosen}
167
- </span>
168
- <IconStar className="size-3 text-cyan-600" />
169
- </div>
170
- )}
171
-
172
- <h3 className="border-b border-zinc-200 px-4 py-4 text-center font-['Outfit'] text-base font-semibold text-zinc-950">
173
- {combo.name}
174
- </h3>
175
-
176
- <ul className="flex flex-1 flex-col gap-5 px-5 pt-5">
177
- {combo.features.map((feature) => (
178
- <li key={feature} className="flex items-center gap-2.5">
179
- <IconCheck className="size-5 shrink-0 text-cyan-500" />
180
- <span className="paragraph-small-medium text-zinc-950">{feature}</span>
181
- </li>
182
- ))}
183
- </ul>
184
-
185
- <div className="mx-3 mt-5 flex items-center gap-3 rounded-lg bg-cyan-50 py-2 pl-3.5 pr-2.5">
186
- <IconTicket className="size-5 shrink-0 text-cyan-600" />
187
- <div className="flex min-w-0 flex-1 flex-col">
188
- <span className="paragraph-xsmall-medium text-zinc-400">{COPY.couponLabel}</span>
189
- <span className="paragraph-small-semibold text-zinc-950">{combo.coupon}</span>
190
- </div>
191
- <button
192
- type="button"
193
- aria-label={COPY.couponLabel}
194
- onClick={() => copy(combo.coupon)}
195
- className="flex size-8 shrink-0 items-center justify-center rounded-md text-zinc-500 transition-colors hover:bg-cyan-100 hover:text-zinc-950"
196
- >
197
- {isCopied ? <IconCheck className="size-[18px]" /> : <IconCopy className="size-[18px]" />}
198
- </button>
199
- </div>
200
-
201
- <div className="mx-3 mt-3">
202
- <Button
203
- variant={combo.highlighted ? 'default' : 'secondary'}
204
- className={cn('h-11! w-full', combo.highlighted && 'bg-cyan-500 text-white hover:bg-cyan-600')}
205
- onClick={onChoose}
206
- >
207
- {COPY.choosePlan}
208
- </Button>
209
- </div>
210
- </div>
211
- );
212
- }
1
+ 'use client';
2
+
3
+ import { toast } from 'sonner';
4
+ import {
5
+ IconCheck,
6
+ IconCopy,
7
+ IconInfoCircle,
8
+ IconStar,
9
+ IconTicket,
10
+ IconX,
11
+ } from '@tabler/icons-react';
12
+ import { Dialog, DialogClose, DialogContent, DialogTitle } from '../ui/overlay/Dialog';
13
+ import { Toast } from '../ui/feedback/Toast';
14
+ import { Button } from '../ui/buttons/Button';
15
+ import useCopyToClipboard from '../../hooks/copy-to-clipboard.hook';
16
+ import { useModalManager } from '../../store/useModalManager';
17
+ import { useWhitelabelUrls } from '../../providers/whitelabel.provider';
18
+ import { cn } from '../../infra/utils/clsx';
19
+
20
+ interface HexaCombo {
21
+ coupon: string;
22
+ name: string;
23
+ features: string[];
24
+ highlighted: boolean;
25
+ }
26
+
27
+ // Campanha "Rumo ao Hexa" — exclusiva da whitelabel 1 (público pt-br). O texto é fixo de
28
+ // propósito: a modal precisa renderizar também no gapps, que não tem provider de next-intl.
29
+ const COPY = {
30
+ title: 'Rumo ao Hexa!',
31
+ subtitlePrefix: 'Ofertas exclusivas até ',
32
+ subtitleDate: '24/06',
33
+ mostChosen: 'Mais escolhido',
34
+ couponLabel: 'Cupom',
35
+ choosePlan: 'Escolher plano',
36
+ couponCopied: 'Cupom copiado!',
37
+ close: 'Fechar',
38
+ footerPrefix: 'Válido para a ',
39
+ footerBold: 'primeira contratação',
40
+ footerSuffix: ' dos planos Essencial, Negócio ou Agência',
41
+ };
42
+
43
+ const COMBOS: HexaCombo[] = [
44
+ {
45
+ coupon: 'MENSAL10',
46
+ name: 'Combo convocação',
47
+ highlighted: false,
48
+ features: ['10% OFF no plano mensal', 'Webinars exclusivos'],
49
+ },
50
+ {
51
+ coupon: 'SEMESTRAL10',
52
+ name: 'Combo Hexa',
53
+ highlighted: true,
54
+ features: ['10% OFF no plano semestral', '3 templates exclusivos', 'Webinars exclusivos'],
55
+ },
56
+ {
57
+ coupon: 'ANUAL10',
58
+ name: 'Combo escalação',
59
+ highlighted: false,
60
+ features: ['10% OFF no plano anual', '3 templates exclusivos'],
61
+ },
62
+ ];
63
+
64
+ // Cores promocionais (verde/amarelo do Brasil) — específicas desta campanha, fora do design
65
+ // system, por isso ficam hardcoded apenas aqui.
66
+ const GRADIENT = 'linear-gradient(180deg, #08c44f 0%, #7bd237 46.6%, #ffe31b 100%)';
67
+
68
+ export default function HexaPromoModal() {
69
+ const { activeModal, closeModal } = useModalManager();
70
+ const { accountsUrl } = useWhitelabelUrls();
71
+ const isOpen = activeModal === 'hexaPromoModal';
72
+
73
+ const goToPlans = (coupon: string) => {
74
+ closeModal();
75
+ const url = `${accountsUrl}/subscriptions?tab=plans&coupon=${encodeURIComponent(coupon)}`;
76
+ window.location.assign(url);
77
+ };
78
+
79
+ return (
80
+ <Dialog open={isOpen} onOpenChange={() => closeModal()}>
81
+ <DialogContent
82
+ showCloseButton={false}
83
+ onOpenAutoFocus={(e) => e.preventDefault()}
84
+ className="border-0 bg-transparent p-0 shadow-none w-[calc(100%-32px)] sm:max-w-[940px] md:w-[924px] lg:w-[924px] max-h-[calc(100dvh-32px)] overflow-y-auto"
85
+ >
86
+ <DialogTitle className="sr-only">{COPY.title}</DialogTitle>
87
+
88
+ <div className="rounded-[12px] p-1" style={{ background: GRADIENT }}>
89
+ <div className="relative overflow-hidden rounded-[10px] bg-white p-8 shadow-[0px_2px_10px_0px_rgba(26,26,26,0.05)]">
90
+ {/* Arte decorativa (festão/bandeira) no canto superior direito */}
91
+ <img
92
+ src="/promo/hexa-confetti.png"
93
+ alt=""
94
+ aria-hidden
95
+ className="pointer-events-none absolute -top-10 right-0 w-[280px] -rotate-16 select-none"
96
+ />
97
+
98
+ <DialogClose className="absolute right-3 top-3 z-10 flex size-8 items-center justify-center rounded-lg p-2 text-zinc-500 transition-colors hover:bg-zinc-100 hover:text-zinc-950 focus:outline-none">
99
+ <span className="sr-only">{COPY.close}</span>
100
+ <IconX className="size-[18px]" />
101
+ </DialogClose>
102
+
103
+ {/* Header: logo + bandeira */}
104
+ <div className="relative z-[1] flex w-fit items-center gap-[9px] rounded-lg bg-zinc-100 px-[9px] py-2">
105
+ <img src="/promo/hexa-logo.svg" alt="" aria-hidden className="size-6 select-none" />
106
+ <img src="/promo/hexa-flag.png" alt="" aria-hidden className="size-6 rounded select-none" />
107
+ </div>
108
+
109
+ {/* Título */}
110
+ <div className="relative z-[1] mt-4 flex flex-col gap-1">
111
+ <h2 className="font-['Outfit'] text-[32px] font-semibold leading-8 text-zinc-950">
112
+ {COPY.title}
113
+ </h2>
114
+ <p className="paragraph-medium-medium text-zinc-950">
115
+ {COPY.subtitlePrefix}
116
+ <span className="font-bold">{COPY.subtitleDate}</span>
117
+ </p>
118
+ </div>
119
+
120
+ {/* Cards */}
121
+ <div className="relative z-[1] mt-10 flex flex-col items-stretch gap-3 md:flex-row">
122
+ {COMBOS.map((combo) => (
123
+ <ComboCard key={combo.coupon} combo={combo} onChoose={() => goToPlans(combo.coupon)} />
124
+ ))}
125
+ </div>
126
+
127
+ {/* Rodapé informativo */}
128
+ <div className="relative z-[1] mt-3 flex items-center justify-center gap-2.5 rounded-[10px] bg-zinc-100 p-3 text-center">
129
+ <IconInfoCircle className="size-4 shrink-0 text-zinc-950" />
130
+ <p className="paragraph-small-medium text-zinc-950">
131
+ {COPY.footerPrefix}
132
+ <span className="font-semibold">{COPY.footerBold}</span>
133
+ {COPY.footerSuffix}
134
+ </p>
135
+ </div>
136
+ </div>
137
+ </div>
138
+ </DialogContent>
139
+ </Dialog>
140
+ );
141
+ }
142
+
143
+ interface ComboCardProps {
144
+ combo: HexaCombo;
145
+ onChoose: () => void;
146
+ }
147
+
148
+ function ComboCard({ combo, onChoose }: ComboCardProps) {
149
+ const { isCopied, copy } = useCopyToClipboard({
150
+ onSuccess: () => {
151
+ toast.custom((t) => <Toast variant="success" message={COPY.couponCopied} toastId={t} />);
152
+ },
153
+ });
154
+
155
+ return (
156
+ <div
157
+ className={cn(
158
+ 'relative flex flex-1 flex-col rounded-[10px] border bg-white pb-3 md:w-[276px]',
159
+ combo.highlighted ? 'border-cyan-500' : 'border-zinc-200',
160
+ )}
161
+ >
162
+ {combo.highlighted && (
163
+ <div className="absolute left-1/2 top-0 z-[1] flex h-6 -translate-x-1/2 -translate-y-1/2 items-center justify-center gap-[5px] rounded-md border-4 border-white bg-cyan-100 px-2">
164
+ <IconStar className="size-3 text-cyan-600" />
165
+ <span className="paragraph-xsmall-semibold whitespace-nowrap text-cyan-600">
166
+ {COPY.mostChosen}
167
+ </span>
168
+ <IconStar className="size-3 text-cyan-600" />
169
+ </div>
170
+ )}
171
+
172
+ <h3 className="border-b border-zinc-200 px-4 py-4 text-center font-['Outfit'] text-base font-semibold text-zinc-950">
173
+ {combo.name}
174
+ </h3>
175
+
176
+ <ul className="flex flex-1 flex-col gap-5 px-5 pt-5">
177
+ {combo.features.map((feature) => (
178
+ <li key={feature} className="flex items-center gap-2.5">
179
+ <IconCheck className="size-5 shrink-0 text-cyan-500" />
180
+ <span className="paragraph-small-medium text-zinc-950">{feature}</span>
181
+ </li>
182
+ ))}
183
+ </ul>
184
+
185
+ <div className="mx-3 mt-5 flex items-center gap-3 rounded-lg bg-cyan-50 py-2 pl-3.5 pr-2.5">
186
+ <IconTicket className="size-5 shrink-0 text-cyan-600" />
187
+ <div className="flex min-w-0 flex-1 flex-col">
188
+ <span className="paragraph-xsmall-medium text-zinc-400">{COPY.couponLabel}</span>
189
+ <span className="paragraph-small-semibold text-zinc-950">{combo.coupon}</span>
190
+ </div>
191
+ <button
192
+ type="button"
193
+ aria-label={COPY.couponLabel}
194
+ onClick={() => copy(combo.coupon)}
195
+ className="flex size-8 shrink-0 items-center justify-center rounded-md text-zinc-500 transition-colors hover:bg-cyan-100 hover:text-zinc-950"
196
+ >
197
+ {isCopied ? <IconCheck className="size-[18px]" /> : <IconCopy className="size-[18px]" />}
198
+ </button>
199
+ </div>
200
+
201
+ <div className="mx-3 mt-3">
202
+ <Button
203
+ variant={combo.highlighted ? 'default' : 'secondary'}
204
+ className={cn('h-11! w-full', combo.highlighted && 'bg-cyan-500 text-white hover:bg-cyan-600')}
205
+ onClick={onChoose}
206
+ >
207
+ {COPY.choosePlan}
208
+ </Button>
209
+ </div>
210
+ </div>
211
+ );
212
+ }